理解xslt中的递归
我试图理解xslt中的识别。谁能解释一下这段代码里发生了什么理解xslt中的递归,xslt,recursion,xslt-1.0,Xslt,Recursion,Xslt 1.0,我试图理解xslt中的识别。谁能解释一下这段代码里发生了什么 <xsl:template name="factorial"> <xsl:param name="number" select="1"/> <xsl:choose> <xsl:when test="$number <= 1"> <xsl:value-of select="1"/> </xsl:when> <x
<xsl:template name="factorial">
<xsl:param name="number" select="1"/>
<xsl:choose>
<xsl:when test="$number <= 1">
<xsl:value-of select="1"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="recursive_result">
<xsl:call-template name="factorial">
<xsl:with-param name="number" select="$number - 1"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$number * $recursive_result"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我不明白为什么我们用
包装阶乘模板
如果有更清楚的例子,请指导我。我缺乏递归方面的知识 调用模板元素用
变量
元素包装,以便将调用结果分配给变量递归结果
这样就可以将它乘以下一行的
number
,生成最终结果。您不能在XSLT中声明全局变量,这些变量可以从脚本的其他部分更改。如果需要来自模板调用或递归的结果,则将生成的结果“打印”到变量中的唯一方法
“打印输出”是用XSLT中的
完成的,我们使用递归而不是循环。递归只不过是一种特殊类型的函数,当需要找到最终解决方案时,它会多次调用自身。所以
将数字变量输入为“1”
如果给定值小于1,则只需打印$number
否则,可以在with param的帮助下调用模板作为变量号的输入
在这里,它再次调用相同的模板,并将值传递给名为number
然后将结果值分配给变量递归\u result
希望你能理解。一个简单的问题,为什么我们要在代码的顶部使用
?这不是因为数字总是1吗?我不知道我是否正确。。。你的意思是为什么参数不在模板定义之外?如果这是你的问题。。。param是一个占位符,用于在模板内获取作为模板调用参数的值。参数也是不可变的。