汇总XLST 1.0中的计算值

时间:2018-10-01 08:49:25

标签: xml xslt

我正在努力使用XSLT 1.0,希望有人可以帮助我。这是我第一次使用它。请参阅下面的XML。我需要汇总每种类型的存款。我为每种类型创建了一个表格,因此在行中显示产品,在最后一列中显示存款。在最后一行中,我想对该类型的存款进行总计。什么是好的方法?

<Letter>
    <Information>
        <Product>
            <Type>Type1</Type>
        </Product>
        <Transactions>
            <Deposits>150</Deposits>
        </Transactions>
    </Information>
</Letter>

<Letter>
    <Information>
        <Product>
            <Type>Type1</Type>
        </Product>
        <Transactions>
            <Deposits>120</Deposits>
        </Transactions>
    </Information>
</Letter>


<Letter>
    <Information>
        <Product>
            <Type>Type2</Type>
        </Product>
        <Transactions>
            <Deposits>120</Deposits>
        </Transactions>
    </Information>
</Letter>

1 个答案:

答案 0 :(得分:0)

您可以使用MUENCHIAN方法在XSLT 1.0中进行分组

<xsl:key name="deposit" match="Information" use="Product/Type"/>
<xsl:template match="Letter">
    <xsl:for-each select="Information[generate-id() = generate-id(key('deposit', Product/Type)[1])]" >
        <xsl:text> Deposite for </xsl:text>
        <xsl:value-of select="Product/Type"/>
        <xsl:text> = </xsl:text>
        <xsl:value-of select="sum(key('deposit', Product/Type)/Transactions/Deposits)"/>
    </xsl:for-each> 
</xsl:template>

输出

Deposite for Type1 = 270
Deposite for Type2 = 120

请参见https://xsltfiddle.liberty-development.net/94hvTzQ