Określanie Metaproperties w OPENXML
Atrybuty Metaproperty w dokumencie XML są atrybuty, które opisują właściwości elementu XML, takie jak element, atrybut lub innego węzła DOM..Te atrybuty nie są fizycznie określone w tekście dokumentu XML.Jednak OPENXML zawiera te metaproperties dla wszystkich elementów XML.Te metaproperties pozwala na wyodrębnienie informacji, takich jak położenie lokalnej i informacje o obszarze nazw węzłów XML.Te informacje pozwala uzyskać bardziej szczegółowe informacje nie są widoczne w tekstowa reprezentacja.
Można mapować te metaproperties do zestawu zestaw wierszy kolumn w instrukcja SQL OPENXML przy użyciu ColPattern parametr.W kolumnach będą zawierać wartości metaproperties, do którego są mapowane.Aby uzyskać więcej informacji na temat składni OPENXML zobacz OPENXML (Transact-SQL).
Aby uzyskać dostęp do atrybutów metaproperty, obszar nazw, które są specyficzne dla programu SQL Server jest dostępna.Ten obszar nazw URN: schemas-microsoft - com:xml - metaprop zezwala użytkownikowi na dostęp do atrybutów metaproperty.Jeśli wynikiem kwerendy do OPENXML zwracany jest w formacie tabela krawędzi, krawędzi tabela zawiera jedną kolumna dla każdego atrybut metaproperty, z wyjątkiem XmlText metaproperty.
Niektóre atrybuty metaproperty są używane do przetwarzania celów.Na przykład XmlText metaproperty atrybut jest używany do obsługi przepełnienie.Obsługa przepełnienie odnosi się do nieużywanej, nieprzetworzone dane w dokumencie.Jedna z kolumn w zestawie zestaw wierszy, który jest generowany przez OPENXML może być zidentyfikowany jako kolumna przepełnienia.Aby to zrobić, należy go do mapowania XmlText metaproperty przy użyciu ColPattern parametr.kolumna odbiera następnie przepełnienie danych.The flags parameter determines whether the kolumna contains everything or only the unconsumed data.
Następująca tabela zawiera listę atrybutów metaproperty, że każdy analizy elementu XML ma.Te atrybuty metaproperty jest możliwy za pomocą obszaru nazw URN: schemas-microsoft - com:xml - metaprop.Każda wartość, które użytkownik ustawi bezpośrednio w dokumencie XML przy użyciu tych metaproperties jest ignorowana.
Uwaga
Nie można odwoływać się do tych metaproperties w dowolnym nawigacji XPath.
Atrybut Metaproperty |
Description |
---|---|
@ CR: identyfikator |
Zawiera wygenerowane przez system, dla całego dokumentu identyfikator węzła DOM..Dopóki dokument nie jest reparsed, ten identyfikator odwołuje się do tego samego węzła XML. IDENTYFIKATOR XML z 0 wskazuje, że element jest elementem głównym.Nadrzędnego IDENTYFIKATORA XML jest NULL. |
@ CR: localname |
Przechowuje lokalną część nazwy węzła.Jest ono używane z prefiksu i obszaru nazw URI do nazwy elementu lub atrybut węzłów. |
@ CR: namespaceuri |
Zawiera obszaru nazw URI bieżącego elementu.Jeśli wartość tego atrybut ma wartość NULL, nazw nie jest obecny |
@ CR: prefiks |
Przechowuje prefiks obszaru nazw bieżącej nazwy elementu. Jeśli prefiks nie jest obecnie (NULL) i znajduje się identyfikator URI, wskazuje to, że określony obszar nazw jest domyślny obszar nazw.Jeśli podano nie identyfikatora URI, nazw nie jest dołączony. |
@ CR: poprzedni |
Przechowuje poprzedni element równorzędny względem węzła.Dzięki temu informacje o kolejności elementów w dokumencie. @ CR: poprzedni zawiera identyfikator XML poprzedniego tego samego poziomu, który ma ten sam element nadrzędny.Jeśli element znajduje się na początku listy tego samego poziomu @ CR: poprzedni jest NULL. |
@ CR: xmltext |
Używane dla celów przetwarzania.Tekstowy serializacji elementu i jego atrybuty, a także podelementy, jest używany w obsługi przepełnienie OPENXML. |
W poniższej tabela pokazano nadrzędnego dodatkowe właściwości, które są dostarczane i umożliwia pobieranie informacji na temat hierarchii.
Atrybut metaproperty nadrzędny |
Description |
---|---|
@ CR: parentid |
Odpowiada ../@MP:ID |
@ CR: parentlocalname |
Odpowiada ../@MP:LocalName |
@ CR: parentnamespacerui |
Odpowiada ../@MP:namespaceURI |
@ CR: parentprefix |
Odpowiada ../@MP:prefix |
Przykłady
Poniższe przykłady ilustrują, w jaki sposób OPENXML służy do tworzenia zestaw wierszy różnych widoków.
A.Mapowanie kolumn zestawu zestaw wierszy OPENXML the metaproperties
W tym przykładzie użyto OPENXML, aby utworzyć widok zestawu zestaw wierszy z przykładowy dokument XML.W szczególności pokazuje w jaki sposób różne atrybuty metaproperty mogą być mapowane do zestawu zestaw wierszy kolumn w instrukcja SQL OPENXML przy użyciu ColPattern parametr.
Instrukcja OPENXML ilustruje następujące czynności:
The id kolumna is mapped to the @mp:id metaproperty atrybut and indicates that the kolumna contains the system-generated unique XML ID of the element.
The parent kolumna is mapped to @mp:parentid and indicates that the kolumna contains the XML ID of the parent of the element.
The parentLocalName kolumna is mapped to @mp:parentlocalname and indicates that the kolumna contains the local name of the parent.
Następnie instrukcja SELECT zwraca zestaw wierszy, jaką zapewnia OPENXML:
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
Oto wynik:
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.Trwa pobieranie całego dokumentu XML
W tym przykładzie OPENXML jest używany do utworzenia zestawu zestaw wierszy z jednej kolumna widoku przykładowy dokument XML.W tej kolumnie Kol1, jest mapowany na XmlText metaproperty i stanie się kolumną przepełnienie.W rezultacie kolumna odbiera nieużywanej danych.W takim wypadku jest cały dokument.
Następnie instrukcja SELECT zwraca pełny zestaw wierszy.
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')
Aby pobrać cały dokument bez deklaracja XML, można określić kwerendę, jak to pokazano w poniższym:
SELECT *
FROM OPENXML (@idoc, '/root')
WITH (Col1 ntext '@mp:xmltext')
EXEC sp_xml_removedocument @idoc
Zwraca element główny, składająca się z głównych nazw i danych, który jest zawarty w elemencie głównym
C.Określanie metaproperty xmltext do pobierania danych nieużywanej kolumna
W tym przykładzie użyto OPENXML, aby utworzyć widok zestawu zestaw wierszy z przykładowy dokument XML.W przykładzie pokazano, jak pobrać nieużywanej danych XML, mapując XmlText metaproperty atrybut do kolumna OPENXML zestawu zestaw wierszy.
The comment kolumna is identified as the overflow kolumna by mapping it to the @mp:xmltext metaproperty.The flags parameter is zestaw to 9 (XML_ATTRIBUTE and XML_NOCOPY).Oznacza to, że zorientowany atrybut mapowania i wskazuje, że tylko dane nieużywanej powinny być skopiowane do Kolumna przepełnienia.
Następnie instrukcja SELECT zwraca dostarczonych przez OPENXML zestawu zestaw wierszy.
W tym przykładzie @ CR: parentlocalname metaproperty jest ustawiony dla kolumna, ParentLocalName, zestaw wierszy wygenerowanych przez OPENXML.W rezultacie kolumna zawiera nazwę lokalną elementu nadrzędnego.
Dwa dodatkowe kolumny są określone w zestawie zestaw wierszy, nadrzędny and komentarz.The parent kolumna is mapped to @mp:parentid and indicates that the kolumna contains the XML ID of the parent element of the element.W kolumnie komentarz jest identyfikowany jako kolumna przepełnienia mapując go do @ CR: xmltext metaproperty.
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
Jest to wynik.Ponieważ oid kolumn i kolumn data są już wykorzystane, nie zostały podane kolumna przepełnienie.
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"/>
See Also