XPath 1.0

XPath (XML Pfad-Sprache) ist eine Sprache, um Knoten aus einem XML Dokument auszuwählen. Außerdem kann XPath verwendet werden, um Werte (Schnuren, Zahlen oder Boolean-Werte) vom Inhalt eines XML Dokumentes zu schätzen. Die jetzige Version der Sprache ist XPath 2.0, aber Version 1.0 wird noch weiter verwendet.

Die XPath Sprache basiert auf einer Baumdarstellung des XML Dokumentes, und stellt die Fähigkeit zur Verfügung, um den Baum zu schiffen, Knoten durch eine Vielfalt von Kriterien auswählend. Im populären Gebrauch (obwohl nicht in der offiziellen Spezifizierung) wird auf einen XPath Ausdruck häufig einfach als ein XPath verwiesen.

Ursprünglich motiviert durch einen Wunsch, eine allgemeine Syntax und Verhaltensmodell zwischen XPointer und XSLT zur Verfügung zu stellen, werden Teilmengen der XPath-Anfragensprache in anderen W3C Spezifizierungen wie XML-Diagramm und XForms verwendet.

Syntax und Semantik

Die wichtigste Art des Ausdrucks in XPath ist ein Positionspfad. Ein Positionspfad besteht aus einer Folge von Positionsschritten. Jeder Positionsschritt hat drei Bestandteile:

  • eine Achse
  • ein Knotentest
  • Null oder mehr Prädikate.

Ein XPath Ausdruck wird in Bezug auf einen Zusammenhang-Knoten bewertet. Eine Achse Specifier wie 'Kind' oder 'Nachkomme' gibt die Richtung an, um vom Zusammenhang-Knoten zu schiffen. Der Knotentest und das Prädikat werden verwendet, um die Knoten zu filtern, die durch die Achse specifier angegeben sind: Zum Beispiel prüft der Knoten 'Ein' Verlangen, dass alle Knoten, die dazu befahren sind, Etikett 'A' haben müssen. Ein Prädikat kann verwendet werden, um anzugeben, dass die ausgewählten Knoten bestimmte Eigenschaften haben, die durch XPath Ausdrücke selbst angegeben werden.

Die XPath Syntax kommt in zwei Geschmäcken: Die abgekürzte Syntax, ist kompakter und erlaubt XPaths, geschrieben und leicht mit intuitiv und, in vielen Fällen, vertrauten Charakteren und Konstruktionen gelesen zu werden. Die volle Syntax ist wortreicher, aber berücksichtigt mehr Optionen, angegeben zu werden, und ist wenn gelesen, sorgfältig beschreibender.

Abgekürzte Syntax

Die Kompaktnotation erlaubt vielen Verzug und Abkürzungen für allgemeine Fälle. Gegebene Quelle XML, der mindestens enthält

</B>

</A>

</Quelle>

der einfachste XPath nimmt eine Form wie an

der C Elemente auswählt, die Kinder von B Elementen sind, die Kinder Ein Element sind, das das äußerste Element des XML Dokumentes bildet. Die XPath Syntax wird entworfen, um URI (Gleichförmiger Quellenbezeichner) und Unix-artige Dateipfad-Syntax nachzuahmen.

Kompliziertere Ausdrücke können durch das Spezifizieren einer Achse außer der Verzug-'Kinder'-Achse, ein Knotentest außer einem einfachen Namen oder Prädikaten gebaut werden, die in eckigen Klammern nach jedem Schritt geschrieben werden können. Zum Beispiel, der Ausdruck

wählt das erste Element ('') was für seinen Namen aus (''), der ein Kind ('') von einem B Element ist, das selbst ein Kind oder anderer, tieferer Nachkomme ('') von Ein Element ist, das ein Kind des aktuellen Zusammenhang-Knotens ist (beginnt der Ausdruck mit'' nicht). Wenn es mehrere passende B Elemente im Dokument gibt, gibt das wirklich eine Reihe aller ihrer ersten Kinder zurück. ("" gibt gerade den ersten derartigen Knoten zurück.)

Ausgebreitete Syntax

In der vollen, unverkürzten Syntax würden die zwei Beispiele oben geschrieben

