Specifica di un test di nodo nel percorso (SQLXML 4.0)
Si applica a: SQL Server Database SQL di Azure
Un test di nodo specifica il tipo di nodo selezionato dal passo. Ogni asse (figlio, padre, attributo o self) ha un tipo di nodo principale. Per l'asse degli attributi, il tipo di nodo principale è< attributo>. Per gli assi padre, figlio e self , il tipo di nodo principale è <elemento>.
Nota
Il test di nodo con carattere jolly *, ad esempio child::*
, non è supportato.
Test del nodo: esempio 1
Il percorso child::Customer
seleziona elementi <figlio dell'elemento Customer> del nodo di contesto.
In questo esempio child
è l'asse e Customer
è il test di nodo. Il tipo di nodo principale per l'asse figlio è <elemento>. Pertanto, il test del nodo è TRUE se il nodo Customer> è un <nodo elemento>.< Se il nodo di contesto non <ha elementi figlio cliente> , viene restituito un set vuoto di nodi.
Test di nodo: esempio 2
Il percorso attribute::CustomerID
seleziona l'attributo CustomerID del nodo di contesto.
Nell'esempio attribute
è l'asse e CustomerID
è il test di nodo. Il tipo di nodo principale dell'asse degli attributi è <attributo>. Pertanto, il test del nodo è TRUE se CustomerID è un nodo dell'attributo><. Se il nodo di contesto non dispone di CustomerID, viene restituito un set vuoto di nodi.
Nota
In questa implementazione di XPath, se un passaggio di posizione fa riferimento a un <elemento> o a un <tipo di attributo> non dichiarato nello schema, viene generato un errore. a differenza di quanto avviene con l'implementazione di XPath in MSXML, che restituisce un set di nodi vuoto.
Sintassi abbreviata per gli assi
Per il percorso è supportata la sintassi abbreviata seguente:
attribute::
può essere abbreviato utilizzando@
.Il percorso
Customer[@CustomerID="ALFKI"]
è uguale achild::Customer[attribute::CustomerID="ALFKI"]
.child::
può essere omesso da un passo.Pertanto, child è l'asse predefinito. Il percorso
Customer/Order
è uguale achild::Customer/child::Order
.self::node()
può essere abbreviato utilizzando un punto (.), mentreparent::node()
può essere abbreviato utilizzando due punti (..).