xsl-list
[Top] [All Lists]

RE: [xsl] Find the node with maximum elements

2007-11-04 07:53:03

And I'm assuming that since the expression 
"max(/Sample/*/count(Car))" is based on an absolute XPath 
address, there is an opportunity for processor optimization 
because the value will never change for the entire execution 
of the stylesheet.

That's actually not a sufficient condition. The term "absolute path
expression" is very misleading from this point of view. Given an expression

$exp[count(Car) = max(/Sample/*/count(Car))]

you can move the max() call out of the loop only if you know that $exp is a
single-document nodeset - that is, all nodes in $exp will come from the same
document. This is the strategy Saxon uses, and it works in this case because
static analysis shows that /Sample/* is indeed a single-document nodeset.

Another optmization strategy would be, at run-time, to evaluate
max(/Sample/*/count(Car)) once for each document represented in $exp, so if
$exp returned a set of 100 nodes taken from three documents, the max()
function would be evaluated thrice. This isn't a strategy Saxon uses...

The big difficulty when coding in XSLT or other declarative languages is of
course that you don't know which "opportunities for optimization" the
processor is going to take advantage of.

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>
--~--