<?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     "images/DocBook-Demystification-HOWTO/">
]>

<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>
