Ajout d'éléments et d'attributs XQuery

Document d'exemple XML

Nous allons continuer à utiliser ce document "books.xml" dans les exemples suivants (le même fichier XML que les sections précédentes).

Voyez le fichier "books.xml" dans votre navigateur.

Ajouter des éléments et des attributs au résultat

Comme vu dans la section précédente, nous pouvons faire référence aux éléments et attributs du fichier d'entrée dans les résultats :

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

L'expression XQuery cite les éléments title et l'attribut lang dans les résultats, comme suit :

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

L'expression XQuery retourne les éléments title de la même manière que ceux décrits dans le document d'entrée.

Maintenant, nous allons ajouter nos propres éléments et attributs aux résultats !

Ajouter des éléments HTML et du texte

Maintenant, nous allons ajouter des éléments et des attributs HTML aux résultats. Nous mettrons les résultats dans une liste HTML :

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

L'expression XQuery suivante génère les résultats suivants :

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Catégorie : CUISINE</li>
<li>Harry Potter. Catégorie : ENFANTS</li>
<li>Learning XML. Catégorie : WEB</li>
<li>XQuery Kick Start. Catégorie : WEB</li>
</ul>
</body>
</html>

Ajouter des attributs aux éléments HTML

Ensuite, nous allons utiliser l'attribut category comme attribut class dans la liste 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>

L'expression XQuery suivante génère les résultats suivants :

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li class="COOKING">Everyday Italian</li>
<li class="CHILDREN">Harry Potter</li>
<li class="WEB">Apprendre XML</li>
<li class="WEB">XQuery Kick Start</li>
</ul>
</body>
</html>