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/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--