Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Topik ini menjelaskan konsep dasar XQuery berikut:
Sequence
QNames dan namespace yang telah ditentukan sebelumnya
Sequence
Di XQuery, hasil ekspresi adalah urutan yang terdiri dari daftar simpul XML dan instans jenis atom XSD. Entri individual dalam urutan disebut sebagai item. Item dalam urutan bisa berupa salah satu dari yang berikut ini:
Simpul seperti elemen, atribut, teks, instruksi pemrosesan, komentar, atau dokumen
Nilai atom seperti instans jenis sederhana XSD
Misalnya, kueri berikut membuat urutan dua item elemen-node:
SELECT Instructions.query('
<step1> Step 1 description goes here</step1>,
<step2> Step 2 description goes here </step2>
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7;
Ini adalah hasilnya:
<step1> Step 1 description goes here </step1>
<step2> Step 2 description goes here </step2>
Dalam kueri sebelumnya, koma (,) di akhir <step1> konstruksi adalah konstruktor urutan dan diperlukan. Spasi kosong dalam hasil ditambahkan hanya untuk ilustrasi dan disertakan dalam semua contoh hasil dalam dokumentasi ini.
Berikut ini adalah informasi tambahan yang harus Anda ketahui tentang urutan:
Jika kueri menghasilkan urutan yang berisi urutan lain, urutan yang terkandung diratakan ke dalam urutan kontainer. Misalnya, urutan ((1,2, (3,4,5)),6) diratakan dalam model data sebagai (1, 2, 3, 4, 5, 6).
DECLARE @x xml; SET @x = ''; SELECT @x.query('(1,2, (3,4,5)),6');Urutan kosong adalah urutan yang tidak berisi item apa pun. Ini direpresentasikan sebagai "()".
Urutan dengan hanya satu item dapat diperlakukan sebagai nilai atomik, dan sebaliknya. Artinya, (1) = 1.
Dalam implementasi ini, urutannya harus homogen. Artinya, Anda memiliki urutan nilai atom atau urutan simpul. Misalnya, berikut ini adalah urutan yang valid:
DECLARE @x xml;
SET @x = '';
-- Expression returns a sequence of 1 text node (singleton).
SELECT @x.query('1');
-- Expression returns a sequence of 2 text nodes
SELECT @x.query('"abc", "xyz"');
-- Expression returns a sequence of one atomic value. data() returns
-- typed value of the node.
SELECT @x.query('data(1)');
-- Expression returns a sequence of one element node.
-- In the expression XML construction is used to construct an element.
SELECT @x.query('<x> {1+2} </x>');
Kueri berikut mengembalikan kesalahan, karena urutan heterogen tidak didukung.
SELECT @x.query('<x>11</x>, 22');
QName
Setiap pengidentifikasi dalam XQuery adalah QName. QName terdiri dari awalan namespace dan nama lokal. Dalam implementasi ini, nama variabel dalam XQuery adalah QNames dan tidak dapat memiliki awalan.
Pertimbangkan contoh berikut di mana kueri ditentukan terhadap variabel xml yang tidak dititip:
DECLARE @x xml;
SET @x = '<Root><a>111</a></Root>';
SELECT @x.query('/Root/a');
Dalam ekspresi (/Root/a), Root dan a adalah QNames.
Dalam contoh berikut, kueri ditentukan terhadap kolom xml yang ditik. Kueri berulang di semua <elemen langkah> di lokasi pusat kerja pertama.
SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
for $Step in /AWMI:root/AWMI:Location[1]/AWMI:step
return
string($Step)
') AS Result
FROM Production.ProductModel
WHERE ProductModelID=7;
Dalam ekspresi kueri, perhatikan hal berikut:
AWMI root, ,AWMI:LocationAWMI:step, dan$Stepsemua QName.AWMIadalah awalan, danroot,Location, danStepsemua nama lokal.Variabel
$stepadalah QName dan tidak memiliki awalan.
Namespace berikut telah ditentukan sebelumnya untuk digunakan dengan dukungan XQuery di SQL Server.
| Awalan | URI |
|---|---|
| xs | http://www.w3.org/2001/XMLSchema |
| xsi | http://www.w3.org/2001/XMLSchema-instance |
| xdt | http://www.w3.org/2004/07/xpath-datatypes |
| Fn | http://www.w3.org/2004/07/xpath-functions |
| (tanpa awalan) | urn:schemas-microsoft-com:xml-sql |
| sqltypes | https://schemas.microsoft.com/sqlserver/2004/sqltypes |
| xml | http://www.w3.org/XML/1998/namespace |
| (tanpa awalan) | https://schemas.microsoft.com/sqlserver/2004/SOAP |
Setiap database yang Anda buat memiliki koleksi skema XML sys . Ini mencadangkan skema ini sehingga dapat diakses dari koleksi skema XML yang dibuat pengguna.
Catatan
Implementasi ini tidak mendukung awalan local seperti yang dijelaskan dalam spesifikasi XQuery di http://www.w3.org/2004/07/xquery-local-functions.