Adding Elements and Attributes in XQuery
- 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 refer to elements and attributes from the input file in the results:
for $x in doc("books.xml")/bookstore/book/title order by $x return $x
The above XQuery expression will reference the title elements and lang attributes in the result as follows:
<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 elements is the same as how they are described in the input document.
Now we are going 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 results:
<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