如何过滤xml标记中的重复值

时间:2016-01-06 09:34:00

标签: xml

我需要检查标记中重复值的XML文件。 下面是该文件的一小部分示例。 tag' csvpartname'的值必须检查重复项,因为它可能只能使用一次。 我不知道怎么做,所以非常欢迎任何帮助!

<?xml version="1.0" ?><!DOCTYPE NmLoader SYSTEM "standardX24.dtd">
<NmLoader>

<csvPart handler="wt.part.LoadPart.createPart" >
    <csvuser></csvuser>
    <csvpartName>Configured Fan</csvpartName>
    <csvpartNumber>0000023860</csvpartNumber>
    <csvtype>separable</csvtype>
    <csvgenericType>standard</csvgenericType>
    <csvcollapsible></csvcollapsible>
    <csvlogicbasePath></csvlogicbasePath>
</csvPart>

<csvPart handler="wt.part.LoadPart.createPart" >
    <csvuser></csvuser>
    <csvpartName>Configured Fan</csvpartName>
    <csvpartNumber>0000023861</csvpartNumber>
    <csvtype>separable</csvtype>
    <csvgenericType>standard</csvgenericType>
    <csvcollapsible></csvcollapsible>
    <csvlogicbasePath></csvlogicbasePath>
</csvPart>

</NmLoader>

1 个答案:

答案 0 :(得分:0)

此代码检查csvpartName是否在XML

中出现多次
<?xml version='1.0' encoding='ISO-8859-1'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:key name="k" match="csvPart" use="csvpartName" />

<xsl:template match='/'>
  <html>
  <body>
<xsl:apply-templates select='//csvpartName'/>
  </body>
  </html>
</xsl:template>

<xsl:template match='*'>

<xsl:if test='count(key("k", .)) &gt; 1'>
<p>
<xsl:value-of select='.'/> is used 
<xsl:value-of select='count(key("k", .))'/> times
</p>
</xsl:if>
</xsl:template>

</xsl:stylesheet>