Aracılığıyla paylaş


Belirten ilişkiler'i kullanarak sql:relationship (SQLXML 4.0)

Öğeleri bir XML belgesinde ilgili olabilir.Öğelerin hiyerarşik olarak iç içe geçebilir ve KIMLIĞI, IDREF veya IDREFS ilişkileri öğeler arasında belirtilebilir.

Örneğin, bir XSD şeması, bir <Müşteri> öðe içerir. <Sipariş> Alt Öğeler. Şema AdventureWorks veritabanına eşleştirilmişse, <Müşteri> öğeyi için Sales.Customer eşleyen tablo ve <Sipariş> öğeyi için Sales.SalesOrderHeader eşleyen tablo. Müşteri siparişlerini yerleştirmek için bu temel tablo Sales.Customer ve Sales.SalesOrderHeader, ilişkilidir.Sales.SalesOrderHeader tablosundaki MüşteriNo Sales.Customer tablosundaki MüşteriNo birincil anahtarına başvuran yabancı anahtar.Bu ilişkileri kullanarak şema öğeleri eşleme arasında gerçekleştirebilecek sql:relationship Ek açıklama.

Açıklama eklediğiniz XSD Şemasındaki sql:relationship Ek açıklama temel alınarak birincil anahtar ve hangi öğeleri eşlemek temel aldığı tablolar arasında yabancı anahtar ilişkileri hiyerarşik olarak, şema öğeleri yerleştirmek için kullanılır. Belirtme, sql:relationship Ek açıklama için aşağıdakileri tanımlamanız gerekir:

  • Ana Tablo (Sales.Customer) ve alt tablo (Sales.SalesOrderHeader).

  • Sütun veya sütunları, üst ve alt tablolar arasında ilişki oluşturun.Hem üst hem de alt tabloda görüntülenen, MüşteriNo sütun.

Bu bilgiler doğru hiyerarşisi oluşturmak için kullanılır.

Tablo adlarını ve gerekli birleştirmek bilgileri sağlamak için aşağıdaki öznitelikleri üzerinde belirtilen sql:relationship Ek açıklama. Bu öznitelikler, yalnızca geçerli olan <SQL:Relationship> Öğe:

  • Name
    Ilişkinin benzersiz bir ad belirtir.

  • Parent
    Üst ilişkisi (tablo) belirtir.Bu bir isteğe bağlı öznitelik; öznitelik belirtilirse, bilgi belge içindeki alt sıradüzeni içindeki üst tablo adı alınır.Şema aynı iki üst-altöge hiyerarşileri belirtir. <SQL:Relationship> Ancak farklı üst öğelere, üst özniteliğinde belirtmezseniz <SQL:Relationship>. Bu bilgiler, şema hiyerarşisinde'ndan alınır.

  • ana anahtar
    Üst ana anahtar belirtir.Üst anahtara birden çok sütun oluşuyorsa, aralarında bir boşluk içeren değerleri belirtilmedi.Birden çok sütun anahtarının ve ilgili alt anahtar için belirtilen değerler arasındaki konum bir eşleme yok.

  • Alt
    Alt ilişkisi (tablo) belirtir.

  • alt anahtar
    Alt anahtar, alt, üst-üst anahtara başvuruda bulunan belirtir.Alt anahtar, birden çok özniteliği (sütunlar) oluşuyorsa, alt anahtar değerlerini aralarında bir boşluk ile belirtilir.Birden çok sütun anahtarının ve karşılık gelen bir ana anahtar için belirtilen değerler arasındaki konum bir eşleme yok.

  • Ters
    Bu özniteliği, belirtilen <SQL:Relationship> updategrams tarafından kullanılır. Daha fazla bilgi için bkz: Öznitelik sql:inverse sql:relationship üzerinde belirtme.

The sql:key-fields annotation must be specified in an element that contains a alt element, that has a <sql:relationship> defined between the element and the alt, and that does not provide the birincil anahtar of the tablo specified in the parent element. Şema belirtmiyor bile <SQL:Relationship>, belirtmeniz gerekir sql:key-fields uygun bir hiyerarşi oluşturmak için . Daha fazla bilgi için bkz: Anahtar sütunlar sql:key kullanarak tanımlayan-alanları.

Sonuç uygun Yuvalama üretmek için önerilir sql:key-fields Tüm şemalarda belirtilmedi.

Ö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.

C.Bir öğede sql:relationship ek açıklama belirtme

Aşağıdaki ek açıklama eklenen XSD şeması içerir. <Müşteri> ve <Sipariş> öğeleri. The <Order> element is a alt element of the <Customer> element.

