XPath/XQuery remove function

Summary

Returns an array containing all the members of the supplied array, except for the members at specified positions.

Signature

array:remove(
$array as array(*),
$positions as xs:integer*
) as array(*)

Properties

This function is deterministic, context-independent, and focus-independent.

Rules

The function returns an array of size array:size($array) - fn:count(fn:distinct-values($positions)) containing all members from $array except the members whose position (counting from 1) is present in the sequence $positions. The order of the remaining members is preserved.

The result of the function, except in error cases, is given by the expression array:join(for $i in (1 to array:size($array))[not(. = $positions)] return [$array($i)])

Examples

The expression array:remove(["a", "b", "c", "d"], 1) returns ["b", "c", "d"].

The expression array:remove(["a", "b", "c", "d"], 2) returns ["a", "c", "d" ].

The expression array:remove(["a"], 1) returns [ ].

The expression array:remove(["a", "b", "c", "d"], 1 to 3) returns ["d"].

The expression array:remove(["a", "b", "c", "d"], ()) returns ["a", "b", "c", "d"].

Error Conditions

A dynamic error is raised if any integer in $positions is not in the range 1 to array:size($array) inclusive. By implication, an error occurs if $array is empty, unless $positions is also empty.