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