This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: union/intersection on attribute values
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] union/intersection on attribute values
- From: Francis Norton <francis at redrice dot com>
- Date: Sun, 22 Apr 2001 00:09:12 +0100
- References: <20010421182658.99453.qmail@web12608.mail.yahoo.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Dan Diebolt wrote:
>
> DC on set1 and set2> select="item/@set1[. = /items/item/@set2]"
> DC on set1 less set2> select="item/@set1[not(. = /items/item/@set2)]"
> DC on set2 less set1> select="item/@set2[not(. = /items/item/@set1)]"
>
> FN>select="string(item/@set2[not(. = /items/item/@set1)])"
> FN>is an alternative way of de-duping the results.
>
> string() doesn't dedup the Venn pieces for me.
>
*deep blush*
Don't know what was going through my head this morning when I suggested
a method of selecting the first element of a node-set (which could
anyway be done better by applying a "[1]") as a method of de-duplicating
the whole list.
Here's a solution which actually works.
I'm going back into lurk mode :)
Francis.
<?xml version="1.0"?>
<!-- quotes.xsl: Transform to Quote.dtd vocabulary -->
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="items">
<xsl:variable name="In1and2" select="item/@set1[. =
/items/item/@set2]"/>
In1and2=
<xsl:for-each select="$In1and2">
<xsl:value-of select="."/>
</xsl:for-each>
<br/>
<xsl:variable name="In1not2" select="item/@set1[not(. =
/items/item/@set2)]"/>
In1not2=
<xsl:for-each select="$In1not2">
<xsl:value-of select="."/>
</xsl:for-each>
<br/>
<xsl:variable name="In2not1" select="item/@set2[not(. =
/items/item/@set1)]"/>
In2not1=
<xsl:for-each select="$In2not1">
<xsl:value-of select="."/>
</xsl:for-each>
<br/>
In2not1=
<xsl:for-each select="$In2not1">
<xsl:variable name="v" select="."/>
<xsl:if test="generate-id() = generate-id($In2not1[. = $v])">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
<br/>
</xsl:template>
</xsl:transform>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list