Subject: RE: [xsl] XSL: For-Each Efficient or Not? From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Mon, 1 Jul 2002 20:11:26 +0100 |
> > > > >m:apply[child::*[position()=1 and name()='factorof']] > > ... > > In this case, however, the processor does have to look at > every node since > each node has to provide the context for the evaluation of the > expression(s) in the predicate. I.e. how does it evaluate > name()='factorof' > without picking up the node whose name it's testing? It would > be a pretty > smart processor that had already thrown away all the nodes in > the wrong > position before it did that. It's not that difficult. Saxon doesn't quite achieve this today but it will in the next release (I just tested it). X[position() = 1 and name()='factorof'] can be statically rewritten as X[1][name()='factorof'] without too much difficulty. All you need to know is that the right-hand operand of the "and" does not depend on current position (and you need to be careful not to rewrite X[1 and 2] as X[1][2]). Once you have done this rewrite, the standard (run-time) optimization for X[1] is triggered, so you stop evaluating X after you've found the first node that matches. Michael Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL: For-Each Efficient o, Wendell Piez | Thread | RE: [xsl] XSL: For-Each Efficient o, Wendell Piez |
Re: [xsl] Practicality of Separatin, James Fuller | Date | [xsl] transforming to xsl: way to a, Richard Bondi |
Month |