Windows - XPath lekérdezések az SQL szerverben

SQL XML Support 5. rész

Az XPath lekérdezések segítségével ugyanolyan módon tudunk XML dokumentum tartalmat lekérdezni, mint ahogyan egy SQL lekérdezéssel adatbázis nézetet. Közvetlenül URL-ből is megadhatunk ilyen lekérdezéseket, de beágyazhatjuk template-be is. Ha XDR sémákat használunk, akkor is ezt a módszert használjuk a lekérdezésekre. Mostani részünkben bemutatjuk, hogy az XPath funkcionalitásból mi használható az SQL szerver 2000-ben.
XPath lekérdezések
Az SQL szerver 2000 XDR séma támogatásának segítségével XML nézeteket készíthetünk a relációs, adatbázisban tárolt adatokról. Az XPath nyelv egy része arra használható, hogy lekérdezéseket definiáljunk ezekre a nézetekre.
Az XPath lekérdezés az URL részeként is megadható, de lehet egy template-en, mintán belül is. A hozzárendelt séma meghatározza a struktúráját az eredményül kapott résznek, és az értékeket az adatbázisból nyerjük. Ez a folyamat hasonlít ahhoz, mint amikor nézeteket készítünk a CREATE VIEW utasítással, és SQL lekérdezést írunk rájuk.
Egy XML dokumentum olyan csomópontokból áll, mint elem attribútum, szöveg, és hasonlók. XPath (XML útvonal nyelv) egy gráf útvonalbejáró nyelv. Arra használjuk, hogy kiválasszunk egy elemcsoportot az XML dokumentumból. Minden XPath operátor kiválaszt egy csomópont csoportot, ami az előző XPath operátor által kiválasztott csoporton alapszik. Például vegyük egy megadott csoportját a <Vevo> csomópontoknak. Az XPath le tudja kérdezni az összes <Elado> csomópontot, amelynek "7/14/1999" értékű dátum attribútuma van. Az eredmény csomópont csoport azokból az eladókból áll, amelyek dátuma az imént megadott érték.
Támogatott működés
Az alábbi tábla mutatja azokat a funkciókat az XPath nyelvből, amelyeket az SQL 2000 támogat:
Tulajdonság Elem
Axes (tördelők) attribute, child, parent és self tördelők
Logikai értékű állítmányok, amelyek tartalmazzák az egymást követő és egymásba ágyazott állítmányokat -
Minden relációs operátor =, !=, <, <=, >, >=
Számtani operátorok +, -, *, div
Egyértelmű konverziós függvények number(), string(), Boolean()
Logikai operátorok AND, OR
Logikai függvények true(), false(), not()
XPath változók -
Nem támogatott működés
Az alábbi táblázat összefoglalja az SQL 2000 által nem támogatott XPath funkciókat.
Tulajdonság Elem
Axes (tördelők) ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, preceding, preceding-sibling
Numerikus értékű állítmányok -
Számtani operátorok mod
Csomópont függvények ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, preceding, preceding-sibling
Szöveges függvények string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate()
Logikai függvények lang()
Numerikus függvények sum(), floor(), ceiling(), round()
Unió operátor |
XPath lekérdezések az URL-ben
Lekérdezéseket egyből megadhatunk az URL-ben:
http://IISSzerver/VirtualRoot/SemaVirtualNev/SemaFajl/XPathQuery[?root=ROOT]
A root paraméter egy legfelső szintű elemet jelent. Bármilyen érték megadható ezzel a paraméterrel. Ha a lekérdezés csak egy elemet ad vissza (vagy ha azt akarjuk, hogy a legfelső elemek csoportját kapjuk), ne adjuk meg ezt a paramétert.
Amikor XPath lekérdezéseket URL-ből használunk, akkor ügyeljünk a következőkre:
  • XPath tartalmazhat #, vagy + karaktereket, amelyek az URL-ben speciális jelentésűek. Használjuk ezek helyett a template-eket, vagy a százalékjeles kódolást.
  • A "//" XPath kifejezés nem használható URL-ből, mert néhány böngésző ezt úgy értelmezi, hogy módosítson az URL-en, mielőtt feldolgozza.
XPath lekérdezések template-ből
Megírhatunk XPath lekérdezéseket előre gyártott mintában, és később ezt hívjuk meg URL-ből. Az alábbiakban látunk egy példát erre:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:xpath-query mapping-schema="FilePath/AnnotatedSchemaFile.xml">
Ide jön az XPath lekérdezés megadása:
</sql:xpath-query>
</ROOT>
Az URL elindítja a mintát:
http://IISServer/VirtualRoot/VirtualName/TemplateFile.xml

SQL XML Support cikksorozat