L'édition de documents XML DocBook

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Egon Willighagen

en to fr Stéphane Delcroix

AboutTheAuthor:[àœber den Autor

Il a une maîtrise en chimie de l'Université de Nijmegen, et effectue sa thèse de doctorat en représentation moléculaire dans la même université. Il joue au basketball et écrit des applications en Java.

Abstract:[Zusammenfassung]

Cet article décrit l'utilisation de Kate et de son plugin XML comme outil pour l'édition de documents XML DocBook.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Introduction

L'édition de documents XML en OpenSource a longtemps été un problème. Les utilisateurs ont besoin d'un éditeur capable de produire du XML valide, et si possible de visualiser directement le résultat. Il existe des éditeurs capables de cela, mais ils sont propriétaires. Dans le monde OpenSource, il y a quelques programmes ne disposant pas d'une belle interface graphique mais qui peuvent produire des documents XML valides et vous conseiller sur les éléments autorisés à  une position spécifique.

Il y a bien sûr Emacs avec son mode mineur DocBook qui fait ça très bien (voir le précédent article sur DocBook ). Ce mode spécial offre le choix de placer des éléments fils dans le document sur la base d'éléments déjà présents dans le document. Il permet de plus la complétion par la touche tab à partir de cette connaissance.

Je ne vais pas en parler dans cet article, mais plutôt présenter Kate comme éditeur XML DocBook .

Kate

Kate est un des éditeurs de l'environement de bureau KDE. Il est relativement léger, supporte l'ouverture simultanée de fichiers et dispose également d'une surbrillance de syntaxe pour XML. De plus, un plugin XML a été créé l'an dernier par Daniel Naber qui peut vous aider à  écrire des documents XML valides. Dans KDE 3.0, le plugin XML pour Kate est inclus dans le paquetage kde-addon. Si le paquetage kde-addon de KDE 3.0 n'est pas encore installé, faites-le en ajoutant une des nombreuses distributions de binaires ou en compilant le paquetage à partir des sources:
./configure --prefix=/chemin/d'installation/de/kde3
make
sudo make install

Lorsque le plugin est installé, vous devez encore en avertir Kate. Pour ce faire, sélectionnez "Configure Kate" dans le menu "Settings". Dans le gestionnaire de "Plugins" vous pouvez placer le plugin XML dans la liste des modules chargés:

[gestionnaire de plugin de Kate]>

Construire la DTD Meta

Les DTD meta sont générées avec le dtdparser de Norman Walsh, dont les paquetages peuvent être téléchargés depuis SourceForge.net.

J'ai utilisé la version 2.0beta6 légèrement modifiée. Par exemple, J'ai du changer le chemin dans la première ligne du script dtdparse pour adapter le chemin vers mon installation de Perl. L'exécution du programme devrait donner quelque chose comme ceci:

> ./dtdparse /path/to/docbookx.dtd
Public ID: unknown
System ID: /usr/share/sgml/docbook/dtd/xml/4.1.2/docbookx.dtd
SGML declaration: unknown, using defaults for xml and namecase
Loading dbnotnx.mod
Loading dbcentx.mod
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsa.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsb.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsc.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsn.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamso.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOamsr.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISObox.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOcyr1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOcyr2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOdia.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk3.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOgrk4.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOlat1.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOlat2.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOnum.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOpub.ent
Loading /usr/share/sgml/entities/xml-iso-entities-8879.1986/ISOtech.ent
Loading dbpoolx.mod
Loading calstblx.dtd
Loading dbhierx.mod
Loading dbgenent.mod
Parse complete.
Writing docbookx.dtd.xml...
Done.

Remarquez le nombre important d'entités chargées. C'est en partie pour cette raison que la DTD Meta obtenue pèse 1.63 Mibibytes. Mais grâce à un processeur XSLT tel que xsltproc cela peut être réduit à  0.96 MiB avec la feuille de style simplify_dtd.xsl du paquetage kde-addon:

> xsltproc simplify_dtd.xsl docbookx.dtd.xml > docbook-xml-4.1.2..dtd.xml

Le docbook-xml-4.1.2.dtd.xml obtenu peut être copié dans /chemin/vers/kde3/share/apps/katexmltools/ où /chemin/vers est remplacé par le chemin du répertoire dans lequel kde3 est vraiment installé. Mais votre répertoire personnel peut aussi convenir, puisque le plugin XML réclame un nom de fichier lors de l'assignation d'une nouvelle DTD Meta (voir plus bas).

Editer

Pour créer un nouveau document XML, une DTD Meta doit être attribuée. Ceci peut être fait en choisissant "Assign Meta DTD" dans le menu "XML Plugin". Une fenetre de sélection de fichier apparaît et vous pouvez choisir la DTD à  utiliser. Dans ce cas, c'est la DTD Meta XML DocBook 4.1.2 que nous venons de créer. Une nouvelle fenêtre indique l'état d'avancement :

[Fenêtre d'analyse Meta DTD]

Dans le nouveau document vide, nous tapons "<book>". Pour refermer l'élément nous tapons F11. Si la surbrillance de syntaxe n'est pas encore activée, vous pouvez le faire manuellement en sélectionnant "Highlight Mode" dans le menu "Document". La surbrillance de syntaxe XML se trouve dans le sous-menu "Markup".

Comme nous avons oublié quels sont les attributs de l'élément book, nous plaçons le curseur à la fin du mot book dans la balise de début et nous pressons Ctrl+Return. Une fenêtre contextuelle doit vous montrer une liste de tous les attributs disponibles pour l'élément courant:

[Insérer un attribut]

Placer le curseur entre les "" et presser Ctrl+Return, vous donne aussi les valeurs possible pour l'attribut si elles sont définies dans la DTD. Ce qui n'est pas le cas de l'attribut id.

Après avoir inséré l'attribut nous avons ce code XML DocBook:

<book id="SomeID">
</book>

En plaçant le curseur entre les balises d'ouverture et de fermeture de l'élément book et en pressant Ctrl+Return à cette position, vous obtenez une nouvelle liste, mais cette fois, avec tous les éléments fils disponibles pour book. Nous pouvons, par exemple, sélectionner l'élément titre:

[Insérer un élément]

Un inconvénient de ce plugin vient de ce qu'il ne tient compte que des éléments fils, mais pas de l'ordre ni du nombre de fois dans lesquels ils peuvent se produire. Par exemple, la DTD n'autorise pas deux éléments title ou plus, mais le plugin XML ne vous en avertit pas. Comme le plugin n'a pas (encore) d'option de validation, il est encore très facile d'obtenir des documents non valides.

Un résumé des fonctionalités du plugin est donné dans la table ci-dessous:

Fonction Commande
Insérer XML (éléments et attributs) Ctrl+Return
Insérer Entité F10
Fermer la balise F11

Le DocBook KDE

Le projet KDE lui-même utilise aussi DocBook comme format de sa documentation. ainsi, le plugin XML est fourni par défaut avec une version de DocBook adaptée pour KDE . Choisir cette DTD Meta pour DocBook est bien sûr préférable à la DTD Meta de DocBook XML 4.1.2 pour l'écriture de documentation KDE.

MathML et SVG

DocBook supporte aussi maintenant MathML pour inclure des équations mathématiques dans les documents. Une DTD mixte pour la validation des documents DocBook avec du code MathML peut être trouvé dans ce courrier électronique

La DTD SVG n'a malheureusement pas été écrite de manière à l'inclure dans DocBook. Mais des travaux sont en cours pour y parvenir.

L'utilisation du plugin XML pour Kate nécessite la génération d'une nouvelle DTD Meta basée sur la DTD combinée avec dtdparse.

Conclusion

Le plugin XML pour Kate peut vous être très utile lors de l'édition de documents XML DocBook. Il n'est pas parfait, mais encore une fois, son développement n'a commencé que récemment. Avec KDE 3.0, il est maintenant disponible pour tout le monde.