Xslt中递归的实现
2005-08-06 17:35
405 查看
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<!-- addFunction(addString,currentNum,theResult) -->
<xsl:call-template name="addFunction">
<xsl:with-param name="addString" >1</xsl:with-param>
<xsl:with-param name="currentNum">1</xsl:with-param>
<xsl:with-param name="theResult" >1</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!--
void addFunction(string addString,int currenNum,int thgeResult)
{
Console.Write(addString + "+" + currenNum.ToString() + " =");
Console.WriteLine((currenNum+thgeResult).ToString());
if (currentNum<10)
{
addFunction(addString+"+"+currentNum.ToString(),currenNum+1,thgeResult+currenNum);
}
}
-->
<xsl:template name="addFunction">
<xsl:param name="addString"/>
<xsl:param name="currentNum"/>
<xsl:param name="theResult"/>
<xsl:value-of select="concat($addString,'+',$currentNum)"/> =
<xsl:value-of select="$theResult + $currentNum"/>
<br/>
<xsl:if test="$currentNum <= 10 ">
<xsl:call-template name="addFunction">
<xsl:with-param name="addString" select="concat($addString,'+',$currentNum)"/>
<xsl:with-param name="currentNum" select="$currentNum + 1"/>
<xsl:with-param name="theResult" select="$theResult + $currentNum"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<!-- addFunction(addString,currentNum,theResult) -->
<xsl:call-template name="addFunction">
<xsl:with-param name="addString" >1</xsl:with-param>
<xsl:with-param name="currentNum">1</xsl:with-param>
<xsl:with-param name="theResult" >1</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!--
void addFunction(string addString,int currenNum,int thgeResult)
{
Console.Write(addString + "+" + currenNum.ToString() + " =");
Console.WriteLine((currenNum+thgeResult).ToString());
if (currentNum<10)
{
addFunction(addString+"+"+currentNum.ToString(),currenNum+1,thgeResult+currenNum);
}
}
-->
<xsl:template name="addFunction">
<xsl:param name="addString"/>
<xsl:param name="currentNum"/>
<xsl:param name="theResult"/>
<xsl:value-of select="concat($addString,'+',$currentNum)"/> =
<xsl:value-of select="$theResult + $currentNum"/>
<br/>
<xsl:if test="$currentNum <= 10 ">
<xsl:call-template name="addFunction">
<xsl:with-param name="addString" select="concat($addString,'+',$currentNum)"/>
<xsl:with-param name="currentNum" select="$currentNum + 1"/>
<xsl:with-param name="theResult" select="$theResult + $currentNum"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
相关文章推荐
- 在 XSLT 中用递归实现循环
- xslt实现递归
- [转]在 XSLT 中用递归实现循环
- XSLT实现XML无极限树(精简版)[二] 解决没有递归出节点属性值总和的问题(JS实现)
- 二叉搜索树递归&&非递归的基本实现
- 非递归线段树区间修改区间求和的两种实现(以POJ 3468为例)
- 快速排序的非递归实现
- 14.背包问题[递归实现]
- 二叉树的建立以及三种遍历方式的递归、非递归的实现
- java计算参数目录大小的递归和迭代实现
- 二叉树的前序遍历的递归实现与非递归实现
- PHP递归实现无限级分类并展示
- 树的三种遍历(递归与非递归实现)
- 全排列的递归实现与非递归实现
- 求后续遍历(递归实现)
- C语言实现 厄密多项式 (递归)
- 递归和非递归分别实现strlen
- 快速排序递归非递归队列堆栈实现
- 递归实现字符串翻转