Une feuille de style DocBook avec XML::XPathScript

Une feuille de style DocBook avec XML::XPathScript

Par Dominique Quatravaux
Date : lundi 7 juin 2004 16h30
Durée : 20 minutes
Langue :

Vous pouvez trouver plus d'information sur le site du présentateur :


La conversion de Docbook XML vers un format imprimable est une tâche à laquelle se sont attelés bon nombre de projets de logiciel libre. Il peuvent être classés en deux grands groupes : ceux qui produisent une sortie laide, et ceux qui utilisent LaTeX. Pour les membres de cette seconde catégorie, deux problèmes doivent être traités lors de la réalisation : la correspondance entre les deux structures logiques de document (l'imbrication des balises est asez différente entre LaTeX et Docbook), et la barrière Unicode (on peut apprendre l'UTF-8 à LaTeX mais des problèmes de polices de caractères se posent alors). Les solutions basées sur XSLT résolvent le premier problème élégamment grâce au paradigme des patrons (templates), mais ont du mal à réussir un encodage correct des caractères. Les solutions qui utilisent Perl utilisent typiquement les expressions rationnelles de façon intensive, et par conséquent sont difficiles à comprendre, déboguer et maintenir; elles n'ont pas l'extrême modularité du mécanisme de patrons d'XSLT.

C'est alors qu'arrive XML::XPathScript, du CPAN, qui réussit à réunir le meilleur des deux mondes en un seul endroit : un langage de feuille de style apparenté à XSLT avec des patrons, en Perl. Il a été d'abord conçu pour produire du HTML au sein du projet AxKit (http://www.axkit.org), et ne propose pas de sortie ISO-Latin. Mais grâce à la familiarité de Perl avec le traitement des chaînes de caractères, et quelques astuces (essentiellement le bidouillage, à l'exécution, des espaces de noms de certains modules du CPAN), il est possible de surmonter cela et de réaliser une feuille de style DocBook qui est autonome (elle ne se base que sur des paquetages LaTeX et CPAN d'origine), hautement adaptable et facile à étendre (XPathScript supporte les feuilles de style en cascade) et assez complète du point de vue des fonctionnalités : texte multilingue (anglais et français), paragraphes, tableaux, index, figures, notes de bas de page, annexes, bibliographie et imbrications bizarres de tout cela. Le résultat, disponible sur http://www.idealx.org/DocBkXML2LaTeX/, fera l'objet d'une démonstration à la fin de l'exposé.