Teilen über


Angeben eines Knotentests unter dem Speicherortpfad (SQLXML 4.0)

Gilt für: SQL Server Azure SQL-Datenbank

Ein Knotentest gibt den vom Positionsschritt ausgewählten Knotentyp an. Jede Achse (untergeordnetes Element, übergeordnetes Attribut oder Selbst) weist einen Prinzipalknotentyp auf. Für die Attributachse ist <der Prinzipalknotentyp Attribut>. Für die übergeordneten, untergeordneten und selbstachsen ist< der Hauptknotentyp Element>.

Hinweis

Der Platzhalterknotentest * (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 ist child die Achse, und Customer ist der Knotentest. Der Prinzipalknotentyp für die untergeordnete 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 ist attribute die Achse, und CustomerID ist der Knotentest. Der Hauptknotentyp der Attributachse 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, bei der ein leerer Knotensatz zurückgegeben wird.

Abgekürzte Syntax für die Achsen

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

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

    Der Speicherortpfad Customer[@CustomerID="ALFKI"] entspricht child::Customer[attribute::CustomerID="ALFKI"].

  • child:: kann von einem Speicherortschritt ausgelassen werden.

    Daher ist untergeordnetes Element die Standardachse. Der Speicherortpfad Customer/Order entspricht child::Customer/child::Order.

  • self::node() kann zu einem Punkt (.) abgekürzt werden, und parent::node() kann zu zwei Punkten (..) abgekürzt werden.