我有一组 xml 节点,它们具有相同的节点名称,但有一个区分它们的属性和一个数量属性:
<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 进行调试后,未设置数量变量,我认为这是因为我搞砸了查询。有人知道我做错了什么吗?