Loading TOC...


   $expr as xs:string,
   [$map as map:map?],
   [$context as item()?]
) as item()*


Evaluate an expression in the context of the current evaluating statement. This differs from xdmp:eval in that xdmp:value preserves all of the context from the calling query, so you do not need to re-define namespaces, variables, and so on. Although the expression retains the context from the calling query, it is evaluated in its own transaction with same-statement isolation.

$expr The string representing an expression to evaluate.
$map A map of namespace bindings. The keys should be namespace prefixes and the values should be namespace URIs. These namespace bindings will be added to the in-scope namespace bindings in the evaluation of the expression.
$context Bind the context item to this value during evaluation of the expression.

Required Privileges


Usage Notes

You can only evaluate expressions with xdmp:value; no prolog definitions (namespace declarations, function definitions, module imports, and so on) are allowed.

If the expression references something not in the context of either the calling query or the value expression, then an error is thrown. For example, the following throws an undefined variable exception:


It is not recommended to use this with an inline function as static analysis of inline functions do not look inside strings passed to xdmp:value.


  let $var := 5
  => 5


xquery version "1.0-ml";

   <step1>this is step1</step1>
   <step2>this is step2</step2>

use xdmp:value to dynamically specify a step
in an XPath expression
for $x in ("step1", "step2")

<step1>this is step1</step1>
<step2>this is step2</step2>

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.