XML/XQuery/output

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

Adding an attribute to an element

   <source lang="xml">

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>

</order> File: Query.xquery for $prod in doc("Data.xml")/order/car[@model = "ACC"] return <car id="P{$prod/id}">

         {$prod/(@*, *)}
      </car>
      
     
</source>
   
  


Adding attributes to results

   <source lang="xml">

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>
 </car>

</order> File: Query.xquery

    { for $car in doc("Data.xml")/order/car where $car/@model="A" order by $car/name return
  • {data($car/name)}
  • }

Output: <?xml version="1.0" encoding="UTF-8"?>

  • name 1
</source>
   
  


Constructing elements using XML-like syntax

   <source lang="xml">

File: Data.xml <order>

 <car model="A">
   <id>0001</id>
   <name language="en">name 1</name>
 </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>

</order> File: Query.xquery <html>

car order

    { for $prod in doc("Data.xml")/order/car return
  • id: {data($prod/id)}, name: {data($prod/name)}
  • }

</html> Output: <?xml version="1.0" encoding="UTF-8"?> <html>

car order

  • id: 0001, name: name 1
  • id: 0002, name: name 2
  • id: 0003, name: name 3

</html>

</source>
   
  


Removing a child from an element

   <source lang="xml">

File: Data.xml <order>

 <car model="A">
   <id>0001</id>
   <name language="en">name 1</name>
 </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>

</order>

File: Query.xquery for $prod in doc("Data.xml")/order/car[@model = "ACC"] return <car>

         {$prod/(@*, * except id)}
      </car>
</source>
   
  


Turning content into markup

   <source lang="xml">

File: Data.xml <order>

 <car model="A">
   <id>0001</id>
   <name language="en">name 1</name>
 </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>

</order> File: Query.xquery for $model in distinct-values(doc("Data.xml")/order/car/@model) return element {$model}

              {doc("Data.xml")/order/car[@model = $model]/name}

Output: <?xml version="1.0" encoding="UTF-8"?> <A>

  <name language="en">name 1</name>

</A>

  <name language="en">name 2</name>
  <name language="en">name 3</name>

</source>
   
  


Wrapping results in a new element

   <source lang="xml">

File: Data.xml <order>

 <car model="ACC">
   <id>0001</id>
   <name language="en">name 1</name>
 </car>
 <car model="BCC">
   <id>0002</id>
   <name language="en">name 2</name>
 </car>
 <car model="BCC">
   <id>0003</id>
   <name language="en">name 3</name>
 </car>

</order> File: Query.xquery

    { for $car in doc("Data.xml")/order/car where $car/@model="ACC" order by $car/name return $car/name }

Output: <?xml version="1.0" encoding="UTF-8"?>

    <name language="en">name 1</name>
</source>