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