Hier, in jedem Schritt des XPath, die Achse (z.B oder) wird ausführlich angegeben, von und dann der Knotentest, solcher als oder in den Beispielen über gefolgt

Achse specifiers

Die Achse Specifier zeigt Navigationsrichtung innerhalb der Baumdarstellung des XML Dokumentes an. Die verfügbaren Äxte sind:

Als ein Beispiel, die Attribut-Achse in der abgekürzten Syntax zu verwenden, wählt das Attribut aus hat Elemente überall den Dokumentenbaum herbeigerufen.

Der Ausdruck. (eine Abkürzung für selbst:: Knoten ) wird meistens innerhalb eines Prädikats verwendet, um sich auf den zurzeit ausgewählten Knoten zu beziehen.

Zum Beispiel, wählt ein Element aus hat den aktuellen Zusammenhang herbeigerufen, dessen Textinhalt ist.

Knotentests

Knotentests können aus spezifischen Knotennamen oder allgemeineren Ausdrücken bestehen. Im Fall von einem XML Dokument, in dem das namespace Präfix definiert worden ist, wird alle Elemente darin namespace finden, und wird alle Elemente, unabhängig vom lokalen Namen, darin namespace finden.

Andere Knotentestformate sind:

Anmerkung : Findet einen XML-Anmerkungsknoten, z.B

Text : Findet einen Knoten des Typ-Textes, z.B in

Verarbeitungsinstruktion : Findet XML in einer Prozession gehende Instruktionen solcher als

Knoten : Findet jeden Knoten überhaupt.

Prädikate

Prädikate, schriftlich als Ausdrücke in eckigen Klammern, können verwendet werden, um einen Knotensatz einzuschränken, um nur jene Knoten auszuwählen, für die etwas Bedingung wahr ist. Zum Beispiel wird jene Elemente (unter den Kindern des Zusammenhang-Knotens) auswählen ein Attribut zu haben, dessen Wert ist.

Es gibt keine Grenze zur Zahl von Prädikaten in einem Schritt, und sie brauchen auf den letzten Schritt in einem XPath nicht beschränkt zu werden. Sie können auch zu jeder Tiefe verschachtelt werden. In Prädikaten angegebene Pfade beginnen am Zusammenhang des aktuellen Schritts (d. h. dieser des sofort vorhergehenden Knotentests) und verändern diesen Zusammenhang nicht. Alle Prädikate müssen für ein Match zufrieden sein, um vorzukommen.

Wenn der Wert des Prädikats numerisch ist, wird es als ein Test auf der Position des Knotens interpretiert. So wählt das erste Element-Kind aus, während das letzte auswählt.

In anderen Fällen wird der Wert des Prädikats zu einem boolean automatisch umgewandelt. Wenn das Prädikat zu einem Knotensatz bewertet, ist das Ergebnis wahr, wenn der Knotensatz nichtleer ist. So wählt jene Elemente aus, die ein Attribut nennen ließen.

Ein komplizierteres Beispiel: Der Ausdruck wählt den Wert des Attributes des ersten Elements unter den Kindern des Zusammenhang-Knotens aus, der sein Attribut darauf setzen ließ, vorausgesetzt dass das Element auf höchster Ebene des Dokumentes auch ein Attribut darauf setzen lassen hat. Die Verweisung auf ein Attribut des Elements auf höchster Ebene im ersten Prädikat betrifft weder den Zusammenhang anderer Prädikate noch diesen des Positionsschritts selbst.

Prädikat-Ordnung ist bedeutend, wenn Prädikate die Position eines Knotens prüfen. Jedes Prädikat 'scheint durch' ein Positionsschritt hat Knotensatz der Reihe nach ausgewählt. So wird ein Match nur finden, wenn das erste Kind des Zusammenhang-Knotens die Bedingung befriedigt, während das erste Kind finden wird, das diese Bedingung befriedigt.

Funktionen und Maschinenbediener

XPath 1.0 definiert vier Datentypen: Knotensätze (Sätze von Knoten ohne innere Ordnung), Schnuren, Zahlen und booleans.

