[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Sibling axis: All of kind A up to first of kind B

Subject: RE: Sibling axis: All of kind A up to first of kind B
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 26 Mar 2008 21:57:11 -0000
RE:  Sibling axis: All of kind A up to first of kind B
> >>        <xsl:apply-templates mode="toc"
> >>          select="(following-sibling::h1 | 
> following-sibling::h2)[ 1 
> >> ]"/>
> >
> > Might be safer to do following-sibling::*[self::h1 or 
> self::h2][1] - 
> > but depends on the processor.
> 
> Why might this be safer? Aren't the resulting node-sets the 
> same and the expressions therefore equivalent? Doesn't the 
> union operator impose document order?

Well, I've no way of knowing, but it occurred to me that there might be
processors that fail to recognize that the two operands of the union
operator are both sorted node-sets and that the operation can therefore be
done by a fully-streamed merge, stopping as soon as either node-set delivers
a node. Streamed execution of the second expression requires much less
analysis.

Saxon copes well with it, however:

Analyzing query from {(following-sibling::h1|following-sibling::h2)[1]}
Analysis time: 9544 milliseconds
<?xml version="1.0" encoding="UTF-8"?>
<query>
  <body>
    <firstItem>
      <axis name="following-sibling"
            nodeTest="(element(h1, xs:anyType) | element(h2, xs:anyType))"/>
    </firstItem>
  </body>
</query>

The expression tree generated by the Saxon optimizer is in effect 

first(following-sibling::(h1|h2))

which is roughly what I suggested you should write. This will do a single
scan of the following sibling axis looking for h1 and h2 elements, and
return the first one it finds: no merging needed.

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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Cast Your Vote

We need your help – Vote for DataDirect XML Products!

  • Best SOA or XML site

Winners and finalists announced at SOA World Conference in November.

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.