【问题标题】:XSLT 2.0 for-each count upXSLT 2.0 for-each count up
【发布时间】:2014-05-18 16:13:55
【问题描述】:

我必须遍历 xml 项目并在每一行做一些数学运算

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

我已经尝试将它分配给全局变量或创建一个函数。两者都不适合我。

所以现在我想要在每行之后的金额总和。我怎么能用 xslt-2.0 做到这一点。分配给全局变量不起作用。

【问题讨论】:

  • 您的预期结果是什么?您想要每行的累计小计吗?

标签: xslt-2.0 xsl-fo


【解决方案1】:

我想在每一行后面加上金额的总和

如果要打印之前所有金额的累计和,可以在每个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>

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多