Manuel eXtranseasy XML translation

Sommaire
L'essentiel
Installation
Concepts
Format de fichier XTrans
Format de fichier de Session XTrans


2. Concepts

 

If you see this message, it means that your browser does not enable "style sheets". Please enable the style sheets in your browser options or preferences, otherwise go to the "nostyle" version of Kervarker here (note that you may have to enable JavaScript too).

2.1 La problématique

Imaginez que vous ayez la charge d'un site web de contenu, ou de tout autre base documentaire, comportant des centaines, des milliers, voire des millions ou simplement quelque dizaines, de pages.
Maintenant, supposons que vous ayez envie, ou soyez obligé, de changer la maquette de tous vos documents parce que leur look actuel est complétement démodé. Allez-vous reprendre chaque page manuellement ? Allez-vous écrire un petit programme exprès pour ? Comment vous débrouillez-vous pour assurer l'insertion et la cohérences des liens, si vous devez découper les gros documents en plusieurs petits ? Comment faites vous pour remplacer les titres textuels par des titres graphiques ?
Maintenant, imaginons que le format de vos documents est devenu complétement dépassé. Êtes-vous toujours en mesure de les récupérer ? Comment les remettez-vous à la pointe de la technologie ?
Maintenant, disons que vous vouliez mettre vos documents à disposition du public dans X médias différents en même temps. Allez-vous les réécrire chacun dans X logiciels auteurs différents ?
Ces problèmes ne sont pas triviaux. Je les ai subis. Ma première solution fut de jouer avec des script Perl maison. Mais ce n'était pas satisfaisant, car je devais écrire un nouveau script pour chaque nouvelle situation. Et mon format documentaire d'origine, qui était HTML, était bien trop pauvre pour restituer automatiquement l'information perdue par une précédente mise en forme. En effet, si, par exemple, vous aviez précédemment décidé que les sous-titres et les instructions étaient tous représentés par du texte gras en italiques, un script n'était alors plus capable de faire la distinction entre les deux.
La problématique se situe donc, à la fois, au niveau de la représentation de l'information et au niveau des traitements qu'on va pouvoir lui appliquer.

2.2 La solution

La solution réside dans les documents structurés et le marquage semantique de l'information.
En séparant le sens de votre document et sa présentation, vous êtes sûrs de ne pas perdre d'information, mais aussi de conserver une correspondance cohérente et constante entre le sens et la mise en forme. De plus, vous assurez la réutilisabilité de l'information, et sa pérennité.
Le standard le plus approprié pour la définition et le codage de documents structurés et de marqueurs sémantiques est XML. Par conséquent, c'est celui que nous avons choisi. Mais dès qu'il s'agit des traitements...
Le standard XSL(T) n'est pas suffisamment puissant : ce n'est pas véritablement un langage complet. Et les autres ? Ils existe des librairies XML pour quasiment tous les langages, basées sur des interfaces de type SAX ou DOM. Mais ce sont des interfaces bas-niveau et nous avions besoin d'un cadre haut-niveau complet. Nous l'avons donc développé.

2.3 L'approche eXtrans et concepts d'implémentation

2.3.1 Sessions

À chaque fois que vous lancez eXtrans pour traduire des fichiers XML, on dit que vous démarrez une session XTrans. La session prend en charge toutes les actions nécessaires à l'aboutissement de la traduction. À la fin de la session, la génération de code est effectivement achevée.
Une session peut traiter de nombreux fichiers XML et produires de nombreux et différents fichiers de sortie. On définit quels sont les fichiers XML à traiter et quels sont les traducteurs à appliquer dans le fichier session XTrans, aussi appelé fichier XTrans principal.
Pendant une session, il se passe plusieurs choses.
Premièrement, le parsing, qui pilote la génération effective de code et qui repère les fichiers générés, ainsi que les dépendances. Le parsing est evénementiel, c'est à dire qu'il déclenche l'application de règles dans les traducteurs, au fur et à mesure qu'il rencontre les marqueurs dans le flux XML.
Ensuite, le post-traitement, qui résoud toutes les références croisées dans les fichiers cibles et qui éxécute les postmacros sur place.
L'éxécution des sessions est incrémentale : on ne recompile que les fichiers XML qui en ont besoin depuis la dernière session. Pour décider quels fichiers ont besoin d'une recompilation, eXtrans verifie les dates de modification des fichiers XML, d'une part, mais aussi des fichiers XTrans qui leur sont appliqués avec leurs inclusions.
Pour garder la trace de toutes les dépendances impliquées par le mode incrémental, des fichiers bases de données sont créés. Ces fichiers, dont le suffixe est .db, sont créés dans un répertoire précisé dans le fichier de session, et ils ne doivent pas être détruits.

2.3.2 Traducteurs

Appelés aussi fichiers XTrans, ou schémas de traduction, les traducteurs ont pour rôle de traduire les fichiers XML d'un certain DOCTYPE (défini par une DTD) dans un format donné. Il y a un traducteur pour un DOCTYPE et un format cible.
Les noms de fichier des traducteurs ne peuvent pas être choisis librement. Ils sont construits de la manière suivante : doctype.target_format_suffix.xtrans. Par exemple, ce manuel étant écrit selon le type de document MANUAL, le traducteur utilisé pour générer la version HTML a pour nom de fichier MANUAL.html.xtrans. Le doctype est vérifié au début du parsing.

2.3.3 Références croisées

En matière de références croisées, eXtrans est le plus transparent possible, et n'impose aucune contrainte au concepteur de DTD, qui peut définir ses propres balises.
La résolution des références se fait au moment du post-traitement, car le logiciel connaît alors tous les fichiers cibles et les correspondances de contenu.
Une référence est de la forme chemin_de_fichier_xml.xml#ID, où #ID est optionnel et représente l'éventuel identifiant (au sens XML) visé. Elle est ensuite automatiquement remplacée par le chemin relatif du fichier cible coorespondant. Ce fichier est soit le premier généré à partir du source XML, soit, si un #ID est mentionné, le fichier ouvert lorsque l'identifiant a été rencontré dans le source XML.
Pour être correctement distinguée, une référence doit être entourée par des délimiteurs spéciaux définis dans le fichier XTrans.