[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Problem with "except" operator


Subject: Re: [xsl] Problem with "except" operator
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Wed, 11 Feb 2009 13:50:48 +0000

2009/2/11 Felix Nensa <nensa@xxxxxxxx>:
> Hi all,
>
> I have a weird problem where the "except" operator does not behave as
> I would expect it.
> Given the following input source XML:
>
> <root>
>  <Response>
>    <Users>
>      <Count>2</Count>
>      <User>
>        <Username>henry</Username>
>        <Online>false</Online>
>        <UserId>302</UserId>
>      </User>
>      <User>
>        <Username>felix</Username>
>        <Online>false </Online>
>        <UserId>288</UserId>
>      </User>
>    </GetUserList>
>  </Response>
>  <Response>
>    <Friends>
>      <Count>1</Count>
>      <Friend>
>        <UserId>288</UserId>
>      </Friend>
>    </Friends>
>  </Response>
> </root>
>
> I am trying to get all those Users wich are not in the list of Friends
> with the following expression:
>
> <xsl:variable name="users" select="//Users/User/UserId" />
> <xsl:variable name="friends" select="//Friends/Friend/UserId" />
>
> <!-- debug output -->
> <xsl:value-of select="$users except $friends" />
>
> It outputs: 302 288
> I would expect: 302

"except" is based on node identity, not value...

You want select="$users[not(. = $friends]]"



-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/


Current Thread