TD 5 - Xpath

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 13

XML - XPATH

MP1-GL / TD
ISIMM

Technologie XML
Série 05 – XPATH - Enoncé
***

Exercice N°1

1- Quel est le type de données de la racine dans XPath et comment est-il défini ?
2- Quels sont les types de nœuds principaux dans XPath et comment les distingue-t-on ? Donnez
un exemple de chaque type de nœud.
3- Quels sont les types de valeurs atomiques dans XPath et comment sont-ils déterminés ?
Donnez des exemples de valeurs atomiques.
4- Pouvez-vous expliquer l'opérateur '?' dans le contexte du typage XPath et fournir un exemple
d'utilisation ?
5- Expliquez la différence entre les opérateurs '*' et '+' en termes de typage XPath.

Exercice N°2

D’après ce document xml :


1- Quelle est la valeur textuelle du titre du premier livre ?
2- Quel est le type de données du prix du premier livre ?
3- Quelle est la valeur typée de la date de publication du deuxième livre ?
4- Sélectionnez le titre de tous les livres dont le prix est inférieur à 18.
en utilisant différentes fonctions XPath telles que number(), name(), etc.
5- Quel est le nombre total de livres dans le magasin ?
6- Quel est l'ID du premier livre ?
7- Quel est le nom de l'auteur du deuxième livre ?
8- Quelle est la date de publication du premier livre ?

1
XML - XPATH
MP1-GL / TD
ISIMM

Exercice N°3

❖ Partie 1 (Quiz) :

❖ Partie 2 :

Nœud courant est : <PastriesSection>

1- Quels sont les descendants de l’element <PastriesSection>?


2- Quels sont les enfants(child) de l’élément courant ?
3- Quels sont les preceding-sibling ?

2
XML - XPATH
MP1-GL / TD
ISIMM

4- Nœud <pastryshop> désigne quoi ?


5- Quel attributs est associé au nœud <cake> et quelle est sa valeur ?

❖ Partie 3 :
Écrivez des expressions XPath pour sélectionner les éléments suivants :
1- Le titre de tous les gâteaux « cakes »
2- Les noms de tous les produits a un prix < 2000 :
3- Le prix du cake "weeding"
4- Les catégories de tous les produits
5- Tous les éléments qui sont enfants directs de <pastryshop> ?
6- Combien de croissants amandes sont disponibles ?
7- Quel est le poids du bun ?
8- Quel est le nom du premier produit de la section de pâtisseries ?
9- Quelle est la quantité totale de tous les produits de la section de pâtisseries a l’aide sum()?

3
XML - XPATH
MP1-GL / TD
ISIMM

❖ Partie 4 (Fonctions sur les chaînes de caractères)

1- Écrivez une expression XPath qui retourne la longueur de la chaîne de caractères 'Série de revision'
2- Écrivez une expression XPath qui concatène les chaînes de caractères 'You ', 'can ', 'do ', 'it'

NB : en utilisant les fonctions string-length() et concat()

Exercice N°4

Partie1 :
Soit le fichier XML présenté schématiquement ci-dessous :

4
XML - XPATH
MP1-GL / TD
ISIMM

Ecrivez les requêtes XPath suivantes :


1)Sélectionne le premier élément stagiaire qui est l'enfant de l'élément de stagiaires.
2)Sélectionne le dernier élément ‘stagiaire’ qui est l'enfant de l'élément de stagiaires.
3) Sélectionne tous les éléments ‘stagiaire’ qui ont un élément de note avec une valeur supérieure à 10.
4)Sélectionne tous les éléments 'nom’ des éléments 'stagiaire qui ont un élément de note avec une valeur
inférieur à 10.
5)Sélectionne tous les éléments ‘stagiaire’ qui ont au moins un attribut
6)sélectionner tous les éléments du document
7)Sélectionne tous les éléments ‘employe’ qui ont un attribut nommé « numi »
8) Sélectionne tous les éléments ‘employe ‘qui ont un élément « typecontrat » avec la valeur cdd

Partie2 :
1) Ecrire une requête qui permet de vérifier si le stagiaire "Leila Mohamed" a une note supérieure ou
égale à 10 dans le module 100 ? Si c'est le cas, affichez "Réussi", sinon affichez "Échec".
2) Ecrire une requête qui permet de vérifier est-ce qu'au moins un employé de l'entreprise a un contrat
de type ‘ cdd ‘ ? (En utilisant la Quantification existentielle)
3) Ecrire une requête qui permet de vérifier est-ce que le nom du premier stagiaire est identique au
nom du deuxième stagiaire ou non ? (En utilisant l’Opérateur de comparaison de nœuds :is)

Partie3 :
Compléter le tableau suivant :
Opérateur Action Syntaxe Exemple
For Itération for $i in E1 return ………………………
E2
Somme Quantification ……………………… some $i in 0 to 5
existentielle satisfies $i > 4
Every ………………………. every $i in E1 every $i in 0 to 5
satisfies E2 satisfies $i > 4
To …………………….. E1 to E2 1 to 5
……………………… Comparaisons E1 = E2 $x < $y
générales

5
XML - XPATH
MP1-GL / TD
ISIMM

Technologie XML
Série 05 – XPATH - Correction
***

