Empire Burlesque Bob Dylan . / catalog cd title artist Empire... Bob Dylan type=“rock“ XML Technologien Seminar SS ´02 Matthias Weibel">

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. XML Technologien Seminar SS ´02 Matthias Weibel

2 XPath XPath modelliert ein XML-Dokument als einen Baum, der aus Knoten besteht. Es gibt verschiedene Knotentypen, unter anderem Elementknoten, Attributknoten und Textknoten. <?xml version="1.0" encoding="ISO "?> <catalog> <cd type="rock"> <!-- my favourite record --> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> </cd> . </catalog> / catalog cd <!-- my… --> title artist Empire... Bob Dylan type=“rock“ XML Technologien Seminar SS ´02 Matthias Weibel

3 XPath XPath verwendet Lokalisierungspfade wie in einem Dateisystem, um Knoten in einem XML-Dokument auszuwählen. /catalog/cd/artist (/child::catalog/child::cd/child::artist) <?xml version="1.0" encoding="ISO "?> <catalog> <cd type="rock"> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> </cd> <cd type="heavy metal"> <title>Back in Black</title> <artist>AC/DC</artist> . </catalog> XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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 XML Technologien Seminar SS ´02 Matthias Weibel

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 XML Technologien Seminar SS ´02 Matthias Weibel

7 Achse::Knotentest[Prädikat*]
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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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

11 Achse::Knotentest[Prädikat*]
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 XML Technologien Seminar SS ´02 Matthias Weibel

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 (<?xml-stylesheet ... ?>) XML Technologien Seminar SS ´02 Matthias Weibel

13 Achse::Knotentest[Prädikat*]
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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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 XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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. XML Technologien Seminar SS ´02 Matthias Weibel

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. attribute @ wählt das Attribut lang des Elternknotens des Kontextknotens aus. XML Technologien Seminar SS ´02 Matthias Weibel

21 XPath Abgekürzte Syntax (Fortsetzung) self .
. wählt den Kontextknoten aus. position() = number number 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 besitzt. @* wählt alle Attribute des Kontextknotens aus. para[last()] wählt das letzte para-Kindelement des Kontextknotens aus. XML Technologien Seminar SS ´02 Matthias Weibel

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) O‘Reilly 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) XML Technologien Seminar SS ´02 Matthias Weibel


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