Die verfügbaren Maschinenbediener sind:

  • "/", "//" und" [...]" Maschinenbediener, die in Pfad-Ausdrücken, wie beschrieben, oben verwendet sind.
  • Ein Vereinigungsmaschinenbediener, "", der die Vereinigung von zwei Knotensätzen bildet.
  • Maschinenbediener von Boolean "und" und "oder", und eine Funktion "nicht "
  • Arithmetische Maschinenbediener "+", "-", "*", "div" (teilen) (sich), und "mod"
  • Vergleich-Maschinenbediener "=", "! =","

Die Funktionsbibliothek schließt ein:

  • Funktionen, Schnuren zu manipulieren: Concat , Teilkette , enthält , Teilkette - bevor , Teilkette - danach , , Normalisieren-Raum , Schnur-Länge übersetzen Sie
  • Funktionen, Zahlen zu manipulieren: Summe , herum , Fußboden , Decke
  • Funktionen, Eigenschaften von Knoten zu bekommen: Name , lokaler Name , namespace-uri
  • Funktionen, Information über den in einer Prozession gehenden Zusammenhang zu bekommen: Position , letzt
  • Typ-Umwandlungsfunktionen: Schnur , Zahl , boolean

Über einige der allgemeiner nützlichen Funktionen wird unten ausführlich berichtet. Für eine ganze Beschreibung, sieh das W3C Empfehlungsdokument

Knoten hat Funktionen gesetzt

Position : Gibt eine Zahl zurück, die die Position dieses Knotens in der Folge von Knoten zurzeit vertritt, die (zum Beispiel, die Knoten bearbeiten werden, die durch xsl:for-jede Instruktion in XSLT ausgewählt sind).

Zählung (Knotensatz): Gibt die Zahl von Knoten im als sein Argument gelieferten Knotensatz zurück.

Zeichenkettenfunktionen

Schnur (Gegenstand?): Bekehrte einige der vier XPath Datentypen in eine Schnur gemäß eingebauten Regeln. Wenn der Wert des Arguments ein Knotensatz ist, gibt die Funktion den Schnur-Wert des ersten Knotens in der Dokumentenordnung zurück, weitere Knoten ignorierend.

concat (Schnur, Schnur, Schnur *): Verkettet zwei oder mehr Schnuren

Anfänge - mit (s1, s2): Umsatz wenn Anfänge mit

enthält (s1, s2): Umsatz, wenn enthält

Teilkette (Schnur, Anfang, Länge?): Beispiel: Umsatz.

Teilkette - vorher (s1, s2): Beispiel: Umsatz

Teilkette - danach (s1, s2): Beispiel: Umsatz

Schnur-Länge (Schnur?): Rückzahl von Charakteren in der Schnur

Normalisieren-Raum (Schnur?): Die ganze Führung und das Schleppen whitespace werden entfernt, und irgendwelche Folgen von whitespace Charakteren werden durch einen einfachen Zeilenabstand ersetzt. Das ist sehr nützlich, als der ursprüngliche XML formatierter prettyprint gewesen sein kann, der weitere Schnur machen konnte, die unzuverlässig in einer Prozession geht.

Teilkette (Schnur, Anfang, Länge): Gibt Charaktere lange Teilkette des gegebenen zurück, an anfangend (der mit beginnt).

Funktionen von Boolean

nicht (boolean): Verneint jeden boolean Ausdruck.

wahr : Bewertet zum wahren.

falsch : Bewertet zum falschen.

Zahl-Funktionen

Summe (Knotensatz): Wandelt die Schnur-Werte aller Knoten um, die durch das XPath Argument in Zahlen gemäß den eingebauten sich werfenden Regeln gefunden sind, gibt dann die Summe dieser Zahlen zurück.

Gebrauch-Beispiele

Ausdrücke können innerhalb von Prädikaten mit den Maschinenbedienern geschaffen werden:

wählt Sachen aus, deren Preisattribut größer ist als zweimal der numerische Wert ihres Preisnachlass-Attributes.

Komplette Knotensätze können ('unioned') das Verwenden des vertikalen Bar-Charakters | verbunden werden. Knotensätze, die sich ein oder mehr von mehreren Bedingungen treffen, können durch das Kombinieren der Bedingungen innerhalb eines Prädikats mit '' gefunden werden.

