XQuery Add Elements and Attributes | Novice Tutorial
Novice Tutorial -- Learning Technology, Chasing Dreams!
- Home
- HTML
- JavaScript
- CSS
- Vue
- React
- Python3
- Java
- C
- C++
- C#
- AI
- Go
- SQL
- Linux
- VS Code
- Bootstrap
- Git
- Local Bookmarks
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 FilteringXQuery 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>
YouTip