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"]
entsprichtchild::Customer[attribute::CustomerID="ALFKI"]
.child::
kann von einem Speicherortschritt ausgelassen werden.Daher ist untergeordnetes Element die Standardachse. Der Speicherortpfad
Customer/Order
entsprichtchild::Customer/child::Order
.self::node()
kann zu einem Punkt (.) abgekürzt werden, undparent::node()
kann zu zwei Punkten (..) abgekürzt werden.