commande | description |
---|---|
cd | aller dans votre répertoire $HOME |
tar zxvf $BD_TOOL/xquerybis.tgz | installer l'archive dans votre répertoire principal |
cd xquery | aller dans votre répertoire de travail |
cp /Infos/bd/basex.jar . & | copier l'outil BaseX dans votre répertoire de travail |
java -jar basex.jar | lancer l'outil BaseX (attendre quelques secondes) |
Après avoir lancé l'outil BaseX, commencer par créer une BD à partir d'un fichier XML. Pour ce faire, suivre les étapes suivantes :
1- aller dans le menu Database puis New. La fenêtre Create Database va s'ouvrir comme suit
2- Cliquer bouton Browse et sélectionner le fichier rencontre.xml pour charger le document dans la base.
Remarque Pour charger le contenu d'un repertoire, sélectionner le répertoire en question au lieu d'un fichier.
3- Activer l'affichage de la représentation arborescente. Pour ce faire, dérouler le menu Visualization et cliquer Tree. Le résultat est comme suit
4- Tester la requête ci-dessous et appuyer sur le triangle vert pour exécuter la requête. Les résultats de cette requete sont en rouge dans l'arbre original.
for $r in //rencontre return $r
Remarque 1 Il est évident que si le résultat de votre requete est un nouvel élément construit par copie d'autres éléments de votre document interrogé, les éléments de ce dernier ne seront pas coloriés.
Remarque 2 Pour (dé)commenter un paragraphe, sélectionner le paragraphe et saisir Ctrl-k
Pour cet exercice, utiliser les données Xmark contenues dans le fichier xmark10MB.xml. Les données Xmark sont synthétiques mais reflètent un scénario réel, celui des enchères.
Afin de faciliter la formulation des requêtes, vous pouvez vous appuyer sur structure globale du document XMark représentée ci-dessous.
Il vous est demandé de formuler en XQuery les requêtes permettant de retourner les informations ci-dessous. Les résultats sont consultables sur la page Résultat requêtes Xmark.
Réponses
- Le nom de la personne dont l'identifiant est “person0”.
for $x in /site/people/person[@id="person0"] return $x/name
- La valeur initiale des trois premières enchères en cours.
for $x in /site/open_auctions/auction[position()<4] return <result id="{$x/@id}" >{$x/initial}</result>
- La valeur de la première et de la dernière augmentation effectuée sur les trois premières des enchères en cours, selon l'ordre des enchères défini dans les données xml (ne pas trier les enchères chronologiquement).
for $x in /site/open_auctions/auction[position()<4] return <result id="{$x/@id}" ><first>{$x/bidder[1]/increase/text()}</first><last>{$x/bidder[last()]/increase/text()}</last></result>
- Le prix des objets vendus à plus de 480.
for $x in //closed_auctions/auction, $y in //item where $x/price/text()>480 and $x/itemref/@item =$y/@id return $x/price
- Le nom des objets du continent africain
for $x in //regions/africa return $x/item/name
- Le nom des objets du continent africain avec leur prix de vente
for $x in //regions/africa/item for $y in //closed_auctions/auction where $x/@id=$y/itemref/@item return <res>{$x/name, $y/price}</res>
- Le nombre de personnes qui n'ont pas de page web (i.e. les personnes sans élément homepage)
count(for $p in //person where empty($p/homepage) return $p)
Poursuivre sur les questions de l'exercice 2 du TD en utilisant les données bib.xml. Pour ce faire, commencer par charger dans BaseX le fichier bib.xml en suivant les instructions décrites précédemment.