Şemada, sql:relationship Ek açıklama belirtilmiştir <Sipariş> alt öğe. Ilişkinin kendisini tanımlanan <xsd:appInfo> Öğe.

The <relationship> element identifies CustomerID in the Sales.SalesOrderHeader tablo as a yabancı anahtar that refers to the CustomerID birincil anahtar in the Sales.Customer tablo. Bu nedenle, bir müşteriye ait siparişleri olan, bir alt öğe görünür. <Müşteri> Öğe.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
  <xsd:appinfo>
    <sql:relationship name="CustOrders"
          parent="Sales.Customer"
          parent-key="CustomerID"
          child="Sales.SalesOrderHeader"
          child-key="CustomerID" />
  </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="Customer" sql:relation="Sales.Customer" type="CustomerType" />
   <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="Order" 
                     sql:relation="Sales.SalesOrderHeader"
                    sql:relationship="CustOrders" >
           <xsd:complexType>
              <xsd:attribute name="SalesOrderID" type="xsd:integer" />
              <xsd:attribute name="CustomerID" type="xsd:string" />
           </xsd:complexType>
        </xsd:element>
     </xsd:sequence>
        <xsd:attribute name="CustomerID"   type="xsd:string" /> 
    </xsd:complexType>

</xsd:schema>

Önceki şema adlandırılmış bir ilişki kullanır.Adsız bir ilişki de belirtebilirsiniz.Sonuçlar aynı olur.

Bu, adsız bir ilişki belirtilen gözden geçirilmiş bir şema oluşur:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">

  <xsd:element name="Customer" sql:relation="Sales.Customer"  type="CustomerType" />
   <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="Order" 
                     sql:relation="Sales.SalesOrderHeader">
           <xsd:annotation>
            <xsd:appinfo>
              <sql:relationship 
                parent="Sales.Customer"
                parent-key="CustomerID"
                child="Sales.SalesOrderHeader"
                child-key="CustomerID" />
            </xsd:appinfo>
           </xsd:annotation>
           <xsd:complexType>
              <xsd:attribute name="SalesOrderID" type="xsd:integer" />
              <xsd:attribute name="CustomerID" type="xsd:string" />
           </xsd:complexType>
        </xsd:element>
     </xsd:sequence>
        <xsd:attribute name="CustomerID"   type="xsd:string" /> 
    </xsd:complexType>

</xsd:schema>

Şemaya örnek bir XPath sorgusu sınamak için

  1. Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı sql relationship.xml kaydedin.

  2. Aşağıdaki şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Sql relationshipT.xml aynı dizinde sql relationship.xml kaydettiğiniz dosyayı kaydedin.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="sql-relationship.xml">
            /Customer[@CustomerID=1]
        </sql:xpath-query>
    </ROOT>
    

    Eşleştirme şemasını (sql-relationship.xml) dizini belirtilen şablon kaydedildiği göreli dizinidir.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\sql-relationship.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 sorgu yürütmek işlemi için kullanma.

sonuç kümesi aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Customer CustomerID="1"> 
    <Order OrderID="43860" CustomerID="1" /> 
    <Order OrderID="44501" CustomerID="1" /> 
    <Order OrderID="45283" CustomerID="1" /> 
    <Order OrderID="46042" CustomerID="1" /> 
  </Customer> 
</ROOT>

b.Ilişki zinciri belirtme

Bu örnek, AdventureWorks veritabanından alınan verileri kullanarak aşağıdaki XML belgesini istediğiniz varsayalım:

<Order SalesOrderID="43659">
  <Product Name="Mountain Bike Socks, M"/> 
  <Product Name="Sport-100 Helmet, Blue"/>
  ...
</Order>
...

XML belgesini Sales.SalesOrderHeader tablosundaki her sipariş için sahip <Sipariş> Öğe. And each <Order> element has a list of <Product> child elements, one for each product requested in the order.

Bu hiyerarşiyi oluşturacak bir XSD şeması belirtmek için , iki ilişkileri belirtmeniz gerekir: OrderOD ve ODProduct. OrderOD ilişki Sales.SalesOrderHeader ve Sales.SalesOrderDetail Tablo üst-altöge ilişkisi belirtir.ODProduct ilişki Sales.SalesOrderDetail ve Production.Product tablolar arasındaki ilişkiyi belirtir.

