我试图理解xslt中的recorsion。任何人都可以解释这段代码中发生的事情。
<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>
我无法理解为什么我们用<xsl:variable name="recursive_result">
包装因子模板。
如果有更明确的例子,请指导我。我在递归方面缺乏知识。
答案 0 :(得分:1)
call-template
元素包含variable
元素,以便将调用它的结果分配给变量recursive_result
。
这样做是为了使它可以在下一行乘以number
,以产生最终结果。
答案 1 :(得分:1)
您无法在XSLT中声明可从脚本的其他部分更改的全局变量。如果您需要模板调用的结果或递归是将生成的结果“打印”出变量的唯一方法。
“打印输出”是使用<xsl:value-of ...
语句完成的。
答案 2 :(得分:0)
在XSLT中,我们使用递归而不是循环。递归只不过是一种特殊类型的函数,当需要找到最终解决方案时,它会多次调用自身。所以,
$number
number
recursive_result