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


Tengelyek 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 az axtagokat 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. A kontextuscsomópont gyermekelemei lekérése

A következő XPath lekérdezés kiválasztja a kontextuscsomópont összes <Kapcsolat> gyerekelemét:

/child::Contact  

A lekérdezésben child a tengely és Contact a csomópont teszt (IGAZ, ha Contactelemcsomópont<>, mert <az elem> a tengelyhez tartozó elsődleges csomóponttípuschild).

Az alapértelmezett tengely child . Ezért a lekérdezés így írható:

/Contact  
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. Hozd létre a következő sablont (XPathAxesSampleA.xml), és mentsd abba a könyvtárba, ahol SampleSchema1.xml mentették.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Contact  
      </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">   
  <Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />   
  <Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />   
  <Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />   
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />  
  ...  
</ROOT>  

B. A kontextus csomópont unokáinak lekérése

A következő XPath lekérdezés kiválasztja a <kontextuscsomópont Ügyfél elem gyermekeinek összes Order> elem gyermekét<:>

/child::Customer/child::Order  

A lekérdezésben child az a tengely és Customer és Order a csomóponttesztek (ezek a csomóponttesztek IGAZAK, ha az Ügyfél és a Rend elemcsomópontok<>, mert az <elemcsomópont> a gyermek tengely elsődleges csomópontja). Minden Ügyféllel<> egyező csomópontnál hozzáadják az eredményhez a rendelésekhez tartozó <> csomópontokat. Az eredményhalmazban csak <a sorrend> jelenik meg.

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

/Customer/Order  
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 (XPathAxesSampleB.xml), és mentse a könyvtárba, ahol:

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Customer/Order  
      </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-43860" SalesPersonID="280"   
         OrderDate="2001-08-01T00:00:00"   
         DueDate="2001-08-13T00:00:00"   
         ShipDate="2001-08-08T00:00:00">  
  <OrderDetail ProductID="Prod-729" UnitPrice="226.8571"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-738" UnitPrice="220.2496"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-761" UnitPrice="503.3507"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-762" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-765" UnitPrice="503.3507"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-768" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-770" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
   ...  
</ROOT>  

Ha az XPath lekérdezés , Customer/Order/OrderDetailminden olyan csomópontból <van megadva, amely megfelel az Ügyfélnek> , a lekérdezés a <Order> elemekhez navigál. És minden Order-hez> tartozó csomópontnál< a lekérdezés hozzáadja a OrderDetail> csomópontokat< az eredményhez. Az eredményhalmazban csak <a OrderDetail> jelenik meg.

C. Használ.. a szülőtengely megadásához

A következő lekérdezés lekéri az összes <Rendelés> elemet, amelynek egy szülő <Ügyfél> eleme van, amelynek CustomerID attribútumértéke 1. A lekérdezés a predikátumban lévő gyermektengelyt használja, hogy megtalálja a Order> elem szülőjét<.

/child::Customer/child::Order[../@CustomerID="1"]  

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

/Customer/Order[../@CustomerID="1"]  

Az XPath lekérdezés megfelel annak:

/Customer[@CustomerID="1"]/Order.  

Megjegyzés:

Az XPath lekérdezés /Order[../@CustomerID="1"] hibát ad, mert nincs a <Order> szülője. Bár a leképezési sémában lehetnek olyan elemek, amelyek <tartalmazzák a Ordert>, az XPath egyiküknél sem indult; ezért <a Order> a dokumentum legfelső szintű elemtípusának számít.

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 (XPathAxesSampleC.xml), és mentse a könyvtárba, ahol:

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Customer/Order[../@CustomerID="1"]  
      </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-43860" SalesPersonID="280"   
         OrderDate="2001-08-01T00:00:00"   
         DueDate="2001-08-13T00:00:00"   
         ShipDate="2001-08-08T00:00:00">  
  <OrderDetail ProductID="Prod-729" UnitPrice="226.8571"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-738" UnitPrice="220.2496"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-761" UnitPrice="503.3507"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-762" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-765" UnitPrice="503.3507"   
               OrderQty="2" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-768" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-770" UnitPrice="503.3507"   
               OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
   ...  
</Order>  
</ROOT>  

D. Megadjuk az attribútumtengelyt

A következő XPath lekérdezés kiválasztja a <kontextuscsomópont összes CustomerID attribútumértéke 1 értékű ügyfél> gyermekelemét:

/child::Customer[attribute::CustomerID="1"]  

A predikátumban attribute::CustomerID, attribute a tengely, CustomerID és a csomópont teszt (ha CustomerID attribútum, akkor a csomópontteszt IGAZ, mert az <attribútumcsomópont> a tengely elsődleges attribute csomópontja).

A tengelyhez (@) rövidítés attribute megadható, és mivel child ez az alapértelmezett tengely, kihagyható a lekérdezésből:

/Customer[@CustomerID="1"]  
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 (XPathAxesSampleD.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">  
        child::Customer[attribute::CustomerID="1"]  
      </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">  
  <Customer CustomerID="1" SalesPersonID="280"   
            TerritoryID="1" AccountNumber="1"   
            CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">  
    <Order SalesOrderID="Ord-43860" SalesPersonID="280"   
           OrderDate="2001-08-01T00:00:00"   
           DueDate="2001-08-13T00:00:00"   
           ShipDate="2001-08-08T00:00:00">  
       <OrderDetail ProductID="Prod-729" UnitPrice="226.8571"   
                    OrderQty="1" UnitPriceDiscount="0" />   
       <OrderDetail ProductID="Prod-732" UnitPrice="440.1742"   
                    OrderQty="1" UnitPriceDiscount="0" />   
       <OrderDetail ProductID="Prod-738" UnitPrice="220.2496"   
                    OrderQty="1" UnitPriceDiscount="0" />   
      ...   
    </Order>  
   ...  
  </Customer>  
</ROOT>