Tous les éléments du document (c’est-à-dire, tous les nœuds qui sont des
éléments), incluant l’EPHN.
//@*
-Réponse
Toutes les spécifications d’attribut du document.
//@courriel
-Réponse
Toutes les spécifications d’attribut dans lesquelles le nom d’attribut est
"courriel".
//emph
-Réponse
Tous les éléments nommés (c.-à-d. dont l’identificateur générique est)
"emph".
//emph/emph
-Réponse
Tous les éléments nommés "emph" qui sont enfants directs d’un
autre élément "emph".
//destinataires/nom
-Réponse
Tous les éléments "nom" qui sont enfants directs d’un élément
"destinataires".
//corps/*
-Réponse
Tous les éléments (peu importe leur identificateur générique) qui sont
enfants directs d’un élément "corps".
//corps//*
-Réponse
Tous les éléments qui sont descendants (pas nécessairement directs) d’un
élément "corps".
//*[nom]
-Réponse
Tous les éléments qui sont parents directs d’un élément
"nom".
//*[emph]
-Réponse
Tous les éléments qui sont parents directs d’un élément
"emph".
//*[1]
-Réponse
Tous les éléments qui sont premiers de fratrie.
//*[last()]
-Réponse
Tous les éléments qui sont derniers de fratrie.
/*
-Réponse
L’élément de plus haut niveau du document (l’élément-document).
/*/*
-Réponse
Tous les éléments qui sont au premier niveau hiérarchique sous l’élément de
plus haut niveau.
/*/*/*
-Réponse
Tous les éléments qui sont au deuxième niveau hiérarchique sous l’élément
de plus haut niveau.
† /
-Réponse
Le nœud-racine du modèle XPath du document. Le nœud-racine est celui
« ajouté » au-dessus de l’EPHN. Comme ce nœud est au-dessus de ce qu’oXygen
peut montrer dans l’onglet du document, il est identifié dans la liste de
résultats par la mention #document, sous Description, et si on clique sur ce résultat, il n’y a aucun
déplacement du curseur dans l’onglet du document.
† //*[*/nom]
-Réponse
Tous les éléments qui sont « grand-parents » d’un élément nom
(dans le document exemple, il n’y a que mémo qui réponde à ce
critère).
† //*[*[nom]]
-Réponse
Équivalent à l’exemple précédent.
† //*[not(*)]
-Réponse
Éléments qui n’ont pas de sous-élément.
//lisibilité[.='2']
-Réponse
Tous les éléments "lisibilité" dont le contenu textuel est
"2".
//urgence[.='2']
-Réponse
Tous les éléments "urgence" dont le contenu textuel est "2".
Illustre que ce n’est pas une erreur si une expression XPath ne retourne aucun
nœud.
//*[.='2']
-Réponse
Tous les éléments dont le contenu textuel est "2".
//*[.='septembre']
-Réponse
Tous les éléments dont le contenu textuel est
"septembre".
//*[.='']
-Réponse
Tous les éléments dont le contenu textuel est vide.
† //*[.='' and not(*)]
-Réponse
Tous les éléments dont le contenu textuel est vide et qui n’ont
aucun sous-élément.
//@*[.='signature']
-Réponse
Toutes les spécifications d’attribut dont la valeur d’attribut est
"signature".
//*[@rôle='signature']
-Réponse
Tous les éléments comportant un attribut "rôle" dont la valeur
est "signature".
//*[not(@courriel='jr@jr.org')]
-Réponse
Tous les éléments ne comportant PAS un attribut "courriel"
dont la valeur est "jr@jr.org". Retourne entre autres tous les
éléments qui n’ont simplement pas d’attribut courriel.
//*[@courriel!='jr@jr.org']
-Réponse
Tous les éléments comportant un attribut "courriel" dont la
valeur n'est PAS "jr@jr.org".
† //*[@courriel[.!='jr@jr.org']]
-Réponse
Équivalent au numéro précédent.
//*[contains(.,'ro')]
-Réponse
Tous les éléments dont le contenu textuel contient quelque part la chaîne
"ro". Rappelons-nous que le contenu textuel d’un élément fait
aussi partie du contenu textuel de tous ses ancêtres.
//*[contains(.,'ro') or contains(.,'Ro')]
-Réponse
Tous les éléments dont le contenu textuel contient quelque part une des
chaînes "ro" ou "Ro". Le résultat est différent du
numéro précédent, car la casse est significative.
//text()
-Réponse
Tous les nœuds textuels.
//text()[contains(.,'tr')]
-Réponse
Tous les nœuds textuels contenant quelque part la chaîne "tr".
//text()[contains(.,'ie')]
-Réponse
Tous les nœuds textuels contenant quelque part la chaîne
"ie".
//*[count(nom) > 2]
-Réponse
Éléments qui ont au moins trois sous-éléments nom.
//*[count(nom) != 2]
-Réponse
Éléments qui n’ont pas exactement deux sous-élément nom.
Rappel : "!=" signifie "est différent de".
//*[count(nom[@courriel]) >= 2]
-Réponse
Éléments qui ont au moins deux sous-éléments nom avec un
attribut courriel. ">=" signifie "plus grand ou égal à".
//*[1]
-Réponse
Tous les éléments qui sont premiers de fratrie.
//*[last()]
-Réponse
Tous les éléments qui sont derniers de fratrie.
//*[position() != last()]
-Réponse
Tous les éléments sauf les derniers de fratrie.
//*[name()='nom']
-Réponse
Tous les éléments dont le nom d’élément est "nom" (équivalent
à //nom).
//*[name()!='nom']
-Réponse
Tous les éléments dont le nom d’élément n’est pas
"nom".
//*[name()='normal' or name()='nom']
-Réponse
Tous les éléments dont le nom d’élément est soit "nom", soit
"normal".
† //comment()
-Réponse
Tous les nœuds commentaires.
† //*[not(name()='cc')]/comment()
-Réponse
Tous les nœuds commentaires qui ne sont pas enfants d’un élément
cc.
count( //text() )
-Réponse
Nombre de nœuds textuels dans le document.
count( //text()[contains(.,'tr')] )
-Réponse
Nombre de nœuds textuels qui contiennent la chaîne "tr" dans
le document.
count(//*)
-Réponse
Nombre d’éléments dans le document.
count(//@*)
-Réponse
Nombre de spécifications d’attribut dans le document.
† count(//comment())
-Réponse
Nombre de commentaires dans le document.
Rédaction d’expressions XPath
Rédigez une expression XPath pour chacune des tâches suivantes. Vérifiez le
fonctionnement de votre solution en l’exécutant dans oXygen.
Extraire le dernier paragraphe (élément par) qui est enfant direct
de corps.
-Réponse
//corps/par[last()]
Extraire tous les éléments qui contiennent directement un sous-élément
normal.
-Réponse
//*[normal]
Extraire tous les éléments qui contiennent directement ou indirectement un
sous-élément emph.
-Réponse
//*[.//emph]
Extraire tous les éléments emph qui contiennent directement un
sous-élément emph.
-Réponse
//emph[emph]
Extraire tous les éléments emph qui sont enfants directs d’un
élément emph.
-Réponse
//emph/emph
† Extraire tous les éléments dont une valeur d’attribut contient la chaîne
"si".
-Réponse
//*[@*[contains(., 'si')]]
Extraire tous les éléments qui sont enfants immédiats d’un paragraphe
(par).
-Réponse
//par/*
† Extraire tous les éléments dont une valeur d’attribut contient la chaîne
"gn".