Specificering av relationsoperatorer i XPath-frågor (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Följande exempel visar hur relationsoperatorer specificeras i XPath-frågor. XPath-frågorna i dessa exempel specificeras mot mappningsschemat som finns i SampleSchema1.xml. För information om detta exempelschema, se Exempel annoterat XSD-schema för XPath-exempel (SQLXML 4.0).

Examples

A. Specificera relationsoperatorn

Denna XPath-fråga returnerar barn-elementen i Customer-elementet<> där CustomerID-attributvärdet är "1" och där eventuella under-Order-element<> innehåller ett <OrderDetail-barn> med ett OrderQty-attribut med ett värde större än 3:

/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  

Predikatet som anges inom parentesen filtrerar <kundelementen> . Endast de< Kundelement> som har minst ett <OrderDetail-barnbarn> med ett OrderQty-attributvärde högre än 3 returneras.

Barnaxeln är standard. Därför kan frågan specificeras som:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
För att testa XPath-frågan mot mappningsschemat
  1. Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.

  2. Skapa följande mall (SpecifyRelationalA.xml) och spara den i katalogen där SampleSchema1.xml sparas.

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

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

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

    Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.

Här är resultatuppsättningen för mallexekveringen:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" />   
</ROOT>  

B. Specificera relationsoperatorn i XPath-frågan och använd boolesk funktion för att jämföra resultatet

Denna fråga returnerar alla <Order-elementbarn> till kontextnoden som har ett SalesPersonID-attributvärde som är mindre än 270:

/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]  

En genväg till attributaxeln (@) kan specificeras, och eftersom barnaxeln är standarden kan den utelämnas från frågan:

/Customer/Order[(@SalesPersonID < 270)=true()]  

Anmärkning

När denna fråga specificeras i en mall måste tecknet < vara entitetskodat eftersom tecknet < har en särskild betydelse i ett XML-dokument. I en mall, använd < för att specificera karaktären < .

För att testa XPath-frågan mot mappningsschemat
  1. Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.

  2. Skapa följande mall (SpecifyRelationalB.xml) och spara den i katalogen där SampleSchema1.xml sparas.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="SampleSchema1.xml">  
            /Customer/Order[(@SalesPersonID<270)=true()]  
        </sql:xpath-query>  
    </ROOT>  
    

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

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

    Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.

Här är den delvisa resultatuppsättningen för mallens exekvering:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Order SalesOrderID="Ord-46613" SalesPersonID="268"   
         OrderDate="2002-07-01T00:00:00"   
         DueDate="2002-07-13T00:00:00"   
         ShipDate="2002-07-08T00:00:00">  
    <OrderDetail ProductID="Prod-739" UnitPrice="917.9363"   
                 OrderQty="2" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-779" UnitPrice="1491.4221"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-825" UnitPrice="242.1391"   
                 OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
  <Order SalesOrderID="Ord-71919" SalesPersonID="268"  
         OrderDate="2004-06-01T00:00:00"   
         DueDate="2004-06-13T00:00:00"   
         ShipDate="2004-06-08T00:00:00">  
    <OrderDetail ProductID="Prod-961" UnitPrice="534.492"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-965" UnitPrice="534.492"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-966" UnitPrice="1716.5304"   
                 OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
  ...  
</ROOT>