Freigeben über


Angeben eines Speicherortpfads (SQLXML 4.0)

XPath-Abfragen werden in Form eines Ausdrucks angegeben. Es gibt verschiedene Arten von Ausdrücken. Ein Speicherortpfad ist ein Ausdruck, der relativ zum Kontextknoten einen Satz von Knoten auswählt. Das Ergebnis der Auswertung eines Speicherortpfads ist ein Knotensatz.

Typen von Speicherortpfaden

Ein Speicherortpfad kann eine dieser beiden Formen haben:

  • Absoluter Speicherortpfad

    Ein absoluter Speicherortpfad beginnt am Stammknoten des Dokuments. Er besteht aus einem Schrägstrich (/) optional gefolgt von einem relativen Speicherortpfad. Der Schrägstrich (/) wählt den Stammknoten des Dokuments aus.

  • Relativer Speicherortpfad

    Ein relativer Speicherortpfad beginnt am Kontextknoten im Dokument. Ein Speicherortpfad besteht aus einer Folge von einem oder mehreren Positionsschritten, die durch einen Schrägstrich (/) getrennt sind. Jeder Schritt wählt relativ zum Kontextknoten einen Satz von Knoten aus. Die Anfangsschrittsequenz wählt relativ zu einem Kontextknoten einen Satz von Knoten aus. Jeder Knoten in diesem Satz wird als Kontextknoten für den folgenden Schritt verwendet. Die Knotensätze, die von diesem Schritt identifiziert werden, werden verknüpft. Zum Beispiel wählt child::Order/child::OrderDetail die untergeordneten <OrderDetail>-Elemente der untergeordneten <Order>-Elemente des Kontextknotens aus.

    HinweisHinweis

    In der SQLXML 4.0-Implementierung von XPath beginnt jede XPath-Abfrage am Stammkontext, selbst wenn der XPath nicht ausdrücklich absolut ist. Zum Beispiel wird eine XPath-Abfrage, die mit "Customer" beginnt, als "/Customer" behandelt. In der XPath-Abfrage Customer[Order] beginnt Customer am Stammkontext, Order jedoch am Customer-Kontext. Weitere Informationen finden Sie unter Einführung in die Verwendung von XPath-Abfragen (SQLXML 4.0).

Positionsschritte

Ein Speicherortpfad (absolut oder relativ) besteht aus Positionsschritten, die drei Teile enthalten:

  • Achse

    Die Achse gibt die Strukturbeziehung zwischen den vom Positionsschritt ausgewählten Knoten und dem Kontextknoten an. Die Achsen parent, child, attribute und self werden unterstützt. Falls eine child-Achse im Speicherortpfad angegeben ist, sind alle von der Abfrage ausgewählten Knoten dem Kontextknoten untergeordnet. Wird eine parent-Achse angegeben, ist der ausgewählte Knoten der übergeordnete Knoten des Kontextknotens. Bei einer attribute-Achse sind die ausgewählten Knoten die Attribute des Kontextknotens.

  • Knotentest

    Ein Knotentest gibt den vom Positionsschritt ausgewählten Knotentyp an. Jede Achse (child, parent, attribute oder self) hat einen Hauptknotentyp. Für die attribute-Achse ist der Hauptknotentyp <attribute>. Für die Achsen parent, child, und self ist der Hauptknotentyp <element>.

    Wenn der Speicherortpfad zum Beispiel child::Customer angibt, werden die untergeordneten <Customer>-Elemente des Kontextknotens ausgewählt. Da der Hauptknotentyp der child-Achse <element> ist, hat der Knotentest Customer den Wert TRUE, wenn Customer ein <element>-Knoten ist.

  • Auswahlprädikate (Null oder mehr)

    Ein Prädikat filtert einen Knotensatz in Bezug auf eine Achse. Die Angabe von Auswahlprädikaten in einem XPath-Ausdruck entspricht der Angabe einer WHERE-Klausel in einer SELECT-Anweisung. Das Prädikat wird zwischen Klammern angegeben. Wird der in den Auswahlprädikaten angegebene Test angewendet, werden die vom Knotentest zurückgegebenen Knoten gefiltert. Für jeden Knoten in der zu filternden Knotengruppe wird der Prädikatausdruck mit dem entsprechenden Knoten als Kontextknoten ausgewertet. Die Anzahl der Knoten in der Knotengruppe dient dabei als Kontextgröße. Ergibt die Auswertung des Prädikatausdrucks für den betreffenden Knoten TRUE, wird dieser Knoten in die resultierende Knotengruppe aufgenommen.

    Die Syntax für einen Positionsschritt umfasst den Achsennamen und den Knotentest, getrennt durch zwei Doppelpunkte (::) und gefolgt von null oder mehr Ausdrücken in eckigen Klammern. Der XPath-Ausdruck (Speicherortpfad) child::Customer[@CustomerID='ALFKI'] wählt z. B. alle untergeordneten <Customer>-Elemente des Kontextknotens aus. Dann wird der Test im Prädikat auf den Knotensatz angewendet, der nur <Customer>-Elementknoten mit dem Attributwert 'ALFKI' im CustomerID-Attribut zurückgibt.

In diesem Abschnitt