【发布时间】:2013-05-20 07:19:54
【问题描述】:
这是 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>
附:我一直在查看 Muenchian Method 和该论坛的另一个主题,但我想自己编写它,因为我必须将它应用到更大、更扭曲的 XML 文档上。
【问题讨论】:
标签: xml xslt grouping xslt-1.0