<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE article PUBLIC  "-//OASIS//DTD DocBook XML V4.3//EN"
    "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY howto      "http://www.traduc.org/docs/howto/lecture/">
<!ENTITY guide      "http://www.traduc.org/docs/guides/lecture/">
<!ENTITY home       "http://www.catb.org/~esr/">
<!ENTITY images     "">
]>

<article lang="fr">
<articleinfo>
  <title>Comprendre DocBook (Guide pratique)</title>

  <subtitle>
     Version française du guide pratique <foreignphrase
     lang="en">DocBook Demystification HOWTO</foreignphrase>
  </subtitle>

  <releaseinfo>Version&nbsp;: 1.3.fr.1.2</releaseinfo>

  <pubdate>11 juin 2008</pubdate>

  <author>
     <firstname>Eric</firstname>
     <surname>Raymond</surname>
     <email>esr CHEZ thyrsus POINT com</email>
  </author>

  <othercredit role="traduction" class="translator">
     <firstname>Raphaël</firstname>
     <surname>Semeteys</surname>
     <contrib>Adaptation française</contrib>
     <email>raphael POINT semeteys CHEZ wanadoo POINT fr</email>
  </othercredit>

  <othercredit role="relecture" class="translator">
    <firstname>Jean-Philippe</firstname>
    <surname>Guérard</surname>
    <contrib>Relecture de la version française</contrib>
    <email>fevrier CHEZ tigreraye POINT org</email>
  </othercredit>

  <othercredit role="publication" class="copyeditor">
    <firstname>Jean-Philippe</firstname>
    <surname>Guérard</surname>
    <contrib>Préparation de la publication de la v.f.</contrib>
    <email>fevrier CHEZ tigreraye POINT org</email>
  </othercredit>

  <revhistory>
    <revision>
      <revnumber>1.3.fr.1.2</revnumber>
      <date>2008-06-11</date>
      <authorinitials>JPG</authorinitials>
      <revremark>
          Correction d'une petite coquille. Merci Joris Rehm de nous
          l'avoir signalé. Remplacement d'un lien obsolète vers le livre
          «&nbsp;XML en concentré&nbsp;» (qui n'est plus édité) par un
          lien vers sa version originale.
      </revremark>
    </revision>

    <revision>
      <revnumber>1.3.fr.1.1</revnumber>
      <date>2007-04-26</date>
      <authorinitials>JPG</authorinitials>
      <revremark>
          Modification du titre français.
      </revremark>
    </revision>

    <revision>
      <revnumber>1.3.fr.1.0</revnumber>
      <date>2006-01-07</date>
      <authorinitials>RSS, JPG</authorinitials>
      <revremark>
          Adaptation française initiale.
      </revremark>
    </revision>

    <revision>
        <revnumber>1.3</revnumber>
        <date>2004-02-27</date>
        <authorinitials>ESR</authorinitials>
        <revremark>

           Ajout de pointeurs vers deux éditeurs. <emphasis
           lang="en">Add pointers to two editors.</emphasis>

        </revremark>
     </revision>
     <revision>
        <revnumber>1.2</revnumber>
        <date>2003-02-17</date>
        <authorinitials>ESR</authorinitials>
         <revremark>

           Déplacement des références à SGML après que celui-ci ait été
           présenté. <emphasis lang="en">Reorder to defer references to
           SGML until after it has been introduced.</emphasis>

        </revremark>
     </revision>
     <revision>
        <revnumber>1.1</revnumber>
        <date>2002-10-01</date>
        <authorinitials>ESR</authorinitials>
        <revremark>

           Correction d'une erreur faite par inadvertance sur la
           position de la FSF. Ajout d'un pointeur vers la FAQ DocBook.
           <emphasis lang="en">Correct inadvertent misrepresentation of
           FSF's position. Added pointer to the DocBook FAQ.</emphasis>

        </revremark>
     </revision>
     <revision>
        <revnumber>1.0</revnumber>
        <date>2002-09-20</date>
        <authorinitials>ESR</authorinitials>
         <revremark>

           Version initiale. <emphasis lang="en">Initial
           version.</emphasis>

        </revremark>
     </revision>
  </revhistory>

  <abstract><para>

  Ce guide pratique tente de dissiper le brouillard et le mystère
  entourant le système de balisage DocBook et les outils associés. Il
  est destiné aux auteurs de documentations techniques pour les projets
  libres sous Linux, mais devrait également être utile à la rédaction
  d'autres types de documents sur d'autres systèmes Unix.

  </para></abstract>

</articleinfo>

<sect1 id="intro">

<title>Introduction</title>

<para>

Bon nombre de grands projets libres sont en train de converger vers
l'utilisation du format DocBook comme format standard de documentation
&mdash; des projets comme le noyau Linux, GNOME, KDE, Samba et le Projet
de documentation Linux (LDP). Les défenseurs du balisage structurel basé
sur XML (par opposition au style plus ancien de balisage de présentation
illustré par troff, Tex et Texinfo) semblent avoir gagné la bataille
théorique. Il est possible de produire un balisage de présentation à
partir d'un balisage structurel, mais l'inverse est très difficile.

</para>

<para>

Néanmoins, une grande confusion entoure DocBook et les programmes qui
l'accompagnent. Ses adeptes parlent un argot dense et intimidant, même
selon les canons de l'informatique, utilisant à tout va des sigles sans
rapport évident avec ce qui doit être fait pour écrire du texte balisé
et produire du HTML ou du Postscript. Les standards et les documents
techniques sur XML sont notoirement obscurs.

</para>

<para>

Ce guide va tenter de clarifier les principaux mystères existants autour
de DocBook et de son utilisation pour les documents relatifs aux
logiciels libres &mdash; qu'il s'agisse de documentations techniques ou
politiques. Notre objectif est de vous permettre de comprendre non
seulement ce que vous devez faire pour fabriquer des documents, mais
aussi pourquoi le processus est si complexe &mdash; et comment on peut
s'attendre à voir cela changer au fur et mesure de la disponibilité de
nouveaux outils DocBook.

</para>

</sect1>
<sect1>

<title>Pourquoi s'intéresser à DocBook&nbsp;?</title>

<para>

DocBook offre deux possibilités qui le rendent vraiment intéressant. La
première est la <emphasis>production multi-formats</emphasis> et la
seconde la réalisation de <emphasis>bases de documents
interrogeables</emphasis>.

</para>

<para>

La <emphasis>production multi-formats</emphasis> est la possibilité la
plus simple et la plus proche de la réalisation&nbsp;; il s'agit de la
capacité à écrire un document dans un format maître unique, qui puisse
être utilisé pour produire différents formats d'affichage (en
particulier du HTML pour la visualisation en ligne et du Postscript pour
des impressions de haute qualité). Cette capacité est désormais assez
bien mise en œuvre.