Aşağıdaki şemada, msdata:relationship Ek açıklamayı <Ürün> öğesi, iki değerleri belirtir: OrderOD ve ODProduct. Bu değerler, belirtilen sırası önemlidir.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
  <xsd:appinfo>
    <msdata:relationship name="OrderOD"
          parent="Sales.SalesOrderHeader"
          parent-key="SalesOrderID"
          child="Sales.SalesOrderDetail"
          child-key="SalesOrderID" />

    <msdata:relationship name="ODProduct"
          parent="Sales.SalesOrderDetail"
          parent-key="ProductID"
          child="Production.Product"
          child-key="ProductID" />
  </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="Order" msdata:relation="Sales.SalesOrderHeader" 
               msdata:key-fields="SalesOrderID" type="OrderType" />
   <xsd:complexType name="OrderType" >
     <xsd:sequence>
        <xsd:element name="Product" msdata:relation="Production.Product" 
                     msdata:key-fields="ProductID"
                     msdata:relationship="OrderOD ODProduct">
          <xsd:complexType>
             <xsd:attribute name="Name" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
     </xsd:sequence>
        <xsd:attribute name="SalesOrderID"   type="xsd:integer" /> 
    </xsd:complexType>
</xsd:schema>

Adlandırılmış bir ilişki belirtmek yerine, anonim bir ilişki belirtebilirsiniz.Bu durumda, tüm içeriği <Ek açıklama>... </annotation>, hangi iki ilişkileri tanımlar, bir alt öğe görünür. <Ürün>.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:mapping-schema">

  <xsd:element name="Order" msdata:relation="Sales.SalesOrderHeader" 
               msdata:key-fields="SalesOrderID" type="OrderType" />

   <xsd:complexType name="OrderType" >
     <xsd:sequence>
        <xsd:element name="Product" msdata:relation="Production.Product" 
                     msdata:key-fields="ProductID" >
         <xsd:annotation>
          <xsd:appinfo>
           <msdata:relationship 
               parent="Sales.SalesOrderHeader"
               parent-key="SalesOrderID"
               child="Sales.SalesOrderDetail"
               child-key="SalesOrderID" />

           <msdata:relationship 
               parent="Sales.SalesOrderDetail"
               parent-key="ProductID"
               child="Production.Product"
               child-key="ProductID" />
         </xsd:appinfo>
       </xsd:annotation>
       <xsd:complexType>
          <xsd:attribute name="Name" type="xsd:string" />
       </xsd:complexType>
     </xsd:element>
   </xsd:sequence>
   <xsd:attribute name="SalesOrderID"   type="xsd:integer" /> 
  </xsd:complexType>
 </xsd:schema>

Şemaya örnek bir XPath sorgusu sınamak için

  1. Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı relationshipChain.xml kaydedin.

  2. Aşağıdaki şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı relationshipChainT.xml relationshipChain.xml kaydettiğiniz aynı dizine kaydedin.

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

    Dizin yol şablonu kaydedildiği dizine göre (relationshipChain.xml) eşleme şemada için belirtildi.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\relationshipChain.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 sorgu yürütmek işlemi için kullanma.

sonuç kümesi aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Order SalesOrderID="43659">
    <Product Name="Mountain Bike Socks, M" /> 
    <Product Name="Sport-100 Helmet, Blue" /> 
    <Product Name="AWC Logo Cap" /> 
    <Product Name="Long-Sleeve Logo Jersey, M" /> 
    <Product Name="Long-Sleeve Logo Jersey, XL" /> 
    ...
  </Order>
  ...
</ROOT>

c.Ilişki ek açıklamayı öznitelik belirtme

Bu örnekte şema içeren bir <Müşteri> öğeyle bir <MüşteriNo> alt öğe ve öznitelik OrderIDList IDREFS türü. The <Customer> element maps to the Sales.Customer tablo in the AdventureWorks database. Varsayılan olarak, bu eşleştirme kapsamını tüm alt öğeler ve öznitelikler için sürece uygular sql:relation Belirtilen alt öğe veya öznitelik, içindeki durum, uygun birincil-anahtarı/yabancı anahtar ilişkisi kullanılarak tanımlanmalıdır <ilişki> Öğe. Alt öğe veya farklı bir tablo kullanarak belirten öznitelik ve relation Ek açıklamayı de belirtmelidir relationship Ek açıklama.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
  <xsd:appinfo>
    <sql:relationship name="CustOrders"
          parent="Sales.Customer"
          parent-key="CustomerID"
          child="Sales.SalesOrderHeader"
          child-key="CustomerID" />
     </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="Customer" sql:relation="Sales.Customer" type="CustomerType" />
   <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="CustomerID"   type="xsd:string" /> 
     </xsd:sequence>
     <xsd:attribute name="OrderIDList" 
                     type="xsd:IDREFS" 
                     sql:relation="Sales.SalesOrderHeader" 
                     sql:field="SalesOrderID"
                     sql:relationship="CustOrders" >
        </xsd:attribute>
    </xsd:complexType>
