Freigeben über


Prädikate

Bei einem Prädikat handelt es sich um einen XPath-Ausdruck, der eine Knotengruppe im Verhältnis zur Achse filtert und eine neue Knotengruppe erstellt. Dieser Filtervorgang schließt eine sequenzielle Überprüfung des Prädikats in Bezug auf die einzelnen Knoten der Knotengruppe ein. Bei jeder einzelnen Überprüfung des Prädikats in Bezug auf einen Knoten gilt Folgendes:

  • Der Kontextknoten ist der gerade überprüfte Knoten.

  • Die Kontextgröße ist die Anzahl der zu prüfenden Knoten in einer Knotengruppe.

  • Die Kontextposition ist die Position des Kontextknotens in der Knotengruppe.

Dieser Kontext (d. h. der Kontext des Kontextknotens in der Knotengruppe) ist relativ zu der Richtung, in der die Achse, die im Location-Step angegeben ist, die Dokumentstruktur steuert. Normalerweise steuert eine Achse eine Struktur entweder vorwärts oder rückwärts:

  • Eine vorwärts gerichtete Achse enthält die Kontextknoten, die sich hinter dem Kontextknoten befinden. Die Achsen child::, descendant::, descendant-or-self::, following:: und following-sibling:: sind vorwärts gerichtete Achsen. Diese vorwärts gerichteten Achsen nummerieren die Knoten in der Knotengruppe in der Dokumentreihenfolge. Dabei ist die erste Position als Position 1 gekennzeichnet.

  • Eine rückwärts gerichtete Achse enthält die Kontextknoten, die sich vor dem Kontextknoten befinden. Die Achsen ancestor::, ancestor-or-self::, preceding:: und preceding-sibling:: sind rückwärts gerichtete Achsen. Diese rückwärts gerichteten Achsen nummerieren die Knoten in der Knotengruppe in der umgekehrten Dokumentreihenfolge. Dabei ist die erste Position als Position 1 gekennzeichnet.

Die anderen Achsen (self:: und parent::) geben einen einzelnen Knoten zurück. Daher kann eine Bezeichnung als "vorwärts" und "rückwärts" für diese beiden Achsen nicht verwendet werden. Für die Achsen attribute:: und namespaces:: ist keine Reihenfolge angegeben. Daher handelt es sich auch bei diesen Achsen nicht um richtungsangebende Achsen.

Auswählen der Knoten

Ein Prädikatsausdruck wertet entweder einen numerischen oder einen booleschen Wert aus.

Wenn das Prädikat eine Zahl ergibt, vergleicht XPath diese Zahl mit der Kontextposition des Kontextknotens. Wenn diese Zahl und die Position übereinstimmen (d. h. der Kontextknoten befindet sich in der entsprechenden Position in der Struktur), wird das Prädikat als true ausgewertet, und der Kontextknoten wird in die neue Knotengruppe eingefügt. Andernfalls wird der Kontextknoten nicht in die neue Knotengruppe eingeschlossen.

Wenn das Prädikat keine Zahl ergibt, wandelt XPath das Ergebnis mithilfe der boolean-Funktion in einen booleschen Wert um. Beispielsweise ergibt das Prädikat [genre='Computer'] eine Knotengruppe. Wenn der Kontextknoten ein untergeordnetes <genre>-Element mit dem Inhalt Computer aufweist, wird das Prädikat als true ausgewertet, und der Kontextknoten wird in die neue Knotengruppe eingefügt. Andernfalls wird der Kontextknoten nicht in die neue Knotengruppe eingeschlossen.

ms256205.note(de-de,VS.100).gifHinweis:
Ein numerisches Prädikat [x] entspricht dem booleschen Prädikat [position()=x].

Siehe auch

Verweis

Location-Steps
Achsen
Knotentests