xsl-list
[Top] [All Lists]

[xsl] Here’s how to eliminate duplicate elements using XSLT

2021-07-09 08:56:37
Hi Folks,

[This is a summary of yesterday's discussion, for the archives.]

I have an XML document that consists of <row> elements:

<Document>
    <row>
        <x>1</x>
       <y>2</y>
    </row>
    <row>
        <x>3</x>
       <y>4</y>
    </row>
    <row>
        <x>1</x>
       <y>2</y>
    </row>
</Document>

I want to eliminate duplicate rows. row[1] and row[3] have the same elements 
with the same values. They are duplicates. I only want one of them.

Michael Kay responded:

In this situation, you can use grouping:

<xsl:for-each-group select="row" group-by="x, y" composite="yes">
      <xsl:sequence select="current-group()[1]"/>
</xsl:for-each>

Roger: Wow! That simple for-loop is doing an enormous amount of work – grouping 
elements by their content, iterating over the groups, selecting the first of 
each group (thus, deleting the duplicates). That is beautiful code. Thank you 
Michael.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--


<Prev in Thread] Current Thread [Next in Thread>
  • [xsl] Here’s how to eliminate duplicate elements using XSLT, Roger L Costello costello(_at_)mitre(_dot_)org <=