XML中的重复节点
我想应用一个XSL样式表来删除xml中的重复节点。 我测试了一些解决方案,但我做不到:(我的程序在Visual C#Studio中 我有以下XML:XML中的重复节点,xml,xsd,xml-parsing,Xml,Xsd,Xml Parsing,我想应用一个XSL样式表来删除xml中的重复节点。 我测试了一些解决方案,但我做不到:(我的程序在Visual C#Studio中 我有以下XML: <store> <laptop> <ID>1</ID> <price>X2</price> </laptop> <laptop> <ID>2</ID> <price>X1</price&
<store>
<laptop>
<ID>1</ID>
<price>X2</price>
</laptop>
<laptop>
<ID>2</ID>
<price>X1</price>
</laptop>
<laptop>
<ID>8</ID>
<price>X2</price>
</laptop>
<laptop>
<ID>2</ID>
<price>X3</price>
</laptop>
</store>
1.
X2
2.
X1
8.
X2
2.
X3
所需输出为:
<store>
<laptop>
<ID>1</ID>
<price>X2</price>
</laptop>
<laptop>
<ID>8</ID>
<price>X2</price>
</laptop>
<laptop>
<ID>2</ID>
<price>X3</price>
</laptop>
</store>
1.
X2
8.
X2
2.
X3
以下解决方案满足您的要求,并按以下方式工作:
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
工作代码:
<xsl:stylesheet
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
exclude-result-prefixes="xs">
<xsl:template match="/">
<store>
<xsl:variable name="non-duplicates"
select="//ID[not(.=following::ID)]" />
<xsl:for-each select="$non-duplicates">
<xsl:copy-of select="parent::*"/>
</xsl:for-each>
</store>
</xsl:template>
</xsl:stylesheet>