Mega Code Archive

 
Categories / XML / Xquery
 

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>