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.