Subject: Re: 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/
|