Condividi tramite


Specificare un test del nodo nel percorso di posizione (SQLXML 4.0)

Un test del nodo specifica il tipo di nodo selezionato dal passaggio di posizione. Ogni asse (child, parent, attributeo self) ha 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 è <elemento> .

Annotazioni

Il test del nodo con caratteri 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 ed Customer è il test del 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 elementi figlio cliente> , viene restituito un set vuoto di nodi.

Test del nodo: esempio 2

Il percorso attribute::CustomerID seleziona l'attributo CustomerID del nodo di contesto.

Nell'esempio, attribute è l'asse ed CustomerID è il test del 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.

Annotazioni

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. Questo comportamento è diverso dall'implementazione di XPath in MSXML, che restituisce un set di nodi vuoto.

Sintassi abbreviata per gli assi

È supportata la sintassi abbreviata seguente per il percorso del percorso:

  • attribute:: può essere abbreviato in @.

    Il percorso Customer[@CustomerID="ALFKI"] è uguale child::Customer[attribute::CustomerID="ALFKI"]a .

  • child:: può essere omesso da un passaggio della posizione.

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

  • self::node() può essere abbreviato in un punto (.) e parent::node() può essere abbreviato in due punti (..).