Bagikan melalui


Pemetaan XSD kustom ke tabel/kolom (SQLXML)

Berlaku untuk: SQL ServerAzure SQL Database

Saat menggunakan skema XSD untuk menyediakan tampilan XML database relasional , elemen dan atribut skema harus dipetakan ke tabel dan kolom database. Baris dalam tabel/tampilan database akan dipetakan ke elemen dalam dokumen XML. Nilai kolom dalam peta database ke atribut atau elemen.

Ketika kueri XPath ditentukan terhadap skema XSD yang diannotasi, data untuk elemen dan atribut dalam skema diambil dari tabel dan kolom yang dipetakan. Untuk mendapatkan nilai tunggal dari database, pemetaan yang ditentukan dalam skema XSD harus memiliki spesifikasi hubungan dan bidang. Jika nama elemen/atribut bukan nama yang sama dengan nama tabel/tampilan atau kolom yang dipetakannya, anotasi sql:relation dan sql:field digunakan untuk menentukan pemetaan antara elemen atau atribut dalam dokumen XML dan tabel (tampilan) atau kolom dalam database.

sql-relation

Anotasi sql:relation ditambahkan untuk memetakan simpul XML dalam skema XSD ke tabel database. Nama tabel (tampilan) ditentukan sebagai nilai anotasi sql:relation .

Ketika sql:relation ditentukan pada elemen, cakupan anotasi ini berlaku untuk semua atribut dan elemen turunan yang dijelaskan dalam definisi jenis kompleks elemen tersebut, oleh karena itu menyediakan pintasan dalam menulis anotasi.

Anotasi sql:relation juga berguna ketika pengidentifikasi yang valid di Microsoft SQL Server tidak valid di XML. Misalnya, "Detail Pesanan" adalah nama tabel yang valid di SQL Server tetapi tidak di XML. Dalam kasus seperti itu , anotasi sql:relation dapat digunakan untuk menentukan pemetaan, misalnya:

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

sql-field

Anotasi bidang sql memetakan elemen atau atribut ke kolom database. Anotasi sql:field ditambahkan untuk memetakan simpul XML dalam skema ke kolom database. Anda tidak dapat menentukan sql:field pada elemen konten kosong.

Contoh

Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, lihat Persyaratan untuk Menjalankan Contoh SQLXML.

J. Menentukan anotasi sql:relation dan sql:field

Dalam contoh ini, skema XSD terdiri dari <> jenis kompleks dengan <> dan <> dan atribut ContactID.

Anotasi sql:relation memetakan <elemen Kontak> ke tabel Person.Contact di database AdventureWorks. Anotasi sql:field memetakan <elemen FName> ke kolom FirstName dan< elemen LName> ke kolom LastName.

Tidak ada anotasi yang ditentukan untuk atribut ContactID . Ini menghasilkan pemetaan default atribut ke kolom dengan nama yang sama.

<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>  
Untuk menguji sampel kueri XPath terhadap skema
  1. Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai MySchema-annotated.xml.

  2. Salin templat berikut di bawah ini dan tempelkan ke dalam file teks. Simpan file sebagai MySchema-annotatedT.xml di direktori yang sama tempat Anda menyimpan 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>  
    

    Jalur direktori yang ditentukan untuk skema pemetaan (MySchema-annotated.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML.

Berikut adalah kumpulan hasil parsial:

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