Exercices avec solution
Exercice 1
On garde l'arbre donné dans le devoir 2, dont la forme serialisé est:
<A><B><E></E><D><F></F><G></G></D><D><G></G></D></B><B><E></E><D></D>
</B><B></B><C></C><D><F></F><G></G></D><B><E></E><D><G></G></D></B></A>
Trouver l'expression xpath qui retourne:
1- tous les noeuds qui ont au moin deux fils.
2- la valeur de l'attribut nom de tous les noeuds qui ont au moin deux fils.
3- tous les noms des noeuds qui ont au moin deux fils.
4- tous les noeuds qui sont frere d'un noeuds D.
5- tous les noms des noeuds qui sont frere d'un noeud D.
6- tous les noeuds qui sont frere d'un noeuds D et petit fils d'un noeud B.
7- tous les noms des noeuds qui sont frere d'un noeud D et petit fils d'un noeud B.
8- pour chaque noeud, afficher le nom de l'element, la valeur des attributs nom et age.
9- les cousins du noeud /A/B[1]/D[1]
Exercice 2:
Toujours en gardant le meme arbre que celui donnée dans l'exercice 1, quel sont les reponses
données par les expression xpath suivantes:
1- /A/C/following::*/name()
2-/A/B/D/ancestor::*/name()
3- /A/B/D/ancestor::*/concat(name(),' position ', position(),'; ')
4- /A/concat(name(),' nombre de fils ' ,count(./*))
Exercice 1 solution
1- tous les noeuds qui ont au moin deux fils.
//*[count(./*)>=2]
2- la valeur de l'attribut nom de tous les noeuds qui ont au moin deux fils.
//*[count(./*)>=2]/@nom
3- tous les noms des noeuds qui ont au moin deux fils.
//*[count(./*)>=2]/name()
4- tous les noeuds qui sont frere d'un noeuds D.
//*[./following-sibling::D | ./preceding-sibling::D]
5- tous les noms des noeuds qui sont frere d'un noeud D.
//*[./following-sibling::D | ./preceding-sibling::D]/name()
6- tous les noeuds qui sont frere d'un noeuds D et petit fils d'un noeud B.
//*[(./following-sibling::D | ./preceding-sibling::D ) and ../../B]
7- tous les noms des noeuds qui sont frere d'un noeud D et petit fils d'un noeud B.
//*[(./following-sibling::D | ./preceding-sibling::D ) and ../../B]/name()
8- pour chaque noeud, afficher le nom de l'element, la valeur des attributs nom et age.
//*/concat(name(), ', @nom= ',@nom,', @age= ',@age)
9- les cousins du noeud /A/B[1]/D[1]
/A/B[1]/following-sibling::*/*
Exercice 2 solution:
quel sont les reponses données par les expression xpath suivantes
1- /A/C/following::*/name()
DFGBEDG
2-/A/B/D/ancestor::*/name()
ABBB
3- /A/B/D/ancestor::*/concat(name(),' position ', position(),'; ')
A position 1; B position 2; B position 3; B position 4;
4- /A/concat(name(),' nombre de fils ' ,count(./*))
A nombre de fils 6