我想应用一个XSL样式表来删除xml中的重复节点。 我测试了一些解决方案,但我不能这样做:(我的程序在Visual C#Studio中。
我有以下XML:
<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>
所需的输出是:
<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>
答案 0 :(得分:1)
以下解决方案可以满足您的要求并按以下方式运行:
欢迎提出意见,这是我在过去两年中第一次尝试使用XSL。 我尝试了一个xsl:copy但是它没有包含孩子们的标签名称,但是这些值显示出来,无法找出原因!?
从某些内容中略去:
<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>