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


Bevezetés az XPath lekérdezések használatába (SQLXML 4.0)

A következőkre vonatkozik:SQL ServerAzure 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.

Lásd még:

XPath lekérdezések használata SQLXML 4.0-ban