Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

XML Grundkurs

Grundlagen von XPath

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
XPath ist eine grundlegende Technologie, wenn es um die Weiterverarbeitung von XML geht. Dieser Film beschreibt das Konzept dahinter.
11:04

Transkript

In diesem Film möchte ich Sie mit den Grundlagen von XPath vertraut machen. XPath ist dazu da, in einem XML-Dokument zu navigieren. Dafür stellt man sich dieses XML-Dokument als eine Baumstruktur vor. In dem kleinen Beispiel, was hier dargestellt ist, ist das Wurzelelement der XML-Datei "buch". Bei XPath gibt es noch ein Wurzelelement außerhalb, also in der Ebene über "buch". Da drunter liegen dann hier verschachtelt die beiden Elemente "kapitel", und diese haben in diesem kleinen Beispiel hier zwei Elemente "absatz", die dort enthalten sind. Die grundsätzliche Idee ist nun, dass ich bestimmte Knoten anspringen kann, um dort halt bestimmte Operationen durchzuführen. Also bspw. den Inhalt auslesen, um eine bestimmte Frage zu beantworten oder einfach diesen Inhalt eines bestimmten Knotens auszugeben. Das passiert dann, wenn man die Sprache XQuery anwendet, die halt durch XPath ergänzt wird bzw. XPath ist ein Teil von XQuery. Oder halt um etwas zu transformieren, also von einem Element in ein anderes in einer anderen DTD zu bringen. Das passiert dann bei XSLT. Und auch hier benötigt man XPath, um die bestimmten Knoten anzuspringen, auf denen diese Transformation überhaupt gemacht wird. D. h. XPath ist für sehr viele Dinge in XML-Prozessen notwendig. Und darum ist es auch wirklich wichtig, sich damit zu beschäftigen. Zusätzlich zur Baumstruktur ist noch die Dokumentenreihenfolge in XPath sehr wichtig. Eigentlich ist das relativ einfach. Es ist genau die Reihenfolge, in der das XML-Dokument von oben nach unten geschrieben ist. Es ist genau die Reihenfolge, in der die Elemente geöffnet werden. Wenn Sie sich das jetzt vorstellen: Wir öffnen das "buch"-Element in unserer XML-Datei und da drunter ist dann verschachtelt das "kapitel"-Element. In dem "kapitel"-Element sind die "absatz"-Elemente verschachtelt, und dann wird das nächste "kapitel"-Element geöffnet. Also d. h. 1 ist das "buch"-Element, 2 das erste "kapitel"-Element im "buch"-Element, 3 das erste "absatz"-Element in diesem "kapitel"-Element. Dann wird irgendwann das "kapitel"-Element nach allen "absätzen" geschlossen, und das nächste "kapitel"-Element wird geöffnet usw. Wir haben uns das jetzt alles abstrakt vorgestellt, und natürlich malt man nicht immer Bäume auf, wenn man XPath schreibt, sondern es gibt eine Syntax. Und es gibt sogar zwei unterschiedliche Formen der Syntax; eine Langform und eine Kurzform. Um überhaupt erstmal eine Idee davon zu bekommen, was hier passiert, schauen wir uns die Langform an. Es gibt Achsennamen. Also eine Achse ist etwas, wenn wir halt in diesem Baum vorgehen, dann gibt es ja Knoten, der wirklich benannt wird, und es gibt ein Prädikat. Ein Prädikat kann diesen Knoten noch genauer bestimmen. Also man kann sagen, der erste Knoten, der erste Absatzknoten oder der zweite Absatzknoten. Also man kann das im Prinzip entsprechend lokalisieren und auch andere Dinge im Prädikat angeben. Ich möchte Ihnen jetzt die unterschiedlichen Achsen-Arten, die man in XPath kennt, vorstellen. Also d. h. man schaut sich so ein XML-Dokument oder so einen Baum nicht nur von oben nach unten an, sondern man muss auch mal in andere Richtungen navigieren. Grundsätzlich ist es so, wenn ein Prozessor durch so ein XML-Dokument geht, dann ist er halt immer an einer bestimmten Stelle, immer an einem bestimmten Knoten in diesem Baum. Und um dann woanders hinzugehen, muss ich natürlich in die entsprechende Richtung gehen. Also d. h. es gibt nicht nur eine Richtung von unten nach oben, sondern es gibt halt auch von links nach rechts, von oben nach unten usw. usf. Okay, die erste und einfachste Achse ist eigentlich fast keine, d. h. wir bleiben beim gleichen Knoten; "self". Das, was ich hier jetzt angegeben habe in XPath, ist damit so eine ganz einfache Angabe. Also die Achse ist "self" und der Knotentest ist "buch". Wir sind auf der gleichen Ebene im "buch". Jetzt ist der Prozessor bei "buch" und wir wollen woanders hingehen. Wir wollen im Prinzip zu der "kapitel"-Ebene gehen. Das ist die Achse "child". Das sind genau die ersten Nachkommen, also wirklich nur die Kinder und nicht die Enkel; wirklich nur die ersten Nachkommen von "buch". Und das, was ich hier dann geschrieben habe, ist die Achse "self::buch" und wir gehen nach "child". Und mit dem Sternchen sage ich, ich möchte dort alle Knoten ansprechen. Und das ist hier auch dargestellt. Also ich habe dann halt die beiden "kapitel" umrahmt. Das sind unsere Ziele, wo wir dann hingehen. Jetzt gehen wir zu den Vorfahren, zu allen Vorfahren, also nicht nur zu den direkten "ancestors". D.h. wir kommen von "self::absatz" und sagen, wir wollen jetzt alle Vorfahren ansprechen, "ancestor", also "kapitel" und "buch". Das könnten wir natürlich auch einschränken und sagen, wir wollen nur zum "buch", "ancestor::buch" oder nur "kapitel::ancestor::/kapitel". Die nächste Achse, die es gibt, ist dann die Nachkommen-Achse; "descendant". Und auch hier, wir gehen vom "buch" aus, "self::buch", und das nächste, was wir anspringen in der "descendant"-Achse, sind dann alle Knoten, die es dort gibt. Und Sie sehen, ich habe dann alle entsprechenden Knoten angesprochen. Und das könnte man jetzt natürlich auch einschränken, indem man halt sagt, ich will nur zu den "absätzen". Das ist der "self::buch/descendant::*-absatz". Und dann könnte man das noch einschränken, indem man sagt, nur der erste "absatz". Und das heißt dann im Prädikat "location1". Die nächste Achse ist dann "following". Das sind im Prinzip nicht die Nachkommen, sondern alles, was dann wirklich nach links folgt. Die nächste Achse, die es gibt, ist "following-sibling". Also d.h. wirklich nur die folgenden Knoten, die aber auch wirklich nur genau auf der Geschwister-Ebene, also auf der gleichen Ebene im Baum da sind. Und hier steht es auch, Sie sehen, "self::kapitel". Also ich bin da, wo ich bin, und dann ist halt auf der Achse "following-sibling". Und in diesem Fall gibt es da nur einen weiteren Knoten, nämlich den "kapitel"-Knoten. "Parent" ist dann genau einer weiter hoch, also das ist genau das Umgedrehte vom "child"; das sind halt die Eltern. Und "preceding" ist der Gegensatz zu "following". Ich gehe halt nach links im Baum, also d. h. ich bin jetzt beim zweiten "kapitel" und gehe nach links in dem Baum. Das sind die unterschiedlichen Achsen, die es in XPath gibt. Und hier nochmal ein Beispiel für den Prädikats-Ausdruck, den ich eben schon mal kurz erwähnt habe. Ich sage halt, ich will zu dem ersten "absatz" vom "buch" aus, "self::buch/descendant::absatz", also ich gehe auf der Nachfolger-Achse zum "absatz" und sage da genau, ich will "position()1", also den ersten "absatz", den es dort gibt. Und so kann ich genau diesen Knoten anspringen. Das ist die Idee der Navigation durch XPath in einem XML-Dokument. Ich habe ja jetzt noch gesagt, es gibt nicht nur die Langform der Syntax, sondern auch die Kurzform. Die Kurzform ist die, und hier sieht man schon warum, die in der Praxis viel öfter eingesetzt wird. Aber man muss natürlich erst mal begreifen, was passiert da überhaupt, um diese Kurzform dann nutzen zu können. Also ich habe das Beispiel, ich gehe von dem "buch" zum ersten "kapitel" und dann weiter zum "absatz". Also d.h. ich springe wirklich von "child" zu "child". Also "child::buch" zum nächsten "kapitel", zum nächsten "absatz", also zum ersten "kapitel" unter "buch", und dort will ich die Einleitung haben. Also ich will halt wirklich einen "absatz" haben, der ein Attribut hat; ein "role" habe ich es hier genannt. Das wäre dann möglicherweise ein Attribut aus der DTD.book, das den Attribut-Wert "Einleitung" hat. Und in der Kurzform ist es dann einfach nur "\buch", "\kapitel". Also der Backslash sagt immer, springe zum nächsten "child", "kapitel" in der Position 1, also d.h. wirklich das erste "kapitel" unter "buch", und dann zum "absatz" und suche dort den "absatz", der im "role"-Attribut den Wert "Einleitung" hat. Das ist praktisch die Kurzform, die Kurz-Syntax, die in XPath geschrieben wird. Und das ist genau die Syntax, die Ihnen in der Praxis am häufigsten begegnen wird. Und jetzt führe ich nochmal ganz kurz aus, wie man von dieser Langform auf die Kurzform kommt. Also "child" einfach weglassen, diese Achsenbezeichnung. Also, wenn ich wirklich da bleibe bei dem Knoten, wo ich bin, dann setze ich einen Punkt. Wenn ich nach oben möchte, also "parent", dann setze ich zwei Punkte. Und wenn ich ein Attribut setze, dann setze ich einfach ein "@", also "attribute", Doppelpunkt ersetze ich einfach durch ein "@". Das sind so die Möglichkeiten und da gibt es dann halt ein paar mehr, wie ich von der Langform zur Kurzform komme. Ich habe es vorhin schon kurz gesagt, wo wird XPath überhaupt angewendet? Also ich brauche es beim XSLT, um transformieren zu können. Also, um dann wirklich sagen zu können, dieser eine Knoten "überschrift" soll halt auch eine Überschrift sein, aber in einer anderen DTD, wo das Element anders benannt wird. Dann muss ich ja erstmal zu dem Knoten springen und dann diese Transformations-Regel dort festlegen. In Schematron brauche ich das auch. Ich muss ja erstmal zu dem Knoten springen, wo ich prüfe, ist das jetzt eine Zahl, ist das jetzt ein Name oder irgendetwas anderes prüfe, um dann einen Report auszugeben. Auch dafür brauche ich Schematron. In XQuery, also XPath 2.0 ist eine Teilmenge von XQuery, da brauche ich es natürlich auch, um hinzuspringen und da überhaupt dann Information auszulesen, um halt bestimmte Informationen wiederzugeben. Und einfach in der Kommunikation über eine XML-Struktur; also, wenn Sie mit XML-Dateien arbeiten und dann jemandem sagen wollen, an der Stelle stimmt etwas nicht oder genau diese Art von Information soll dahin transformiert werden, dann wählen Sie wahrscheinlich, wenn beide XPath können, nicht unbedingt einen Screenshot von der XML-Datei machen, sondern wirklich die Stelle ganz klar lokalisieren mit einem XPath-Ausdruck. Und dann wissen beide ganz genau, um welche Stelle es geht und was wie wo geprüft werden soll oder weiter bearbeitet werden soll oder worum es auch immer in Ihrer Kommunikation an der Stelle geht. Gut, Sie haben in diesem Film also gelernt, wie wichtig XPath bei der Arbeit mit XML ist und welche Achsen-Arten es gibt und die Syntax, welche Grundsätze es in der Syntax von XPath gibt.

XML Grundkurs

Lernen Sie, wie XML-Dateien aufgebaut sind, worauf es ankommt, wenn man XML editiert, und was Dokumentenklassen sind.

2 Std. 28 min (28 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:07.11.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!