XQuery tilføje elementer og egenskaber

XML eksempel dokument

Vi fortsætter med at bruge denne "books.xml"-fil i de følgende eksempler (den samme XML-fil som brugt i de tidligere kapitler).

Vis "books.xml"-filen i din browser.

Tilføj elementer og egenskaber til resultaterne

Som vi så i det forrige afsnit, kan vi citere elementer og egenskaber fra inputfilen i resultaterne:

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

Denne XQuery-udtrykkelse refererer til title-elementet og lang-attributten på samme måde som vist her:

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

Denne XQuery-udtrykkelse returnerer title-elementerne på samme måde som de beskrives i input-dokumentet.

Nu skal vi tilføje vores egne elementer og egenskaber til resultaterne!

Tilføj HTML-elementer og tekst

Nu skal vi tilføje HTML-elementer til resultaterne. Vi vil placere resultaterne i en HTML-liste:

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

Denne XQuery-udtrykkelse vil generere følgende resultat:

<html>
<body>
<h1>Bookstore</h1>
<ul>
<li>Everyday Italian. Kategori: KØKKEN</li>
<li>Harry Potter. Kategori: BØRN</li>
<li>Learning XML. Kategori: WEB</li>
<li>XQuery Kick Start. Kategori: WEB</li>
</ul>
</body>
</html>

Tilføj egenskaber til HTML-elementer

Næste, skal vi bruge category-attributten som class-attribut i HTML-listen:

<html>
<body>
<h1>Bookstore</h1>
<ul>
{
for $x in doc("books.xml")/bookstore/book
sorteret efter $x/title
return <li class="{data($x/@category)}">{data($x/title)}</li>
}
</ul>
</body>
</html>

Denne XQuery-udtrykkelse kan generere følgende resultat:

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