Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

XPath

aus Wikipedia, der freien Enzyklopädie

DieXML Path Language (XPath) ist eine vomW3-Konsortium entwickelteAbfragesprache, um Teile einesXML-Dokuments zu adressieren und auszuwerten. XPath dient als Grundlage einer Reihe weiterer Standards wieXSLT,XPointer undXQuery. XPath ist derzeit in der Version 3.1 vom 21. März 2017 standardisiert.

InWebbrowsern,XSLT-Prozessoren und anderer Software wird oft nur die XPath-Version 1.0 aus dem Jahr 1999 unterstützt, vereinzelt jedoch auch die XPath-Version 2.0 von 2007.

Prinzipien

[Bearbeiten |Quelltext bearbeiten]

EinXPath-Ausdruck adressiert Teile einesXML-Dokuments, das dabei alsBaum betrachtet wird, wobei einige Unterschiede zum „klassischen“ Baum derGraphentheorie zu beachten sind:

  • Knoten(nodes) des Baums sind der Dokumenten-Knoten, XML-Elemente, -Attribute, -Textknoten, -Kommentare, -Namensräume und -Verarbeitungsanweisungen.
  • Die Achsenpreceding,following,preceding-sibling undfollowing-sibling orientieren sich nicht allein an der Baumstruktur, sondern auch an der Reihenfolge der Deklaration der Elemente im XML-Dokument (Linked-Tree).

EinXPath-Ausdruck setzt sich aus einem oder mehrerenLokalisierungsschritten(Location Steps) zusammen. Sie werden mit dem Zeichen "/" getrennt.

EinLokalisierungsschrittaxis::node-test[predicate 1][predicate 2]... besteht aus:

Beliebig viele XPath-Ausdrücke lassen sich mit demPipe-Zeichen "|"mengenmäßig vereinigen.

Es gibt verschiedene Möglichkeiten, eine gesuchte Knotenmenge in XPath auszudrücken.

XPath operiert auf der logischen Dokumentenstruktur. Das bedeutet beispielsweise, dass Entitäten bereitsgeparst wurden oder dass auch eventuelle Standard-Attribute und -Knoten, die einSchema vorgeben, im Baum enthalten sind.

Achsen

[Bearbeiten |Quelltext bearbeiten]

Durch Angabe von Achsen wird ausgehend vom aktuellen Kontextknoten in der Baumstruktur des XML-Dokuments navigiert.

Wird dabei vom Dokument-Knoten (der Wurzel des XML-Dokuments) ausgegangen, wird dem XPath-Ausdruck das Zeichen "/" vorangestellt.

Achseadressierte KnotenAbkürzungPosition im u. a. Baum
(ausgehend von Element D)
der Dokument-Knoten/ (am Anfang eines XPaths)Dokument-Knoten
childalle direkt untergeordneten Kindknoten(wird weggelassen)E, G
parentder direkt übergeordnete Elternknoten..B
selfder Kontextknoten selbst (nützlich für zusätzliche Bedingungen).D
ancestoralle übergeordneten KnotenB, A
ancestor-or-selfalle übergeordneten Knoten inklusive des KontextknotensD, B, A
descendantalle untergeordneten Knoten.//E, F, G
alle Knoten des Dokuments außer dem Dokument-Knoten//A, B, C, D, E, F, G, H, I, J, K, L
descendant-or-selfalle untergeordneten Knoten inklusive des KontextknotensD, E, F, G
followingim XML-Dokument nachfolgend (ohne untergeordnete Knoten des selektierten Knotens)H, I, J, K, L
following-siblingwiefollowing, aber zugleich vom selbenparent stammendH, I
precedingim XML-Dokument vorangehend (ohne übergeordnete Knoten)C
preceding-siblingwiepreceding, aber zugleich vom selbenparent stammendC
attributeAttributknoten@
namespaceNamensraumknoten, die aus dem Attributxmlns stammen

Dieser Baum visualisiert beispielhaft die Struktur eines XML-Dokuments.

 
 
 
 
 
 
Dokument-Knoten
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
B
 
L
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
C
 
(D)
 
H
 
I
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
E
 
G
 
J
 
K
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
F
 
 
 
 
 
 
 
 
 
 
 
 

Die fünf Achsenself,ancestor,descendant,preceding undfollowing bilden ausgehend von einem beliebigen Knoten den Dokumentbaum vollständig und überlappungsfrei ab.[1]

Knotentests

[Bearbeiten |Quelltext bearbeiten]

Knotentests (geschriebenAchse::Knotentest) schränken die Elementauswahl einer Achse ein:

  • Angabe eines Elementnamens wählt alle entsprechenden Elemente.
    Beispiel:/descendant-or-self::Foo wählt alle Elemente im Dokument die den Namen „Foo“ haben.
  • Mit dem Zeichen* wählt man beliebige Elemente.
    Beispiel:/descendant-or-self::Foo/child::* wählt alle Elemente im Dokument die Kinder von Elementen mit dem Namen „Foo“ sind.
  • Mittext(),comment() undprocessing-instruction() lassen sich Knoten bestimmten Typs wählen.

Prädikate

[Bearbeiten |Quelltext bearbeiten]
Dieser Abschnitt bedarf einer grundsätzlichen Überarbeitung. Näheres sollte auf derDiskussionsseite angegeben sein. Bitte hilf mit, ihn zuverbessern, und entferne anschließend diese Markierung.

