Megosztás a következőn keresztül:


Egyedi XSD leképezések táblákhoz/oszlopokhoz (SQLXML)

A következőkre vonatkozik:SQL ServerAzure SQL Database

Ha XSD sémát használunk a relációs adatbázis XML nézetének biztosítására, a séma elemeit és attribútumait az adatbázis tábláihoz és oszlopaihoz kell leképezni. Az adatbázis táblázat/nézet sorai az XML dokumentum elemeihez csatlakoznak. Az adatbázis oszlopértékei attribútumokra vagy elemekre egyeznek.

Amikor az XPath lekérdezéseket az annotált XSD sémához jelölik, a séma elemeinek és attribútumainak adatai azokról a táblázatokból és oszlopokból kerülnek vissza, amelyekhez azok leképezik. Egyetlen érték eléréséhez az adatbázisból az XSD sémában megadott leképezésnek mind relációk, mind mezőspecifikációk kell rendelkezniük. Ha egy elem/attribútum neve nem ugyanaz, mint annak a tábla/nézet vagy oszlopnévnek, amelyhez hozzá van leképezve, akkor a sql:relation és sql:field annotációkat használják arra, hogy meghatározzák az XML dokumentum elemének vagy attribútumának és az adatbázis tábla (nézete) vagy oszlopának közötti leképezését.

SQL-reláció

A sql:relation annotációt hozzáadjuk, hogy egy XML csomópontot az XSD sémában egy adatbázis táblához képezzék. Egy tábla (nézet) neve a sql:relation annotáció értékeként van megadva.

Amikor a sql:relation egy elemen van megadva, ennek a megjegyzésnek a hatóköre minden olyan attribútumra és gyermekelemre vonatkozik, amelyeket az adott elem komplex típus definíciójában leírnak, így rövidítést biztosít az annotációk írásában.

A sql:relation annotáció akkor is hasznos, ha a Microsoft SQL Serverben érvényes azonosítók nem érvényesek XML-ben. Például a "Order Details" érvényes táblanév SQL Serverben, de nem XML-ben. Ilyen esetekben a sql:relation annotáció használható a leképezés meghatározására, például:

<xsd:element name="OD" sql:relation="[Order Details]">  

SQL-mező

A sql-mező annotáció egy elemet vagy attribútumot térképez egy adatbázis oszlophoz. A sql:field annotációt hozzáadják, hogy egy XML csomópontot a sémában egy adatbázis-oszlophoz képezzenek. Nem lehet sql:field megadni üres tartalomelemen.

Példák

A következő példák alapján működő minták létrehozásához bizonyos követelményeknek kell megfelelned. További információért lásd: Az SQLXML futtatási követelmények példái.

A. A sql:relation és a sql:field annotációk megadása

Ebben a példában az XSD séma egy <komplex típusú Contact> elemből áll, amely <FName> és <LName> gyermekelemekkel és a ContactID attribútummal rendelkezik.

A sql:relation annotáció a <Contact> elemet a Person.Contact táblával térképezi az AdventureWorks adatbázisban. A sql:field annotáció az <FName> elemet a Névoszlophoz, az <LName> elemet pedig a Vezetéknév oszlophoz képezi.

A ContactID attribútumhoz nincs megadva megjegyzés. Ez az attribútumot alapértelmezett leképezést eredményezi az azonos nevű oszlophoz.

<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>  
Egy minta-XPath lekérdezés tesztelése a sémához
  1. Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt MySchema-annotated.xml.

  2. Másold le az alábbi sablont, és illesztsd be szövegfájlba. Mentsd a fájlt MySchema-annotatedT.xml-ként ugyanabba a könyvtárba, ahol MySchema-annotated.xmlmentetted.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="MySchema-annotated.xml">  
        /Contact  
      </sql:xpath-query>  
    </ROOT>  
    

    A leképezési sémához (MySchema-annotated.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információért lásd: Using ADO to execute SQLXML Queries.

Íme a részleges eredményhalmaz:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
 <Contact ContactID="1">   
    <FName>Gustavo</FName>   
    <LName>Achong</LName>   
 </Contact>   
  .....  
</ROOT>