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
Při použití XSD schématu k poskytnutí XML pohledu na relační databázi musí být prvky a atributy schématu mapovány na tabulky a sloupce databáze. Řádky v databázové tabulce/zobrazení se zobrazí na prvky v XML dokumentu. Sloupce v databázi se mapují na atributy nebo prvky.
Když jsou dotazy XPath zadány proti anotovanému schématu XSD, data o prvcích a atributech ve schématu jsou získána z tabulek a sloupců, na které jsou mapovány. Pro získání jediné hodnoty z databáze musí mít mapování specifikované ve schématu XSD specifikaci jak relace, tak pole. Pokud název prvku/atributu není stejný jako název tabulky/pohledu nebo sloupce, na který se mapuje, používají se anotace sql:relation a sql:field k specifikaci mapování mezi prvkem nebo atributem v XML dokumentu a tabulkou (pohledem) nebo sloupcem v databázi.
sql-relace
Anotace sql:relation je přidána pro mapování XML uzlu ve schématu XSD na databázovou tabulku. Název tabulky (view) je určen jako hodnota anotace sql:relation .
Když je sql:relation specifikována na nějakém prvku, rozsah této anotace se vztahuje na všechny atributy a podprvky popsané v definici komplexního typu daného prvku, což poskytuje zkratku při psaní anotací.
Anotace sql:relation je také užitečná, když identifikátory platné v Microsoft SQL Server nejsou platné v XML. Například "Order Details" je platný název tabulky v SQL Serveru, ale ne v XML. V takových případech lze použít anotaci sql:relation k určení mapování, například:
<xsd:element name="OD" sql:relation="[Order Details]">
sql-pole
Anotace sql-pole mapuje prvek nebo atribut na sloupec databáze. Anotace sql:field je přidána tak, aby se XML uzel ve schématu mapoval na sloupec databáze. Nemůžete specifikovat sql:field na prázdném obsahovém prvku.
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 anotací sql:relation a sql:field
V tomto příkladu se schéma XSD skládá z elementu <Contact> komplexního typu s <podprvky FName> a <LName> a atributem ContactID .
Anotace sql:relation mapuje prvek <Contact> na tabulku Person.Contact v databázi AdventureWorks. Anotace sql:field mapuje <prvek FName> na sloupec FirstName a <element LName> na sloupec LastName.
Pro atribut ContactID není uvedena žádná anotace. To vede k výchozímu mapování atributu na sloupec se stejným názvem.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</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 MySchema-annotated.xml.
Zkopírujte následující šablonu níže a vložte ji do textového souboru. Ulož soubor jako MySchema-annotatedT.xml do stejného adresáře, kde jsi uložil MySchema-annotated.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (MySchema-annotated.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.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.
Tady je částečná sada výsledků:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>