Lists Home |
Date Index |
> > There is one example in XSLTMark where schema knowledge could make a
> > dramatic difference. It effectively does
> > <xsl:template match="row[id='0432']">
> > <html>
> > .. stuff ..
> > </html>
> > </xsl:template>
> > <xsl:template match="text()"/>
> > If you know that a row cannot contain another row then you can skip
> > processing 99.99% of the data.
> Do you mean if you know that the document cannot contain another row
> with the same id, or did you mean if you know that a row cannot
> contain another row? I'm missing something about what optimisations
> it's useful to make in XSLT, if you meant the latter?
Either would do. The above are the only template rules in the stylesheet.
The first template rule is the only thing in the stylesheet that can produce
any output. Therefore you know that if you are processing a node that cannot
have row[id='0432'] as a descendant, you can skip it and its entire subtree.
As I say, this is an example where schema knowledge could help greatly. The
rule would be "if none of the descendants of this node can match a template
rule that produces output, then don't process this subtree." The question
is, would this rule be triggered sufficiently often to justify including it
in the optimizer?
(Alternatively, I might include it anyway because I'm only really interested
in optimizing the cases that occur in benchmarks).