declare function libjn:descendant-objects($sequence as item()*) as object()*
{
for $item in $sequence
return typeswitch ($item)
case object() return (
$item,
libjn:descendant-objects(libjn:values($item))
)
case array() return
libjn:descendant-objects($item())
default return ()
};
libjn:descendant-objects(
(
{ "foo" : { "bar" : [ 1, 2 ] } },
[ [ { "foo" : "bar", "bar" : "foo" } ] ],
true(),
1,
jn:null()
)
)
{ "foo" : { "bar" : [ 1, 2 ] } }
{ "bar" : [ 1, 2 ] }
{ "foo" : "bar", "bar" : "foo" }