Bagikan melalui


Menyembunyikan Elemen dan Atribut dengan Menggunakan sql:hide

Berlaku untuk: SQL ServerAzure SQL Database

Saat kueri XPath dijalankan terhadap skema XSD, dokumen XML yang dihasilkan memiliki elemen dan atribut yang ditentukan dalam skema. Anda dapat menentukan bahwa beberapa elemen dan atribut disembunyikan dalam skema dengan menggunakan anotasi sql:hide . Ini berguna ketika kriteria pemilihan kueri memerlukan elemen atau atribut tertentu dalam skema, tetapi Anda tidak ingin kueri dikembalikan dalam dokumen XML yang dihasilkan.

Anotasi sql:hide mengambil nilai Boolean (0=false, 1=true). Nilai yang dapat diterima adalah 0, 1, true, dan false.

Contoh

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

J. Menentukan sql:hide pada atribut

Skema XSD dalam contoh ini terdiri dari < dengan >, FirstName, dan LastName.

Elemen <Person.Contact> berjenis kompleks dan, oleh karena itu, memetakan ke tabel dengan nama yang sama (pemetaan default). Semua atribut elemen <Person.Contact> berjenis sederhana dan dipetakan ke kolom dengan nama yang sama di Person.Contactable dalam database AdventureWorks. Dalam skema, anotasi sql:hide ditentukan pada atribut ContactID . Ketika kueri XPath ditentukan terhadap skema ini, ContactID tidak dikembalikan dalam dokumen XML.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact" >  
     <xsd:complexType>  
       <xsd:attribute name="ContactID"  sql:hide="true" />   
       <xsd:attribute name="FirstName"   type="xsd:string" />   
       <xsd:attribute name="LastName"    type="xsd:string" />   
     </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 Hide.xml.

  2. Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai HideT.xml di direktori yang sama tempat Anda menyimpan Hide.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="Hide.xml">  
            /Person.Contact[@ContactID="1"]  
        </sql:xpath-query>  
    </ROOT>  
    

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

    mapping-schema="C:\MyDir\Hide.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 4.0.

Berikut adalah hasilnya:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
   <Person.Contact FirstName="Gustavo" LastName="Achong" />   
</ROOT>  

Ketika sql:hide ditentukan pada elemen, elemen dan atribut atau elemen turunannya tidak muncul dalam dokumen XML yang dihasilkan. Berikut adalah skema XSD lain di mana sql:hide ditentukan pada <elemen OD> :

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:dt="urn:schemas-microsoft-com:datatypes"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  
  <xsd:annotation>  
    <xsd:documentation>  
      Sales.Customer-Sales.SalesOrderHeader-Sales.SalesOrderDetail Schema  
      Copyright 2004 Microsoft. All rights reserved.  
    </xsd:documentation>  
    <xsd:appinfo>  
      <sql:relationship name="CustomerOrder"  
         parent="Sales.Customer"  
                  parent-key="CustomerID"  
                  child-key="CustomerID"  
                  child="Sales.SalesOrderHeader" />  
       <sql:relationship name="OrderOrderDetails"  
                  parent="Sales.SalesOrderHeader"  
                  parent-key="SalesOrderID"  
                  child-key="SalesOrderID"  
                  child="Sales.SalesOrderDetail"/>  
    </xsd:appinfo>  
  </xsd:annotation>  
  
  <xsd:element name="Customers" sql:relation="Sales.Customer">  
    <xsd:complexType>  
      <xsd:sequence>  
        <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"   
                     maxOccurs="unbounded"   
                     sql:relationship="CustomerOrder">  
          <xsd:complexType>  
            <xsd:sequence>  
               <xsd:element name="OD" sql:relation="Sales.SalesOrderDetail"                                       maxOccurs="unbounded"                                       sql:relationship="OrderOrderDetails"                                       sql:hide="1">  
                  <xsd:complexType>  
                    <xsd:attribute name="SalesOrderID" type="xsd:string"/>  
                    <xsd:attribute name="ProductID" type="xsd:string"/>  
                  </xsd:complexType>  
               </xsd:element>  
            </xsd:sequence>  
          <xsd:attribute name="CustomerID" type="xsd:string"/>  
          <xsd:attribute name="OID" sql:field="SalesOrderID"   
                                    type="xsd:string"/>  
          <xsd:attribute name="OrderDate" type="xsd:date"/>   
        </xsd:complexType>  
      </xsd:element>  
    </xsd:sequence>  
    <xsd:attribute name="CID" sql:field="CustomerID"   
                                type="xsd:string"/>  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

Ketika kueri XPath (misalnya /Customers[@CID="1"]) ditentukan terhadap skema ini, dokumen XML yang dihasilkan tidak menyertakan <elemen OD> dan turunannya, seperti yang ditunjukkan dalam hasil parsial ini:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Customers CID="1">  
    <Order CustomerID="1" OID="43860" OrderDate="2001-08-01" />   
    <Order CustomerID="1" OID="44501" OrderDate="2001-11-01" />   
    <Order CustomerID="1" OID="45283" OrderDate="2002-02-01" />   
    <Order CustomerID="1" OID="46042" OrderDate="2002-05-01" />   
  </Customers>  
</ROOT>