Specificering av relationer med sql:relationship (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Elementen i ett XML-dokument kan vara relaterade. Elementen kan nästlas hierarkiskt, och ID-, IDREF- eller IDREFS-relationer kan specificeras mellan elementen.

Till exempel, i ett XSD-schema innehåller ett <Customer-element> Order-barnelement<>. När schemat mappas till AdventureWorks-databasen mappas Customer-elementet <> till Sales.Customer-tabellen och <Order-elementet> till tabellen Sales.SalesOrderHeader. Dessa underliggande tabeller, Sales.Customer och Sales.SalesOrderHeader, är relaterade eftersom kunder lägger beställningar. CustomerID i tabellen Sales.SalesOrderHeader är en främmande nyckel som syftar på CustomerID:s primärnyckel i tabellen Sales.Customer. Du kan etablera dessa relationer mellan mappningsschemaelement genom att använda sql:relationship-annotationen .

I det annoterade XSD-schemat används sql: relationship-annotationen för att bädda schemaelementen hierarkiskt, baserat på primärnyckel- och främmande nyckelrelationer mellan de underliggande tabeller som elementen mappas till. När du specificerar sql: relationship-annotationen måste du identifiera följande:

  • Föräldratabellen (Sales.Customer) och barntabellen (Sales.SalesOrderHeader).

  • Kolumnen eller kolumnerna som utgör relationen mellan föräldra- och barntabellerna. Till exempel kolumnen CustomerID, som visas i både föräldra- och barntabellerna.

Denna information används för att generera rätt hierarki.

För att tillhandahålla tabellnamn och nödvändig join-information anges följande attribut i sql: relationship-annotationen. Dessa attribut är endast giltiga med sql:relationship-elementet<>:

Namn
Specificerar det unika namnet på relationen.

Förälder
Specificerar föräldrarelationen (tabellen). Detta är ett valfritt attribut; Om attributet inte anges erhålls föräldratabellens namn från information i barnhierarkin i dokumentet. Om schemat specificerar två föräldra-barn-hierarkier som använder samma <sql:relation> men olika föräldraelement, anger du inte föräldraattributet i <sql:relationship>. Denna information erhålls från hierarkin i schemat.

Föräldranyckel
Specificerar föräldernyckeln till föräldern. Om föräldranyckeln består av flera kolumner anges värden med ett mellanrum mellan dem. Det finns en positionsavbildning mellan de värden som anges för flerkolumnsnyckeln och för motsvarande barnnyckel.

underordnad
Specificerar barnrelationen (tabellen).

Barnnyckel
Specificerar barnnyckeln i barnet som syftar på föräldranyckeln i föräldern. Om barnnyckeln består av flera attribut (kolumner) specificeras barnnyckelns värden med ett mellanslag mellan dem. Det finns en positionsavbildning mellan de värden som anges för flerkolumnsnyckeln och för motsvarande föräldranyckel.

Omvänd
Detta attribut som anges i <sql:relationship> används av updategrams. För mer information, se Specifikation av sql:inverse Attribute på sql:relationship.

sql:key-fields-annotationen måste specificeras i ett element som innehåller ett barnelement, som har en <sql:relation> definierad mellan elementet och barnet, och som inte tillhandahåller primärnyckeln för tabellen som anges i föräldraelementet. Även om schemat inte specificerar <sql:relationship>, måste du ange sql:key-fields för att skapa rätt hierarki. För mer information, se Identifiera nyckelkolumner genom att använda sql:key-fields.

För att uppnå korrekt nästling i resultatet rekommenderas att sql:key-fields specificeras i alla scheman.

Examples

För att skapa arbetsprover med hjälp av följande exempel måste du uppfylla vissa krav. För mer information, se Krav för att köra SQLXML-exempel.

A. Specificering av sql:relationship-annotationen på ett element

Följande annoterade XSD-schema inkluderar <Kund-> och <Order-element> . Order-elementet <> är ett barn-element till <Kund-elementet>.

I schemat specificeras sql:relationship-annotationen<Order-barnelementet> . Själva relationen definieras i elementet< xsd:appinfo>.

Relationselementet<> identifierar CustomerID i tabellen Sales.SalesOrderHeader som en främmande nyckel som refererar till CustomerID:s primärnyckel i tabellen Sales.Customer. Därför framträder beställningar som tillhör en kund som ett underelement till det <kundelementet> .

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

Det föregående schemat använder en namngiven relation. Du kan också ange en namnlös relation. Resultatet är detsamma.

Detta är det reviderade schemat där en namnlös relation specificeras:

<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>  
För att testa en exempel-XPath-fråga mot schemat
  1. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som sql-relationship.xml.

  2. Kopiera följande mall nedan och klistra in den i en textfil. Spara filen som sql-relationshipT.xml i samma katalog där du sparade 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>  
    

    Den katalogväg som anges för mappningsschemat (sql-relationship.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\sql-relationship.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    För mer information, se Användning av ADO för att köra SQLXML-frågor.

Här är resultatuppsättningen:

<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. Specificering av en sambandskedja

För detta exempel, anta att du vill ha följande XML-dokument med data hämtade från AdventureWorks-databasen:

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

För varje order i tabellen Sales.SalesOrderHeader har XML-dokumentet ett <Order-element> . Och varje <Order-element> har en lista med <produktbarn> , ett för varje produkt som begärs i ordningen.

För att specificera ett XSD-schema som ska producera denna hierarki måste du ange två relationer: OrderOD och ODProduct. OrderOD-relationen specificerar föräldra-barn-relationen mellan tabellerna Sales.SalesOrderHeader och Sales.SalesOrderDetail. ODProduct-relationen specificerar relationen mellan tabellerna Sales.SalesOrderDetail och Production.Product.

I följande schema specificerar msdata:relationship-annotationenproduktelementet<> två värden: OrderOD och ODProduct. Ordningen i vilken dessa värden anges är viktig.

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

Istället för att specificera en namngiven relation kan du ange en anonym relation. I detta fall är hela innehållet i <annotationen>... </annotation>, som beskriver de två relationerna, visas som ett barnelement i <Product>.

<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>  
För att testa en exempel-XPath-fråga mot schemat
  1. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som relationshipChain.xml.

  2. Kopiera följande mall nedan och klistra in den i en textfil. Spara filen som relationshipChainT.xml i samma katalog där du sparade relationshipChain.xml.

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

    Den katalogväg som anges för mappningsschemat (relationshipChain.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\relationshipChain.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    För mer information, se Användning av ADO för att köra SQLXML-frågor.

Här är resultatuppsättningen:

<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. Specificering av relationsannotation på ett attribut

Schemat i detta exempel inkluderar ett <Customer-element> med ett <CustomerID-barnelement> och ett OrderIDList-attribut av IDREFS-typ. Kundelementet <> mappas till tabellen Sales.Customer i AdventureWorks-databasen. Som standard gäller omfattningen av denna mappning för alla barnelement eller attribut om inte sql:relation anges på barnelementet eller attributet, i vilket fall den lämpliga primärnyckel-/främmande nyckel-relationen måste definieras med relationselementet<>. Och barnelementet eller attributet, som specificerar den olika tabellen med relationsannotationen , måste också ange relationsannotationen .

<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>  
För att testa en exempel-XPath-fråga mot schemat
  1. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som relationship-on-attribute.xml.

  2. Kopiera följande mall och klistra in den i en fil. Spara filen som relationship-on-attributeT.xml i samma katalog där du sparade relationship-on-attribute.xml. Frågan i mallen väljer en kund med CustomerID 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>  
    

    Den katalogväg som anges för mappningsschemat (relationship-on-attribute.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\relationship-on-attribute.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    För mer information, se Användning av ADO för att köra SQLXML-frågor.

Här är resultatuppsättningen:

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

D. Specificering av sql:relation på flera element

I detta exempel innehåller det annoterade XSD-schemat elementen <Customer>, <Order> och <OrderDetail> .

Order-elementet <> är ett barn-element till <Kund-elementet>. <sql:relationship> anges på <Order-barnelementet> ; därför visas order som tillhör en kund som barnelement i <Customer>.

Order-elementet <> inkluderar <OrderDetail-barnelementet>. <sql:relationship> specificeras på <OrderDetail-barnelementet> , så orderdetaljerna som rör en order visas som barnelement till det <Order-elementet> .

<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>  
För att testa en exempel-XPath-fråga mot schemat
  1. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som relationship-multiple-elements.xml.

  2. Kopiera följande mall och klistra in den i en textfil. Spara filen som relationship-multiple-elementsT.xml i samma katalog där du sparade relationship-multiple-elements.xml. Frågan i mallen returnerar orderinformation för en kund med CustomerID 1 och 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>  
    

    Den katalogväg som anges för mappningsschemat (relationship-multiple-elements.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\relationship-multiple-elements.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    För mer information, se Användning av ADO för att köra SQLXML-frågor.

Här är resultatuppsättningen:

<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. Specificering av <sql:relation> utan föräldraattributet

Detta exempel illustrerar att specifikationen <av sql:relation> utan föräldraattributet . Till exempel, anta att du har följande personaltabeller:

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

Följande XML-vy har <Emp1> - och <Emp2-elementen> kopplade till tabellerna Sales.Emp1 och Sales.Emp2:

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

I schemat är både <Emp1-elementet> och <Emp2-elementet> av typen EmpType. Typen EmpType beskriver ett <Order-barnelement> och motsvarande <sql:relationship>. I detta fall finns det ingen enskild förälder som kan identifieras i <sql:relationship> genom att använda förälderattributet . I denna situation specificerar du inte föräldraattributet i <sql:relationship>; informationen om föräldraattributet hämtas från hierarkin i schemat.

För att testa en exempel-XPath-fråga mot schemat
  1. Skapa dessa tabeller i AdventureWorks-databasen:

    USE AdventureWorks2022;
    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. Lägg till denna exempeldata i tabellerna:

    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. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som relationship-noparent.xml.

  4. Kopiera följande mall och klistra in den i en textfil. Spara filen som relationship-noparentT.xml i samma katalog där du sparade relationship-noparent.xml. Frågan i mallen väljer alla Emp1-element <> (därför är föräldern Emp1).

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

    Den katalogväg som anges för mappningsschemat (relationship-noparent.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\MyDir\relationship-noparent.xml"  
    
  5. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    För mer information, se Användning av ADO för att köra SQLXML-frågor.

Här är en partiell resultatuppsättning:

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