Difference between revisions of "Array Module"

From BaseX Documentation
Jump to navigation Jump to search
Line 12: Line 12:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:size|$input as array(*)|xs:integer}}
 
|{{Func|array:size|$input as array(*)|xs:integer}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns the number of members in {{Code|$array}}. Note that because an array is an item, the {{Code|fn:count}} function when applied to an array always returns {{Code|1}}.
 
| Returns the number of members in {{Code|$array}}. Note that because an array is an item, the {{Code|fn:count}} function when applied to an array always returns {{Code|1}}.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 27: Line 27:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:get|$array as array(*), $position as xs:integer|item()*}}
 
|{{Func|array:get|$array as array(*), $position as xs:integer|item()*}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns the {{Code|$array}} member at the specified {{Code|$position}}.  
 
| Returns the {{Code|$array}} member at the specified {{Code|$position}}.  
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 44: Line 44:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:append|$array as array(*), $member as item()*|array(*)}}
 
|{{Func|array:append|$array as array(*), $member as item()*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a copy of {{Code|$array}} with a new {{Code|$member}} attached.
 
| Returns a copy of {{Code|$array}} with a new {{Code|$member}} attached.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 58: Line 58:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:subarray|$array as array(*), $position as xs:integer|array(*)}}<br/>{{Func|array:subarray|$array as array(*), $position as xs:integer, $length as xs:integer|array(*)}}
 
