Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.

Ähnliche Präsentationen


Präsentation zum Thema: "XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath."—  Präsentation transkript:

1 XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath definiert eine Bibliothek von Standardfunktionen. XPath ist ein Hauptelement in XSLT. XPath wird nicht in XML geschrieben. XPath ist ein W3C-Standard. XPath wurde für die Verwendung in XSLT und anderer XML-Parsing- Software entworfen. Matthias Weibel XML Technologien Seminar SS ´02

2 XPath XPath modelliert ein XML-Dokument als einen Baum, der aus Knoten besteht. Es gibt verschiedene Knotentypen, unter anderem Elementknoten, Attributknoten und Textknoten. Matthias Weibel XML Technologien Seminar SS ´02 Empire Burlesque Bob Dylan. / catalog cd title artist Empire...Bob Dylan type=rock

3 XPath XPath verwendet Lokalisierungspfade wie in einem Dateisystem, um Knoten in einem XML-Dokument auszuwählen. Matthias Weibel XML Technologien Seminar SS ´02 Empire Burlesque Bob Dylan Back in Black AC/DC... /catalog/cd/artist (/child::catalog/child::cd/child::artist)

4 XPath Lokalisierungspfad Ein Lokalisierungspfad besteht aus einem oder mehreren Lokalisierungsschritten getrennt durch /. Lokalisierungsschritt / Lokalisierungsschritt... Ein Lokalisierungsschritt hat die folgende Form: Achse::Knotentest[Prädikat*] Die Achse spezifiziert die Beziehung zwischen den durch den Lokalisierungsschritt ausgewählten Knoten und dem Kontextknoten innerhalb des Baumes. Der Knotentest spezifiziert den Knotentyp und den erweiterten Namen der durch den Lokalisierungsschritt ausgewählten Knoten. null oder mehr Prädikate können die mittels beliebiger Ausdrücke die durch den Lokalisierungsschritt ausgewählte Knotenmenge weiter verfeinern. Matthias Weibel XML Technologien Seminar SS ´02

5 XPath Beispiele Lokalisierungsschritte ancestor::div wählt alle div-Elemente aus, die Vorfahren des Kontextknotens sind child::para[attribute::type="warning"] wählt alle para-Kindelemente des Kontextknotens aus, die ein type-Attribut mit dem Wert warning besitzen child::para[position()=1] wählt das erste para-Kindelement des Kontextknotens aus child::para[attribute::type='warning'][position()=5] wählt das fünfte para-Kindelement des Kontextknotens aus, das ein Attribut type mit dem Wert warning besitzt child::para[position()=5][attribute::type="warning"] wählt das fünfte para-Kindelement des Kontextknotens aus, wenn dieses Kind ein type-Attribut mit dem Wert warning besitzt Matthias Weibel XML Technologien Seminar SS ´02

6 XPath Beispiele Lokalisierungspfade /child::*/child::name/attribute::type wählt alle type-Attribute der name-Kindelemente aller Kinder des Kontextknotens. /child::catalog/child::cd/preceding-sibling::* wählt alle vorhergehenden Geschwister aller cd-Kindelement aller catalog- Kindelemente des Kontextknotens. /child::catalog/child::cd[position() = 2] wählt das zweite cd-Kindelement aller catalog-Kindelemente des Kontextknotens. /ancestor::*/attribute::* wählt alle Attribute der Vorfahrenknoten Matthias Weibel XML Technologien Seminar SS ´02

7 XPath Die Achsen Achse::Knotentest[Prädikat*] Es stehen folgende Achsen zur Verfügung: child enthält die Kinder des Kontextknotens. descendant enthält die Nachkommen des Kontextknotens. Die Nachkommenachse enthält niemals Attribut- oder Namensraumknoten. parent enthält den Elternknoten des Kontextknotens, falls es einen gibt. ancestor enthält die Vorfahren des Kontextknotens. following-sibling enthält alle nachfolgenden Geschwister des Kontextknotens; falls der Kontextknoten ein Attribut- oder Namensraumknoten ist, ist diese Achse leer. Matthias Weibel XML Technologien Seminar SS ´02

8 XPath Die Achsen (Fortsetzung) preceding-sibling enthält alle vorhergehenden Geschwister des Kontextknotens; falls der Kontextknoten ein Attribut- oder Namensraumknoten ist, ist diese Achse leer. following enthält alle Knoten im gleichen Dokument wie der Kontextknoten, die nach dem Kontextknoten in Dokumentordnung auftreten, und zwar ohne seine Nachkommen und ohne Attribut- und Namensraumknoten. preceding enthält alle Knoten im gleichen Dokument wie der Kontextknoten, die vor dem Kontextknoten in Dokumentordnung auftreten, und zwar ohne seine Vorfahren und ohne Attribut- und Namensraumknoten. attribute enthält die Attribute des Kontextknotens; diese Achse ist leer, es sei denn, der Kontextknoten ist ein Elementknoten. Matthias Weibel XML Technologien Seminar SS ´02

