Difference between revisions of "XQuery Module"
Jump to navigation
Jump to search
Line 12: | Line 12: | ||
|- | |- | ||
| width='90' | '''Signatures''' | | width='90' | '''Signatures''' | ||
− | |{{Func|xquery:eval|$expr as xs:string|item()*}}<br /> | + | |{{Func|xquery:eval|$expr as xs:string|item()*}}<br />{{Func|xquery:eval|$expr as xs:string, $bindings as map(*)|item()*}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Evaluates {{Code|$expr}} as XQuery expression at runtime and returns the resulting items.<br /> | + | |Evaluates {{Code|$expr}} 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 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 as context item. | ||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
Line 23: | Line 25: | ||
| | | | ||
* {{Code|xquery:eval("1+3")}} returns {{Code|4}}.<br /> | * {{Code|xquery:eval("1+3")}} returns {{Code|4}}.<br /> | ||
+ | * The following expressions use strings as keys. All of them return 'XML':<br/> | ||
+ | <pre class='brush:xquery'> | ||
+ | xquery:eval("$xml", map{ 'xml' := 'XML' }), | ||
+ | xquery:eval("$xml", map{ '$xml' := 'XML' }), | ||
+ | xquery:eval("declare namespace pref='URI'; $pref:xml", map{ '{URI}xml' := 'XML' }), | ||
+ | xquery:eval(".", map{ '' := 'XML' }) | ||
+ | </pre> | ||
+ | * The following expressions use QNames as keys. All of them return 'XML':<br/> | ||
+ | <pre class='brush:xquery'> | ||
+ | declare namespace pref = 'URI'; | ||
+ | xquery:eval("declare namespace pref='URI'; $pref:xml", map{ xs:QName('pref:xml') := 'XML' }), | ||
+ | xquery:eval("$xml", map{ xs:QName('xml') := 'XML' }) | ||
+ | </pre> | ||
|} | |} | ||
Line 29: | Line 44: | ||
|- | |- | ||
| width='90' | '''Signatures''' | | width='90' | '''Signatures''' | ||
− | |{{Func|xquery:invoke|$uri as xs:string|item()*}}<br /> | + | |{{Func|xquery:invoke|$uri as xs:string|item()*}}<br />{{Func|xquery:invoke|$expr as xs:string, $bindings as map(*)|item()*}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Opens {{Code|$uri}} as file, evaluates it as XQuery expression at runtime, and returns the resulting items.<br /> | + | |Opens {{Code|$uri}} as file, evaluates it as XQuery expression at runtime, and returns the resulting items.<br />The semantics of the {{Code|$bindings}} parameter is the same as for [[#xquery:eval|xquery:eval]]. |
|- | |- | ||
| '''Errors''' | | '''Errors''' |
Revision as of 21:01, 15 June 2012
This XQuery Module contains functions to evaluate XQuery strings and modules at runtime.
Contents
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($expr as xs:string) as item()* xquery:eval($expr as xs:string, $bindings as map(*)) as item()* |
Summary | Evaluates $expr 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:
|
Errors | BXXQ0001 : the query contains updating expressions.
|
Examples |
xquery:eval("$xml", map{ 'xml' := 'XML' }), xquery:eval("$xml", map{ '$xml' := 'XML' }), xquery:eval("declare namespace pref='URI'; $pref:xml", map{ '{URI}xml' := 'XML' }), xquery:eval(".", map{ '' := 'XML' })
declare namespace pref = 'URI'; xquery:eval("declare namespace pref='URI'; $pref:xml", map{ xs:QName('pref:xml') := 'XML' }), xquery:eval("$xml", map{ xs:QName('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
Added in Version 7.2.
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.