<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <H1>Scrivere documenti con DocBook XML</H1> <H4>ArticleCategory: [Artikel Kategorie]</H4> Applications <H4>AuthorImage:[Bild des Autors]</H4> <IMG src="../../common/images/EgonWillighagen.jpg" alt= "[Photo of the Author]" height="102" width="79"> <H4>TranslationInfo:[Author and translation history]</H4> <P>original in en <A href="mailto:egonw@linuxfocus.org">Egon Willighagen</A></P> <P>en to it <A HREF="mailto:alex@neko.it">AlessandroPellizzari</A> </P> <H4>AboutTheAuthor:[Über den Autor]</H4> <p>Ha conseguito il master in chimica all'Universit� di Nijmegen, e sta facendo il suo dottorato di ricerca sulla rappresentazione molecolare alla stessa Universit�. Gioca a basket e programma applicazioni in Java.</p> <H4>Abstract:[Zusammenfassung]</H4> <p>Questo articolo descrive l'uso di Kate e del suo plugin XML come tool per la scrittura di documenti DocBook XML.</p> <H4>ArticleIllustration:[Titelbild des Artikels]</H4> <IMG src="../../common/images/article201/logo.png" width="42" height="44" alt="[Illustration]" hspace="10"> <H4>ArticleBody:[Der eigentliche Artikel]</H4> <H2>Introduzione</H2> <p>La scrittura di documenti XML con strumenti OpenSource � stato un problema a lungo. Le persone hanno bisogno di un editor che produca codeci XML valido, e preferibilmente vorrebbero vedere direttamente l'output. Ci sono editor che possono farlo, ma sono proprietari. Nel mondo OpenSource ci sono alcuni programmi che non vi danno una bella preview grafica, ma che possono produrre documenti XML validi e che vi possono avvisare riguardo elementi non consentiti in specifiche posizioni del documento.</p> <p>Naturalmente c'� Emacs con la sua modalit� DocBook che funziona bene (vedi il precedente <A href="../May2000/article152.shtml">articolo su DocBook</a>). Questa particolare modalit� rende possibile scegliere elementi figli da inserire nel documento dipendentemente dagli elementi gi� inseriti in precedenza. E questo consente il completamento col tasto Tab in base a questa conoscenza.</p> <p>Ma in questo articolo non discuter� di questo, ma piuttosto vi introdurr� Kate come editor DocBoox XML.</p> <H2>Kate</H2> <A href="http://www.kde.org/kate">Kate</A> � uno degli editor dell'ambiente desktop KDE. � abbastanza leggero, supporta piu` file aperti e consente l'evidenziazione della sintassi, anche per XML. Inoltre lo scorso anno � stato scritto un plugin XML, da Daniel Naber, che vi pu� aiutare a scrivere documenti XML validi. Nel <A href="http://www.kde.org/announcements/announce-3.0.html">KDE 3.0</A> questo plugin XML per Kate � stato incluso nel pacchetto kde-addon. Se il pacchetto di addon di KDE 3.0 non � stato ancora installato, installatelo da una delle varie distribuzioni binarie o compilando il sorgente: <PRE> ./configure --prefix=/path/dove/avete/installato/kde3 make sudo make install </PRE> <p>Una volta che il plugin � installato, dovete ancora renderlo noto a Kate. Per farlo, selezionate "Configura Kate" nel menu "Impostazioni". Nel pannello dei "Plugins" potete impostare il plugin XML tra quelli da caricare:</p> <CENTER> <IMG src="../../common/images/article201/pluginmanager.png" width="586" height="540" alt="[Kate's plugin manager]"> </CENTER> <H2>Costruire la Meta DTD</H2> <P>Le Meta DTD vengono generate con il <A href= "http://www.nwalsh.com/perl/dtdparse/index.html">dtdparser</A> di Normal Walsh, i cui pacchetti possono essere scaricati da <A href= "http://sf.net/project/showfiles.php?group_id=30351">SourceForge.net</A>.</P> <p>Ho usato una versione leggermente adattata della 2.0beta6. Per esempio ho dovuto correggere il path nel programma dtdparse nella prima linea per dargli la posizione esatta del mio interprete perl. Lanciando il programma dovreste ricevere un output come il seguente:</p> <PRE> > ./dtdparse /path/a/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>Notate il grande numero di entit� che vengono caricate. Questa � la parziale causa delle dimensioni delle Meta DTD generate, 1.63 <A href= "http://slashdot.org/comments.pl?sid=26830&cid=2896481">Mibibytes</A>. Ma con un processore XSLT come <A href= "http://xmlsoft.org/XSLT/xsltproc2.html">xsltproc</A> possono essere ridotti fino a 0.96 MiB con il foglio di stile simplify_dtd.xsl presente nel pacchetto kde-addon:</p> <PRE> > xsltproc simplify_dtd.xsl docbookx.dtd.xml > docbook-xml-4.1.2.dtd.xml </PRE> <p>Il file risultante, docbook-xml-4.1.2.dtd.xml, pu� essere copiato in /path/a/kde3/share/apps/katexmltools/ dove /path/a deve essere cambiato con il path dove avete installato KDE 3. Ma anche la vostra dome andr� bene, visto che il plugin XML vi chieder� un nome di file quando dovr� assegnare una nuova Meta DTD (vedi sotto).</p> <H2>Editing</H2> <p>Quando iniziate un nuovo documento DocBook XML, dovete assegnargli una Meta DTD. Questo viene fatto scegliendo "Assegna Meta DTD" nel menu "XML Plugin". Apparir� una finestra per la richiesta del file da cui potrete selezionare la DTD che volete usare. In questo caso, � la Meta DTD DocBook XML 4.1.2 che abbiamo appena creato. Una nuova finestra vi mostrer� la progressione del processo:</p> <CENTER> <IMG src="../../common/images/article201/dtdparsing.png" width="208" height="126" alt="[Meta DTD parsing dialog]"> </CENTER> <p>Nel nuovo documento vuoto scriveremo "<book>". Per chiudere l'elemento premiamo F11. Se l'evidenziazione della sintassi non � ancora attiva, la potremo attivare manualmente selezionando "Modo evidenziazione" nel menu "Documento". L'evidenziazione della sintassi XML � nel sottomenu "Markup".</p> <p>Abbiamo dimenticato quali attributi un elemento abbia, posizioniamo il cursore alla fine della parola book nel primo tag e premiamo Ctrl+Invio. Apparir� un popup che mostra la lista di tutti i possibili attributi per l'elemento corrente:</p> <CENTER> <IMG src="../../common/images/article201/attribinsert.png" width="675" height="522" alt="[Inserting an attribute]"> </CENTER> <p>Posizionando il cursore tra le " e premendo Ctrl+Invio vi dar� anche i possibili valori per l'attributo, se sono definiti nella DTD. Non � il caso dell'attributo id.</p> <p>Dopo aver inserito gli attributi avremo questo codice DocBook XML:</p> <PRE> <book id="QualcheID"> </book> </PRE> <p>Posizionando il cursore tra il tag iniziale e quello finale dell'elemento book e premendo Ctrl+Invio in quella posizione avremo un'altra lista popup, ma ora con tutti i possibili elementi figli per l'elemento book. Possiamo scegliere, per esempio, l'elemento title:</p> <CENTER> <IMG src="../../common/images/article201/elementinsert.png" width="676" height="523" alt="[Inserting an attribute]"> </CENTER> <p>Un difetto di questo plugin � che conosce solo quali sono gli elementi figli, e non l'ordine o il numero di volte che � consentito usarli. Per esempio, la DTD non consente due o tre elementi title, ma il plugin XML non avverte di questo. Dato che il plugin inoltre non ha ancora una opzione di validazione (ancora), � ancora abbastanza facile avere documenti non validi.</p> <p>Un riassunto delle funzionalit� del plugin viene dato nella tabella sottostante:</p> <CENTER> <TABLE border="1"> <TR> <TD align="left">Funzione</TD> <TD align="left">Comando</TD> </TR> <TR> <TD align="left">Inserire XML (elementi <I>e</I> attributi)</TD> <TD align="left">Ctrl+Return</TD> </TR> <TR> <TD align="left">Inserire Entit�</TD> <TD align="left">F10</TD> </TR> <TR> <TD align="left">Chiudere i Tag</TD> <TD align="left">F11</TD> </TR> </TABLE> </CENTER> <H2>KDE DocBook</H2> <p>Il progetto KDE stesso usa DocBook come formato per la sua documentazione. Perci� il plugin XML viene fornito di default con una versione personalizzata per KDE di DocBook. Assegnare tale Meta DTD per DocBook � preferibile rispetto alla Meta DTD per DocBook XML 4.1.2 se si sta scrivendo documentazione per KDE.</p> <H2>MathML e SVG</H2> <p>DocBook al giorno d'oggi supporta <A href= "http://www.w3c.org/Math/">MathML</A> per l'inclusione di equazioni matematiche nei documenti. Una DTD mista per validare documenti DocBook con MathML pu� essere trovato in <A href= "http://lists.oasis-open.org/archives/docbook/200005/msg00080.html"> questo messaggio e-mail</A>.</P> <p>le DTD per SVG sfortunatamente non sono state scritte in maniera tale da poter essere incluse nei DocBook. Ma si stanno compiendo degli sforzi per renderlo possibile.</p> <p>L'uso nel plugin XML di Kate richiede che un Meta DTD venga generato con dtdparse sui DTD combinati.</p> <H2>Conclusione</H2> <p>Il plugin XML per Kate vi pu� aiutare molto nell'editing di documenti DocBook XML. Non � perfetto, ma ripeto, � stato sviluppato di recente. Con KDE 3.0 � disponibile per moltissime persone.</p> </BODY> </HTML>