</para>

<para>

Le terme <emphasis>base de documents interrogeable</emphasis> est une
manière condensée d'expliquer que DocBook puisse nous aider à aller vers
un monde où l'ensemble de la documentation présente sur votre système
d'exploitation libre constituera une base de données hypertexte, indexée
et interrogeable de textes enrichis (plutôt que d'être éparpillée dans
des formats variés en de multiples endroits comme c'est le cas
aujourd'hui).

</para>

<para>

Idéalement, lorsque vous installerez un logiciel sur votre machine, il
enregistrera sa documentation DocBook dans le catalogue de votre
système. Celui-ci produira automatiquement du HTML correctement indexé
et interconnecté au HTML contenu dans le reste de votre catalogue. La
documentation du nouveau paquet sera alors disponible via un navigateur.
Des recherches pourront être réalisés sur l'ensemble de la documentation
via une interface ressemblant à un bon moteur de recherche.

</para>

<para>

Le HTML en tant que tel n'est pas un format suffisamment riche pour nous
rapprocher de ce monde. Pour ne citer qu'une seule de ses lacunes, le
HTML ne permet pas de déclarer explicitement des entrées d'index.
DocBook <emphasis>possède</emphasis> la richesse sémantique permettant
la réalisation de bases de documents structurées. C'est la raison
fondamentale de son adoption par de si nombreux projets.

</para>

<para>

DocBook a les inconvénients de ses avantages. Certains le trouvent trop
lourd et verbeux pour pouvoir réellement constituer un format de
composition confortable. Ce qui ne posera pas de problème, tant que les
formats qu'ils affectionnent (comme le format POD de Perl ou le Texinfo
GNU) disposent de moteurs permettant de produire du DocBook, tout le
monde sera satisfait. Peu importe que tout le monde écrive au format
DocBook ou pas. Du moment que DocBook devient le format commun d'échange
de documents, nous resterons capables de réaliser des bases de documents
interrogeables unifiées.

</para>

</sect1>
<sect1>

<title>Balisage structurel&nbsp;: préambule</title>

<para>

Les anciens langages de mise en forme tels que Tex, Texinfo ou Troff
permettaient de réaliser un <firstterm>balisage de
présentation</firstterm><indexterm>

<primary>balisage de présentation</primary>

</indexterm>. Les instructions que vous donniez à ces systèmes
concernaient l'apparence et la disposition physique du texte (par
exemple, des modifications de la fonte ou de l'indentation).

</para>

<para>

Tant que votre objectif restait d'imprimer sur un seul support ou un
seul type de périphérique d'affichage, le balisage de présentation
restait une bonne solution. Vous en atteignez les limites lorsque vous
commencez à baliser un document en voulant (a) qu'il puisse être mis en
forme pour des dispositifs d'affichages très différents (comme des
imprimantes et le web) ou (b) réaliser des recherches sur le document et
l'indexer via sa structure logique (par exemple pour l'incorporer dans
un système hypertexte).

</para>

<para>

Pour disposer de ces capacités, vous aurez besoin d'un système de
<firstterm>balisage structurel</firstterm><indexterm>

<primary>balisage structurel</primary>

</indexterm>. Avec le balisage structurel, vous ne décrirez pas
l'apparence physique du document mais plutôt les propriétés logiques de
ses différentes parties.

</para>

<para>

Par exemple&nbsp;: dans un langage de balisage de présentation, si vous
désirez accentuer un mot, vous indiquerez à l'outil de mise en forme de
le mettre en caractères gras. Dans

<citerefentry>
  <refentrytitle>troff</refentrytitle>
  <manvolnum>1</manvolnum>
</citerefentry>

cela ressemblera à ceci<footnote><para>

N.D.T.&nbsp;: les fautes sont volontaires. Pour comprendre cette
référence, jetez un œil à l'article Wikipédia <ulink
url="http://fr.wikipedia.org/wiki/All_your_base_are_belong_to_us">correspondant</ulink>.

</para></footnote>&nbsp;:

</para>

<programlisting>
Toutes vos base
.B sont
appartiennent à nous !
</programlisting>

<para>

Dans un langage de balisage structurel, vous indiquerez à l'outil de
mise en forme de mettre le en relief&nbsp;:

</para>

<programlisting>
Toutes vos base &lt;emphasis&gt;sont&lt;/emphasis&gt;
appartiennent à nous !
</programlisting>

<para>

Le <quote><sgmltag class="starttag">emphasis</sgmltag></quote> et le
<quote><sgmltag class="endtag">emphasis</sgmltag></quote> de la ligne
précédente sont appelés des <firstterm>balises de
marquage</firstterm><indexterm>

<primary>balise de marquage</primary>

</indexterm> ou tout simplement des <firstterm>balises</firstterm>.
Elles constituent les instructions de votre outil de mise en forme.

</para>

<para>

Dans un langage de balisage structurel, l'apparence physique du document
final sera contrôlée par l'application d'une <firstterm>feuille de
style</firstterm><indexterm>

