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
>reconstruct:-)

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().

Regards,

Dan
**********
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:for-each>
 <hr/>
 <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:for-each>
 <hr/>
 <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/>
 </xsl:for-each>
</xsl:template>

XML Fragment:
<items>
 <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"/>
</items>


__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread