[LinuxFocus-icon]
LinuxFocus article number 242
http://linuxfocus.org

[Floris Lambrechts]
von Floris Lambrechts
<floris/at/linuxfocus.org>

Über den Autor:

Ich war der niederländische LinuxFocus Editor für einige Zeit. Ich studiere 'Industrieingenieur für Elektronik' in Leuven, Belgien und verbummle meine Zeit mit Linux, PHP, XML, LinuxFocus und beim Lesen von Büchern von Stephen Hawking und momentan Jef Raskin ('The Human Interface').



Übersetzt ins Deutsche von:
Sebastian Stein (homepage)

Erste Schritte in XML

[Illustration: xml]

Zusammenfassung:

Dieser Text ist eine wirklich knappe Einführung in XML. Dabei werden wir Eddy, die Metakatze, die XML Syntaxregeln und einige DTDs kennenlernen. Aber keine Angst, das wird ja alles erklärt ;-)

_________________ _________________ _________________

 

Einleitung

Im Sommer 2001 trafen sich einige der LinuxFocus Editoren in Bordeaux während des LSM. Viele Gespräche und Diskussionen drehten sich bei der LSM Gruppe für Interessierte in Dokumentation um das gleiche Thema: XML. Lange (fröhliche) Stunden vergingen, um zu klären, was XML genau ist und wie man es einsetzen kann. Und um genau das soll es in diesem Artikel gehen.

Ich möchte die Gelegenheit nutzen um Egon Willighagen und Jaime Villate für ihre Einführung in XML zu danken. Dieser Artikel basiert zum Teil auf Jaimes Informationen, die ich natürlich weiter unten auch verlinkt habe.  

Was ist XML?

Wir Dokumentationsleute wussten schon immer, was XML ist, zumindest mehr oder weniger. Eigentlich ist die Syntax wie bei HTML und es ist bloß eine weitere Auszeichnungssprache wie SGML und HTML, richtig? Richtig. Aber es geht noch weiter.
XML besitzt einige Eigenschaften, die es zu einem sehr nützlichen Datenformat machen, mit dem man fast alles erfassen kann. Es scheint, man kann damit selbst die komplexesten Sachen beschreiben und trotzdem bleibt es für den Menschen verständlich und läßt sich einfach durch Programme verarbeiten. Wie kann das sein? Untersuchen wir die verheißungsvolle Sprache etwas näher.

Eddy, die Metakatze

Zuerst einmal, XML ist eine Auszeichnungssprache (markup language). Dokumente, die in einer solchen Auszeichnungssprache verfasst wurden, enthalten 2 Dinge: Daten und Metadaten. Falls jemand weiß, wie man Daten definiert, wäre ich froh, wenn er es mir mitteilen könnte. Bis dahin sprechen wir lieber über Metadaten ;). Metadaten stellen Informationen bereit, die einen Kontext oder eine Bedeutung für die Daten liefern. Ein einfaches Beispiel: nehmen wir den Satz: 'Meine Katze heißt Eddy'. Ein Mensch würde schlussfolgern, dass 'Katze' die Bezeichnung für eine Tierart ist und 'Eddy' der Name des Tiers. Computerprogramme sind keine Menschen und wissen das alles nicht. Deshalb benutzt man Metadaten, um den Daten eine Bedeutung zu geben (hier in XML Syntax natürlich):

 <satz>
   Meine <tier>Katze</tier> heißt <name>Eddy</name>.
 </satz>

Jetzt kann sogar der dümmste Computer sagen, dass 'Katze' eine Art und 'Eddy' ein Name ist. Wollen wir nun ein Dokument erstellen, in dem alle Namen blau und alle Arten rot dargestellt werden, macht es uns XML relativ einfach. Wir würden also erhalten:

 Meine Katze heißt Eddy.

Nun könnte man, theoretisch zumindest, die Darstellungsinformationen (in unserem Fall die unterschiedlichen Farben) in einer Extradatei, einem Stylesheet, ablegen. Dadurch trennen wir Inhalt und Darstellung. Einige betrachten das als den Heiligen Gral des WebdesignsTM. Bis jetzt haben wir aber noch nichts besonderes getan; Metadaten hinzufügen ist die Grundaufgabe jeder Markupsprache. Also was ist an XML so besonders?

Die Syntaxregeln

XML hat eine sehr strenge Syntax. So muss z.B. in XML jedes <tag> von einem </tag> geschlossen werden. [ Hinweis: da es etwas umständlich wäre zu schreiben <tag></tag>, wenn eigentlich nichts dazwischen liegt, kann man auch schreiben <tag /> und sich einige Arbeit ersparen ].
Eine weitere Regel ist, dass man keine Tags vermischen darf. Man muss die Tags in der umgekehrten Reihenfolge schließen, in der man sie geöffnet hat. Folgendes wäre nicht zulässig:

<B> Fettdruck <I> Fett- und Kursivdruck </B> Kursivdruck </I>

Die Regel besagt, dass man das </I> Tag vor dem </B> schließen muss.
Man muss weiterhin darauf achten, dass _alle_ Elemente in einem XML Dokument von Tags eingeschlossen werden müssen (außer die 2 äußeren Tags natürlich!). Deshalb haben wir in dem Beispiel weiter oben den Satz durch das <satz> Tag eingeschlossen. Ohne das Tag wären einige Wörter nicht von Tags umgeben worden. Das ist ein Punkt, an dem einen die XML Syntaxregeln in den Wahnsinn treiben können.
Mozilla screenshot
Mozilla's Syntaxüberprüfung bei der Arbeit...

Eine strenge Überprüfung der Syntaxregeln hat aber auch seine Vorteile: es sorgt für Ordnung. Seit XML diesen strikten Regeln folgt, ist es für Programme sehr einfach, die Dokumente zu lesen. Weiterhin sind die Daten in den Dokumenten sehr gut strukturiert, was es für Menschen auch einfacher macht.
Mit XML ist es sogar möglich, Datenbanken zu beschreiben (versuch das mal mit HTML! :p). Genau das hat Egon Willighagen für die niederländische Ausgabe des LinuxFocus getan. Sein Artikel ist unten in der Linkliste aufgeführt.
Wenn man sich mit den Syntaxregeln gut anfreundet, dann kann man sich durch sie einiges an Arbeit erledigen lassen. Dazu muss man aber die DTDs nutzen...  

Die DTD

In unserem kleinen 'Eddy, die Metakatze' Beispiel haben wir unsere eigenen XML Tags erfunden. Es ist klar, so ein kreativer Akt wird von den Wächtern der Syntax nicht toleriert! Die 'Men in Blue' wollen wissen was wir tun, wann und (wenn möglich) warum. Aber hey, kein Problem, man kann ja alles in der DTD erklären...

Mit der DTD kann man neue Tags einführen. Genauer gesagt, man kann komplett neue Sprachen erfinden, solange diese der XML Syntax folgen.
Die DTD (Document Type Definition) ist eine Datei mit den Beschreibungen zur XML Sprache. Es handelt sich eigentlich nur um eine Liste mit möglichen Tags, deren Attributen und Kombinationen. Die DTD beschreibt was in der Sprache möglich und ummöglich ist. Wenn man also über eine 'XML Sprache' spricht, meint man eine spezielle DTD.

Regeln aufstellen

Manchmal zwingt die DTD einen dazu, etwas bestimmtes zu tun. So kann einen die DTD z.B. zwingen, ein Tag mit dem Titel des Dokuments einzufügen. Das ist eine praktische Sache, denn es gibt Software (z.B. ein Emacs Modul), die automatisch für die Erstellung der benötigten Tags sorgt.
Dadurch werden einige Teile der Dokumentenstruktur automatisch ausgefüllt. Da die Syntax so strikt und wohldefiniert ist, dient sie als Leitfaden beim Verfassen eines Dokumentes. Und wenn dann doch mal ein Fehler passiert, wie ein vergessenes Endtag, sorgen die Syntaxregeln für die nötigen Informationen zur Behebung. In der realen Welt wird einem gesagt, du darfst das und das nicht, in der XML Welt wird gesagt: 'Syntaxfehler in Zeile xx :' :)
Da einem die Regeln diese Arbeit abnehmen, kann man sich auf die eigentliche Aufgabe konzentrieren.

In the mix

Es sei noch auf eine weitere großartige Eigenschaft von XML hingewiesen. Man kann mehrere DTDs mischen und so auf verschiedene Datentypen im selben Dokument zurückgreifen.

Dieser Mix wird durch XML Namensräume (namespaces) realisiert. Nehmen wir an, man hat die Docbook DTD im XML Dokument integriert ('dbk' Prefix in diesem Beispiel).
Jedes Docbook Tag kann sofort im Dokument in folgender Form (sagen wir mal es gibt folgendes Docbook Tag: <ein_tag>) genutzt werden:

 <dbk:ein_tag> einige Worte </dbk:ein_tag>

Mit den Namensräumen kann man jedes Tag und jedes Attribut jeglicher XML DTD ansprechen. Daraus ergibt sich eine Welt von Möglichkeiten, wie man im folgenden Kapitel sehen kann...  

Verfügbare DTD's

Hier ist eine kleine Sammlung von DTDs, die bereits (zumindest teilweise) genutzt werden.  

Links

Das W3C, World Wide Web Consortium
Mit Informationen zu XML, MathML, CML, RDF, SVG, SOAP, XHTML, Namespaces...
www.w3.org

Einige Sachen von Jaime Villate (evt. erst durch einen Onlineübersetzer jagen, damit man es lesen kann)
Einführung in XML (in Spanisch)
Wie erstellt man HTML mit XML(in Spanisch)
LSM Folien

HTML tidy, das Programm:
www.w3.org/People/Raggett/tidy

Docbook
www.docbook.org

Mozilla.org's SVG Projekt
www.mozilla.org/projects/svg

Relevante LinuxFocus Artikel:
Benutzen von XML und XSLT zum Bauen von LinuxFocus.org
PDF Dokumente erzeugen mittels DocBook


Der LinuxFocus Redaktion schreiben
© Floris Lambrechts
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Autoren und Übersetzer:
en --> -- : Floris Lambrechts <floris/at/linuxfocus.org>
en --> de: Sebastian Stein (homepage)

2005-01-14, generated by lfparser_pdf version 2.51