Modul dan Prolog - XQuery Prolog

Berlaku untuk:SQL Server

Kueri XQuery terdiri dari prolog dan isi. Prolog XQuery adalah serangkaian deklarasi dan definisi yang bersama-sama membuat lingkungan yang diperlukan untuk pemrosesan kueri. Di SQL Server, prolog XQuery dapat menyertakan deklarasi namespace layanan. Isi XQuery terdiri dari urutan ekspresi yang menentukan hasil kueri yang dimaksudkan.

Misalnya, XQuery berikut ditentukan terhadap kolom Instruksi jenis xml yang menyimpan instruksi manufaktur sebagai XML. Kueri mengambil instruksi manufaktur untuk lokasi 10pusat kerja . Metode query() tipe data xml digunakan untuk menentukan XQuery.

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  

Perhatikan hal berikut ini dari kueri sebelumnya:

  • Prolog XQuery menyertakan deklarasi (namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";awalan namespace (AWMI), .

  • Kata declare namespace kunci menentukan awalan namespace yang digunakan nanti di isi kueri.

  • /AWMI:root/AWMI:Location[@LocationID="10"] adalah isi kueri.

Deklarasi Namespace Layanan

Deklarasi namespace menentukan awalan dan mengaitkannya dengan URI namespace, seperti yang diperlihatkan dalam kueri berikut. Dalam kueri, CatalogDescription adalah kolom jenis xml .

Dalam menentukan XQuery terhadap kolom ini, prolog kueri menentukan declare namespace deklarasi untuk mengaitkan awalan PD, deskripsi produk, dengan URI namespace. Awalan ini kemudian digunakan dalam isi kueri alih-alih URI namespace. Simpul dalam XML yang dihasilkan berada di namespace yang terkait dengan URI namespace.

SELECT CatalogDescription.query('  
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
         /PD:ProductDescription/PD:Summary   
    ') as Result  
FROM Production.ProductModel  
where ProductModelID=19  

Untuk meningkatkan keterbacaan kueri, Anda dapat mendeklarasikan namespace dengan menggunakan WITH XMLNAMESPACES alih-alih mendeklarasikan awalan dan pengikatan namespace dalam prolog kueri dengan menggunakan declare namespace.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS PD)  
  
SELECT CatalogDescription.query('  
         /PD:ProductDescription/PD:Summary   
    ') as Result  
FROM Production.ProductModel  
where ProductModelID=19  

Untuk informasi selengkapnya, lihat Menambahkan Namespace ke Kueri dengan DENGAN XMLNAMESPACES.

Deklarasi Namespace Default

Alih-alih mendeklarasikan awalan namespace dengan menggunakan declare namespace deklarasi, Anda dapat menggunakan declare default element namespace deklarasi untuk mengikat namespace default untuk nama elemen. Dalam hal ini, Anda tidak menentukan awalan apa pun.

Dalam contoh berikut, ekspresi jalur dalam isi kueri tidak menentukan awalan namespace. Secara default, semua nama elemen termasuk dalam namespace default yang ditentukan dalam prolog.

SELECT CatalogDescription.query('  
     declare default element namespace  "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
        /ProductDescription/Summary   
    ') as Result  
FROM  Production.ProductModel  
WHERE ProductModelID=19   

Anda dapat mendeklarasikan namespace default dengan menggunakan WITH XMLNAMESPACES:

WITH XMLNAMESPACES (DEFAULT 'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription')  
SELECT CatalogDescription.query('  
        /ProductDescription/Summary   
    ') as Result  
FROM  Production.ProductModel  
WHERE ProductModelID=19   

Lihat Juga

Menambahkan Namespace ke Kueri dengan XMLNAMESPACES