Changes

Jump to navigation Jump to search
1,283 bytes removed ,  12:46, 26 October 2023
no edit summary
In addition, various query optimizations create calls to the utility functions.
 
With {{Announce|Version 11}}, various functions of this module have been removed as they are now part of the official specification:
 
{|
|- valign="top"
| '''BaseX 10'''
| '''XQuery 4'''
|- valign="top"
| {{Code|util:array-members}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-array-members <code>array:members</code>]
|- valign="top"
| {{Code|util:array-values}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-array-values <code>array:values</code>]
|- valign="top"
| {{Code|util:chars}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-chars <code>fn:characters</code>]
|- valign="top"
| {{Code|util:duplicates}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-duplicate-values <code>fn:duplicate-values</code>]
|- valign="top"
| {{Code|util:init}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-trunk <code>fn:trunk</code>]
|- valign="top"
| {{Code|util:intersperse}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-intersperse <code>fn:intersperse</code>]
|- valign="top"
| {{Code|util:item}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-items-at <code>fn:items-at</code>]
|- valign="top"
| {{Code|util:last}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-foot <code>fn:foot</code>]
|- valign="top"
| {{Code|util:map-entries}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-map-pairs <code>map:pairs</code>]
|- valign="top"
| {{Code|util:map-values}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-map-values <code>map:values</code>]
|- valign="top"
| {{Code|util:replicate}}
| [https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-replicate <code>fn:replicate</code>]
|}
=Conventions=
=Positional Access=
 
==util:item==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:item(
$sequence as item()*,
$position as xs:double
) as item()?</pre>
|- valign="top"
| '''Summary'''
|Returns the item from {{Code|$sequence}} at the specified {{Code|$position}}. Equivalent to:
<syntaxhighlight lang="xquery">
$sequence[$position]
</syntaxhighlight>
|- valign="top"
| '''Examples'''
|
* <code>util:item(reverse(1 to 5), 1)</code> returns <code>5</code>.
* <code>util:item(('a','b'), 0)</code> returns an empty sequence.
|}
==util:range==
|
* <code>util:range(//item, 11, 20)</code> returns all path results from (if available) position 11 to 20.
|}
 
==util:last==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:last(
$sequence as item()*
) as item()?</pre>
|- valign="top"
| '''Summary'''
|Returns last item of a {{Code|$sequence}}. Equivalent to:
<syntaxhighlight lang="xquery">
$sequence[last()]
</syntaxhighlight>
|- valign="top"
| '''Examples'''
|
* <code>util:last(reverse(1 to 100))</code> returns <code>1</code>.
|}
 
==util:init==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:init(
$sequence as item()*
) as item()*</pre>
|- valign="top"
| '''Summary'''
|Returns all items of a {{Code|$sequence}} except for the last one. Equivalent to:
<syntaxhighlight lang="xquery">
$sequence[position() < last()]
</syntaxhighlight>
|- valign="top"
| '''Examples'''
|
* <code>util:init(1 to 4)</code> returns <code>1 2 3</code>.
|}
=Array and Map Functions=
 
==util:array-members==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:array-members(
$array as array(*)
) as array(*)*</pre>
|- valign="top"
| '''Summary'''
|Returns each member of an {{Code|$array}} as a new array. Equivalent to:
<syntaxhighlight lang="xquery">
for $a in 1 to array:size($array)
return [ $array($a) ]
</syntaxhighlight>
|- valign="top"
| '''Examples'''
|
* Returns three elements with the member values as concatenated text node.
<syntaxhighlight lang="xquery">
let $array := [ (), 2, (3, 4) ]
for $member in util:array-members($array)
return element numbers { $member }
</syntaxhighlight>
|}
 
==util:array-values==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:array-values(
$array as array(*)
) as item()*</pre>
|- valign="top"
| '''Summary'''
|Returns all members of an {{Code|$array}} as a sequence. Equivalent to:
<syntaxhighlight lang="xquery">
$array ? *
</syntaxhighlight>
|- valign="top"
| '''Examples'''
|
* Returns the array members as two items:
<syntaxhighlight lang="xquery">
let $array := [ (), 2, [ 3, 4 ] ]
return util:array-values($array)
</syntaxhighlight>
|}
==util:map-entries==
let $nodes := util:replicate(<node/>, 2, true())
return $nodes[1] is $nodes[2]
</syntaxhighlight>
|}
 
==util:intersperse==
 
{| width='100%'
|- valign="top"
| width='120' | '''Signature'''
|<pre>util:intersperse(
$items as item()*,
$separator as item()*
) as item()*</pre>
|- valign="top"
| '''Summary'''
|Inserts the defined {{Code|$separator}} between the {{Code|$items}} of a sequence and returns the resulting sequence. Equivalent to:
<syntaxhighlight lang="xquery">
head($items), for $item in tail($items) return ($separator, $item)
</syntaxhighlight>
|- valign="top"
| '''Examples'''
| Inserts semicolon strings between the three input items:
<syntaxhighlight lang="xquery">
fn:intersperse((<_>1</_>, <_>2</_>, <_>3</_>), '; ')
</syntaxhighlight>
|}
;Version 11.0
* Removed: {{Function||util:if}}, {{Function||util:intersperse}}, {{Function||util:item}}, {{Function||util:or}}
;Version 9.7
Bureaucrats, editor, reviewer, Administrators
13,551

edits

Navigation menu