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

Re: [xsl] finding lowest level in ancestor:: axis


Subject: Re: [xsl] finding lowest level in ancestor:: axis
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 26 Jan 2006 22:44:46 GMT

> <xsl:variable name="parent"
>     select="id(@idref)/ancestor::div10 |

Thi selects a node set of all the relevant elements. As the name "set"
implies node sets are unordered, so it makes no difference how you
arrange the terms with | .  | is set union and a | b is the same as b | a.

However generate-id() takes a single node and returns its id so if you
give it a node set, as with most xslt1 functions, it sorts the nodes
into document order and uses the 1st node,silently discarding the rest.

I think you want $parent to be the nearest ancestor of the idrefed node
whose name starts with div so that's

select="id(@idref)/ancestor-of-self::*[starts-with(local-name(),'div')][1]"

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