YouTip LogoYouTip

Xquery Add

XQuery Add Elements and Attributes | Novice Tutorial

Novice Tutorial -- Learning Technology, Chasing Dreams!

XQuery Tutorial

XQuery TutorialXQuery IntroductionXQuery ExamplesXQuery FLWOR ExpressionXQuery FLWOR + HTMLXQuery TermsXQuery SyntaxXQuery Add Elements and AttributesXQuery Selection and FilteringXQuery FunctionsXQuery SummaryXQuery Reference Manual

XQuery Syntax XQuery Selection and Filtering

XQuery Add Elements and Attributes


XML Example Document

We will continue using this "books.xml" document in the examples below (the same XML file used in the previous sections).

View "books.xml" file in your browser.


Add Elements and Attributes to Results

As seen in the previous section, we can reference elements and attributes from input files in our results:

for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x

The above XQuery expression will reference title elements and lang attributes 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 above XQuery expression returns title elements in the same way they are described in the input document.

Now we want to add our own elements and attributes to the results!

Add HTML Elements and Text

Now, we want to add HTML elements to the results. We'll 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 generates 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 want to use the category attribute as the class attribute in HTML lists:

<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 result:

<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>

← Xquery SelectXquery Syntax β†’