This XQuery Module contains functions for evaluating XQuery strings and modules at runtime.
Conventions
All functions in this module are assigned to the http://basex.org/modules/xquery
namespace, which is statically bound to the xquery
prefix.
All errors are assigned to the http://basex.org/errors
namespace, which is statically bound to the bxerr
prefix.
Functions
xquery:eval
Signatures
|
xquery:eval($query as xs:string) as item()*
xquery:eval($query as xs:string, $bindings as map(*)) as item()*
|
Summary
|
Evaluates $query as XQuery expression at runtime and returns the resulting items. Database nodes in the result will be copied and returned instead. Variables and context items can be declared via $bindings . The specified keys must be QNames or strings, the values can be arbitrary item sequences:
- variables specified as QNames will be directly interpreted as variable name.
- variables specified as xs:string may be prefixed with a dollar sign. Namespace can be specified using the Clark Notation.
- If the specified string is empty, the value will be bound to the context item.
|
Errors
|
BXXQ0001 : the query contains updating expressions.
|
FOTY0013 : the expression yields function items.
|
Examples
|
xquery:eval("1+3") returns 4 .
- You can bind the context and e.g. operate on a certain database only:
xquery:eval("//country", map{ '' := db:open('factbook') })
- The following expressions use strings as keys. All of them return 'XML':
xquery:eval(".", map{ '' := 'XML' })
xquery:eval("$xml", map{ 'xml' := 'XML' }),
xquery:eval("$xml", map{ '$xml' := 'XML' }),
xquery:eval("declare namespace pref='URI'; $pref:xml", map{ '{URI}xml' := 'XML' }),
- The following expressions use QNames as keys. All of them return 'XML':
declare namespace pref = 'URI';
xquery:eval("$xml", map{ xs:QName('xml') := 'XML' })
xquery:eval("declare namespace pref='URI'; $pref:xml", map{ xs:QName('pref:xml') := 'XML' }),
|
xquery:invoke
Signatures
|
xquery:invoke($uri as xs:string) as item()*
xquery:invoke($uri as xs:string, $bindings as map(*)) as item()*
|
Summary
|
Opens $uri as file, evaluates it as XQuery expression at runtime, and returns the resulting items. Database nodes in the result will be copied and returned instead. The semantics of the $bindings parameter is the same as for xquery:eval.
|
Errors
|
BXXQ0001 : the expression contains updating expressions.
|
FOTY0013 : the expression yields function items.
|
xquery:type
Signatures
|
xquery:type($expr as item()*) as item()*
|
Summary
|
Similar to fn:trace($expr, $msg) , but instead of a user-defined message, it emits the compile-time type and estimated result size of its argument.
|
Errors
Changelog
This module was introduced with Version 7.3. Functions have been adopted from the obsolete Utility Module.