XQuery (XML query language)

XQuery ist eine Sprache mit der Anfragen an XML-Dokumente gestellt sowie Ergebnisdokumente generiert werden können. XQuery enthält die Sprache XPath 2.0 als eine Teilmenge. Vergleichbar in der Leistungsfähigkeit mit der Datenabfragesprache SQL können mit XQuery komplexe Anfragen an XML-Dokumente gestellt werden. XQuery ist eine deklarative Sprache und orientiert sich syntaktisch an der Structured Query Language (SQL), womit auch eine Optimierung dieser algebraisch fundierten Ausdrücke gegenüber den aufwendigen Pfadangaben von XPath verbunden ist.


XQuery ist eine Abfragesprache, die die Beschränkungen von XPath oder XSLT nicht aufweist. XQuery ist durch das World Wide Web Consortium (W3C) seit 2007 standardisiert, wobei neben XPath verschiedene Sprachstämme wie Quilt, YATL oder XML-QL in die Empfehlung des W3C eingeflossen sind. Ein besonderer Aspekt von XQuery ist, dass die Anfrageverarbeitung wie beispielsweise die Reihenfolge der Auswertung, Zugriffspfade oder optimierende Mechanismen wie Indexstrukturen komplett durch XQuery selbst gehandelt werden - der Anwender definiert lediglich vorab Bedingungen und bekommt dann ein gültiges Ergebnis. Auch aus diesem Grund ist XQuery für einige Anwendungsfälle eine Alternative zu XLST (XSL Transformation), da auch die Struktur eines Ergebnisdokumentes in der XQuery-Anfrage angegeben werden kann.

XQuery als funktionale Abfragesprache

XQuery ist als eine funktionale Anfragesprache - ohne die Berücksichtigung von Funktionen höherer Ordnung - definiert und wurde u.a. konzipiert, um den mit XPath 2.0 realisierten Ansatz zur Identifizierung beliebiger Knotenmengen innerhalb von XML-Dokumenten zu ergänzen. So sind bei XPath beispielsweise zu beachten:

  • Das die Konstruktion von eigenen Ergebnistypen nicht möglich ist, und das Ergebnis dadurch immer eine Element- oder Attributmenge ist.
  • Die Struktur des XML-Eingabedokuments muss zuvor bekannt sein.
  • Pfadausdrücke sind häufig komplex und unübersichtlich.
Neben der Aufhebung dieser Nachteile setzt XQuery nunmehr die folgenden Anforderungen um:

  • Das Ergebnis einer XQuery-Anfrage ist immer ein abgeschlossenes XML-Dokument.
  • Die Funktionen von XQuery sind beliebig miteinander kombinierbar.
  • Es wird eine strenge Typisierung durch das XML-Schema unterstützt.
  • Auf alle durch das XML-Schema definierten Datentypen können Operationen angewendet werden.
  • Bei einer Anfrage dürfen keine Seiteneffekte beispielsweise auf angrenzende Daten auftreten.
  • Verarbeitung von daten- und dokumentenorientierten Dokumenten.
  • Die Extraktion von Konfigurationsdateien.
  • Der Einsatz von XQuery im Zusammenhang mit dem Document Object Model (DOM).
  • Die Abfragen auf native XML-Repositories.
  • Die Unterstützung von Katalogsuche.
  • Die Einbettung in verschiedene Syntaxumgebungen.
  • Filter- sowie Bereinigungsarbeiten von Daten-strömen.
  • Die Abfrage von XML-Dokumenten, so dass aus XML-Daten wieder binäre Dokumente generiert werden können.

Datenmodell von XPath und XQuery

XPath 2.0 und XQuery basieren auf einem gemeinsamen Datenmodell - dem XDM -, dessen Komponenten Knoten, atomare Werte und Sequenzen sind. Ein XML-Dokument wird dabei in einen Baum von Knoten umgesetzt. Analog der in einem XML-Dokument existierenden Informationseinheiten unterscheidet man bis zu sieben verschiedene Knotentypen. Sequenzen sind zusammengesetzt aus atomaren Werten oder Knoten und bilden in XQuery einen Ausdruck. Ebenso arbeiten alle Funktionen von XQuery auf der Basis von Sequenzen. Der zentrale Ausdruck in XQuery ist der FLWOR-Ausdruck, mit dem komplexe Ausdrücke in XQuery formuliert werden können. Damit werden sowohl Anfragen an ein XML-Dokument gestellt als dass auch die Generierung von neuen XML-Dokumenten unterstützt wird. FLWOR ist ein Acronym - zusammengesetzt aus for, let, where, order by und return - und hat eine ähnliche Stellung wie eine SELECT-FROM-WHERE Anfrage in einer SQL-Datenbank.

XQuery stellt dem Benutzer bereits eine komfortable Menge von Funktionen und Operation zur Verfügung, um die Mächtigkeit von Ausdrücken und deren Funktionalität abzubilden. Weiterhin bietet XQuery die Möglichkeit zur Definition von Funktionen durch den Benutzer. Dabei müssen Funktionen immer in einem Namensraum liegen.

XQuery kann Daten aus verschiedenen Eingabe-Quellen verarbeiten. Neben denen, die sich aus o.g. Anforderungen ableiten sind das beispielsweise auch Teile von XML-Dokumenten, die über das Web per URI angefordert werden, eine Collection von Dokumenten von Dokumenten oder Daten, die in einer relationalen Datenbank mit XML-Frontend gespeichert sind.

Beispiel für eine XQuery-Anfrage

Beispiel für eine XQuery-Anfrage

Ein sogenannter XQuery-Prozessor ist dabei ein Programm, das Anfragen parst, analysiert und auswertet. Eine XQuery-Anfrage wird innerhalb eines Zusammenhangs - auch Kontext genannt - ausgewertet. Der Kontext eines Ausdrucks sind diejenigen Anweisungen, die zum Analysieren und Auswerten des Ausdrucks verwendet werden. Dabei differenziert XQuery in einen statischen und einen dynamischen Kontext. XQuery-Prozessoren sind sowohl als Open Source wie auch kommerziell erhältlich. Eine diesbezügliche Liste stellt das W3C unter dem u.g. Link zur Verfügung.

http://www.w3.org/TR/xquery

http://www.w3.org/XML/XQuery/

Informationen zum Artikel
Deutsch:
Englisch: XML query language - XQuery
Veröffentlicht: 28.10.2013
Wörter: 734
Tags: #Web-Software
Links: Akronym, Analog, Anweisung, Aspekt, Binär