xsl-list
[Top] [All Lists]

RE: [xsl] Subject: Expression handed to saxon:evaluate can't access variables

2009-09-25 04:09:33

saxon:evaluate allows you to use variables $p1...$p9 and to bind these in
the call:

normalize-space(concat($p1/Caption,' ',$p2/Caption))

saxon:evaluate(Caption, $parentnode, $tablenode)

The reason that the dynamic expression can't evaluate XSLT variables
directly is that the Saxon optimizer potentially looks at all the places
where a variable is used and makes decisions accordingly: for example, if
there is only one reference then the variable may be "inlined". This kind of
optimization isn't possible unless all references to the variable are
statically known.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 

 

-----Original Message-----
From: rowan(_at_)sylvester-bradley(_dot_)org 
[mailto:rowan(_at_)sylvester-bradley(_dot_)org] 
Sent: 24 September 2009 11:57
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Subject: Expression handed to saxon:evaluate 
can't access variables

I'm trying to design a transform that needs to evaluate an 
expression taken from the XML input file. I'm trying to use 
the saxon:evaluate function to do this, as follows:
<xsl:value-of select="saxon:evaluate(Caption)"/>

The problem seems to be that my expression (which is in the 
Caption element of my source file):
normalize-space(concat($parentnode/Caption,' ',$tablenode/Caption))

contains some references to variables. When I try to run 
this, it reports "Static error in XPath expression supplied 
to saxon:evaluate: Undeclared variable in XPath expression: 
$parentnode".

When I put the expression directly into my XSL file like this:
<xsl:value-of select="normalize-space(concat($parentnode/Caption,'
',$tablenode/Caption))"/>

it works.

How can I get this sort of expression supplied from the 
source file to evaluate properly?

Many thanks - Rowan



--------------------------------------------------------------------
mail2web.com - MicrosoftR Exchange solutions from a leading 
provider - http://link.mail2web.com/Business/Exchange



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



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

<Prev in Thread] Current Thread [Next in Thread>