Aracılığıyla paylaş


sql:mapped Kullanarak Şema Öğelerini XML Belgesinden Dışlama

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

XSD şemasındaki her eleman ve öznitelik, varsayılan eşleme nedeniyle bir veritabanı tablosu/görünümü ve sütununa eşlenir. XSD şemasında herhangi bir veritabanı tablosuna (görünüm) veya sütununa eşlemeyecek ve XML'de görünmeyen bir eleman oluşturmak istiyorsanız, sql:mapped açıklamasını belirtebilirsiniz.

sql:mapped annotasyonu, özellikle şema değiştirilemiyorsa veya şema başka kaynaklardan XML doğrulamak için kullanılıyorsa ve veritabanınızda depolanmayan veriler içeriyorsa faydalıdır. sql:mapped annotasyonu, sql:is-constant'tan farklıdır; eşlenmemiş öğeler ve öznitelikler XML belgesinde görünmez.

sql:mapped annotasyonu bir Boolean değeri alır (0 = yanlış, 1 = doğru). Kabul edilebilir değerler 0, 1, doğru ve yanlıştır.

Örnekler

Aşağıdaki örneklerle çalışma örnekleri oluşturmak için belirli gereksinimleri karşılamanız gerekir. Daha fazla bilgi için Gereksinimler için SQLXML Örnekleri Çalışması için Gereksinimlere bakınız.

A. sql:mapped açıklamasının belirtilmesi

Başka bir kaynaktan bir XSD şeması olduğunu varsayın. Bu XSD şeması, ContactID, FirstName, SoyName ve HomeAddress özelliklerine sahip bir <Person.Contact> öğesinden oluşur.

Bu XSD şemasını AdventureWorks veritabanındaki Person.Contact tablosuna eşlerken, Employees tablosu çalışanların ev adreslerini depolamadığı için HomeAddress özniteliğinde sql:mapped belirtilir. Sonuç olarak, bu öznitelik veritabanına eşlenmez ve eşleme şemasına karşı bir XPath sorgusu belirtildiğinde ortaya çıkan XML belgesinde geri dönmez.

Varsayılan eşleme şemanın geri kalanı için gerçekleşir. <Person.Contact> öğesi Person.Contact tablosuna eşlenir ve tüm nitelikler Person.Contact tablosundaki aynı isimli sütunlara eşlenir.

<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"   type="xsd:string"/>  
      <xsd:attribute name="FirstName"    type="xsd:string" />  
      <xsd:attribute name="LastName"     type="xsd:string" />  
      <xsd:attribute name="HomeAddress" type="xsd:string"   
                     sql:mapped="false" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Örnek XPath sorgusunu şema karşısında test etmek için
  1. Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı sql-mapped.xmlolarak kaydet.

  2. Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde sql-mappedT.xml olarak kaydet sql-mapped.xml.

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

    Eşleme şeması (MySchema.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\MyDir\sql-mapped.xml"  
    
  3. Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.

    Daha fazla bilgi için bkz. Using ADO to execute SQLXML Queries.

Sonuç kümesi şöyle:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel" />   
  <Person.Contact ContactID="3" FirstName="Kim" LastName="Abercrombie" />   
  <Person.Contact ContactID="4" FirstName="Humberto" LastName="Acevedo" />   
  <Person.Contact ContactID="5" FirstName="Pilar" LastName="Ackerman" />   
  <Person.Contact ContactID="6" FirstName="Frances" LastName="Adams" />   
  <Person.Contact ContactID="7" FirstName="Margaret" LastName="Smith" />   
  <Person.Contact ContactID="8" FirstName="Carla" LastName="Adams" />   
  <Person.Contact ContactID="9" FirstName="Jay" LastName="Adams" />   
</ROOT>  

ContactID, FirstName ve Soyadı mevcuttur, ancak HomeAddress değildir çünkü eşleme şeması sql:mapped özniteliği için 0 belirtmiştir.

Ayrıca Bkz.

XSD Elemanlarının ve Özniteliklerinin Tablolar ve Sütunlara Varsayılan Eşlenmesi (SQLXML 4.0)