Condividi tramite


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 a child::Customer[attribute::CustomerID="ALFKI"].

  • child:: può essere omesso da un passo.

    Pertanto, child è l'asse predefinito. Il percorso Customer/Order è uguale a child::Customer/child::Order.

  • self::node() può essere abbreviato utilizzando un punto (.), mentre parent::node() può essere abbreviato utilizzando due punti (..).