Re: [xsl] building path expressions around dynamic element node names

Subject: Re: [xsl] building path expressions around dynamic element node names
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 18 May 2005 13:49:27 +0100
If you test two node sets using = then you test the string value of each
node in one set against the string value of each node in teh other set.

<xsl:if 
test="../parent::node(.)=..//preceding-sibling::A/Class/text()"><

../parent::node(.) is a syntax error, nod() is not a function, and
doesn't take an argument.

you meant ../parent::node() which is the same as ../..

so the test will involve the string value of your grandparent, ie th
econcatenation of all the text in all elements descended from your
grandparent.
is

../descendent-or-self::node()/preceding-sibling::A/Class/text(

which is the same 
../preceding-sibling::A/Class/text() |
..//A/Class/text()

(The preceding-sibling axis is doing nothing when selecting descendents
as the siblings are all selected anyway when selecting descendents, so
preceding-sibling jjust selects them again, and then duplicates are
removed as a node set is a set.)


So this selects all the text nodes in A/Class elements that are
preceding siblings or descendents of your parent. Each of these strings
is compared to the strig value of ../..  It might be possible to
construct a document where that test is true, but it seems unlikely
except in very specially constructed cases.


I'm not sure what you are trying to do.
If you are on a Class element and want to select a child of Top that has
the same name as string value of the current node then
select="/Top/*[name()=currrent()]
is all you need.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread