XML-Know How

Absolute Pfadangaben / relative Pfadangaben

Während wir es in obigen Beispielen ausschließlich mit absoluten XPath-Pfaden zu tun hatten (also den Einstiegspunkt in das Dokument immer ausgehend von Wurzelknoten gewählt haben), werden in den Sprachen wie XSLT oder Schematron häufig relative Pfade benötigt, um ausgehend von einem beliebigen Kontextknoten in alle Richtungen navigieren zu können. Relative Pfade unterscheiden sich von absoluten Pfaden darin, dass sie nicht mit einem Slash „/“ – also nicht ausgehend vom Wurzelknoten – beginnen.

In unserem Beispiel sei das Element „name“ der ersten Adresse der aktuelle Kontextknoten, also die Position, an der die XML-Verarbeitung mit XSLT gerade angekommen ist. Wird nun ein Sprung zum Elternelement – also quasi rückwärts – benötigt (z. B. um dort einen Attributwert auszulesen und weiter unten wieder einzusetzen), erfordert dies einen relativen Pfad, in diesem Fall den XPath-Ausdruck „..“. Durch diesen wird eine Ebene höher auf den Elementknoten „adresse“ gesprungen.

Auch beim Einsatz von relativen Pfaden sind die einzelnen Navigationsschritte kombinierbar. Der folgende XPath-Ausdruck selektiert das Element „postfach“ der ersten Adresse.

Ausgehend von der aktuellen Position im Dokumentbaum, wird durch „..“ eine Ebene nach oben auf navigiert. Anschließend erzeugt einen Sprung auf das Kindelement „postfach“.

 

 

 

 

 

 

 

 

 

 

Neben den Eltern- und Kindachsen stehen in XPath insgesamt 13 Achsen zur Navigation in XML-Dokumenten zur Verfügung. Dies mag die Mächtigkeit dieser Sprache verdeutlichen.[1] So kann etwa mit dem nachfolgenden XPath-Ausdruck [2] der gleiche Effekt erzielt werden wie in dem obigen Beispiel, ohne zunächst zum Eltern- und von dort aus wieder zum Kindelement springen zu müssen:

         following-sibling::postfach

Hier wird zunächst die Achse gewählt (in diesem Fall alle folgenden Geschwister des aktuellen Knotens), danach folgt die Angabe, welches Geschwisterelement ausgewählt werden soll (in diese Fall das Element „postfach“).


     

  1. ↑  Im Anhang des Kompendiums finden Sie eine vollständige Auflistung der Achsen mit einer Kurzbeschreibung.
  2. ↑  Häufig verwendete Achsen, wie die implizite Kindachse oder Elternachse, können in XPath mit einer abgekürzten Schreibweise verwendet werden. Alle anderen Achsen müssen immer explizit angegeben werden. Die Syntax dafür lautet Achse::Knotentest
  3.