Re: [xsl] union/intersection on attribute values

Subject: Re: [xsl] union/intersection on attribute values
From: Dan Diebolt <dandiebolt@xxxxxxxxx>
Date: Sat, 21 Apr 2001 07:18:53 -0700 (PDT)
>select="item/@set1[. = /items/item/@set2]"
>select="item/@set1[not(. = /items/item/@set2)]"
>select="item/@set2[not(. = /items/item/@set1)]"
>that'll return duplicate entries which can be removed eg by using the
>count(.| trick I used on a posting early today (and it's too late to

David: Could you provide a version using your count() method to kill
the duplicates? I would like to compare it to the enclosed method
I adapted using your select expressions. I am especially interested
in how you define the keys and how many are needed using count().


XSLT Fragment:
<xsl:template match="items">
 <xsl:variable name="in1and2" select="item/@set1[. = /items/item/@set2]"/>
 <xsl:for-each select="$in1and2[generate-id(..)=generate-id(key('x1',.))]">
  in1and2=<xsl:value-of select="."/><br/>
 <xsl:variable name="in1not2" select="item/@set1[not(. = /items/item/@set2)]"/>
 <xsl:for-each select="$in1not2[generate-id(..)=generate-id(key('x1',.))]">
  in1not2=<xsl:value-of select="."/><br/>
 <xsl:variable name="in2not1" select="item/@set2[not(. = /items/item/@set1)]"/>
 <xsl:for-each select="$in2not1[generate-id(..)=generate-id(key('x2',.))]">
  in2not1=<xsl:value-of select="."/><br/>

XML Fragment:
 <item id="1" set1="A"/>
 <item id="2" set1="B"/>
 <item id="3" set1="C"/>
 <item id="4" set2="A"/>
 <item id="5" set2="C"/>
 <item id="6" set2="D"/>
 <item id="7" set2="D"/>
 <item id="8" set2="D"/>
 <item id="9" set2="E"/>
 <item id="a" set2="E"/>
 <item id="b" set2="F"/>

Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices

 XSL-List info and archive:

Current Thread