DocBook XML documenten bewerken met Kate
Auteur: Egon Willighagen
Herziening 0.3
Licenties en verdiensten
Deze howto gaat over Kate als een editor voor DocBook / XML.
Introductie
XML bewerken met open source was lange tijd geen sinecure. Je hebt een editor nodig die geldige XML produceert, en zo mogelijk het resultaat ook meteen weergeeft. Er zijn editors die dit alles kunnen, maar ze zijn meestal niet 'open'. De editors uit de open hoek geven geen grafisch resultaat weer, maar ze helpen wel om geldige XML te schrijven en ze adviseren je over de elementen die je mag gebruiken op een bepaalde plaats in het document.
Kate
Kate is één van de editors van KDE. Het is vrij licht, heeft ondersteuning voor meerdere open documenten en heeft syntax highlighting, ook voor XML. Nog interessanter is de XML-plugin die Daniel Naber heeft geschreven, die je kan helpen om geldige XML te schrijven. Sinds KDE 3.0 zit deze Kate-plugin in het kdeaddons-pakket. Als je dat nog moet installeren, kan je dat doen door een binaire versie te installeren, ofwel door het te compileren uit de broncode:
./configure --prefix=`kde-config --prefix` make sudo make install
Wanneer de plugin geïnstalleerd is, moet je Kate hiervan op de hoogte stellen. Via het menu Instellingen klik je de optie Kate instellen ... aan. Het dialoogvenster Kate configureren verschijnt nu. Klik aan de linkerzijde van dit dialoogvenster op Toepassing en selecteer vervolgens uit de boomstructuur de optie Plugins. Dit zal het Pluginbeheer tonen:
Het maken van de Meta DTD
Meta DTDs worden gemaakt met dtdparser van Norman Walsh, waarvan de pakketten op SourceForge.net staan.
Het kan zijn dat je de eerste regel van het dtdparse-programma (wat een Perl-script is) moet aanpassen om naar de juiste plaats van jouw Perl-installatie te verwijzen. Pas dan de eerste regel aan van het bestand dtdparse:
#!/usr/local/bin/perl5 -- # -*- Perl -*- [..knip..]
wordt ..
#!/usr/bin/perl -- # -*- Perl -*- [..knip..]
Voor iedere distributie kan de locatie van de Perl-installatie anders zijn. Indien je een distributie hebt die gebruik maakt van rpm kun je het commando rpm -ql perl geven om te achterhalen waar jouw distributie de Perl-installatie plaatst.
We draaien het programma dtdparser als volgt:
./dtdparse /pad/naar/docbookx.dtd
./dtdparse /usr/share/sgml/db41xml/docbookx.dtd Public ID: unknown System ID: /usr/share/sgml/db41xml/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.
Merk op dat er veel entities geladen worden. Mede hierdoor is de resulterende Meta DTD 1.63 MB groot.
Het aangemaakte bestand docbookx.dtd.xml kun je dan kopiëren naar /pad/naar/kde3/share/apps/katexmltools/, waar /pad/naar uiteraard het pad is naar de map waar je KDE3 geïnstalleerd staat. In je homedir is ook een mogelijkheid, want de XML-plugin zal je naar een bestandsnaam vragen wanneer je een nieuwe Meta DTD toewijst (zie verder).
Het schrijven
Bij het starten van een nieuw DocBook XML-document moet je een Meta-DTD toewijzen. Dit doe je door Meta-DTD toewijzen te kiezen in het menu XML-plugin. Een venster verschijnt waarin je de DTD van je keuze kunt selecteren. In dit geval is dat de DocBook XML 4.1.2 Meta DTD, dus docbookx.dtd.xml, die we net gemaakt hebben. Er verschijnt een voortgangsbalkje:

In het nieuwe, lege document typen we <book>. Om de tag te sluiten gebruiken we de toetscombinatie Ctrl+<. Als de syntax kleuring nog niet aanstaat, kun je dat aanzetten via Hulpmiddelen -> Accentuering -> Markup. Kies hier voor XML.
Omdat we vergeten zijn wat de attributen zijn van het element book, plaatsen we de cursor op het eind van het woord book, nog net voor de sluittag. Je geeft een spatie en je zult zien dat er binnen Kate een selectielijst verschijnt. Deze selectielijst geeft je een lijst van alle mogelijke attributen voor het element book waaruit je kunt selecteren.
We selecteren id van de selectielijst.
Als je de cursor tussen de aanhalingstekens ="" van een attribuut zet, kan de toetscombinatie Ctrl+Enter je zelfs vertellen wat hier de mogelijke waarden zijn - voor zover de DTD daar informatie over geeft. Bij het id attribuut is dat niet het geval.
We hebben nu de volgende code:
<book id="EenID"> </book>
Als we nu tussen beide book tags gaan staan, dan geeft Ctrl+Enter een dialoogvenster met een selectielijst. Via deze selectielijst kunnen we alle mogelijke dochter-elementen van het element book gebruiken. We selecteren bijvoorbeeld het element title:
Een nadeel van de plugin is dat hij wel de dochter-elementen kent, maar niks weet van hun toegelaten aantal of volgorde. Bijvoorbeeld wanneer de DTD zegt dat je maar één titel element mag gebruiken, zal de XML-plugin je niet waarschuwen als je er twee schrijft. Omdat deze plugin geen validatiemogelijkheid heeft kun je nog steeds ongeldige documenten maken.
Kortom de mogelijkheden van de plugin zijn:
| Taak | Opdracht |
| XML Invoegen (elementen en attributen) |
Ctrl+Return |
| Tag Sluiten | Ctrl+< |
KDE DocBook
Het KDE project zelf gebruikt ook DocBook als het formaat voor de documentatie. De XML-plugin wordt dan ook standaard meegeleverd met de KDE-versie van DocBook. Het is uiteraard aangewezen om die Meta DTD voor DocBook te gebruiken (in plaats van de Meta DTD voor DocBook XML 4.1.2) indien je KDE documentatie schrijft.
MathML en SVG
DocBook ondersteunt tegenwoordig MathML voor het invoegen van wiskundige vergelijkingen. Een 'gemengde' DTD om DocBook documenten met MathML erin te valideren kun je vinden in deze email.
De SVG DTD is er spijtig genoeg niet op berekend om gemengd te worden met DocBook. Maar er wordt in ieder geval aan gewerkt. Om dit in de Kate XML plugin te doen moet je met dtdparse een nieuwe Meta DTD maken gebaseerd op de samengestelde DTD.
Licenties en verdiensten
Dank aan Egon Willighagen voor de orginele howto. Fabrice Mous heeft hier en daar de howto aangepast aan de huidige versie van Kate. De licentie is GNU vrije-documentatielicentie zoals dat ook is aangegeven op de website van LinuxFocus (artikel dateert van voor 2004).
Het is toegestaan dit document te kopiëren, te verdelen en/of te wijzigen onder de voorwaarden van de GNU vrije-documentatielicentie, versie 1.1 of een latere versie gepubliceerd door de Free Software Foundation; zonder invariante paragrafen, zonder vooromslagteksten, en zonder achteromslagteksten.
Over deze site | Laatst gewijzigd: 05 april 2004, 22:14 door: Fabrice Mous


