我想在tmp_balance_virt
循环中增加我的全局变量for-each
,但在每个循环tmp_balance_virt
(a = a + b)重置为其初始值,如何使其工作?
<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() < $PREC]/value) + $tmp_balance_real" />
],
</xsl:for-each>
答案 0 :(得分:1)
这里有一个答案:
In XSLT how do I increment a global variable from a different scope?
不完全是你所追求的,但它有一些很好的建议可以帮助你
答案 1 :(得分:1)
XSLT是一种函数式语言,这意味着变量是不可变的。一旦设置,它们就无法更改。这意味着您需要改变您的方法,并以更实用的方式思考。
在这种情况下,您可以使用 sum 函数,并执行类似这样的操作来初始化变量
<xsl:variable
name="tmp_balance_virt"
select="/doc/plot/@st_balance_virt
+ sum(/doc/plot/cfc/pl.cashflow.rabean.TransactionsData[type=0]/value)" />