Ceci est une ancienne révision du document !
Pour lancer l'interface XQuery, cliquer sur le lien si dessus. Dans le cas où le navigateur vous demande avec quoi ouvrir le fichier, choisir “Java Web Start” ou javaws.exe
Il s'agit simplement d'une interface graphique utilisant la bibliothèque Saxon pour traiter les requêtes XQuery. L'interface est composée de trois zones de texte principales: une pour le document XML à traiter, une pour le programme XQuery et une dans laquelle s'affiche le résultat. Sur la gauche, il y a une liste de documents XML disponibles. Double cliquez sur un document pour le charger dans la zone de données. Il est également possible de charger un document du serveur en saisissant l'url dans la petite zone de texte en haut. Le bouton “XQuery” permet de lancer la requête XQuery de la zone “Programme”. Le bouton “XSLT” (non utilisé dans ce TP) permet d'appliquer une feuille de style XSLT donnée dans la zone programme sur le document de la zone “Données”. Il est en particulier possible de l'utiliser pour afficher les DTDs de certains des documents de la base. Les racourcis claviers classiques fonctionnent dans les zones de texte: Ctrl-C pour copier, Ctrl-V pour coller, Ctrl-X pour couper. Ctrl-Q permet de quitter.
Pour utiliser l'interface sans internet, télécharger les fichiers suivants: xquery.jar, saxon9.jar, saxon9-xpath.jar, saxon9-dom.jar et xmlfiles.jar. Lancer ensuite la commande:
java -cp saxon9.jar:saxon9-xpath.jar:saxon9-dom.jar:xquery.jar:xmlfiles.jar fr.cnrs.liris.ecoquery.xqueryapp.Main
ou bien la commande (si la première ne marche pas):
/usr/lib/jvm/java-1.5.0-sun/bin/java -cp saxon9.jar:saxon9-xpath.jar:saxon9-dom.jar:xquery.jar:xmlfiles.jar fr.cnrs.liris.ecoquery.xqueryapp.Main
Il peut être nécessaire de remplacer les : par des ; sous windows.
En cas de problèmes de connexion à internet lors d'une requête sur un document, supprimer SYSTEM “http:// … .dtd” dans la partie “Données”
Voici quelques liens sur XPath et XQuery:
Pour chacune des expressions XPath suivantes, dire à quoi elle correspond et deviner le résultat lorqu'on l'applique sur le documment mentionné. Vérifier ensuite grâce à l'interface.
/bib/book/title
//price
//last
//editor/last
/bib/book[attribute::year >= 1999]
/collection/tome/dessinateur
tome
dans la collection (il n'y a que des series
)//scenariste
/collection//dessinateur[child::text() = "Tarquin"]/..
//tome[numero="1"]/parent::element()
//tome[@numero=“1”]/parent::element()
)/PLAY/TITLE
//ACT/TITLE
//LINE/TITLE
Écrire et tester une requête XPath pour chacune des questions suivantes:
//file
//file[@name="Hamlet"]
collection.xml
//file[@url="collection.xml"]
//author
//book[author[last="Stevens" and first="W."]]
//book[editor]
//book[@year <= 1999 and price >= 100]
et
//book[@year <= 1999][price >= 100]
//book[author = preceding-sibling::book/author or author = following-sibling::book/author]
//serie[tome/@numero = 2]
//tome[dessinateur][scenariste]
//tome[parent::serie[@nom = "Lanfeust de Troy" or @nom = "Calvin & Hobbes"]]
//SPEECH[SPEAKER="HAMLET"]/LINE
//SCENE[//SPEAKER[../preceding-sibling::SPEECH[1]/SPEAKER = "HAMLET"][child::text() = "HORATIO"]]/TITLE
ou
//SCENE//SPEAKER[../preceding-sibling::SPEECH[1]/SPEAKER = "HAMLET"][child::text() = "HORATIO"]/../../TITLE
ou
//SPEECH[SPEAKER="HORATIO" and preceding-sibling::SPEECH[1]/SPEAKER = "HAMLET"]/../TITLE