Udostępnij za pośrednictwem


Określanie za pomocą relacji sql:relationship (SQLXML 4.0)

Może być powiązane elementy w dokumencie XML.Elementy mogą być zagnieżdżane hierarchicznie i może być określony identyfikator, IDREF lub IDREFS relacje między elementami.

Na przykład w schematu XSD <klienta> zawiera element <zamówienia> elementów podrzędność.Gdy schemat jest mapowany do AdventureWorks2008R2 bazy danych, <klienta> element mapowany do tabela Sales.Customer i <zamówienia> element mapowany do tabela Sales.SalesOrderHeader.Tych tabel podstawowych, Sales.Customer i Sales.SalesOrderHeader, są powiązane, ponieważ klienci składanie zamówień.To IDKlienta w tabela Sales.SalesOrderHeader klucz obcy odnoszące się do klucz podstawowy IDKlienta w tabela Sales.Customer.Można ustanowić te relacje między mapowania elementów schematu za pomocą sql:relationship adnotacji.

W adnotacjami schematu XSD sql:relationship adnotacji można zagnieżdżać elementy schematu hierarchicznie, na podstawie klucz podstawowy i relacje klucz obcy między tabel podstawowych, do którego tablica elementów.Określając sql:relationship adnotacji, należy określić następujące:

  • Tabela nadrzędna (Sales.Customer) i podrzędność (Sales.SalesOrderHeader) w tabeli.

  • kolumna lub kolumn tworzących relacji między tabelami nadrzędne i podrzędność.Na przykład IDKlienta kolumna, który pojawia się w tabelach nadrzędny i podrzędność.

Te informacje są używane do generowania odpowiednich hierarchii.

O podanie nazwy tabela i informacji niezbędnych łączyć, następujące atrybuty są określone w sql:relationship adnotacji.Te atrybuty są prawidłowe tylko z <sql:relationship> element:

  • Nazwa
    Określa unikatową nazwę relacji.

  • Parent
    Określa nadrzędnej relacji (tabela).Jest to atrybut opcjonalny; Jeśli atrybut nie jest określony, nazwa tabela nadrzędnej jest uzyskiwana z informacji w hierarchii podrzędność w dokumencie.Jeśli schemat określa dwie hierarchie nadrzędny podrzędność, które korzystają z jednego <sql:relationship> , ale elementy innego nadrzędnego nie określono atrybut nadrzędny w <sql:relationship>.Informacje te są uzyskiwane z hierarchii w schemacie.

  • klucz nadrzędnego
    Określa klucz nadrzędny obiektu nadrzędnego.Jeśli klucz nadrzędny składa się z wielu kolumn, wartości są określone spacji między nimi.Brak pozycyjne mapowania między wartościami, które są określone dla wielokolumnowego klucza i odpowiadający mu klucz podrzędność.

  • Podrzędne
    Określa relacji podrzędnej (tabela).

  • klucz podrzędność
    Określa klucz podrzędność w podrzędność odnoszące się do klucza nadrzędnego w obiekcie nadrzędnym.Jeśli klucz podrzędność składa się wiele atrybutów (kolumn), spacji między nimi są określone wartości klucza podrzędnego.Brak pozycyjne mapowania między wartościami, które są określone dla wielokolumnowego klucza i odpowiadający mu klucz nadrzędny.

  • Odwrotność
    Ten atrybut określone na <sql:relationship> jest używana przez updategrams.Aby uzyskać więcej informacji, zobacz określenie atrybutu sql:relationship sql:inverse.

sql:key-fields Adnotacja musi być określona w elemencie, który zawiera element podrzędność, który ma <sql:relationship> zdefiniowane między elementem i podrzędnośćch i nie oferuje klucz podstawowy z tabela określonej w elemencie nadrzędnym.Nawet jeśli nie określono schematu <sql:relationship>, należy określić sql:key-fields do wytworzenia właściwego hierarchii.Aby uzyskać więcej informacji, zobacz identyfikacji kolumn klucz przy użyciu sql:klucz-pól.

Do wytworzenia właściwego zagnieżdżanie w wyniku, zalecane jest sql:key-fields są określone w wszystkie schematy.

Przykłady

Aby utworzyć próbki pracy przy użyciu poniższych przykładach, musi spełniać określone wymagania.Aby uzyskać więcej informacji, zobacz Wymagania dotyczące uruchamianie przykładów SQLXML.

A.Określanie adnotacji sql:relationship na element

Zawiera następującego schematu XSD adnotacjami <klienta> i <zamówienia> elementów.<Zamówienia> element jest podrzędność element <klienta> elementu.

W schemacie sql:relationship adnotacji jest określona na <zamówienia> podrzędność elementu.Samą relację jest zdefiniowany w <xsd:appinfo> elementu.

<Relacji> element identyfikuje IDKlienta w tabela Sales.SalesOrderHeader jako klucz obcy, który odnosi się do klucz podstawowy IDKlienta w tabela Sales.Customer.Dlatego zamówień, które należą do klienta są wyświetlane jako element podrzędność tego <klienta> elementu.

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

Poprzedni schemat używa nazwanego relacji.Można również określić nazwy relacji.Wyniki są takie same.

