Comment interroger des documents XML ?
//*[name(.) = string (.)]
XQuery est un langage fonctionnel (typé) :
13
est une requête qui retourne l’entier 13"Bonjour"
est une requête qui retourne la chaîne de caractères "Bonjour"true()
, date("6-11-2007")
livre//section
FOR $<var> in <forest> [, $<var> in <forest> ]... // itération LET $<var> := <subtree> // assignation WHERE <condition> // élagage RETURN <result> // construction
if-then-return-else-return
doc("data/books.xml")//book/author
Nous utiliserons le fichier books.xml dans les exemples ci-dessous.
L'expression XPath
doc('books.xml')/bookstore/book[price>30]/title
est équivalente à l'expression FLWOR suivante
for $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title
Le résultat :
<title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
Il est possible de trier les éléments avec FLWOR
for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title
<ul> { for $x in doc("books.xml")/bookstore/book/title order by $x return <li>{$x}</li> } </ul>
Le résultat :
<ul> <li><title lang="en">Everyday Italian</title></li> <li><title lang="en">Harry Potter</title></li> <li><title lang="en">Learning XML</title></li> <li><title lang="en">XQuery Kick Start</title></li> </ul>
for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN") then <child>{data($x/title)}</child> else <adult>{data($x/title)}</adult>
Le résultat :
<adult>Everyday Italian</adult> <child>Harry Potter</child> <adult>Learning XML</adult> <adult>XQuery Kick Start</adult>