Identyfikowanie przy użyciu kolumny klucz sql:klucz-pól (schematu XDR)
Important Note: |
|---|
W tym temacie jest włączony jako odwołanie w przypadku starszych aplikacji.Żadna praca przyszłe będą mogły wykonać tej funkcji.Należy unikać stosowania tej funkcji w nowej pracy rozwoju.Zamiast tego należy używać adnotacjami schematów XSD tworzenia widoków XML.Aby uzyskać więcej informacji zobaczWprowadzenie do adnotacjami schematy XSD (SQLXML 4.0).Istniejące schematy XDR adnotacjami można przekonwertować schematów XSD.Aby uzyskać więcej informacji zobaczKonwertowanie adnotacjami schematy XDR Equivalent schematy XSD (SQLXML 4.0). |
Po określeniu kwerendę XPath względem schematu XDR najważniejsze informacje w większości przypadków jest wymagane do uzyskania właściwego zagnieżdżenia w wyniku.Określanie sql:key-fields Adnotacja jest sposobem zapewnienia, generowany jest odpowiedniej hierarchii.
Uwaga
Aby uzyskać prawidłowe zagnieżdżenia w wyniku, zaleca się sql:key-fields można określić w wszystkich schematów.
W wielu przypadkach jest zrozumienie sposobu jednoznacznie identyfikują wiersze w tabela, aby wygenerować odpowiednie hierarchii XML.The sql:key-fields annotation can be added to the <element> and <ElementType> to identify kolumna(s) that uniquely identify rows in the tabela.
Wartość sql:key-fields identyfikuje kolumna, które jednoznacznie identyfikują w relacji, określonych w wierszach <ElementType>. Jeśli więcej niż jednej kolumna jest wymagane do unikatowego identyfikowania wiersza, kolumna są wyświetlane wartości oddzielone spacjami.
The sql:key-fields annotation must be specified in an element containing a podrzędność element and a <sql:relationship>, defined between the element and the podrzędność, that does not provide the klucz podstawowy of the tabela specified in the parent element.
Przykłady
Aby utworzyć próbek pracy przy użyciu poniższych przykładach, musi spełniać określone wymagania.Aby uzyskać więcej informacji zobaczWymagania dotyczące uruchamianie SQLXML przykłady.
A.Utworzenia odpowiednie zagnieżdżanie kiedy <SQL:Relationship> nie zapewnia wystarczających informacji
W tym przykładzie pokazano, gdzie sql:key-fields musi być określona.
Należy wziąć pod uwagę następujące schematu.Schemat określa hierarchię pomiędzy <Zamówienia> i <Odbiorcy> elementy, w którym <Zamówienia> element jest elementem nadrzędnym a <Odbiorcy> element jest elementem podrzędnym.
The <sql:relationship> tag is used to specify the parent-child relationship.The <sql:relationship> tag identifies CustomerID as foreign-key in the Sales.SalesOrderHeader tabela, referring to the CustomerID klucz in the Sales.Customer tabela. Te informacje w <SQL:Relationship> nie są wystarczające do jednoznacznej identyfikacji wiersze tabela nadrzędnej (Sales.SalesOrderHeader). W związku z tym, bez sql:key-fields, hierarchia, generowany jest nieprawidłowe.
Z sql:key-fields określone na <Zamówienia>, adnotacja jednoznacznie identyfikuje wierszy w obiekcie nadrzędnym (tabela Sales.SalesOrderHeader) i jego elementy podrzędność są wyświetlane poniżej swojej witryny nadrzędnej.
Jest to schemat:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Customer" sql:relation="Sales.Customer">
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
</ElementType>
<ElementType name="Order" sql:relation="Sales.SalesOrderHeader"
sql:key-fields="SalesOrderID" >
<AttributeType name="SalesOrderID" />
<AttributeType name="CustomerID" />
<attribute type="SalesOrderID" />
<attribute type="CustomerID" />
<element type="Customer" >
<sql:relationship
key-relation="Sales.SalesOrderHeader"
key="CustomerID"
foreign-relation="Sales.Customer"
foreign-key="CustomerID" />
</element>
</ElementType>
</Schema>
Aby przetestować próbki roboczej tego schematu
Skopiować powyższy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako Xdr.xml KeyFieldsA.
Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako XdrT.xml KeyFieldsA w tym samym katalogu, w którym zapisano Xdr.xml KeyFieldsA.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFieldsA-Xdr.xml"> /Order </sql:xpath-query> </ROOT>To ścieżka do katalogu określonego dla mapowania schematu (KeyFieldsA Xdr.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:
mapping-schema="C:\MyDir\KeyFieldsA-Xdr.xml"Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.
Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.
Poniżej znajduje się zestaw wyników:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="43659" CustomerID="676">
<Customer CustomerID="676" />
</Order>
<Order SalesOrderID="43660" CustomerID="117">
<Customer CustomerID="117" />
</Order>
<Order SalesOrderID="43661" CustomerID="442">
<Customer CustomerID="442" />
</Order>
...
</ROOT>
B.Określ sql:klucz-pola, aby uzyskać prawidłowe zagnieżdżenia w wyniku
W tym schemacie jest nie hierarchii określona za pomocą <SQL:Relationship>. Schemat nadal wymaga sql:key-fields określona w celu jego jednoznacznej identyfikacji pracowników w tabela HumanResources.Employee adnotacji.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Title" content="textOnly" >
<AttributeType name="EmployeeID" />
<attribute type="EmployeeID" />
</ElementType>
<ElementType name="HumanResources.Employee" sql:key-fields="EmployeeID" >
<element type="Title" />
</ElementType>
</Schema>
Aby przetestować próbki roboczej tego schematu
Skopiować powyższy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako Xdr.xml KeyFieldsB.
Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako XdrT.xml KeyFieldsB w tym samym katalogu, w którym zapisano Xdr.xml KeyFieldsB.Kwerendy XPath w szablonie zwraca wszystkie <Zamówienia> elementy.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFieldsB-Xdr.xml"> /HumanResources.Employee </sql:xpath-query> </ROOT>To ścieżka do katalogu określonego dla mapowania schematu (KeyFieldsB Xdr.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:
mapping-schema="C:\MyDir\KeyFieldsB-Xdr.xml"Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.
Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.
W tym polu jest częścią zestaw wyników:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<HumanResources.Employee>
<Title EmployeeID="1">Production Technician - WC60</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="2">Marketing Assistant</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="3">Engineering Manager</Title>
</HumanResources.Employee>
...
</ROOT>
Important Note: