Changes

Jump to navigation Jump to search
804 bytes added ,  10:39, 27 September 2018
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.
|}
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}}: {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
|-
| '''Examples'''
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}}: {{Code|$position}} is less than one, or if {{Code|$position + $length}} is greater than {{Code|array:size($array) + 1}}.<br/>{{Error|FOAY0002|#Errors}}: {{Code|$length}} is less than zero.
|-
| '''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'''
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}}: {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array) + 1}} inclusive.
|-
| '''Examples'''
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}}: The array is empty.
|-
| '''Examples'''
|-
| '''Errors'''
|{{Error|FOAY0001|#Errors}}: The array is empty.
|-
| '''Examples'''
* <code>array:join(())</code> returns the array {{Code|[]}}.
* <code>array:join((1 to 3) ! array { . })</code> returns the array {{Code|[1, 2, 3]}}.
|}
 
==array:flatten==
 
{| width='100%'
| width='120' | '''Signatures'''
|{{Func|array:flatten|$items as item()*|item()*}}
|-
| '''Summary'''
| Recursively flattens all arrays that occur in the supplied {{Code|$items}}.
|-
| '''Examples'''
|
* <code>array:flatten(["a","b"])</code> returns the sequence {{Code|"a", "b"}}.
* <code>array:flatten([1,[2,3],4]])</code> returns the sequence {{Code|1, 2, 3, 4}}.
|}
|-
| '''Summary'''
| Returns a new array with those members of {{Code|$array}} for which {{Code|$function}} returns {{Code|true}}.
|-
| '''Examples'''
{| width='100%'
| width='120' | '''Signatures'''
|{{Func|array:sort|$array as array(*)|array(*)}}<br/>{{Func|array:sort|$array as array(*), $key as function(item()*) collation as xs:anyAtomicType*)string?|array(*)}}<br/>|-| '''Summary'''| Returns a new array with sorted {{CodeFunc|$array}} members. If a :sort {{Code|$key}} function is given, 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(as 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$collation as xs:sort([1,2,3]string?, $key as function($xitem() { -$x })</code> returns <code>[3, 2, 1]</code>* <code>array:sort((1, 'a'))</code> returns an error (strings and integers cannot be compared).|} ==arrayas xs:serialize== {| width='100%'| width='120' | '''Signatures'''|{{FuncanyAtomicType*|array:serialize|$input as array(*)|xs:string}}<br/>
|-
| '''Summary'''
| This Returns a new array with sorted {{Code|$array}} members, using an optional {{Code|$collation}}. If a {{Code|$key}} function is specific to BaseX. It returns a string representation of the supplied , it will be applied on all arraymembers. The purpose items of this function is to get an insight into the structure resulting values will be sorted using the semantics of an array item; it cannot necessarily be used for reconstructing the original array{{Code|lt}} expression.
|-
| '''Examples'''
|
* <code>array:serializesort(array { reverse(1 to 3) })</code> returns <code>[ 1, 2, 3]</code>* <code>array:sort([3,-2, 31], (), 4 to 6 ]abs#1)</code> returns <code>[1, -2, 3]</code>* <code>array:sort([1,2, 3], (), function(4$x) { -$x })</code> returns <code>[3, 52, 61]</code>* <code>array:sort((1,'a'))]</code>.returns an error (strings and integers cannot be compared)
|}
|}
[[Category:XQuery]]=Changelog=
=Changelog=;Version 8.6* Updated: [[#array:sort|array:put]] collation argument was inserted between first and second argument. ;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]]
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu