Tworzenie sql:id prawidłowy identyfikator IDREF i za pomocą atrybutów typu IDREFS-prefiks (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). |
Atrybut może być określony jest atrybut typu ID.Następnie można używać atrybutów określonych jako IDREF lub IDREFS do odwoływania się do atrybuty IDENTYFIKATORA typu, umożliwiając w ten sposób intradocument łącza.
Identyfikator, IDREF i IDREFS odpowiadają podstawowy klucz/kluczy (klucz podstawowy/klucz obcy) relacji obcych w bazie danych z kilku różnic.W dokumencie XML wartości atrybutów typu ID musi być różne.Jeśli masz identyfikator klienta i SalesOrderID atrybutów w dokumencie XML, te wartości muszą być różne.Jednak w bazie danych, identyfikator klienta i SalesOrderID kolumny może mieć te same wartości (na przykład identyfikator klienta = 1 i IDZamówienia = 1 są prawidłowe w bazie danych).
Identyfikator, IDREF i IDREFS atrybutów jest nieprawidłowy:
Wartości IDENTYFIKATORA musi być unikatowa w obrębie dokumentu XML.
Dla każdego IDREF i IDREFS wskazane wartości IDENTYFIKATORA musi być w dokumencie XML.
Wartość IDENTYFIKATORA, IDREF i IDREFS musi mieć nazwę tokenu (na przykład, wartość całkowita 101 nie może być wartością IDENTYFIKATORA).
Atrybuty typu identyfikator, IDREF i IDREFS nie mogą być mapowane do kolumn typu text, ntext, image, lub inne dane binarne (na przykład, wpisz timestamp).
Jeśli dokument XML zawiera wiele identyfikatorów sql:id-prefix Aby były unikatowe wartości określono adnotacji. .The sql:id-prefix annotation is also used to create named tokens from numbers.Wartość określona dla sql:id-prefix musi być znakiem poprawną nazwę.
The sql:id-prefixattribute prepends the values of ID, IDREF, and IDREFS with a string, thereby making them unique.Nie są kontrole zapewniające ważności prefiksów i unikatowości wartości IDENTYFIKATORA, IDREF lub IDREFS.
The sql:id-prefixattribute is ignored on attributes that are not of type ID, IDREF, or IDREFS.
Uwaga
Każda wartość atrybutów IDENTYFIKATORA, IDREF i IDREFS jest ograniczony do 4 000 znaków, w tym prefiksu (jeśli jest określony).
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.Określić sql:id — prefiks dla typu atrybut ID
W tym schematu XDR atrybuty SalesOrderID i identyfikator klienta są zadeklarowane jako typ IDENTYFIKATORA.Aby identyfikatory były unikatowe i prawidłowe, sql:id-prefix Adnotacja jest określony dla tych atrybutów:
<?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="Order" sql:relation="Sales.SalesOrderHeader" sql:key-fields="SalesOrderID">
<AttributeType name="SalesOrderID" dt:type="id" sql:id-prefix="Ord-" />
<AttributeType name="OrderDate" />
<attribute type="SalesOrderID" />
<attribute type="OrderDate" />
</ElementType>
<ElementType name="Customer" sql:relation="Sales.Customer">
<AttributeType name="CustomerID" dt:type="id" />
<attribute type="CustomerID" />
<AttributeType name="OrderList" dt:type="idrefs"
sql:id-prefix="Ord-" />
<attribute type="OrderList" sql:relation="Sales.SalesOrderHeader" sql:field="SalesOrderID">
<sql:relationship
key-relation="Sales.Customer"
key="CustomerID"
foreign-relation="Sales.SalesOrderHeader"
foreign-key="CustomerID" />
</attribute>
<element type="Order">
<sql:relationship key-relation="Sales.SalesOrderHeader"
key="SalesOrderID"
foreign-relation="Sales.Customer"
foreign-key="SalesOrderID" />
</element>
</ElementType>
</Schema>
Aby przetestować kwerendę XPath próbki względem schematu
Skopiować powyższy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako xdr.xml sqlPrefix.
Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako XdrT.xml sqlPrefix w tym samym katalogu, w którym zapisano xdr.xml sqlPrefix.Zwraca kwerendę XPath w szablonie <Odbiorcy> i <Zamówienia> podelementy, jeżeli identyfikator klienta jest 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlPrefix-Xdr.xml"> Customer[@CustomerID="1"] </sql:xpath-query> </ROOT>To ścieżka do katalogu określonego dla mapowania schematu (sqlPrefix 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\sqlPrefix-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">
<Customer CustomerID="1" OrderIDList="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
<Order SalesOrderID="Ord-43860" OrderDate="2001-08-01T00:00:00" />
<Order SalesOrderID="Ord-44501" OrderDate="2001-11-01T00:00:00" />
<Order SalesOrderID="Ord-45283" OrderDate="2002-02-01T00:00:00" />
<Order SalesOrderID="Ord-46042" OrderDate="2002-05-01T00:00:00" />
</Customer>
</ROOT>
Important Note: