Aracılığıyla paylaş


Sırası ve QNames (XQuery)

Bu konu, aşağıdaki temel kavramlarını XQuery açıklar:

  • Sıra

  • QNames ve önceden tanımlanmış ad alanları

Sıra

XQuery ifade listesi xml düğümleri ve xsd Atomik türlerin örnekleri yapılan bir dizi sonucudur.Bir sıra tek bir girişi öğe adlandırılır.öğe bir sıra aşağıdakilerden biri olabilir:

  • Bir öğe, öznitelik, metin, işlem yönergesi, açıklama veya belge gibi bir düğüm

  • xsd basit türünün örnek gibi bir Atomik değeri

Örneğin, aşağıdaki sorguyu iki öğe düğümü öğelerin sırasını 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

Bu sonucu verir:

<step1> Step 1 description goes here </step1>
<step2> Step 2 description goes here </step2> 

Önceki sorgu, virgül (,), sonunda <step1> yapım sıra yapıcı ve gerekli.Beyaz boşluk sonuçlarında yalnızca gösterim eklenir ve bu belgedeki örnek sonuçlar dahil edilir.

Sıralar hakkında bilmeniz gereken ek bilgiler aşağıdadır:

  • Sorgu sonuçlar, başka bir sıra içeren bir sıra içindeki sırası kapsayıcı sýraya düzleştirilir.Örneğin, sıra ((1,2, (3,4,5)), 6) Veri modelindeki düzleştirilmiş (1, 2, 3, 4, 5, 6).

    DECLARE @x xml
    SET @x = ''
    SELECT @x.query('(1,2, (3,4,5)),6')
    
  • Boş bir sıra herhangi bir öğe içeren bir kümesidir.Onu temsil edilir "()".

  • Tek öğe ile bir sıra atomik bir değer olarak, veya tam tersi ele alınabilir.Yani, (1) = 1.

Bu uygulama, bir dizi homojen olmalı.Yani, ya da, Atomik değerleri dizisi veya düğümler bir dizi var.Örneğin, geçerli sıralarını ş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>')

Türdeş olmayan sıraları desteklenmediği için aşağıdaki sorgu hata verir.

SELECT @x.query('<x>11</x>, 22')

QName

Her bir XQuery içindeki bir QName tanımlayıcısıdır.QName ad alaný önekini ve yerel adından oluşur.Bu uygulamada QNames XQuery değişken adları olan ve önekleri olamaz.

Bir sorgu belirtilirse aşağıdaki örneği inceleyin bir untyped karşı xml değişkeni:

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

In the ifade (/Root/a), Root and a are QNames.

Aşağıdaki örnekte, sorguda belirtilen bir yazılı karşı xml sütun.Tüm sorgu dolaşır <Adım> öğeleri ilk iş merkezi konum.

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 ifade, aşağıdakilere dikkat edin:

  • AWMI root, AWMI:Location, AWMI:step, and $Step are all QNames.AWMI is a prefix, and root, Location, and Step are all local names.

  • The $step variable is a QName and does not have a prefix.

Aşağıdaki ad alanları XQuery desteği ile kullanılmak üzere önceden tanımlanmıştır SQL Server.

Önek

URI

Xs

http://www.w3.org/2001/XMLSchema

XSI

http://www.w3.org/2001/XMLSchema-örnek

XDT

http://www.w3.org/2004/07/XPath-datatypes

fn

http://www.w3.org/2004/07/XPath-Functions

(önek)

urn: schemas-microsoft-com: XML-sql

SqlTypes

https://schemas.microsoft.com/SQLServer/2004/SqlTypes

XML

http://www.w3.org/XML/1998/namespace

(önek)

https://schemas.microsoft.com/SQLServer/2004/SOAP

Oluşturduğunuz her veritabanı olan sys xml şema koleksiyon.Hiçbir kullanıcı tarafından oluşturulan xml şemasından erişilecek şekilde Bu şemalar ayırır koleksiyon.Daha fazla bilgi için bkz: Yerleşik xml şema koleksiyonu (sys).

Not

Bu uygulama destek local XQuery belirtiminde açıklandığı gibi önek, http://www.w3.org/2004/07/xquery-local-functions.

Ayrıca bkz.

Kavramlar

Diğer Kaynaklar