XPath
Préparation :
- en TME : commande xpath (cela lance XPath Explorer) ou moteur Xpath en ligne avec ActiveSoftware
- chez soi, installer Cooktop ( voir XpathAvecCookTop), XPath Explorer (libre) ou Editix
Utilisation de Xpath Explorer en TME
- Copier, dans votre répertoire de travail, les deux fichiers base1.xml et base1.dtd du tme xml.
Si nécessaire, faire un ssh -X sur votre propre machine. Cela permet ensuite de saisir les caractères [ et @ dans l'outil xpath
- ssh -X `uname -n`
- autre possibilité: ssh -X ari-31-SSS-MM avec SSS étant le numéro de la salle et MM le numéro de la machine)
Aller dans le répertoire de travail contenant les fichiers xml et dtd
- exple, cd MABD/tme/xpath
- Lancer xpath &
Dans Xpath Explorer:
- File Open : ouvrir le fichier base1.xml
- Dans le champ XPath, saisir une expression xpath
- Vérifier que l'expression que vous venez de saisir s'affiche bien dans le champ Expanded sous une forme étendue. Si elle ne s'affiche pas, cela signifie que votre saisie est erronnée.
- L'onglet Matching Nodes contient le résultat de l'évaluation de votre expression xpath
Pour faciliter la remise de vos requêtes en fin de TME, saisir vos requêtes dans le fichier requete_xpath.txt
- emac ou gedit requete_xpath.txt &
Ex1 : Restaurants et villes
On veut extraire des données du guide touristique base1.xml.
- Le fichier base1.xml se trouve dans votre répertoire de travail du précédent TME.
Si le fichier ne s'ouvre pas correctement dans XPath Explorer, commenter ou effacer la ligne DOCTYPE
Pour chaque requête : *Peut-on l'exprimer en une seule expression xpath ? Si oui, donner la réponse, sinon expliquer pourquoi.
- tous les menus à moins de 50 EUR
- les menus des restaurants 2 ou 3 étoiles
- le nom des villes dans le département 69
- le nom des restaurants à Lyon
- le nom des restaurants dans le département 75
- le plus beau monument des villes ayant au moins 1 restaurant 3 étoiles
- les restaurants 3 étoiles fermés le dimanche
- les restaurants ouverts le lundi
- (a) le 2ème menu de chaque restaurant.
(b) le 2ème menu du guide touristique. - (a) le 2ème menu à moins de 150 EUR de chaque restaurant.
(b) Le 2ème menu de chaque restau ssi il vaut moins de 150 EUR. - les restaurants dans une ville sans plus beau monument
- les villes avec au moins un restaurant 3 étoiles
- les villes avec au moins deux restaurants
- les villes sans restaurant 3 étoiles
#le nom des restaurants qui ont au moins un menu dont le prix est égal au tarif du plus beau monument de la ville (du restaurant en question) ?
Remarques
- Pour la 9b, ne pas utiliser l'axe child
Pour la 15, une solution consiste à utiliser la fonction id(), à condition d'avoir déclaré dans votre DTD qu'une ville est identifiée par son nom.
- ex, l'expression id('Paris') correspond à l'élément ville dont l'attribut nom est 'Paris'
- dans base1.dtd : <!ATTLIST ville nom ID #REQUIRED>
- Précision concernant la fonction name(expr) : elle prend en paramètre une expression xpath.
- La fonction number() convertit une chaîne en valeur numérique.
- La fonction text() extrait le contenu textuel d'un élément
Exercice 2 : Films
Les données se trouvent dans le fichier Film.xml ou (Film.txt). Les questions sur les films sont dans le poly de TD