Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, XQuery'nin aşağıdaki temel kavramlarını açıklar:
Sequence
QNames ve önceden tanımlanmış isim alanları
Sequence
XQuery'de, bir ifadenin sonucu, XML düğümlerinin ve XSD atomik tiplerinin örneklerinin bir listesinden oluşan bir dizidir. Bir dizideki bireysel bir giriş, bir öğe olarak adlandırılır. Bir dizide bir öğe aşağıdakilerden biri olabilir:
Bir öğe, nitelik, metin, işleme talimatı, yorum veya belge gibi bir düğüm
XSD basit tipinin bir örneği gibi bir atomik değer
Örneğin, aşağıdaki sorgu iki eleman-düğüm öğesinden oluşan bir dizi oluşturur:
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;
Sonuç şu şekildedir:
<step1> Step 1 description goes here </step1>
<step2> Step 2 description goes here </step2>
Önceki sorguda, yapının <step1> sonundaki virgül (,) dizi yapıcısıdır ve gereklidir. Sonuçlardaki boşluklar sadece illüstrasyon için eklenmiştir ve bu dokümantasyondaki tüm örnek sonuçlara dahil edilmiştir.
Aşağıda diziler hakkında bilmeniz gereken ek bilgiler yer almaktadır:
Bir sorgu başka bir diziyi içeren bir diziyle sonuçlanırsa, içindeki dizi konteyner dizisine düzleştirilir. Örneğin, ((1,2, (3,4,5)),6) dizi veri modelinde (1, 2, 3, 4, 5, 6) olarak düzleştirilir.
DECLARE @x xml; SET @x = ''; SELECT @x.query('(1,2, (3,4,5)),6');Boş dizi, herhangi bir öğe içermeyen bir dizidir. "()" olarak temsil edilir.
Sadece bir öğeden oluşan bir dizi atomik değer olarak kabul edilebilir ve tam tersi de geçerlidir. Yani, (1) = 1.
Bu uygulamada dizinin homojen olması gerekir. Yani, ya bir atomik değerler dizisi ya da bir düğüm dizisi vardır. Örneğin, aşağıdaki geçerli diziler şunlardır:
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>');
Aşağıdaki sorgu hata verir, çünkü heterojen diziler desteklenmez.
SELECT @x.query('<x>11</x>, 22');
QName
Bir XQuery'deki her tanımlayıcı bir QName'dir. QName, bir namespace preeki ve yerel bir isimden oluşur. Bu uygulamada, XQuery'deki değişken isimleri QNames'tir ve önek kullanamazlar.
Aşağıdaki örneği ele alalım; burada bir sorgu tipsiz bir xml değişkenine karşı belirtilmiştir:
DECLARE @x xml;
SET @x = '<Root><a>111</a></Root>';
SELECT @x.query('/Root/a');
() Root ifadesinde/Root/a ve a QNames'tir.
Aşağıdaki örnekte, bir sorgu tiplenmiş bir xml sütununa karşı belirtilmiştir. Sorgu, ilk çalışma merkezi konumundaki tüm <adım> öğeleri üzerinde yineleme yapar.
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;
Sorgu ifadesinde aşağıdakilere dikkat edin:
AWMI root,AWMI:Location,AWMI:step, ve$Stephepsi QNames'dir.AWMIbir preektir, veroot,Location, veStephepsi yerel isimlerdir.Değişken
$stepbir QName'dir ve öneki yoktur.
Aşağıdaki isim uzayları, SQL Server'da XQuery desteğiyle kullanılmak üzere önceden tanımlanmıştır.
| Önek | 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 |
| (ön ek yok) | urn:schemas-microsoft-com:xml-sql |
| sqltypes | https://schemas.microsoft.com/sqlserver/2004/sqltypes |
| XML | http://www.w3.org/XML/1998/namespace |
| (ön ek yok) | https://schemas.microsoft.com/sqlserver/2004/SOAP |
Oluşturduğunuz her veritabanında sys XML şema koleksiyonu bulunur. Bu şemaları, kullanıcı tarafından oluşturulan herhangi bir XML şema koleksiyonundan erişilebilmeleri için saklar.
Note
Bu uygulama local , XQuery spesifikasyonunda tanımlanan http://www.w3.org/2004/07/xquery-local-functionsön eki desteklemez.