Subject: RE: excluding descendants (and all of their descendants as well)
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 31 Aug 2005 21:49:19 +0100
|
In XPath 2.0:
(//para)[1]//text except (//system)[2]//text
In 1.0, the effect ($A except $B) can be achieved (painfully) by
$A[count($B) != count(.|$B)]
A more efficient solution (with either version) is to recurse down the child
axis a step at a time, stopping the recursion when you get to the second
system element.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Woods, Christopher [mailto:cwoods@xxxxxxxxxxxxxxxxx]
> Sent: 31 August 2005 18:36
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: excluding descendants (and all of their
> descendants as well)
>
> How does one find all text elements that are descendants of
> the first para element but exclude any text element that is a
> descendant of the second system element?
>
> <techinfo>
> <system>
> <descinfo>
> <para-seq>
> <para>
> <text>The quick brown fox jumped over the lazy
> systems engineer.</text>
> <text>Hello world.</text>
> <style>
> <text>In the matter of Jardyce v. Jardyce:</text>
> </style>
> <system>
> <descinfo>
> <para-seq>
> <para>
> <text>Blah, blah, blah...</text>
> <text>more gibberish.</text>
> <style>
> <text>Nasty, Brutish, and
> Short Attorneys at Law</text>
> </style>
> </para>
> </para-seq>
> </descinfo>
> </system>
> </para>
> </para-seq>
> </descinfo>
> </system>
> </techinfo>
>
> Thanks very much.
|