Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
Atribut může být specifikován jako typ ID. Atributy určené jako IDREF nebo IDREFS pak mohou být použity k odkazování na atributy typu ID, což umožňuje propojení mezi dokumenty.
ID, IDREF a IDREFS odpovídají vztahům PK/FK (primární klíč/cizí klíč) v databázi, s několika málo rozdíly. V XML dokumentu musí být hodnoty atributů typu ID odlišné. Pokud jsou atributy CustomerID a OrderID v XML dokumentu specifikovány jako typ ID, musí být tyto hodnoty odlišné. V databázi však mohou mít sloupce CustomerID a OrderID stejné hodnoty. (Například CustomerID = 1 a OrderID = 1 jsou platné v databázi).
Aby byly atributy ID, IDREF a IDREFS platné:
Hodnota ID musí být v XML dokumentu jedinečná.
Pro každý IDREF a IDREF musí být referenční hodnoty ID v XML dokumentu.
Hodnota ID, IDREF a IDREFS musí být pojmenovaný token. (Například celočíselná hodnota 101 nemůže být ID hodnotou.)
Atributy ID, IDREF a typ IDREFS nelze namapovat na sloupce typu text, ntext, image ani na žádný jiný binární datový typ (například časové razítko).
Pokud XML dokument obsahuje více ID, použijte anotaci sql:prefix , abyste zajistili jedinečnost hodnot.
Upozorňujeme, že anotace sql:prefix nelze použít s pevně daným atributem XSD.
Examples
Pro vytvoření pracovních vzorků podle následujících příkladů musíte splnit určité požadavky. Pro více informací viz Požadavky na spouštění SQLXML Examples.
A. Specifikace typů ID a IDREFS
V následujícím schématu <se člen Zákazník> skládá z podprvku <Objednávky> . Prvek <Order> má také podprvek, prvek <OrderDetail> .
Atribut OrderIDList u <zákazníka> je typ IDREFS, který odkazuje na atribut OrderID prvku <Order> .
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustOrders"
parent="Sales.Customer"
parent-key="CustomerID"
child="Sales.SalesOrderHeader"
child-key="CustomerID" />
<sql:relationship name="OrderOrderDetail"
parent="Sales.SalesOrderHeader"
parent-key="SalesOrderID"
child="Sales.SalesOrderDetail"
child-key="SalesOrderID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Sales.Customer" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustOrders" maxOccurs="unbounded" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OrderDetail"
sql:relation="Sales.SalesOrderDetail"
sql:relationship="OrderOrderDetail"
maxOccurs="unbounded" >
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="ProductID" type="xsd:string" />
<xsd:attribute name="OrderQty" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="SalesOrderID"
type="xsd:ID" sql:prefix="ord-" />
<xsd:attribute name="OrderDate" type="xsd:date" />
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderIDList" type="xsd:IDREFS"
sql:relation="Sales.SalesOrderHeader" sql:field="SalesOrderID"
sql:relationship="CustOrders" sql:prefix="ord-">
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Pro testování vzorku dotazu XPath proti schématu
Zkopírujte výše uvedený kód schématu a vložte ho do textového souboru. Uložte soubor jako sqlPrefix.xml.
Zkopírujte následující šablonu a vložte ji do textového souboru. Ulož soubor jako sqlPrefixT.xml do stejného adresáře, kde jsi uložil sqlPrefix.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlPrefix.xml"> /Customer[@CustomerID=1] </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (sqlPrefix.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\SqlXmlTest\sqlPrefix.xml"Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.
Pro více informací viz Použití ADO pro provádění dotazů SQLXML.
Toto je částečný výsledek:
<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-01" CustomerID="1">
<OrderDetail SalesOrderID="43860" ProductID="729" OrderQty="1" />
<OrderDetail SalesOrderID="43860" ProductID="732" OrderQty="1" />
<OrderDetail SalesOrderID="43860" ProductID="738" OrderQty="1" />
<OrderDetail SalesOrderID="43860" ProductID="753" OrderQty="2" />
...
</Order>
...
</Customer>
</ROOT>