This function iterates on the input sequence. It removes the pairs with the given keys from all objects and leaves non-objects intact.
declare function remove-keys($seq as item*, $keys as string*) as item*
{
for $item in $seq
return typeswitch ($item)
case $object as object return
{|
for $key in keys($object)
where every $to-remove in $keys satisfies $to-remove ne $key
let $value := $object.$key
return { $key : $value }
|}
default return $item
};
Example 190. Removing keys from an object (not implemented yet)
let $o := {
"Captain" : "Kirk",
"First Officer" : "Spock",
"Engineer" : "Scott"
}
return remove-keys($o, ("Captain", "First Officer"))
Result (run with Zorba): An error was raised: "remove-keys": function with arity 2 not declared