Lägg till element och attribut i XQuery

XML-exempel

Vi kommer att fortsätta använda denna "books.xml"-dokument i de följande exemplen (som samma XML-fil som användes i de tidigare kapitlen).

Se "books.xml"-filen i din webbläsare.

Lägg till element och egenskaper till resultatet

Som vi såg i föregående avsnitt, kan vi hänvisa till element och egenskaper från inmatningsfilen i resultatet:

för $x i doc("books.xml")/bokhandel/bok/title
sortera efter $x
return $x

Den här XQuery-uttrycket refererar till title-elementet och lang-egenskapen i resultatet, på följande sätt:

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

Ovanstående XQuery-uttryck returnerar title-elementet på samma sätt som det beskrivs i inmatningsdokumentet.

Nu ska vi lägga till våra egna element och egenskaper!

Lägg till HTML-element och text

Nu ska vi lägga till HTML-element till resultatet. Vi kommer att placera resultatet i en HTML-lista:

<html>
<body>
<h1>Bokhandel</h1>
<ul>
{
för $x i doc("books.xml")/bokhandel/bok
sortera efter $x/title
return <li>{data($x/title)}. Kategori: {data($x/@category)}</li>
}
</ul>
</body>
</html>

Ovanstående XQuery-uttryck genererar följande resultat:

<html>
<body>
<h1>Bokhandel</h1>
<ul>
<li>Varje dagens italiensk mat. Kategori: KÖK</li>
<li>Harry Potter. Kategori: BARN</li>
<li>Lär dig XML. Kategori: WEB</li>
<li>XQuery Kick Start. Kategori: WEB</li>
</ul>
</body>
</html>

Lägg till egenskaper till HTML-element

Nästa, vi ska använda category-attributet som class-attribut i en HTML-lista:

<html>
<body>
<h1>Bokhandel</h1>
<ul>
{
för $x i doc("books.xml")/bokhandel/bok
sortera efter $x/title
return <li class="{data($x/@category)}">{data($x/title)}</li>
}
</ul>
</body>
</html>

Den här XQuery-uttrycket kan generera följande resultat:

<html>
<body>
<h1>Bokhandel</h1>
<ul>
<li class="COOKING">Varje dagens italiensk mat</li>
<li class="CHILDREN">Harry Potter</li>
<li class="WEB">Learning XML</li>
<li class="WEB">XQuery Kick Start</li>
</ul>
</body>
</html>