Comment convertir SGML ou HTML en #

Le SGML est un système très important pour le stockage et l’échange de documents, mais il n’a pas de fonctions de formatage. La norme ISO qui l’accompagne, DSSSL, est conçue pour l’écriture de transformations et le formatage, mais elle n’a pas encore été largement mise en œuvre. Certains systèmes de création SGML (par exemple Author/Editor de SoftQuad) ont des capacités de formatage, et il existe des systèmes de composition SGML spécialisés haut de gamme (par exemple, Genera de Miles33). Cependant, la majorité des utilisateurs de SGML transforment leur source SGML en des formats disposant de système de composition, dès lors qu’existe un besoin d’imprimer ces éléments. est un bon candidat pour cela. Il y a trois approches pour écrire un traducteur :

  1. Écrire un traducteur autonome de manière traditionnelle, avec des outils comme yacc et lex. C’est, en pratique, difficile à cause de la complexité du SGML.

  2. Utiliser un langage spécialisé conçu pour les transformations SGML. Les plus connus sont probablement Omnimark et Balise. Ils sont chers, mais puissants, car ils intègrent des capacités d’interrogation et de transformation SGML ainsi qu’une simple traduction de format.

  3. Construire un traducteur à partir d’un analyseur SGML existant. L’analyseur de loin le plus connu (et gratuit !) est nsgmls de James Clark. Il produit un format de sortie beaucoup plus simple, appelé ESIS, qui peut être analysé assez directement (on a aussi l’avantage d’une analyse SGML par rapport à la DTD). Deux bonnes extensions du domaine public utilisent cette méthode :

    • sgmlspm de David Megginson, écrit en Perl 5.

    • STIL (SGML Transformations in Lisp), de Joachim Schrod et Christine Detig.

Ces deux logiciels permettent à l’utilisateur d’écrire des codes gérant chaque élément SGML, avec de nombreux accès aux attributs, aux entités et aux informations sur le contexte dans l’arborescence du document.

Si ces extensions ne répondent pas à vos besoins pour un travail de composition SGML de taille moyenne, vous devrez vous tourner vers les gros produits commerciaux.

Le HTML étant simplement un exemple de SGML, nous n’avons pas besoin d’un système spécifique pour le HTML. Cependant, Nathan Torkington a développé html2latex à partir de l’analyseur HTML du paquet Xmosaic du NCSA. Le programme prend un fichier HTML et génère un fichier à partir de celui-ci. Le code de conversion est soumis aux restrictions du NCSA, mais l’ensemble des sources est disponible sur le CTAN.

Michel Goossens et Janne Saarela ont publié un résumé très utile du SGML et des outils du domaine public pour l’écrire et le manipuler dans le volume 16(2) de TUGboat.