XSLT:如何为全局变量赋值

时间:2015-03-08 22:21:47

标签: xml xslt

我想做简单的补充。当我迭代值时,我想要求和并打印该值。

这是我试过的方式。但它只是打印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的新手。请帮我解决这个问题。

1 个答案:

答案 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"/>