</xsd:schema>

Şemaya örnek bir XPath sorgusu sınamak için

  1. Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı ilişkisi üzerinde öznitelik.xml kaydedin.

  2. Aşağıdaki şablon kopyalamak ve onu bir dosyaya yapıştırın.Dosya ilişkisi üzerinde attributeT.xml ilişkisi üzerinde öznitelik.xml kaydettiğiniz aynı dizine kaydedin.Şablon bir sorguda, MüşteriNo 1 olan bir müşteri seçer.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="relationship-on-attribute.xml">
        /Customer[CustomerID=1]
      </sql:xpath-query>
    </ROOT>
    

    Dizin yol şablonu kaydedildiği dizine göre (ilişki-göre-öznitelik.xml) eşleme şemada için belirtildi.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\relationship-on-attribute.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 sorgu yürütmek işlemi için kullanma.

sonuç kümesi aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Customer OrderIDList="43860 44501 45283 46042">
    <CustomerID>1</CustomerID> 
  </Customer>
</ROOT>

d.Birden çok öğe üzerinde SQL:Relationship belirtme

Örneğin, ek açıklama eklenen XSD şeması içeren <Müşteri>, <Sipariş>, ve <OrderDetail> öğeleri.

The <Order> element is a child element of the <Customer> element.<sql:relationship> is specified on the <Order> child element; therefore, orders that belong to a customer appear as child elements of <Customer>.

The <Order> element includes the <OrderDetail> child element.<sql:relationship> is specified on <OrderDetail> child element, so the order details that pertain to an order appear as child elements of that <Order> element.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
  <xsd:appinfo>
    <sql:relationship name="CustOrders"
        parent="Sales.Customer"
        parent-key="CustomerID"
        child="Sales.SalesOrderHeader"
        child-key="CustomerID" />

    <sql:relationship name="OrderOrderDetail"
        parent="Sales.SalesOrderHeader"
        parent-key="SalesOrderID"
        child="Sales.SalesOrderDetail"
        child-key="SalesOrderID" />
  </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="Customer" sql:relation="Sales.Customer" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"  
              sql:relationship="CustOrders" maxOccurs="unbounded" >
          <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="OrderDetail" 
                             sql:relation="Sales.SalesOrderDetail" 
                             sql:relationship="OrderOrderDetail" 
                             maxOccurs="unbounded" >
                  <xsd:complexType>
                    <xsd:attribute name="SalesOrderID" type="xsd:integer" />
                    <xsd:attribute name="ProductID" type="xsd:string" />
                    <xsd:attribute name="OrderQty" type="xsd:integer" />
                  </xsd:complexType>
                </xsd:element>
              </xsd:sequence>
              <xsd:attribute name="SalesOrderID" type="xsd:integer" />
              <xsd:attribute name="OrderDate" type="xsd:date" />
              <xsd:attribute name="CustomerID" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
      <xsd:attribute name="CustomerID" type="xsd:string" />
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

Şemaya örnek bir XPath sorgusu sınamak için

  1. Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı, ilişki çok-elements.xml kaydedin.

  2. Şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Ilişkinin çok-elementsT.xml aynı dizinde birden çok ilişki elements.xml kaydettiğiniz dosyayı kaydedin.Şablon bir sorguda, 1 ve Salesorderıd 43860, MüşteriNo ile bir müşteri için sipariş bilgilerini döndürür.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="relationship-multiple-elements.xml">
        /Customer[@CustomerID=1]/Order[@SalesOrderID=43860]
      </sql:xpath-query>
    </ROOT>
    

    Eşleştirme şemasını (ilişki çok elements.xml) dizini belirtilen şablon kaydedildiği göreli dizinidir.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\relationship-multiple-elements.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 sorgu yürütmek işlemi için kullanma.

sonuç kümesi aşağıdadır:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1">
     <OrderDetail SalesOrderID="43860" ProductID="761" OrderQty="2" /> 
     <OrderDetail SalesOrderID="43860" ProductID="770" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="758" OrderQty="2" /> 
     <OrderDetail SalesOrderID="43860" ProductID="765" OrderQty="2" /> 
     <OrderDetail SalesOrderID="43860" ProductID="732" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="762" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="738" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="768" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="753" OrderQty="2" /> 
     <OrderDetail SalesOrderID="43860" ProductID="729" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="763" OrderQty="1" /> 
     <OrderDetail SalesOrderID="43860" ProductID="756" OrderQty="1" /> 
  </Order>
