La puissance et la versatilité du format docbook permet de convertir un document dans d'autres formats. S'il est aisé de produire des documents en HTML, XHTML, PDF, Postscript, etc., il peut aussi être utile de produire des documents au format Word (et inversement).

De docbook vers Word

docbook en version simplifiée

Les feuilles de styles téléchargeables sur le site officiel permettent de convertir le document docbook en Word. Cependant, il faudra prendre quelques précautions.

Le format docbook natif n'est pas géré complètement. Il faudra utiliser la version docbook simplifiée.

La version docbook simplifiée ne prend que la racine article en charge. Plus question de book ou set, tout en restant compatible avec le format standard. Bien que plus légère, cette version est amplement suffisante pour la majorité des documents à produire.

Il faudra cependant toujours garder à l'esprit que le docbook produit doit se conformer à cette version, sous peine de ne pas pouvoir ouvrir le document final.

Configuration des feuilles de style docbook

Le paquet de feuilles de style docbook-xsl contient un certain nombre de répertoires en fonction des transformations désirées. L'on dispose d'un certain nombre de format (html, xhtml, fo, etc.) et aussi d'un répertoire roundtrip contenant tout ce qu'il faut pour convertir du docbook en word et inversement.

Pour cela il est nécessaire cependant de paramétrer les transformations. Ouvrons le fichier param.xsl et définissons le paramètre ainsi :

<xsl:param name="wordml.template">template.xml</xsl:param>

template.xml est un modèle de document fourni avec les feuilles de styles et généré à partir de template.dot, un modèle de document pour word, avec un certain nombre de styles prédéfinis. Ce modèle est protégé par un mot de passe pour éviter les modifications accidentelles. Cependant, si vous voulez le modifier afin de l'adapter à votre besoin, le mot de passe est docbook.

Bien entendu, vous pouvez définir votre propre modèle, générer un modèle au format xml et définir wordml.template avec votre nouveau modèle.

Un premier essai

Dans ce répertoire roundtrip, nous disposons de feuille de style (XSL), de modèles et de documents docbook. En premier lieu, l'on pourrait penser que les documents docbook présents peuvent servir d'exemple, mais ce n'est pas le cas. Ils ne génèreront pas de documents Word valides.

Pour notre premier exemple, prenons le fichier specifications.xml du répertoire et modifions le légèrement en ôtant la partie articleinfo.

Créons un script qui va convertir ensuite ce fichier en document word, de la façon suivante :

msxsl.exe specifications.xml E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\dbk2wordml.xsl -o test1.xml

Ou bien, avec saxon :

java -jar E:\Programmes\saxon\saxon9.jar -t -s:specifications.xml -xsl:E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\dbk2wordml.xsl -o:test1.xml

Le fichier peut être ouvert avec Word :

Remarque

La feuille de style dbk2pages.xsl est à utiliser dans le contexte du logiciel Pages d'Apple.

La feuille de style dbk2ooo.xsl est à utiliser dans le contexte du logiciel OpenOffice Writer.

Mais tout n'est pas parfait, notamment ce qui concerne les tableaux.

Quelques modifications

Les tableaux

Par défaut, vous constaterez que les tableaux sont vides. en effet, les cellules d'un tableau sont normalement définies de la façon suivante :

<entry colname="col1">DocBook element</entry>

Mais cela n'est pas suffisant. Après conversion, les cellules du tableaux apparaîtront vides. Il faudt donc les convertir en :

<entry colname="col1"><para>DocBook element</para></entry>
...

C'est ainsi beaucoup mieux !

Pour savoir comment réagit la conversion sur d'autres notations de balises, le plus simple est de partir d'un fichier Word créé avec le modèle fourni puis de le convertir en docbook et de voir à quoi cela ressemble.

De Word vers docbook

Le fichier template.dot founi dans le répertoire roundtrip permet de créer des documents dont la conversion en docbook sera aisée. Enregistrez ce fichier au format xml. Il ne reste plus qu'à lancer la conversion :

msxsl.exe monfichier.xml E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\wordml2normalise.xsl -o normalise.xml
msxsl.exe normalise.xml E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\normalise2sections.xsl -o sections.xml
msxsl.exe sections.xml E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\sections2blocks.xsl -o blocks.xml
msxsl.exe blocks.xml E:\docbook-xsl-1.74.0\docbook-xsl-1.74.0\roundtrip\blocks2dbk.xsl -o docbook.xml

Et voilà !

Remarque

La feuille de style pages2normalise.xsl est à utiliser à la place de wordml2normalise.xsl dans le contexte du logiciel Pages d'Apple.