XQuery lisää elementtiä ja ominaisuuksia

XML-esimerkkitiedosto

Jatkamme esimerkkiä tästä "books.xml"-tiedostosta (ja samasta XML-tiedostosta, jota käytettiin edellisissä luvuissa).

Tarkastele "books.xml"-tiedostoa selaimesi avulla.

Lisää elementtejä ja ominaisuuksia tulokseen

Kuten edellisessä luvussa nähtiin, voimme viitata syöteasiakirjan elementteihin ja ominaisuuksiin tuloksessa:

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

Yllä oleva XQuery-lause viittaa title-elementtiin ja lang-ominaisuuteen seuraavasti:

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

Yllä oleva XQuery-lause palauttaa title-elementin samalla tavalla kuin se on kuvattu syöteasiakirjassa.

Nyt meidän täytyy lisätä omia elementtejämme ja ominaisuuksiamme tulokseen!

Lisää HTML-elementtejä ja tekstiä

Nyt meidän täytyy lisätä HTML-elementtejä tulokseen. Aiomme sijoittaa tuloksen HTML-listaan:

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

Yllä oleva XQuery-lause luo seuraavan tuloksen:

<html>
<body>
<h1>Kirjakauppa</h1>
<ul>
<li>Jokapäiväinen italialainen. Luokka: KEITTOilu
<li>Harry Potter. Luokka: CHILDREN</li>
<li>Learning XML. Luokka: WEB</li>
<li>XQuery Kick Start. Luokka: WEB</li>
</ul>
</body>
</html>

Lisää HTML-elementille ominaisuus

Seuraavaksi meidän on käytettävä category-ominaisuutta HTML-listan class-ominaisuutena:

<html>
<body>
<h1>Kirjakauppa</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>

Yllä oleva XQuery ilmentymä voi tuottaa seuraavan tuloksen:

<html>
<body>
<h1>Kirjakauppa</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>