Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Outils pour la TEI

Les éditeurs de code en général ou plus ou moins wysiwyg sont développés ailleurs.

Il semble, à en juger par les forums, que l’éditeur oXygen soit presque incontournable en XML. Personnellement, j’ai pas pas eu le courage du nécessaire apprentissage qui permettrait de l’apprécier et, après avoir payé un an de licence, j’ai abandonné (d’autant plus qu’entre-temps le prix avait augmenté) ; j’avais d’abord un peu appris Serna, mais immédiatement abandonné à cause de la limitation à P4 (et depuis il a cessé d’être gratuit). Je tisse donc mon code TEI P5 à la main avec Bluefish (et des snippets personnalisés).

Je résous les inclusions avec un processeur simple en XSL version 2. Comme je sais que mes inclusions sont toujours en XML et qu’elles existent, je ne dois pas me préoccuper d’inclusions texte ou d’un fallback. J’ai appelé mon processeur simple XIncluder (avec un r final pour lui donner une forme verbale) 22. Je fais donc

saxon -o:TEI-resolved.xml TEI-base.xml XIncluder.xsl

Je vérifie par xmllint --noout TEI-resolved.xml que le fichier résultant est du XML bien formé et je valide la conformité à un schéma Relax NG pour TEI 23 avec jing (parce que xmllint n’en sort pas) :

jing  tei_all.rng  TEI-resolved.xml

Je transforme mon TEI (surtout en XHTML) avec Saxon 24 à partir des transformations distribuées par Oxford (que j’importe dans un fichier de préférences pour le projet). Ça n’a rien de sorcier :

saxon -o:index.html  TEI-resolved.xml  projet.xsl

Éditer en TEI un texte de structure très hiérarchisée, avec des citations et des références bibliographiques, des notes, un index des mots-clefs, des tableaux, des compositions en SVG, des formules en MathML, c’est bien sûr un gros travail. Par contre, un texte littéraire avec un seul niveau de subdivision — des chapitres — et tout au plus quelques mots mis en évidence par des italiques, si on a le texte brut, c’est très simple, pour autant que la rupture des alinéas y soit bien visible (par \n\n, par exemple). Au lieu de sélectionner les alinéas pour les baliser en <p>Lorem ipsum…</p>, il vaut mieux remplacer automatiquement toutes les ruptures d’alinéas par </p>\n<p> et faire la main les quelques corrections nécessaires, aux divisions, aux titres et aux extrémités du fichier.

J’ai trouvé chez Gutenberg Australie le texte d’Orlando de Virginia Woolf, qui me semble justement arrivé en fin de droits, et j’en ai tiré avec Bluefish en un gros quart d’heure un livre en TEI, donc aussi en pages web et en ePub. La forme en pages web est dans le dossier Orlando où vous trouverez aussi la source en TEI ../edit/Orlando/Orlando.xml et le livre électronique au format ePub ../edit/Orlando/Orlando.epub (améliorable), à afficher si vous le pouvez ou à télécharger pour votre smartphone ou votre tablette.

Notes
1.
C’était l’initiative d’un informaticien de l’université d’Oxford, Sebastian Rahtz, qui n’est plus. Il n’était pas seulement très bon informaticien, il était aussi particulièrement serviable et amical. Il est parti trop tôt (1955-2016). Tous ceux qui le connaissaient le regrettent.
21
Avec les transformations classiques (les stylesheets de la TEI), on peut transformer en XHTML un travail en TEI pour le publier. On peut dans la transformation l’éclater en pages à un niveau de division choisi et obtenir automatiquement les tables des matières et liens de navigation de la table ou d’une page à l’autre. On peut même indexer automatiquement des termes. On n’a rien de ça avec TEI Boilerplate, qui convient donc mal à un très long livre ou, plus généralement, quand on veut une facilité de navigation. Comparer par exemple mon exercice sur l’Orlando de Virginia Woolf directement avec TEI Boilerplate ou après transformation en XHTML.
22
La spécification XInclude impose que les processeurs ajoutent des attributs xml:base, ce qu’on appelle base URI fixup. (Pour plus d’information, chercher cette expression sur le Web.) Mais les chemins sont relatifs au dossier où je mettais mes fichiers à inclure et ces chemins n’ont pas de sens dans mon site web. Mon processeur XIncluder est conforme à mes besoins. Il ne se conforme pas à la spécification XInclude sur ce point. La commande xmllint --output TEI-resolved.xml --xinclude TEI-base.xml constitue un très bon processeur, conforme, mais cela précisément ne m’arrange pas pour le Web.
23
Je valide avec le schéma le plus complet, TEI_allPlus (www.tei-c.org/Guidelines/Customization/). Si le validateur dit qu’un élément n’est pas attendu à tel endroit, il propose une longue liste de ceux qu’on attendrait plutôt. Je serais donc mieux inspiré de créer, avec les outils que TEI propose pour ça, un schéma personnalisé pour mon usage de TEI. C’est plus important encore si on utilise un éditeur qui suggère les éléments : une liste trop longue est peu intéressante.
24
Comme processeur XSLT, xsltproc est certainement plus léger et plus rapide, mais il ne traite que la version 1 de XSL.
Dominique Meeùs . Date: 2011… 2016