在XSLT 2.0中,我想获得具有2个参数的唯一节点..
例如我有:
<items>
<item x="1" y="1" z="a"/>
<item x="1" y="2" z="b"/>
<item x="2" y="1" z="c"/>
<item x="1" y="2" z="d"/>
<item x="2" y="2" z="e"/>
</items>
我希望结果是:
<items>
<item x="1" y="1"/>
<item x="1" y="2"/>
<item x="2" y="1"/>
<item x="2" y="2"/>
</items>
有没有更简单的方法来获得这个? 我目前的代码实际上是多余的。
答案 0 :(得分:2)
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/items">
<xsl:copy>
<xsl:for-each-group select="item" group-by="concat(@x,'#',@y)">
<item x="{@x}" y="{@y}"/>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
修改:上下文是该组的第一项,因此不需要current-group()[1]
。谢谢Michael Kay。