 | xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request"; ← 1 declare namespace response="http://exist-db.org/xquery/response"; ← 2
declare function local:traverseParts($consist_of as element()*) as element()* { ← 3 for $item in $consist_of/parts let $parts := document("/db/inventory/parts.xml")/parts_list/parts[@id = $item/@id] ← 4 return if ($parts/consist_of/parts) then <parts id="{xs:string($parts/@id)}" name="{$parts/name/text()}"> {local:traverseParts($parts/consist_of)} ← 5 </parts> else <part id="{xs:string($parts/@id)}" name="{$parts/name/text()}"/> };
response:set-header("Content-Type", "text/xml"), ← 6 let $id := request:get-parameter("id", "") ← 7 let $product := document("/db/inventory/products.xml")/products/product[@id = $id] ← 8 return <product id="{xs:string($product/@id)}" name="{$product/name/text()}"> {local:traverseParts($product/consist_of)} ← 9 </product>
|  |