Grouping by department
File: Data.xml <inventory id="inv0001" date="2008-12-19" loc="USA"> <car model="A" id="0001" quantity="1" color="navy"/> <car model="B" id="0002" quantity="1"/> <car model="B" id="0003" quantity="2"/> <car model="C" id="0004" quantity="1" color="white"/> <car model="A" id="0001" quantity="1" color="black"/> </inventory> File: Query.xquery for $d in distinct-values(doc("Data.xml")//car/@model) let $cars := doc("Data.xml")//car[@model = $d] order by $d return <department code="{$d}">{ for $i in $cars order by $i/@id return $i }</department> Output: <?xml version="1.0" encoding="UTF-8"?> <department code="A"> <car model="A" id="0001" quantity="1" color="navy"/> <car model="A" id="0001" quantity="1" color="black"/> </department> <department code="B"> <car model="B" id="0002" quantity="1"/> <car model="B" id="0003" quantity="2"/> </department> <department code="C"> <car model="C" id="0004" quantity="1" color="white"/> </department>