Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 对XSLT中的唯一组合值求和_Xml_Xslt_Xslt 1.0_Xslt 2.0_Xslt Grouping - Fatal编程技术网

Xml 对XSLT中的唯一组合值求和

Xml 对XSLT中的唯一组合值求和,xml,xslt,xslt-1.0,xslt-2.0,xslt-grouping,Xml,Xslt,Xslt 1.0,Xslt 2.0,Xslt Grouping,我试图对XML中节点的唯一组合进行分组和求和 <root> <row> <field1>720</field1> <field2>8900</field2> <field3>100</field3> </row> <row> <field1>720</fie

我试图对XML中节点的唯一组合进行分组和求和

<root>
    <row>
        <field1>720</field1>
        <field2>8900</field2>
        <field3>100</field3>        
    </row>
    <row>
        <field1>720</field1>
        <field2>99998</field2>        
        <field3>120</field3>       
    </row>
    <row>
        <field1>720</field1>
        <field2>8900</field2>
        <field3>130</field3>        
    </row>
    <row>
        <field1>720</field1>
        <field2>12403</field2>
        <field3>130</field3>        
    </row>
</root>

720
8900
100
720
99998
120
720
8900
130
720
12403
130
因此,对于field1和field2的每个唯一组合,我需要生成field3的和


我理解group by是可以使用的,但不确定如何实现它下面是如何使用和
group by
每个行的
field1
field2
元素的值的示例。对于每个组,生成
字段3
元素和
@key
sum()
,以演示分组键值是什么:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output indent="yes"/>
    <xsl:template match="/">
        <summary>
            <xsl:for-each-group select="/root/row" 
                                group-by="string-join((field1,field2),'-')">
                <sum key="{current-grouping-key()}">
                    <xsl:value-of select="sum(current-group()/field3)" />
                </sum>
            </xsl:for-each-group>
        </summary>
    </xsl:template>
</xsl:stylesheet>

在对样本数据运行时,它会生成以下输出:

<summary>
   <sum key="720-8900">230</sum>
   <sum key="720-99998">120</sum>
   <sum key="720-12403">130</sum>
</summary>

230
120
130