Jest to poprawione schematu, w którym określono nienazwane relacji:

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

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako sql relationship.xml.

  2. Skopiuj następujący szablon poniżej i wkleić go do pliku tekstowego.Zapisz plik jako relationshipT.xml sql w tym samym katalogu, w którym zapisano sql relationship.xml.

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

    Ścieżka katalogu określonego dla mapowania schematu (sql-relationship.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\sql-relationship.xml"
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Zestaw wyników jest następujący:

<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.Określanie łańcuch relacji

W tym przykładzie założono ma następujący dokument XML przy użyciu danych uzyskanych z AdventureWorks2008R2 bazy danych:

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

Dla każdego zamówienia w tabela Sales.SalesOrderHeader dokument XML ma jedną <zamówienia> elementu.And each <Order> element has a list of <Product> child elements, one for each product requested in the order.

Aby określić schematu XSD z hierarchii, należy określić dwie relacje: OrderOD i ODProduct.Relacja OrderOD określa relację nadrzędny podrzędność między tabele Sales.SalesOrderHeader i Sales.SalesOrderDetail.Relacja ODProduct określa relację między tabelami Sales.SalesOrderDetail i Production.Product.

W następującym schemacie msdata:relationship adnotacji na <produktu> element określa dwie wartości: OrderOD i ODProduct.Kolejność, w jakiej te wartości są określane jest ważne.

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

Zamiast określania relacji o nazwie, można określić relację anonimowe.W tym przypadek całą zawartość <adnotacji>...</annotation>, które opisuje dwie relacje, pojawiają się jako element podrzędność <produktu>.

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

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako relationshipChain.xml.

  2. Skopiuj następujący szablon poniżej i wkleić go do pliku tekstowego.Zapisz plik jako relationshipChainT.xml w tym samym katalogu, w którym zapisano relationshipChain.xml.

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

    Ścieżka katalogu określonego dla mapowania schematu (relationshipChain.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\relationshipChain.xml"
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Zestaw wyników jest następujący:

<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.Określanie relacji adnotacji na atrybut

Zawiera schemat w tym przykładzie <klienta> element z <IDklienta> element podrzędność oraz atrybut OrderIDList IDREFS typu. <Klienta> element mapowany do tabela Sales.Customer w AdventureWorks2008R2 bazy danych.Domyślnie, zakres tego mapowania stosuje się do wszystkich elementów podrzędność lub atrybuty, chyba że sql:relation określone na element podrzędność lub atrybut, w którym to przypadek właściwe podstawowy klucz/relacja klucza obcego musi być zdefiniowana przy użyciu <relacji> elementu.I element podrzędność lub atrybut, który określa innej tabela przy użyciu relation adnotacji, należy także określić relationship adnotacji.

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

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako relacja na atrybut.xml.

  2. Skopiuj następujący szablon i wkleić go do pliku.Zapisz plik jako relacja na attributeT.xml w tym samym katalogu, w którym zapisano relacji na atrybut.xml.Kwerenda w szablonie wybiera odbiorcy z IDKlienta 1.

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

    Ścieżka katalogu określonego dla mapowania schematu (relacja na atrybut.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\relationship-on-attribute.xml"
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Zestaw wyników jest następujący:

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

D.Określanie sql:relationship na wiele elementów

W tym przykładzie zawiera adnotacjami schematu XSD <klienta>, <zamówienia>, i <OrderDetail> elementów.

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>

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako relacji z wieloma elements.xml.

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako relacja wiele elementsT.xml w tym samym katalogu, w którym zapisano relacji z wieloma elements.xml.Kwerenda w szablonie zwraca informacje o zamówieniach nabywcy z IDKlienta 1 i SalesOrderID 43860.

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

    Ścieżka katalogu określonego dla mapowania schematu (relacji wiele elements.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\relationship-multiple-elements.xml"
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Zestaw wyników jest następujący:

<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.Określanie <sql:relationship> bez atrybut nadrzędny

Ten przykład ilustruje, określając <sql:relationship> bez nadrzędnego atrybut.Załóżmy, że masz następujące tabele pracownika:

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>

W schemacie zarówno <Emp1> element i <Emp2> elementu są typu EmpType.Typ EmpType opisuje <zamówienia> element podrzędność oraz odpowiadającego mu <sql:relationship>.W tym przypadek nie ma jednego elementu nadrzędnego, który może być zidentyfikowany w <sql:relationship> za pomocą nadrzędnego atrybut.W tej sytuacji nie określisz nadrzędnego atrybut w <sql:relationship>; nadrzędnego atrybut informacje są uzyskiwane z hierarchii w schemacie.

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Tworzenie tych tabel w AdventureWorks2008R2 bazy danych:

    USE AdventureWorks2008R2;
    GO
    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. Dodać przykładowe dane w tabelach:

    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. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako noparent.xml relacji.

  4. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako noparentT.xml relacji w tym samym katalogu, w którym zapisano relacji noparent.xml.Zaznacza wszystkie kwerendy w szablonie <Emp1> elementów (dlatego nadrzędny jest Emp1).

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

    Ścieżka katalogu określonego dla mapowania schematu (relacja noparent.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\relationship-noparent.xml"
    
  5. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO do wykonywania kwerend SQLXML.

Oto częściowego zestaw wyników:

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