This function returns all descendant pairs within the supplied items.
declare function descendant-pairs($seq as item*) { for $i in $seq return typeswitch ($i) case object return for $k in keys($o) let $v := $o.$k return ({ $k : $v }, descendant-pairs($v)) case array return descendant-pairs($i[]) default return () };
Example 187. Accessing all descendant pairs
let $o := { "first" : 1, "second" : { "first" : "a", "second" : "b" } } return descendant-pairs($o)
Result (run with Zorba): An error was raised: "descendant-pairs": function with arity 1 not declared