Daniel Baluta
Acest articol isi propune sa faca o scurta introducere in XQuery. Pentru inceput vom afla cateva notiuni despre acest limbaj ,dupa care vom analiza expresiile FLOWR si vom vedea cu adevarat la ce sunt folositoare folosind un exemplu.
XQuery a fost creat ca un limbaj de interogare pentru datele stocate in format XML. Deci rolul lui principal este de a extrage informatia din bazele de date XML , incluzand bazele de date relationale care stocheaza date XML, sau care prezinta o vedere XML a datelor pe care le tin.
Pentru a putea crea si rula query-uri vom folosi in continuare
Stylus Studio
Primul nostru query:
Cream un nou fisier xquery in Stylus Studio cu File > New > XQuery File
Daca sunteti curiosi cum arata un program simplu "Hello World" sursa este prezentata mai jos:
"Hello World"
si rezultatul dupa rularea query-ului va fi :
Hello World.
In Stylus Studio rularea , dupa salvarea in prealabil a
fisierului editat cu textul de mai sus se face apasand pe butonul
Preview Result.
Alte exemple simple:
2+2
va produce rezultatul asteptat
4
current-time()
cu rezultatul
10:40:02
Accesarea documentelor XML cu XQuery Desi este capabil sa execute taskuri de genul celor de mai sus, XQuery este proiectat pentru a accesa date din fisierele XML.Deci sa aruncam o privire asupra unor query-uri simple care necesita un document XML ca date de intrare. Vom folosi urmatorul fisier XML , mai jos fiind prezentat doar o parte redusa a acestuia
<result> <video_template> <title/> <genre> <choice>action</choice> <choice>comedy</choice> </genre> <rating> <choice>G</choice> <choice>PG</choice> </rating> <user_rating> <choice>1</choice> <choice>2</choice> </user_rating> </video_template> <actors> <actor id="00000015">Anderson, Jeff</actor> <actor id="00000030">Bishop, Kevin</actor> </actors> <videos> <video id="id1235AA0"> <title>The Fugitive</title> <genre>action</genre> <rating>PG-13</rating> </video> <video id="id1244100"> <title>Enemy of the State</title> <genre>action</genre> <rating>R</rating> </video> </videos> </result>
XQuery ne permite sa accesam fisierul direct de pe file system-ul local
sau prin intremediul unui URL:
doc('file://C:/XQueryExamples/videos.xml')
doc('http://www.stylusstudio.com/examples/videso.xml')
Fisierul contine anumite sectiuni.Una dintre acestea
.//actors
Va produce rezultatul:
<actors>
<actor id="00000015">Anderson, Jeff</actor>
<actor id="00000030">Bishop, Kevin</actor>
....etc.....
</actors>
Se observa ca toate query-urile de pana acum au fost expresii XPATH. Putem scrie expresii XPath mai complexe: .//actors/actor[ends-with(,,'Lisa')]
Expresiile FLOWR ale limbajului XQuery: (For Let Order By Where Return)
Vom porni explicatia noastra de la urmatorul exemplu:
let $doc := .
for $v in $doc//video,
$a in $doc//actors/actor
where ends-with($a, 'Lisa')
and $v/actorRef = $a/@id
return $v/title
let $doc := .
for $v in $doc//video,
$a in $doc//actors/actor
where ends-with($a, 'Lisa')
and $v/actorRef = $a/@id
order by $v/year
return $v/title
Generarea unei iesiri XML folosind XQuery
Pana in acest moment toate query-urile pe care le-am scris au selectat noduri din documentul sursa.XQuery ne permite sa structuram documentul rezultat folosind notatie XML. Mai jos prezentam un exemplu care imbunatateste query-ul anterior adaugandui marcaje XML
De asemenea declarat variabila firstName astfel incat query-ul sa poate fi reutilizat usor cu mai multe nume de actori.
declare variable $firstName external;
<videos featuring="{$firstName}">
{
let $doc := .
for $v in $doc//video,
$a in $doc//actors/actor
where ends-with($a, $firstName)
and $v/actorRef = $a/@id
order by $v/year
return
<video year="{$v/year}">
{$v/title}
</video>
}
</videos>
Asadar , am facut o scurta introducere in limbajul XQuery. Am prezentat un tool folosit in editare si rulare de query-uri (Stylus Studio ) si exemple simple care ne-au introdus conceptele de baza ale expresiilor FLOWR.
Bine ati venit!
Acesta este siteul proiectului nostru la cursul de Interfete Evoluate.
Din meniu aveti acces catre aplicatii dezvoltate de membrii echipei, articole cu informatii utile despre tehnologiile folosite, resurse de unde putetii obtine mai multe informatii despre acest domeniu precum si o lista de programe gratuite de care ne-am folosit pe parcurs.