XML/XQuery/return

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

Return a if statement

File: Data.xml

<?xml version="1.0"?>
<bib>
  <book year="1988">
    <title>title 1</title>
    <author>
      <last>A</last>
      <first>B</first>
    </author>
    <author>
      <last>C</last>
      <first>D</first>
    </author>
  </book>
  <book year="2004">
    <title>title 2</title>
    <author>
      <last>E</last>
      <first>F</first>
    </author>
  </book>
</bib>

File: Query.xquery
<MultiAuthor>
{for $book in doc("Data.xml")/bib/book
return  if (count($book/author) gt 2)
  then <book>
        <title>{$book/title/text()}</title>
        <idOfAuthors>{count($book/author)}</idOfAuthors>
       </book>
  else ()
}
</MultiAuthor>

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



Return element statement

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    $car in doc("Data.xml")//car
return <car>
         <id>{$car/id}</id>
         <price>{for    $price in doc("Data.xml")//prod
                 where  $car/id = $price/@id
                 return $price/price}</price>
       </car>
Output:
<?xml version="1.0" encoding="UTF-8"?>
<car>
   <id>
      <id>0001</id>
   </id>
   <price/>
</car>
<car>
   <id>
      <id>0002</id>
   </id>
   <price/>
</car>
<car>
   <id>
      <id>0003</id>
   </id>
   <price/>
</car>