Xslt 如何根据不同标记的值进行分组?
我有一个如下所示的XML:Xslt 如何根据不同标记的值进行分组?,xslt,xslt-grouping,Xslt,Xslt Grouping,我有一个如下所示的XML: <DataSet> <FirstNode> <UniqueKey>111</UniqueKey> </FirstNode> <FirstNode> <UniqueKey>123</UniqueKey> </FirstNode> <FirstNode> <UniqueKey>144</UniqueKey>
<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,我在这里问了一个新问题:非常感谢您的帮助!