| |||
Sommaire L'essentiel Installation 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ématiqueImaginez 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 solutionLa 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émentation2.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 TraducteursAppelé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éesEn 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.
|
||