XSLT is almost soley specified by expected result, not assuming any
processing model, and given that, it is very hard to make the kind of
assurances that you are seeking. I'm not sure if you can even really
specify what it means to do tail recursion elimination unless you have
some explict stack model for implementing template calls.
I see. How to specify computational complexity for XSLT constructs is
a question I don't have an answer to.
In practice though, systems are not at
either extreme, and the hint given by xsl:key that the system might like
to optimise that Xpath appears to speed things up on most processors, i
don't think you can say more than that.
Can I then have hints to trigger other optimisations as well? Is using a global
variable an optimisation hint? Can I somehow give processor a hint that I want
to access a nodeset by position, not by key?
Putting it differently, if xsl:key/key is an optimisation hint, what are other
optimisation hints? In particular, how to hint a particular processor (and
preferrably,
more than one) that I want
- a template call to be optimised;
- access to a nodeset by position;
- a particular result to be cached.
I am really trying to understand. What's the difference between, say, existing
xsl:key/key
and xsl:index/index (the latter is imaginary access to a nodeset by position)?
David
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list