我需要使用XSLT 2.0在xml文件中删除一些具有相同ID的节点。 结构是:
<Root>
<media tipo="immagine" id="1">
<numero>14.1</numero>
</media>
<media tipo="immagine" id="2">
<numero>14.2</numero>
</media>
<media tipo="immagine" id="1">
<numero>14.1</numero>
</media>
</Root>
,结果必须是:
<Root>
<media tipo="immagine" id="1">
<numero>14.1</numero>
</media>
<media tipo="immagine" id="2">
<numero>14.2</numero>
</media>
</Root>
我有多个具有相同属性ID值的人。 感谢
答案 0 :(得分:1)
假设您想要比较id并检查使用
<xsl:key name="by-id" match="*" use="@id"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[@id and not(. is key('by-id', @id)[1])]"/>
答案 1 :(得分:0)
由于您使用 XSLT 2.0 ,您可以执行以下操作:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/Root">
<Root>
<xsl:for-each-group select="media" group-by="@id">
<xsl:copy-of select="current-group()[1]"/>
</xsl:for-each-group>
</Root>
</xsl:template>
</xsl:stylesheet>