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 XML Path Language (XPath) lekérdezés meghatározható URL részeként vagy sablonon belül. A leképezési séma határozza meg ennek a fragmentumnak a szerkezetét, és az értékek az adatbázisból kerülnek vissza. Ez a folyamat koncepcionálisan hasonló ahhoz, amikor a CREATE VIEW utasítással nézők létrehozása és SQL lekérdezések írása ellenük történik.
Megjegyzés:
Az XPath lekérdezések megértéséhez az SQLXML 4.0-ban ismerned kell az XML nézeteket és kapcsolódó fogalmakat, mint például a sablonokat és a leképezési sémákat. További információért lásd: Bevezetés az annotált XSD sémákhoz (SQLXML 4.0) és a World Wide Web Consortium (W3C) által meghatározott XPath szabvány.
Az XML dokumentum olyan csomópontokból áll, mint elemcsomópont, attribútumcsomópont, szövegcsomópont és így tovább. Például vegyük ezt az XML dokumentumot:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
Ebben a dokumentumban a< Customer> egy elemcsomópont, a cid egy attribútumcsomópont, a "Important" pedig egy szöveges csomópont.
Az XPath egy gráfnavigációs nyelv, amelyet csomópontok halmazának kiválasztására használnak egy XML dokumentumból. Minden XPath operátor kiválaszt egy csomóponthalmazt egy korábbi XPath operátor által kiválasztott csomóponthalmaz alapján. Például, ha adott egy ügyfélcsomópont-halmaz<>, az XPath kiválaszthatja az összes <Order> csomópontot, amelynek dátum attribútumértéke "7/14/1999". A kapott csomóponthalmaz tartalmazza az összes rendelést, amelynek rendelési dátuma 1999.07.14.
Az XPath nyelvet a World Wide Web Consortium (W3C) szabványos navigációs nyelvként határozza meg. Az SQLXML 4.0 a W3C XPath specifikációjának egy részhalmazát valósítja meg, amely a következő helyen http://www.w3.org/TR/1999/PR-xpath-19991008.htmltalálható.
Az alábbiakban a W3C XPath megvalósítás és az SQLXML 4.0 megvalósítás közötti főbb különbségek találhatók.
Gyökérlekérdezések
Az SQLXML 4.0 nem támogatja a gyökérlekérdezést (/). Minden XPath lekérdezésnek a sémában egy felső szintű <ElementType-nél> kell kezdődnie.
Jelentési hibák
A W3C XPath specifikáció nem határoz meg hibafeltételeket. Az XPath lekérdezések, amelyek nem választanak ki egyetlen csomópontot, üres csomóponthalmazt adnak vissza. Az SQLXML 4.0-ban egy lekérdezés sokféle hibaüzenetet adhat vissza.
Dokumentumok sorrendje
Az SQLXML 4.0-ban a dokumentumok sorrendje nem mindig van meghatározva. Ezért nem valósítottak meg a numerikus predikátumok és tengelyek, amelyek a dokumentumsorrendet (például a következőket) használják.
A dokumentumsorrend hiánya azt is jelenti, hogy egy csomópont stringértéke csak akkor értékelhető, ha az a csomópont egyetlen oszlophoz van leképezve egyetlen sorban. Egy elem, amelynek gyermekelemei vannak, vagy IDREFS vagy NMTOKENS csomópont, nem konvertálható láncsorba.
Megjegyzés:
Bizonyos esetekben a kulcsmezők annotációja vagy a kapcsolati annotációból származó kulcsok determinisztikus dokumentumsorrendet eredményezhetnek. Azonban ez nem az elsődleges felhasználási terület ezeknek az annotációknak a további információért: Kulcsoszlopok azonosítása sql:key-fields (SQLXML 4.0) és Kapcsolatok meghatározása sql:relationship (SQLXML 4.0) segítségével.
Adattípusok
Az SQLXML 4.0-nak korlátai vannak az XPath string, szám és boolean adattípusok megvalósításában. További információért lásd: XPath Data Types (SQLXML 4.0).
Kereszttermékes lekérdezések
Az SQLXML 4.0 nem támogatja a termékmentes XPath lekérdezéseket, például
Customers[Order/@OrderDate=Order/@ShipDate]. Ez a lekérdezés minden olyan Vevőt választ ki, akiknek a Rendelési Dátuma megegyezik bármely Megrendelés Szállítási Dátumával.Az SQLXML 4.0 azonban támogatja az olyan lekérdezéseket, mint
Customer[Order[@OrderDate=@ShippedDate]], amely bármely Rendeléssel választja ki az Ügyfeleket, amelynél a OrderDate megegyezik a ShipDate-vel.Hibakezelés és biztonság
A használt séma és XPath lekérdezési kifejezés függvényében bizonyos feltételek mellett Transact-SQL hibák kitárhatók a felhasználók számára.
Az alábbi részek táblázatai részletesen bemutatják, hogyan tér el az XPath lekérdezések SQLXML 4.0-ban való megvalósítása a W3C specifikációtól ezekben a területeken.
Támogatott funkciók
Az alábbi táblázat az XPath nyelv SQLXML 4.0-ban megvalósított jellemzőit mutatja.
| Tulajdonság | Termék | Link mintalekérdezésekhez |
|---|---|---|
| Tengelyek | attribútum, gyermek, szülő és öntengelyek | Tengelyek meghatározása XPath lekérdezésekben (SQLXML 4.0) |
| Boole-értékű predikátumok, beleértve az egymást követő és beágyazott predikátumokat | Aritmetikai operátorok meghatározása XPath lekérdezésekben (SQLXML 4.0) | |
| Minden relációs operátor | =, !=, <, , <>>= | Relációs operátorok meghatározása XPath lekérdezésekben (SQLXML 4.0) |
| Aritmetikai operátorok | +, -, *, div | Aritmetikai operátorok meghatározása XPath lekérdezésekben (SQLXML 4.0) |
| Explicit konvertációs függvények | number(), string(), Boolean() | Explicit konvertáló függvények meghatározása az XPath lekérdezésekben (SQLXML 4.0) |
| Logikai operátorok | ÉS, VAGY | A boolean operátorok meghatározása XPath lekérdezésekben (SQLXML 4.0) |
| Boole-függvények | true(), false(), not() | Boolean függvények meghatározása XPath lekérdezésekben (SQLXML 4.0) |
| XPath változók | XPath változók meghatározása az XPath lekérdezésekben (SQLXML 4.0) |
Nem támogatott funkciók
Az alábbi táblázat az XPath nyelv olyan jellemzőit mutatja, amelyek nem valósultak meg az SQLXML 4.0-ban.
| Tulajdonság | Termék |
|---|---|
| Tengelyek | ős, ős, vagy-én, leszármazott, leszármazott-vagy-én (//),követő, követő-testvér, névtér, előző, előző-testvér |
| Numerikus értékű predikátumok | |
| Aritmetikai operátorok | mod |
| Csomópontfüggvények | ős, ős, vagy-én, leszármazott, leszármazott-vagy-én (//),követő, követő-testvér, névtér, előző, előző-testvér |
| Karakterlánc függvények | string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate() |
| Boole-függvények | lang() |
| Numerikus függvények | sum(), floor(), ceiling(), round() |
| Szakszervezeti operátor | | |
Amikor egy sablonban megadod az XPath lekérdezéseket, figyeld meg a következő viselkedést:
- Az XPath tartalmazhat olyan karaktereket, mint < vagy &, amelyek különleges jelentéssel bírnak XML-ben (és a sablon XML dokumentum). Ezeket a karaktereket XML és kódolással kell kilépni, vagy az URL-ben meg kell határozni az XPath-ot.