Subject: Re: [xsl] preceding...please help understanding... From: "J.Pietschmann" <j3322ptm@xxxxxxxx> Date: Sat, 07 Sep 2002 19:58:44 +0200 |
I am having trouble understanding preceding.
<xsl:for-each select="stocks/ticker"> <xsl:if test=". != preceding::ticker">
preceding::ticker returns a node set with all ticker element nodes which precede the current node. The "." on the left side is a node set with the current node. The != operator now compares the string value of each node from the node seft to left of it with the string value of each node of the right node set, and, this is the important point retruns true if any of these comparisions returns true. For the "AAA" ticker, the right node set is empty, therefore no comparision takes place, and the whole expresssion returns false, and the "AAA" is not output. for the each of "CBS" ticker, the expression returns true, because "CBS" != "BIG", and both nodes are output.
Why doesn't the previous one work as expected. What am I missing here about preceding?
You should use "not(. = preceding::ticker)". It's not a problem with preceding, it's the fact that != works somewhat unintuitively for node sets: $a=$b and $a!=$b can return both true for the same values of $a and $b, and not($a=$b) is not the same as $a!=$b.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] preceding...please help under, Bill Carter | Thread | Re: [xsl] preceding...please help u, Mike Brown |
[xsl] preceding...please help under, Bill Carter | Date | Re: [xsl] preceding...please help u, Mike Brown |
Month |