2015-03-08 184 views
0

只是我想做簡單的加法。當我迭代值時,只是我想要求和並打印該值。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> 

我想添加所有金額並顯示它像這樣。

<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

這是XSLT不是如何工作 - 變量不能被更新。顯示[完整的輸入XML示例,完整的XSLT樣式表和您期望的輸出](http://stackoverflow.com/help/mcve) - 我確信還有另一種方法。 – 2015-03-08 22:34:44

回答

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"/> 
+0

我想添加所有金額。我應該在哪裏提及它? – 2015-03-09 02:05:25

+0

對不起,我添加了'Earning_Deductions'而不是'Amount'。我已經更新了XPath表達式。 – 2015-03-09 02:11:52