Добавление элементов и атрибутов XQuery

Пример документа XML

Мы продолжим использовать этот документ "books.xml" в следующих примерах (он же используется в предыдущих разделах).

Просмотрите файл "books.xml" в вашем браузере.

Добавление элементов и атрибутов в результат

Как мы видели в предыдущем разделе, мы можем ссылаться на элементы и атрибуты из входного файла в результатах:

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

Верхний XQuery выражение будет ссылаться на элементы title и атрибут lang, как это:

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

Верхний XQuery выражение возвращает элементы title так же, как они описаны в входном документе.

Теперь мы добавим свои элементы и атрибуты в результат!

Добавление HTML элементов и текста

Теперь мы добавим HTML элементы в результат. Мы поместим результат в HTML список:

<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Категория: {data($x/@category)}</li>
}
</ul>
</body>
</html>

Верхний XQuery выражение будет генерировать следующий результат:

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Категория: КУЛИНАРИЯ</li>
<li>Harry Potter. Категория: ДЕТИ</li>
<li>Learning XML. Категория: WEB</li>
<li>XQuery Kick Start. Категория: 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>