If you have a function f(x) and and expression
f(x) + f(x)
it may be optimised to 2 * f(x) which means you only have to
calculate the function once.
However you can't do that if there is a possibility of the
"function" doing something strange like incrementing teh
value of some second variable y as in the first case y goes
up by 2 and in the second it goes up by 1.
Unfortunately when it's
f(x) is f(x)
then you do have to evaluate the function twice; expressions in XPath
2.0 are allowed to have the limited side-effect of creating new,
distinct nodes.
The formal semanticists seem happy that this is under control, but I
can't say I've worked out all the implications for my optimizer yet!
Michael Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list