2016-09-22 85 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,只有一个右括号]在第二个示例中丢失。添加它可以解决问题!谢谢! [编辑:缺少支架现在被添加,所以这个答案中的第二个例子完全解决了这个问题] –