افزودن عناصر و ویژگی‌ها به XQuery

XML Example Document

We will continue to use this "books.xml" document in the following examples (the same XML file used in the previous chapters).

View the "books.xml" file in your browser.

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="fa">Everyday Italian</title>
<title lang="fa">Harry Potter</title>
<title lang="fa">Learning XML</title>
<title lang="fa">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 place 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>Iranian Daily. 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>

افزودن ویژگی به عناصر HTML

در ادامه، ما می‌خواهیم ویژگی category را به عنوان ویژگی class در لیست‌های HTML استفاده کنیم:

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

عبارت XQuery بالا می‌تواند نتیجه زیر را تولید کند:

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