XSL: XPath Path Language
XPath traversiert den DOM-Baum des XML-Dokuments, um einzelne Knoten (Nodes) zu finden. Das XML-Dokument wird dazu als Baumstruktur betrachtet. XPath navigiert nun über die einzelnen Knoten in dieser Baumstruktur.
XPath wurde ursprünglich geschrieben, um ein gemeinsames Modell / eine gemeinsame Syntax für XPointer und XSLT zu bekommen.
XPath kann außerdem simple Berechnungen mit Integer und String durchführen.
XPATH Versionen
Versionen
- XPath v1.0
- XPath v2.0
- XPath v3.0 / v3.1
XPath 1.0: Syntax und Semantik
Der wichtigste XPath-Ausdruck is der location path. Dieser besteht aus ein paar Lokalisierungsschritten. Jeder Lokalisierungsschritt hat drei Komponenten:
- eine Achse
- einen Knoten
- 0 oder mehr Prädikate
Jeder locations path wird im Hinblick auf einen Kontext-Knoten realisiert. Die Achse gibt mit Eltern-/Kind-Verhältnissen an, in welche Richtung von diesem Kontext Knoten navigiert werden soll. Das Prädikat wird benutzt, um einzelne Eigenschaften an die Zielknoten zu vergeben, diese werden wiederum in XPath notiert.
XPath kann entweder abbreviated oder full syntax notiert werden.
Beispiele-Sammlung I
Beispiel I XML-Mutter
<A>
<B>
<C/>
</B>
</A>
XPath I.1: abbreviated syntax
A/B/C
selektiert C-Elemente, die ein Kind des B-Elements sind, das ein Kind des A-Elements ist.
XPath I.2: abbreviated syntax
A//B/*[1]
selektiert die ersten Kinder aller B-Elemente, die Abkömmlinge (//) des A-Elements sind.
XPath I.1: full syntax – Simpelster XPath in full syntax
/child::A/child::B/child::C
selektiert C-Elemente, die ein Kind des B-Elements sind, das ein Kind des A-Elements ist.
XPath I.2: full syntax
child::A/descendant-or-self::node()/child::B/child::*[position()=1]
selektiert die ersten Kinder aller B-Elemente, die Abkömmlinge (//) des A-Elements sind.
Beispiel-Sammlung II
Gegeben sei folgendes Mutter-XML:
<Wikimedia>
<projects>
<project name="pieli.net" launch="1994-03-15">
<editions>
<edition language="English">en.pieli.net</edition>
<edition language="German">de.pieli.net</edition>
<edition language="French">fr.pieli.net</edition>
<edition language="Polish">pl.pieli.net</edition>
<edition language="Spanish">es.pieli.net</edition>
</editions>
</project>
<project name="rundfunk.pieli.net" launch="2004-12-31">
<editions>
<edition language="English">rundfunk.pieli.net/en</edition>
<edition language="French">rundfunk.pieli.net/fr</edition>
<edition language="Vietnamese">rundfunk.pieli.net/vi</edition>
<edition language="Turkish">rundfunk.pieli.net/tr</edition>
<edition language="Spanish">rundfunk.pieli.net/es</edition>
</editions>
</project>
</projects>
</Wikimedia>
XPath II.1
/pieli.net/projects/project/@name
selektiert alle Namens-Attribute aller Projekte
XPath II.2
/pieli.net//editions
selektiert alle Sprachen
XPath II.3
/pieli.net/projects/project/editions/edition[@language='English']/text()
selektiert alle Projekte (innenliegende Adresse), solange das Attribut language = English ist
XPath II.4
/pieli.net/projects/project[@name='pieli.net']/editions/edition/text()
selektiert alle Projekte (innenliegende Adresse), solange das Attribut name = pieli.net ist
XML-Workshop: XSLT – Übersicht