Share via


XML verisi alınıyor

SQL Server içeriği XML örneğinin korur, ancak bu XML veri modelindeki önemli düşünülür değil XML örnek yönlerini korumaz.Bu alınan bir XML örnek aynı sunucuda saklanan örnek olmayabilir, ancak aynı bilgileri içerecek anlamına gelir.

Bu konu, veritabanlarında depolandığında korunmaz XML örneği bölümlerini açıklar.

XML bildirisi

XML bildirim örnek veritabanında depolanıyorsa, bir örneğinde korunmaz.Örneğin:

CREATE TABLE T1 (Col1 int primary key, Col2 xml)
GO
INSERT INTO T1 values (1, '<?xml version="1.0" encoding="windows-1252" ?><doc></doc>')
GO
SELECT Col2
FROM T1

Sonuç <doc/>.

XML bildirisi gibi <?xml version='1.0'?>, XML verileri saklarken korunmaz bir xml Veri örnek yazın. Bu, tasarım gereğidir.XML bildirim (<? xml... ?>) ve veri yazmak için dönüştürüldükten sonra özniteliklerini (sürüm/kodlama/stand-alone) kaybolur. xml. XML bildirim için XML parser bir yönerge olarak nitelenir.XML verileri, dahili ucs-2 ' saklanır.XML öğesinde diğer PIs örnek korunur.

Öznitelikleri sırası

Bir XML örneğinde özniteliklerin sırası korunmaz.Depolanan XML örnek hangi koşullarda sorgu xml Tür sütun, sonuç XML öznitelikleri sırasını, özgün XML örnekten farklı olabilir.

Öznitelik değerleri etrafına tırnak işaretleri

Tek tırnak ve iki öznitelik değerleri tırnak içine korunmaz.Öznitelik değerleri, bir adý ve deðeri çifti olarak veritabanında depolanır.Tırnak işaretleri depolanır.XML örnek bir XQuery çalıştırıldığında, sonuç XML öznitelik değerleri çift tırnak içine sıralanmış.

DECLARE @x xml
-- Use double quotation marks.
SET @x = '<root a="1" />'
SELECT @x
GO
DECLARE @x xml
-- Use single quotation marks.
SET @x = '<root a=''1'' />'
SELECT @x
GO

Her iki sorgu dönmek = <root a="1" />.

Ad boşluğu önekleri

Ad boşluğu öneklerinin korunmaz.Karşı XQuery belirttiğiniz bir xml Sütun türü seri hale getirilmiş bir XML sonucu, farklı bir ad boşluğu öneklerinin döndürebilir.

DECLARE @x xml
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">
            <ns2:SomeElement/>
          </ns1:root>'
SELECT @x
SELECT @x.query('/*')
GO

Ad alanı önekini sonuç farklı olabilir.Örneğin:

<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>

See Also

Concepts