同じノード名を持つ一連の xml ノードがありますが、それらを区別する 1 つの属性と、amount 属性があります。
<exampleNode typeOfnode="1" amount="100"/>
<exampleNode typeOfnode="1" amount="540"/>
<exampleNode typeOfnode="2" amount="200"/>
<exampleNode typeOfnode="2" amount="200"/>
<exampleNode typeOfnode="3" amount="10"/>
<exampleNode typeOfnode="3" amount="1"/>
<exampleNode typeOfnode="3" amount="110"/>
<exampleNode typeOfnode="3" amount="110"/>
<exampleNode typeOfnode="4" amount="110"/>
金額の合計を計算するために再帰テンプレートを使用していますが、特定の typeOfNode に対してのみ実行したいと考えています。テンプレートを呼び出すために使用しているコードは次のとおりです。
<xsl:call-template name="addition">
<xsl:with-param name="currentValue">0</xsl:with-param>
<xsl:with-param name="counter"><xsl:value-of select="count(//exampleNode[@typeOfnode= '1'])"/></xsl:with-param>
<xsl:with-param name="typeOfnode">1</xsl:with-param>
</xsl:call-template>
<xsl:template name="addition">
<xsl:param name="currentValue"/>
<xsl:param name="counter"/>
<xsl:param name="typeOfNode"/>
<xsl:variable name="amount" select="//exampleNode[@typeOfNode = '$typeOfnode' and $counter]/@amount"/>
<xsl:variable name="recursiveValue" select="number($recursiveValue + $amount)"/>
<xsl:choose>
<xsl:when test="number($counter - 1) > 0">
<xsl:call-template name="addition">
<xsl:with-param name="currentValue">
<xsl:value-of select="$recursiveValue"/>
</xsl:with-param>
<xsl:with-param name="counter">
<xsl:value-of select="number($counter - 1)"/>
</xsl:with-param>
<xsl:with-param name="agreementType">
<xsl:value-of select="$agreementType"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$recursiveValue"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
XMLspy を使用してデバッグしたところ、amount 変数が設定されていません。これは、クエリを台無しにしていることが原因だと思います。誰かが私が間違っていることを知っていますか?