Gliederung 1 Einfhrung XPath berblick Aufbau eines XPath
Gliederung 1. Einführung XPath • Überblick • Aufbau eines XPath Ausdrucks • Beispiele w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Überblick Zur Adressierung von Elementen und Attributen in Stylesheets <xsl: template match=„/"> <xsl: when test="aco: Meta. Information/aco: Meta. Data[@type='medium']='text'"> <xsl: value-of select="@name"/> <xsl: if test="aco: Meta. Information/aco: Meta. Data/@type='size_x'"> (XPath Ausdrücke sind blau) w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Aufbau eines XML Documents <? xml version="1. 0"? > <? xml-stylesheet type="text/xsl" href="recipe. xsl"? > <movie id="67" genre="sci-fi"> <title>X-Men</title> <!-- in case you didn't know, this is based on the comic - Ed --> <cast>Hugh Jackman, Patrick Stewart and Ian Mc. Kellen</cast> <director>Bryan Singer</director> <year>2000</year> <? play_trailer? > </movie> w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Aufbau In Root Element des XML Dokuments sind weitere Elemente hierarchisch eingebettet => Baumstruktur [root] | -- movie | -- id | -- genre | -- title | -- X-Men | -- in case you didn't know. . . | -- cast | -- Hugh Jackman, Patrick Stewart and Ian Mc. Kellen | -- director | -- Bryan Singer | -- year | -- 2000 | -- play_trailer Mit XPath ist jeder Knotenpunkt erreichbar und veränderbar
Aufbau Unterteilung der Knotenpunkte in: ê Elementknoten: • alle Elemente in XML sind auch Elementknoten in Xpath • z. B. Title ê Textknoten: • alle Zeichensätze zwischen zwei Elementen sind Textknoten • z. B. „X-Men“ • enthaltene Entities werden automatisch übersetzt ê Attributknoten: • alle Attribute der Elemente • sind immer Kind-Knotenpunkt des zugehörigen Elements • z. B. Attribut „genre“ ist Kind-Knoten von „movie“
Aufbau Unterteilung der Knotenpunkte in: ê Namespace-Knoten: • in XML definierte Namespaces, auch in XPath als einzelne Knoten repräsentiert • sind wie die Attribute auch immer der Kind-Knoten des zugehörigen Elements ê Processing Instruction - Knoten ê Kommentar - Knoten
Adressierung eines Knotens: ê ê absolut (ausgehend vom Root-Knoten) oder relativ (ausgehend vom aktuellen Knoten) erfolgt meist in mehreren Unterschritten, die durch „/“ voneinander getrennt sind Aufbau eines Adressierungsschrittes: axis : : node-test [filter] ê axis - beschreibt die Beziehung die beim Auswählen verwendet werden soll (child, parent, . . . ) ê node-test – gibt den Typ der auszuwählenden Knoten an ê filter - ist optional zum ausfiltern bestimmter Knoten
Adressierung Werte für axis: ê ê ê self - selektiert den aktuellen Knoten parent - selektiert den Vaterknoten child - selektiert alle Kindknoten attribute - selektiert die Attribute des aktuellen Knotens ancestor - selektiert alle Vorfahren descendant - selektiert alle Kinder und Kindeskinder ancestor-or-self - selektiert alle Vorfahren und den aktuellen Knoten selbst descendant-or-self - selektiert alle Kinder und den aktuellen Knoten following-silbing, preceding-silbing - selektiert alle Knoten die im Dokumentbaum auf gleichem Level entweder nach oder vor dem aktuellen Knoten sind following, preceding - selektiert alle Knoten welche nach bzw. vor dem aktuellen knoten sind namespace - selektiert alle Knoten die im gleichen Namespace wie der aktuelle knoten sind
Adressierung Werte für node-test: ê meist der Name des gewünschten Knotentyps ê oder eine vordefinierte XPath Funktion • text() – wählt alle Text-Knoten • comment() – wählt alle Kommentar-Knoten • node() – wählt alle Knoten
Adressierung Werte für Filter: • Ausdruck, der auf jeden Knoten angewendet wird • Nur wenn der Ausdruck wahr ist, ist der Knoten in der Ergebnismenge • Vergleichsoperatoren (=, <, >, etc), logische Operatoren (and, or), arithmetische Operatoren (+, -, *, div, mod) und Funktionsaufrufe • Einige vordefinierte Funktionen: ê ê name() liefert den Namen des Elements count() liefert die Anzahl ausgewählter Elemente position() liefert die Position des Knotens in der Ergebnissmenge … für komplette Liste siehe Links am Ende w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Abkürzungen • Wenn axis: : nicht angeben ist, wird child: : angenommen: child: : movie/child: : title ist gleich movie/title • @ ist die Kurzform für attribute: : movie/attribute: : id ist gleich movie/@id • * Wählt alle Unterknoten, @* wählt alle Attribute des aktuellen Knotens movie/child: : node() ist gleich movie/* movie/attribute: : node() ist gleich movie/@* • . Ist die Kurzform für self: : node() und wählt somit nur den aktuellen Knoten self: : node()/@id ist gleich. /@id • . . Ist die Kurzform von parent: : node() und wählt den Vaterknoten parent: : node()/@id ist gleich. . /@id • // Ist die Kurzform von descendant-or-self: : node()
Beispiele para Die einfachste Form ist nur der Name eines Elementes. Diese Angabe liefert alle Unterknoten vom Typ para. @role Diese Angabe liefert das role Attribut des aktuellen Knotens. list/item Dieser Pfad liefert alle Knoten vom Typ item, die als Vaterknoten einen Knoten vom Typ list haben der wiederum ein Kindknoten vom aktuellen Knoten ist. list//para Dieser Pfad liefert alle Knoten vom Typ para, die als Vorgänger einen Knoten vom Typ list haben welcher ein Kindknoten vom aktuellen Knoten ist. Also zum Beispiel: list/item/para oder list/item/note/para etc. w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Beispiele note[@class="warning"] Diese Angabe findet alle Unterknoten vom Typ note, die ein Attribut namens class mit dem Wert „warning“ haben. section[title="Introduction"] Findet alle Kindknoten vom Typ section, die einen Unterknoten vom Typ title mit dem Wert „Introduction“ haben. section[2] Dieser Pfad liefert den 3. Unterknoten, der vom Typ section ist. //section[title="Examples"]/example[last()] Findet den letzten Knoten vom Typ example (im gesamten Dokument), der einen Vaterknoten vom Typ section hat welcher noch einen Unterknoten vom Typ title mit dem Wert „Examples“ hat. w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Beispiele <section id=„ 1“> <title>Examples</title> <example>Beispiel 1</example> <example>Beispiel 2</example> <example>Beispiel 3</example> <example>Beispiel 4</example> <example>Beispiel 5 (letztes Beispiel)</example> </section> w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
Links Formale Spezifikation: http: //www. w 3. org/TR/xpath Erklärungen und Beispiele: http: //www. devshed. com/Server_Side/XML/XPath/ http: //www. arbortext. com/Think_Tank/XML_Resources/Issue_one/is sue_one. html w. Einführung XPath Obenaus Dirk Ulbricht | Thomas
- Slides: 15