Re: [xsl] Using XPATH axis within a recursive structure to match a descendent node

Subject: Re: [xsl] Using XPATH axis within a recursive structure to match a descendent node
From: ben senior <ben@xxxxxxxxxxxxx>
Date: Mon, 21 Feb 2005 16:45:30 +0100
Thank you Michael. I'm sorry I didn't realise that myself!

Ben

Michael Kay wrote:

In XPath 2.0,

.//load except .//gui//load

or

for $this in . return $this//load[ancestor::gui[1] is $this]

This is a peculiar construct needed because XPath does not have real
variables; in XQuery you could write

let $this := .
return $this//load[ancestor::gui[1] is $this]

In XSLT (1.0 or 2.0) you could write

.//load[ancestor::gui[1] is current()]


Michael Kay http://www.saxonica.com/







-----Original Message-----
From: ben senior [mailto:ben@xxxxxxxxxxxxx] Sent: 21 February 2005 15:15
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Using XPATH axis within a recursive structure to match a descendent node


I'm afraid I couldn't think of a better title!

Take a look at the xml below. The goal is to match the load tags of 0 and 1, but NOT 2.
I need an expression which matches ALL load tags that are descendents of the current gui tag, but not contained within descendent gui tags! Does that make sense to anybody?


i.e. descendant::load will also match 2, which I do not want. How might I approach this? Any ideas?

<gui>
<load> ........................*0
something
</load>
<p> blah
<b>
blah
<load> ........................*1
else
</load>
<gui>
<load> ........................*2
<again
</load>
</gui>
</b>
</p>
</gui>


Kindest Regards,

Ben

Current Thread