Like all other expressions, FLWOR expressions can be composed. In the following examples, a FLWOR is nested in a function call, nested in a FLWOR, nested in an array constructor:
Example 136. Nested FLWORs
[
for $c in collection("captains")
where exists(for $m in collection("movies")
where some $moviecaptain in let $captain := $m.captain
return typeswitch ($captain)
case array return $captain()
default return $captain
satisfies
$moviecaptain eq $c.name
return $m)
return $c.name
]
Result (run with Zorba): [ "James T. Kirk", "Jean-Luc Picard" ]