XML/XQuery/group — различия между версиями

Материал из Web эксперт
Перейти к: навигация, поиск
 
м (1 версия)
 
(нет различий)

Текущая версия на 11:25, 26 мая 2010

Grouping by department

   <source lang="xml">

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>

</source>
   
  


Grouping in XQuery

   <source lang="xml">

File: Data.xml

<order>

 <car dept="A">
   <number>1</number>
   <name>name 1</name>
 </car>
 <car dept="B">
   <number>2</number>
   <name>name 2</name>
 </car>
 <car dept="B">
   <number>3</number>
   <name>name 3</name>
 </car>
 <car dept="C">
   <number>4</number>
   <name>name 4</name>
 </car>

</order>

File: Query.xquery for $d in distinct-values(doc("Data.xml")//car/@dept) return

 <result dept="{$d}" 
         count="{count(doc("Data.xml")//car[@dept = $d])}"/>

Output: <?xml version="1.0" encoding="UTF-8"?> <result count="1" dept="A"/> <result count="2" dept="B"/> <result count="1" dept="C"/>

</source>