Difference between revisions of "XQuery 4.0"
| (3 intermediate revisions by the same user not shown) | |||
| Line 62: | Line 62: | ||
<p style="white-space: pre-wrap;padding: 1em; border: 1px solid #eaecf0; background-color: #f8f9fa; color: #000; font-family: monospace;">declare function strings:get( | <p style="white-space: pre-wrap;padding: 1em; border: 1px solid #eaecf0; background-color: #f8f9fa; color: #000; font-family: monospace;">declare function strings:get( | ||
$value, | $value, | ||
| − | $default <span style="color:#C00000">:= "EMPTY"</span>) { | + | $default <span style="color:#C00000">:= "EMPTY"</span> |
| − | + | ) { | |
| + | $value otherwise $default | ||
} | } | ||
strings:get('john') | strings:get('john') | ||
| Line 112: | Line 113: | ||
=Maps= | =Maps= | ||
| − | + | 6 new map functions have been added in [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#maps XPath and XQuery Functions and Operators 4.0], namely | |
<ul> | <ul> | ||
| − | |||
<li><code>map:build</code></li> | <li><code>map:build</code></li> | ||
| − | |||
| − | |||
| − | |||
<li><code>map:filter</code></li> | <li><code>map:filter</code></li> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<li><code>map:of-pairs</code></li> | <li><code>map:of-pairs</code></li> | ||
<li><code>map:pair</code></li> | <li><code>map:pair</code></li> | ||
| − | |||
| − | |||
| − | |||
<li><code>map:replace</code></li> | <li><code>map:replace</code></li> | ||
| − | |||
<li><code>map:substitute</code></li> | <li><code>map:substitute</code></li> | ||
| − | |||
</ul> | </ul> | ||
| Line 141: | Line 128: | ||
=Arrays= | =Arrays= | ||
| − | + | 8 new array functions have been added in [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#array XPath and XQuery Functions and Operators 4.0], namely | |
| + | |||
| + | * [[Array_Module#array:build|{{Code|array:build}}]] | ||
| + | * [[Array_Module#array:foot|{{Code|array:foot}}]] | ||
| + | * <code>array:members</code> | ||
| + | * <code>array:of-members</code> | ||
| + | * <code>array:replace</code> | ||
| + | * <code>array:slice</code> | ||
| + | * <code>array:split</code> | ||
| + | * <code>array:trunk</code></li> | ||
| + | |||
| + | 1 array function has been updated: | ||
<ul> | <ul> | ||
| − | <li> | + | <li><li><code>array:subarray</code></li></li> |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | <li><code>array:subarray</code></li | ||
| − | |||
| − | |||
| − | |||
</ul> | </ul> | ||
| Line 182: | Line 151: | ||
;Version 11.0 | ;Version 11.0 | ||
| − | * Added {{Code|otherwise}} | + | * Added operator {{Code|otherwise}} |
| + | * Added function <code>map:build</code> | ||
| + | * Added function <code>map:filter</code> | ||
| + | * Added function <code>map:of-pairs</code> | ||
| + | * Added function <code>map:pair</code> | ||
| + | * Added function <code>map:replace</code> | ||
| + | * Added function <code>map:substitute</code> | ||
| + | * Added function [[Array_Module#array:build|{{Code|array:build}}]] | ||
| + | * Added function [[Array_Module#array:foot|{{Code|array:foot}}]] | ||
| + | * Added function <code>array:members</code> | ||
| + | * Added function <code>array:of-members</code> | ||
| + | * Added function <code>array:replace</code> | ||
| + | * Added function <code>array:slice</code> | ||
| + | * Added function <code>array:split</code> | ||
| + | * Added function <code>array:trunk</code> | ||
Latest revision as of 15:35, 16 November 2023
This article is part of the XQuery Portal. It provides a summary of the most important features of the XPath and XQuery Functions and Operators 4.0 W3C Editor's Draft.
Contents
Otherwise operator[edit]
$a otherwise $b
… is equivalent to …
if(exists($a)) then $a else $b
Braced if, optional else[edit]
if($a) { $b } else { $c }
if($a) { if($b) { $c } }
Arrow map operator[edit]
"The cat sat on the mat" => tokenize() =!> concat(".") =!> upper-case() => string-join(" ")
Numeric literals[edit]
1_048_576
0xFC00
0b111000
Abbreviated function syntax[edit]
let $inc := fn($n) { $n + 1 } return $inc(99)
… is equivalent to …
let $inc := function($n) { $n + 1 } return $inc(99)
Focus functions (arity-one)[edit]
let $inc := fn { . + 1 } return $inc(99)
fn:filter($integers, fn { . > 5 })
fn:iterate-while($number, fn { . < 100 }, fn { . * . })
Optional arguments[edit]
declare function strings:get( $value, $default := "EMPTY" ) { $value otherwise $default } strings:get('john')
Keyword arguments[edit]
declare function coordinates( $x := 0, $y := 0 ) { map { "x" : $x, "y" : $y } } coordinates(y := 123)
String templates[edit]
`Name: { $name }, { $age }`
… is equivalent to …
"Name: " || $name || ", " || $age
… or …
``[Name: `{ $name }`, `{ $age }`]``
Union node tests[edit]
/xml/child::(a|b)
/xml/element::(c|d)
Compact lookup syntax[edit]
$address?$name, $city?"city code"
… is equivalent to …
$address?($name), $city?("city code")
Maps[edit]
6 new map functions have been added in XPath and XQuery Functions and Operators 4.0, namely
map:buildmap:filtermap:of-pairsmap:pairmap:replacemap:substitute
Map functions are described in Map Module.
Arrays[edit]
8 new array functions have been added in XPath and XQuery Functions and Operators 4.0, namely
array:buildarray:footarray:membersarray:of-membersarray:replacearray:slicearray:splitarray:trunk
1 array function has been updated:
array:subarray
Array functions are described in Array Module.
Changelog[edit]
- Version 11.0
- Added operator
otherwise - Added function
map:build - Added function
map:filter - Added function
map:of-pairs - Added function
map:pair - Added function
map:replace - Added function
map:substitute - Added function
array:build - Added function
array:foot - Added function
array:members - Added function
array:of-members - Added function
array:replace - Added function
array:slice - Added function
array:split - Added function
array:trunk