Difference between revisions of "XQuery Module"
Jump to navigation
Jump to search
Line 10: | Line 10: | ||
==xquery:eval== | ==xquery:eval== | ||
− | {{Mark|Updated with Version | + | {{Mark|Updated with Version 8.0:}} {{Code|$options}} argument added. |
{| width='100%' | {| width='100%' | ||
Line 39: | Line 39: | ||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
− | |{{Error|BXXQ0001|#Errors}} the query contains [[XQuery Update#Updating Expressions|updating expressions]].<br/>{{Error|BXXQ0003|#Errors}} insufficient permissions for evaluating the query.<br/>{{Error|BXXQ0004|#Errors}} query execution exceeded timeout.<br/>{{Error|FOTY0013|#Errors}} the expression yields function items. | + | |{{Error|BXXQ0001|#Errors}} the query contains [[XQuery Update#Updating Expressions|updating expressions]].<br/>{{Error|BXXQ0003|#Errors}} insufficient permissions for evaluating the query.<br/>{{Error|BXXQ0004|#Errors}} query execution exceeded timeout or memory constraints.<br/>{{Error|FOTY0013|#Errors}} the expression yields function items. |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Line 75: | Line 75: | ||
|} | |} | ||
− | ==xquery: | + | ==xquery:update== |
− | {{Mark| | + | {{Mark|Added with Version 8.0:}} |
{| width='100%' | {| width='100%' | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|xquery: | + | |{{Func|xquery:update|$query as xs:string|item()*}}<br />{{Func|xquery:update|$query as xs:string, $bindings as map(*)|item()*}}<br />{{Func|xquery:update|$query as xs:string, $bindings as map(*), $options as item()|item()}}<br /> |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Evaluates {{Code|$query}} as XQuery expression at runtime | + | |Evaluates {{Code|$query}} as updating XQuery expression at runtime.<br/>All updates will be added to the [[XQuery Update#Pending Update List|Pending Update List]] of the main query and performed after the evaluation of the main query. |
− | |||
− | |||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
− | |{{Error| | + | |{{Error|BXXQ0002|#Errors}} the query contains no [[XQuery Update#Updating Expressions|updating expressions]].<br/>{{Error|BXXQ0003|#Errors}} insufficient permissions for evaluating the query.<br/>{{Error|BXXQ0004|#Errors}} query execution exceeded timeout or memory constraints.<br/>{{Error|FOTY0013|#Errors}} the expression yields function items. |
|} | |} | ||
==xquery:invoke== | ==xquery:invoke== | ||
− | {{Mark|Updated with Version | + | {{Mark|Updated with Version 8.0:}} {{Code|$options}} argument added. |
{| width='100%' | {| width='100%' | ||
Line 141: | Line 139: | ||
=Changelog= | =Changelog= | ||
− | + | ;Version 8.0 | |
− | + | * Added: [[#xquery:update|xquery:update]] | |
− | ;Version | + | * Added: {{Code|$options}} argument |
− | * {{Code|$options}} argument | + | * Deleted: [[#xquery:evaluate|xquery:evaluate]] (opened databases will now be closed by main query) |
;Version 7.8 | ;Version 7.8 |
Revision as of 23:37, 19 March 2014
This XQuery Module contains functions for evaluating 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
Template:Mark $options
argument added.
Signatures | xquery:eval($query as xs:string) as item()* xquery:eval($query as xs:string, $bindings as map(*)) as item()* xquery:eval($query as xs:string, $bindings as map(*), $options as item()) as item() |
Summary | Evaluates $query as XQuery expression at runtime and returns the resulting items.The evaluated query has its own query context. If a returned node is stored in a database, a main-memory copy will be returned as result, because the referenced database is closed after query execution and will not be accessible anymore. Variables and context items can be declared via $bindings . The specified keys must be QNames or strings, the values can be arbitrary item sequences:
The
<xquery:options> <xquery:permission value="none"/> </xquery:options>
map { "permission" := "none" } The following options are available:
|
Errors | BXXQ0001 : the query contains updating expressions.BXXQ0003 : insufficient permissions for evaluating the query.BXXQ0004 : query execution exceeded timeout or memory constraints.FOTY0013 : the expression yields function items.
|
Examples |
xquery:eval("//country", map { '' := db:open('factbook') })
xquery:eval(".", map { '': 'XML' }), xquery:eval("declare variable $xml external; $xml", map { 'xml' := 'XML' }), xquery:eval( "declare namespace pref='URI'; declare variable $pref:xml external; $pref:xml", map { '{URI}xml': 'XML' } )
declare namespace pref = 'URI'; xquery:eval("declare variable $xml external; $xml", map { xs:QName('xml'): 'XML' }), let $query := "declare namespace pref='URI'; declare variable $pref:xml external; $pref:xml" let $vars := map { xs:QName('pref:xml'): 'XML' } return xquery:eval($query, $vars) |
xquery:update
Signatures | xquery:update($query as xs:string) as item()* xquery:update($query as xs:string, $bindings as map(*)) as item()* xquery:update($query as xs:string, $bindings as map(*), $options as item()) as item() |
Summary | Evaluates $query as updating XQuery expression at runtime.All updates will be added to the Pending Update List of the main query and performed after the evaluation of the main query. |
Errors | BXXQ0002 : the query contains no updating expressions.BXXQ0003 : insufficient permissions for evaluating the query.BXXQ0004 : query execution exceeded timeout or memory constraints.FOTY0013 : the expression yields function items.
|
xquery:invoke
Template:Mark $options
argument added.
Signatures | xquery:invoke($uri as xs:string) as item()* xquery:invoke($uri as xs:string, $bindings as map(*)) as item()* xquery:invoke($uri as xs:string, $bindings as map(*), $options as item()) 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 and $options parameters is the same as for xquery:eval.
|
Errors | BXXQ0001 : the expression contains updating expressions.BXXQ0003 : insufficient permissions for evaluating the query.BXXQ0004 : query execution exceeded timeout.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
Code | Description |
---|---|
BXXQ0001
|
A dynamically evaluated query must not contain updating expressions. |
BXXQ0002
|
The addressed database cannot be opened. |
BXXQ0003
|
Insufficient permissions for evaluating the query. |
BXXQ0004
|
Query execution exceeded timeout. |
Changelog
- Version 8.0
- Added: xquery:update
- Added:
$options
argument - Deleted: xquery:evaluate (opened databases will now be closed by main query)
- Version 7.8
- Added: xquery:evaluate
- Updated: used variables must be explicitly declared in the query string.
This module was introduced with Version 7.3. Functions have been adopted from the obsolete Utility Module.