|
|
 |
XQuery
Status: W3C Working Draft vom 12.11.2003
Version: 1.0
Homepage: http://www.w3.org/TR/xquery/
Verfasser: W3C
XQuery ist eine XML Anfragesprache, die einfach verständlich sein soll sowie flexibel mit verschiedenen
Datenquellen umgehen kann. XQuery baut auf der Anfragesprache
Quilt auf, die unter
anderem Elemente von XPath,
XQL und SQL enthält. Gleichzeitig ist
XQuery eine Übermenge von XPath 1.0, d.h. eine Anfrage die sowohl in XQuery als auch in XPath gültig ist,
liefert in beiden Sprachen das gleiche Ergebnis.
Eine Anfrage in XQuery besteht aus einem optionalen Prolog, in dem Namensräume und Funktionen deklariert
werden können, und dem Anfragekörper, der aus einer Sequenz von Ausdrücken verschiedener Arten besteht.
Die Bedeutung dieser Ausdrücke hängt von dem aktuellen Kontext ab, d.h. den Namespaces, Funktions- und
Variablendefinitionen, der Base URI, der aktuellen Belegung von Variablen und Parametern sowie einigen
weitern Punkten.
Als Ausdrücke können aus nachfolgenden Elementen bestehen.
-
Literale, das sind Zahlen, Zeichenketten oder Wahrheitswerte.
-
Pfade, diese werden verwendet um Koten im XML Dokument zu adressieren. Dabei sind auch
Wildcards erlaubt. Daneben gibt es die Möglichkeit Pfade mit Hilfe von Prädikaten auszuschließen,
so liefert child::employee[secretary] alle Knoten, die ein Element "secretary" haben.
-
Arithmetische und logische Ausdrücke, diese Ausdrücke können aus den arithmetischen
Operatoren +, -, *, div, idiv und mod bzw. aus and und or erzeugt werden.
-
Vergleichsausdrücke, von denen es 3 verschiedene Arten gibt, zum einen für den Vergleich von
Werten, dann für den Knotenvergleich und schließlich einen für einen allgemeinen Vergleich.
-
Konstruktoren, mit denen XML Strukturen durch eine Anfrage erzeugen werden könenn,
diese werden in geschweiften Klammern notiert.
-
Bedingungen, die in der Form "if" ? "then" ? "else" angegeben werden.
-
Quantifizierende Ausdrücke, als Existenzquantor dient Xquery "some" und als Allquantor "every".
-
Validierungsausdrücke, die dazu dienen einzelne Knoten zu überprüfen.
Variablen werden in XQuery durch ein $ gefolgt von dem Variablennamen referenziert. Ausdrücke
können geklammert werden, um die Auswertungsreinfolge festzulegen. Kommentare werden durch
die Zeichen (: und :) eingeschlossen.
| Beispiel einer XQuery Anfrage die alle Autoren eines Buches zählt und sie ausgibt |
<results>
{
for $book in //book
let $authors := $book/author
return
<book title={ $book/title/text() } authorCount={ count($authors) }>
{
for $author in $authors
return
<author>{ $author/last/text() }</author>
}
</book>
}
</results>
|
| Beispiel Datensatz für diese Anfrage |
<bib>
<book year="2003">
<title>XQuery from the Experts</title>
<author><last>Katz</last><first>Howard</first></author>
<publisher>Addison-Wesley</publisher>
<price>49.99</price>
</book>
<book year="2003">
<title>XML Schema</title>
<author><last>van der Vlist</last><first>Eric</first></author>
<publisher>O'Reilly</publisher>
<price>40.00</price>
</book>
<book year="2003">
<title>XQuery</title>
<author><last>Nagarajan</last><first>Vaidyanathan</first></author>
<author><last>McGovern</last><first>James</first></author>
<author><last>Bothner</last><first>Per</first></author>
<publisher>Sams</publisher>
<price>34.99</price>
</book>
</bib>
|
| Ergebnis dieser Anfrage |
<results>
<book title="XQuery from the Experts" authorCount="1">
<author>Katz</author>
</book>
<book title="XML Schema" authorCount="1">
<author>van der Vlist</author>
</book>
<book title="XQuery" authorCount="3">
<author>Nagarajan</author>
<author>McGovern</author>
<author>Bothner</author>
</book>
</results>
|
| |