Changes

Jump to navigation Jump to search
488 bytes added ,  17:40, 17 February 2020
no edit summary
This [[Module Library|XQuery Module]] contains functions for manipulating arrays, which will officially be has been introduced with [[XQuery 3.1#Arrays|XQuery 3.1]].<br/>'''Please note''' that the functions are subject to change until the specification has reached its final stage.
=Conventions=
All functions and errors in this module are assigned to the {{Code|<code><nowiki>http://www.w3.org/2005/xpath-functions/array}} </nowiki></code> namespace, which is statically bound to the {{Code|array}} prefix.<br/>
=Functions=
| '''Examples'''
|
* <code>array:size([1 to 10])</code> returns {{Code|10}}.
* <code>array:size(array { 1 to 10 })</code> returns {{Code|10}}.
* <code>array:size([1 to 10])</code> returns {{Code|1}}, because the array contains a single sequence with 10 integers.
|}
| '''Examples'''
|
* <code>array:appendsubarray(["a", "b", "c"], 2)</code> returns the array {{Code|["b", "c"]}}.|} ==array:put== {| width='100%'| width='120' | '''Signatures'''|{{Func|array:put|$array as array(*), $position as xs:integer, $member as item()*|array(*)}}|-| ''member1']Summary'''| Returns a copy of {{Code|$array}} with {{Code|$member}} replaced at the specified {{Code|$position}}. Equivalent to <code>$array => array:remove($position) => array:insert-before($position, $member)</code>.|-| '''Errors'''|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.|-| '''Examples'member2''|* <code>array:put(["a", "b", "c"], 2, "d")</code> returns the array {{Code|["member1a", "d", "member2c"]}}.
|}
{| width='100%'
| width='120' | '''Signatures'''
|{{Func|array:remove|$array as array(*), $position positions as xs:integer*|array(*)}}
|-
| '''Summary'''
| Returns a copy of {{Code|$array}} without the member at the specified {{Code|$positionpositions}}.
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}} {{Code|$A position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
|-
| '''Examples'''
| '''Examples'''
|The following query returns the array {{Code|[2, 3, 4, 5, 6]}}:
 <pre classsyntaxhighlight lang="brush:xquery">
array:for-each(
array { 1 to 5 },
function($i) { $i + 1}
)
</presyntaxhighlight>
|}
| '''Examples'''
|The following query returns the array {{Code|[0, 1, 3]}}:
<pre classsyntaxhighlight lang="brush:xquery">
array:filter(
array { 0, 1, -2, 3, -4 },
function($i) { $i > 0 }
)
</presyntaxhighlight>
|}
| '''Examples'''
|The following query returns {{Code|55}} (the sum of the integers 1 to 10):
<pre classsyntaxhighlight lang="brush:xquery">
array:fold-left(
array { 1 to 10 },
function($a, $b) { $a + $b }
)
</presyntaxhighlight>
|}
| '''Examples'''
|The following query is equivalent to the expression <code>array:reverse(array { 1 to 5 })</code>:
<pre classsyntaxhighlight lang="brush:xquery">
array {
array:fold-right(
)
}
</presyntaxhighlight>
|}
| '''Examples'''
|The following query returns the array {{Code|[5, 7, 9]}}:
<pre classsyntaxhighlight lang="brush:xquery">
array:for-each-pair(
array { 1 to 3 },
function($a + $b) { $a + $b }
)
</presyntaxhighlight>
|}
{| width='100%'
| width='120' | '''Signatures'''
|{{Func|array:sort|$array as array(*)|array(*)}}<br/>{{Func|array:sort|$array as array(*), $collation as xs:string?|array(*)}}<br/>{{Func|array:sort|$array as array(*), $collation as xs:string?, $key as function(item()*) as xs:anyAtomicType*|array(*)}}<br/>
|-
| '''Summary'''
| Returns a new array with sorted {{Code|$array}} members, using an optional {{Code|$collation}}. If a sort {{Code|$key}} function is givensupplied, it will be applied on all array members. The items of the resulting values will be sorted using the semantics of the {{Code|lt}} expression.
|-
| '''Examples'''
|
* <code>array:sort(array { reverse(1 to 3) })</code> returns <code>[1, 2, 3]</code>
* <code>array:sort([3, -2, 1], (), abs#1)</code> returns <code>[1, -2, 3]</code>* <code>array:sort([1,2,3], (), function($x) { -$x })</code> returns <code>[3, 2, 1]</code>* <code>array:sort((1, 'a'))</code> returns an error (strings and integers cannot be compared)|} ==array:serialize== {| width='100%'| width='120' | '''Signatures'''|{{Func|array:serialize|$input as array(*)|xs:string}}<br/>|-| '''Summary'''| This function is specific to BaseX. It returns a string representation of the supplied array. The purpose of this function is to get an insight into the structure of an array item; it cannot necessarily be used for reconstructing the original array.|-| '''Examples'''|* <code>array:serialize([ 1, (2, 3), 4 to 6 ])</code> returns <code>[1, (2, 3), (4, 5, 6)]</code>.
|}
|}
=Changelog= ;Version 8.6* Updated: [[Category#array:put|array:XQueryput]]collation argument was inserted between first and second argument.
=Changelog=;Version 8.5* Added: [[#array:put|array:put]] ;Version 8.4* Removed: array:serialize (use fn:serialize instead)
Introduced with Version 8.0.
 
[[Category:XQuery]]
administrator, Bureaucrats, editor, Interface administrators, reviewer, Administrators
401

edits

Navigation menu