Megosztás a következőn keresztül:


Relációs operátorok meghatározása XPath lekérdezésekben (SQLXML 4.0)

A következőkre vonatkozik:SQL ServerAzure SQL Database

Az alábbi példák bemutatják, hogyan definiálják a relációs operátorokat az XPath lekérdezésekben. Az XPath lekérdezések ezekben a példákban a SampleSchema1.xmláltal található leképezési sémához vonatkoznak. Erről a mintasémáról további információkért lásd: Sample Annotated XSD séma XPath példákhoz (SQLXML 4.0).

Példák

A. Relációs operátor megadása

Ez az XPath lekérdezés visszaadja az Ügyfél<> elem gyermekelemeit, ahol a CustomerID attribútum értéke "1", és ahol bármely gyermek <Order> elem tartalmaz egy <OrderDetail> gyermeket, amelynek OrderQty attribútuma nagyobb, mint 3:

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

A zárójelben megadott predikátum szűri az <ügyfélelemeket> . Csak azok <az ügyfélelemek> kerülnek vissza, amelyeknek legalább egy <OrderDetail> unokája van 3-nál nagyobb OrderQty attribútumértéktel.

A gyermektengely az alapértelmezett. Ezért a lekérdezés a következőképpen meghatározható:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
Az XPath lekérdezés tesztelése a leképezési sémával
  1. Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.

  2. Hozza létre a következő sablont (SpecifyRelationalA.xml), és elmentse abba a könyvtárba, ahol SampleSchema1.xml el van mentve.

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

    A leképezési sémához (SampleSchema1.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Íme a sablon végrehajtásának eredményhalmaza:

<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. Megadjuk a relációs operátort az XPath lekérdezésben, és használd a Boole-függvényt az eredmény összehasonlítására

Ez a lekérdezés visszaadja a <kontextuscsomópont összes Order> elem gyermekét, amelynek SalesPersonID attribútumértéke kisebb, mint 270:

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

A attribútumtengelyhez (@) rövidítés is megadható, és mivel a gyermektengely az alapértelmezett, kihagyható a lekérdezésből:

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

Megjegyzés:

Amikor ez a lekérdezés egy sablonban van megadva, a < karaktert entitáskodolni kell, mert a < karakternek különleges jelentése van egy XML dokumentumban. Egy sablonban használd < a karakter megadásához < .

Az XPath lekérdezés tesztelése a leképezési sémával
  1. Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.

  2. Hozza létre a következő sablont (SpecifyRelationalB.xml), és elmentse abba a könyvtárba, ahol SampleSchema1.xml el van mentve.

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

    A leképezési sémához (SampleSchema1.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\MyDir\SampleSchema1.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Íme a sablon végrehajtásának részleges eredményhalmaza:

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