这是 XML
<?xml version="1.0" encoding="utf-8"?>
<Groups>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="zzz" Value="3"/>
</GroupData>
<GroupData ID="yyy" Key="4" Temp="yyy">
<ItemData ID="abc" Value="3"/>
</GroupData>
<GroupData ID="zzz" Temp="yyy">
<ItemData ID="pqr" Value="1982"/>
</GroupData>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="www" Value="1982"/>
</GroupData>
<GroupData ID="yyy" Key="4" Temp="yyy">
<ItemData ID="def" Value="1982"/>
</GroupData>
<GroupData ID="zzz" Temp="yyy">
<ItemData ID="tuv" Value="1982"/>
</GroupData>
</Groups>
我想变成这样:
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="zzz" Value="3"/>
<ItemData ID="www" Value="1982"/>
</GroupData>
以此类推其他GroupData
ID。
这是我的非工作 XSLT 代码:
<?xml version = "1.0" encoding = "utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="group-data" match="GroupData" use="ItemData"/>
<xsl:template match="/">
<xsl:for-each select="Groups/GroupData[generate-id() = generate-id(key('group-data', ItemData)[1])]">
<xsl:copy-of select="key('group-data', ItemData)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
PS 我一直在看这个论坛的Muenchian Method和另一个线程,但我想自己写它,因为我必须将它应用到一个更大、更扭曲的 XML 文档上。