Condividi tramite


Specifica di un test di nodo nel percorso (SQLXML 4.0)

Un test di nodo specifica il tipo di nodo selezionato dal passo. Ogni asse (child, parent, attribute o self) dispone di un tipo di nodo principale. Per l'asse attribute , il tipo di nodo principale è <attributo>. Per gli parentassi , childe self , il tipo di nodo principale è <l'elemento> .

Nota

Il test di nodo con carattere jolly *, ad esempio child::*, non è supportato.

Test del nodo: esempio 1

Il percorso child::Customer seleziona gli <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 child è <elemento>. Pertanto, il test del nodo è TRUE se il <nodo Customer> è un <nodo elemento> . Se il nodo di contesto non <ha figli Customer> , 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 attribute è <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 della 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.

    In questo caso, 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 (..).