XML/XQuery/return
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>