2016-09-22 38 views
0

我正在使用XSLT導出篩選器將OpenOffice Calc電子表格的一部分導出到XML文件中。XSLT導出篩選器生成不必要的空XML標記

過濾器的一部分使用xls:for-each迭代,因爲每次腳本運行時都會有不同數量的條目。但是這種迭代會在包含內容的XML標籤之後生成空的XML標籤。

的Calc工作表看起來像這樣:http://imgur.com/a/ALPX2(行A和B可以包含數據的柔性量)

的XSLT出口過濾器目前看起來像這樣:http://pastebin.com/ugW9CuSw

而結果如下所示: http://pastebin.com/HiYXFrAY

我的想法是我可以添加某種xsl:if,但是我無法將其與select="table:table-row[n]/table:table-cell[m]"上的概念結合使用。

所以,也許有人有一個想法是什麼導致空的XML標籤或如何擺脫它們?

回答

1

我認爲你需要開始使用XPath教程學習如何編寫謂詞,例如更換<xsl:for-each select="table:table-row[position() &gt; 1]"><xsl:for-each select="table:table-row[position() &gt; 1][table:table-cell]">將只處理具有table-cell子元素或<xsl:for-each select="table:table-row[position() &gt; 1][table:table-cell[normalize-space()]]">將只處理具有非空table-celltable-row元素table-row元素子元素。

我無法從電子表格應用程序的屏幕截圖中看出哪些是您的輸入XML數據的正確條件,但您可以自己查看XML並希望調整代碼。

+0

嘿,謝謝你的回答。可悲的是,你的第一個例子沒有改變輸出,第二個例子在導出時拋出一個錯誤,但我會研究XPath謂詞。 –

+0

Nvm,只有一個右括號]在第二個示例中丟失。添加它可以解決問題!謝謝! [編輯:缺少支架現在被添加,所以這個答案中的第二個例子完全解決了這個問題] –