2014-05-18 67 views
0

我不得不itterate在XML項目和做一些數學的每一行XSLT 2.0,每個計數

<items> 
<item amount="12"> 
<item amount="13"> 
<item amount="14"> 
</items> 

我已經嘗試過這種分配給全局變量或進行功能。兩者都不適合我。

所以現在我想每行後的金額總和。我怎麼能用xslt-2.0來做到這一點。分配給全局變量不起作用。

+0

您的預期成果是什麼?你想爲每一行累計小計嗎? – helderdarocha

回答

0

我想在每行之後的金額總和爲

如果你想打印所有以前的金額的累積總和,您可以使用XPath表達式,在每個item的背景下,如:

sum(preceding-sibling::item/@amount | @amount) 

這個樣式表:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="items"> 
     <xsl:copy> 
      <xsl:apply-templates/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="item"> 
     <xsl:copy-of select="."/> 
     <subtotal> 
      <xsl:value-of select="sum(preceding-sibling::item/@amount | @amount)"/> 
     </subtotal> 
    </xsl:template> 
</xsl:stylesheet> 

施加到你的例子的話會產生:

<items> 
    <item amount="12"/><subtotal>12</subtotal> 
    <item amount="13"/><subtotal>25</subtotal> 
    <item amount="14"/><subtotal>39</subtotal> 
</items>