[xsl] Saxon versus Xalan implementations of evaluate() extension function?

Subject: [xsl] Saxon versus Xalan implementations of evaluate() extension function?
From: "Andrzej Taramina" <andrzej@xxxxxxxxxxx>
Date: Wed, 6 Jul 2005 20:02:43 -0400
I'm trying to get a large application to run using Saxon 8.4 rather than Xalan, which it
uses currently, since a large chunk of cpu is being burned in the xsl transform step.
Figured Saxon is usually a lot more efficient than Xalan in that regard.

But there seems to be a difference in the functionality of xalan:evaluate versus
saxon:evaluate.

For example:

   xalan:evaluate( concat( '$', @varname ) )

works fine.  It uses the value of the @varname attribute (say 'xyz' ) and then returns the
value of the variable $xyz.  Saxon dies on this construct with an exception that looks like:

net.sf.saxon.trans.DynamicError: Static error in XPath expression supplied to
saxon:evaluate: XPath syntax error at char 10 in $xyz:

Similarily, I can do a

   xalan:evaluate( concat( '$data/', @xpathValue ) )

But Saxon throws the DynamicError exception.

Seems that Saxon doesn't support variable bindings in the evaluate call.  Strange
oversight (IMNSHO) since the exslt dyn:evaluate specifies that it will support variable
bindings.

Any workarounds?  Any plans for Saxon 8.5 to support variable bindings for the evaluate()
function?

Thanks for any/all advice.  If I can't resolve this, it will kill our ability to switch to
Saxon. ;-(

....Andrzej

Chaeron Corporation
http://www.chaeron.com

Current Thread