Difference between revisions of "XQuery Module"

From BaseX Documentation
Jump to navigation Jump to search
m (Text replace - "{|" to "{| width='100%'")
(added context example)
Line 17: Line 17:
 
|Evaluates {{Code|$query}} as XQuery expression at runtime and returns the resulting items.<br />Variables and context items can be declared via {{Code|$bindings}}. The specified keys must be QNames or strings, the values can be arbitrary item sequences:
 
|Evaluates {{Code|$query}} as XQuery expression at runtime and returns the resulting items.<br />Variables and context items can be declared via {{Code|$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 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 [http://www.jclark.com/xml/xmlns.htm Clark Notation]. If the specified string is empty, the value will be bound to the context item.
+
* variables specified as xs:string may be prefixed with a dollar sign. Namespace can be specified using the [http://www.jclark.com/xml/xmlns.htm Clark Notation].
 +
* If the specified string is empty, the value will be bound to the context item.
 
|-
 
|-
 
| '''Errors'''
 
| '''Errors'''
Line 25: Line 26:
 
|
 
|
 
* {{Code|xquery:eval("1+3")}} returns {{Code|4}}.<br />
 
* {{Code|xquery:eval("1+3")}} returns {{Code|4}}.<br />
 +
* You can bind the context and e.g. operate on a certain database only:<br />
 +
<pre class='brush:xquery'>
 +
xquery:eval("//country", map{ '' := db:open('factbook') })
 +
</pre>
 
* The following expressions use strings as keys. All of them return 'XML':<br/>
 
* The following expressions use strings as keys. All of them return 'XML':<br/>
 
<pre class='brush:xquery'>
 
<pre class='brush:xquery'>

Revision as of 14:22, 8 March 2013

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.
  • 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($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.