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 è <attribute>. Per gli assi parent, child e self, il tipo di nodo principale è <element>.
Nota
Il test di nodo con carattere jolly *, ad esempio child::*, non è supportato.
Test di nodo: esempio 1
Il percorso child::Customer seleziona gli elementi figlio <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 è <element>. Pertanto, il test di nodo è TRUE se il nodo <Customer> è un nodo <element>. Se il nodo di contesto non dispone di elementi figlio <Customer>, viene restituito un set di nodi vuoto.
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 è <attribute>. Pertanto, il test di nodo è TRUE se il nodo CustomerID è un nodo <attribute>. Se il nodo di contesto non dispone di CustomerID, viene restituito un set di nodi vuoto.
Nota
In questa implementazione di XPath, se un passo si riferisce a un tipo <element> o <attribute> 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 (..).