9 XPath Die Achsen (Fortsetzung) namespace enthält alle Namensraumknoten des Kontextknotens; diese Achse ist leer, es sei denn, der Kontextknoten ist ein Elementknoten. self enthält nur den Kontextknoten selbst. descendant-or-self enthält den Kontextknoten sowie die Nachkommen des Kontextknotens. ancestor-or-self enthält den Kontextknoten sowie die Vorfahren des Kontextknotens; diese Achse enthält somit immer den Wurzelknoten. Matthias Weibel XML Technologien Seminar SS ´02

10 XPath Matthias Weibel XML Technologien Seminar SS ´02 (http://www.ejim.co.uk/module/overview/xpath.htm)

11 XPath Knotentest Achse::Knotentest[Prädikat*] *: Selektieren aller Knoten dieser Achse child::* -> alle Kinder des Kontextknotens Knotenname:Selektieren aller Knoten mit diesem Name child::div -> alle Kinder mit Knotenname div Matthias Weibel XML Technologien Seminar SS ´02

12 XPath Knotentest (Fortsetzung) Knotentyp: Selektiert alle Knoten dieses Typs. Die folgenden Knotentypen sind möglich: –node() child::node() -> alle Kinder, ausser Attribut- und Namensraumknoten –text() child::text() -> alle Kinder, die Texknoten sind –comment() child::comment -> alle Kinder, die Kommentarknoten sind –processing-instruction() child::processing-instruction -> alle Kinder, die processing instruction-Knoten sind. –processing-instruction(target) child::proccessing-instruction(xml-stylesheet) -> processing instruction-Knoten der Form ( ) Matthias Weibel XML Technologien Seminar SS ´02

13 XPath Prädikate Achse::Knotentest[Prädikat*] Prädikate können als Filter benutzt werden, um die Knotenmenge definiert durch Achse und Knotentest noch weiter zu verfeinern. Es sind null oder mehr Prädikate möglich. [x Operator einWert] x: kann entweder ein weiterer Lokalisierungsschritt, im Verhältnis zu den Knoten, die bis jetzt durch den Knoten-Test und der Achse selektiert werden, oder eine eingebaute XPath Funktion sein. Operator: ist ein Boolean Operator, wie =, !=, >, usw. (Achtung für > und < sollte > und < verwendet werden.) einWert: ist der Wert mit dem x verglichen werden sollte. Matthias Weibel XML Technologien Seminar SS ´02

14 XPath Prädikate (Fortsetzung) Beispiele: [position() = 1] liefert den ersten Knoten der Knotenmenge in der Dokumentreihenfolge [attribute::type != "rock"] liefert alle Knoten der Knotenmenge, die ein Attribut type besitzen und dessen Wert ungleich rock ist. [position() = 1 and attribute::type != "rock"] liefert den ersten Knoten der Knotenmenge, wenn er ein Attribute type besitzt und dessen Wert ungleich rock ist. [attribute::type != "rock"] [position() = 1] liefert den Knoten der Knotenmenge, welcher der erste Knoten der Knotenmenge aller Knoten, die ein Attribut type besitzen und dessen Wert ungleich rock ist. Matthias Weibel XML Technologien Seminar SS ´02

15 XPath Funktionen Die Funktionsbibliotheke von XPath enthält einen Satz von Funktionen, die es erlauben, Ausdrücke auszuwerten. Die Bibliotheke ist unterteilt in 4 Gruppen Funktionen auf Knotenmengen Übernehmen als Argument Knotenmengen, geben Knotenmengen oder Informationen über einen bestimmten Knoten der Knotenmenge zurück. Zeichenkettenfunktionen Führen auf Zeichenketteargumente Auswertungen, Formatierungen und Manipulationen durch. Boolesche Funktionen Werten die Argumentausdrücke aus, um ein boolesches Resultat zu erhalten. Zahlenfunktionen Werten die Argumentausdrücke aus, um ein numerisches Resultat zu erhalten. Matthias Weibel XML Technologien Seminar SS ´02

16 XPath Knotenmengenfunktionen number last(): liefert eine Zahl, die gleich der Größe des Kontextes des ausgewerteten Ausdrucks ist. /child::*[last()] -> das letzte Kind des Kontextknotens number position(): liefert eine Zahl, die gleich der Position im Kontext des ausgewerteten Ausdrucks ist. /child::*[position()=3] -> das dritte Kind des Kontextknotens number count(node-set): liefert die Anzahl der Knoten der übergebenen Knotenmenge. count(/child::*) liefert die Anzahl Kinder des Kontextknotens Matthias Weibel XML Technologien Seminar SS ´02

17 XPath Zeichenkettenfunktionen string string(object?): konvertiert ein Objekt in eine Zeichenkette string concat(string, string, string*): liefert die Verkettung ihrer Argumente. boolean starts-with(string, string): liefert den logischen Wert wahr, falls die im ersten Argument übergebene Zeichenkette mit der im zweiten Argument übergebenen Zeichenkette beginnt, und andernfalls falsch. boolean contains(string, string): liefert den logischen Wert wahr, falls die im ersten Argument übergebene Zeichenkette die im zweiten Argument übergebene Zeichenkette enthält, und andernfalls falsch. Matthias Weibel XML Technologien Seminar SS ´02

18 XPath Boolesche Funktionen boolean boolean(object): konvertiert ihr Argument wie folgt in einen Boolean-Wert: –Eine Zahl ergibt den Wert wahr genau dann, wenn sie weder positiv oder negativ Null noch NaN ist. –Eine Knotenmenge ergibt den Wert wahr genau dann, wenn sie nicht leer ist. –Eine Zeichenkette ergibt genau dann den Wert wahr, wenn ihre Länge ungleich Null ist. boolean not(boolean): liefert den Wert wahr, wenn ihr Argument falsch ist, und ansonsten falsch. boolean true(): liefert den Wert wahr. boolean false(): liefert den Wert falsch. Matthias Weibel XML Technologien Seminar SS ´02

19 XPath Zahlenfunktionen number number(object?): konvertiert ihr Argument in eine Zahl. number sum(node-set): liefert die Summe aller in eine Zahl konvertierten Zeichenkettenwerte der Knoten aus der Argumentknotenmenge. number floor(number): liefert die größte Zahl (die am nächsten an positiv unendlich liegt), die nicht größer als das Argument und ganzzahlig ist. number ceiling(number): liefert die kleinste Zahl (die am nächsten an negativ unendlich liegt), die nicht kleiner als das Argument und ganzzahlig ist. number round(number): liefert die Zahl, die am nächsten am Argument liegt und die ganzzahlig ist. Matthias Weibel XML Technologien Seminar SS ´02

20 XPath Abgekürzte Syntax Mit Hilfe der abgekürzten Syntax lassen sich Lokalisierungsschritte mit weniger Schreibaufwand erstellen. child(default) kann weggelassen werden. Die Standardachse ist also child. div/para ist abkürzend für child::div/child::para. parent.. wählt den Elternknoten des Kontextknotens aus. descendant// //item wählt alle item-Elemente aus dem gleichen Dokument wie der Kontextknoten aus. wählt das Attribut lang des Elternknotens des Kontextknotens aus. Matthias Weibel XML Technologien Seminar SS ´02

21 XPath Abgekürzte Syntax (Fortsetzung) self.. wählt den Kontextknoten aus. position() = numbernumber elem[3] wählt das dritte elem-Kindelement des Kontextknotens aus. weitere Beispiele: wählt das fünfte para-Kindelement des Kontextknotens aus, falls dieses Kind ein Attribut type mit dem Wert warning wählt alle Attribute des Kontextknotens aus. para[last()] wählt das letzte para-Kindelement des Kontextknotens aus. Matthias Weibel XML Technologien Seminar SS ´02

22 XPath Informationsquellen w3c Spezifikation: (http://www.w3.org/TR/xpath) Deutsche Übersetzung: (http://www.informatik.hu- berlin.de/~obecker/obqo/w3c-trans/xpath-de/ XPath Explorer: (http://www.purpletech.com/xpe/index.jsp) XPath TV: (http://www.ejim.co.uk/module/overview/xpath.htm) Microsoft msdn: (http://msdn.microsoft.com/library/default.asp?url=/library/en- us/xmlsdk/htm/xpath_devguide_overview_86gn.asp?frame=true) XPath Referenz: (http://www.vbxml.com/xsl/XPathRef.asp) OReilly Referenz: (http://www.oreilly.com/catalog/xmlnut/chapter/ch09.html) Tutorials: (http://www.zvon.org/xxl/XPathTutorial/General/examples.html) (http://www.w3schools.com/xpath/default.asp) Matthias Weibel XML Technologien Seminar SS ´02


Herunterladen ppt "XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath."

Ähnliche Präsentationen


Google-Anzeigen