Exercice N°1

1- Le type de données de la racine dans XPath est le type de nœud document, défini comme
document-node().

2- Les principaux types de nœuds dans XPath sont : élément (element()), attribut (attribute()),
texte (text()), commentaire (comment()), et instruction de traitement (processing-
instruction()).

Par exemple, <book>, id="001", Deep Work, <!-- Commentaire -->, <?xml-stylesheet?>.

3- Les valeurs atomiques comprennent les types de données primitifs tels que les chaînes de
caractères, les nombres, les booléens, les dates, etc. Par exemple, "Deep Work", 44.95, true,
2016-01-05.

4- L'opérateur '?' permet de vérifier si un élément est présent dans un chemin XPath.

Par exemple, /bookstore/book[1]? vérifie si le premier livre existe dans le document.

5- L'opérateur '*' sélectionne zéro ou plusieurs occurrences d'un élément, tandis que l'opérateur
'+' sélectionne une ou plusieurs occurrences.

Exercice N°2

1- La valeur textuelle du titre du premier livre est " Deep Work "
2- Le type de données du prix du premier livre est xsd:decimal
3- La valeur typée de la date de publication du deuxième livre est xsd:date("1997-12-16").
4- /bookStore/book[number(price) < 18]/title

5- Utilisation de la fonction count() : count(/bookStore/book)


6- Utilisation de la fonction number() : number(/bookStore/book[1]/@id)
7- Utilisation de la fonction name() : name(/bookStore/book[2]/author)
8- Utilisation de la fonction string() : string(/bookStore/book[1]/publish_date)

6
XML - XPATH
MP1-GL / TD
ISIMM

Exercice N°3 (Makhlouf Ranim – ranimmakhlouf159@gmail.com)

❖ Partie 2 :
1)

2)

3)

4) <PastryShop> : racine
5) L'attribut associé au nœud <cake> est category et sa valeur dépend du type de gâteau. Par
exemple, pour le gâteau de mariage (<cake category="weeding">), la valeur est "weeding". pour
<cake category="birthday"> la valeur est "birthday".

❖ Partie 3 :
1- //cake/title
2- //*[price < 2000]/name
3- //cake[@category='weeding']/price ou /pastryshop/cakesection/cake[@category='weeding']/price
7
XML - XPATH
MP1-GL / TD
ISIMM

4- //*/@category
5- /pastryshop/*
6- /pastryshop/pastriesSection/croissants[@category='amandes']/quantity
7- /pastryshop/pastriesSection/Bun/weight
8- /pastryshop/pastriesSection/*[1]/name
9- sum(/pastryshop/pastriesSection/*/quantity)
❖ Partie 4
1- string-length('Série de revision')
2- concat('You ', 'can ', 'do ', 'it')

Exercice N°4 (Wiem Nabi – wiemnabi5@gmail.com)


1) //stagiaires/stagiaire[1]

Ou bien :
//entreprise/stagiaires/stagiaire[1]

2) Il faut utiliser last() : //stagiaires/stagiaire[last()]

8
XML - XPATH
MP1-GL / TD
ISIMM

Ou bien //entreprise/stagiaires/stagiaire[last()]

3) //stagiaire[note>10]

Ou bien //stagiaires/stagiaire[note>10]

4) //stagiaire[note<10]/nom

ou bien //stagiaires/stagiaire[note<10]/nom
9
XML - XPATH
MP1-GL / TD
ISIMM

5) //stagiaire[@*]

ou bien //stagiaires/stagiaire[@*]

10
XML - XPATH
MP1-GL / TD
ISIMM

6) //*

7) //employes/employe[@numi]

ou bien//employe[@numi]

11
XML - XPATH
MP1-GL / TD
ISIMM

8) //employes/employe[typecontrat="cdd"]

ou bien //employe[typecontrat="cdd"]

12
XML - XPATH
MP1-GL / TD
ISIMM

Parite2 :
1) if (/entreprise/stagiaires/stagiaire[nom='mohamed' and prenom='leila']/note[@module='100'] >= 10)
then 'Réussi' else 'Échec'

Ou bien : if (//stagiaires/stagiaire[nom='mohamed' and prenom='leila']/note[@module='100'] >= 10) then


'Réussi' else 'Échec'

2) some $employe in //employes/employe satisfies $employe/typecontrat = 'cdd'

Ou bien : some $employe in //entreprise/employes/employe satisfies $employe/typecontrat = 'cdd'

3) //employes/employe[1]/nom is //employes/employe[2]/nom
🡺 donne false car il s'agit de deux nœuds différents bien que les deux attributs aient même nom

Ou bien : //entreprise/employes/employe[1]/nom is //employes/employe[2]/nom

Partie3 :
Opérateur Action Syntaxe Exemple
For Itération for $i in E1 return for $i in 1 to 5
E2 return $i * $i
Somme Quantification some $i in E1 some $i in 0 to 5 satisfies
existentielle satisfies E2 $i > 4
Every Quantification universelle every $i in E1 every $i in 0 to 5 satisfies
satisfies E2 $i > 4
To Intervalle E1 to E2 1 to 5
= != < Comparaisons générales E1 = E2 $x < $y

13

Vous aimerez peut-être aussi