openxml kullanarak xml sorgulama

openxml, bir Transact-SQL anahtar sözcüğü sağlar bir satır kümesi üzerinde bellek içi xml belgeleri, benzer bir tablo veya görünüm.İlişkisel bir satır kümesi gibi rağmen openxml xml veri erişimi sağlar.Bir satır kümesi iç temsili bir xml belgesinin görünümünü sağlayarak bunu yapar.Satır kümesi kayıtları veritabanı tablolarında depolanır.

openxml seçin ve select INTO deyimlerinde satır kümesi sağlayıcı, bir görünüm veya openrowset kaynak olarak görülebilir her yerde kullanılabilir.openxml sözdizimi hakkında bilgi için bkz: openxml (Transact-sql).

openxml kullanarak bir xml belgesi sorguları yazmak için ilk önce çağırmanız gerekir sp_xml_preparedocument.Bu xml belgesi ayrıştırma ve tüketim için hazır ayrıştırılmış belgeye bir tanıtıcı verir.Bir belge nesnesi modeli (dom) ağaç temsilini xml belgesindeki çeşitli düğümlerde ayrıştırılmış belgedir.Belge tutamacı için openxml geçirilir.openxml sonra kendisine geçirilen parametreleri esas belge satır kümesi bir görünümünü sağlar.

Not

İle başlayan SQL Server 2005, sp_xml_preparedocument Msxmlsql.dll msxml ayrıştırıcısının sql güncelleştirilmiş bir sürüm kullanır.Bu msxml parser sürümünü desteklemek için tasarlanmış SQL Server ve msxml sürüm 2.6 ile geriye doğru uyumlu kalır.

Bir xml belgesinin iç gösterim bellekten çağırarak kaldırılması gerekiyor sp_xml_removedocument sistem saklı yordamı bellek boşaltmak için.

Aşağıdaki şekil işlemi göstermektedir.

OPENXML ile XML ayrıştırma

openxml anlamak için XPath sorguları ve xml bilinmesini anlamanızda gerekli olduğunu unutmayın.sql Server'da XPath desteği hakkında daha fazla bilgi için bkz: XPath sorguları sqlxml 4.0 kullanma.

Not

OpenXML XPath desenler değişkenleri belirlenmi satır ve sütun verir.Programcı (örneğin, parametreleri dışarıdan çağrılan bir saklı yordam sağlandığında) parameterizasyonunu dış kullanıcılara sunar, bu tür parameterizasyonunu XPath ifade eklemelerini için yol açabilir.Bu tür olası güvenlik sorunlarını önlemek için XPath parametreleri hiçbir zaman açık anlamına dış arayanlar için önerilir.

openxml Parametreler

openxml için parametreler şunlardır:

  • Bir xml belge tutamacı (IDoc)

  • Satırlarına eşlenmesi için düğümleri tanımlamak için bir XPath ifade (rowpattern)

  • Oluşturulacak satır kümesi açıklaması

  • Satır kümesi sütunları ve xml düğümleri arasında eşleme

xml belge tanıtıcı (IDoc)

Belge tanıtıcı tarafından döndürülen sp_xml_preparedocument saklı yordam.

(Rowpattern) işleme için düğümleri tanımlamak için bir XPath ifadesi

Olarak belirtilen XPath ifadesini rowpattern tanımlayan bir küme xml belgesindeki düğümleri.İle tanımlanan her bir düğüm rowpattern openxml tarafından üretilen satır kümesi içinde tek bir satıra karşılık gelir.

XPath tarafından tanımlanan düğüm ifade xml belgesindeki tüm xml düğümü olabilir.If rowpattern identifies a set of elements in the XML document, there is one row in the rowset for each element node identified.Örneğin, rowpattern özniteliği sona erdikten sonra bir satır oluşturuldu seçtiği her öznitelik düğümü için rowpattern.

Oluşturulacak satır kümesi açıklaması

Şema satır kümesi openxml tarafından elde edilen satır kümesi oluşturmak için kullanılır.Bir satır kümesi şema belirtmek için aşağıdaki seçenekleri kullanabilirsiniz.

Kenar tablo biçimi kullanma

Şema satır kümesi belirtmek için kenar tablo biçimini kullanmalısınız.WITH kullanma yan tümce.

Bunu yaptığınızda, openxml kenar tablo biçiminde bir satır kümesi döndürür.Ayrıştırılmış xml belge ağacındaki her köşede bir satır satır kümesi eşleştirir çünkü bu bir kenar tablo olarak adlandırılır.

