XQuery Module

From BaseX Documentation
Revision as of 14:24, 21 December 2012 by CG (talk | contribs) (Text replace - "{|" to "{| width='100%'")
Jump to navigation Jump to search

This XQuery Module contains functions to evaluate 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.
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.
Examples
  • xquery:eval("1+3") returns 4.
  • 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($expr 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.
The semantics of the $bindings parameter is the same as for xquery:eval.
Errors BXXQ0001: the query contains updating expressions.

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

Code Description
BXXQ0001 A dynamically evaluated query must not contain any updating expressions.

Changelog

This module was introduced with Version 7.3. Functions have been adopted from the obsolete Utility Module.