Re: [xsl] Finding Duplicates with XPath

Subject: Re: [xsl] Finding Duplicates with XPath
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Mon, 4 Dec 2006 21:35:35 +0100
You could try this XSLT 2.0 stylesheet:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml" indent="yes" />

 <xsl:template match="/links">
   <links>
     <xsl:for-each-group select="*"
group-by="string-join((local-name(),@*),'')">
       <xsl:copy-of select="." />
     </xsl:for-each-group>
   </links>
 </xsl:template>

</xsl:stylesheet>

The above stylesheet when applied to the given XML, produces output:

<?xml version="1.0" encoding="UTF-8"?>
<links>
  <newlink book="Find.pdf" name="MDSearchReplace"/>
  <newlink book="Find.pdf" name="MDSearch"/>
  <gotolink book="System.pdf" name="fontdefine"/>
  <gotolink book="System.pdf" name="graphicdefine"/>
</links>

I have a feeling, the above stylesheet could be made more generic. It
does not take care of namespaces, and the attribute order.

This is tested with Saxon 8.8J.

On 12/4/06, Rick Quatro <frameexpert@xxxxxxxxxxxx> wrote:
Hello All,

I have the following XML file:

<?xml version="1.0"?>
<links>
 <newlink book="Find.pdf" name="MDSearchReplace" />
 <newlink book="Find.pdf" name="MDSearch" />
 <newlink book="Find.pdf" name="MDSearch" />
 <gotolink book="System.pdf" name="fontdefine" />
 <gotolink book="System.pdf" name="graphicdefine" />
</links>

The newlink elements have to be unique within the links element. Is there a
way I can find duplicates; for example, the second and third elements. Note
that the duplicate elements might not necessarily be adjacent to each other.
Thanks in advance.

Rick Quatro
Carmen Publishing
585-659-8267
www.frameexpert.com


--
Regards,
Mukul Gandhi

Current Thread