2012-07-25 60 views
1

我想增加我的全局變量tmp_balance_virtfor-each循環,但在每個循環tmp_balance_virt(A = 一個 + B)被重置爲初始值,如何使其工作?如何全局變量添加到自身(A = A + B)的XSL

<xsl:variable name="tmp_balance_virt" select="/doc/plot/@st_balance_virt" /> //first value 
... 
<xsl:if ...> 
... 
<xsl:for-each 
    select="/doc/plot/cfc/pl.cashflow.rabean.TransactionsData[type=0]"> 
       <xsl:variable name="tmp_balance_virt" select="value + $tmp_balance_virt" /> 
       [ 
       <xsl:value-of select="date_ms" /> 
       , 
       <xsl:value-of select="$tmp_balance_virt" /> 
       ], 
</xsl:for-each> 

編輯: 這是對我有用。

 <xsl:for-each 
      select="/doc/plot/cfc/pl.cashflow.rabean.TransactionsData[type=1]"> 
      <xsl:variable name="PREC" 
       select="count(preceding-sibling::pl.cashflow.rabean.TransactionsData[type=1])+2" /> 
      [ 
      <xsl:value-of select="date_ms" /> 
      , 
      <xsl:value-of 
       select="sum(/doc/plot/cfc/pl.cashflow.rabean.TransactionsData[type=1][position() &lt; $PREC]/value) + $tmp_balance_real" /> 
      ], 
     </xsl:for-each> 
+0

嘗試增加加上括號A + B:'A =(A + B )' – 2012-07-25 14:43:50

+0

這是XSLT 1還是2?您不能重新定義(並因此增加)1中的變量(不確定約2)。 – Utkanos 2012-07-25 14:44:48

回答

1

XSLT是一種功能性的語言,這意味着變量是不可變的。一旦設定,它們不能改變。這意味着你將需要改變你的方法,並以一種更有效的方式進行思考。

在這種情況下,你很可能利用總和功能,並且這樣做初始化變量

<xsl:variable 
    name="tmp_balance_virt" 
    select="/doc/plot/@st_balance_virt 
    + sum(/doc/plot/cfc/pl.cashflow.rabean.TransactionsData[type=0]/value)" /> 
相關問題