<primary>feuille de style</primary>

</indexterm>. C'est la feuille de style qui indiquera à l'outil de mise
en forme de <quote>représenter la mise en relief sous forme de
caractères gras</quote>. Un des avantages des langages de balisage
structurel est qu'en modifiant une feuille de style vous pourrez
modifier de manière globale la présentation du document (pour utiliser
des polices de caractères différentes par exemple) sans avoir à modifier
chaque occurrence, par exemple, de <markup>.B</markup> dans le document
lui-même.

</para>

</sect1>

<sect1>

<title>Définitions de types de documents (DTD)</title>

<note><para>

Pour rester simple dans notre explication, cette section comporte
certains raccourcis historiques qui seront corrigés dans une <link
linkend="sgml">section ultérieure</link>.

</para></note>

<para>

DocBook est un langage de balisage structurel. Plus spécifiquement c'est
un dialecte XML. Un document DocBook est un fichier XML qui utilise des
balises XML pour définir sa structure.

</para>

<para>

Afin d'appliquer une feuille de style à votre document et de lui donner
une belle apparence, un outil de mise en forme aura besoin de savoir
certaines choses sur la structure complète du document. Par exemple, il
aura besoin de savoir qu'un livre est normalement constitué de parties
liminaires, d'une suite de chapitres, puis de parties annexes afin de
pouvoir mettre en forme correctement les en-têtes de chapitres. Afin
qu'il puisse le savoir, vous devrez lui fournir une
<firstterm>définition de type de document</firstterm><indexterm>

<primary>définition de type de document</primary>
<secondary>DTD</secondary>

</indexterm> ou DTD. La DTD
indique à l'outil de mise en forme les éléments qui peuvent se trouver
dans la structure du document ainsi que l'ordre dans lequel ils peuvent
apparaître.

</para>

<para>

Lorsqu'on décrit DocBook comme une application de XML, on veut dire
par là qu'il s'agit d'une DTD &mdash; une DTD plutôt conséquente avec
près de 400 balises.

</para>

<para>

Derrière DocBook se cache un type de programme appelé un
<firstterm>analyseur de validation</firstterm><indexterm>

<primary>analyseur de validation</primary>

