- XPath
-
Die XML Path Language (XPath) ist eine vom W3-Konsortium entwickelte Abfragesprache, um Teile eines XML-Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung am 23. Januar 2007 hat XPath 2.0 die seit 1999 gültige Version XPath 1.0 abgelöst. XPath 2.0 hat einige Konzepte von XPath 1.0 neu definiert und verfügt zudem über einen wesentlich erweiterten Funktionsumfang.
Inhaltsverzeichnis
Prinzipien
Ein XPath-Ausdruck adressiert Teile eines XML-Dokuments, das dabei als Baum betrachtet wird, wobei einige Unterschiede zum „klassischen“ Baum der Graphentheorie zu beachten sind:
- Knoten (nodes) des Baumes sind XML-Elemente, -Attribute, -Textknoten, -Kommentare, -Namensräume und -Verarbeitungsanweisungen.
- Nur XML-Elemente gelten als
child
im Sinne einer XPath-Achse. Alle anderen Knoten stehen auf der gleichen Hierarchie-Stufe des Baumes wie der Knoten, der sie enthält. - Die Achsen
preceding
,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).
Ein XPath-Ausdruck setzt sich aus einem oder mehreren Lokalisierungsschritten (Location Steps) zusammen. Sie werden mit dem Zeichen "/
" getrennt.Ein Lokalisierungsschritt
axis::node-test[predicate 1][predicate 2]...
besteht aus:- Achse (axis) und
- Knotentest (node-test),
- optional gefolgt von einem oder mehreren Prädikaten (predicates):
Beliebig viele XPath-Ausdrücke lassen sich mit dem Pipe-Zeichen | mengenmäßig vereinigen.Es gibt stets verschiedene Möglichkeiten, eine gesuchte Knotenmenge in XPath auszudrücken.
XPath operiert auf der logischen Dokumentenstruktur. Das bedeutet zum Beispiel, dass man Entitäten schon geparst vorfindet oder dass auch eventuelle Standard-Attribute und -Knoten, die durch ein Schema vorgegeben werden, schon im Baum enthalten sind.
Achsen
Durch Angabe von Achsen wird ausgehend vom aktuellen Kontextknoten in der Baumstruktur des XML-Dokuments navigiert.
Wird dabei von der Wurzel des XML-Dokuments ausgegangen, wird dem XPath-Ausdruck das Zeichen
/
vorangestellt.Achse adressierte Knoten Abkürzung child
direkt untergeordnete Knoten wird weggelassen
parent
der direkt übergeordnete Elternknoten ./..
self
der Kontextknoten selbst (nützlich für zusätzliche Bedingungen) .
ancestor
übergeordnete Knoten ancestor-or-self
übergeordnete Knoten inklusive des Kontextknotens descendant
untergeordnete Knoten .//
descendant-or-self
untergeordnete Knoten inklusive des Kontextknotens following
im XML-Dokument nachfolgend (ohne untergeordnete Knoten) following-sibling
wie following
, aber zugleich vom selbenparent
stammendpreceding
im XML-Dokument vorangehend (ohne übergeordnete Knoten) preceding-sibling
wie preceding
, aber zugleich vom selbenparent
stammendattribute
Attributknoten @
namespace
Namensraumknoten, die aus dem Attribut xmlns
stammenDie fünf Achsen
self
,ancestor
,descendant
,preceding
undfollowing
bilden ausgehend von einem beliebigen Knoten den Dokumentbaum vollständig und überlappungsfrei ab.[1]Knotentests
Knotentests (geschrieben
Achse::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. - Mit
text()
,comment()
undprocessing-instruction()
lassen sich Knoten bestimmten Typs wählen.
Prädikate
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 verwendet werden. Die sind zum Beispiel:
- Relationszeichen:
= != and or < > <= >=
- Zeichenkettenfunktionen:
normalize-space()
– Entfernen von Leerzeichen am Anfang und Ende des Strings und Reduktion aufeinanderfolgender Leerzeichen auf einessubstring()
– Einen Teilstring selektierensubstring-before(source, splitter)
– Einen Teilstring vor dem ersten Vorkommen des Trennzeichens selektierensubstring-after(source, splitter)
– Einen Teilstring nach dem ersten Vorkommen des Trennzeichens selektierenstring-length()
– Länge des Strings
- Numerische Funktionen:
+ - * div mod
- Knotenmengen-Funktionen:
count()
– Anzahl der Knoten in einer Knotenmengeid()
– Selektiert Elemente über die DTD-IDname()
– Name des Knotens
Beispiele:
//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
Gegeben sei folgendes XML-Dokument:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <dok> <!-- ein XML-Dokument --> <kap title="Nettes Kapitel"> <pa>Ein Absatz</pa> <pa>Noch ein Absatz</pa> <pa>Und noch ein Absatz</pa> <pa>Nett, oder?</pa> </kap> <kap title="Zweites Kapitel"> <pa>Ein Absatz</pa> </kap> </dok>
Beispiele für XPath-Ausdrücke:
Ausdruck selektiert ... /dok
das erste Element dok
/*
das Wurzel-Element unabhängig vom Namen (jedes wohlgeformte XML-Dokument hat genau ein Wurzel-Element) //dok/kap
alle kap
-Elemente innerhalb einesdok
Elements//dok/kap[1]
erstes kap
-Element innerhalb einesdok
Elements//pa
alle pa
-Elemente auf allen Ebenen//kap[@title='Nettes Kapitel']/pa
alle Absätze der Kapitel mit Titel „Nettes Kapitel“. child::*
alle Kindelemente des gegenwärtigen Knotens child::pa
alle pa
-Kinder des gegenwärtigen Knotenschild::text()
alle Textknoten des gegenwärtigen Knotens ./*
alle Unterelemente des gegenwärtigen Knotens attribute::*
alle Attribute des gegenwärtigen Knotens namespace::*
alle Namespaces des gegenwärtigen Knotens XPath-Visualisierer helfen, die mitunter komplizierten XPath-Abfragen auf konkrete XML-Dateien anzuwenden.
Siehe auch
Einzelnachweise
Literatur
- 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
- XML Path Language (XPath) Version 1.0 ; sowie deutsche Übersetzung
- XML Path Language (XPath) Version 2.0
- XQuery 1.0 and XPath 2.0 Functions and Operators
- XPath Tutorial auf deutsch
- XPath Tutorial von w3schools
- ZVON: XPath Tutorial in deutscher Sprache
- FH Wedel: XLink, XPath, XPointer
- HTMLWorld: XPath
- XPath Achsen Diagramme
- XSLT und XPath Referenz sehr ausführlich
- XPath Visualizer stellt XPath-Ausdrücke visuell auf Basis beliebiger XML-Dateien dar.
Standards des World Wide Web ConsortiumsEmpfehlungen (Recommendations): ATAG | Canonical XML | CSS | CharMod | CC/PP | DDR Simple API | DOM | EXI | Element Traversal | EMMA | GRDDL | HTML | ITS | MathML | OWL | P3P | PICS | PLS | PNG | POWDER | RDF | RDF-Schema | Ruby | SISR | SKOS | SML | SMIL | SOAP | SOAP MTOM | SPARQL | SRGS | SSML | SVG | SSML | UAAG | VoiceXML | WCAG | Webarch | WebCGM | WSDL | WS-Adressing | WS-Policy | XHTML | XML | XInclude | XKMS | XLink | XML Base | XMLEnc-Decrypt | XML Events | XML Information Set | XML Namespace | XML Schema | XML Signature | XOP | XForms | XPath | XPointer | XProc | XQuery | XSL | XSLT
Arbeitsentwürfe (Working Drafts) und Kandidaten (Candidate Recommendations): Capture API | CCXML | CDF | Clipboard API | Contacts API | Cross-Origin Resource Sharing | CURIE | EARL | File API | HTML5 | HTML Canvas | HTML Microdata | Indexed Database API | InkML | LTLI | RIF | Selectors API | System Information API | WAI-ARIA | Web IDL | Web Sockets API | Web SQL Database | WICD | Widgets | XFrames | XBL
Wikimedia Foundation.
Schlagen Sie auch in anderen Wörterbüchern nach:
XPath 1.0 — XPath (XML Path Language) is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values (strings, numbers, or boolean values) from the content of an XML document. The current version of the language is… … Wikipedia
XPath — est un langage (non XML) pour localiser une portion d un document XML. Initialement créé pour fournir une syntaxe et une sémantique aux fonctions communes à XPointer et XSL, XPath a rapidement été adopté par les développeurs comme langage d… … Wikipédia en Français
XPath 2.0 — is the current version of the XPath language defined by the World Wide Web Consortium, W3C. It became a recommendation on 23 January 2007.XPath is used primarily for selecting parts of an XML document. For this purpose the XML document is… … Wikipedia
XPath — (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y… … Wikipedia Español
Xpath — (XML Path Language) язык запросов к элементам XSLT, и является стандартом консорциума W3C. В XPath используется компактный синтаксис, отличный от принятого в XML. В 2007 году завершилась разработка версии 2.0, которая теперь является составной… … Википедия
XPath — es un lenguaje (basado en XML) que permite seleccionar subconjuntos de un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo… … Enciclopedia Universal
XPATH — Die XML Path Language (XPath) ist eine vom W3 Konsortium entwickelte Abfragesprache, um Teile eines XML Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung… … Deutsch Wikipedia
XPath — Infobox programming language name = XPath paradigm = query language year = 1999 designer = developer = W3C latest release version = 2.0 latest release date = January 23 2007 typing = implementations = JavaScript, C#, Java dialects = influenced by … Wikipedia
XPath — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. XPath (XML Path Language) я … Википедия
Xpath data model — XPath is a language for selecting portions of an XML Document (sequences of nodes of an XML tree). XPath uses a specific conceptual interpretation XML documents, referred to as the XPath Data Model. Technical documents on XML often uses the same… … Wikipedia