XQuery Ajout d'éléments et d'attributs
L'exemple de document XML
Nous utiliserons le document "books.xml" dans les exemples ci-dessous (même fichier XML que dans les chapitres précédents).
Affichez le fichier "books.xml" dans votre navigateur .
Ajout d'éléments et d'attributs au résultat
Comme nous l'avons vu dans un chapitre précédent, nous pouvons inclure des éléments et des attributs du document d'entrée ("books.xml) dans le résultat :
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
L'expression XQuery ci-dessus inclura à la fois l'élément title et l'attribut lang dans le résultat, comme ceci :
<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 ci-dessus renvoie les éléments de titre exactement de la même manière qu'ils sont décrits dans le document d'entrée.
Nous voulons maintenant ajouter nos propres éléments et attributs au résultat !
Ajouter des éléments HTML et du texte
Maintenant, nous voulons ajouter des éléments HTML au résultat. Nous mettrons le résultat dans une liste HTML - avec du texte :
<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>
L'expression XQuery ci-dessus générera le résultat suivant :
<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>
Ajouter des attributs aux éléments HTML
Ensuite, nous voulons 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 ci-dessus générera le résultat suivant :
<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>