Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure 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
Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.
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"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
Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.
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"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
Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.
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"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
Másold le a mintasémakódot , és beilleszted egy szövegfájlba. Mentse el a fájlt SampleSchema1.xml.
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"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>