XQuery Elementen en attributen toevoegen
Het XML-voorbeelddocument
In de onderstaande voorbeelden gebruiken we het document "books.xml" (hetzelfde XML-bestand als in de vorige hoofdstukken).
Bekijk het bestand "books.xml" in uw browser .
Elementen en attributen aan het resultaat toevoegen
Zoals we in een vorig hoofdstuk hebben gezien, kunnen we elementen en attributen uit het invoerdocument ("books.xml) in het resultaat opnemen:
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
De bovenstaande XQuery-expressie zal zowel het title-element als het lang-attribuut in het resultaat opnemen, zoals dit:
<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>
De bovenstaande XQuery-expressie retourneert de titelelementen op exact dezelfde manier als ze zijn beschreven in het invoerdocument.
We willen nu onze eigen elementen en attributen aan het resultaat toevoegen!
HTML-elementen en tekst toevoegen
Nu willen we enkele HTML-elementen aan het resultaat toevoegen. We zullen het resultaat in een HTML-lijst plaatsen - samen met wat tekst:
<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>
De bovenstaande XQuery-expressie genereert het volgende resultaat:
<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>
Attributen toevoegen aan HTML-elementen
Vervolgens willen we het categoriekenmerk gebruiken als een klassekenmerk in de HTML-lijst:
<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>
De bovenstaande XQuery-expressie genereert het volgende resultaat:
<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>