<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//NL"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.28"> <META NAME="LFCATEGORY" CONTENT="Applications"> <TITLE>lf201, Applications: DocBook XML documenten bewerken</TITLE> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-family:monospace,Courier } p.cl { color:#EE9500 } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm; text-align:center } p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:none; border-width:medium; border-color:#aedbe8; padding:0.1cm; text-align:left } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } .mark { background-color:#e6e6ff } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html --> <!-- this is used by a number of tools: =LF=AUTHOR: Egon Willighagen =LF=CAT___: Applications =LF=TITLE_: DocBook XML documenten bewerken =LF=NUMBER: 201 =LF=ANAME_: article201.shtml --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar --> <!-- top navegation bar --> <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif" alt="[LinuxFocus-icon]" width="319" height="45" align="left" border="0"></TD> <TD class="top"> <TABLE summary="topbar_1_links" width="100%"> <TR align="right"> <TD class="top"><A class="nodec" href="../index.shtml"><FONT color= "#DDDDDD" size="2">Home</FONT></A> | <A class= "nodec" href="../map.html"><FONT color= "#DDDDDD" size="2">Map</FONT></A> | <A class= "nodec" href="../indice.html"><FONT color= "#DDDDDD" size="2">Index</FONT></A> | <A class="nodec" href="../Search/index.html"><FONT color= "#DDDDDD" size="2">Zoek</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD WIDTH="20%"><A class="nodec" href="../News/index.html"><FONT color= "#FFFFFF">Nieuws</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Archieven</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color= "#FFFFFF">Links</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">Over LF</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.1 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dit artikel is beschikbaar in: <A href="../../English/May2002/article201.shtml">English</a> <A href="../../Castellano/May2002/article201.shtml">Castellano</a> <A href="../../ChineseGB/May2002/article201.shtml">ChineseGB</a> <A href="../../Deutsch/May2002/article201.shtml">Deutsch</a> <A href="../../Francais/May2002/article201.shtml">Francais</a> <A href="../../Italiano/May2002/article201.shtml">Italiano</a> <A href="../../Nederlands/May2002/article201.shtml">Nederlands</a> <A href="../../Portugues/May2002/article201.shtml">Portugues</a> <A href="../../Turkce/May2002/article201.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- SSI_INFO STOP --> <!-- 2pdaIgnoreStop --> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 WIDTH="190" > <TR> <TD> <!-- 2pdaIgnoreStart --> <!-- PALM DOC --> <TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD> <font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font> </TD> </TR> </TABLE> <!-- END PALM DOC --> <!-- 2pdaIgnoreStop --> <br> <IMG src="../../common/images/EgonWillighagen.jpg" alt="[Egon Willighagen]" height="102" width="79"> <BR>door Egon Willighagen <br> <small><egonw(at)linuxfocus.org></small> <BR><BR> <I>Over de auteur:</I><BR> <P>Haalde zijn masters degree in de chemie aan de Universiteit van Nijmegen en doet daar nu ook zijn PhD onderzoek naar moleculaire representatie. Speelt basketbal en programmeert Java toepassingen.</P> <!-- TRANSLATED TO nl --> <BR><BR><I>Vertaald naar het Nederlands door:</I><BR> Floris Lambrechts <small><floris(at)linuxfocus.org></small> <br> <!-- TRANSLATED TO STOP --> <BR><i>Inhoud</i>: <UL> <LI><A HREF="#201lfindex0">Introductie</A></LI> <LI><A HREF="#201lfindex1">Kate</A></LI> <LI><A HREF="#201lfindex2">Het maken van de Meta DTD</A></LI> <LI><A HREF="#201lfindex3">Het schrijven</A></LI> <LI><A HREF="#201lfindex4">KDE DocBook</A></LI> <LI><A HREF="#201lfindex5">MathML en SVG</A></LI> <LI><A HREF="#201lfindex6">Conclusie</A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=201&lang=en">Talkback voor dit artikel</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <H2>DocBook XML documenten bewerken</H2> <IMG src="../../common/images/article201/logo.png" width="42" height="44" alt="[Illustratie]" hspace="10"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Kort</i>: <P> <P>Dit artikel beschrijft het gebruik van Kate en z'n XML plugin voor het schrijven van DocBook XML documenten.</P> <br><br><!-- HR divider --><table width="300" align="center" border="0"> <tr> <td bgcolor="#8282e0"><IMG src="../../common/images/transpix.gif" width="1" height="2" alt=""></td> </tr> </table> <!-- BODY OF THE ARTICLE --> <A NAME="201lfindex0"> </A> <H2>Introductie</H2> <P>XML bewerken met OpenSource 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.</P> <P>Er is uiteraard Emacs met z'n DocBook minor mode, die best goed werkt (zie het vorige <A href="../May2000/article152.shtml">DocBook artikel</A>). Deze speciale mode maakt het mogelijk om elementen te kiezen uit een lijst die afhankelijk is van de elementen die al aanwezig zijn. En ook tab-completion, gebaseerd op dezelfde info, is mogelijk.</P> <P>Dit artikel echter, gaat over Kate als een editor voor DocBook / XML.</P> <A NAME="201lfindex1"> </A> <H2>Kate</H2> <A href="http://www.kde.org/kate">Kate</A> is één van de editors van de KDE desktopomgeving. Het is vrij licht, heeft ondersteuning voor meerdere open documenten en heeft syntax kleuring (<em>highlighting</em>), ook voor XML. Nog interssanter is de XML plugin die Daniel Naber vorig jaar schreef. Die kan je helpen om geldige XML te schrijven. In <A href="http://www.kde.org/announcements/announce-3.0.html">KDE 3.0</A> zit deze Kate-plugin in het kde-addon 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: <PRE> ./configure --prefix=/pad/waar/je/kde3/staat make sudo make install </PRE> <P>Wanneer de plugin geïnstalleerd is, moet je Kate hiervan op de hoogte stellen. Ga naar "Kate instellen" in het "Instellingen" menu. In de "Plugins" beheerder zet je de XML in de lijst met geladen plugins :</P> <CENTER> <IMG src="../../common/images/article201/pluginmanager.png" width="586" height="540" alt="[Kate's plugin manager]"> </CENTER> Noot van de vertaler: Kate kent ook Nederlands! <A NAME="201lfindex2"> </A> <H2>Het maken van de Meta DTD</H2> <P>Meta DTDs worden gemaakt met <A href="http://www.nwalsh.com/perl/dtdparse/index.html">dtdparser</A> van Norman Walsh, waarvan de pakketten op <A href="http://sf.net/project/showfiles.php?group_id=30351">SourceForge.net</A> staan.</P> <P>Ik gebruikte een licht aangepaste versie 2.0beta6. Bijvoorbeeld het eerste lijntje van het dtdparse programma moest ik aanpassen om naar de juiste plaats van mijn Perl installatie te verwijzen. Het programma draaien geeft iets als:</P> <PRE> > ./dtdparse /pad/naar/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. </PRE> <P>Merk op dat er veel 'entities' geladen worden. Mede hierdoor is de resulterende Meta DTD 1.63 <A href="http://slashdot.org/comments.pl?sid=26830&cid=2896481">Mibibytes</A> groot. Maar met een XSLT processor zoals <A href="http://xmlsoft.org/XSLT/xsltproc2.html">xsltproc</A> kan dit verkleind worden tot 0.96 MiB met de simplify_dtd.xsl stylesheet van het kde-addon pakket:</P> <PRE> > xsltproc simplify_dtd.xsl docbookx.dtd.xml > docbook-xml-4.1.2.dtd.xml </PRE> <P>Het aangemaakte docbook-xml-4.1.2.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).</P> <A NAME="201lfindex3"> </A> <H2>Het schrijven</H2> <P>Bij het starten van een nieuwe DocBook XML document moet je een Meta DTD toewijzen. Dit doe je door "Assign Meta DTD" te kiezen in het "XML Plugin" menu. 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 die we net gemaakt hebben. Er verschijnt nu een nieuw dialoog venster dat je informeert over de voortgang:</P> <CENTER> <IMG src="../../common/images/article201/dtdparsing.png" width="208" height="126" alt="[Meta DTD parsing dialoogvenster]"> </CENTER> <P>In het nieuwe, lege document typen we "<book>". Om de tag te sluiten typen we F11. Als de syntax kleuring nog niet aanstaat, kun je dat aanzetten door "Syntaxaccentuatiemodus" te kiezen in het "Document" menu. XML syntax highlighting staat in het "Markup" submenu.</P> <P>Omdat we vergeten zijn wat de atrributen zijn van het book element, plaatsen we de cursor op het eind van het woord 'book' in de openingstag en doen we Ctrl+Enter. Een pop-up toont je nu een lijst van alle mogelijke attributen voor dit element:</P> <CENTER> <IMG src="../../common/images/article201/attribinsert.png" width="675" height="522" alt="[Een attribuut toevoegen]"> </CENTER> <P>Als je de cursor tussen de aanhalingstekens (="") van een attribuut zet, kan 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.</P> <P>We typen een id en nu hebben we de volgende code:</P> <PRE> <book id="EenID"> </book> </PRE> <P>Als we nu tussen beide 'book' tags gaan staan, dan geeft Ctrl+Enter een nieuwe pop-up lijst. Deze keer krijgen we alle mogelijke dochter-elementen van het 'book' te zien. We selecteren bijvoorbeeld het 'title' element:</P> <CENTER> <IMG src="../../common/images/article201/elementinsert.png" width="676" height="523" alt="[Een dochter-element invoegen]"> </CENTER> <P>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 de plugin ook (nog) geen validatiemogelijkheid heeft maak je nog dikwijls ongeldige documenten.</P> <P>Hier is een overzicht van de mogelijkheden van de plugin:</P> <CENTER> <TABLE border="1"> <TR> <TD align="left">Taak</TD> <TD align="left">Opdracht</TD> </TR> <TR> <TD align="left">XML Invoegen (elementen <I>en</I> attributen)</TD> <TD align="left">Ctrl+Return</TD> </TR> <TR> <TD align="left">Entity Invoegen</TD> <TD align="left">F10</TD> </TR> <TR> <TD align="left">Tag Sluiten</TD> <TD align="left">F11</TD> </TR> </TABLE> </CENTER> <A NAME="201lfindex4"> </A> <H2>KDE DocBook</H2> <P>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.</P> <A NAME="201lfindex5"> </A> <H2>MathML en SVG</H2> <P>DocBook ondersteunt tegenwoordig <A href="http://www.w3c.org/Math/">MathML</A> voor het invoegen van wiskundige vergelijkingen. Een 'gemengde' DTD om DocBook documenten met MathML erin te valideren kun je vinden in <A href="http://lists.oasis-open.org/archives/docbook/200005/msg00080.html">deze email</A>.</P> <P>De SVG DTD is er spijtig genoeg niet op berekend om gemengd te worden met DocBook. Maar er wordt in ieder geval aan gewerkt.</P> <P>Om dit in de Kate XML plugin te doen moet je met dtdparse een nieuwe Meta DTD maken gebaseerd op de samengestelde DTD.</P> <A NAME="201lfindex6"> </A> <H2>Conclusie</H2> <P>De Kate XML plugin is echt een hulp bij het schrijven van DocBook XML. Perfect is het niet, maar het bestaat dan ook nog maar kort. En tesamen met KDE 3.0 is het beschikbaar voor enorm veel mensen.</P> <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Talkback voor dit artikel</h2> Elk artikel heeft zijn eigen talkback pagina. Daar kan je commentaar geven of commentaar van anderen lezen: <center> <table border="0" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=201&lang=en"><b> talkback pagina </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="98%"> <TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%"> <A HREF="../../common/lfteam.html">Site onderhouden door het LinuxFocus editors team</A> <BR><FONT COLOR="#FFFFFF">© Egon Willighagen, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> <BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=nl&article=article201.shtml" target="_TOP">Klik hier om een fout te melden of commentaar te geven</A><BR></TD> <TD BGCOLOR="#9999AA"> <!-- TRANSLATION INFO --> <font size=2>Vertaling info:</font> <TABLE> <tr><td><font size="2">en --> -- : Egon Willighagen <small><egonw(at)linuxfocus.org></small></font></td></tr> <tr><td><font size="2">en --> nl: Floris Lambrechts <floris(at)linuxfocus.org></font></td></tr> </TABLE> </TD> </TR></TABLE></CENTER> <p><font size=1>2002-06-08, generated by lfparser version 2.28</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>