saxon:do
The saxon:do
instruction is designed for use when invoking
XPath expressions that have side-effects. Any result of the expression is discarded.
Category: instruction
Content: none
Permitted parent elements:
any XSLT element whose content model is
sequence-constructor; any literal result element
Attributes
|
|
The expression to be evaluated (typically an expression with side-effects). |
Details
The instruction is designed for use when invoking
XPath expressions that have side-effects. For example, <saxon:do action="$connection?close()"/>
calls the function $connection?close()
, while <saxon:do action="saxon:discard-document($doc)"/>
calls saxon:discard-document()
. Any result of the expression is discarded. The instruction is useful
in preference to xsl:sequence
firstly because the result of the expression is discarded, and secondly
because it is recognized by the optimizer as signaling an expression that is being evaluated for its side-effects.
The optimizer will attempt to avoid aggressive optimizations such as lifting the instruction
out of an xsl:for-each
loop. Note however that this does not propagate; just
because a function F
calls saxon:do
, for example, does not prevent calls on F
being moved
out of a loop.