xsl-list
[Top] [All Lists]

Re: [xsl] Got an XSLT function that does value intersection (not identity intersection)?

2021-07-10 23:29:00
On Thu, Jul 8, 2021 at 6:50 PM Roger L Costello costello(_at_)mitre(_dot_)org <
xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:


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.


The following XSLT stylesheet, also seems to work,

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                         xmlns:xs="http://www.w3.org/2001/XMLSchema";
                         xmlns:fn1="http://fn1";
                         exclude-result-prefixes="xs fn1" version="2.0">

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

   <xsl:template match="Document">
      <Document>
         <xsl:apply-templates
select="row[not(fn1:hasRowOccuredEarlier(.))]"/>
      </Document>
   </xsl:template>

   <xsl:template match="row">
      <xsl:copy-of select="."/>
   </xsl:template>

   <xsl:function name="fn1:hasRowOccuredEarlier" as="xs:boolean">
      <xsl:param name="row" as="element(row)"/>
      <xsl:sequence select="some $r in $row/preceding-sibling::row
satisfies deep-equal($r/*, $row/*)"/>
   </xsl:function>

</xsl:stylesheet>


-- 
Regards,
Mukul Gandhi
--~----------------------------------------------------------------
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>