XML
Data Islands
DTD
Namensräume
Schema
XLink
XPath
Links
ASCII Table
ISO-8859-1
Impressum

XPath-Kompaktwissen

XPath

  • ist eine Syntax um Teile von XML Dokumenten zu adressieren.
  • arbeitet mit der abstrakten, logischen Baumstruktur eines XML Dokumentes.
  • unterstützt Namespaces.
  • verwendet eine kompakte nicht-XML Syntax.
  • kann innerhalb von XSLT für Vergleiche verwendet werden.
  • XPath stellt einen W3C-Standard dar und die Spezifikation kann unter folgender Adresse eingesehen werden: http://www.w3.org/TR/xpath

Beispiel

Nehmen wir einmal an, wir haben ein XML Dokument, das einen DVD-Katalog enthält.

<?xml version="1.0" encoding="UTF-8">
<catalog>
    <dvd region="2">
        <title>Van Helsing</title>
        <actors>
            <actor>Hugh Jackman</actor>
            <actor>Kate Beckinsale</actor>
        </actors>
        <price currency="EUR">16,99</price>
        <pubdate>2004</pubdate>
    </dvd>
    <dvd region="2">
        <title>Spiderman</title>
        <actors>
            <actor>Tobey Maguire</actor>
            <actor>Kirsten Dunst</actor>
        </actors>
        <price currency="EUR">11,99</price>
        <pubdate>2002</pubdate>
    </dvd>
</catalog>

Die einzelnen Elemente und Attribute dieses Dokumentes können mit XPath adressiert werden. XPath verhält sich dabei in weiten teilen so, wie man es von Pfaden im Dateisystem gewohnt ist.

Auswahl von Elementen über absolute Pfade

Ein XPath Ausdruck, der mit einem Slash beginnt startet vor dem Wurzelelement des Dokuments und wird als absoluter Pfad bezeichnet.

Auswahl des Root Elements "catalog"

/catalog

Auswahl aller dvd Elemente

/catalog/dvd

Auswahl aller actors Elemente aller dvds des Katalogs

/catalog/dvd/actors

Auswahl von Elementen unabhängig vom Pfad

Ein XPath Ausdruck, der mit einem Doppelslash beginnt selektiert alle Vorkommen eines Elements unabhängig davon auf welcher Unterebene zur aktuellen Ebene diese sich befinden.

Auswahl aller DVDs

//dvd

Auswahl aller Schauspieler

//actor

Kurzformen lokaler Pfadangaben

Neben der Möglichkeit absolute und unspezifizierte Pfade zu verwenden gibt es noch zwei weitere Möglichkeiten relative Pfadangaben zu formulieren.

./ verweist auf den aktuellen Knoten

../ verweist entweder auf den Eltern-Knoten oder falls kein solcher vorhanden ist auf den aktuellen Knoten.

Auswahl von Elementen mit Wildcards

Sie können das Sternchen als Wildcard verwenden um unbekannte Unterelemente auszuwählen. Die folgenden Ausdrücke selektieren jeweils alle "Kinder" unterhalb des angegebenen Knotens.

Auswahl aller Kinder des dvd Elements

/catalog/dvd/*

Auswahl aller Elemente

//*

Auswahl aller Schauspieler die über drei "Eltern"-Elemente verfügen.

/*/*/*/actor

Auswahl von Einzelelementen

Mit Hilfe von eckigen Klammern können statt ganzer Elementgruppen einer bestimmten Ebene, einzelne Elemente selektiert werden.

Wähle das erste Kind des Katalogs aus

/catalog/dvd[1]

Wähle das letzte Kind des Katalogs aus (bitte beachten Sie das es keine Funktion namens first() gibt, wählen Sie dazu die obige Variante.)

/catalog/dvd[last()]

Der folgende Ausdruck wählt alle DVDs, die über eine Schauspielerliste verfügen.

/catalog/dvd[actors]

Mit dieser Konstruktion können Sie alle DVDs auswählen, die nach 2003 erschienen sind.

/catalog/dvd[pubdate>2003]

Bedingungen können auch im vorderen Teil des Pfades formuliert werden. So selektiert der folgende Ausdruck alle Titel der DVDs die nach 2003 erschienen sind.

/catalog/dvd[pubdate>2003]/title

Auswahl von Attributen

In XPath werden Attribute mit dem Präfix @ ausgewählt. Die restliche Syntax bleibt identisch.

Dieser Ausdruck wählt alle dvd Elemente, die über das Attribut region verfügen.

//dvd[@region]

Das folgende Beispiel wählt alle Attribute namens region aus, unabhängig davon auf welcher ebene diese zu finden sind.

//@region

Möchten Sie alle Elemente von dvd selektieren, die über irgendein Attribut verfügen können Sie das folgendermaßen machen.

//dvd[@*]

Schließlich ist es natürlich auch Möglich die Selektion auf einen bestimmten Attributwert einzuschränken. Im Beispiel werden alle DVDs mit einem Wert von 2 für das Attribut region gewählt.

//dvd[@region=2]

XPath Operatoren

In Abweichung zu anderen Sprachen verwendet XPath einige spezielle Operatoren, die nicht unbedingt auf der Hand liegen, daher hier eine kleine Liste.

Beschreibung  Operator  Beispiel  Ergebnis 
Addition + 1+2 3
Subtraktion - 2-1 1
Multiplikation * 2*3 6
Division div 4 div 2 2
Modulo (Rest) mod 10 div 3 1
ist gleich = pubdate=2004  
ist ungleich != region!=2  
ist größer als > pubdate>2003  
ist größer gleich  >= pubdate>=2004  
ist kleiner  < pubdate<2004  
ist kleiner gleich  <= pubdate<=2003  

Sie können auch die logischen Operatoren or und and einsetzen um mehrere Bedingungen miteinander zu verbinden.