如何按不同标签的值分组?
How to group by value from different tags?
我有一个 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>
我想使用 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>
如果标签相同,我可以使用:
<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
,因为另一个选择是空的。
我有一个 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>
我想使用 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>
如果标签相同,我可以使用:
<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
,因为另一个选择是空的。