Outer join
File: Data.xml <order> <car model="A"> <id>0001</id> <name language="en">name 1</name> <colorChoices>navy black</colorChoices> </car> <car model="B"> <id>0002</id> <name language="en">name 2</name> </car> <car model="B"> <id>0003</id> <name language="en">name 3</name> </car> <car model="C"> <id>0004</id> <name language="en">name 4</name> <colorChoices>white gray</colorChoices> <desc>Our <i>favorite</i> shirt!</desc> </car> </order> File: prices.xml <prices> <priceList effDate="2006-11-15"> <prod id="0001"> <price currency="USD">29.99</price> <discount type="CLR">10.00</discount> </prod> <prod id="0002"> <price currency="USD">69.99</price> </prod> <prod id="0003"> <price currency="USD">39.99</price> <discount type="CLR">3.99</discount> </prod> </priceList> </prices> File: Query.xquery for $car in doc("Data.xml")//car return <car id="{$car/id}">{ attribute price {for $price in doc("prices.xml")//prices/priceList/prod where $car/id = $price/@id return $price/price} }</car>