• Aucun résultat trouvé

14/09/20131

N/A
N/A
Protected

Academic year: 2022

Partager "14/09/20131"

Copied!
8
0
0

Texte intégral

(1)

1

Présenté par : Dr. Kamel Boukhalfa [email protected], [email protected]

Ecole Doctorale Promotion 2012-2013

يللآا ملاعلإل ايلعلا ةينطولا ةسردملا Ecole nationale Supérieure d’Informatique

Source :

Serge Abiteboul, George Gardarin

XQueryest un langage de requête permettant d'extraire des informations d'un document XML.

XQueryest à XMLce que SQLest aux bases de données relationnelles.

 Il existe deux syntaxes distinctes pour Xquery:

la syntaxe XQueryX(XML Syntax for XQuery)

la syntaxe "naturelle" non-XML dite aussi FLWOR (For, Let, Where, Order byet Return) 2

(2)

14/09/2013

3 3

1998: W3C organise un séminaire sur interrogation de XML

1999: W3C crée « XML Query working group » contenant 39 membres, représentent 25 entreprises

2003: Draft XQuery

2007: XQuery 1.0

4

(3)

5 5

Xpath

XPath permet d'exprimer des requêtes de filtrage sur des arbres

Il n'est pas possible:

de créer des nœuds

de construire des arbres/des documents nouveaux

de trier des noeuds, ...

Il est difficile d'exprimer des jointures (pas de variables) Xquery

XQuery est un langage de requêtes complet qui permet :

de créer des noeuds et de construire des arbres nouveaux

de définir et d'instancier des variables

de définir des fonctions, ...

6

(4)

14/09/2013

7 Book.xml:

<bookstore>

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

</book>

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

</bookstore>

XQuery requête:

doc("books.xml")/bookstore/book/ti tle

7

Résultat:

<title lang="en">Everyday Italian</title>

<title lang="en">Harry Potter</title>

Requête XQuery

Book.xml:

<bookstore>

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

</book>

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

XQuery:

doc("books.xml")/bookstore/book[p rice<30]

8

Résultat:

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

Requête XQuery

(5)

9 9

1 FOR itération sur une liste de fragments XML

2 LET association du résultat d'une expression à une variable

3 WHERE condition de sélection 4 ORDER tri des résultats 5 RETURN expression à retourner

FLOWR FOR – LET – WHERE – ORDER - RETURN

SQL SELECT – FROM – WHERE – ORDER BY

A. "for"

Syntaxe: for $variable in expression_recherche RETURN

"for" associe à chaque $variable une valeur (fragment XML) trouvé pour l’expression Xquery

 Exemple: for $t in //topic/title B. let

"let" permet de d’assigner une valeur à une variable

 Exemple:

for $t in document("catalog09.xml")//c3msbrick let $n := count($t//c3mssoft)

return <result> {$t/title/text()} possède {$n} briques </result>

10

(6)

14/09/2013

11 C. Where

Permet de définir une condition de sélection (une seule par requête)

 Exemple:

for $t in document("catalog09.xml")//c3msbrick let $n := count($t//c3mssoft)

where ($n > 1)

return <result> {$t/title/text()} possède {$n} briques </result>

D. order

Permet de trier les résultats

 Exemple:

for $t in //topic/title order by $t return $t 11

E. return

• Construit l’expression à retourner à chaque itération

• Chaque itération doit retourner un seul fragment XML (pas une collection)

 Exemle:

for $t in document("catalog09.xml")//c3msbrick let $n := count($t//c3mssoft)

return <result>

{$t/title/text()} possède {$n} briques

</result>

12

(7)

13

Book.xml:

<bookstore>

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

</book>

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

</book>

</bookstore>

13

Xquery - FLWOR:

for$x in

doc("books.xml")/bookstore/book where$x/price>20

return$x/title

Résultat:

<title lang="en">Harry Potter</title>

<title lang="en">Everyday Italian</title>

Book.xml:

<bookstore>

<book category="COOKING">

<title lang="en">Everyday Italian</title>

<author>Giada De Laurentiis</author>

<year>2005</year>

<price>30.00</price>

</book>

<book category="CHILDREN">

<title lang="en">Harry Potter</title>

<author>J K. Rowling</author>

<year>2005</year>

<price>29.99</price>

14

Xquery - FLWOR:

for$x in

doc("books.xml")/bookstore/book where$x/price>20

order by $x/title return$x/title

Résultat:

<title lang="en">Everyday Italian</title>

<title lang="en">Harry Potter</title>

(8)

14/09/2013

15

 Si on souhaite retourner un code HTML comme résultat de la requête.

15

Xquery-avancé: Résultat:

<html> <html>

<body> <body>

<h1>Bookstore</h1> <h1>Bookstore</h1>

<ul> <ul>

{ for$x in

doc("books.xml")/bookstore/book order by $x/title

return<li>{data($x/title)} - Category:

{data($x/@category)}</li>}

<li>Everyday Italian - Category:

COOKING</li>

<li>Harry Potter - Category:

CHILDREN</li>

</ul> </ul>

</body> </body>

</html> </html>

Références

Documents relatifs

The study focuses on phonological, orthographical, lexical, syntactical, semantic, pragmatic and tex- tual aspects and reveals the overwhelming influence of French, English and

Un code pour le cadenas est donc un nombre constitué de 6 chires, chacun d'entre eux provenant d'une des roues. (Les réponses aux questions suivantes devront être précisément

Comme arccos donne une valeur entre 0 et π, donc positive, elle donne la bonne valeur d’angle seulement dans le cas où l’image de z est située au dessus de l’axe des abscisses

Sur des pages A4 se trouvent des détails pris dans les doubles pages..

[r]

[r]

[r]

[r]