Subject: RE: Using XPATH axis within a recursive structure to match a descendent node
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 21 Feb 2005 15:40:28 -0000
|
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: 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
|