</ROOT>

e.Belirtme <SQL:Relationship> üst olmadan öznitelik

Belirterek bu örnek gösterir <SQL:Relationship> olmadan üst öznitelik.Örneğin, aşağıdaki çalışan tablonuz varsayalım:

Emp1(SalesPersonID, FirstName, LastName, ReportsTo)
Emp2(SalesPersonID, FirstName, LastName, ReportsTo)

The following XML view has the <Emp1> and <Emp2> elements mapping to the Sales.Emp1 and Sales.Emp2 tables:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
  <xsd:appinfo>
    <sql:relationship name="EmpOrders"
          parent-key="SalesPersonID"
          child="Sales.SalesOrderHeader"
          child-key="SalesPersonID" />
     </xsd:appinfo>
</xsd:annotation>

  <xsd:element name="Emp1" sql:relation="Sales.Emp1" type="EmpType" />
  <xsd:element name="Emp2" sql:relation="Sales.Emp2" type="EmpType" />
   <xsd:complexType name="EmpType" >
     <xsd:sequence>
        <xsd:element name="Order" 
                     sql:relation="Sales.SalesOrderHeader" 
                     sql:relationship="EmpOrders" >
          <xsd:complexType>
             <xsd:attribute name="SalesOrderID" type="xsd:integer" />
             <xsd:attribute name="CustomerID" type="xsd:string" />
          </xsd:complexType>
        </xsd:element>
     </xsd:sequence>
        <xsd:attribute name="SalesPersonID"   type="xsd:integer" /> 
        <xsd:attribute name="LastName"   type="xsd:string" /> 
    </xsd:complexType>

</xsd:schema>

Şemada, hem <Emp1> öğe ve <Emp2> öğenin türü olan EmpType. Türü EmpType açıklayan bir <Sipariş> ilgili alt öğe ve**<SQL:Relationship>. Bu durumda, içinde tanımlanan yok bir tek üst yok <SQL:Relationship> kullanarak üst özniteliği.Bu durumda, belirtmeyin üst özniteliği<SQL:Relationship>**; üst öznitelik bilgileri, şema hiyerarşisinde'ndan alınır.

Şemaya örnek bir XPath sorgusu sınamak için

  1. Bu tablo AdventureWorks veritabanındaki oluşturun:

    USE AdventureWorks
    CREATE TABLE Sales.Emp1 (
           SalesPersonID int primary key, 
           FirstName  varchar(20), 
           LastName   varchar(20), 
           ReportsTo int)
    Go
    CREATE TABLE Sales.Emp2 (
           SalesPersonID int primary key, 
           FirstName  varchar(20), 
           LastName   varchar(20), 
           ReportsTo int)
    Go
    
  2. Bu örnek veriler tablolarda ekleyin:

    INSERT INTO Sales.Emp1 values (279, 'Nancy', 'Devolio',NULL)
    INSERT INTO Sales.Emp1 values (282, 'Andrew', 'Fuller',1)
    INSERT INTO Sales.Emp1 values (276, 'Janet', 'Leverling',1)
    INSERT INTO Sales.Emp2 values (277, 'Margaret', 'Peacock',3)
    INSERT INTO Sales.Emp2 values (283, 'Steven', 'Devolio',4)
    INSERT INTO Sales.Emp2 values (275, 'Nancy', 'Buchanan',5)
    INSERT INTO Sales.Emp2 values (281, 'Michael', 'Suyama',6)
    
  3. Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı, ilişki noparent.xml kaydedin.

  4. Şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Ilişki noparentT.xml aynı dizinde ilişki noparent.xml kaydettiğiniz dosyayı kaydedin.Şablon sorgudaki tüm seçer <Emp1> öğeleri (Bu nedenle, Emp1 üst kümesidir).

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="relationship-noparent.xml">
            /Emp1
        </sql:xpath-query>
    </ROOT>
    

    Eşleştirme şemasını (ilişki noparent.xml) dizini belirtilen şablon kaydedildiği göreli dizinidir.Mutlak bir yol da, örneğin belirtilebilir:

    mapping-schema="C:\MyDir\relationship-noparent.xml"
    
  5. 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 sorgu yürütmek işlemi için kullanma.

Kısmi bir sonuç işte küme:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Emp1 SalesPersonID="276" LastName="Leverling">
  <Order SalesOrderID="43663" CustomerID="510" /> 
  <Order SalesOrderID="43666" CustomerID="511" /> 
  <Order SalesOrderID="43859" CustomerID="259" />
  ...
</Emp1>