|{{Func|array:subarray|$array as array(*), $position as xs:integer|array(*)}}<br/>{{Func|array:subarray|$array as array(*), $position as xs:integer, $length as xs:integer|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Constructs a new array with with {{Code|$length}} members of {{Code|$array}} beginning from the specified {{Code|$position}}.<br/>The two-argument version of the function returns the same result as the three-argument version when called with {{Code|$length}} equal to the value of {{Code|array:size($array) - $position + 1}}.
 
| Constructs a new array with with {{Code|$length}} members of {{Code|$array}} beginning from the specified {{Code|$position}}.<br/>The two-argument version of the function returns the same result as the three-argument version when called with {{Code|$length}} equal to the value of {{Code|array:size($array) - $position + 1}}.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''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.
 
|{{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.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 75: Line 75:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:put|$array as array(*), $position as xs:integer, $member as item()*|array(*)}}
 
|{{Func|array:put|$array as array(*), $position as xs:integer, $member as item()*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''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>.
 
| 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>.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 92: Line 92:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:remove|$array as array(*), $positions as xs:integer*|array(*)}}
 
|{{Func|array:remove|$array as array(*), $positions as xs:integer*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a copy of {{Code|$array}} without the member at the specified {{Code|$positions}}.
 
| Returns a copy of {{Code|$array}} without the member at the specified {{Code|$positions}}.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} A position is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
 
|{{Error|FOAY0001|#Errors}} A position is not in the range {{Code|1}} to {{Code|array:size($array)}} inclusive.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 109: Line 109:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:insert-before|$array as array(*), $position as xs:integer, $member as item()*|array(*)}}
 
|{{Func|array:insert-before|$array as array(*), $position as xs:integer, $member as item()*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a copy of {{Code|$array}} with one new {{Code|$member}} at the specified {{Code|$position}}. Setting {{Code|$position}} to the value {{Code|array:size($array) + 1}} yields the same result as {{Code|array:append($array, $insert)}}.
 
| Returns a copy of {{Code|$array}} with one new {{Code|$member}} at the specified {{Code|$position}}. Setting {{Code|$position}} to the value {{Code|array:size($array) + 1}} yields the same result as {{Code|array:append($array, $insert)}}.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array) + 1}} inclusive.
 
|{{Error|FOAY0001|#Errors}} {{Code|$position}} is not in the range {{Code|1}} to {{Code|array:size($array) + 1}} inclusive.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 126: Line 126:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:head|$array as array(*)|item()*}}
 
|{{Func|array:head|$array as array(*)|item()*}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns the first member of {{Code|$array}}. This function is equivalent to the expression {{Code|$array(1)}}.
 
| Returns the first member of {{Code|$array}}. This function is equivalent to the expression {{Code|$array(1)}}.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} The array is empty.
 
|{{Error|FOAY0001|#Errors}} The array is empty.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 144: Line 144:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:tail|$array as array(*)|array(*)}}
 
|{{Func|array:tail|$array as array(*)|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array with all members except the first from {{Code|$array}}. This function is equivalent to the expression {{Code|array:remove($array, 1)}}.
 
| Returns a new array with all members except the first from {{Code|$array}}. This function is equivalent to the expression {{Code|array:remove($array, 1)}}.
|-
+
|- valign="top"
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|FOAY0001|#Errors}} The array is empty.
 
|{{Error|FOAY0001|#Errors}} The array is empty.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 161: Line 161:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:reverse|$array as array(*)|array(*)}}
 
|{{Func|array:reverse|$array as array(*)|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array with all members of {{Code|$array}} in reverse order.
 
| Returns a new array with all members of {{Code|$array}} in reverse order.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 175: Line 175:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:join|$arrays as array(*)*|array(*)}}
 
|{{Func|array:join|$arrays as array(*)*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Concatenates the contents of several {{Code|$arrays}} into a single array.
 
| Concatenates the contents of several {{Code|$arrays}} into a single array.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 190: Line 190:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:flatten|$items as item()*|item()*}}
 
|{{Func|array:flatten|$items as item()*|item()*}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Recursively flattens all arrays that occur in the supplied {{Code|$items}}.
 
| Recursively flattens all arrays that occur in the supplied {{Code|$items}}.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 205: Line 205:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:for-each|$array as array(*), $function as function(item()*) as item()*|array(*)}}
 
|{{Func|array:for-each|$array as array(*), $function as function(item()*) as item()*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array, in which each member is computed by applying {{Code|$function}} to the corresponding member of {{Code|$array}}.
 
| Returns a new array, in which each member is computed by applying {{Code|$function}} to the corresponding member of {{Code|$array}}.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|The following query returns the array {{Code|[2, 3, 4, 5, 6]}}:
 
|The following query returns the array {{Code|[2, 3, 4, 5, 6]}}:
Line 225: Line 225:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:filter|$array as array(*), $function as function(item()*) as xs:boolean|array(*)}}
 
|{{Func|array:filter|$array as array(*), $function as function(item()*) as xs:boolean|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array with those members of {{Code|$array}} for which {{Code|$function}} returns {{Code|true}}.
 
| Returns a new array with those members of {{Code|$array}} for which {{Code|$function}} returns {{Code|true}}.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|The following query returns the array {{Code|[0, 1, 3]}}:
 
|The following query returns the array {{Code|[0, 1, 3]}}:
Line 244: Line 244:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:fold-left|$array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*|item()*}}
 
|{{Func|array:fold-left|$array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*|item()*}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from left to right and using {{Code|$zero}} as first argument.
 
| Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from left to right and using {{Code|$zero}} as first argument.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|The following query returns {{Code|55}} (the sum of the integers 1 to 10):
 
|The following query returns {{Code|55}} (the sum of the integers 1 to 10):
Line 264: Line 264:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:fold-right|$array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*|item()*}}
 
|{{Func|array:fold-right|$array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*|item()*}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from right to left and using {{Code|$zero}} as first argument.
 
| Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from right to left and using {{Code|$zero}} as first argument.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|The following query is equivalent to the expression <code>array:reverse(array { 1 to 5 })</code>:
 
|The following query is equivalent to the expression <code>array:reverse(array { 1 to 5 })</code>:
Line 286: Line 286:
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
 
|{{Func|array:for-each-pair|$array1 as array(*), $array2 as array(*), $function as function(item()*) as item()*|array(*)}}
 
|{{Func|array:for-each-pair|$array1 as array(*), $array2 as array(*), $function as function(item()*) as item()*|array(*)}}
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array obtained by evaluating the supplied {{Code|$function}} for each pair of members at the same position in {{Code|$array1}} and {{Code|$array2}}.
 
| Returns a new array obtained by evaluating the supplied {{Code|$function}} for each pair of members at the same position in {{Code|$array1}} and {{Code|$array2}}.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|The following query returns the array {{Code|[5, 7, 9]}}:
 
|The following query returns the array {{Code|[5, 7, 9]}}:
Line 306: Line 306:
 
| width='120' | '''Signatures'''
 
| 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/>
 
|{{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/>
|-
+
|- valign="top"
 
| '''Summary'''
 
| '''Summary'''
 
| Returns a new array with sorted {{Code|$array}} members, using an optional {{Code|$collation}}. If a {{Code|$key}} function is supplied, 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.
 
| Returns a new array with sorted {{Code|$array}} members, using an optional {{Code|$collation}}. If a {{Code|$key}} function is supplied, 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.
|-
+
|- valign="top"
 
| '''Examples'''
 
| '''Examples'''
 
|
 
|
Line 323: Line 323:
 
! width="110"|Code
 
! width="110"|Code
 
|Description
 
|Description
|-
+
|- valign="top"
 
|{{Code|FOAY0001}}
 
|{{Code|FOAY0001}}
 
|The specified index extends beyonds the bounds of an array.
 
|The specified index extends beyonds the bounds of an array.
|-
+
|- valign="top"
 
|{{Code|FOAY0002}}
 
|{{Code|FOAY0002}}
 
|The specified length is less than zero.
 
|The specified length is less than zero.

Revision as of 14:16, 20 July 2022

This XQuery Module contains functions for manipulating arrays, which has been introduced with XQuery 3.1.

Conventions

All functions and errors in this module are assigned to the http://www.w3.org/2005/xpath-functions/array namespace, which is statically bound to the array prefix.

Functions

array:size

Signatures array:size($input as array(*)) as xs:integer
Summary Returns the number of members in $array. Note that because an array is an item, the fn:count function when applied to an array always returns 1.
Examples
  • array:size(array { 1 to 10 }) returns 10.
  • array:size([1 to 10]) returns 1, because the array contains a single sequence with 10 integers.

array:get

Signatures array:get($array as array(*), $position as xs:integer) as item()*
Summary Returns the $array member at the specified $position.
Errors FOAY0001: $position is not in the range 1 to array:size($array) inclusive.
Examples
  • array:get(array { reverse(1 to 5) }, 5) returns the value 1.

array:append

Signatures array:append($array as array(*), $member as item()*) as array(*)
Summary Returns a copy of $array with a new $member attached.
Examples
  • array:append([], 'member1') returns the array ["member1"].

array:subarray

Signatures array:subarray($array as array(*), $position as xs:integer) as array(*)
array:subarray($array as array(*), $position as xs:integer, $length as xs:integer) as array(*)
Summary Constructs a new array with with $length members of $array beginning from the specified $position.
The two-argument version of the function returns the same result as the three-argument version when called with $length equal to the value of array:size($array) - $position + 1.
Errors FOAY0001: $position is less than one, or if $position + $length is greater than array:size($array) + 1.
FOAY0002: $length is less than zero.
Examples
  • array:subarray(["a", "b", "c"], 2) returns the array ["b", "c"].

array:put

Signatures array:put($array as array(*), $position as xs:integer, $member as item()*) as array(*)
Summary Returns a copy of $array with $member replaced at the specified $position. Equivalent to $array => array:remove($position) => array:insert-before($position, $member).
Errors FOAY0001: $position is not in the range 1 to array:size($array) inclusive.
Examples
  • array:put(["a", "b", "c"], 2, "d") returns the array ["a", "d", "c"].

array:remove

Signatures array:remove($array as array(*), $positions as xs:integer*) as array(*)
Summary Returns a copy of $array without the member at the specified $positions.
Errors FOAY0001: A position is not in the range 1 to array:size($array) inclusive.
Examples
  • array:append(["a"], 1) returns the array [].

array:insert-before

Signatures array:insert-before($array as array(*), $position as xs:integer, $member as item()*) as array(*)
Summary Returns a copy of $array with one new $member at the specified $position. Setting $position to the value array:size($array) + 1 yields the same result as array:append($array, $insert).
Errors FOAY0001: $position is not in the range 1 to array:size($array) + 1 inclusive.
Examples
  • array:insert-before(["a"], 1, "b") returns the array ["b", "a"].

array:head

Signatures array:head($array as array(*)) as item()*
Summary Returns the first member of $array. This function is equivalent to the expression $array(1).
Errors FOAY0001: The array is empty.
Examples
  • array:head(["a", "b"]) returns "a".
  • array:head([["a", "b"], ["c", "d"]]) returns the array ["a", "b"].

array:tail

Signatures array:tail($array as array(*)) as array(*)
Summary Returns a new array with all members except the first from $array. This function is equivalent to the expression array:remove($array, 1).
Errors FOAY0001: The array is empty.
Examples
  • array:insert-before(["a"], 1, "b") returns the array ["b", "a"].

array:reverse

Signatures array:reverse($array as array(*)) as array(*)
Summary Returns a new array with all members of $array in reverse order.
Examples
  • array:reverse(array { 1 to 3 }) returns the array [3, 2, 1].

array:join

Signatures array:join($arrays as array(*)*) as array(*)
Summary Concatenates the contents of several $arrays into a single array.
Examples
  • array:join(()) returns the array [].
  • array:join((1 to 3) ! array { . }) returns the array [1, 2, 3].

array:flatten

Signatures array:flatten($items as item()*) as item()*
Summary Recursively flattens all arrays that occur in the supplied $items.
Examples
  • array:flatten(["a","b"]) returns the sequence "a", "b".
  • array:flatten([1,[2,3],4]]) returns the sequence 1, 2, 3, 4.

array:for-each

Signatures array:for-each($array as array(*), $function as function(item()*) as item()*) as array(*)
Summary Returns a new array, in which each member is computed by applying $function to the corresponding member of $array.
Examples The following query returns the array [2, 3, 4, 5, 6]:

<syntaxhighlight lang="xquery"> array:for-each(

 array { 1 to 5 },
 function($i) { $i + 1}

) </syntaxhighlight>

array:filter

Signatures array:filter($array as array(*), $function as function(item()*) as xs:boolean) as array(*)
Summary Returns a new array with those members of $array for which $function returns true.
Examples The following query returns the array [0, 1, 3]:

<syntaxhighlight lang="xquery"> array:filter(

 array { 0, 1, -2, 3, -4 },
 function($i) { $i > 0 }

) </syntaxhighlight>

array:fold-left

Signatures array:fold-left($array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*) as item()*
Summary Evaluates the supplied $function cumulatively on successive members of the supplied $array from left to right and using $zero as first argument.
Examples The following query returns 55 (the sum of the integers 1 to 10):

<syntaxhighlight lang="xquery"> array:fold-left(

 array { 1 to 10 },
 0,
 function($a, $b) { $a + $b }

) </syntaxhighlight>

array:fold-right

Signatures array:fold-right($array as array(*), $zero as item()*, $function as function(item()*, item()*) as item()*) as item()*
Summary Evaluates the supplied $function cumulatively on successive members of the supplied $array from right to left and using $zero as first argument.
Examples The following query is equivalent to the expression array:reverse(array { 1 to 5 }):

<syntaxhighlight lang="xquery"> array {

 array:fold-right(
   array { 1 to 5 },
   (),
   function($a, $b) { $b, $a }
 )

} </syntaxhighlight>

array:for-each-pair

Signatures array:for-each-pair($array1 as array(*), $array2 as array(*), $function as function(item()*) as item()*) as array(*)
Summary Returns a new array obtained by evaluating the supplied $function for each pair of members at the same position in $array1 and $array2.
Examples The following query returns the array [5, 7, 9]:

<syntaxhighlight lang="xquery"> array:for-each-pair(

 array { 1 to 3 },
 array { 4 to 6 },
 function($a + $b) { $a + $b }

) </syntaxhighlight>

array:sort

Signatures array:sort($array as array(*)) as array(*)
array:sort($array as array(*), $collation as xs:string?) as array(*)
array:sort($array as array(*), $collation as xs:string?, $key as function(item()*) as xs:anyAtomicType*) as array(*)
Summary Returns a new array with sorted $array members, using an optional $collation. If a $key function is supplied, it will be applied on all array members. The items of the resulting values will be sorted using the semantics of the lt expression.
Examples
  • array:sort(array { reverse(1 to 3) }) returns [1, 2, 3]
  • array:sort([3,-2,1], (), abs#1) returns [1, -2, 3]
  • array:sort([1,2,3], (), function($x) { -$x }) returns [3, 2, 1]
  • array:sort((1,'a')) returns an error (strings and integers cannot be compared)

Errors

Code Description
FOAY0001 The specified index extends beyonds the bounds of an array.
FOAY0002 The specified length is less than zero.

Changelog

Version 8.6
  • Updated: array:put collation argument was inserted between first and second argument.
Version 8.5
Version 8.4
  • Removed: array:serialize (use fn:serialize instead)

Introduced with Version 8.0.