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节点的最简单方法是什么?_Xml_Xslt - Fatal编程技术网

基于多个相关节点求和xml节点的最简单方法是什么?

基于多个相关节点求和xml节点的最简单方法是什么?,xml,xslt,Xml,Xslt,我试图根据节点中的相关信息对值列表求和。相关信息是两条信息的组合(以下列出IDa和IDb) 我有这样一个输入示例: <root> <node> <IDa>SG</IDa> <IDb>01</IDb> <value>4</value> </node> <node> <IDa>SG</IDa> <IDb>01</

我试图根据节点中的相关信息对值列表求和。相关信息是两条信息的组合(以下列出IDa和IDb)

我有这样一个输入示例:

<root>
 <node> 
  <IDa>SG</IDa>
  <IDb>01</IDb>
  <value>4</value>
 </node>
 <node>
  <IDa>SG</IDa>
  <IDb>01</IDb>
  <value>2</value>
 </node>
 <node>
  <IDa>SG</IDa>
  <IDb>02</IDb>
  <value>3</value>
 </node>
 <node>
  <IDa>BA</IDa>
  <IDb>01</IDb>
  <value>1</value>
 </node>
 <node>
  <IDa>BA</IDa>
  <IDb>01</IDb>
  <value>4</value>
 </node>
</root>

SG
01
4.
SG
01
2.
SG
02
3.
文学士
01
1.
文学士
01
4.
我试图得到如下输出:

SG01 4

SG01 2

总数6

SG02 3

总数3

BA01 1

BA01 4


总共5个

最简单的方法是使用XSLT 3.0和
对每个组
使用
组合
分组键:

<xsl:output method="text"/>

<xsl:template match="root">
    <xsl:for-each-group select="node" composite="yes" group-by="IDa, IDb">
        <xsl:value-of select="current-group()!(IDa || ' ' || IDb || ': ' || value), 'Total: ' || sum(current-group()/value)" separator="&#10;"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each-group>
</xsl:template>



这是一个分组问题。进行搜索-这可能是这里最常被问到的XSLT问题。请注意,XSLT1.0或2.0的答案是不同的。