SQL:key anahtar sütunlar kullanma tanımlayan-alanları (xdr şeması)

Önemli notÖnemli

Bu konuda eski uygulamalar için bir referans olarak dahil edilir.Bu özelliği yok ileride geliştirme çalışmaları yapılacaktır.Bu özellik yeni geliştirme çalışması kullanmaktan kaçının.Bunun yerine, açıklama eklenmiş xsd şemaları, xml görünümlerini oluşturmak için kullanın.Daha fazla bilgi için bkz: Açıklama eklenmiş xsd şemaları (SQLxml 4.0) Giriº.xsd şemaları için varolan açıklama eklenmiş xdr şemalarını dönüştürebilirsiniz.Daha fazla bilgi için bkz: Açıklama eklenmiş xdr şemalarını eşdeğer xsd şemaları (SQLxml 4.0) dönüştürme.

xdr şeması karşı bir XPath sorgusu belirtildiğinde, anahtar bilgileri çoğu zaman uygun iç içe geçme sonuç elde etmek için gerekir.Belirtme sql:key-fields ek açıklama ki uygun hiyerarşisi oluşturulur emin olmak için bir yol.

Not

Uygun iç içe geçme sonuç üretmek için önerilir sql:key-fields belirtilen tüm şemalar.

Çoğu durumda, satırları benzersiz olarak tanımlamak nasıl anlamak gerekli olan bir tablo uygun xml hiyerarşisi oluşturmak için.The sql:key-fields annotation can be added to the <element> and <ElementType> to identify column(s) that uniquely identify rows in the table.

Değeri sql:key-fields tanımlayan sütun(s), tanıtan belirtilen ilişki satırları <ElementType>.Birden fazla sütun satır benzersiz olarak tanımlamak için gerekli ise, sütun değerleri listelenen bir boşlukla ayrılmış.

The sql:key-fields annotation must be specified in an element containing a child element and a <sql:relationship>, defined between the element and the child, that does not provide the primary key of the table specified in the parent element.

Örnekler

Aşağıdaki örnekler kullanarak çalışma örnekleri oluşturmak için belirli gereksinimleri karşılaması gerekir.Daha fazla bilgi için bkz: SQLxml örnekleri çalıştırma gereksinimleri.

A.İç içe uygun ne zaman geçirme üretmek <sql:relationship> yeterli bilgi sağlamak

Bu örnek nereye gösteren sql:key-fields belirtilmelidir.

Aşağıdaki şema göz önünde bulundurun.Şema arasında hiyerarşi belirtir <Sipariş> ve <Müşteri> öğeleri, <Sipariş> üst öğesidir ve <Müşteri> öğedir alt.

The <sql:relationship> tag is used to specify the parent-child relationship.The <sql:relationship> tag identifies CustomerID as foreign-key in the Sales.SalesOrderHeader table, referring to the CustomerID key in the Sales.Customer table.Sağlanan bu bilgiler <sql:relationship> benzersiz bir şekilde tanıtmak için yeterli olan satırları üst tablo (Sales.SalesOrderHeader).Bu nedenle, olmadan sql:key-fields, oluşturulan yanlış hiyerarşisidir.

İle sql:key-fields üzerinde belirtilen <Sipariş>, ek açıklama (Sales.SalesOrderHeader tablo) üst satırları benzersiz olarak tanımlar ve alt öğeleri görünür altındaki alt üst.

Bu şema oluşur:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <ElementType name="Customer" sql:relation="Sales.Customer">
    <AttributeType name="CustomerID" />
    <attribute type="CustomerID" />
  </ElementType>

  <ElementType name="Order" sql:relation="Sales.SalesOrderHeader" 
                            sql:key-fields="SalesOrderID" >
    <AttributeType name="SalesOrderID" />
    <AttributeType name="CustomerID" />
 
    <attribute type="SalesOrderID" />
    <attribute type="CustomerID" />
    <element type="Customer" >
             <sql:relationship
                         key-relation="Sales.SalesOrderHeader"
                         key="CustomerID"
                         foreign-relation="Sales.Customer"
                         foreign-key="CustomerID" />
    </element>
     </ElementType>
