我有一个用于某些转换的 XSLT 映射。我的问题是我怎么能记住计数 1.e; 循环运行的次数。例如
<xsl: for each> // This runs some 3 times
<xsl: call-template > // This call template recursively runs 10 times
<xsl: with- param >
</xsl: call-template >
<xsl: for each>
在上面的示例中,外部 for 循环运行 3 次,内部调用模板递归调用自身以打印某些东西假设 10 次。所以我总共有 3*10 = 30 个周期。
我在这里需要的是假设我有一个初始编号 001,当 for 循环第一次运行时,它将调用模板,该模板将递归调用自身 10 次。所以我打印了从 001 - 010 开始的数字
下次我运行循环时,我再次打印了 001-010 中的数字,第三次以此类推。但我想要的是记住最后一次计数。假设在第一次迭代中我达到了 010。所以在第二次迭代中,我将从 011 开始计数并打印到 021。第三次我将从 022-032 开始打印。
但是有人能建议我怎么做吗?我怎样才能记住打印完成的最后一个值?
还有一件事我实际上仅限于 XSLT1.0。这就是我必须像上面的例子一样循环的原因。
这将是一个很大的帮助
我想做的是这样,假设我有一个输入 xml,
<A>
<B from="123456781" to="123456782">
........
</B>
<B from="123456781" to="123456785">
........
</B>
<B from="123456788" to="123456788">
........
</B>
</A>
在上面的 xml 中,每个节点 B 都与“从-到”范围相关联。我需要创建与给定范围内的数量一样多的 ouputB 节点。而且我还必须获得创建的每个 outputB 节点的唯一计数。例如输出 xml 可以是,
<root>
<outputB value="123456781" id="001"> // from first B node from="123456781" to="123456782"
<outputB value="123456782" id="002">
<outputB value="123456781" id="003">
<outputB value="123456782" id="004">// from second B node from="123456781" to="123456785"
<outputB value="123456783" id="005">
<outputB value="123456784" id="006">
<outputB value="123456785" id="007">
<outputB value="123456788" id="008">// from third B node from="123456788" to="123456788"
</root>
因此,在上面的 xsl 中,我在 from 和 to 参数中的范围值的基础上递归地填充了每个输入 B 节点上的 bu for-each。从而创建确切数量的 outputB 节点。但这里的问题是在生成的 xml 中维护唯一计数或 id。
谢谢 :)