我必须对xml项进行迭代,并在每一行进行一些数学计算
<items>
<item amount="12">
<item amount="13">
<item amount="14">
</items>
我已经尝试将此分配给全局变量或创建一个函数。两者都不适合我。
所以现在我想在每一行之后计算金额的总和。我怎么能用xslt-2.0做到这一点。分配给全局变量不起作用。
答案 0 :(得分:0)
我想在每一行之后计算金额的总和。
如果要打印所有先前金额的累积金额,可以在每个item
的上下文中使用XPath表达式,例如:
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>