• 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 boukhalk@gmail.com, kboukhalfa@usthb.dz

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

[r]

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

[r]

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

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

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

[r]

[r]