Journal DocBook et les accents

Posté par  .
Étiquettes : aucune
0
16
nov.
2003
Cher journal,

Je viens de me mettre à DocBook XML depuis hier et je dois dire que je suis vraiement séduit, ce truc est une vrai merveille.

Seulement voilà, j'édite mes documents dans un éditeur standart (jEdit) (je préfère pour apprendre) mais il vient se poser comme d'habitude le problème des accents: je n'ai pas du tout envie d'avoir à taper à chaque fois l'unicode dans mon texte...
En XHTML, il suffit de mettre cette balise dans le "head":
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
et c'est réglé...

Mais en DocBook que dois je faire pour que SAX ne me dise pas "An invalid XML character (Unicode: 0x8e) was found" à chaque fois que j'ai un accent dans mon code?

Je suis sur qu'il y a plein de gens ici qui écrive des documents en français avec DocBook donc quelqu'un à forcement déjà été confronté au problème :)
  • # Re: DocBook et les accents

    Posté par  (site web personnel) . Évalué à 2.

    Comme tout document XML, il doit avoir cette balise en début de fichier qui peut entre specifier l'encodage:
    <?xml version="1.0" encoding="ISO-8859-15"?>
    • [^] # Re: DocBook et les accents

      Posté par  . Évalué à 1.

      Essaie de passer un document XML ainsi rédigé dans XSLTPROC, et tu verras que le problème n'est pas si simple. Bien évidemment, ta solution est la solution standard qui s'impose au premier abord, celle que j'ai moi même essayé la première fois que j'ai eu le problème, mais XLSTPROC voit ça d'un autre œil ...
      • [^] # Re: DocBook et les accents

        Posté par  . Évalué à 1.

        je n'ai pas tellement envie d'essayer XSLTPROC, pourtant la question m'intéresse. Pourrais-tu développer le problème posé par la spécification du jeu de caractère utilisé dans l'entête xml ?

        Je n'utilise pas XML très souvent, mais jusqu'à présent je n'ai eu aucun problème avec la méthode susdécrite.
    • [^] # Re: DocBook et les accents

      Posté par  . Évalué à 1.

      Oui effectivement, mais étrange ISO-8859-15 n'est pas supporté par SAX...
      ISO-8859-1 marche bien, merci !
  • # Re: DocBook et les accents

    Posté par  . Évalué à 4.

    Pour ma part, je connais deux solutions.

    Tu peux utiliser un éditeur qui gère l'UTF-8, style GEdit qui permet d'enregistrer au formar UTF-8 et qui possède aussi la coloration de synthaxe pour le format XML : l'inconvénient est que changer d'éditeur n'est pas ce qu'il y a de plus agréable.

    J'ai une deuxième solution plus ou moins gruik, mais qui me permet d'utiliser n'importe quel éditeur standard qui ne gère pas l'UTF-8 en natif : il s'agit d'utiliser iconv pour convertir les fichiers XML du format ISO-8859-1/ISO-8859-15 vers le format UTF-8. J'ai fait un petit script qui s'occupe de cela et que je l'exécute avant de générer mes documents DocBook :

        [ ! -d utf8 ] && mkdir utf8

       for file in *.xml ; do
          cat $file | iconv -f ISO-8859-15 -t UTF-8 $tmpfile > utf8/$file
       done

    Il existe probablement une meilleure solution que cette dernière mais je ne la connais pas malgré mes nombreuses lectures des différentes documentations sur DocBook XML éparpillées ici et là sur le Web et qui sont plus où moins complète ...

    Un des meilleurs guides sur DocBook XML (il suppose que le lecteur est familier avec DocBook SGML) que j'ai pu trouvé est le suivant :

       http://www.sagehill.net/docbookxsl/index.html(...)

    Il explique notament comment générer les documents au format XHTML en y attachant une feuille de style CSS personnelle pour modifier le look final des documents généré.
  • # Emacs...

    Posté par  (site web personnel) . Évalué à 1.

    Avec Jedit je sais pas, mais le mode d'édition SGML/XML d'Emacs propose dans un menu d'encoder les caractères (les mettre sous forme d'entité) et de les décoder (les mettre sous forme accentuée). En scriptant un peu, on arrive à faire ça automatiquement à l'ouverture et la la sauvegarde. Voici le bout de script que j'utilise (il n'est pas de moi) :
    (defun sgml-init-file-hook ()
      (make-local-hook 'after-save-hook)
      (add-hook 'after-save-hook
                '(lambda ()
                   (sgml-charent-to-display-char)
                   (set-buffer-modified-p nil))
                t
                t)
      (add-hook 'local-write-file-hooks 'sgml-display-char-to-charent))
    (add-hook 'sgml-mode-hook 'sgml-init-file-hook)
    
    Par contre, il induit quelques comportements génants dans certains cas, mais reste largement utilisable.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.