150 likes | 274 Views
XPath. Datenbanktechnologie Daniel Ebner SS2011 23.Mai Ulrike Lohner. Übersicht. Was ist XPath XPath Terminologie Beziehungen zwischen Knoten Knoten aufrufen Prädikate Aufrufen unbekannter Knoten Aufrufen verschiedener Pfade die XPath Achse Location Path Ausdrücke
E N D
XPath Datenbanktechnologie Daniel Ebner SS2011 23.Mai Ulrike Lohner
Übersicht • Was ist XPath • XPath Terminologie • Beziehungen zwischen Knoten • Knoten aufrufen • Prädikate • Aufrufen unbekannter Knoten • Aufrufen verschiedener Pfade • die XPath Achse • Location Path Ausdrücke • XPath Operatoren • XPath Funktionen
Was ist XPath • Syntax, die teile eines XML-Dokuments definiert • wird benutzt, um in XML-Dokumenten zu navigieren • macht Gebrauch von über 100 (Standard-) Funktionen und Ausdrücken • Wichtige Grundlage für: XSLT, XQuery, XPointer • Letzte Version: 23. Januar 2007, XPath 2.0
XPath Terminologie • Knoten: Element, Attribut, Text, Namespace, Befehle, Kommentare, Dokumentenknoten • <?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> • <bookstore> Wurzelknoten (root element node) • <author>J K. Rowling</author> Elementknoten (element node) • lang="en“ Attribut (attribute node) • J K. Rowling bzw. „en“ Item /atomicvalue (keine Eltern oder Kinder)
Beziehungen zwischen Knoten • <book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book> • Knotenkönnenkeinchild, eines, odermehrere children haben • <book> Parent des Titels, Autors, Jahres, Preises • Titel, Autor, Jahr, Preis Children des Elementes <book> • Children mit dem selben Parent sind Siblings
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price></book> • Ancestors (Vorfahren) = Parent des Elements, Parent des Parent des Parent... • Descendants(Nachfahren) = Kind eines Elements, Kind des Kindes des Kindes...
Predicates (Prädikate) • Zum Aufrufen spezifischer Knoten oder einem knoten mit spezifischem Wert • Prädikate sind immer durch [ ] gekennzeichnet
Aufrufen unbekannter Knoten • Wildcards zum Aufrufen unbekannter XML Elemente • * jeglicher Knoten • /bookstore/* ruft jedes Kind von bookstore auf • //* ruft alle Knoten des Dokuments auf • @* jegliches Attribut • //title[@*] ruft alle Titelknoten auf, die irgendein Attribut tragen
Aufrufen verschiedener Pfade • durch den Operator | kann man verschiedene Pfade gleichzeitig aufrufen • z.B.: //book/title | //book/price ruft alle Titel und Preis-Elemente aller Buch-Elemente auf • z.B.: //title | //price ruft alle Titel- und Preis-Elemente des Dokuments auf
Die XPath-Achse • eine Achse definiert die Reihe der Verwandten des aktuellen Knotens • ancestor • ancestor-or-self • attribute • child • descendant • descendant-or-self • following • following-sibling • namespace • parent • preceding • preceding-sibling • self
Location Path Ausdrücke • absoluter Pfad: /step/step/step/... • relativer Pfad: step/step/step/... • ein step besteht aus: • einer Achse • einem Knotentest (nodetest) • optionalen Prädikaten • Syntax einer Stufe: axisname::nodetest[predicate]
Beispiele: child::book attribute::lang child::* child::text() child::*/child::price
XPath Funktionen • Accessor Functions ( fn:nodename(node) ) • Error andTraceFunctions ( fn:error() ) • Functions on Numeric Values ( fn:number(arg) ) • Functions on Strings ( fn:string(arg) ) • functions on Boolean Values ( fn:boolean(arg) ) • Functions on Durations, Dates and Times ( fn:dateTime(date, time) ) • Functions on Nodes ( fn:name() ) • Functions on Sequences ( fn:empty(item,item,...) ) • ContextFunctions ( fn:position() )