<LISTINGS>
<LISTING LISTING_ID="123456789">
<NAME1>1</NAME1>
<NAME1>1</NAME1>
<NAME1>13</NAME1>
<NAME1>13</NAME1>
<NAME1>12</NAME1>
<NAME1>100</NAME1>
<NAME1>sumit is testing</NAME1>
<NAME1>TEST IT</NAME1>
</LISTING>
<LISTING LISTING_ID="987654321">
<NAME1>3</NAME1>
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
<LISTING LISTING_ID="5656566565">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
</LISTINGS>
输出应为
<LISTINGS>
<LISTING LISTING_ID="123456789">
<NAME1>1</NAME1>
<NAME1>13</NAME1>
<NAME1>12</NAME1>
<NAME1>100</NAME1>
<NAME1>sumit is testing</NAME1>
<NAME1>TEST IT</NAME1>
</LISTING>
<LISTING LISTING_ID="987654321">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
<LISTING LISTING_ID="5656566565">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
</LISTINGS>
答案 0 :(得分:1)
此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="kElementByListingIdAndValue"
match="LISTING/*"
use="concat(../@LISTING_ID,'+',.)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="LISTING/*[count(.|key('kElementByListingIdAndValue',
concat(../@LISTING_ID,
'+',
.)
)[1]) != 1]"/>
</xsl:stylesheet>
输出:
<LISTINGS>
<LISTING LISTING_ID="123456789">
<NAME1>1</NAME1>
<NAME1>13</NAME1>
<NAME1>12</NAME1>
<NAME1>100</NAME1>
<NAME1>sumit is testing</NAME1>
<NAME1>TEST IT</NAME1>
</LISTING>
<LISTING LISTING_ID="987654321">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
<LISTING LISTING_ID="5656566565">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
</LISTINGS>
答案 1 :(得分:1)
使用Muenchian方法进行分组:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kListNameByVal" match="LISTING/NAME1"
use="concat(generate-id(..),'+',.)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"NAME1
[not(generate-id()
=
generate-id(key('kListNameByVal',
concat(generate-id(..),'+',.)
)
[1]
)
)
]
"/>
</xsl:stylesheet>
应用于提供的XML文档:
<LISTINGS>
<LISTING LISTING_ID="123456789">
<NAME1>1</NAME1>
<NAME1>1</NAME1>
<NAME1>13</NAME1>
<NAME1>13</NAME1>
<NAME1>12</NAME1>
<NAME1>100</NAME1>
<NAME1>sumit is testing</NAME1>
<NAME1>TEST IT</NAME1>
</LISTING>
<LISTING LISTING_ID="987654321">
<NAME1>3</NAME1>
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
<LISTING LISTING_ID="5656566565">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
</LISTINGS>
产生了想要的正确结果:
<LISTINGS>
<LISTING LISTING_ID="123456789">
<NAME1>1</NAME1>
<NAME1>13</NAME1>
<NAME1>12</NAME1>
<NAME1>100</NAME1>
<NAME1>sumit is testing</NAME1>
<NAME1>TEST IT</NAME1>
</LISTING>
<LISTING LISTING_ID="987654321">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
<LISTING LISTING_ID="5656566565">
<NAME1>3</NAME1>
<NAME1>4</NAME1>
</LISTING>
</LISTINGS>