Durch Angabe von Prädikaten kann das Ergebnis weiter eingeschränkt werden. Prädikate werden in eckige Klammern eingeschlossen und können in beliebiger Zahl hintereinander geschrieben werden, wobei die Reihenfolge wesentlich ist. Prädikate können XPath-Ausdrücke enthalten, außerdem kann eine Vielzahl von Funktionen und Operatoren verwendet werden. Die sind zum Beispiel:

  • Zugriffsindex (Zählung beginnt bei 1)
  • Relationszeichen: = != and or < > <= >=
  • Zeichenkettenfunktionen:
    • normalize-space() – Entfernen von Leerzeichen am Anfang und Ende des Strings und Reduktion aufeinanderfolgender Leerzeichen auf eines.
    • substring() – Einen Teilstring selektieren.
    • substring-before(source, splitter) – Einen Teilstring vor dem ersten Vorkommen des Trennzeichens selektieren.
    • substring-after(source, splitter) – Einen Teilstring nach dem ersten Vorkommen des Trennzeichens selektieren.
    • string-length() – Die Länge des Strings.
  • Numerische Operatoren: + - * divmod
  • Knotenmengen-Funktionen:
    • count() – Anzahl der Knoten in einer Knotenmenge.
    • id() – Selektiert Elemente über dieDTD-ID.
    • name() – Name des Knotens.

Beispiele:

  • //child::Buch/Kapitel Alle Kapitel aller Bücher.
  • //child::Buch/Kapitel[1] Alle ersten Kapitel aller Bücher.
  • //child::Buch[count(./Seite)<=100][count(./Seite)>=10] liefert alle Knoten vom Typ „Buch“ die mindestens 10 aber höchstens 100 Kindelemente vom Typ „Seite“ haben.

(das Gleiche leistet//Buch[count(Seite)<=100 and count(Seite)>=10])

  • substring-before($variable, ':') Selektiert den Teilstring vor dem ersten Doppelpunkt aus dem Wert der Variable mit dem Namen "variable".

Beispiel

[Bearbeiten |Quelltext bearbeiten]

Gegeben sei folgendes XML-Dokument:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?><dok><!-- ein XML-Dokument --><kaptitle="Nettes Kapitel"><pa>EinAbsatz</pa><pa>NocheinAbsatz</pa><pa>UndnocheinAbsatz</pa><pa>Nett,oder?</pa></kap><kaptitle="Zweites Kapitel"><pa>EinAbsatz</pa><paformat="bold">ErsteZeile</pa><paformat="bold">ZweiteZeile</pa><paformat="italic">DritteZeile</pa></kap></dok>

Beispiele für XPath-Ausdrücke:

Ausdruckselektiert …
/dokdas erste Elementdok
/*das äußerste Element unabhängig vom Namen (jedes wohlgeformte XML-Dokument hat genauein äußerstes Element), hierdok
//dok/kapallekap-Elemente innerhalb allerdok-Elemente
//dok/kap[1]alle jeweils erstenkap-Elemente innerhalb allerdok-Elemente
//paallepa-Elemente auf allen Ebenen
//kap[@title='Nettes Kapitel']/paalle Absätze der Kapitel mit Titel „Nettes Kapitel“
//kap/pa[2]Jeweils das zweite pa-Element in den beiden Kapiteln.
//kap[2]/pa[@format='bold'][2]Zweite Zeile mit dem Format 'bold' im 2. Kapitel.
child::*alle Kindelemente des gegenwärtigen Knotens
child::paallepa-Kinder des gegenwärtigen Knotens
child::text()alle Textknoten des gegenwärtigen Knotens
.der gegenwärtige Knoten
./*alle Kindelemente des gegenwärtigen Knotens
./paallepa-Kinder des gegenwärtigen Knotens
paallepa-Kinder des gegenwärtigen Knotens
attribute::*alle Attribute des gegenwärtigen Knotens
namespace::*alle Namespaces des gegenwärtigen Knotens
//kap[1]/pa[2]/text()Textinhalt des zweitenpa-Elements im erstenkap-Element (also „Noch ein Absatz“)

XPath-Visualisierer helfen, die mitunter komplizierten XPath-Abfragen auf konkrete XML-Dateien anzuwenden.

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]
  • Michael Kay:XPath 2.0 Programmer’s Reference. Wrox Press, 2004,ISBN 0-7645-6910-4 (englisch)
  • Margit Becher:XML – DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM. W3L Verlag, Witten 2009,ISBN 978-3-937137-69-8. 

Weblinks

[Bearbeiten |Quelltext bearbeiten]
Wiktionary: XPath – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. w3.org
Standards desWorld Wide Web Consortiums (W3C)
VD
Empfehlungen

ActivityPub |ARIA |Canonical XML |CDF |CSS |DOM |Geolocation API |HTML |HTML5 |InkML |ITS |JSON-LD |MathML |OWL |P3P |PLS |PNG |RDF |RDF-Schema |RIF |SCXML |SISR |SKOS |SMIL |SOAP |SRGS |SSML |SVG |SPARQL |Timed Text |Turtle |VoiceXML |WSDL |XForms |XHTML |XHTML+RDFa |XInclude |XLink |XML |XML Base |XML-Encryption |XML Events |XML Information Set |XML Namespace |XML Schema |XML Signature |XPath |XPointer |XProc |XQuery |XSL |XSL-FO |XSLT(Elemente)

Arbeitsentwürfe
und Kandidaten

CCXML |CURIE |SMIL Timesheets |sXBL |WICD |XFrames |XBL | XHTML+MathML+SVG |XMLHttpRequest

Anmerkungen

XAdES |XFDL |XHTML+SMIL |XUP

Richtlinien

Web Content Accessibility Guidelines |Multimodal Interaction Activity |Markup Validation Service

Initiativen

Web Accessibility Initiative

Normdaten (Sachbegriff):GND:4613223-5 (GND Explorer,lobid,OGND,AKS)
Abgerufen von „https://de.wikipedia.org/w/index.php?title=XPath&oldid=257156141
Kategorien:
Versteckte Kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp