DocBook XML-Dokumente bearbeiten

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Bild des Autors]

[Bild des Autors]

TranslationInfo:[Author and translation history]

original in en Egon Willighagen

en to de Viktor Horvath

AboutTheAuthor:[Über den Autor]

Besitzt einen Master-Grad in Chemie an der Universit�t von Nijmegen und arbeitet an seiner Doktorarbeit �ber molekulare Darstellung an derselben Universit�t. Spielt Basketball und programmiert Java-Anwendungen.

Abstract:[Zusammenfassung]

Dieser Artikel beschreibt die Benutzung von Kate und seinem XML-Plugin als ein Werkzeug zum Bearbeiten von DocBook XML-Dokumenten.

ArticleIllustration:[Titelbild des Artikels]

[Illustration]

ArticleBody:[Der eigentliche Artikel]

Einf�hrung

Das Bearbeiten von XML mit OpenSource war lange ein Problem. Die Leute brauchen einen Editor, der g�ltiges XML erzeugen kann, und sehen die Ausgabe am besten direkt. Es gibt Editoren, die das k�nnen, aber die sind propriet�r. In der OpenSource-Welt gibt es ein paar Programme, die dir keine h�bsche graphische Oberfl�che bieten, aber g�ltige XML-Dokumente produzieren und dich �ber diejenigen Elemente informieren k�nnen, die an einer bestimmten Position im Dokument erlaubt sind.

Nat�rlich gibt es Emacs mit seinem DocBook-Minor Mode, der gut arbeitet (siehe einen fr�heren DocBook-Artikel). Dieser spezielle Modus erm�glicht es, Kind-Elemente auszuw�hlen, die in das Dokument eingef�gt werden und auf den bereits dort vorhandenen Elementen basieren. Und meines Wissens nach erlaubt er automatische Erg�nzungen mit der Tabulator-Taste.

Aber in diesem Artikel will ich ihn nicht besprechen, sondern stattdessen Kate als einen DocBook XML-Editor einf�hren.

Kate

Kate ist einer der Editoren vom KDE-Desktop. Er ist ziemlich klein, unterst�tzt mehrere ge�ffnete Dateien und besitzt auch f�r XML Syntax-Highlighting. Au�erdem wurde letztes Jahr ein XML-Plugin von Daniel Naber geschrieben, das dir helfen kann, g�ltige XML-Dokumente zu schreiben. In KDE 3.0 ist dieses XML-Plugin f�r Kate im Paket kde-addon enthalten. Wenn das addon-Paket von KDE 3.0 noch nicht installiert ist, mach das, indem du eine der vielen Binary-Distributionen installierst oder das Paket aus den Quelltexten kompilierst:
./configure --prefix=/path/where/your/kde3/is/installed
make
sudo make install

Ist das Plugin installiert, mu�t du Kate noch darauf aufmerksam machen. W�hle dazu "Configure Kate" aus dem "Settings"-Men�. Im "Plugins"-Manager kannst du das XML-Plugin in die Liste von geladenen Plugins setzen:

[Kates Plugin-Manager]

Eine Meta DTD erzeugen

Meta DTDs werden mit Norman Walshs dtdparser erzeugt, von dem Pakete heruntergeladen werden k�nnen bei SourceForge.net.

Ich habe eine leicht angepa�te Version 2.0beta6 benutzt. Ich mu�te z.B. den Pfad im dtdparse-Programm in der ersten Zeile �ndern, um den korrekten Pfad zu meiner Perl-Installation anzugeben. Wenn man das Programm startet, gibt es eine Ausgabe wie:

> ./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.

Beachte die gro�e Zahl von "Entities", die geladen werden. Unter anderem deswegen ist die resultierende Meta DTD 1,63 Mibibytes gro�. Aber mit einem XSLT-Prozessor wie xsltproc kann dies auf 0,96 MiB reduziert werden mit dem simplify_dtd.xsl-Stylesheet aus dem kde-addon-Paket:

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

Die resultierende docbook-xml-4.1.2.dtd.xml kann dann kopiert werden nach /path/to/kde3/share/apps/katexmltools/, wobei /path/to in das Verzeichnis ge�ndert wird, in dem KDE3 tats�chlich installiert ist. Aber dein Home-Verzeichnis wird es auch tun, da das XML-Plugin nach einem Dateinamen fragen wird, wenn eine neue Meta DTD angegeben wird (siehe unten).

