declare namespace rcp = "http://www.brics.dk/ixwt/recipes"; declare function local:ingredients($i,$p) { fn:string-join( for $j in $i/rcp:ingredient return fn:string-join( ($p,$j/@name," ", local:ingredients($j,fn:concat($p," "))), ""), "") }; declare function local:recipes($r) { fn:concat($r/rcp:title/text()," ", local:ingredients($r," ")) }; fn:string-join( for $r in fn:doc("http://www.brics.dk/ixwt/recipes/recipes.xml") //rcp:recipe[5] return local:recipes($r), "" )