Kenar tablo içinde tek bir tabloda belirtilecek xml belge yapısı temsil eder.Bu yapıyı, öğe ve öznitelik adları, belge hiyerarşisindeki, ad alanlarını ve işleme yönergelerini içerir.Kenar tablo biçiminde metaproperties kullanıma ek bilgi edinmek sağlar.Metaproperties hakkında daha fazla bilgi için OPENXML29bfd1c6-3f9a-43 c 4-924a-53d438e442f4 belirterek Metaproperties bakın.

Bir kenar tablo tarafından sağlanan ek bilgi depolamak ve bir öðe ve öznitelik veri türüne ve düğüm türü sorgu saklamak ve xml belge yapısı hakkında bilgi sorgulama yapabilirsiniz.Bu ek bilgilerle onu da kendi xml belge yönetim sistemi oluşturmak mümkün olabilir.

Kenar tablo kullanarak, xml belgeleri giriş, ikili büyük nesne (blob) ele saklı yordamlar kenar tablo üretmek ayıklamak ve belge üzerinde daha ayrıntılı bir analiz yazabilirsiniz düzey.Belge hiyerarşisindeki, öğe ve öznitelik adları, ad alanlarını ve işleme yönergeleri bulma bu ayrıntılı düzey içerebilir.

Kenar tablo da xml belgeleri için depolama biçimi ilişkisel diğer biçimleri eşleme mantıksal olduğunda ve ntext alan yapısal yeterli bilgi sağlamıyor görebilir.

Burada bir xml belgesi incelemek için bir xml Ayrıştırıcısı kullanabilirsiniz durumlarda, kenar tablo yerine aynı bilgileri almak için kullanabilirsiniz.

Aşağıdaki tablo kenarı yapısını açıklayan tablo.

Sütun adı

Veri türü

Açıklama

Kimliği

bigint

Belge düğümü benzersiz kimliğidir.

Kök öğesi kimliği değeri 0 vardır.ID değerleri negatif rezerve edilir.

parentID

bigint

Düğümün üst tanımlar.Bu kimliği tarafından belirtilen üst mutlaka üst öğesi değil.Ancak, bu ana bu kimliği ile tanımlanır düğümün NodeType bağlıdırÖrneğin, bir metin düğümü düğümse, üst öznitelik düğümü olabilir.

Üst düğüm ise, düzey xml belgesinde, parentID null olur.

düğüm türü

Int

Düğüm türü tanımlar ve bir xml nesnesi modeli (dom) düğüm türü numaralandırma için karşılık gelen bir tamsayıdır.

Aşağıda, bu konuda görülen değerleri sütun düğüm türü belirtmek için:

1 = Öğe düğümü

2 = Öznitelik düğümü

3 = Metin düğümü

4 = cdata bölümü düğüm

5 = Varlık başvuru düğüm

6 = Varlık düğüm

7 = İşlem yönergesi düğümü

8 = Açıklama düğüm

9 = Belge düğümü

10 = Belge türü düğümü

11 = Düğüm belge parçası

12 = Gösterim düğüm

Daha fazla bilgi için bkz: "nodeType özelliği" Microsoft xml (msxml) sdk konusuna.

LocalName

nvarchar(max)

Yerel öğenin adını verir ya da öznitelik.Olan dom nesnesi bir ad yoksa null.

önek

nvarchar(max)

Ad alanı önekini düğümün adı olur.

namespaceURI

nvarchar(max)

Düğümün URI ad alanıdır.Değer null ise, hiçbir ad alanı bulunuyor.

Datatype

nvarchar(max)

Gerçek veri türü, öðe ya da öznitelik satır ve Aksi halde null.Veri türü, dtd satırla hizalı veya satır içi şema algılanır.

önceki

bigint

Önceki eşdüzey öğesi xml kimliğidir.Olan doğrudan hiçbir önceki Eşdüzey Düğüm yoksa null.

metin

ntext

Öznitelik değerini veya metin biçiminde öğe içeriği içeriyor.Ya da bir değer kenar tablo girişi gerekmiyorsa, null ' dır.

WITH kullanarak varolan bir tabloyu belirtmek için yan tümcesi

Varolan bir ad belirtmek için WITH yantümcesini kullanabilirsiniz tablo.Bunu yapmak için şema satır kümesi oluşturmak için openxml tarafından kullanılabilir varolan bir tablo adı belirtin.

WITH kullanarak bir şema belirtmek için yan tümcesi

