Difference between revisions of "Array Module"
Jump to navigation
Jump to search
Line 9: | Line 9: | ||
==array:size== | ==array:size== | ||
+ | |||
{| width='100%' | {| width='100%' | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
Line 23: | Line 24: | ||
==array:append== | ==array:append== | ||
+ | |||
{| width='100%' | {| width='100%' | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
Line 102: | Line 104: | ||
* <code>array:head(["a", "b"])</code> returns {{Code|"a"}}. | * <code>array:head(["a", "b"])</code> returns {{Code|"a"}}. | ||
* <code>array:head([["a", "b"], ["c", "d"]])</code> returns the array {{Code|["a", "b"]}}. | * <code>array:head([["a", "b"], ["c", "d"]])</code> returns the array {{Code|["a", "b"]}}. | ||
+ | |} | ||
+ | |||
+ | ==array:tail== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:tail|$array as array(*)|array(*)}} | ||
+ | |- | ||
+ | | '''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)}}. | ||
+ | |- | ||
+ | | '''Errors''' | ||
+ | |{{Error|FOAY0001|#Errors}}: The array is empty. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | | | ||
+ | * <code>array:insert-before(["a"], 1, "b")</code> returns the array {{Code|["b", "a"]}}. | ||
+ | |} | ||
+ | |||
+ | ==array:reverse== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:reverse|$array as array(*)|array(*)}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Returns a new array with all members of {{Code|$array}} in reverse order. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | | | ||
+ | * <code>array:reverse(array { 1 to 3 })</code> returns the array {{Code|[3, 2, 1]}}. | ||
+ | |} | ||
+ | |||
+ | ==array:join== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:join|$arrays as array(*)*|array(*)}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Concatenates the contents of several {{Code|$arrays}} into a single array. | ||
+ | |- | ||
+ | | '''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:for-each-member== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:for-each-member|$array as array(*), $function as function(item()*) as item()*|array(*)}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Returns a new array, in which each member is computed by applying {{Code|$function}} to the corresponding member of {{Code|$array}}. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | |The following query returns the array {{Code|[2, 3, 4, 5, 6]}}: | ||
+ | <pre class="brush:xquery"> | ||
+ | array:for-each-member( | ||
+ | array { 1 to 5 }, | ||
+ | function($i) { $i + 1} | ||
+ | ) | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | ==array:filter== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:filter|$array as array(*), $function as function(item()*) as xs:boolean|array(*)}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Returns a new array with those members of {{$array}} for which {{Code|$function}} returns {{Code|true}}. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | |The following query returns the array {{Code|[0, 1, 3]}}: | ||
+ | <pre class="brush:xquery"> | ||
+ | array:filter( | ||
+ | array { 0, 1, -2, 3, -4 }, | ||
+ | function($i) { $i > 0 } | ||
+ | ) | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | ==array:fold-left== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:fold-left|$array as array(*), $function as function(item()*, item()*) as item()*|item()*}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from left to right. | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | ==array:fold-right== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:fold-left|$array as array(*), $function as function(item()*, item()*) as item()*|item()*}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | | Evaluates the supplied {{Code|$function}} cumulatively on successive members of the supplied {{Code|$array}} from right to left. | ||
+ | </pre> | ||
+ | |} | ||
+ | |||
+ | ==array:for-each-pair== | ||
+ | |||
+ | {| width='100%' | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|array:for-each-pair|$array1 as array(*), $array2 as array(*), $function as function(item()*) as item()*|array(*)}} | ||
+ | |- | ||
+ | | '''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}}. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | |The following query returns the array {{Code|[5, 7, 9]}}: | ||
+ | <pre class="brush:xquery"> | ||
+ | array:for-each-pair( | ||
+ | array { 1 to 3 }, | ||
+ | array { 4 to 6 }, | ||
+ | function($a + $b) { $a + $b } | ||
+ | ) | ||
+ | </pre> | ||
|} | |} | ||
Revision as of 21:38, 9 August 2014
This XQuery Module contains functions for manipulating arrays, which will officially be introduced with XQuery 3.1.
Please note that the functions are subject to change until the specification has reached its final stage.
Contents
Conventions
All functions 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 the supplied array. Note that because an array is an item, the fn:count function when applied to an array always returns 1 .
|
Examples |
|
array:append
Signatures | array:append($array as array(*), $insert as item()*) as array(*)
|
Summary | Adds one member at the end of the array. The result is an array whose size is array:size($array) + 1 , in which all members in positions 1 to array:size($array) are the same as the members in the corresponding position of $array, and the member in position array:size($array) + 1 is $insert .
|
Examples |
|
array:subarray
Signatures | array:subarray($array as array(*), $start as xs:integer) as array(*) array:subarray($array as array(*), $start as xs:integer, $length as xs:integer) as array(*)
|
Summary | Gets an array containing all members from a supplied array starting at a supplied position, up to a specified length. 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) - $start + 1 .
|
Errors | FOAY0001 :: $start is less than one, or if $start + $length is greater than array:size($array) + 1 .FOAY0002 :: $length is less than zero.
|
Examples |
|
array:remove
Signatures | array:remove($array as array(*), $index as xs:integer) as array(*)
|
Summary | Constructs a new array without the member at the specified $index .
|
Errors | FOAY0001 :: $index is not in the range 1 to array:size($array) inclusive.
|
Examples |
|
array:insert-before
Signatures | array:insert-before($array as array(*), $index as xs:integer, $insert as item()*) as array(*)
|
Summary | Constructs a new array by adding one new member at a specified position. Setting $index to the value array:size($array) + 1 delivers the same result as array:append($array, $insert) .
|
Errors | FOAY0001 :: $index is not in the range 1 to array:size($array) + 1 inclusive.
|
Examples |
|
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: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:reverse
Signatures | array:reverse($array as array(*)) as array(*)
|
Summary | Returns a new array with all members of $array in reverse order.
|
Examples |
|
array:join
Signatures | array:join($arrays as array(*)*) as array(*)
|
Summary | Concatenates the contents of several $arrays into a single array.
|
Examples |
|
array:for-each-member
Signatures | array:for-each-member($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] :
array:for-each-member( array { 1 to 5 }, function($i) { $i + 1} ) |
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 Template:$array for which $function returns true .
|
Examples | The following query returns the array [0, 1, 3] :
array:filter( array { 0, 1, -2, 3, -4 }, function($i) { $i > 0 } ) |
array:fold-left
Signatures | array:fold-left($array as array(*), $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.
|
array:fold-right
Signatures | array:fold-left($array as array(*), $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.
|
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] :
array:for-each-pair( array { 1 to 3 }, array { 4 to 6 }, function($a + $b) { $a + $b } ) |
array:serialize
Signatures | map:serialize($input as map(*)) as xs:string |
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 |
|
Errors
Code | Description |
---|---|
FOAY0001
|
The specified index extends beyonds the bounds of an array. |
FOAY0002
|
The specified length is less than zero. |
Changelog
Introduced with Version 8.0.