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
Xslt 如何根据不同标记的值进行分组?_Xslt_Xslt Grouping - Fatal编程技术网

Xslt 如何根据不同标记的值进行分组?

Xslt 如何根据不同标记的值进行分组?,xslt,xslt-grouping,Xslt,Xslt Grouping,我有一个如下所示的XML: <DataSet> <FirstNode> <UniqueKey>111</UniqueKey> </FirstNode> <FirstNode> <UniqueKey>123</UniqueKey> </FirstNode> <FirstNode> <UniqueKey>144</UniqueKey>

我有一个如下所示的XML:

<DataSet>
 <FirstNode>
  <UniqueKey>111</UniqueKey>
 </FirstNode>
 <FirstNode>
  <UniqueKey>123</UniqueKey>
 </FirstNode>
 <FirstNode>
  <UniqueKey>144</UniqueKey>
 </FirstNode>
 <SecondNode>
  <FirstNodeKey>111</FirstNodeKey>
 </SecondNode>
 <SecondNode>
  <FirstNodeKey>123</FirstNodeKey>
 </SecondNode>
 <SecondNode>
  <FirstNodeKey>144</FirstNodeKey>
 </SecondNode>
</DataSet>

111
123
144
111
123
144
我想使用XSLT获得:

<DataSet>
     <FirstNode>
      <UniqueKey>111</UniqueKey>
     </FirstNode>
     <SecondNode>
      <FirstNodeKey>111</FirstNodeKey>
     </SecondNode>
</DataSet>
<DataSet>
     <FirstNode>
      <UniqueKey>123</UniqueKey>
     </FirstNode>
     <SecondNode>
      <FirstNodeKey>123</FirstNodeKey>
     </SecondNode>
</DataSet>
<DataSet>
     <FirstNode>
      <UniqueKey>144</UniqueKey>
     </FirstNode>
     <SecondNode>
      <FirstNodeKey>144</FirstNodeKey>
     </SecondNode>
</DataSet>

111
111
123
123
144
144
如果标签相同,我可以使用:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="DataSet">
      <xsl:for-each-group select="*" group-by="UniqueKey">
          <Updates>
              <xsl:copy-of select="current-group()"/>
          </Updates>
      </xsl:for-each-group>
  </xsl:template>
</xsl:stylesheet>

当标签不同时,如何执行此操作?如何在这两个不同的标签上分组?(UniqueKey和FirstNodeKey用于我的案例)


提前感谢

只要没有元素同时具有这两个关键元素,您就可以简单地使用
group by=“UniqueKey,FirstNodeKey”
,因为这形成了两个元素的序列,在您的情况下,这两个元素将只是具有
UniqueKey
FirstNodeKey
的序列,因为另一个选项为空。

谢谢!但现在我有了另一个用例。现在,如果我想通过一个只存在于中的标记进行分组,然后再对和进行分组,该怎么办?例如111552。。。结果是111 552123 552请用正确格式的输入、所需输出、您尝试过的代码和您当前获得的输出示例问一个新问题。要求我们从评论中发布的代码中理解新的需求没有多大意义。Martin,我在这里问了一个新问题:非常感谢您的帮助!