</Schema>

Bu şemayı çalışma örneği sınamak için

  1. Yukarıdaki şema kodu kopyalayın ve bir metin dosyasına yapıştırın.Dosya KeyFieldsA-Xdr.xml kaydedin.

  2. Aşağıdaki şablon kopyalama ve bir metin dosyasına yapıştırın.Dosya KeyFieldsA-XdrT.xml KeyFieldsA Xdr.xml kaydettiğiniz aynı dizine kaydedin.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="KeyFieldsA-Xdr.xml">
        /Order
      </sql:xpath-query>
    </ROOT>
    

    Dizin yol (KeyFieldsA-Xdr.xml) eşleme şema şablonun kaydedileceği dizini ile ilişkili olduğu için belirtilen.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\KeyFieldsA-Xdr.xml"
    
  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

Sonuç küme aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order SalesOrderID="43659" CustomerID="676">
    <Customer CustomerID="676" /> 
  </Order>
  <Order SalesOrderID="43660" CustomerID="117">
    <Customer CustomerID="117" /> 
  </Order>
  <Order SalesOrderID="43661" CustomerID="442">
    <Customer CustomerID="442" /> 
  </Order>
  ...
</ROOT>

B.SQL:anahtar belirtin-uygun iç içe geçme sonuç üretmek için alanları

Bu şemada kullanılarak belirtilen hiçbir hiyerarşisi yok <sql:relationship>.Yine de şema gerektirir sql:key-fields HumanResources.Employee çalışanları benzersiz olarak tanımlamak için belirtilen ek açıklama tablo.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
   xmlns:dt="urn:schemas-microsoft-com:datatypes"
   xmlns:sql="urn:schemas-microsoft-com:xml-sql">
   <ElementType name="Title" content="textOnly"  >
      <AttributeType name="BusinessEntityID" />
      <attribute type="BusinessEntityID" />
   </ElementType>

   <ElementType name="HumanResources.Employee" sql:key-fields="BusinessEntityID" >
      <element type="JobTitle" />
   </ElementType>
</Schema>

Bu şemayı çalışma örneği sınamak için

  1. Yukarıdaki şema kodu kopyalayın ve bir metin dosyasına yapıştırın.Dosya KeyFieldsB-Xdr.xml kaydedin.

  2. Aşağıdaki şablon kopyalama ve bir metin dosyasına yapıştırın.Dosya KeyFieldsB-XdrT.xml KeyFieldsB Xdr.xml kaydettiğiniz aynı dizine kaydedin.XPath sorgusu şablondaki tüm verir <Sipariş> öğeleri.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="KeyFieldsB-Xdr.xml">
        /HumanResources.Employee
      </sql:xpath-query>
    </ROOT>
    

    Dizin yol (KeyFieldsB-Xdr.xml) eşleme şema şablonun kaydedileceği dizini ile ilişkili olduğu için belirtilen.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\KeyFieldsB-Xdr.xml"
    
  3. Oluşturun ve sqlxml 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.

    Daha fazla bilgi için bkz: ado SQLxml yürütme kullanarak 4.0 sorgular.

İşte bir bölümü sonuç küme:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <HumanResources.Employee>
    <Title BusinessEntityID="1">Production Technician - WC60</Title> 
  </HumanResources.Employee>
  <HumanResources.Employee>
    <Title BusinessEntityID="2">Marketing Assistant</Title> 
  </HumanResources.Employee>
  <HumanResources.Employee>
    <Title BusinessEntityID="3">Engineering Manager</Title> 
  </HumanResources.Employee>
   ...
</ROOT>

Ayrıca bkz.

Başvuru