Aracılığıyla paylaş


sp_xml_preparedocument (Transact-SQL)

Giriş olarak sağlanan xml metni okur msxml parser (Msxmlsql.dll) kullanarak metin ayrıştırmak ve tüketim için hazır durumda ayrýþtýrýlmýþ belge sağlar.Ayrıştırılmış bu belge bir xml belgesindeki çeşitli düğümler ağacı gösterimidir: öğeleri, öznitelikleri, metin, açıklamalar ve benzeri.

sp_xml_preparedocument xml belgesinin yeni oluşturulan iç gösterimi erişmek için kullanılabilecek bir tanıtıcı verir.Bu tanıtıcı, oturum veya tanıtıcı yürüterek kılınır kadar süre için geçerli değil sp_xml_removedocument.

Not

Ayrıştırılmış belge İç önbellekte depolanan SQL Server.msxml ayrıştırıcısının sekizde toplam kullanılabilir bellek kullanan SQL Server.Yetersiz bellek kaçınmak için çalıştırın sp_xml_removedocument belleği boşaltmak için.

Not

İçin geriye dönük uyumluluk, sp_xml_preparedocument daraltır cr (char(13)) ve lf (karakter niteliklerini bu karakterleri entitized bile char(10)).

Not

xml parser tarafından çağrılan sp_xml_preparedocument iç DTD'ler ve varlık ilanları ayrıştırabilirsiniz.DTD'ler ve varlık kötü amaçlı olarak oluşturulmuş nedeniyle bir hizmet reddi saldırısı gerçekleştirmek için bildirimleri kullanılabilir, kullanıcılar doğrudan xml belgeleri için güvenilir olmayan kaynaklardan gelen geçirmenizi öneririz sp_xml_preparedocument.

Özyinelemeli varlık genişletme saldırıları azaltmak üzere sp_xml_preparedocument 10.000 en üst düzey bir belgenin tek bir varlık altında genişletilmiş varlıkların sayısını sınırlar.Karakter ya da sayısal varlıkları sınır uygulanmaz.Bu sınır belgeleri verir birçok varlık depolanması için başvurular ancak engelleyen herhangi bir varlık yinelemeli olarak 10.000 uzantılarına göre daha uzun bir zincir genişletilmiş ediliyor.

Not

sp_xml_preparedocument bir saat 256 açılabilir öğelerin sayısını sınırlar.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

sp_xml_preparedocument
hdoc 
OUTPUT
[ , xmltext ]
[ , xpath_namespaces ] 

Bağımsız değişkenler

  • hdoc
    Yeni oluşturulan belge tanıtıcı değil.hdocbir tamsayıdır.

  • [ xmltext ]
    Özgün xml belgesidir.Bu xml belgesi msxml ayrıştırıcısının ayrıştırır.xmltextmetin parametresi: char, nchar, varchar, nvarchar, text, ntext or xml.Varsayılan değer boş bir xml belgenin iç gösterilişinin durum oluşturulur null ' dır.

    Not

    sp_xml_preparedocument yalnızca metin veya xml untyped işleyebilir.Girdi olarak kullanılmak üzere bir örnek değeri önceden yazılmışsa, xml, önce yeni bir untyped xml örnek veya bir dize olarak artığını ve sonra bu değer giriş olarak geçirmek.Daha fazla bilgi için, bkz. Yazılı xml Untyped xml karşılaştırılması.

  • [ xpath_namespaces ]
    openxml satır ve sütun XPath ifadelerinde kullanılan ad alanı bildirimi belirtir.xpath_namespacesmetin parametresi: char, nchar, varchar, nvarchar, text, ntext or xml.

    Varsayılan değer <xmlns:mp root = "urn: schemas-microsoft-com: XML-metaprop">.xpath_namespacesopenxml XPath ifadelerinde biçimli bir xml belgesi sayesinde kullanılan önek için ad alanı URI sağlar.xpath_namespacesad alanına başvurmak için kullanılması gereken önek bildirir urn: schemas-microsoft-com: XML-metaprop; Bu ayrıştırılmış xml öğeleriyle ilgili meta veriler sağlar.Bu ad, bu tekniği kullanarak metaproperty ad alanı için ad alaný önekini tanımlayabilirsiniz, ancak kayıp değil.Önek mp için hala geçerlidir urn: schemas-microsoft-com: XML-metaprop bile xpath_namespaces böyle bir hiçbir bildirimiçerir.

Dönüş Kodu Değerleri

0 (başarılı) veya >0 (hata)

İzinler

Üyelik gerektiren ortak rolü.

Örnekler

A.Bir iç gösterim biçimli bir xml belgesi için hazırlanıyor

Aşağıdaki örnek yeni oluşturulan iç gösterimi girdi olarak sağlanan xml belgesinin bir tanıtıcı verir.Çağrısında sp_xml_preparedocument, bir varsayılan ad alanı öneki eşleme kullanılır.

DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
-- Remove the internal representation.
exec sp_xml_removedocument @hdoc

B.Bir iç dtd ile iyi biçimlendirilmiş bir xml belgesi temsili hazırlanıyor

Aşağıdaki örnek yeni oluşturulan iç gösterimi girdi olarak sağlanan xml belgesinin bir tanıtıcı verir.saklı yordam kullanarak DTD'yi belgeye dahil yüklenen belge doğrular.Çağrısında sp_xml_preparedocument, bir varsayılan ad alanı öneki eşleme kullanılır.

DECLARE @hdoc int
DECLARE @doc varchar(2000)
SET @doc = '
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE root 
[<!ELEMENT root (Customers)*>
<!ELEMENT Customers EMPTY>
<!ATTLIST Customers CustomerID CDATA #IMPLIED ContactName CDATA #IMPLIED>]>
<root>
<Customers CustomerID="ALFKI" ContactName="Maria Anders"/>
</root>'

EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc

C.Ad alanı URI belirtme

Aşağıdaki örnek yeni oluşturulan iç gösterimi girdi olarak sağlanan xml belgesinin bir tanıtıcı verir.Çağrı sp_xml_preparedocument korur mp metaproperty ad eşlemesi için önek ve ekler xyz eşleme önek ad urn:MyNamespace.

DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" 
           OrderDate="1996-07-04T00:00:00">
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" 
           OrderDate="1996-08-16T00:00:00">
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc, '<ROOT xmlns:xyz="urn:MyNamespace"/>'