Création de filtres x-path

Le moteur de recherche du site propose quelques filtres, sous forme de cases à chocher, permettant de limiter les requêtes à certaines zones comme les vers ou la prose, les citations ou les passages traduits. Mais ces possibilités d’affinages ne recouvrent pas nécessairement tous les besoins qui peuvent se présenter lors d’une recherche, c’est pourquoi nous avons installé un module plus avancé, donnant la possibilité de créer des filtres à l’aide d’un langage de requêtes nommé X-Path.

Les requêtes X-Path permettent de retrouver tout élément dans un document structuré par balisage, tel que les fichiers XML. Cela suppose de savoir comment le document est structuré. Dans le cas du projet Fontaine, tout est structuré par la TEI. Les documents sources sont accessibles en téléchargement. Voici quelques éléments essentiels qui structurent le texte.

  • front Ensemble des avant-textes, comprenant la page de titre, notée titlePage.
  • body Le corps du texte.
  • back Les paratextes de fin.
  • div Les grandes divisions du texte : lettres, recueils, pièces. L’attribut @type précise la nature de cette division. Ex : @type="poem".
  • head Le titre d’une division.
  • opener L’ouverture d’une lettre, contenant généralement l’adresse au destinataire.
  • closer La fermeture d’une lettre, contenant généralement une formule de politesse et la signature de l’auteur.
  • p Le paragraphe.
  • l Le vers.
  • lg Le groupe de vers (strophique ou non).
  • list La liste ; dans le projet Fontaine, il s’agit surtout de tables ou d’index.
  • item Les items de la liste.

D’autres éléments, moins structurants, permettent de caractériser des passages du texte.

  • quote La citation.
  • seg Le segment, dont la nature est donnée par l’attribut @type. Par exemple, @type="translation" = passage de traduction, @type="glose" = passage de commentaire ou de glose.
  • hi La mise en valeur, typographique le plus souvent, d’un passage du texte. Cet élément est généralement accompagné de l’attribut @rend. Ex. @rend="italic". Notons que l’attribut @rend peut s’appliquer à la plupart des éléments. Par exemple, un groupe de vers en italiques sera complété par le même attribut.

L’élément premier, TEI est l’élément racine. Tous les autres éléments sont nécessairement imbriqués dans un autre. On peut donc représenter l’ensemble du document comme une arborescence, que les requêtes x-path peuvent interroger. Dans ce schéma, on dira que teiHeader et text sont les enfants de TEI. Ou encore que les div et les quote sont tous descendants de text. Suivant la même logique, text est un ancêtre des div et des quote.

Tout élément qui comprend du texte est considéré de la même manière comme un ancêtre de ce texte. Toujours suivant le même schéma, "première Sentence" a pour premiers ancêtres : head (c’est un titre) et div (ce titre appartient à une grande division). Créer un filtre x-path, pour une recherche de texte, consiste donc à préciser quel est son ancêtre. Dans ce langage, on note l’ancêtre ancestor:: suivi du nom de l’élément. Si on veut spécifier que l’occurrence doit avoir head pour ancêtre (donc faire partie d’un titre), on notera ancestor::head.

Il est possible de présiser encore la recherche à l’aide d’un prédicat, dont la fonction est précisément de caractériser l’élément recherché. Il est mis entre crochets après le nom de l’élément. Ainsi, la requête ancestor::seg[@type="glose"] permet de cibler les mots dont l’ancêtre est un segment de type glose, c’est à dire de rechercher des mots dans le commentaire personnel de Fontaine. Par ailleurs, il est possible de rechercher tout type d’élément avec le symbole * ; en ce cas c’est le prédicat qui donnera l’information essentielle. Ex. ancestor::*[@rend="italic"], permet de cibler tous les passages mis en italique.

Pour aller plus loin, on peut se référer au tutoriel de w3shcools. Enfin, il est conseillé, pour des manipulations plus avancées, de télécharger les fichiers TEI mis à disposition sur le site.

Paul Gaillardon