XQuery (XML Query Language) ist eine vom W3C standardisierte funktionale Abfragesprache für XML- und seit 3.1 auch JSON-Daten. Sie entstand aus der Sprache Quilt und kombiniert Ideen von XPath, SQL und OQL; XQuery 1.0 wurde 2007 veröffentlicht, XQuery 3.1 folgte 2017.
FLWOR-Ausdrücke
Das Herzstück von XQuery sind FLWOR-Ausdrücke (gesprochen „Flower"): for, let, where, order by, return.
for $b in doc('katalog.xml')//buch
let $preis := $b/preis
where $preis > 20
order by $preis descending
return $b/titel
for— iteriert über eine Sequenzlet— bindet eine Variable an einen Wertwhere— filtert (wieWHEREin SQL)order by— sortiert die Ergebnissequenzreturn— baut das Ergebnis (Tupel-Konstruktion)
Datenmodell und Konstruktion
XQuery arbeitet auf dem XDM (XQuery and XPath Data Model): Dokumentknoten, Elemente, Attribute, atomare Werte und Sequenzen. Ergebnisse werden direkt als XML konstruiert:
<ergebnis>{
for $b in //buch return <titel>{ $b/titel/text() }</titel>
}</ergebnis>
Typen, JSON und Werkzeuge
XQuery ist stark typisiert (in Verbindung mit XML-Schema) und unterstützt seit 3.1 Maps, Arrays und JSON-Serialisierung. Bekannte Prozessoren sind Saxon, BaseX, eXist-db und die Implementierung in Oracle XML DB.
Verwandte Grundlagen: XPath-Befehle (XQuery 2.0 enthält XPath 2.0 vollständig), XSD-Befehle (Typen für die Validierung), XSLT/XSL-Befehle (Transformation vs. Abfrage), SQL-Befehle (das relationale Vorbild von FLWOR).