Grundlagen
XML (eXtensible Markup Language, zu Deutsch erweiterbare Auszeichnungssprache) ist eine Auszeichnungssprache, welche als Basis für viele weitere Sprachen verwendet wird und vom World Wide Web Consortium (kurz W3C) spezifiziert wurde. Die Sprache XML kommt immer dann zum Einsatz, wenn Daten strukturiert in einer Textdatei abgelegt werden sollen.
Ein XML-Code wird in der Regel in einer Datei mit der Endung .xml
abgelegt. Der MIME-Typ von XML-Dateien (auch
als XML-Dokumente bezeichnet) ist application/xml
. Der MIME-Typ text/xml
war ebenfalls für XML-Dokumente
gedacht, gilt aber in der Zwischenzeit als veraltet (engl. deprecated).
XML-Dateien sind i. d. R. UTF-8-Dateien und können somit alle darstellbare Zeichen (Textzeichen) des Zeichenvorrats von UTF-8 enthalten. Das Speichern von Binärdaten innerhalb einer XML-Datei ist nur nach einer Umkodierung in Textzeichen (z. B. mittels Base64) möglich.
Struktur
Der Aufbau bzw. die Struktur eines XML-Dokuments ist relativ simpel: Es gibt Elemente, Attribute und Texte. Elemente können ineinander beliebig geschachtelt werden. Ein Element kann dabei über keine, ein oder mehrere Attribute verfügen. Letztendlich kann ein Element noch einen Text enthalten.
Um sich diese Struktur leichter vorstellen zu können, möchten wir an dieser Stelle einen Vergleich mit einem Baum ziehen. Ein Baum verfügt ebenfalls über mehrere Äste (dies sind die XML-Elemente). Die Äste können sich dabei beliebig und unterschiedlich verzweigen. Des Weiteren kann jeder Ast Blätter besitzen (dies sind die XML-Attribute). Dabei ist zu beachten, dass natürlich nicht jeder Ast über Blätter verfügen muss und die Anzahl der Blätter sich unterscheiden kann. Schlussendlich können an einem Ast neben den Blättern noch Früchte hängen. Diese Früchte werden „zusammengefasst“ und stellen in unserem XML-Dokument den Text dar.
Eine weitere Gemeinsamkeit, welche sich bei einem XML-Dokument und einem Baum finden lässt, ist, dass beide über exakt einen
Ursprung verfügen. Ein Baum besitzt einen Stamm und ein XML-Dokument enthält ein Wurzelelement. Aus diesem entspringen
dann weitere Äste bzw. Elemente.
Bildquelle: Vektor-Grafik von Freepik
Syntax
Elemente werden in XML mit Hilfe von einem Tag-Paar notiert. Tag-Paar bedeutet, dass es einen Start-Tag und einen End-Tag
gibt. Sowohl im Start-Tag als auch im End-Tag wird der Name des Elements in spitzen Klammern (<
und
>
) angegeben. Der End-Tag verfügt zwischen dem <
-Zeichen und dem Elementnamen noch zusätzlich
über einen Schrägstrich.
<kontakte> </kontakte>
Innerhalb eines solchen Elements können nun entweder weitere Elemente, Text oder auch nichts Weiteres mehr angegeben werden. Die Verschachtelung ist dabei beliebig. Es gilt nur eine Regel: Elemente müssen in der umgekehrten Reihenfolge geschlossen werden wie diese geöffnet wurden.
<kontakte> <person> </person> <person> <adresse> </adresse> </person> <person> <adresse> </adresse> </person> </kontakte>
Wenn Sie einem Element keine weiteren Elemente oder Text unterordnen möchten, so können Sie auch auf ein „leeres“ Element
zurückgreifen. Hierfür notieren wir einen Leer-Tag, welcher sich von dem Start-Tag nur so unterscheidet, dass ein
Schrägstrich zwischen Elementname und dem >
-Zeichen notiert wird. In der Regel wird vor dem Schrägstrich noch
ein Leerzeichen notiert. Dies dient jedoch nur der besseren Lesbarkeit.
<absatz />
Als nächstes wollen wir uns die Notation von Attributen anschauen. Ein Attribut besteht immer aus drei Teilen: dem Attributnamen, einem Gleichheitszeichen und dem Attributwert. Der Attributwert muss dabei in doppelten Anführungszeichen angegeben werden.
<person geschlecht="m"> </person>
Der erste Teil jedes XML-Dokuments ist i. d. R. eine XML-Deklaration, welche in Form einer Verarbeitungsanweisung notiert wird.
Eine Verarbeitungsanweisung beginnt mit dem Spezial-Tag <?xml
und endet mit dem Spezial-Tag ?>
.
Zwischen diesen Tags können nun Attribute angegeben werden: version
, encoding
und standalone
.
Das Attribut version
muss angegeben werden und besitzt im Regelfall den Wert 1.0
. Zwar gibt es bereits
eine Version 1.1 der XML-Spezifikation, jedoch ist diese kaum verbreitet, weshalb empfohlen wird, die Version 1.0 zu nutzen,
sofern die Funktionen von Version 1.1 nicht erforderlich sind. Mit dem Attribut encoding
kann die Zeichenkodierung
des Dokuments festgelegt werden. Dieses Attribut ist jedoch nicht erforderlich. Wird es weggelassen, so wird von der UTF-8-Kodierung
ausgegangen. Das optionale Attribut standalone
gibt an, ob sich eine Dokumenttypdefinition (DTD) im gleichen Dokument
(Wert yes
) oder in einer externen Datei (Wert no
) befindet. Auch wenn die Attribute encoding
und standalone
optional sind, muss die Reihenfolge (version
- encoding
- standalone
)
stets eingehalten werden.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
So wie in fast jeder anderen Sprache auch, können in XML Kommentare notiert werden. Kommentare enthalten einen beliebigen
Text und werden hauptsächlich zu Dokumentationszwecken verwendet. Sie werden von XML-Parsen (also Programmen, die den
XML-Code verarbeiten) ignoriert. Die Angabe von XML-Kommentaren erfolgt so wie in HTML auch: <!-- Text -->
<!-- Dieser Inhalt wird nicht interpretiert! -->
Wichtig: Die Namen von Elementen und Attributen sowie die Attributwerte sind frei wählbar. Auch die Struktur ist beliebig. Dies gilt natürlich nur, sofern das XML-Dokument nicht durch eine DTD oder XSD definiert ist.
Sonderzeichen
Prinzipiell sind in XML-Dokumenten alle Zeichen des jeweiligen Zeichensatzes erlaubt. Jedoch gibt es ein paar Sonderzeichen in XML, die nicht direkt verwendet werden dürfen. Die Angabe dieser Zeichen erfolgt dann mittels einer speziellen Notation (siehe Tabelle).
Zeichen | Code (Name) | Code (Dez.) | Code (Hex.) |
---|---|---|---|
< | < | < | < |
> | > | > | > |
& | & | & | & |
" | " | " | " |
' | ' | ' | ' |
Hierzu ein kurzes Beispiel:
<firma>Max Mustermann GmbH & Co. KG</firma>
Kommen innerhalb eines Textabschnitts mehrere dieser Sonderzeichen vor, so ist es „umständlich“, alle diese Sonderzeichen über den entsprechenden Code anzugeben. Für solche Fälle gibt es sogenannte CDATA-Abschnitte. Innerhalb dieser Abschnitte dürfen alle Zeichen notieret werden, ohne diese speziell umformatieren zu können. Ein solcher CDATA-Abschnitt sieht wie folgt aus:
<![CDATA[ Dieser Abschnitt darf auch die Zeichen <, >, &, " und ' enthalten. ]]>
Übrigens: Abschnitte, bei denen der Zeicheninhalt direkt angegeben wird, werden als PCDATA-Abschnitte bezeichnet.
Beispiele
Im folgenden XML-Dokument gibt es das Wurzelelement mit dem Namen sprachen
. Diesem sind nun Elemente mit dem Namen
sprache
untergeordnet. Zur Gruppierung wurden die sprache
-Elemente den Elementen adressierung
,
transformation
und definition
untergeordnet.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <sprachen> <sprache>XML</sprache> <adressierung> <sprache>XPath</sprache> </adressierung> <transformation> <sprache>XSLT</sprache> <sprache>XSL-FO</sprache> </transformation> <definition> <sprache>DTD</sprache> <sprache>XSD</sprache> </definition> </sprachen>
Das folgende XML-Dokument enthält im Vergleich zum obigen Beispiel noch eine Erweiterung: Die sprache
-Elemente
verfügen über ein Attribut mit dem Namen basierend
. Dieses Attribut gibt an, ob es sich bei der Sprache um eine
XML basierte Sprache handelt (Wert ja
) oder nicht (Wert nein
).
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <sprachen> <sprache>XML</sprache> <adressierung> <sprache basierend="nein">XPath</sprache> </adressierung> <transformation> <sprache basierend="ja">XSLT</sprache> <sprache basierend="ja">XSL-FO</sprache> </transformation> <definition> <sprache basierend="nein">DTD</sprache> <sprache basierend="ja">XSD</sprache> </definition> </sprachen>
Übrigens: XML-Dokumente können vom Browser direkt angezeigt werden. Der Browser zeigt dabei lediglich den Quellcode an (da keine Style-Informationen verfügbar sind).