This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: union/intersection on attribute values




Dan Diebolt wrote:
> 
> 
> or poised another way, how do you de-dup $In2not1 to produce variable
> $In2not1_deduped"
> 
> <xsl:variable name="In2not1_deduped" select="f($In2not1)"/>
> 
Good question. To which I do not have an answer.

Nearest I got to it was this:

---
<xsl:template match="items">
  <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:if test="generate-id() = generate-id($In2not1[. = current()])">
      <xsl:value-of select="."/>
    </xsl:if>
  </xsl:for-each>
  <br/>
$In2not1_deduped=
  <xsl:variable name="In2not1_deduped" select="$In2not1[generate-id() =
generate-id($In2not1[. = current()])]"/>
    <xsl:value-of select="$In2not1_deduped"/>
  <br/>
</xsl:template>
---

which outputs:

---
C:\xml>saxon t.xml t.xslt
<?xml version="1.0" encoding="utf-8"?>
 In1and2=
                AC<br/>
 In1not2=
                B<br/>
 In2not1=
                DDDEEF<br/>
 In2not1=
                DEF<br/>
$In2not1_deduped=
                <br/>
C:\xml>
---

The "generate-id() = generate-id($In2not1[. = current()])" expression
works as a test inside a for-each but not as a predicate on a select
attribute, I suspect because current() has a different scope.

I'm nose to grindstone today, so if anyone else has better ideas?

Francis.


> <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

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]