XSL如何总结在不同的节点元素(XSL How to sum elements in differe

2019-10-21 04:33发布

我需要总结来自不同节点的元素。 我试着写代码的不同变化,但现在看来,我会在这里失去了一些重要的东西。 这里是我的简单的XML文件:

<documents>
    <document>
        <rows>
            <row>
                <name>apple</name>
                <amount>10</amount>
            </row>
            <row>
                <name>carrot</name>
                <amount>10</amount>
            </row>
        </rows>
        <client_name>customer_x</client_name>
    </document>
    <document>
        <rows>
            <row>
                <name>banana</name>
                <amount>20</amount>
            </row>
        </rows>
        <client_name>customer_x</client_name>
    </document>
    <document>
        <rows>
            <row>
                <name>banana</name>
                <amount>50</amount>
            </row>
        </rows>
        <client_name>customer y</client_name>
    </document>
</documents>

这里是我当前的代码:

<xsl:for-each select="/documents/document">
    <xsl:if test="contains(client_name, 'customer_x')"> 
        <xsl:value-of select="sum(rows/*/amount)"/>
    </xsl:if>
</xsl:for-each>

输出是:20 20

但我需要输出,所有这些量值sum'd在一起,最终的结果是在这种情况下40

Answer 1:

我们的XPath做的工作适合你:

<xsl:value-of select="sum(/documents/document[client_name='customer_x']//amount)"/>


文章来源: XSL How to sum elements in different nodes
标签: xml xslt