1 / 22

XPath

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.

powa
Télécharger la présentation

XPath

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. / catalog cd type=“rock“ artist <!-- my… --> title Empire... Bob Dylan 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-8859-1"?> • <catalog> • <cd type="rock"> • <!-- my favourite record --> • <title>Empire Burlesque</title> • <artist>Bob Dylan</artist> • </cd> • . • . • . • </catalog> Matthias Weibel XML Technologien Seminar SS ´02

  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-8859-1"?> <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> </cd> . . . </catalog> Matthias Weibel XML Technologien Seminar SS ´02

  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 (http://www.ejim.co.uk/module/overview/xpath.htm) Matthias Weibel XML Technologien Seminar SS ´02

  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 (<?xml-stylesheet ... ?>) 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 “&gt;“ und “&lt;“ 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 • numberlast(): liefert eine Zahl, die gleich der Größe des Kontextes des ausgewerteten Ausdrucks ist. /child::*[last()] -> das letzte Kind des Kontextknotens • numberposition(): liefert eine Zahl, die gleich der Position im Kontext des ausgewerteten Ausdrucks ist. /child::*[position()=3] -> das dritte Kind des Kontextknotens • numbercount(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 • booleanboolean(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. • booleannot(boolean): liefert den Wert wahr, wenn ihr Argument falsch ist, und ansonsten falsch. • booleantrue(): liefert den Wert wahr. • booleanfalse():liefert den Wert falsch. Matthias Weibel XML Technologien Seminar SS ´02

  19. XPath Zahlenfunktionen • numbernumber(object?): konvertiert ihr Argument in eine Zahl. • numbersum(node-set): liefert die Summe aller in eine Zahl konvertierten Zeichenkettenwerte der Knoten aus der Argumentknotenmenge. • numberfloor(number): liefert die größte Zahl (die am nächsten an positiv unendlich liegt), die nicht größer als das Argument und ganzzahlig ist. • numberceiling(number): liefert die kleinste Zahl (die am nächsten an negativ unendlich liegt), die nicht kleiner als das Argument und ganzzahlig ist. • numberround(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. attribute @ ../@lang 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() = number number elem[3] wählt das dritte elem-Kindelement des Kontextknotens aus. weitere Beispiele: para[5][@type="warning"] 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. 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) • 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) Matthias Weibel XML Technologien Seminar SS ´02

More Related