我想做简单的补充。当我迭代值时,我想要求和并打印该值。
这是我试过的方式。但它只是打印0。
这是我的xml。
<t:Employee>
<t:Earnings_Deductions>
<t:Amount t:PriorValue="">4000</t:Amount>
</t:Earnings_Deductions>
</t:Employee>
<t:Employee>
<t:Earnings_Deductions>
<t:Amount t:PriorValue="">4000</t:Amount>
</t:Earnings_Deductions>
</t:Employee>
<t:Employee>
<t:Earnings_Deductions>
<t:Amount t:PriorValue="">4000</t:Amount>
</t:Earnings_Deductions>
</t:Employee>
我想添加所有Amount并像这样显示它。
<item><p>700000</p></item>
<xsl:variable name="Total_Amount" select="0" />
<item>
<xsl:for-each select="//*[local-name() = 'Employee']">
<xsl:for-each select="//*[local-name() = 'Earning_Deductions']"/>
<xsl:variable name="amount"><xsl:value-of select="//*[local-name() = 'Amount']"/></xsl:variable>
<xsl:value-of select="$Total_Amount"><xsl:value-of select="$Total_Amount + $amount"/></xsl:value-of>
</xsl:for-each>
<p><xsl:value-of select="$Total_Amount"></xsl:value-of></p>
</item>
我是xslt的新手。请帮我解决这个问题。
答案 0 :(得分:2)
XSLT变量是不可变的。一旦设定,就无法改变。
使用sum()
函数,您可以在不使用循环结构或需要更改变量值的情况下生成总金额:
<xsl:variable name="Total_Amount"
select="sum(//*[local-name()='Employee']/*[local-name()='Earning_Deductions']/*[local-name()='Amount'])"/>
<xsl:value-of select="$Total_Amount"/>