XQuery Hinzufügen von Elementen und Attributen
Das XML-Beispieldokument
In den folgenden Beispielen verwenden wir das Dokument "books.xml" (dieselbe XML-Datei wie in den vorherigen Kapiteln).
Zeigen Sie die Datei „books.xml“ in Ihrem Browser an .
Hinzufügen von Elementen und Attributen zum Ergebnis
Wie wir in einem vorherigen Kapitel gesehen haben, können wir Elemente und Attribute aus dem Eingabedokument ("books.xml") in das Ergebnis aufnehmen:
for $x in doc("books.xml")/bookstore/book/title
order by $x
return $x
Der obige XQuery-Ausdruck enthält sowohl das title-Element als auch das lang-Attribut im Ergebnis, wie folgt:
<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>
Der obige XQuery-Ausdruck gibt die Titelelemente genau so zurück, wie sie im Eingabedokument beschrieben sind.
Dem Ergebnis wollen wir nun unsere eigenen Elemente und Attribute hinzufügen!
Fügen Sie HTML-Elemente und Text hinzu
Nun wollen wir dem Ergebnis einige HTML-Elemente hinzufügen. Wir werden das Ergebnis in eine HTML-Liste einfügen - zusammen mit etwas Text:
<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>
Der obige XQuery-Ausdruck generiert das folgende Ergebnis:
<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>
Attribute zu HTML-Elementen hinzufügen
Als nächstes wollen wir das category-Attribut als class-Attribut in der HTML-Liste verwenden:
<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>
Der obige XQuery-Ausdruck generiert das folgende Ergebnis:
<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>