Subject: Re: Testing against node-set
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Thu, 6 Feb 2003 14:55:27 +0000
|
Hi Nadia,
> <xsl:for-each
> select="$secondRowSet[parentID!=$firstRowSet/@id]">
The problem is that you've used ...!=... when you want to use
not(...=...).
When you use a node set with != it tests whether *any* of the nodes in
that node set fulfil the condition that you're testing. So the above
gets those rows that (a) have a parentID and (b) have a parentID whose
value is not equal to one of the IDs from the first row set.
This doesn't select your row 3 because row 3 doesn't have a parentID.
It does select your row 4 because row 4 has a parentID of 1, and 1 !=
2, which is the id of one of the rows in the first row set.
If you instead use:
$secondRowSet[not(parentID = $firstRowSet/@id)]
then it will select those rows that don't have a parentID (because
then there's no parentID to be equal to an ID from the first row set)
and not select those who have a parentID whose value is equal to *any*
of the IDs from the first row set.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|