wird einen einzelnen Knotensatz zurückgeben, der aus allen Elementen besteht, die haben oder Kinderelemente, sowie alle Elemente, die Kinderelemente haben, die im aktuellen Zusammenhang gefunden wurden.

Beispiele

In Anbetracht eines XML Beispieldokumentes

</Ausgaben>

</Projekt>

</Ausgaben> </Projekt>

</Projekte>

</wikimedia>

</pre>

Der XPath Ausdruck

/wikimedia/projects/project / nennen

Wählt Namenattribute für alle Projekte und aus

/wikimedia//Ausgaben

Wählt alle Ausgaben aller Projekte und aus

/wikimedia/projects/project/editions/edition [@language = "Englisch"] / Text

Wählt Adressen aller englischen Wikimedia-Projekte aus (Text aller Elemente, wo Attribut gleicher ist

zu Englisch). Und der folgende

/wikimedia/projects/project [@name = "Wikipedia"]/editions/edition/text

Wählt Adressen aller Wikipedien aus (Text aller Elemente, die unter dem Element mit einem Namen bestehen

Attribut der Wikipedia)

Durchführungen

Befehl-Linienwerkzeuge

  • XMLStarlet

ActionScript

C/C ++

  • libxml2
  • Pathan
  • Sedna XML Datenbank
  • VTD-XML

Delphi

Durchführungen für Datenbankmotoren

  • Virtuose von OpenLink

Java

  • Sächsischer XSLT unterstützt XPath 1.0 und XPath 2.0 (sowie XSLT 1.0, XSLT 2.0, und XQuery 1.0)
  • BaseX (unterstützt auch XPath 2.0 und XQuery)
VTD-XML
  • Sedna XML Datenbank Sowohl XML:DB als auch Eigentums-.

Java

Paket ist ein Teil der javanischen Standardausgabe seit Java 5 gewesen. Technisch ist das eine XPath API aber nicht eine XPath Durchführung, und es erlaubt dem Programmierer die Fähigkeit, eine spezifische Durchführung auszuwählen, die sich der Schnittstelle anpasst.

JavaScript

  • JQuery (Grundlegende Unterstützung)

.NET-Fachwerk

  • In System.Xml und System. Xml. XPath namespaces
Sedna XML Datenbank

Perl

PHP

Sedna XML Datenbank

Pythonschlange

libxml2
  • Amara
Sedna XML Datenbank

Rubin

libxml2 ActionScript

Schema

Sedna XML Datenbank

SQL

  • MySQL unterstützt eine Teilmenge von XPath von der Version 5.1.5 vorwärts
  • PostgreSQL unterstützt XPath und XSLT von der Version 8.4 auf

Verwenden Sie auf Diagramm-Sprachen

XPath wird zunehmend verwendet, um Einschränkungen auf Diagramm-Sprachen für XML auszudrücken.

  • (Jetzt ISO Standard) Diagramm-Sprache hat Schematron für die Annäherung den Weg gebahnt.
  • Eine strömende Teilmenge von XPath wird in W3C XML Diagramm 1.0 verwendet, um Einzigartigkeit und Schlüsseleinschränkungen auszudrücken. In XSD 1.1 wird der Gebrauch von XPath erweitert, um bedingte Typ-Anweisung zu unterstützen, die auf Attribut-Werten gestützt ist, und willkürlichen boolean Behauptungen zu erlauben, gegen den Inhalt von Elementen bewertet zu werden.
  • XForms verwendet XPath, um Typen zu Werten zu binden.
  • Die Annäherung hat sogar gefundenen Nutzen in non-XML Anwendungen wie die Einschränkungssprache für Java genannt PMD: Java wird zu einem DOM ähnlichen Syntaxanalyse-Baum umgewandelt, dann werden XPaths Regeln über den Baum definiert.

Siehe auch

  • XPath 2.0
  • XML
  • XSL, XSLT, XSL-FO
  • XQuery
  • XLink, XPointer
  • XML Diagramm
  • Schematron
  • Navigationsdatenbank
  • XML Datenbank

Links


Atomelektronübergang / Qattara Depression
Impressum & Datenschutz