Tworzenie sql:id prawidłowy identyfikator IDREF i przy użyciu atrybutów typu IDREFS-prefiks (schematu XDR)
![]() |
---|
Ten temat jest dołączane jako odniesienia dla starszych aplikacji.Żadna praca przyszłego rozwoju są wykonywane z tej funkcji.Unikaj używania tej funkcji w nowych prac rozwojowych.Zamiast tego użyj adnotacjami schematów XSD tworzenia widoków XML.Aby uzyskać więcej informacji, zobacz Wprowadzenie do adnotacjami schematów XSD (SQLXML 4.0).Można przekonwertować istniejące schematy XDR adnotacjami schematów XSD.Aby uzyskać więcej informacji, zobacz Konwertowanie adnotacjami schematy XDR równoważne schematów XSD (SQLXML 4.0). |
Atrybut może być określony jako atrybut typu ID.Następnie można atrybutów określonych jako IDREF lub IDREFS do odwoływania się do atrybutów typu ID, umożliwiając w ten sposób intradocument łącza.
Identyfikator, IDREF i IDREFS odpowiadają klucz podstawowy/ obcego klucza (PK/klucz obcy) relacje w bazie danych, z niewielkimi różnicami.W dokumencie XML wartości atrybutów typu ID musi być różny.Jeśli atrybuty IDKlienta i SalesOrderID w dokumencie XML, te wartości muszą być różne.Jednak w bazie danych IDKlienta i SalesOrderID kolumny może mieć te same wartości (na przykład IDKlienta = 1 i IDZamówienia = 1 są ważne 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 odwołanie wartości Identyfikatora musi być w dokumencie XML.
Wartość Identyfikatora, IDREF i IDREFS muszą być nazwane token (na przykład całkowitą wartość 101 nie może być wartość Identyfikatora).
Atrybuty Identyfikatora, IDREF i IDREFS typu nie można mapować do kolumn typu text, ntext, image, lub dowolny inny typ danych binarnych (na przykład timestamp).
Jeśli dokument XML zawiera wiele identyfikatorów sql:id-prefix Adnotacja określono wartości były unikatowe..The sql:id-prefix annotation is also used to create named tokens from numbers.Wartość określona dla sql:id-prefix musi być prawidłową nazwą znaku.
The sql:id-prefixattribute prepends the values of ID, IDREF, and IDREFS with a string, thereby making them unique.Nie są kontrole dla zapewnienia ważności prefiksy 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.
Ostrzeżenie
Każda wartość atrybutów Identyfikatora, IDREF i IDREFS jest ograniczona do 4 000 znaków, w tym prefiksu (Jeśli określony).
Przykłady
Aby utworzyć próbki pracy przy użyciu poniższych przykładach, musi spełniać określone wymagania.Aby uzyskać więcej informacji, zobacz Wymagania dotyczące uruchamianie przykładów SQLXML.
A.Określ sql:id-prefiksu atrybut typu ID
W tym schemacie XDR atrybutów SalesOrderID i IDKlienta są zadeklarowane jako typ Identyfikatora.Aby upewnić się, że identyfikatory są unikatowy i ważny, sql:id-prefix Adnotacja określono 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ć przykładowe kwerendy XPath względem schematu
Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako sqlPrefix Xdr.xml.
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 sqlPrefix Xdr.xml.Zwraca kwerendę XPath w szablonie <klienta> i <zamówienia> podelementy gdzie IDKlienta 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>
Ścieżka katalogu określonego dla mapowania schematu (sqlPrefix Xdr.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:
mapping-schema="C:\MyDir\sqlPrefix-Xdr.xml"
Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).
Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.
Zestaw wyników jest następujący:
<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="2005-08-01T00:00:00" />
<Order SalesOrderID="Ord-44501" OrderDate="2005-11-01T00:00:00" />
<Order SalesOrderID="Ord-45283" OrderDate="2006-02-01T00:00:00" />
<Order SalesOrderID="Ord-46042" OrderDate="2006-05-01T00:00:00" />
</Customer>
</ROOT>