XPath/XQuery trace function


Provides an execution trace intended to be used in debugging queries.


$value as item()*
) as item()*
$value as item()*,
$label as xs:string
) as item()*


This function is deterministic, context-independent, and focus-independent.


The function returns the value of $value, unchanged.

In addition, the values of $value, converted to an xs:string, and $label (if supplied) may be directed to a trace data set. The destination of the trace output is implementation-defined. The format of the trace output is implementation-dependent. The ordering of output from calls of the fn:trace function is implementation-dependent.


Consider a situation in which a user wants to investigate the actual value passed to a function. Assume that in a particular execution, $v is an xs:decimal with value 124.84. Writing fn:trace($v, 'the value of $v is:') will put the strings "124.84" and "the value of $v is:" in the trace data set in implementation dependent order.


Sometimes there is a need to output trace information unrelated to a specific value. In such cases it can be useful to set $value to an empty string or an empty sequence, and to compute the value of the $label argument: fn:trace((), "Processing item " || $i).