# XML – Eine Einleitung
Es ist nie zu spät, Vorurteile abzulegen.
– Henry David Thoreau, (1817–1862), US-amerikanischer Philosoph
In letzter Zeit ist XML immer öfter in aller Munde. Jedoch tauchen dabei auch gelegentlich Irrtümer und falsche Informationen auf. Was XML genau ist, erfahren Sie in diesem Kapitel.
# Was ist XML?
Wie Sie bereits wissen, basiert HTML auf der Auszeichnungssprache SGML. Mittlerweile ist SGML etwas in die Jahre gekommen und kann als ausgereifte Sprache bezeichnet werden. Vor ein paar Jahren entschloss man sich dann, eine kleinere Version von SGML zu entwickeln, die nun als XML (Extensible Markup Language) bezeichnet wird. XML wird den Anforderungen an heutige Auszeichnungssprachen gerecht und hat sich inzwischen als die Auszeichnungssprache überhaupt etablieren können. XML ist also in keiner Weise der Nachfolger von HTML und basiert auch nicht auf XML.
Wenn Sie einmal das Zusammenspiel von HTML und CSS etwas genauer betrachten, werden Sie feststellen, welche klare Trennung sich dadurch ergibt. HTML wird heutzutage eigentlich nur noch zur Strukturierung von Informationen genutzt. Dabei werden Überschriften und Textabsätze definiert, Tabellen erzeugt und an gewünschten Stellen auch Grafiken oder andere Objekte eingebunden. CSS dient dazu, diese Elemente so zu gestalten, dass sich ein einheitliches Bild ergibt. Diese Strukturierung der Daten, die durch HTML geschieht, macht sich XML zunutze, nur dass es dabei noch einen Schritt weiter geht.
So sollen mit XML nicht nur Strukturen wie HTML-Dokumente möglich werden, sondern – durch das Definieren von eigenen Elementen und Attributen – völlig neue Formate entstehen bzw. »ausgezeichnet« werden. Mit verschiedenen Techniken, die sich mit der Zeit gebildet haben, können mittlerweile sogar hoch flexible Datenbanksysteme mit XML aufgebaut werden, wenngleich diese Systeme noch relativ selten genutzt werden.
Populärstes Beispiel für neue Dateiformate ist SVG, mit dem sich Vektorgrafiken ohne grafische Oberfläche von jedermann erzeugen lassen. Und selbst Microsoft hat die Bedeutung dieser Technologie entdeckt, wodurch mittlerweile auch Office-Dokumente wie Word und Excel mit XML definiert werden können.
# Elemente und Attribute
Grundsätzlich kann ich an dieser Stelle ruhigen Gewissens behaupten, dass XML kein einziges Element oder Attribut vorschreibt oder gar kennt. Dies mag, mit dem Wissen um HTML im Hinterkopf, ein wenig irritierend erscheinen. Die Erklärung ist jedoch ganz einfach. XML legt lediglich fest, dass es Elemente geben kann, die außerdem Attribute erhalten dürfen. Dabei werden zwei Elementtypen unterschieden:
- Elemente, die ein Start- und ein Ende-Tag aufweisen und zwischen denen andere Elemente, Texte oder Daten notiert werden dürfen
- Elemente, die lediglich ein Startelement aufweisen und keine anderen Elemente, Texte oder Daten umschließen
Attribute werden immer im Start-Tag eines Elements notiert, wodurch sowohl Block- als auch Inline-Elemente mit Attributen versehen werden können
Alles, was XML in Hinblick auf Elemente vorschreibt, ist, dass sie in spitzen Klammern notiert werden müssen und dem Ende-Tag zusätzlich ein Schrägstrich vorangestellt wird, also:
<elementname>...</elementname>
Attribute werden im Start-Tag in folgendem Format geschrieben:
attributename="wert"
Ein Element kann beliebig viele Attribute erhalten.
<elementname attribut1="wert1" attribut2="wert2" attributN="wertN">...</elementname>
Handelt es sich um ein Element, das lediglich über ein Start-Tag verfügt, muss vor der schließenden spitzen Klammer ein Leerzeichen, gefolgt von einem Schrägstrich, eingefügt werden:
<elementname attribut="wert" />
Außerdem legt XML fest, dass es immer ein Wurzelelement geben muss, das alle anderen Elemente in dem Dokument vollständig umschließt.
Dazu ein kurzes Beispiel:
<?xml version="1.0"?>
<buchprojekte>
<projekt name="Webseiten p.u.g">
<titel>Webseiten programmieren und gestalten</titel>
<auflage>2</auflage>
<autor>Mark Lubkowitz</autor>
<verlag bereich="Computing">Galileo Press</verlag>
<cdrom beiliegend="ja" />
</projekt>
</buchprojekte>
Listing 1.1: Beispiel für ein einfaches XML-Dokument
In dem Beispiel aus Listing 1.1 werden alle zuvor genannten Regeln erfüllt. Das Wurzelelement dieses Dokuments ist buchprojekte
. Es umschließt alle in dem Dokument enthaltenen anderen Elemente.
Unterhalb des Wurzelelements wurde ein Element namens projekt
notiert. Es verfügt sowohl über ein Start- und Ende-Tag als auch über ein Attribut namens name
.
Dieses Element enthält weitere Elemente: titel
, auflage
, verlag
und cdrom
.
# Processing Instructions
Eine Besonderheit im Vergleich zu HTML gibt es jedoch, und zwar die so genannten »Processing Instructions«. Im Listing 1.1 finden Sie eine solche Processing Instruction gleich in der ersten Zeile. Sie dient dazu, dem Programm, das das XML-Dokument interpretiert, bestimmte Anweisungen zu erteilen.
Processing Instructions werden dazu immer innerhalb der Zeichenfolgen <?
und ?>
notiert. Direkt nach der Anfangszeichenfolge wird das Zielprogramm angegeben. In Listing 1.1 ist dies xml
, was für das Programm steht, das das Dokument parst. Es teilt dem Programm mit, dass der Inhalt des folgenden Dokuments auf der XML-Version 1.0 basiert.
Beachten Sie, dass in jedem XML- und auf XML basierenden Dokument immer die Processing Instruction
<?xml version="1.0"?>
notiert werden muss. Dies muss außerdem die erste Zeile in dem Dokument sein.
Eine Analogie lässt sich an dieser Stelle zu PHP ziehen. Alle Anweisungen, die vom PHP-Interpreter ausgeführt werden sollen, müssen zwischen den Zeichenfolgen <?php
und ?>
aufgeführt werden. Als Zielprogramm wird dabei php
angegeben, was für den PHP-Interpreter steht.
# Strukturierung, Bezeichnung und Kommentare
Besonders wichtig ist bei XML eine saubere Strukturierung. So muss z. B. unbedingt die Reihenfolge einhalten werden, in der die Start- und Ende-Tags notiert werden.
Den meisten Browsern ist es egal, ob in einem HTML-Dokument bei verschachtelten Elementen zuerst das Elternelement und erst danach das Kindelement geschlossen wird, z. B.
<b><i>Ein Text</b></i>
auch wenn dies grundsätzlich falsch ist. In einem XML-Dokument darf so etwas nicht passieren. Das Dokument muss folgendermaßen aussehen:
<b><i>Ein Text</i></b>
Aus diesem Grunde wird auch eine strenge Strukturierung der XML-Dokumente angewendet, um nicht aus Versehen diese Reihenfolge zu vertauschen.
Die wichtigste Regel: Vor jedem Start-Tag wird eine neue Zeile eingefügt und um zwei Spalten tiefer als das Elternelement eingerückt.
Folgen nach dem Start-Tag eines Elternelements weitere Elemente, dann wird das Ende-Tag ebenfalls in einer neuen Zeile, jedoch in der gleichen Spalte wie das Start-Tag notiert. Nur wenn das Element keine Kindelemente enthält, wird das Ende-Tag am Ende der Zeile eingefügt.
<element-1>
<element-1.1>
<element-1.1.1>Ein Text</element-1.1.1>
<element-1.1.2>
<element-1.1.2.1>Ein Text</element-1.1.2.1>
</element-1.1.2>
</element-1.1>
</element-1>
Diese Struktur ermöglicht es erstens, Fehler zu vermeiden, und zwar bei der Reihenfolge, wie die Element geschlossen werden müssen, und erzeugt zweitens eine klare Übersicht darüber, in welcher Tiefe sich bestimmte Elemente befinden.
Diese Rangordnung, die durch das Verschachteln von Elementen entsteht, mag an dieser Stelle für Sie noch unwichtig sein. Möchten Sie später jedoch mit einer Programmiersprache darauf zugreifen, ist sie essenziell wichtig. Aus diesem Grunde habe ich die Elemente in dem vorangegangenen Beispiel auch mit »Kapitelnummern« bezeichnet, um Ihnen dies ein klein wenig zu verdeutlichen.
# Bezeichnung
Bei der Bezeichnung der Elemente und Attribute müssen Sie selbstverständlich auch einige Regeln berücksichtigen. Hier beschränkten sich diese jedoch auf die zulässigen Zeichen und deren Platzierung.
- Sie dürfen alle Zeichen von A-Z und a-z im Bezeichner eines Elements oder Attributs verwenden. Auch der Unterstrich ist erlaubt. Eines dieser Zeichen muss außerdem an erster Stelle des Bezeichners notiert werden.
- Darüber hinaus sind die Zahlen von 0–9, der Bindestrich und der Punkt erlaubt, die jedoch erst ab der zweiten Stelle genutzt werden dürfen. Auch Umlaute und Akzente dürfen verwendet werden, wovon wegen der Internationalisierung jedoch abzuraten ist.
- Der Doppelpunkt sollte nicht verwendet werden.
- Die Länge der Bezeichner ist unbegrenzt. Sie sollten jedoch der Versuchung all zu langer Namen widerstehen.
- Die Zeichenfolge XML ist in keiner Schreibweise zu Beginn eines Bezeichners erlaubt.
- XML unterscheidet zwischen Groß- und Kleinschreibung.
Name
ist also nicht gleichNAME
odernAME
. Dies ist übrigens die häufigste Fehlerquelle.
Ein paar Beispiele für korrekte Bezeichner:
adresse
_adresse
ORT
ort2
plz-und-ort
_strasse_und_nr
Folgende Beispiele wären hingegen falsch:
.adresse
2orte
-hausnummer
xmlversion
Versuchen Sie nach Möglichkeit, semantisch korrekte Bezeichner zu nutzen. Damit ist gemeint, dass die Bezeichner auch eine Beschreibung der Information darstellen sollen. Ein Beispiel:
<ort>Musterstr. 10, 55110 Musterstadt</ort>
Dies ist zwar syntaktisch korrekt und entspricht auch der »Wohlgeformtheit« eines XML-Dokuments, es ist semantisch jedoch nicht korrekt. Denn es werden neben dem Ort auch die Straße, Hausnummer und Postleitzahl gespeichert. Korrekt wären jedoch
<adresse>Musterstraße 10, 55110 Musterstadt</adresse>
oder
<strasse>Musterstr.</strasse>
<hausnummer>10</hausnummer>
<plz>55110</plz>
<ort>Musterstadt</ort>
# Kommentierung
Kommentare werden im Gegensatz zur Programmierung eher selten in XML-Dokumenten eingesetzt. Dies liegt nicht unbedingt daran, dass derjenige, der das Dokument erstellt hat, zu faul gewesen wäre. Im Gegenteil, je weniger Kommentare er eingesetzt hat, desto besser werden wahrscheinlich auch die Bezeichner für Elemente und Attribute gewählt sein. Ausnahmen bestätigen auch hier die Regel! Jedoch sind die Kommentare gelegentlich überaus hilfreich, z. B. dann, wenn Sie ein Dokument definiert haben, das nicht nur gleichmäßige Daten enthält, wie etwa eine auf XML basierende Datenbankstruktur für Kontaktdaten.
Als Beispiel wäre hier z. B. ein SVG-Dokument zu nennen. Da Sie viele verschiedene Formen wie Rechtecke und Kreise oder auch Farbverläufe und Pfade definieren können, ist es hier ratsam, Kommentare zu nutzen, um die Lesbarkeit eines solchen Dokuments für den menschlichen Betrachter zu erhöhen. Kommentare können jedoch auch zu Testzwecken genutzt werden, um bestimmte Daten temporär auszublenden.
Dabei gelten in XML die gleichen Regeln wie in HTML. Ein Kommentar wird mit
<!--
eingeleitet und mit
-->
abgeschlossen. Alles, was sich zwischen diesen beiden Zeichenfolgen befindet, wird vom interpretierenden Programm nicht berücksichtigt. Die beiden Zeichenfolgen müssen nicht in einer Zeile stehen, sondern können an beliebiger Stelle im Dokument eingesetzt werden.
Achten Sie jedoch möglichst auch bei Kommentaren darauf, korrekt einzurücken und die Zeichenfolge <!--
wie ein Start-Tag und -->
wie ein Ende-Tag zu behandeln.
# DTD und Schema
Im Zusammenhang mit XML werden Sie des Öfteren auf die Begriffe DTD oder Schema treffen. DTD dürfte Ihnen noch von HTML bekannt vorkommen.
Die Document Type Definition (kurz DTD) legt bei einem XML-Dokument fest, welche Elemente verwendet werden, über welche Attribute sie verfügen, welche Art von Daten sie enthalten und an welcher Stelle sie eingesetzt werden dürfen.
Eine Weiterentwicklung der DTD sind die Schemata. Sie ermöglichen es nicht nur festzulegen, welche Art von Daten in einem Element notiert werden dürfen, sondern sogar, von welchem Typ sie sein müssen, z. B. Zeichenfolgen, Zahlen usw.
Die DTDs sind jedoch mittlerweile so sehr verbreitet, dass sie von den Schemata sicherlich nicht abgelöst werden. Darum hat sich eine gewisse Aufgabenteilung entwickelt. DTDs werden in der Regel dann genutzt, wenn es sich um ein Dokument handelt, das viele unregelmäßige Daten enthält wie z. B. SVG, »Wireless Markup Language«. Wird für die Definition von Seiten für Geräte mit kleinen Bildschirmen genutzt, wie z. B. WAP.WML oder SMIL = »Synchronized Multimedia Integration Language«. Ermöglicht die Einbindung und Steuerung von multimedialen Inhalten in Webseiten.SMIL. Schemata werden hingegen bei Dokumenten mit gleichmäßigen Daten genutzt, wie Dokumenten mit Adressdaten, Büchern oder RSS (dazu später mehr).
# Zusammenfassung
- XML ist keine Weiterentwicklung von HTML, sondern eine eigenständige Technologie
- XML unterscheidet bei Elementen und Attributen zwischen Groß- und Kleinschreibung
- DTD und Schemata stellen ein Regelwerk dar, wie ein auf XML basierendes Format einzusetzen ist und welche Elemente und Attribute erlaubt sind.
- Bei Elementen, die kein Ende-Tag aufweisen, müssen am Ende des Start-Tags vor der schließenden spitzen Klammer ein Leerzeichen sowie ein Schrägstrich notiert werden.
# Fragen und Übungen
- Was unterscheidet XML von HTML?
- Bezeichnen in einem XML-Dokument
Text
undtext
das gleiche Element? - Welche Zeichen dürfen zum Benennen von Elementen und Attributen verwendet werden?
- In welchen Fällen werden in der Regel DTDs und in welchen Schemata eingesetzt?
- Was ist damit gemeint, wenn Elemente und Attribute »semantisch korrekt« sind?
- Wie wird in XML-Dokumenten kommentiert?
- Wofür werden Processing Instructions genutzt?
- Was muss immer in einem XML-Dokument notiert werden?