SAXONICA |
saxon:expression($expr as xs:string) ==> jt:net.sf.saxon.functions.Evaluate-PreparedExpression
This function creates a stored expression that can be evaluated repeatedly with different argument values and a different dynamic context.
The supplied string must contain an XPath expression. The result of the function is a stored
expression, which may be supplied as an argument to other extension functions such as
saxon:eval,
saxon:sum and
saxon:distinct. The result of
the expression will usually depend on the current node. The context for the expression includes the namespaces in scope at
this point in the
stylesheet. The expression may contain references to the nine variables $p1
, $p2
, ...
$p9
only. It may contain calls on Java extension functions, including Saxon and EXSLT-defined
functions (other than those which are restricted to use within stylesheets, for example the saxon:evaluate()
function itself). But it does not allow access to stylesheet variables, stylesheet functions, or
functions defined in the XSLT specification such as key()
or format-number()
.
If the expression contains namespace prefixes, these are interpreted
in terms of the namespace declarations in scope at the point where the
saxon:expression()
function is
called, not those in scope where the stored expression is evaluated.
The stored expression (if it is to be evaluated using saxon:eval()
) may contain
references to variables named $p1
, $p2
, ... $p9
. The values of
these variables can be supplied when the expression is evaluated using saxon:eval
. The
second argument of saxon:eval
supplies the value of $p1
, the third
argument supplies the value of $p2
, and so on.
For example, following <xsl:variable name="add" select="saxon:expression('$p1 + $p2')"/>
,
the instruction <xsl:value-of select="saxon:eval($add, 6, 7)"/>
will output 13
.