![]() |
Newsletters | ||||||||||||||||||||
|
ZusammenfassungXQuery, basierend auf XPath Expressions, ist eine Sprache, mit der XML-Daten abgefragt werden können. Dieser Newsletter behandelt die Erstellung von XPath Expressions, diskutiert die Syntax von XQuery und stellt schließlich die Formulierung von Anfragen durch die Kombination der XQuery Syntax mit XPath Expressions dar. XPath & XQueryEinführungExtendable Markup Language oder XML, wie es am häufigsten genannt wird, ist eine Markup-Sprache zur Kodierung und Beschreibung von Daten. XML kann diverse Datenquellen wie z.B. strukturierte und semi-strukturierte Dokumente, relationale Datenbanken und Objektspeicher, auszeichnen. Demzufolge ist XML schnell die Methode der Wahl geworden, um Dokumente aller Art zu repräsentieren, von Produktkatalogen über digitale Bibliotheken bis hin zu wissenschaftlichen Datenbanken etc. Hierbei wird XML nicht nur zur Repräsentation der Dokumente herangezogen, sondern es dient auch als zugrundeliegende Technologie für viele Anwendungen. Zum Beispiel nutzt SOAP XML-Nachrichten als Kommunikationsmittel. RDF kann ebenfalls mit Hilfe von XML geschrieben werden. XML agiert als Beschleuniger in der Gestaltung neuer Vernetzungsformen, die als Semantic Web bekannt sind. All dieses zusammen zeigt, dass ein riesiger Datenpool vorhanden ist, der mit XML repräsentiert wird. So ergibt sich der Bedarf nach einem einfachen, aber dennoch leistungsfähigen und effektiven Mittel zur Durchsuchung der XML Daten. XQuery basierend auf XPath Expressions ist ein solches Tool. XPathXPath ist eine Sprache, um Informationen in einem XML Dokument zu finden. Der Hauptzweck von XPath ist es, Elemente in XML Dokumenten zu adressieren. Doch neben diesem Hauptzweck stellt XPath auch grundlegende Möglichkeiten zur Verarbeitung von Strings, Zahlen und booleschen Ausdrücken zur Verfügung. XPath benutzt Path Notationen, um die hierarchischen Strukturen von XML Dokumenten darzustellen. Hier findet der Name XPath seinen Ursprung. XPath ist ein Hauptelement des XSLT Standards von W3C. XPointer und XQuery basieren auf XPath Expressions. Was ist Path Expression?
XPath TerminologieKnotenXPath stellt ein XML Dokument wie einen Baum aus Knoten dar. In XPath gibt es sieben Arten von Knoten: Element, Attribut, Text, Namespace, Verarbeitungsanweisung, Kommentar und Dokumentknoten. Die Wurzel des Baumes wird Dokumentknoten oder Wurzelknoten (root-node) genannt. Es folgt ein Beispiel zum besseren Verständnis dieser Knoten: <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore> Beispiel 1.0
Beziehungen zwischen den KnotenDie verschiedenen Knoten im XML Dokument stehen in bestimmten Beziehungen zueinander. Die einzelnen möglichen Beziehungen sind: Eltern, Kind, Geschwister, Vorfahren und Nachkommen mit der offensichtlichen Semantik der Alltagssprache. Jedes Element hat einen Elternknoten. Elementknoten können null, einen oder mehrere Kindknoten haben. Knoten, die dasselbe Elternelement haben, sind Geschwister. Vorfahrenknoten sind die Eltern eines Knotens, die Großeltern usw. Gleichermaßen sind Nachkommenknoten die Kinder von Knoten, die Enkel usw. Auswahl von KnotenDie Auswahl von Knoten in einem XML Dokument ist ein wesentlicher Teil von XPath. XPath benutzt Path Expressions um Knoten auszuwählen. Die nützlichsten Path Expressions zur Knotenauswahl sind im folgenden aufgelistet.
Hier einige Formulierungen zur Knotenauswahl: bookstore: Wählt alle Kindknoten des Elements bookstore aus. /bookstore: Wählt das Wurzelelement bookstore. /bookstore/book: Wählt alle book Elemente, die Kindknoten von bookstore sind. //book: Wählt alle book Elemente aus, egal wo sie sich im Dokument befinden. //@lang: Wählt alle Attribute mit dem Namen lang aus. PrädikatePrädikate werden benutzt, um bestimmte Knoten zu finden oder Knoten, die einen bestimmten Wert haben. Prädikate werden auch benutzt, um die Ergebnisse von Path Expressions auf bestimmte Werte zu reduzieren. Prädikate sind immer in quadratischen Klammern eingebettet. Beispiel von Prädikaten angewendet auf die o.g. Path Expressions/bookstore/book[1]: Wählt das erste book Element, das ein Kind des bookstore Elements ist. /bookstore/book[last()]: Wählt das letzte book Element, das ein Kind des bookstore Elements ist. //title[@lang]: Wählt alle title Elemente mit dem Attribut lang. In XPath können auch Wildcards benutzt werden. XPath Wildcards können dazu dienen unbekannte Knoten in einem XML Dokument auszuwählen. Als Wildcards stehen *, @* und node() zur Verfügung. Zwei Path Expressions können mit dem | Operator verknüpft werden. Auswertung von XPath ExpressionsDie Auswertung einer XPath Expression gibt einen der folgenden Typen zurück:
Location PathEin Location Path ist ein wichtiger Ausdruckstyp. Er wählt einen Knotensatz in Bezug auf den Kontextknoten aus. Das Ergebnis von Auswertungen der Ausdrücke in Location Paths ist jener Knotensatz, der Knoten enthält wie sie im Location Path definiert sind. Location Paths können rekursiv auch Ausdrücke enthalten um die resultierenden Knotensätze zu filtern. Jeder Location Path kann in der unkomplizierten aber ziemlich wortreichen Syntax ausgedrückt werden. Beispiel Location PathChild::text(): Wählt alle text Knoten-Kinder des Kontextknotens. Child::node(): Wählt alle Kinder des Kontextknotens, unabhängig von ihrem Knotentyp. Descendant::para: Wählt die para Element Nachkommen des Kontextknotens. Ein Location Path kann sowohl relativ wie auch absolut sein. Ein relativer Location Path besteht aus einer Sequenz von einem oder mehreren Location Paths die durch / getrennt sind. Die Schritte in Location Path sind von links nach rechts zusammengestellt. Jeder Schritt wählt wiederum einen Knotensatz bezüglich eines Kontextknotens aus. Ein absoluter Location Path besteht aus /, wahlweise gefolgt von einem relativen Location Path. Ein alleinstehender / wählt den Wurzelknoten des Dokuments, welcher den Kontextknoten enthält. OperatorenXPath unterstützt alle wichtigen Operatoren wie z.B. +, -, *, /, <, <=, >, >=, =, !=, and, or, mod. XQueryXQuery ist eine Abfragesprache, die die Struktur von XML intelligent nutzt, um Abfragen über Daten zu formulieren, die entweder physisch in XML gespeichert sind oder über eine Middleware als XML betrachtet werden können. Es soll eine Sprache sein, in der Abfragen prägnant und leicht verständlich sind. XQuery ist flexibel genug, um XML Daten in Dokumenten und Datenbanken abzufragen. XQuery wurde von der XML-Abfragesprache Quilt abgeleitet, die wiederum einige Features von verschiedenen Programmiersprachen wie XPath, XQL, SQL etc. entliehen hat. XQuery wird vom W3C definiert und wird von allen bedeutenden Datenbankentwicklern wie IBM, Microsoft, Oracle, Software AG unterstützt. Am treffendsten kann XQuery folgendermaßen beschrieben werden: "XQuery ist für XML was SQL für Datenbanktabellen ist." Folglich ist XQuery eine Sprache zur Suche und Extraktion von Elementen und Attributen in XML Dokumenten. GrundlagenDer Hauptbaustein von XQuery ist die Expression, ein String von Unicode Buchstaben. Es ist mit verschiedenen Arten von Expressions ausgestattet, die aus Schlüsselwörtern, Symbolen und Operanden bestehen. Wie auch XML ist XQuery eine Sprache, in der Groß-Klein-Schreibung relevant ist. XQuery 1.0 und XPath 2.0 haben dasselbe Datenmodell und unterstützen dieselben Funktionen und Operatoren. XQuery ist mit verschiedenen W3C Standards wie z. B. XML, Namespaces, XSLT, XPath und XML Schema kompatibel. XQuery 1.0 ist ein stabiles W3C Candidate-Recommendation. Query FormulierungFunktionenXQuery benutzt Funktionen, um Daten aus XML Dokumenten zu extrahieren. Es stellt eine große Auswahl an eingebauten Funktionen zur Verfügung, die von Stringverarbeitung, Daten- und Zeitkonvertierung, Knotenverarbeitung, booleschen Operatoren bis hin zu numerischen Werten reichen. Path ExpressionsXQuery benutzt Path Expressions um ein XML Dokument zu erschließen. Die Path Expressions werden gemeinsam mit den Funktionen auf das XML Dokument angewandt, um Daten abzurufen. PrädikatXQuery benutzt Prädikate um die aus XML-Dokumenten extrahierten Daten einzuschränken. Prädikate werden mit Path Expressions kombiniert. FLWORIn XQuery können Elemente entweder mit Path Expressions kombiniert mit Prädikaten oder mit FLOWR Expressions selektiert und gefiltert werden. FLOWR ist ein Akronym für:
Der Vorteil bei der Benutzung von FLOWR Expressions ist, dass es eine SQL-ähnliche Syntax besitzt und mehr Funktionalität und Flexibilität hinzufügt. for $x in doc("book.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title Die Übersetzung der oben angeführten FLOWR Expression in einfaches Deutsch wäre: Für die Variable x im Dokument "Book.xml" sollen alle Titel Elemente abgerufen werden, wobei der Preis des Buches größer als 30 ist und die Ergebnisse sollen dem Titel nach geordnet sein.. Grundlegende Syntaxregeln
Bedingte Ausdrücke (Expressions) in XQueryXQuery ermöglicht auch den Gebrauch des bedingten Ausdruckes if-then-else. Der if-then-else Satz kann nach dem Return-Ausdruck der FLOWR Expression hinzugefügt werden. Vergleiche in XQueryIn XQuery gibt es zwei Möglichkeiten, Werte zu vergleichen:
Typenbeschreibung
Schlussfolgerung
Quellen und weiterführende Literatur
|
||||||||||||||||||||
|
|