declare function local:split($x as node()) as node() { let $name := $x/name/text() return let $child := for $p in $x/children/person return local:split($p) return if ($x/@gender = "M") then {$child/self::man} {$child/self::woman} else {$child/self::man} {$child/self::woman} } ; {for $p in input()/doc/person return local:split($p)}