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.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
XML belgesindeki meta özellik öznitelikleri, xml öğesinin özelliklerini açıklayan öğe, öznitelik veya başka bir DOM düğümü gibi özniteliklerdir. Bu öznitelikler XML belge metninde fiziksel olarak bulunmaz. Ancak, OPENXML tüm XML öğeleri için bu meta özellikleri sağlar. Bu meta özellikler, XML düğümlerinin yerel konumlandırması ve ad alanı bilgileri gibi bilgileri ayıklamanıza olanak sağlar. Bu bilgiler, metin gösteriminde görünenden daha fazla ayrıntı sağlar.
ColPattern parametresini kullanarak bu meta özellikleri openXML deyimindeki satır kümesi sütunlarına eşleyebilirsiniz. Sütunlar, eşlendikleri meta özelliklerin değerlerini içerir. OPENXML söz dizimi hakkında daha fazla bilgi için bkz. OPENXML (Transact-SQL) .
Meta özellik özniteliklerine erişmek için SQL Server'a özgü bir ad alanı sağlanır. Bu ad alanı, urn:schemas-microsoft-com:xml-metaprop kullanıcının meta özellik özniteliklerine erişmesine izin verir. BIR OPENXML sorgusunun sonucu bir kenar tablosu biçiminde döndürülürse, kenar tablosu metaözelliği xmltext dışında her metaproperty özniteliği için bir sütun içerir.
Meta özellik özniteliklerinden bazıları işleme amacıyla kullanılır. Örneğin, taşma işleme için xmltext meta özellik özniteliği kullanılır. Taşma işlemi, belgedeki tüketilmemiş, işlenmemiş verileri ifade eder. OPENXML tarafından oluşturulan satır kümesindeki sütunlardan biri taşma sütunu olarak tanımlanabilir. Bunu, xmltext parametresini kullanarak meta özelliğine eşleyerek yaparsınız. Ardından sütun taşma verilerini alır.
bayrakları parametresi, sütunun her şeyi mi yoksa yalnızca tüketilmemiş verileri mi içerdiğini belirler.
Aşağıdaki tabloda ayrıştırılan her XML öğesinin sahip olduğu metaproperty öznitelikleri listelenmiştir. Bu metaözellik özniteliklerine urn:schemas-microsoft-com:xml-metapropad alanı kullanılarak erişilebilir. Kullanıcının bu meta özellikleri kullanarak doğrudan XML belgesinde ayarladığı tüm değerler yoksayılır.
Not
Bu meta özelliklere hiçbir XPath gezintisinde başvuramazsınız.
| Metaproperty özniteliği | Açıklama |
|---|---|
@mp:id |
DOM düğümünün sistem tarafından oluşturulan, belge genelinde tanımlayıcısını sağlar. Belge yeniden işlenmiyorsa, bu kimlik aynı XML düğümüne bağlanır.0 XML kimliği, öğenin bir kök öğesi olduğunu gösterir. Üst XML kimliği NULL'tır. |
@mp:localname |
Düğüm adının yerel bölümünü depolar. Öğe veya öznitelik düğümlerini adlandırmak için bir ön ek ve ad alanı URI'siyle kullanılır. |
@mp:namespaceuri |
Geçerli öğenin ad alanı URI'sini sağlar. Bu özniteliğin değeri NULL ise, ad alanı yoktur |
@mp:prefix |
Geçerli öğe adının ad alanı ön ekini depolar. Ön ek yoksa (NULL) ve URI verilirse, belirtilen ad alanının varsayılan ad alanı olduğunu gösterir. URI verilmezse, ad alanı eklenmez. |
@mp:prev |
Bir düğümle ilgili olarak önceki kardeşi depolar. Bu, belgedeki öğelerin sıralaması hakkında bilgi sağlar.@mp:prev, aynı üst öğeye sahip önceki eşdüzeyin XML kimliğini içerir. Öğe eşdüzeyler listesinin önündeyse @mp:prev NULL'dür. |
@mp:xmltext |
İşleme amacıyla kullanılır. OPENXML'nin taşma işlemesinde kullanıldığı şekilde, öğenin, özniteliklerinin ve alt öğelerinin metinsel serileştirilmesidir. |
Bu tablo, sağlanan ek ebeveyn özelliklerini ve bunların hiyerarşi hakkında bilgi almanızı nasıl sağladığını gösterir.
| Üst meta özellik özniteliği | Açıklama |
|---|---|
@mp:parentid |
../\@mp:id karşılık gelir |
@mp:parentlocalname |
../\@mp:localname karşılık gelir |
@mp:parentnamespacerui |
../\@mp:namespaceuri karşılık gelir |
@mp:parentprefix |
../\@mp:prefix karşılık gelir |
Örnekler
Aşağıdaki örneklerde, OPENXML'nin farklı satır kümesi görünümleri oluşturmak için nasıl kullanıldığı gösterilmektedir.
A. OPENXML satır kümesi sütunlarını meta özelliklerle eşleme
Bu örnekte, örnek XML belgesinin satır kümesi görünümünü oluşturmak için OPENXML kullanılmaktadır. Özellikle, ColPattern parametresi kullanılarak çeşitli metaözellik özniteliklerinin bir OPENXML deyimindeki satır kümesi sütunlarına nasıl eşlenebileceğini gösterir.
OPENXML deyimi aşağıdakileri gösterir:
idsütunu@mp:idmetaözelliği özniteliğine eşlenir ve sütunun öğenin sistem tarafından oluşturulan benzersiz XML kimliğini içerdiğini gösterir.parentsütunu@mp:parentideşlenir ve sütunun öğenin üst öğesinin XML kimliğini içerdiğini gösterir.parentLocalNamesütunu, sütunun üst öğesinin yerel adını içerdiğini gösterir ve@mp:parentlocalname'e eşlenmiştir.
SELECT deyimi daha sonra OPENXML tarafından sağlanan satır kümesini döndürür:
DECLARE @idoc int;
DECLARE @doc nvarchar(1000);
-- Sample XML document
SET @doc = N'<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>';
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
-- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/root/Customer/Order', 9)
WITH (id int '@mp:id',
oid char(5),
date datetime,
amount real,
parentIDNo int '@mp:parentid',
parentLocalName varchar(40) '@mp:parentlocalname');
EXEC sp_xml_removedocument @idoc;
Sonuç şu şekildedir:
id oid date amount parentIDNo parentLocalName
--- ------- ---------------------- ---------- ------------ ---------------
6 O1 1996-01-20 00:00:00.000 3.5 2 Customer
10 O2 1997-04-30 00:00:00.000 13.4 2 Customer
19 O3 1999-07-14 00:00:00.000 100.0 15 Customer
25 O4 1996-01-20 00:00:00.000 10000.0 15 Customer
B. XML belgesinin tamamını alma
Bu örnekte OPENXML, örnek XML belgesinin tek sütunlu satır kümesi görünümünü oluşturmak için kullanılır.
Col1sütunu, xmltext meta özelliğine eşlenir ve taşma alanı sütunu olur. Sonuç olarak sütun, tüketilmemiş verileri alır. Bu durumda, bu, belgenin tamamı.
SELECT deyimi daha sonra tam satır kümesini döndürür.
DECLARE @idoc int;
DECLARE @doc nvarchar(1000);
SET @doc = N'<?xml version="1.0"?>
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very
satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue
white red">
<MyTag>Testing to see if all the subelements are returned</MyTag>
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>';
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
-- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/')
WITH (Col1 ntext '@mp:xmltext')
XML bildirimi olmadan belgenin tamamını almak için sorgu aşağıdaki gibi belirtilebilir:
SELECT *
FROM OPENXML (@idoc, '/root')
WITH (Col1 ntext '@mp:xmltext')
EXEC sp_xml_removedocument @idoc;
Sorgu, kök adlı kök öğeyi ve kök öğesinin içerdiği verileri döndürür
C. Tüketilmemiş verileri bir sütunda almak için xmltext metaproperty'sini belirtme
Bu örnekte, örnek XML belgesinin satır kümesi görünümünü oluşturmak için OPENXML kullanılmaktadır. Örnekte, xmltext metaproperty özniteliğini OPENXML'deki bir satır kümesi sütununa eşleyerek, işlenmemiş XML verilerinin nasıl alındığı gösterilmektedir.
comment sütunu, @mp:xmltext meta özelliğine eşlenerek taşma sütunu olarak tanımlanır.
bayrakları parametresi 9 (XML_ATTRIBUTE ve XML_NOCOPY) olarak ayarlanır. Bu, attribute-centric eşlemeyi gösterir ve yalnızca tüketilmemiş verilerin taşma sütununa kopyalanması gerektiğini belirtir.
SELECT deyimi daha sonra OPENXML tarafından sağlanan satır kümesini döndürür.
Bu örnekte, @mp:parentlocalname meta özelliği, OPENXML tarafından oluşturulan satır kümesinde ParentLocalNamebir sütun için ayarlanır. Sonuç olarak, bu sütun üst öğenin yerel adını içerir.
Satır kümesinde parent ve commentiki ek sütun belirtilir.
parent sütunu @mp:parentid eşlenir ve sütunun öğenin üst öğesinin XML kimliğini içerdiğini gösterir. Açıklama sütunu, @mp:xmltext meta özelliğine eşlenerek taşma sütunu olarak tanımlanır.
DECLARE @idoc int;
DECLARE @doc nvarchar(1000);
-- sample XML document
SET @doc = N'<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
';
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
-- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/root/Customer/Order', 9)
WITH (oid char(5),
date datetime,
comment ntext '@mp:xmltext');
EXEC sp_xml_removedocument @idoc;
Sonuç budur. OID sütunlar ve tarih sütunları zaten tüketildiğinden aşma sütununda görünmezler.
oid date comment
----- --------------------------- ----------------------------------------
O1 1996-01-20 00:00:00.000 <Order amount="3.5"/>
O2 1997-04-30 00:00:00.000 <Order amount="13.4">Customer was very
satisfied</Order>
O3 1999-07-14 00:00:00.000 <Order amount="100" note="Wrap it blue
white red"><Urgency>
Important</Urgency></Order>
O4 1996-01-20 00:00:00.000 <Order amount="10000"/>