RE: [xsl] excluding descendants (and all of their descendants as well)

Subject: RE: [xsl] 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: [xsl] 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.

Current Thread