Freigeben über


Angeben eines Knotentests im Speicherortpfad (SQLXML 4.0)

Ein Knotentest gibt den Vom Standortschritt ausgewählten Knotentyp an. Jede Achse (child, parent, attributeoder self) weist einen Prinzipalknotentyp auf. Für die attribute Achse ist <der Prinzipalknotentyp Attribut>. Für die parent, childund self Achsen ist <der Prinzipalknotentyp Element>.

Hinweis

Der Wildcardknotentest * (z. B child::*. ) wird nicht unterstützt.

Knotentest: Beispiel 1

Der Speicherortpfad child::Customer wählt untergeordnete Elemente des Customer-Elements> des Kontextknotens< aus.

In diesem Beispiel child ist die Achse und Customer der Knotentest. Der Prinzipalknotentyp für die child Achse ist <Element>. Daher ist der Knotentest WAHR, wenn der <Kundenknoten> ein <Elementknoten> ist. Wenn der Kontextknoten über keine <untergeordneten Kunden> verfügt, wird eine leere Gruppe von Knoten zurückgegeben.

Knotentest: Beispiel 2

Der Speicherortpfad attribute::CustomerID wählt das CustomerID-Attribut des Kontextknotens aus.

Im Beispiel attribute ist die Achse und CustomerID der Knotentest. Der Hauptknotentyp der attribute Achse ist <Attribut>. Daher ist der Knotentest WAHR, wenn CustomerID ein <Attributknoten> ist. Wenn der Kontextknoten keine CustomerID aufweist, wird eine leere Gruppe von Knoten zurückgegeben.

Hinweis

Wenn in dieser Implementierung von XPath ein Speicherortschritt auf ein <Element> oder einen <Attributtyp> verweist, der nicht im Schema deklariert ist, wird ein Fehler generiert. Dies unterscheidet sich von der Implementierung von XPath in MSXML, die einen leeren Knotensatz zurückgibt.

Abgekürzte Syntax für die Achsen

Die folgende abgekürzte Syntax für den Speicherortpfad wird unterstützt:

  • attribute:: kann abgekürzt werden zu @.

    Der Pfad des Speicherorts Customer[@CustomerID="ALFKI"] ist identisch mit child::Customer[attribute::CustomerID="ALFKI"].

  • child:: kann aus einem Standortschritt weggelassen werden.

    child Daher ist die Standardachse. Der Pfad des Speicherorts Customer/Order ist identisch mit child::Customer/child::Order.

  • self::node() kann auf einen Punkt (.) parent::node() gekürzt und auf zwei Punkte (.) gekürzt werden.