Lehrer Nussbaumer - XML, XSL et cetera |
---|
XMLXSL
AnwendungenEditorenParser u.a.Schnittstellen----------------- letzte änderung: 09 December 2021 ----------------- Lehrer Nussbaumers Seite ... in Arbeit ... |
XPath
XPath ist die Abkürzung für "XML Path Language". Sie ermöglicht das gezielte Auffinden einzelner oder mehrerer XML-Daten. Sie spielt beispielsweise in Zusammenhang mit XSLT eine wichtige Rolle.
Zur Zeit wird XPath 2.0 entwickelt. Zum AnfangXPath-Ausdrücke kennen lernenFür die folgenden Beispiele verwenden wir die folgende XML-Datei "weblinks.xml" (und eine entsprechende DTD): <?xml version="1.0" standalone="no"?> <!DOCTYPE weblinks SYSTEM "weblinks.dtd"> <weblinks> <eintrag id="0"> <kategorie>edv</kategorie> <url>http://www.w3.org</url> <notiz>W3-Konsortium</notiz> <notiz>Technische Referenz</notiz> </eintrag> <eintrag id="1"> <kategorie>phy</kategorie> <url>http://www.cern.ch</url> <notiz>Europaeisches Kernforschungszentrum</notiz> <notiz>Aktuelles zur Hochenergiephysik</notiz> <notiz>Materialien zur Elementarteilchenphysik</notiz> </eintrag> <eintrag id="2"> <kategorie>ast</kategorie> <url>http://www.nasa.gov</url> <notiz>Amerikanische Weltraumfahrtbehoerde</notiz> <notiz>Aktuelle Raumfahrtprojekte</notiz> <notiz>Historische Daten</notiz> </eintrag> <eintrag id="3"> <kategorie>ast</kategorie> <url>http://www.heavens-above.com</url> <notiz>Der abendliche Sternhimmel ...</notiz> <notiz>Beobachtung von Satelliten</notiz> <notiz>Iridium Flares</notiz> <notiz>Mond- und Sonnenbahn</notiz> </eintrag> <eintrag id="4"> <kategorie>edv</kategorie> <url>http://www.suse.de</url> <notiz>phy</notiz> <notiz>SuSE, Linux</notiz> <notiz>Treiber-Datenbank</notiz> </eintrag> <eintrag id="5"> <kategorie>edv</kategorie> <url>http://www.microsoft.com</url> <notiz>Microsoft, Windows</notiz> <notiz>phy</notiz> <notiz>Sicherheits-Updates</notiz> <notiz>OS-Patches</notiz> </eintrag> </weblinks> Für eine XML-Datei können XPath-Ausdrücke mit Hilfe der frei verfügbaren Software "XPath-Tester" ausprobiert werden. Diese JAVA-Applikation wird als .jar-Datei gespeichert. Sie wird beispielsweise mit nus@ice:~/xpathtester> java -jar xpathtester_1_4_saxon.jargestartet. Nach der Auswahl der XML-Datei wird der Inhalt als JTree-Objekt angezeigt, dessen Elemente per Mausklick angezeigt werden können:
Interessant ist jedenfalls, dass XPath-Ausdrücke in "Echtzeit" eingegeben und ausgewertet werden können (dazu muss die Auswahlbox zu "Real Time Query" angehakt werden):
KnotenDie Elemente eines XML-Baumes werden an Hand der Knoten gefunden. Knoten können selbst Verzweigungspunkte zu mehreren Knoten darstellen oder auch nur ein einzelnes Element enthalten. Wie man leicht erkennt, werden oft mehrere Knoten zusammen ausgewählt - man spricht in diesem Fall von Knotenmengen (node-sets). Einzelne Elemente aus solchen Knotenmengen werden an Hand ihres Index gefunden; dieser Index beginnt jedenfalls bei 1:
ZeichenkettenwerteVon jedem Knoten eines XML-Dokumentes kann der Zeichenkettenwert mit Hilfe der XPath-Funktion string() ermittelt werden:
Datentypen und OperatorenNeben den schon verwendeten Datentypen Knotenmenge (node-set) und Zeichenketten (string) werden Boole'sche Werte und Zahlen verwendet. Sie bilden mit den üblichen Arithmetischen, logischen und Vergleichsoperatoren so genannte XPath-Ausdrücke. Zum AnfangLokalisierungspfade und AchsenXML-Elemente werden an Hand des Knotenmodells eindeutig lokalisiert. Lokalisierungspfade wählen daher bestimmte Knoten (Knotenmengen) in XML-Dokumenten aus. Alle Knoten werden dabei durch so genannte Achsen bestimmt, die vom jeweils aktuellen Knoten aus berechnet werden; dieser Bezugspunkt wird Kontextknoten genannt. Wir untercheiden 13 Achsen:
Im folgenden Beispiel wählen wir alle Vorfahren des durch einen blauen Rahmen gekennzeichneten Kontextknotens aus:
Interessant ist, dass die Knoten immer "vom Kontextknoten weg" nummeriert werden. Wie überprüfen dies anhand des folgenden Ausdruckes:
Aus dieser Eigenschaft heraus unterscheiden wir 8 vorwärtsgerichtete Achsen (child, descendant, attribute, self, descendant-or-self, following-sibling, following, namespace) und 5 rückwärtsgerichtete Achsen (parent, ancestor, preceding-sibling, preceding, ancestor-or-self). Zum AnfangPrädikateKnotenmengen werden an Hand so genannter Prädikate (predicates) genauer spezifiziert. Diese Prädikate stehen in eckigen Klammern und können häufig auch abgekürzt werden. In den vorangegangenen Beispielen wurde etwa das Prädikat [position()=2] zu [2] vereinfacht verwendet...
Prädikate |