</indexterm>. Lorsque vous mettez en forme un document DocBook, la
première étape à franchir est de le passer au crible d'un analyseur de
validation (qui est le premier composant de l'outil de mise en forme
DocBook). Ce programme vérifie la validité de votre document par rapport
à la DTD DocBook. Cela permet de s'assurer que vous n'êtes en conflit
avec aucune des règles structurelles de la DTD (sinon le composant de
l'outil de mise en forme en charge de l'application de la feuille de
style pourrait s'y perdre).

</para>

<para>

L'analyseur de validation va soit vous afficher des messages d'erreurs
relatifs aux endroits où la structure du document est incorrecte, soit
traduire le document en un flux d'<firstterm>évènements de mise en
forme</firstterm> qui sera finalement combiné avec votre feuille de
style pour produire le résultat mis en forme.

</para>

<para>Voici un schéma du processus complet&nbsp;:</para>

<mediaobject>

<imageobject>
<imagedata fileref="&images;schema-01.png" role="html" format="PNG"/>
</imageobject>

<imageobject>
<imagedata fileref="&images;schema-01.svg" role="fo" format="SVG"/>
</imageobject>

</mediaobject>

<para>

La partie du schéma comprise dans la zone en pointillés est votre outil
de mise en forme, autrement appelée votre <firstterm>chaîne
logicielle</firstterm> de mise en forme. Pour comprendre ce qui suit, en
plus de l'entrée évidente et visible de l'outil de mise en forme (le
document source) vous devrez garder en tête les deux autres entrées
<quote>cachées</quote> (DTD et feuille de style) de l'outil de mise en
forme.

</para>
</sect1>

<sect1><title>Autres DTD</title>

<para>

Un court détour par les autres DTD vous aidera à distinguer les parties
de la section précédente qui sont spécifiques à DocBook de celles
concernant tous les langages de balisage structurel.

</para>

<para>

<ulink url="http://www.tei-c.org/">TEI</ulink> (Text Encoding
Initiative) est une DTD conséquente et élaborée, principalement utilisée
dans les milieux académiques pour la transcription informatique de
textes littéraires. La chaîne logicielle de TEI, fonctionnant sous Unix,
utilise nombre d'outils utilisés par DocBook, mais avec des feuilles de
style et (évidemment) une DTD différentes.

</para>

<para>

XHTML, la dernière version de HTML, est également une utilisation d'XML
décrite par une DTD, ce qui explique l'air de famille existant entre les
balises XHTML et DocBook. La chaîne logicielle XHTML est constituée de
navigateurs web et d'un certain nombre d'utilitaires spécifiques
d'impression.

</para>

<para>

De nombreuses autres DTD XML sont maintenues afin de faciliter les
échanges d'informations structurées dans des domaines aussi divers que
l'informatique biologique ou la banque. Vous pouvez consulter la <ulink
url="http://www.xml.com/pub/rg/DTD_Repositories">liste des
référentiels</ulink> pour vous faire une idée de la variété des DTD
existantes.

</para>

</sect1>
<sect1><title>La chaîne logicielle DocBook</title>

<para>

Le moyen le plus simple de mettre en forme et de produire des documents
XML DocBook est d'utiliser la chaîne logicielle
<application>xmlto</application>. Elle est intégrée à la distribution
Red Hat et les utilisateurs de Debian peuvent la récupérer via la
commande <userinput>apt-get install xmlto</userinput>.

</para>

<para>

Pour produire du XHTML à partir de vos sources DocBook, il vous faudra
normalement faire quelque-chose comme ceci&nbsp;:

</para>

<screen>
bash$ xmlto xhtml foo.xml
bash$ ls *.html
ar01s02.html ar01s03.html ar01s04.html index.html
</screen>

<para>

Dans cet exemple, vous avez converti un document XML Docbook nommé
<filename>foo.xml</filename> composé de trois sections principales en
une page d'index et trois parties. Produire une seule page est tout
aussi simple&nbsp;:

</para>

<screen>
bash$ xmlto xhtml-nochunks foo.xml
bash$ ls *.html
foo.html
</screen>

<para>

Enfin, voici comment produire du PostScript pour l'impression&nbsp;:

</para>

<screen>
bash$ xmlto ps foo.xml     # Production de PostScript
bash$ ls *.ps
foo.ps
</screen>

<para>

Certaines versions plus anciennes de <command>xmlto</command> peuvent
être plus bavardes en émettant de messages du type <quote>Conversion en
XHTML en cours</quote> et ainsi de suite.

</para>

<para>

Pour convertir vos documents en HTML ou en PostScript, vous devez
disposer d'un moteur capable d'appliquer à la fois la DTD DocBook et une
feuille de style adéquate à votre document. Voici comment s'intègrent
ensemble les outils libres utilisés à cette fin&nbsp;:

</para>

<mediaobject>

<imageobject>
<imagedata fileref="&images;schema-02.png" role="html" format="PNG"/>
</imageobject>

<imageobject>
<imagedata fileref="&images;schema-02.svg" role="fo" format="SVG"/>
</imageobject>

<caption>
  <para>Chaîne logicielle XML DocBook actuelle</para>
</caption>

</mediaobject>

<para>

L'analyse du votre document et l'application de la feuille de style vont
être réalisées par l'un des programmes suivants. Le plus courant est

<application>xsltproc</application><indexterm>
  <primary>xsltproc</primary>
</indexterm>,

l'analyseur inclus dans la distribution Red Hat depuis la version 7.3.
Les autres possibilités sont les programmes Java

<application>Saxon</application><indexterm>
  <primary>Saxon</primary>
</indexterm>

et

<application>Xalan</application><indexterm>
  <primary>Xalan</primary>
</indexterm>.

</para>

<para>

XHTML étant simplement une autre DTD XML, il est relativement aisé de
produire du XHTML de haute qualité à partir de DocBook. La conversion en
HTML est réalisée en appliquant une feuille de style plutôt simple et
c'est à peu près tout. De même RTF est simple à produire de cette
manière et il est facile de produire un fichier de texte brut à partir
d'XHTML ou de RTF.

</para>

<para>

Le cas de l'impression est moins évident. Il est difficile de produire
des impressions de haute qualité (ce qui correspond en pratique au
format

PDF<indexterm>
  <primary>PDF</primary>
</indexterm><footnote><para>

PDF signifie Format Portable de Document &mdash; <foreignphrase
lang="en">Portable Document Format</foreignphrase> dans la langue de
Shakespeare.

</para></footnote> d'Adobe, une version prête à l'emploi de PostScript).
Pour le faire correctement, il est nécessaire de reproduire de manière
algorithmique la finesse du jugement humain utilisé par un typographe
lorsqu'il passe du niveau du contenu à celui de la présentation.

</para>

<para>

Donc, premièrement, une feuille de style traduit le balisage structurel
DocBook en un autre langage XML &mdash;

FO<indexterm>
  <primary>FO</primary>
</indexterm>

(<foreignphrase lang="en">Formatting Objects</foreignphrase>). Le
balisage FO est un vrai balisage de présentation. Vous pouvez le
considérer comme un équivalent fonctionnel de troff dans le monde XML.
Il doit être traduit en Postscript pour pouvoir être intégré à un PDF.

</para>

<para>

Dans la chaîne logicielle intégrée à Red Hat, ce travail est pris en
charge par un paquet de macros TeX appelé

<application>PassiveTeX</application><indexterm>
  <primary>PassiveTeX</primary>
</indexterm>.

Il traduit dans le langage TeX de Donald Knuth les objets de mise en
formes produits par <command>xsltproc</command>. TeX a été un des tous
premiers projets libres, un langage de mise en forme (au niveau de la
présentation) ancien mais puissant, apprécié des mathématiciens (à qui
il fournit des fonctionnalités particulièrement évoluées de description
des notations mathématiques). TeX est également connu pour son
efficacité dans les tâches typographiques de base comme le crénage, le
remplissage de lignes ou la césure. Le résultat de l'exécution de TeX,
récupéré dans un format appelé

DVI (<foreignphrase lang="en">DeVice Independent</foreignphrase>)<indexterm>
  <primary>DVI</primary>
</indexterm>,

est ensuite transformé en PDF.

</para>

<para>

Si vous trouvez que cet enchaînement de XML vers des macros TeX vers DVI
vers PDF ressemble à une usine à gaz, vous n'avez pas tort. Ça grince,
ça siffle et ça comporte d'horribles verrues. Les fontes constituent un
problème important du fait qu'XML, TeX et PDF possèdent des modèles très
différents d'utilisation des fontes. En outre, la gestion de
l'internationalisation et des paramètres régionaux est un vrai
cauchemar. La seule chose qui justifie cet enchaînement est que cela
fonctionne.

</para>

<para>

La solution élégante sera

FOP<indexterm>
  <primary>FOP</primary>
</indexterm>,

un traducteur FO vers PostScript développé par le projet Apache. Avec
FOP, le problème de l'internationalisation est, s'il n'est pas résolu,
bien circonscrit&nbsp;: les outils XML manient l'Unicode de bout en
bout. La correspondance entre glyphes et fonte est également un problème
relevant strictement de FOP. Le seul problème de cette approche est que
cela ne fonctionne pas &mdash; du moins pour le moment. En date d'août
2002, FOP est en version alpha non finalisée &mdash; utilisable mais
brut de décoffrage et fonctionnellement incomplet.

</para>

<para>Voici à quoi ressemble la chaîne logicielle FOP&nbsp;:</para>

<mediaobject>

<imageobject>
<imagedata fileref="&images;schema-03.png" role="html" format="PNG"/>
</imageobject>

<imageobject>
<imagedata fileref="&images;schema-03.svg" role="fo" format="SVG"/>
</imageobject>

<caption>
<para>Future chaîne logicielle XML DocBook intégrant FOP</para>
</caption>
</mediaobject>

<para>

FOP a des concurrents. Il existe un autre projet appelé

<application>xsl-fo-proc</application><indexterm>
  <primary>xsl-fo-proc</primary>
</indexterm>

qui vise le même objectif que FOP, mais en C++ (et donc plus rapide et
ne reposant pas sur l'environnement Java). En date d'août 2002,
<application>xsl-fo-proc</application> est aussi en version alpha non
finalisée, dans un état assez proche de celui de FOP.

</para>

</sect1>

<sect1><title>Quels sont les projets et les acteurs&nbsp;?</title>

<para>

La DTD DocBook elle-même est maintenue par le Comité technique DocBook
(<foreignphrase lang="en">DocBook Technical Committee</foreignphrase>),
dirigé par Norman Walsh. Norm est le principal auteur des feuilles de
style DocBook. Il a consacré depuis de nombreuses années une grande
quantité d'énergie et de talent aux problèmes extrêmement complexes
qu'aborde DocBook. Il est autant respecté dans la communauté DocBook que
l'est Linus Torvalds dans le monde Linux.

</para>

<para>

<ulink url="http://xmlsoft.org/XSLT/">libxslt</ulink> est une
bibliothèque C qui interprète XSLT et applique les feuilles de style aux
documents XML. Elle comprend un utilitaire, <command>xsltproc</command>,
qui peut être utilisé comme outil de mise en forme XML. Son code a été
écrit par Daniel Veillard sous les auspices du projet GNOME, mais ne
requiert aucun code GNOME pour fonctionner. J'ai entendu dire qu'elle
était extraordinairement plus rapide que ses alternatives Java, ce qui
n'est pas une affirmation très surprenante.

</para>

<para>

<command><ulink
url="http://cyberelk.net/tim/xmlto/">xmlto</ulink></command> est
l'interface utilisateur de la chaîne logicielle intégrée à Red Hat. Elle
est écrite et maintenue par Tim Waugh.

</para>

<para>

<ulink url="http://saxon.sourceforge.net/">Saxon</ulink> et <ulink
url="http://xml.apache.org/xalan-j/">Xalan</ulink> sont des programmes
Java qui interprètent XSLT. Saxon semble être conçu pour fonctionner
sous Windows. Xalan fait partie du projet XML Apache et fonctionne
directement sous Linux et BSD. Il est conçu pour fonctionner avec FOP.

</para>

<para>

<ulink url="http://xml.apache.org/fop/">FOP</ulink> traduit des objets
de mise en forme XML (FO) en PDF. Il fait partie du projet XML Apache et
est conçu pour fonctionner avec Xalan.

</para>

</sect1>

<sect1><title>Outils de migration</title>

<para>

Le deuxième plus gros problème de DocBook est l'effort nécessaire pour
convertir les anciens balisages de présentation en balisage DocBook. Les
êtres humains sont généralement capables de convertir automatiquement la
présentation d'un document en une structure logique, parce qu'ils sont,
par exemple, capables de distinguer selon le contexte les cas où
l'italique est utilisé comme moyen d'accentuation de ceux où il signifie
autre chose, comme le fait que la phrase soit en langue étrangère.

</para>

<para>

D'une façon ou d'une autre, il est nécessaire rendre explicite ce type
de distinctions lors de la conversion de documents vers le format
DocBook. Parfois elles sont présentes dans l'ancien balisage mais ce
n'est en général pas le cas et l'information de structure manquante
doit, soit être déduite par une heuristique intelligente, soit être
ajoutée par un être humain.

</para>

<para>

Voici un résumé de l'état des outils de conversion à partir de divers
autres formats&nbsp;:

</para>

<variablelist>
<varlistentry>
<term>GNU Texinfo</term>
<listitem>
<para>

La <emphasis lang="en">Free Software Foundation</emphasis> s'est fixé
comme politique de permettre d'utiliser DocBook comme format d'échange.
Texinfo est suffisamment structuré pour permettre une conversion
automatique satisfaisante, et les versions 4.x de
<command>makeinfo</command> proposent une option
<option>--docbook</option> qui produit directement du format DocBook.
Vous trouverez plus d'information sur la <ulink
url="http://www.gnu.org/directory/texinfo.html">page du projet
makeinfo</ulink>.

</para>
</listitem>
</varlistentry>

<varlistentry>
<term>POD</term>
<listitem>
<para>

Il existe un module <ulink
url="http://www.cpan.org/modules/by-module/Pod/">POD::DocBook</ulink>
qui traduit le balisage POD (<foreignphrase lang="en">Plain Old
Documentation</foreignphrase>) en DocBook. Il prétend traduire
l'intégralité des balises POD sauf la balise italique L&lt;&gt;. La page
de manuel précise également <quote>Il n'est pas possible d'utiliser de
listes imbriquées pour une sortie en DocBook</quote> et fait remarquer
que le module a été intensivement testé.

</para>
</listitem>
</varlistentry>

<varlistentry>
<term>LaTeX</term>
<listitem>
<para>

LaTeX est (essentiellement) un langage de macros de balisage structurel
construit au-dessus de l'outil de mise en forme TeX. Il existe un projet
appelé <ulink
url="http://www.lrz-muenchen.de/services/software/sonstiges/tex4ht/mn.html">TeX4ht</ulink>
qui (selon l'auteur de PassiveTeX) est capable de produire du code
DocBook à partir de LaTeX.

</para>
</listitem>
</varlistentry>

<varlistentry>
<term>Pages de manuels et balisages basées sur troff</term>
<listitem>
<para>

On considère généralement qu'il s'agit du problème de conversion le plus
important et le plus désagréable. Et en effet le balisage de base de

<citerefentry>
  <refentrytitle>troff</refentrytitle>
  <manvolnum>1</manvolnum>
</citerefentry>

possède un niveau de présentation trop bas pour que des outils de
conversions puissent apporter quelque aide que ce soit. Cependant la
situation s'éclaircit significativement si l'on considère les
traductions de documents écrits avec des paquets de macros comme

<citerefentry>
  <refentrytitle>man</refentrytitle>
  <manvolnum>7</manvolnum>
</citerefentry>.

Ceux-ci sont suffisamment structurés pour permettre une traduction
automatique.

</para>
<para>

J'ai moi-même écrit un outil pour ce faire car je n'en trouvé aucun
capable de faire proprement le travail (et également parce que le
problème est intéressant). Il s'appelle <ulink
url="&home;/doclifter/">doclifter</ulink>. Il convertit au format SGML
ou XML DocBook les macros

<citerefentry>
  <refentrytitle>man</refentrytitle>
  <manvolnum>7</manvolnum>
</citerefentry>,

<citerefentry>
  <refentrytitle>mdoc</refentrytitle>
  <manvolnum>7</manvolnum>
</citerefentry>,

<citerefentry>
  <refentrytitle>ms</refentrytitle>
  <manvolnum>7</manvolnum>
</citerefentry>

ou

<citerefentry>
  <refentrytitle>me</refentrytitle>
  <manvolnum>7</manvolnum>
</citerefentry>.

Consultez la documentation pour plus d'informations.

</para>
</listitem>
</varlistentry>
</variablelist>

</sect1>
<sect1><title>Outils d'édition</title>

<para>

Il nous manque actuellement est un bon éditeur structurel libre pour les
documents SGML et XML.

</para>

<para>

Le projet <ulink url='http://conglomerate.org/'>Conglomerate</ulink>
vise spécifiquement à fournir un bon éditeur DocBook. Début 2004, ce
programme était toujours en version alpha.

</para>

<para>

Le projet <ulink
url='http://www.freespiders.org/projects/gmlview/'>MlView</ulink> est un
éditeur XML généraliste. Début 2004, il n'était pas assez documenté et
semblait être en version alpha.

</para>

<para>

<ulink url="http://www.lyx.org/">LyX</ulink> est un éditeur de texte
graphique utilisant LaTeX pour l'impression et permettant l'édition
structurelle du balisage LaTeX. Il existe un paquet LaTeX qui produit du
DocBook et un <ulink
url="http://bgu.chez.tiscali.fr/doc/db4lyx/">guide</ulink> qui décrit
comment écrire du SGML et du XML en utilisant LyX.

</para>

<para>

<ulink url="http://idx-getox.idealx.org/">GeTox</ulink>, l'éditeur XML
de GNOME, vise les utilisateurs ayant un profil non technique.
Malheureusement, ce logiciel est toujours en version alpha (depuis
août&nbsp;2001) et est plus un prototype qu'un outil utilisable. En
outre, l'équipe du projet ne semble pas très active. Le site du projet
n'a pas été mis à jour entre mai 2001 et janvier 2006 (date de
publication de la version française de ce guide).

</para>

<para>

<ulink url="http://www.math.u-psud.fr/~anh/TeXmacs/TeXmacs.html">GNU
TeXMacs</ulink> est un projet d'éditeur adapté à la rédaction de
documents techniques et mathématiques, et permettant l'affichage de
formules. La version 1.0 a été publiée en avril 2002. Les développeurs
prévoient une compatibilité XML à l'avenir, mais celle-ci n'est pas
encore réalisée.

</para>

<para>

<ulink url="http://www.freesoftware.fsf.org/thotbook/">ThotBook</ulink>
est un projet d'éditeur graphique pour DocBook basé sur la boîte à
outils Thot. Il est vraisemblablement moribond car la page web n'a pas
été mise à jour entre novembre 2001 et février 2006 (date de publication
de la version française de ce guide).

</para>

<para>

La plupart des gens continuent à écrire directement les balises à la
main dans vi ou emacs.

</para>

</sect1>

<sect1><title>Trucs et astuces</title>

<para>

Il est possible de produire un index en incluant une balise <sgmltag
class="emptytag">index</sgmltag> vide à l'endroit du document où vous
voulez qu'il apparaisse. Gardez en mémoire que, début 2004, cette
fonctionnalité était toujours assez fruste. Elle ne fusionnait pas les
intervalles et le rendu au format PostScript n'était pas encore d'une
qualité suffisante pour une utilisation sérieuse.

</para>

<para>Cet espace est réservé à d'autres trucs et astuces.</para>

</sect1>

<sect1><title>Pratiques et standards apparentés</title>

<para>

Les outils d'édition et de mise en forme du balisage DocBook sont en
train d'émerger, bien que lentement. Mais DocBook en soi est un moyen et
non une fin. Nous aurons besoin d'autres standards en plus de DocBook
pour atteindre l'objectif de bases de documents interrogeables que j'ai
évoqué au début de ce document. Les deux enjeux principaux sont le
catalogage de document et les méta-données.

</para>


<para>

Le projet <ulink
url="http://scrollkeeper.sourceforge.net/">Scrollkeeper</ulink> a pour
objectif de satisfaire ce besoin. Il fournit des points d'entrées
utilisables par les scripts d'installation et de désinstallation de
paquets pour enregistrer et désenregistrer leurs documentations dans une
base de données commune partagée et interrogeable.

</para>

<para>

Scrollkeeper utilise le format <ulink
url="http://www.ibiblio.org/osrt/omf/">Open Metadata Format</ulink>. Il
s'agit d'un standard d'indexation des documentations libres similaire à
un système de catalogue sur fiche de bibliothèque. L'idée est d'offrir
des fonctionnalités de recherches avancées utilisant aussi bien les
méta-données du catalogue que le texte de la documentation elle-même.

</para>

</sect1>

<sect1 id="sgml"><title>SGML et les outils SGML</title>

<para>

Dans les sections précédentes j'ai laissé de coté une bonne partie de
l'historique de DocBook. XML a un grand frère,

SGML<indexterm>
  <primary>SGML</primary>
</indexterm>

ou <foreignphrase lang="en">Standard Generalized Markup
Language</foreignphrase>.

</para>

<para>

Jusqu'en mi-2002, aucune discussion au sujet de DocBook n'aurait été
complète sans une longue excursion dans SGML, les différences entre SGML
et XML et des descriptions détaillées de la chaîne logicielle SGML
DocBook. La vie est désormais plus simple. Une chaîne logicielle XML
DocBook libre est disponible, elle fonctionne aussi bien que ne l'a
jamais fait la chaîne SGML et est beaucoup plus facile à utiliser. Si
vous ne pensez jamais avoir à traiter d'anciens documents SGML DocBook,
vous pouvez sauter la suite de cette section.

</para>

<sect2><title>DocBook SGML</title>

<para>

DocBook était à l'origine une application de SGML et il existait une
chaîne logicielle DocBook basée sur SGML, qui est désormais moribonde.
Il existe des différences mineures entre la DTD DocBook SGML et la DTD
DocBook XML que nous pouvons ignorer ici. La seule qui soit visible par
les utilisateurs est le fait que les balises SGML vides ne nécessitent
pas d'avoir une barre oblique ajoutée avant le &gt; de fermeture (la
barre oblique obligatoire signifie que les analyseurs XML peuvent être
beaucoup plus simples car ils n'ont pas à connaître la DTD pour savoir
quelles balises d'ouverture nécessitent des balises de fermeture).

</para>

<para>

Jusqu'à la version 4.01 (avant XHTML), HTML était une application de
SGML. TEI était à l'origine également une application de SGML. Les
équipes en charge de ces deux DTD sont passées à XML pour la même raison
que les développeurs de DocBook &mdash; c'est radicalement plus simple.
SGML était extrêmement complexe et s'est donc avéré impossible à gérer.
La spécification comportait 150 pages très denses et il n'a jamais été
vérifié qu'un logiciel l'ait entièrement mis en œuvre.

</para>

<para>

Le schéma de chaîne logicielle que j'ai donné plus tôt était simplifié
car il montrait uniquement la chaîne XML. Voici la version
historiquement correcte&nbsp;:

</para>

<mediaobject>

<imageobject>
<imagedata fileref="&images;schema-04.png" role="html" format="PNG"/>
</imageobject>

<imageobject>
<imagedata fileref="&images;schema-04.svg" role="fo" format="SVG"/>
</imageobject>

</mediaobject>

<para>

La chaîne logicielle DSSSL servait à traiter le SGML DocBook. Dans cette
chaîne, un document au format DocBook est traité par un des deux moteurs
de feuilles de style (Jade ou OpenJade). Il est ainsi transformé en
balisage de macros TeX qui était convertit en DVI par un paquet appelé
JadeTex pour être finalement transformé en PostScript.

</para>

</sect2>

<sect2><title>Outils SGML</title>

<para>

Le projet <ulink
url="http://sources.redhat.com/docbook-tools/">docbook-tools</ulink>
fournit des outils libres pour convertir du SGML DocBook en HTML,
PostScript et dans d'autres formats. Ce paquet est intégré à la
distribution Red Hat et à d'autres distributions Linux. Il est maintenu
par Mark Galassi.

</para>

<para>

<ulink url="http://www.jclark.com/jade/">Jade</ulink> est un moteur
utilisé pour appliquer des feuilles de style DSSSL à des documents SGML.
Il est maintenu par James Clark.

</para>

<para>

<ulink url="http://openjade.sourceforge.net/">OpenJade</ulink> est un
projet communautaire entrepris parce que ses créateurs pensaient que la
maintenance de Jade réalisée par James Clark n'était pas satisfaisante.
Les programmes de docbook-tools utilisent OpenJade.

</para>

<para>

<ulink
url="http://www.tei-c.org.uk/Software/passivetex/">PassiveTeX</ulink>
est le paquet de macros LaTeX utilisé par
<application>xmlto</application> pour produire du DVI à partir du XML
DocBook. <ulink url="http://jadetex.sourceforge.net/">JadeTex</ulink>
est le paquet de macros LaTeX utilisé par OpenJade pour produire du DVI
à partir du SGML DocBook.

</para>

</sect2>

<sect2><title>Pourquoi le SGML DocBook est mort</title>

<para>

La chaîne logicielle DSSSL, si l'on considère les nouveaux
développements, est, en pratique, morte. La chaîne XSLT a atteint
mi-2002 une qualité suffisante pour les environnements de production.
Une version fonctionnelle de cette chaîne est intégrée à la distribution
Red Hat 7.3. C'est sur cette chaîne que les développeurs DocBook
concentrent la plupart de leurs efforts.

</para>

<para>

La raison du passage à XML est triple. Premièrement, SGML s'est avéré
être trop compliqué à utiliser&nbsp;; deuxièmement, DSSSL s'est avéré
trop compliqué à appliquer et enfin des parties significatives de la
chaîne DSSSL se sont avérées être fragiles et trop mal conçues.

</para>

<para>

Apparenté à SGML, XML possède un nombre de fonctionnalités réduit, ce
qui est suffisant dans la plupart des cas tout en simplifiant grandement
sa compréhension et la mise en œuvre d'analyseurs. Les outils de
traitement SGML (comme les analyseurs de validation) doivent mettre en
œuvre bon nombre de fonctionnalités non utilisées par DocBook et les
autres systèmes de balisage de textes. Le fait d'enlever ces
fonctionnalités a rendu XML plus simple et les outils de traitement XML
plus rapides.

</para>

<para>

Le langage utilisé pour décrire les DTD SGML est suffisamment épineux et
rébarbatif pour que l'écriture de DTD SGML relève du domaine de la
science occulte. Les DTD XML, d'un autre coté, peuvent être décrites
comme un dialecte d'XML lui-même. Un langage de DTD séparé n'a donc pas
lieu d'être. Une description XML d'une DTD XML est appelée un

<firstterm>schéma</firstterm><indexterm>
  <primary>schéma</primary>
</indexterm>.

L'usage du terme DTD lui-même va probablement se perdre au fur et à
mesure de la standardisation des schémas.

</para>

<para>

Cependant la chaîne logicielle DSSSL est surtout morte à cause de DSSSL
lui-même&nbsp;: le langage de description des feuilles de style de SGML
était trop obscur pour la plupart des êtres humains ce qui a rendu les
feuilles de style trop difficiles à écrire et à modifier<footnote><para>

Il s'agissait d'un dialecte de Scheme. Votre humble auteur, adepte de
LISP depuis des lustres, est pris d'effarement à l'idée que cela puisse
en faire fuir certains

</para></footnote>.

</para>

<para>

Les défenseurs d'XML aiment résumer tous ces changements ainsi&nbsp;:
<quote>XML&nbsp;: ça a bon goût et c'est facile à digérer.</quote>

</para>

</sect2>

<sect2><title>SGML-Tools</title>

<para>

SGML-Tools était le nom d'une DTD utilisée par le <ulink
url="http://www.tldp.org">Projet de documentation Linux (LDP)</ulink>,
développée il y a quelques années alors que la chaîne logicielle DocBook
n'existait pas. Le balisage de SGML-Tools était plus simple mais aussi
beaucoup moins souple que DocBook. La chaîne logicielle SGML-Tool
d'origine (outil de mise en forme, DTD et feuilles de style) est morte
depuis déjà un certain temps mais son successeur, appelé <ulink
url="http://sourceforge.net/projects/sgmltools-lite/">SGML-tools
Lite</ulink> est toujours mis à jour.

</para>

<para>

Le Projet de documentation Linux a progressivement abandonné SGML-Tools
au profit de DocBook, mais il est toujours possible que vous ayez à
reprendre de vieux guides pratiques. Ils sont reconnaissables par leur
entête d'identification <quote>&lt;!doctype linuxdoc system&gt;</quote>.
Si jamais cela vous arrive, convertissez cette chose au format XML
DocBook et enterrez rapidement la vieille version.

</para>
</sect2>
</sect1>

<sect1><title>Références</title>

<para>

Une des choses qui compliquent l'apprentissage de DocBook est le fait
que les sites sur le sujet ont tendance à submerger les débutants de
listes de standards du W3C, d'exercices volumineux sur la théologie du
balisage et de terminologie abstraite.

</para>

<para>

<quote><foreignphrase lang="en"><ulink
url="http://xml.oreilly.com/news/dontlearn_0701.html">Take My Advice:
Don't Learn XML</ulink></foreignphrase></quote> (<quote>Suivez mon
conseil, n'apprenez pas XML</quote>) de Michael Smith sonde le monde
d'XML depuis un angle similaire à celui de ce document.

</para>

<para>

<quote><citetitle><foreignphrase lang="en">DocBook: The Definitive
Guide</foreignphrase></citetitle></quote> Norman Walsh est disponible en
<ulink url="http://www.oreilly.com/catalog/docbook/">version
papier</ulink> et sur le <ulink
url="http://www.docbook.org/tdg/en/html/docbook.html">web</ulink>. C'est
en fait la référence qui fait autorité mais c'est un désastre en tant
que document d'introduction ou d'apprentissage. Lisez plutôt ceci&nbsp;:

</para>

<para>

<quote><foreignphrase lang="en"><ulink
url="http://opensource.bureau-cornavin.com/crash-course/">Writing
Documentation Using DocBook: A Crash
Course</ulink></foreignphrase></quote>. C'est un excellent guide
d'apprentissage.

</para>

<para>

Il existe une excellente <quote><ulink
url="http://www.dpawson.co.uk/docbook/">FAQ DocBook (en
anglais)</ulink></quote> contenant de nombreuses informations sur la
personnalisation du style du HTML produit. Il existe également un <ulink
url="http://docbook.org/wiki/moin.cgi">wiki</ulink> DocBook (en
anglais).

</para>

<para>

Si vous écrivez pour le Projet de documentation Linux, lisez le
<quote><foreignphrase lang="en"><ulink
url="http://www.linuxdoc.org/LDP/LDP-Author-Guide/index.html">LDP Author
Guide</ulink></foreignphrase></quote>.

</para>

<para>

La meilleure introduction à SGML et XML, que j'ai personnellement lue
d'une traite, est celle de David Megginson&nbsp;: <quote><foreignphrase
lang="en"><ulink
url="http://www.amazon.fr/exec/obidos/ASIN/0136422993/171-8635393-7110656">Structuring
XML Documents</ulink></foreignphrase></quote> (Prentice-Hall,
ISBN&nbsp;: 0-13-642299-3).

</para>

<para>

Au sujet d'XML, le livre en anglais <quote><ulink
url="http://oreilly.com/catalog/9780596002923/">XML in a
Nutshell</ulink></quote> de W. Scott Means et Elliotte
<quote>Rusty</quote> Harold, est très bien.

</para>

<para>

<quote><ulink
url="http://www.amazon.fr/exec/obidos/ASIN/274640088X/171-8635393-7110656">XML
guide de l'utilisateur</ulink></quote> semble être un ouvrage de
référence assez approfondi sur XML et les standards associés (dont
notamment Formatting Objects).

</para>

<para>

Enfin, le site <quote><foreignphrase lang="en"><ulink
url="http://xml.coverpages.org/">The XML Cover
Pages</ulink></foreignphrase></quote> vous entraînera dans la jungle des
standards XML, si c'est vraiment ce que vous voulez.

</para>

</sect1>
</article>