XSLT导出过滤器生成不必要的空XML标记

时间:2016-09-22 12:47:21

标签: xml xslt openoffice.org libreoffice openoffice-calc

我使用XSLT导出过滤器将OpenOffice Calc电子表格的一部分导出到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 个答案:

答案 0 :(得分: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-row元素table-cell子元素或<xsl:for-each select="table:table-row[position() &gt; 1][table:table-cell[normalize-space()]]">只会处理具有非空table-row子元素的table-cell元素。

我无法从电子表格应用程序的屏幕截图中看出这是输入XML数据的正确条件,但您可以自己查看XML并希望调整代码。