Riferimento al linguaggio di XQuery (motore di database)

Transact-SQL supporta un subset del linguaggio XQuery utilizzato per l'esecuzione di query sul tipo di dati xml. Questa implementazione di XQuery è allineata con le specifiche Working Draft di XQuery del luglio 2004. Il linguaggio è sviluppato da WC3 (World Wide Web Consortium), con la partecipazione di tutti i principali fornitori di database e di Microsoft. Poiché le specifiche W3C sono soggette a modifiche prima di diventare raccomandazioni ufficiali, questa implementazione può essere diversa dalla raccomandazione W3C finale. In questo argomento vengono descritte la semantica e la sintassi del subset di XQuery supportato in SQL Server.

Per ulteriori informazioni, vedere la specifica del linguaggio XQuery 1.0 W3C.

Il linguaggio XQuery consente di eseguire query su dati XML strutturati e semistrutturati. Con il supporto per il tipo di dati xml disponibile in Motore di database è possibile archiviare documenti in un database ed eseguire query su di essi utilizzando XQuery.

Il linguaggio XQuery è basato sul linguaggio di query XPath esistente e supporta inoltre miglioramenti per le iterazioni e l'ordinamento, nonché la possibilità di costruire il codice XML necessario. XQuery opera sul modello di dati XQuery. Si tratta di un modello di astrazione dei documenti XML e i risultati XQuery possono essere tipizzati o non tipizzati. Le informazioni sui tipi sono basate sui tipi definiti nelle specifiche W3C per il linguaggio XML Schema. Se non sono disponibili informazioni di tipizzazione, XQuery gestisce i dati come non tipizzati, analogamente al modo in cui XPath versione 1.0 gestisce i dati XML.

Per eseguire una query su un'istanza XML archiviata in una variabile o una colonna di tipo xml si utilizzano i metodi con tipo di dati xml. Ad esempio, è possibile dichiarare una variabile di tipo xml ed eseguire una query sulla variabile utilizzando il metodo query() del tipo di dati xml.

DECLARE @x xml
SET @x = '<ROOT><a>111</a></ROOT>'
SELECT @x.query('/ROOT/a')

Nell'esempio seguente, la query viene specificata sulla colonna Instructions di tipo xml della tabella ProductModel del database AdventureWorks.

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

L'espressione XQuery include la dichiarazione dello spazio dei nomi, declare namespaceAWMI=... e l'espressione di query /AWMI:root/AWMI:Location[@LocationID=10].

Si noti che l'espressione XQuery viene specificata sulla colonna Instructions di tipo xml. Per specificare l'espressione XQuery viene utilizzato il metodo query() del tipo di dati xml.

Nella tabella seguente sono elencati gli argomenti correlati utili per comprendere l'implementazione di XQuery in Motore di database.

Argomento

Descrizione

Implementazione di XML in SQL Server

Descrive il supporto per il tipo di dati xmlin Motore di database e i metodi utilizzabili su questo tipo di dati. Il tipo di dati xml costituisce il modello di dati XQuery di input sul quale vengono eseguite le espressioni XQuery.

Gestione di raccolte di schemi XML sul server

Descrive le procedure per tipizzare le istanze XML archiviate in un database, ovvero per associare una raccolta di schemi XML alla colonna di tipo xml. Tutte le istanze archiviate nella colonna vengono convalidate e tipizzate rispetto allo schema della raccolta e forniscono le informazioni sul tipo per XQuery.

Rappresentazione del tipo di dati XML nel database AdventureWorks

Descrive la colonna di tipo xml e le istanze archiviate al suo interno nel database AdventureWorks. Le espressioni XQuery di esempio sono per la maggior parte specificate sul database AdventureWorks e sulle colonne di tipo xml in esso contenute. Comprendere le istanze XML può essere di aiuto nella comprensione delle query.

[!NOTA]

L'organizzazione di questa sezione è basata sulle specifiche W3C (World Wide Web Consortium ) per XQuery. Alcuni dei diagrammi disponibili in questa sezione provengono da questa specifica. In questa sezione l'implementazione Microsoft di XQuery viene confrontata alla specifica W3C, vengono descritte le differenze fra Microsoft XQuery e la specifica W3C e vengono illustrate le funzionalità W3C non supportate. La specifica W3C è disponibile all'indirizzo http://www.w3.org/TR/2004/WD-xquery-20040723.

Contenuto della sezione

Argomento

Descrizione

Nozioni fondamentali su XQuery

Contiene una panoramica di base sui concetti relativi a XQuery, valutazione dell'espressione (contesto statico e dinamico), atomizzazione, valore booleano effettivo, sistema di tipi XQuery, corrispondenza del tipo di sequenza e gestione degli errori.

Espressioni XQuery

Descrive le espressioni primarie XQuery, espressioni di percorso, espressioni di sequenza, espressioni di confronto aritmetico e logiche, costruzione XQuery, espressione FLWOR, espressioni condizionali e quantificate e diverse espressioni TypeSequence.

Moduli e prologhi (XQuery)

Descrive il prologo della XQuery.

Funzioni XQuery per il tipo di dati XML

Contiene un elenco delle funzioni XQuery supportate.

Operatori di XQuery per il tipo di dati xml

Descrive gli operatori XQuery supportati.

Query XQuery di esempio aggiuntive per il tipo di dati xml

Contiene altri esempi di XQuery.