XQuery Adding Elements and Attributes
- Previous Page XQuery Syntax
- Next Page XQuery Selection
XML Sample Document
We will continue to use this "books.xml" document in the following examples (the same XML file used in the previous chapters).
Add elements and attributes to the result
As seen in the previous section, we can reference elements and attributes from the input file in the result:
for $x in doc("books.xml")/bookstore/book/title order by $x return $x
The above XQuery expression references the title element and the lang attribute in the result, like this:
<title lang="en">Everyday Italian</title> <title lang="en">Harry Potter</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
The way the above XQuery expression returns the title element is the same as how it is described in the input document.
Now we want to add our own elements and attributes to the result!
Add HTML elements and text
Now, we want to add HTML elements to the result. We will put the results in an HTML list:
<html> <body> <h1>Bookstore</h1> <ul> { for $x in doc("books.xml")/bookstore/book order by $x/title return <li>{data($x/title)}. Category: {data($x/@category)}</li> } </ul> </body> </html>
The above XQuery expression will generate the following result:
<html> <body> <h1>Bookstore</h1> <ul> <li>Everyday Italian. Category: COOKING</li> <li>Harry Potter. Category: CHILDREN</li> <li>Learning XML. Category: WEB</li> <li>XQuery Kick Start. Category: WEB</li> </ul> </body> </html>
Add Attributes to HTML Elements
Next, we will use the category attribute as the class attribute of the HTML list:
<html> <body> <h1>Bookstore</h1> <ul> { for $x in doc("books.xml")/bookstore/book order by $x/title return <li class="{data($x/@category)}">{data($x/title)}</li> } </ul> </body> </html>
The above XQuery expression can generate the following results:
<html> <body> <h1>Bookstore</h1> <ul> <li class="COOKING">Everyday Italian</li> <li class="CHILDREN">Harry Potter</li> <li class="WEB">Learning XML</li> <li class="WEB">XQuery Kick Start</li> </ul> </body> </html>
- Previous Page XQuery Syntax
- Next Page XQuery Selection