İLE yan tümcesi, tam bir şema belirtmek için kullanabilirsiniz.Şema satır kümesi belirterek, sütun adları, kendi veri türleri ve bunların eşleme xml belgesi için belirtin.

Sütun deseni içinde SchemaDeclaration ColPattern parametresini kullanarak belirtebilirsiniz.Belirtilen sütun deseni rowpattern tarafından tanımlanır ve aynı zamanda eşleme türünü belirlemek için kullanılan xml düğümü için bir satır kümesi sütun eşlemek için kullanılır.

ColPattern için bir sütun belirtilmezse, satır kümesi sütun xml düğümü tarafından belirtilen eşleme göre aynı adla eşler flags parametresi.Üzerine ColPattern WITH yan tümce tümce tümcesinde şema belirtiminin bir parçası olarak belirtilir, ancak onu belirtilen eşleme Yazar flags parametresi.

Satır kümesi sütunları ve xml düğümleri arasında eşleme

openxml deyim içinde isteğe bağlı öznitelik merkezli ya da öğe merkezli, satır kümesi sütunları ve tarafından tanımlanan xml düğümleri arasında eşleme türünü belirtebileceğiniz rowpattern.Bu bilgiler xml düğümleri ve satır kümesi sütunlar arasında dönüştürme kullanılır.

İki yolla eşlemeyi belirtmek ve her ikisi de belirtebilirsiniz:

  • Kullanarak flags parametresi

    Tarafından belirtilen eşleme flags parametre adı yazışma xml düğümleri eşlemek için karşılık gelen satır kümesi sütun aynı ada sahip olduğu varsayılmaktadır.

  • Kullanarak ColPattern parametresi

    ColPattern, bir XPath ifade, bir parçası belirtilen SchemaDeclaration WITH yan tümce tümce tümcesinde.Belirtilen eşleme ColPattern tarafından belirtilen eşleme üzerine yazar flags parametresi.

    ColPattern üzerine yazar veya tarafından gösterilen varsayılan eşleme geliştirir öğesi merkezli, ya da öznitelik merkezli eşleme türünü belirtmek için kullanılan flags.

    ColPattern şu koşullarda belirtilen:

    • Sütun satır kümesi öğesinden farklı adıdır veya öznitelik , eşlenen için adı.Bu durum, ColPattern satır kümesi sütun eşlemeleri için xml öğe ve öznitelik adı tanımlamak için kullanılır.

    • Metaproperty öznitelik için sütun eşlemek istiyorsunuz.Bu durum, ColPattern satır kümesi sütun eşlemeleri için metaproperty tanımlamak için kullanılır.Metaproperties kullanma hakkında daha fazla bilgi için bkz: Metaproperties openxml belirtme.

Her iki flags ve ColPattern Parametreler isteğe bağlıdır.Eşleme yok belirtilirse, öznitelik merkezli eşleme kabul edilir.Öznitelik merkezli eşleme varsayılan değeri olan flags parametresi.

Öznitelik merkezli eşleme

Ayar flags openxml 1 (XML_ATTRIBUTES) belirtir öznitelik merkezli eşleme.If flags contains XML_ ATTRIBUTES, the exposed rowset provides or consumes rows where each XML element is represented as a row.xml özniteliği öznitelikleri SchemaDeclaration içinde tanımlanan veya adı benzerliği alarak, WITH yan tümce tümce tümce Tablename tarafından sunulan eşlenir.Adı yazışma anlamına gelir içinde belirli bir adın xml öznitelikleri saklanır bir sütun aynı adı taşıyan satır kümesi içinde.

Sütun adı da, eşleştirir öznitelik adı farklı ise, ColPattern belirtilmesi gerekir.

Bir ad alanı niteleyici xml öznitelik varsa, satır kümesi sütun adının de niteleyici olmalıdır.

Öğe merkezli eşleme

Ayar flags openxml 2 (xml_elements) belirtir öğesi merkezli eşleme.Benzer şekilde, öznitelik merkezli , aşağıdaki farklar dışında eşleme:

  • Sütun düzey desen belirtilmediği sürece eşleme örneğin adı Yazışma, noncomplex alt öğeler aynı ada sahip bir xml öğesi için bir sütun eşleme seçer.Ek alt öğeler içerdiği için alt öğesi karmaşık ise alma işleminde sütun değeri null olarak küme.Sonra alt öğeler öznitelik değerleri dikkate alınmaz.

  • Aynı ada sahip birden çok öğesi ilk düğümü döndürülür.