IBD-Correction Serie 2 Question 1 : XPath
1. Les titres de tous les articles
Solution:
//article/titre
_
2. Les titres des articles de la première page
Solution:
//article[pages/page=’1’]/titre
3. Les titres des articles dont le résumé contient le mot "retraite" (utilisez le predicat contains(s1,s2) qui est vrai si s1 est une contient s2).
Solution:
//article[contains(resume,’retraite’)]/titre
_
4. Les titres des articles de la dernière page (cherchez d’abord les éléments de type page avec la plus grande valeur)
Solution:
//article[pages/page[not(. < //page)]]/titre
Question 2 XQuery
1. Tous les auteurs d’articles (sans duplicats). La DTD du résultat est la suivante (tous les éléments non spécifiés
sont de type #PCDATA) :
<!ELEMENT resultat (auteur)* >
Solution:
<resultat>
{for $a in distinct-values(document("journal.xml")//auteur) return $a}
</resultat>
_
2. Tous les auteurs avec leurs articles. La DTD du résultat est la suivante (tous les éléments non spécifiés sont
de type #PCDATA) :
<!ELEMENT resultat (auteur)* >
<!ELEMENT auteur (nom, article*) >
<!ELEMENT article (titre, resume) >
Solution:
<resultat>
{for $a in distinct-values(document("journal.xml")//auteur) return <auteur>
<nom> {$a/text()} </nom>
{ for $ar in document("journal.xml")//article[auteur = $a]
return <article>
{$ar/titre, $ar/resume }
</article> }
</auteur> }
</resultat>