如何在xslt中增加int变量?

时间:2011-05-19 12:21:57

标签: linux xslt

我正在研究XSLT 1.0版本我声明了一个int变量,当一个(如果条件)条件为true时,它必须增加。 那么有谁能告诉我如何将变量或任何解决方案增加到那个?

e.g。

<xsl:variable name="count" select="-1" />

是声明的变量。然后我就检查了一个条件

<xsl:if test="$serviceP=$new">

// if condition id true the i have to increment the variable value (i.e count).
//and  again have compare that count varibale value in if condition

<xsl:if test="$count &lt; 2">
// runs when condition is true.
</xsl:if>
</xsl:if>

提前感谢。

1 个答案:

答案 0 :(得分:2)

XSLT是一种函数式语言,因此具有不可变的变量 - 一旦分配,其内容就无法更改

你需要在程序上停止思考。解释你的问题,许多人会告诉你如何在不增加任何变量的情况下解决这个问题。

例如,解决方案可以像这样简单

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
    Latest Service:
     <xsl:apply-templates select="service[@new='true'][1]"/>

     New Services:
     <xsl:apply-templates select="service[@new='true'][position() >1]"/>
 </xsl:template>
</xsl:stylesheet>

在更复杂的情况下,您可以编写一个递归调用自身的模板,传递一个特定参数,其值大于当前模板调用中的值。