Changes

Jump to navigation Jump to search
535 bytes added ,  14:57, 16 January 2017
==Non-Updating Expressions==
===transformcopy/modify/return===
<pre class="brush:xquery">
===update===
 
The {{Code|update}} expression is a BaseX-specific convenience operator for the {{Code|copy/modify/return}}
construct:
 
* Similar to the [[XQuery 3.0#Simple Map Operator|XQuery 3.0 map operator]], the value of the first
expression is bound as context item, and the second expression performs updates on this item.
The updated item is returned as result:
<pre class="brush:xquery">
</pre>
* More than one node can be specified as source: <pre class="brush:xquery">db:open('data')//item update delete node text()</pre> * If wrapped with curly braces, update expressions can be chained: <pre class="brush:xquery"><root/> update { insert node <child/> into .} update { insert node "text" into child}</pre> ===transform with=== The {{Code|updatetransform with}} expression is a convenience operator for writing simple transform expressions.Similar was added to the current [[XQuery 3https://www.w3.0org/TR/xquery-update-30/#Simple Map Operator|id-transform-with XQuery Update 3.0 map operator]], the value working draft. It is a simple version of the first[[#update|update]] expression is bound as context item, and the second expression performs updates on this item.The updated item is returned as result.also available in BaseX:
Please note that <pre class="brush:xquery"><xml>text</xml> transform with {{Code|update}} is not part replace value of the official XQuery Update Facility yetnode .with 'new-text'It is currently being discussed in the [https:}<//www.w3.org/Bugs/Public/show_bug.cgi?id=23643 W3 Bug Tracker];your feedback is welcome.pre>
==Functions==
===User-Defined Functions===
 
To use updating expressions within a user-defined or anonymous function, the {{Code|%updating}} annotation has to be added before the {{Code|function}} keyword. A correct declaration of a function that contains updating expressions (or one that calls updating functions) looks like this:
 
<pre class="brush:xquery">
declare %updating function { ... }
</pre>
If an updating function item is called, the function call must be prefixed with the keyword {{Code|updating}}. This ensures that the query compiler can statically detect if an invoked function item will perform updates or not:
let $node := <node>TO-BE-DELETED</node>
let $delete-text := %updating function($node) {
delete node $node//text()
}
return $node update (
)
</pre>
 
As shown in the example, user-defined and anonymous functions can additionally be annotated as {{Code|%updating}}.
=Concepts=
to the specification and BaseX. All errors are listed in the
[[XQuery Errors#Update Errors|XQuery Errors]] overview.
 
Please remember that the collected updates will be executed after the query evaluation.
If errors occur at this final stage, they cannot be caught via try/catch.
=Changelog=
 
;Version 8.5
* Added: [[#transform with|transform with]]
* Updated: [[#update|update]] was extended.
;Version 8.0
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu