Reputation: 1336
I'm very new to xQuery and I've to write the query to do the following;
Display books and articles sorted by year.
I tried the following;
for $b in doc("myDB.xml")/myDB
order by $b/book/year, $b/article/year
return $b/book, $b/article
or
for $b in doc("myDB.xml")/myDB
order by $b//year
return $b/book, $b/article
and it's not sorting anything.
XML is;
<myDB>
<book>
<title>ebXML : Concepts and Application</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<year>2003</year>
<publisher>Wiley</publisher>
</book>
<article>
<title>test title</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<year>2003</year>
<publisher>test Wiley</publisher>
</article>
<book>
<title>XML: Visual QuickStart Guide</title>
<author>
<last_name>Goldberg</last_name>
<first_name>Kevin</first_name>
</author>
<author>
<last_name>Doe</last_name>
<first_name>John</first_name>
</author>
<year>2008</year>
<publisher>Peachpit Press</publisher>
</book>
<book>
<title>Beginning XML</title>
<author>
<last_name>Hunter</last_name>
<first_name>David</first_name>
</author>
<year>2007</year>
<publisher>Wrox</publisher>
</book>
<book>
<title>Learning XML </title>
<author>
<last_name>Ray</last_name>
<first_name>Erik</first_name>
</author>
<author>
<last_name>Smith</last_name>
<first_name>David</first_name>
</author>
<year>2003</year>
<publisher>O'Reilly</publisher>
</book>
<book>
<title>Professional XML</title>
<author>
<last_name>Evjen</last_name>
<first_name>Bill</first_name>
</author>
<year>2007</year>
<publisher>Wrox</publisher>
</book>
<article>
<title>FileNet Integrates a New XML Editor for Non-Techies</title>
<author>
<last_name>Roe</last_name>
<first_name>David</first_name>
</author>
<journal>CMS Wire</journal>
<year>2009</year>
</article>
<article>
<title>The Groundbreaking Potential of Codeless Ajax</title>
<author>
<last_name>Dusoe</last_name>
<first_name>Jim</first_name>
</author>
<journal>Tech News World</journal>
<year>2009</year>
<pages>4</pages>
</article>
<article>
<title>Windows and .NET Watch: Recognizing DSL opportunities</title>
<author>
<last_name>O'Brien</last_name>
<first_name>Larry</first_name>
</author>
<journal>Software Development Times</journal>
<year>2009</year>
</article>
<article>
<title>An embedded XML Database: Oracle Berkeley DB XML</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<journal>The Register</journal>
<year>2003</year>
<pages>8</pages>
</article>
<article>
<title>Open Source PostgreSQL 8.3 Better Suited For Web Applications </title>
<author>
<last_name>Babcock</last_name>
<first_name>Charles</first_name>
</author>
<journal>Information Week</journal>
<year>2008</year>
<pages>1</pages>
</article>
</myDB>
The output is the whole xml itself followed by the books and articles elements in the original order.
Do I really need a FOR for that? Can anybody help?
Upvotes: 0
Views: 619
Reputation: 3138
Check this one:
let $doc := doc("Your.xml)/myDB
for $eachBook in $doc/child::*
order by $eachBook/year
return $eachBook
OUTPUT:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>ebXML : Concepts and Application</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<year>2003</year>
<publisher>Wiley</publisher>
</book>
<article>
<title>test title</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<year>2003</year>
<publisher>test Wiley</publisher>
</article>
<book>
<title>Learning XML </title>
<author>
<last_name>Ray</last_name>
<first_name>Erik</first_name>
</author>
<author>
<last_name>Smith</last_name>
<first_name>David</first_name>
</author>
<year>2003</year>
<publisher>O'Reilly</publisher>
</book>
<article>
<title>An embedded XML Database: Oracle Berkeley DB XML</title>
<author>
<last_name>Gibb</last_name>
<first_name>Brian</first_name>
</author>
<journal>The Register</journal>
<year>2003</year>
<pages>8</pages>
</article>
<book>
<title>Beginning XML</title>
<author>
<last_name>Hunter</last_name>
<first_name>David</first_name>
</author>
<year>2007</year>
<publisher>Wrox</publisher>
</book>
<book>
<title>Professional XML</title>
<author>
<last_name>Evjen</last_name>
<first_name>Bill</first_name>
</author>
<year>2007</year>
<publisher>Wrox</publisher>
</book>
<book>
<title>XML: Visual QuickStart Guide</title>
<author>
<last_name>Goldberg</last_name>
<first_name>Kevin</first_name>
</author>
<author>
<last_name>Doe</last_name>
<first_name>John</first_name>
</author>
<year>2008</year>
<publisher>Peachpit Press</publisher>
</book>
<article>
<title>Open Source PostgreSQL 8.3 Better Suited For Web Applications </title>
<author>
<last_name>Babcock</last_name>
<first_name>Charles</first_name>
</author>
<journal>Information Week</journal>
<year>2008</year>
<pages>1</pages>
</article>
<article>
<title>FileNet Integrates a New XML Editor for Non-Techies</title>
<author>
<last_name>Roe</last_name>
<first_name>David</first_name>
</author>
<journal>CMS Wire</journal>
<year>2009</year>
</article>
<article>
<title>The Groundbreaking Potential of Codeless Ajax</title>
<author>
<last_name>Dusoe</last_name>
<first_name>Jim</first_name>
</author>
<journal>Tech News World</journal>
<year>2009</year>
<pages>4</pages>
</article>
<article>
<title>Windows and .NET Watch: Recognizing DSL opportunities</title>
<author>
<last_name>O'Brien</last_name>
<first_name>Larry</first_name>
</author>
<journal>Software Development Times</journal>
<year>2009</year>
</article>
Upvotes: 1