XML/XQuery/where

Материал из Web эксперт
Версия от 11:25, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

A where clause with multiple expressions

   <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>
 <car model="C">
   <id>0004</id>
   <name language="en">name 4</name>
 </car>

</order>

File: Query.xquery for $prod in doc("Data.xml")//car let $prodmodel := $prod/@model where $prod/id > 100

     and starts-with($prod/name, "F")
     and exists($prod/colorChoices)
     and ($prodmodel = "B" or $prodmodel = "A")

return $prod

</source>
   
  


Embedding the where clause

   <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>
 <car model="C">
   <id>0004</id>
   <name language="en">name 4</name>
 </car>

</order>

File: Query.xquery let $sortedProds := for $prod in doc("Data.xml")//car

                   where $prod/@model = "B" or $prod/@model = "C"
                   order by $prod/name
                   return $prod

for $sortedProd at $count in $sortedProds

return

{$count}. {data($sortedProd/name)}

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

1. name 2

2. name 3

3. name 4

</source>
   
  


where with or operator

   <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")//car let $prodmodel := $prod/@model where $prodmodel = "B" or $prodmodel = "A" return $prod/name Output: <?xml version="1.0" encoding="UTF-8"?> <name language="en">name 1</name> <name language="en">name 2</name> <name language="en">name 3</name>

</source>