RE: [xsl] Use predicates/patterns or xsl:choose (was:] Stylesheet optimisation)

Subject: RE: [xsl] Use predicates/patterns or xsl:choose (was:] Stylesheet optimisation)
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 11 Jan 2005 17:20:46 -0000
> A parser has to test a node against all available templates 
> and unless wrong ones fail very quickly 
> (or unless some smart optimisation is done), evaluating all 
> match patterns can consume considerable 
> time. 

Saxon builds a simple decision tree for template rules: first by node kind,
then by node name. Knowing the node-kind and node-name you can then hash
into what is usually a very small set of possible template rules. Saxon then
tests these sequentially, exactly as it would if you wrote an xsl:choose
within a single template rule.

In principle hashing or indexing techniques could be used even more than
this; but then, they could also be used for xsl:choose. In fact, I'm sure
that any stylesheet using one style could be automatically translated into
one using the other style, which means that you can't say absolutely
(without product knowledge) which style will give better performance.

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

Current Thread