original in en Egon Willighagen
en to fr Stéphane Delcroix
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.
Cet article décrit l'utilisation de Kate et de son plugin XML comme outil pour l'édition de documents XML DocBook.
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 .
./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:
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).
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 :
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:
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:
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 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.
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.
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.