ConTeXt/Travailler avec XML-TEI dans ConTeXt
|
Part. V, ch. 13 • Travailler avec TEI-XML dans ConTeXt • Sommaire |
Travailler avec XML-TEI dans ConTeXt
[modifier | modifier le wikicode]- Comprendre pourquoi et comment utiliser XML et TEI avec ConTeXt ;
- Distinguer deux approches complémentaires :
- une méthode simple / impérative (XML minimal + ConTeXt) ;
- une méthode intégrale (TEI complet + ConTeXt comme moteur de composition) ;
- Disposer d’un exemple minimal fonctionnel (Cicéron simple)
- S’orienter vers des exemples plus avancés (ex: Iliade, Tusculanes, textes parallèles Platon / Cicéron).
- introduire le chaînage XML → Lua → ConTeXt.
ConTeXt sait travailler directement avec des fichiers XML, comme on l'a vu précédemment pour la confection d'apparats critiques dans le chapitre 9 de la Partie III : Apparat critique et TEI et suivants. On peut donc :
- séparer le texte (stocké en XML / TEI) de la mise en page (définie en ConTeXt) ;
- réutiliser la même source pour plusieurs sorties : PDF critique, PDF de travail, version web, etc. ;
- automatiser des tâches répétitives (index, notes, apparat, lemmatisation…).
Mais il faut être lucide : le travail XML-TEI + ConTeXt est technique. Il suppose un minimum de familiarité avec :
- la structure d’un document XML (balises, attributs, hiérarchie) ;
- la grammaire TEI (au moins quelques éléments de base) ;
- le fonctionnement de ConTeXt avec XML (module `xml`, commandes `\xmlload`, `\xmltext`, `\xmlsetups`, etc.).
Cette page présente ainsi :
- une méthode simple, accessible, pour commencer ;
- une méthode intégrale, plus proche de la « vraie » TEI, pour des projets d’édition savante.
Des exemples complets (Iliade, Cicéron-Tusculanes, textes parallèles) seront décrits dans des pages séparées, afin de ne pas surcharger cette introduction.
1. Pourquoi utiliser XML-TEI avec ConTeXt ?
[modifier | modifier le wikicode]1.1 TEI en quelques mots
[modifier | modifier le wikicode]TEI (Text Encoding Initiative) est un ensemble de recommandations pour encoder des textes sous forme XML :
- œuvres littéraires, correspondances, sermons, traités philosophiques ;
- manuscrits, éditions critiques, variantes, apparat ;
- corpus destinés à la recherche (linguistique, historique, philologique, etc.).
TEI met l’accent sur le sens plutôt que sur l’apparence :
- les balises décrivent ce que c’est (un nom de personne, un lieu, une note, une variante),
et non comment cela doit s’afficher (gras, italique, etc.).
ConTeXt, de son côté, fournit :
- un moteur typographique puissant pour la composition finale (PDF, impression) ;
- un langage de description souple pour définir la mise en page, les styles, les notes, les index, etc.
L’idée générale :
- TEI = couche sémantique (XML)
- ConTeXt = couche typographique (PDF)
| Astuce |
Pour un projet sérieux (édition critique, corpus de recherche), on gagne en pérennité :
on garde les données en TEI-XML, et on refait les mises en page en ConTeXt au besoin. |
1.2 Cas d’usage typiques
[modifier | modifier le wikicode]- Édition critique d’un texte ancien ou moderne (avec variantes, apparat, notes).
- Corpus littéraires / historiques pour la recherche, avec balisage sémantique (noms de personnes, lieux, dates…).
- Projets d’humanités numériques (édition en ligne + version PDF imprimable).
- Thèses ou ouvrages savants où l’on souhaite séparer proprement données et mise en page.
2. Deux approches complémentaires
[modifier | modifier le wikicode]Dans un projet réel, on rencontre souvent deux manières d’utiliser XML avec ConTeXt :
- une approche simple / impérative : XML minimal + ConTeXt qui va chercher « à la main » ce qui l’intéresse ;
- une approche intégrale : TEI bien structuré, ConTeXt configuré pour interpréter directement les balises.
Les deux sont utiles. On peut commencer par la première, puis évoluer vers la seconde.
2.1 Méthode simple : XML impératif
[modifier | modifier le wikicode]Principe :
- on écrit un fichier XML relativement simple (structure claire, quelques balises) ;
- on utilise ConTeXt pour :
- charger le fichier (`\xmlload`) ;
- extraire des morceaux (`\xmltext` avec un chemin XPath simple) ;
- éventuellement appliquer quelques traitements (`\xmlsetups`).
C’est l’approche idéale pour :
- tester la chaîne XML → ConTeXt → PDF ;
- explorer pas à pas le module `xml` de ConTeXt ;
- créer de petits prototypes avant de passer à TEI complet.
On reste proche d’une logique « impérative » :
- « Prends ce bout de XML, mets-le en titre ; prends tel paragraphe, mets-le en corps de texte. »
2.2 Méthode « intégrale » : TEI + ConTeXt en profondeur
[modifier | modifier le wikicode]Principe :
- on encode le texte entièrement en TEI : divisions, lignes, variantes, notes, noms propres, lemmes, etc. ;
- ConTeXt ne « pioche » plus seulement des morceaux : il interprète les balises.
- on associe chaque balise ou famille de balises TEI à un setup ConTeXt :
- par exemple, `<persName>` → petites capitales + index ;
- `<placeName>` → italique + index géographique ;
- `<note>` → note de bas de page ;
- `<app>`, `<lem>`, `<rdg>` → apparat critique, etc.
On se rapproche ainsi d’une chaîne éditoriale complète :
- TEI (source savante) → ConTeXt (règles typographiques) → PDF (édition critique ou de lecture)
Cette approche est plus exigeante :
- maîtrise de TEI (au moins un sous-ensemble cohérent) ;
- compréhension des commandes ConTeXt pour XML (`\xmlload`, `\xmlsetsetup`, `\startxmlsetups`, etc.) ;
- organisation rigoureuse des fichiers.
Un projet type pourra ressembler à ceci :
projet-tei/
data/
iliad-sample-tei.xml
tusculanes-tei.xml
tex/
iliad-tei-demo.tex
tusculanes-tei.tex
styles/
env-critique.tex (mise en page générale)
build/
pdf/
| Astuce |
Il est souvent prudent de commencer par un petit fragment (10-20 lignes) entièrement encodé et typographié, avant d’étendre la méthode à tout un livre. |
3. Exemple minimal : « Cicéron simple » (méthode impérative)
[modifier | modifier le wikicode]Cet exemple illustre :
- un TEI très réduit (édition + traduction) ;
- l’extraction de textes via `\xmltext` ;
- l’utilisation de `\xmlsetups` pour traiter quelques balises : `persName`, `placeName`, `note`.
3.1 Fichier XML : cicero-sample-tei.xml
[modifier | modifier le wikicode]<?xml version="1.0" encoding="UTF-8"?>
<TEI>
<text>
<body>
<div type="edition" xml:lang="la">
<head>Exemplum Ciceronis</head>
<p>
<persName>Marcus Tullius Cicero</persName>
in
<placeName>Arpino</placeName>
natus est.
<note>Simple note.</note>
</p>
</div>
<div type="translation" xml:lang="fr">
<head>Traduction française</head>
<p>Cicéron naquit à Arpinum.</p>
</div>
</body>
</text>
</TEI>
3.2 Fichier ConTeXt : cicero-tei-simple.tex
[modifier | modifier le wikicode]\setuppapersize[A5]
\setupbodyfont[latin-modern]
% 1. Charger le XML (le fichier doit être dans le même répertoire)
\xmlload{cicero}{cicero-sample-tei.xml}{}
% 2. Associer des balises TEI à des "setups" ConTeXt
\xmlsetsetup{cicero}{p} {cicero:p}
\xmlsetsetup{cicero}{persName} {cicero:pers}
\xmlsetsetup{cicero}{placeName}{cicero:place}
\xmlsetsetup{cicero}{note} {cicero:note}
\xmlsetsetup{cicero}{*} {cicero:default}
% 3. Définition des setups
% Comportement par défaut : afficher le contenu tel quel
\startxmlsetups cicero:default
\xmlflush{#1}
\stopxmlsetups
% Paragraphe : on déroule simplement les enfants
\startxmlsetups cicero:p
\xmlflush{#1}
\stopxmlsetups
% Nom de personne : petites capitales
\startxmlsetups cicero:pers
\bgroup\sc\xmlflush{#1}\egroup
\stopxmlsetups
% Nom de lieu : italique
\startxmlsetups cicero:place
\bgroup\em\xmlflush{#1}\egroup
\stopxmlsetups
% Note : transformée en note de bas de page
\startxmlsetups cicero:note
\footnote{\xmlflush{#1}}
\stopxmlsetups
\starttext
% 4. Titre de l’édition
\chapter{\xmltext{cicero}{/TEI/text/body/div[@type='edition']/head}}
% 5. Paragraphe latin (avec style sur persName/placeName/note)
\xmlflush{cicero}{/TEI/text/body/div[@type='edition']/p}
\blank[2*big]
% 6. Titre de la traduction
\subject{\xmltext{cicero}{/TEI/text/body/div[@type='translation']/head}}
% 7. Paragraphe de traduction
\xmltext{cicero}{/TEI/text/body/div[@type='translation']/p}
\stoptext
3.3 Comment ça marche ?
[modifier | modifier le wikicode]\xmlload{cicero}{...}{}charge le fichier XML sous le nom logique cicero.\xmltext{cicero}{/chemin/xpath}extrait le texte d’un nœud donné (ici<head>).\xmlflush{cicero}{/chemin/xpath}« déroule » le contenu en appliquant les setups associés.
Les \xmlsetsetup définissent quelles balises appellent quels setups :
<persName>→cicero:pers→ petites capitales ;<placeName>→cicero:place→ italique ;<note>→cicero:note→ note de bas de page ;- tout le reste (*) →
cicero:default→ contenu brut.
Ce MWE (Minimum Working Example) suffit pour :
- tester l’installation (XML + ConTeXt) ;
- comprendre le principe
\xmlload+\xmlsetups; - servir de modèle pour des structures un peu plus élaborées.
Un autre exemple complet (à tester) : lire un fichier TEI-XML et extraire automatiquement les lemmes
[modifier | modifier le wikicode]Ce module montre comment ConTeXt peut :
- lire directement un fichier XML conforme au standard TEI ;
- associer des éléments TEI à des instructions ConTeXt via les mécanismes
\xmlsetsetup; - extraire automatiquement des lemmes (
@lemma) depuis les balises<w>; - générer un index complet sans traitement externe (ni XSLT, ni scripts).
Ce canevas constitue la « brique élémentaire » pour réaliser des éditions scientifiques ou scolaires : colonnes parallèles latin/traduction, appareil critique, notes multiples, extraction automatique d’index, etc.
1. Le fichier TEI-XML (exemple minimal)
[modifier | modifier le wikicode]Voici un extrait TEI parfaitement valide, utilisant trois balises <w> avec un attribut lemma :
<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<text>
<body>
<p>
<w lemma="anima">anima</w>
<w lemma="humanus">humana</w>
<w lemma="philosophia">philosophia</w>
</p>
</body>
</text>
</TEI>
Chaque leçon fléchie apparaît dans le texte, tandis que le lemme est collecté dans l’index.
2. MWE ConTeXt complet (texte TEI + index des lemmes)
[modifier | modifier le wikicode]Ce premier MWE produit deux pages : une avec le texte TEI, une avec l’index des lemmes. Il est adapté pour tester la chaîne complète TEI → ConTeXt → index.
% tei-lemma-demo.tex — MWE TEI + extraction automatique des lemmes
\setuplanguage[fr]
\mainlanguage[fr]
\setuppapersize[A4]
% 1) Registre pour l’index des lemmes
\defineregister[lemma]
\setupregister[lemma][n=1, indicator=no]
% 2) Déclaration du namespace TEI pour l’arbre XML "main"
\xmlnamespace{main}{tei}{http://www.tei-c.org/ns/1.0}
% 3) Dispatcher : associer tous les éléments TEI au jeu de règles xml:*
\xmlsetsetup{main}{tei:*}{xml:*}
% 4) Règle générique : dérouler le contenu
\startxmlsetups xml:*
\xmlflush{#1}
\stopxmlsetups
% 5) Paragraphe TEI
\startxmlsetups xml:tei:p
\xmlflush{#1}\par
\stopxmlsetups
% 6) Mots avec attribut @lemma : extraction automatique
\startxmlsetups xml:tei:w
\lemma{\xmlatt{#1}{lemma}} % index
\xmlflush{#1} % forme fléchie
\stopxmlsetups
\starttext
\chapter{Texte TEI}
\xmlprocessfile{main}{tei-lemma-demo.xml}{}
\page
\chapter{Index des lemmes}
\placelemma
\stoptext
Résultat attendu
[modifier | modifier le wikicode]Une compilation produit deux pages :
- Page 1 : Texte TEI :
anima humana philosophia (formes fléchies).
- Page 2 : Index des lemmes :
* anima * humanus * philosophia
L’index pointe vers la page où les mots sont apparus dans le fichier TEI.
3. Variante monopage (pratique pour une capture PNG)
[modifier | modifier le wikicode]Pour produire facilement une image (par exemple au format PNG), il peut être utile de limiter la sortie à une seule page (pour vérifier le test), en plaçant le texte TEI et l’index des lemmes sur la même page.
Le principe est le même ; on supprime simplement le changement de page et on remplace les chapitres par des titres de section plus compacts.
% tei-lemma-demo-onepage.tex — version monopage
% (texte TEI + index des lemmes sur la même page)
\setuplanguage[fr]
\mainlanguage[fr]
\setuppapersize[A4]
\defineregister[lemma]
\setupregister[lemma][n=1, indicator=no]
\xmlnamespace{main}{tei}{http://www.tei-c.org/ns/1.0}
\xmlsetsetup{main}{tei:*}{xml:*}
\startxmlsetups xml:*
\xmlflush{#1}
\stopxmlsetups
\startxmlsetups xml:tei:p
\xmlflush{#1}\par
\stopxmlsetups
\startxmlsetups xml:tei:w
\lemma{\xmlatt{#1}{lemma}}%
\xmlflush{#1}%
\stopxmlsetups
\starttext
{\bf Texte TEI}\par
\xmlprocessfile{main}{tei-lemma-demo.xml}{}
\blank[2*big]
{\bf Index des lemmes}\par
\placelemma
\stoptext
Cette variante est idéale si l’on souhaite, par exemple, produire une image illustrant à la fois le texte et l’index sur une seule page.
4. Points d’attention
[modifier | modifier le wikicode]5. Intérêt éditorial
[modifier | modifier le wikicode]Ce MWE illustre la méthode recommandée pour les éditions savantes dans ConTeXt :
- encoder le texte « proprement » en TEI ;
- laisser ConTeXt piloter la mise en page ;
- séparer clairement les données (XML-TEI) et la présentation (ConTeXt) ;
- bâtir des outils puissants à partir de règles simples (
\xmlsetsetup,\startxmlsetups, registres d’index).
À partir de cette base, il est possible de construire des exemples plus complexes :
- colonnes parallèles (texte original / traduction) ;
- appareil critique (balises
<app>,<lem>,<rdg>) ; - deux niveaux de notes (philologiques / explicatives) ;
- index thématiques et index de noms propres à partir d’éléments TEI dédiés.
Cet exemple constitue le point d’entrée pour les sections suivantes (édition de Cicéron, textes parallèles, etc.).
4. Vers des exemples plus riches (Iliade, Tusculanes, texte parallèle)
[modifier | modifier le wikicode]Les exemples plus complexes (Iliade, Tusculanes, parallèle Platon / Cicéron) reprennent le même principe, mais :
- avec un TEI plus riche (balises de lignes `<l>`, groupes `<lg>`, lemmatisation `<w lemma="...">`, etc.) ;
- avec des notes de plusieurs types (notes lexicales, notes de traduction, apparat critique) ;
- avec une mise en page plus sophistiquée (parallèle grec / latin, deux niveaux de notes, etc.).
Pour ne pas surcharger cette page :
- un exemple « Iliade » (grec + traduction) sera détaillé dans une page dédiée :
Exemple : Iliade en TEI-XML avec ConTeXt ;
- un exemple « Tusculanes + République » (texte latin, traduction, notes, lemmatisation) sera présenté dans :
Exemple : Tusculanes et texte parallèle.
Ces pages reprendront :
- l’organisation d’un petit projet sur disque (arborescence des fichiers) ;
- le cahier des charges (objectif de mise en page) ;
- le fichier TEI-XML complet ;
- le fichier ConTeXt correspondant ;
- des explications pas à pas sur le rôle de chaque balise et de chaque setup.
5. Difficultés fréquentes et pistes de travail
[modifier | modifier le wikicode]- Courbe d’apprentissage
- TEI demande un peu de temps (vocabulaire, structure, conventions).
- ConTeXt + XML est puissant mais verbeux au début.
- Organisation des fichiers
- Bien séparer :
- les données (data/*.xml) ;
- les styles (tex/env-...tex) ;
- les documents ConTeXt (tex/*.tex) ;
- les sorties (build/pdf).
- Méthode simple vs « intégrale »
- Pour un projet court, la méthode simple (XML minimal + ConTeXt impératif) suffit souvent.
- Pour une édition critique ou un gros corpus, la méthode intégrale (TEI complet + ConTeXt configuré) devient plus intéressante.
- Ressources utiles
- Documentation TEI (Guidelines, TEI by Example, manuels TEI) ;
- Documentation ConTeXt sur le module `xml` (ConTeXt Garden) ;
- Exemples concrets de cette page et des pages « Iliade » / « Tusculanes ».
Navigation
[modifier | modifier le wikicode]- Retour aux bases
- Du document simple aux documents complexes
- Aller plus loin avec XML, Lua, automatisation
- Outils Lua et automatisation de ConTeXt
- Exemples avancés XML-TEI
- Exemple Iliade (TEI + ConTeXt)
- Exemple Tusculanes / texte parallèle
Ressources externes
[modifier | modifier le wikicode]- Manuel TEI du BVH (Tours): Manuel XML-TEI
- TEI Consortium : https://tei-c.org
- Page TEI de ConTeXt Garden :TEI-XML with ConTeXt
|
Part. V, ch. 13 • Travailler avec TEI-XML dans ConTeXt • Sommaire |