Definizione di un percorso (SQLXML 4.0)

Le query XPath vengono specificate sotto forma di espressione. Sono disponibili diversi tipi di espressioni. Un percorso è un'espressione che seleziona un set di nodi relativo al nodo di contesto. Il risultato della valutazione di un percorso è un set di nodi.

Tipi di percorsi

È possibile definire un percorso in una delle forme seguenti:

  • Percorso assoluto

    Un percorso assoluto inizia in corrispondenza del nodo radice del documento ed è costituito da una barra (/), eventualmente seguita da un percorso relativo. La barra (/) seleziona il nodo radice del documento.

  • Percorso relativo

    Un percorso relativo inizia in corrispondenza del nodo di contesto nel documento. Un percorso è costituito da una sequenza di uno o più passi separati da una barra (/). Ogni passo seleziona un set di nodi relativi al nodo di contesto. La sequenza iniziale dei passi seleziona un set di nodi relativi a un nodo di contesto. Ogni nodo nel set viene utilizzato come nodo di contesto per il passo successivo. I set di nodi identificati dal passo vengono uniti in join. child::Order/child::OrderDetail, ad esempio, seleziona l'elemento <OrderDetail> figlio dell'elemento <Order> del nodo di contesto.

    [!NOTA]

    Nell'implementazione SQLXML 4.0 di XPath, ogni query XPath inizia in corrispondenza del contesto radice, anche se XPath non è assoluto in modo esplicito. Una query XPath che inizia con "Customer", ad esempio, viene considerata come "/Customer". Nella query XPath Customer[Order] Customer inizia in corrispondenza del contesto radice, ma Order inizia in corrispondenza del contesto di Customer. Per ulteriori informazioni, vedere Introduzione all'utilizzo di query XPath (SQLXML 4.0).

Passi

Un percorso (assoluto o relativo) è costituito da passi che contengono tre parti:

  • Asse

    L'asse specifica la relazione all'interno dell'albero tra i nodi selezionati dal passo e dal nodo di contesto. Sono supportati gli assi parent, child, attribute e self. Se nel percorso viene specificato un asse child, tutti i nodi selezionati dalla query sono figli del nodo di contesto. Se viene specificato un asse parent, il nodo selezionato è il nodo padre del nodo di contesto. Se viene specificato un asse attribute, i nodi selezionati sono gli attributi del nodo di contesto.

  • Test di nodo

    Un test di nodo specifica il tipo di nodo selezionato dal passo. Ogni asse, child, parent, attribute e self, è associato a 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>.

    Se, ad esempio, il percorso specifica child::Customer, è selezionato l'elemento <Customer> figlio del nodo di contesto. Poiché l'asse child ha <element> come tipo di nodo principale, il test di nodo Customer è TRUE se Customer è un nodo <element>.

  • Predicati di selezione (zero o più predicati)

    Un predicato filtra un set di nodi rispetto a un asse. La definizione di predicati di selezione in un'espressione XPath è un'operazione simile alla definizione di una clausola WHERE in un'istruzione SELECT. Il predicato viene specificato tra parentesi. L'applicazione del test specificato nei predicati di selezione filtra i nodi restituiti dal test di nodo. Per filtrare ogni nodo nel set di nodi, l'espressione del predicato viene valutata con il nodo come nodo di contesto e con il numero di nodi nel set di nodi come dimensioni del contesto. Se l'espressione del predicato restituisce TRUE per il nodo, il nodo viene incluso nel set di nodi risultante.

    La sintassi per un passo è costituita dal nome dell'asse e dal test di nodo separati da due caratteri due punti (::), seguiti da zero o più espressioni, ciascuna tra parentesi quadre. L'espressione XPath (percorso) child::Customer[@CustomerID='ALFKI'], ad esempio, seleziona tutti gli elementi <Customer> figli del nodo di contesto. Il test nel predicato viene quindi applicato al set di nodi, che restituisce solo i nodi dell'elemento <Customer> con il valore di attributo 'ALFKI' per il relativo attributo CustomerID.

Contenuto della sezione