我試圖使用XSLT將.ods
文件(來自zip的content.xml
文件)轉換爲所需的.xml
文件。如何在XSLT中獲取任何類型的特定.ODS單元格的內容
XSLT使用元素的「固定」位置來獲取內容,但在我的.ods
文件中,我有很多空白字段,我不知道如何使它們在XSLT中計數。
此外,我用content.xml
做了一些實驗,以確定這些空白單元是否被保存。
在content.xml
我發現是這樣的:
<table:table-column table:style-name="co1" table:number-columns-repeated="16384" table:default-cell-style-name="ce1"/>
<table:table-row table:number-rows-repeated="1048576" table:style-name="ro1">
難道這些值以某種方式(例如用數學計算)表示在.ods
文件中的空單元格或值的實際位置?
我在這裏分享我的文檔對你有更清晰的想法
的.ods
例如:
這是我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:espd="urn:com:grow:espd:02.00.00" xmlns:cac="urn:X-test:UBL:Pre-
award:CommonAggregate" xmlns:cbc="urn:X-test:UBL:Pre-award:CommonBasic"
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="office:spreadsheet/table:table">
<xsl:variable name="test" select="table:table-row/table:table-cell"/>
<p><xsl:value-of select="$test/text:p[1]"/></p>
</xsl:template>
和輸出是:
布拉克burak5 burak6 burak2 burak3 burak4 burak7 burak9 burak8 burak10
問:
如何通過應用獲得來自電池的單值content.xml
?
(例如:如何到達剛剛細胞D4
?)
非常感謝!幾件讓我困惑的事情,想象一下,你有一個包含大量信息的大文件,那麼這種方法是否可行?如果我必須選擇讓我們說100個固定位置如何接近?另一件我沒有提到的我需要在XSLT 2.0中進行轉換。 – Sojimanatsu
@Sojimanatsu:是的。它也應該處理大文件。所以100個固定職位應該能夠像兩個一樣工作。它會變慢,但可能不會太慢。順便說一句,這個模板也適用於XSLT-2.0和3.0,只需更改編號;-)。 – zx485
@Sojimanatsu:謝謝。 – zx485