Sdílet prostřednictvím


Vlastní mapování XSD na tabulky/sloupce (SQLXML)

platí pro:SQL Serverazure 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
  1. Zkopírujte výše uvedený kód schématu a vložte ho do textového souboru. Uložte soubor jako MySchema-annotated.xml.

  2. 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"  
    
  3. 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>