Espressioni di percorso (XQuery)

Le espressioni di percorso XQuery consentono di individuare nodi, ad esempio di testo, attributo o elemento, all'interno di un documento. Il risultato di un'espressione di percorso è sempre nell'ordine del documento, senza nodi duplicati nella sequenza risultante. Nello specificare un percorso è possibile utilizzare la sintassi abbreviata o non abbreviata. Le informazioni seguenti sono relative alla sintassi non abbreviata. La sintassi abbreviata è descritta di seguito in questo argomento.

Nota

Poiché le query di esempio in questo argomento vengono specificate sulle colonne di tipo xmlCatalogDescription e Instructions della tabella ProductModel è opportuno acquisire familiarità con il contenuto e la struttura dei documenti XML archiviati in queste colonne. Per ulteriori informazioni, vedere Rappresentazione del tipo di dati XML nel database AdventureWorks2008R2.

Esistono espressioni di percorso relativo ed espressioni di percorso assoluto. Di seguito vengono descritti ambedue i tipi di espressione:

  • Un'espressione di percorso relativo è costituita da uno o più passi separati da una o due barre (/ o //). Ad esempio, child::Features è un'espressione di percorso relativo in cui Child si riferisce solo ai nodi figlio del nodo di contesto attualmente elaborato. L'espressione recupera i nodi figlio dell'elemento <Features> del nodo di contesto.

  • Un'espressione di percorso assoluto inizia con una o due barre (/ o //), seguite da un percorso relativo facoltativo. Ad esempio, la barra iniziale nell'espressione /child::ProductDescription indica che si tratta di un'espressione di percorso assoluto. Poiché una barra all'inizio di un'espressione restituisce il nodo radice del documento del nodo di contesto, l'espressione restituisce tutti i nodi figlio dell'elemento <ProductDescription> del nodo radice del documento.

    Se un percorso assoluto inizia con una sola barra, può essere o meno seguito da un percorso relativo. Se si specifica una sola barra, l'espressione restituisce il nodo radice del nodo di contesto. Per un tipo di dati XML, si tratta del nodo del documento.

Una tipica espressione di percorso è costituita da passi. Ad esempio l'espressione di percorso assoluto /child::ProductDescription/child::Summary, contiene due passi separati da una barra.

  • Il primo passo recupera i nodi figlio dell'elemento <ProductDescription> del nodo radice del documento.

  • Il secondo passo recupera i nodi figlio dell'elemento <Summary> per ogni nodo elemento <ProductDescription> recuperato, che a sua volta diventa il nodo di contesto.

Un passo in un'espressione di percorso può essere un passo dell'asse o un passo generale.

Passo dell'asse

Un passo dell'asse in un'espressione di percorso è composto dalle parti seguenti.

  • asse
    Definisce la direzione di spostamento. Un passo dell'asse in un'espressione di percorso che inizia dal nodo di contesto e si sposta ai nodi raggiungibili nella direzione specificata dall'asse.

  • test di nodo
    Specifica il tipo di nodo o i nomi dei nodi da selezionare.

  • Zero o più predicati facoltativi
    Filtrano i nodi selezionandone alcuni e scartandone altri.

Nell'esempio seguente viene utilizzato un axisstep nelle espressioni di percorso:

  • L'espressione di percorso assoluto /child::ProductDescription contiene un solo passo. Specifica un asse (child) e un test di nodo (ProductDescription).

  • L'espressione di percorso relativo child::ProductDescription/child::Features contiene due passi separati da una barra. Entrambi i passi specificano un asse child. ProductDescription e Features sono test di nodo.

  • L'espressione di percorso relativo child::root/child::Location[attribute::LocationID=10],contiene due passi separati da una barra. Il primo passo specifica un asse (child) e un test di nodo (root). Il secondo passo specifica tutti e tre i componenti di un passo dell'asse: un asse (child), un test di nodo (Location) e un predicato ([attribute::LocationID=10]).

Per ulteriori informazioni sui componenti di un passo dell'asse, vedere Definizione dell'asse in un passo dell'espressione di percorso, Definizione del test di nodo in un passo dell'espressione di percorso e Specifica di predicati in un passo dell'espressione di percorso.

Passo generale

Un passo generale è semplicemente un'espressione che deve restituire una sequenza di nodi.

L'implementazione di XQuery in SQL Server supporta un passo generale come primo passo di un'espressione di percorso. Di seguito sono riportati alcuni esempi di espressioni di percorso che utilizzano passi generali.

(/a, /b)/c
id(/a/b)

Per ulteriori informazioni sulla funzione id, vedere Funzione id (XQuery).

Contenuto della sezione