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 Sequenz
  • let — bindet eine Variable an einen Wert
  • where — filtert (wie WHERE in SQL)
  • order by — sortiert die Ergebnissequenz
  • return — 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).