XPath计数转换线

时间:2014-03-24 19:51:45

标签: xslt xpath

我需要将填充记录附加到使用XSLT生成的文件中。需要的是将文件中的总行数舍入到最接近的10,这样如果存在以下内容:

FileHeader
SectionHeader
Detail
Detail
Detail
SectionFooter
FileFooter

总行数为7,我需要添加3个填充记录:

FileHeader
SectionHeader
Detail
Detail
Detail
SectionFooter
FileFooter
[Filler Record]
[Filler Record]
[Filler Record]

我每次写一行时是否只是在xslt中增加一个变量并在最后用它来进行mod数学运算,或者xslt / xpath是否有办法知道它当前写了多少行,例如我可以做一些更可靠的函数调用,这会给我这个数量吗?

1 个答案:

答案 0 :(得分:2)

没有办法在XSLT中增加变量。 XSLT也不能告诉你到目前为止它写了多少行(因为XSLT的设计更倾向于执行顺序独立性)。

相反,你可以

  1. 单独计算(例如计数)样式表应根据输入文档通过其他模板生成的记录数。如果输出记录的数量等于输入记录的数量,或者至少基于另一个记录容易预测,则这是更容易的方法。或者,

  2. 将初始转换的结果捕获到变量中(使用nodeset扩展或使用XSLT 2.0),然后在其上运行count()以确定其中的记录数。然后执行xsl:copy-of输出捕获的结果,然后输出所需的任何填充。