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


Kiválasztási predikátumok meghatározása a helymeghatározási útban (SQLXML 4.0)

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

Egy predikátum egy csomóponthalmazt szűr egy tengelyhez képest (hasonlóan egy WHERE klauzulához egy SELECT állításban). A predikátum zárójelek között van megadva. Minden csomópont esetén a szűrendő csomópontban a predikátum kifejezést úgy értékelik, hogy az adott csomópont kontextuscsomópont, a csomópontok száma pedig kontextusméret. Ha a predikátum kifejezés TRUE-ra értékeli az adott csomópont esetén, akkor a csomópont bekerül a kapott csomóponthalmazba.

Az XPath lehetővé teszi a pozícióalapú szűrést is. Egy számra értékelő predikátumkifejezés választja ki ezt az ordinális csomópontot. Például a helyszíni útvonal Customer[3] visszaadja a harmadik vásárlót. Ilyen numerikus predikátumok nem támogatottak. Csak azok a predikátumkifejezések támogatottak, amelyek Boole-eredményt adnak vissza.

Megjegyzés:

Az XPath megvalósításának korlátairól és a W3C specifikációval való különbségekről információért lásd: Bevezetés az XPath lekérdezések használatába (SQLXML 4.0).

Kiválasztási predikátum: 1. példa

A következő XPath kifejezés (hely útja) a jelenlegi kontextuscsomópontból kiválasztja az <összes Ügyfélelem> gyermeket, amelynek CustomerID attribútuma ALFKI értéke:

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

Ebben az XPath lekérdezésben child és attribute tengelynevek. Customera csomópont teszt (IGAZ, ha Customerelemcsomópont<>, mert <az elem> a tengely fő csomóponttípusachild). attribute::CustomerID="ALFKI" a predikátum. A predikátumban attribute a tengely és CustomerID a csomópont teszt (IGAZ, ha a CustomerID a kontextuscsomópont attribútuma, mert <az attribútum> a fő csomópont típusa).

A rövidített szintaxissal az XPath lekérdezés is meghatározható a következőképpen is:

/Customer[@CustomerID="ALFKI"]  

Szelekció predikátum: 2. példa

A következő XPath kifejezés (helyútvonal) kiválasztja az aktuális kontextuscsomópontból az <összes Order> unokát, amelyek rendelkeznek a SalesOrderID attribútummal az 1 értékkel:

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

Ebben az XPath kifejezésben child és attribute a tengelynevek. Customer, Order, és SalesOrderID a csomóponttesztek. attribute::OrderID="1" a predikátum.

A rövidített szintaxissal az XPath lekérdezés is meghatározható a következőképpen is:

/Customer/Order[@SalesOrderID="1"]  

Szelekció predikátum: 3. példa

A következő XPath kifejezés (hely útja) kiválasztja a jelenlegi kontextuscsomópontból az <összes Ügyfél> gyermeket, amelynek egy vagy több <ContactName> gyermeke van:

child::Customer[child::ContactName]  

Ez a példa feltételezi, hogy a< ContactName> az XML dokumentumban szereplő< ügyfélelem> gyermekeleme, amelyet egy annotált XSD sémában elemközpontú leképezésnek neveznek.

Ebben az XPath kifejezésben child a tengely neve. Customera csomópont teszt (IGAZ, ha Customerelemcsomópont<>, mert <az elem> a tengely fő csomóponttípusachild). child::ContactName a predikátum. A predikátumban child a tengely és ContactName a csomópont teszt (IGAZ, ha ContactNameelemcsomópont<>).

Ez a kifejezés csak <a kontextuscsomópont Ügyfélelem> gyermekeit adja vissza, amelyek ContactName> elem gyermekekkel< rendelkeznek.

A rövidített szintaxissal az XPath lekérdezés is meghatározható a következőképpen is:

Customer[ContactName]  

Kiválasztási predikátum: 4. példa

Az alábbi XPath kifejezés kiválasztja <a kontextuscsomópont Ügyfélelem> gyermekeit, amelyek nem rendelkeznek< ContactName> elem gyermekekkel:

child::Customer[not(child::ContactName)]  

Ez a példa feltételezi, hogy <a ContactName> az XML dokumentum Ügyfél<> elemének gyermekeleme, és a ContactName mező nem szükséges az adatbázisban.

Ebben a példában child a tengely. Customera csomópont teszt (TRUE, ha Customer elemcsomópont<>). not(child::ContactName) a predikátum. A predikátumban child a tengely és ContactName a csomópont teszt (IGAZ, ha ContactName elemcsomópont<>).

A rövidített szintaxissal az XPath lekérdezés is meghatározható a következőképpen is:

Customer[not(ContactName)]  

Kiválasztási predikátum: 5. példa

A következő XPath kifejezés kiválasztja az aktuális kontextuscsomópontból az <összes CustomerID attribútummal rendelkező Ügyfél> gyermeket:

child::Customer[attribute::CustomerID]  

Ebben a példában child a tengely és Customer a csomópont teszt (IGAZ, ha Customer<elemcsomópont> ). attribute::CustomerID a predikátum. A predikátumban attribute a tengely és CustomerID a predikátum (TRUE, ha CustomerIDegy< attribútumcsomópont>).

A rövidített szintaxissal az XPath lekérdezés is meghatározható a következőképpen is:

Customer[@CustomerID]  

Kiválasztási predikátum: 6. példa

A Microsoft SQLXML 4.0 támogatja az XPath lekérdezéseket, amelyek keresztszorzatot tartalmaznak a predikátumban, ahogy az alábbi példa is mutatja:

Customer[Order/@OrderDate=Order/@ShipDate]  

Ez a lekérdezés kiválasztja az összes olyan vásárlót, amelyre Order a OrderDateShipDateOrderbármely .

Lásd még:

Bevezetés az annotált XSD sémákhoz (SQLXML 4.0)
Kliensoldali XML formating (SQLXML 4.0)