Bearbeiten

Wenn ein neues DocBook XML-Dokument er�ffnet wird, mu� eine Meta DTD angegeben werden. Das wird gemacht, indem man "Assign Meta DTD" aus dem "XML Plugin"-Men� w�hlt. Ein Datei-�ffnen-Dialog wird erscheinen, und du kannst die DTD ausw�hlen, die du benutzen willst. In diesem Fall ist dies die DocBook XML 4.1.2 Meta DTD, die wir gerade erzeugt haben. Ein neuer Dialog wird sich zeigen und �ber die Verarbeitung informieren:

[Meta DTD Parsing-Dialog]

In das neue, leere Dokument schreiben wir "<book>". Um das Element zu schlie�en, dr�cken wir F11. Wenn das Syntax-Highlighting noch nicht angestellt ist, kannst du das manuell tun, indem du "Highlight Mode" im "Dokument"-Men� ausw�hlst. XML-Syntax-Highlighting ist im "Markup"-Untermen�.

Weil wir vergessen haben, welche Attribute das "book"-Element hat, plazieren wir den Cursor am Ende des Wortes "book" im beginnenden Tag und dr�cken Strg+Return. Ein neues Fenster wird dir eine Liste aller m�glichen Attribute f�r das aktuelle Element zeigen:

[Ein Attribut einsetzen]

Indem du den Cursor zwischen die Hochkommata stellst und Strg+Return dr�ckst, erh�ltst du sogar die m�glichen Werte f�r das Attribut, wenn sie in der DTD definiert sind. Das ist f�r das "id"-Attribut nicht der Fall.

Nach dem Einf�gen des Attributes haben wir diesen DocBook XML-Code:

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

Wenn wir den Cursor zwischen das Start- und End-Tag des "book"-Elements bewegen und Strg+Return dort dr�cken, erscheint eine neue Liste, aber jetzt mit allen m�glichen Kind-Elementen f�r das "book"-Element. Wir k�nnen z.B. das "title"-Element ausw�hlen:

[Ein Element einsetzen]

Ein Nachteil dieses Plugins ist, da� es nur die Kind-Elemente kennt und nicht die Reihenfolge oder Anzahl, in der sie auftreten d�rfen. Die DTD erlaubt dir z.B. nicht zwei oder mehr "title"-Elemente, aber das XML-Plugin warnt dich nicht davor. Da das Plugin auch (noch) keine �berpr�fungs-Option hat, ist es immer noch sehr leicht, ung�ltige Dokumente zu bekommen.

Eine Zusammenfassung der Funktionalit�t des Plugins ist in folgender Tabelle gegeben:

Aufgabe Befehl
XML (Elemente und Attribute) einf�gen Strg+Return
Entity einf�gen F10
Schlu�-Tag F11

KDE DocBook

Das KDE-Projekt benutzt auch selber DocBook als ein Format f�r seine Dokumentation. Als solches kommt das XML-Plugin standardm��ig mit einer KDE-angepa�ten Version von DocBook. Es ist nat�rlich zum Schreiben von KDE-Dokumentation vorzuziehen, deren Meta DTD f�r DocBook zu benutzen anstelle der Meta DTD f�r DocBook XML 4.1.2.

MathML und SVG

DocBook unterst�tzt jetzt auch MathML, um mathematische Gleichungen in Dokumente einzuf�gen. Eine gemischte DTD, um DocBook-Dokumente mit MathML-Code zu �berpr�fen, kann in dieser e-mail gefunden werden.

SVGs DTD wurde leider nicht dergestalt geschrieben, da� es m�glich ist, sie in DocBook einzubeziehen. Aber es werden entsprechende Anstrengungen unternommen.

Die Benutzung in Kates XML-Plugin erfordert es, eine neue Meta DTD mit dtdparse zu erstellen, die auf der kombinierten DTD basiert.

Fazit

Das XML-Plugin f�r Kate kann dir sehr beim Bearbeiten von DocBook-XML-Dokumenten helfen. Es ist nicht vollkommen, andererseits wurde es erst k�rzlich entwickelt. Mit KDE 3.0 ist es f�r sehr viele Leute verf�gbar.