任何想法如何模拟
<xsl:for-each select="1 to 3">
在XSLT 1.0中?
由于
答案 0 :(得分:3)
使用递归:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="/">
<xsl:call-template name="foreach">
<xsl:with-param name="i" select="0"/>
<xsl:with-param name="n" select="10"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="foreach">
<xsl:param name="i"/>
<xsl:param name="n"/>
<xsl:if test="$i < $n">
<xsl:value-of select="$i"/>
<xsl:call-template name="foreach">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="n" select="$n"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:2)
@Kirill提供了“标准答案”。
虽然它是正确的,但它有一个实际问题 - 对于大N
的值,至少在某些XSLT处理器上,由于堆栈溢出,这种转换很痛苦地崩溃。
有一种方法可以正常执行非常大的N转换,没有堆栈溢出 - 所有XSLT处理器上的 。
在 this answer 中详细了解DVC(分而治之)递归。
答案 2 :(得分:1)
对于较小的数字,您的样式表或输入文档可能只有足够的节点来处理,例如三个节点
<xsl:for-each select="//node()[position() < 4]">
<!-- now output stuff here -->
</xsl:for-each>