Adicionar Elementos e Atributos XQuery

Documento de exemplo XML

Continuaremos a usar o documento "books.xml" nos exemplos a seguir (o mesmo arquivo XML usado nas seções anteriores).

Visualize o arquivo "books.xml" no seu navegador.

Adicionar elementos e atributos ao resultado

Como visto na seção anterior, podemos referenciar elementos e atributos do arquivo de entrada nos resultados:

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

A expressão XQuery a seguir citará o elemento title e o atributo lang, assim:

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

A maneira como a expressão XQuery retorna o elemento title é a mesma que a maneira como ele é descrito no documento de entrada.

Agora vamos adicionar nossos próprios elementos e atributos ao resultado!

Adicionar elemento HTML e texto

Agora, vamos adicionar elementos HTML ao resultado. Colocaremos o resultado em uma lista HTML:

<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Categoria: {data($x/@category)}</li>
}
</ul>
</body>
</html>

A expressão XQuery a seguir gerará o seguinte resultado:

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Categoria: COZINHA</li>
<li>Harry Potter. Categoria: CRIANÇA</li>
<li>Learning XML. Categoria: WEB</li>
<li>XQuery Kick Start. Categoria: WEB</li>
</ul>
</body>
</html>

Adicionar atributo ao elemento HTML

A seguir, vamos usar o atributo category como a propriedade class na lista 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>

A expressão XQuery a seguir pode gerar o seguinte resultado:

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