XML
In dieser Lerneinheit tauchst du in die Grundlagen von XML (eXtensible Markup Language) ein und lernst den Aufbau mit Tags, Attributen und Elementen kennen. Du verstehst die Bedeutung von XML für den strukturierten Datenaustausch und kannst selbstständig XML-Dokumente erstellen und interpretieren. Die erworbenen Kenntnisse helfen dir beim Umgang mit XML-basierten Schnittstellen und Konfigurationsdateien, die in vielen Anwendungen und Systemen zum Einsatz kommen.
Einführung
Datenbanken, Webanwendungen und sogar ganze Cloud-Systeme müssen ständig miteinander kommunizieren – oft über völlig unterschiedliche Technologien hinweg. Trotzdem müssen alle dieselben Informationen korrekt verstehen und verarbeiten können.

Damit das funktioniert, braucht es ein Format, das Daten nicht nur speichert, sondern auch ihre Bedeutung beschreibt. XML wurde genau dafür entwickelt.
Als universelle Sprache, mit der Daten strukturiert, lesbar und eindeutig austauschbar werden. In dieser Lerneinheit lernst du, wie XML funktioniert und warum es bis heute ein zentraler Standard in der IT ist.
Lernziele
Nach dieser Lerneinheit kannst du:
- Die Struktur und Funktionsweise von XML erklären, einschließlich der Begriffe Element, Tag und Attribut.
- Wohlgeformtheit und Validität unterscheiden und erläutern, wie sie durch DTD oder XSD sichergestellt werden.
- Den Aufbau und Zweck von DTDs und XML-Schemas (XSD) beschreiben und deren Unterschiede begründen.
- Verschiedene XML-Verarbeitungsansätze (DOM, SAX, StAX) vergleichen und deren Einsatzgebiete begründen.
Was ist XML?
XML steht für eXtensible Markup Language (Erweiterbare Auszeichnungssprache) und dient primär dem Zweck, Daten in einer strukturierten, plattformunabhängigen Weise zu speichern und zu transportieren.
Anders als HTML, das darauf ausgelegt ist, Daten anzuzeigen, ist XML darauf ausgelegt, Daten zu beschreiben und zu strukturieren. Die Struktur wird durch Tags, Attribute und Elemente definiert.
Die Bausteine
Tags
Ein Tag ist das grundlegende Bauelement in XML und dient zur Kennzeichnung von Daten. Tags definieren, wo ein Datenbereich beginnt und endet.
- Start-Tag: Signalisiert den Anfang eines Elements. Beispiel:
<name> - End-Tag: Signalisiert das Ende eines Elements. Beispiel:
</name>
Ein Element, das keinen Inhalt (wie Text oder weitere Elemente) hat, kann durch einen Empty-Element-Tag (auch selbstschließender Tag genannt) dargestellt werden: <umbruch/>.
Die Bausteine
Elemente
Ein Element ist die gesamte Struktur, bestehend aus einem Start-Tag, dem Inhalt und einem End-Tag. Der Inhalt kann Text, andere Elemente (Kind-Elemente), Attribute oder eine Mischung daraus sein.
Ein einfaches Beispiel für ein Element:
<student id="123">
<name>John Doe</name>
<email>john.doe@example.com</email>
</student>In diesem Beispiel ist student das Element. Es umschließt zwei Kind-Elemente (name und email) und besitzt zudem ein Attribut (id).
Die Bausteine
Attribute
Attribute liefern zusätzliche Informationen (Metadaten) über ein Element und werden immer im Start-Tag definiert. Jedes Attribut besteht aus einem Namen und einem Wert (Schlüssel-Wert-Paar), getrennt durch ein = und umschlossen von Anführungszeichen.
Beispiel: <student id="123">
Hier ist id der Attributname und "123" der Attributwert.
Anwendungsbeispiel: Bibliothek
Stellen wir uns vor, wir möchten Informationen über Bücher in einer Bibliothek speichern. XML bietet hierfür eine klare, menschenlesbare Struktur:
<library>
<book isbn="978-3-16-148410-0">
<title>XML für Einsteiger</title>
<author>John Doe</author>
</book>
<book isbn="978-1-23-456789-7">
<title>Advanced XML</title>
<author>Jane Doe</author>
</book>
</library>In diesem Beispiel ist library das Wurzelelement, das zwei book-Elemente enthält. Jedes book-Element hat ein isbn-Attribut und zwei Kind-Elemente: title und author.
Wohlgeformtheit von XML-Dokumenten
Damit XML-Daten korrekt verarbeitet werden können, müssen sie bestimmten Regeln folgen. Hier unterscheidet man zwei Stufen: Wohlgeformtheit und Validität.
Wohlgeformtheit (Well-formed)
Ein XML-Dokument gilt als wohlgeformt, wenn es den grundlegenden syntaktischen Regeln von XML entspricht. Dies ist die absolute Mindestanforderung, damit ein XML-Parser (ein Programm zum Lesen von XML) das Dokument überhaupt interpretieren kann.
Die wichtigsten Kriterien für Wohlgeformtheit sind:
- Ein Wurzelelement: Ein XML-Dokument muss genau ein Wurzelelement (root element) besitzen, das alle anderen Elemente umschließt (im Beispiel oben war dies
<library>). - Korrekte Schließung: Alle Tags müssen korrekt geöffnet
<tagname>und geschlossen</tagname>werden (oder selbstschließende Tags<tagname/>verwenden). - Korrekte Verschachtelung: Elemente müssen logisch korrekt ineinander verschachtelt sein. Ein inneres Element muss geschlossen werden, bevor das äußere Element geschlossen wird.
- Korrekt:
<ausschuss><sprecher>...</sprecher></ausschuss> - Falsch:
<ausschuss><sprecher>...</ausschuss></sprecher>
- Korrekt:
- Attribute in Anführungszeichen: Attributwerte müssen immer in Anführungszeichen (entweder
"oder') eingeschlossen werden. - Sonderzeichen (Maskierung): Bestimmte Zeichen haben in XML eine Sonderbedeutung und müssen umschrieben werden, damit sie als normaler Textinhalt (oder Attributwert) erkannt werden:
<wird zu<&wird zu&>wird zu>(technisch oft nicht nötig, aber empfohlen)"wird zu"(nötig innerhalb von Attributwerten, die"verwenden)'wird zu'(nötig innerhalb von Attributwerten, die'verwenden)
Validität (Valid) von XML-Dokumenten
Validität (Valid)
Die Validität geht einen Schritt weiter. Ein Dokument ist valide, wenn es wohlgeformt ist und zusätzlich einer vordefinierten Struktur entspricht. Diese Struktur wird in einer separaten Definitionsdatei festgelegt, z. B. einer DTD (Document Type Definition) oder einem XML Schema (XSD).
Die Validierung prüft (je nach Definition):
- Ob nur erlaubte Elementnamen verwendet werden.
- Ob die Reihenfolge und Häufigkeit der Elemente stimmt (z. B. “ein
<autor>muss immer nach einem<title>kommen”). - Ob alle Pflicht-Attribute vorhanden sind.
- Ob die Datentypen stimmen (z. B. “das Attribut
idmuss eine Zahl sein”).
Praktisches Beispiel (Wohlgeformt vs. Valide)
Das folgende Dokument ist wohlgeformt:
<kontakte>
<kontakt>
<name>Max Mustermann</name>
<email>max@example.com</email>
</kontakt>
</kontakte>Wenn wir nun ein Schema definieren, das vorschreibt, dass jedes <kontakt>-Element zwingend eine <telefonnummer> enthalten muss, wäre das obige Dokument nicht valide (obwohl es wohlgeformt ist).
Dieses Dokument wäre wohlgeformt UND valide (gemäß unserem fiktiven Schema):
<kontakte>
<kontakt>
<name>Max Mustermann</name>
<email>max@example.com</email>
<telefonnummer>123456789</telefonnummer>
</kontakt>
</kontakte>Zusammenfassend: Wohlgeformtheit stellt sicher, dass ein Parser die Datei lesen kann. Validität stellt sicher, dass die Daten die erwartete Geschäftslogik und Struktur einhalten.
XML-Schemas (DTD, XSD) zur Strukturdefinition
Um die Validität (wie im ersten Teil beschrieben) eines XML-Dokuments zu prüfen, benötigt man eine Definitionsdatei, die die erlaubte Struktur und die Regeln festlegt. Diese Definitionsdateien werden als Schemas bezeichnet. Die zwei gängigsten Formate dafür sind DTD und XSD.
DTD (Document Type Definition)
DTD ist der ältere Standard zur Definition einer XML-Struktur. DTDs legen fest, welche Elemente und Attribute erlaubt sind, in welcher Reihenfolge sie auftreten dürfen und wie sie verschachtelt sein können.
- Syntax: DTDs haben ihre eigene Syntax, die nicht selbst XML ist.
- Datentypen: Ein großer Nachteil von DTDs ist, dass sie keine spezifischen Datentypen (wie Zahl, Datum, E-Mail-Adresse) unterstützen. Alles wird im Grunde als Text (
#PCDATA- Parsed Character Data) behandelt.
Beispiel einer DTD-Definition:
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>XSD (XML Schema Definition)
XSD (auch “XML Schema” genannt) ist der moderne, leistungsfähigere Nachfolger von DTD. XSDs sind selbst in XML-Syntax geschrieben, was ihre Verarbeitung und Erstellung vereinfacht.
- Datentypen: Der größte Vorteil von XSD ist die starke Typisierung. Man kann Standarddatentypen wie
xs:string,xs:integer,xs:dateoderxs:booleanverwenden und sogar eigene, komplexe Datentypen oder Muster (z. B. für Postleitzahlen) definieren. - Namensräume (Namespaces): XSD unterstützt XML-Namensräume, was hilft, Namenskonflikte in komplexen Dokumenten zu vermeiden.
- Flexibilität: XSD bietet weitaus detailliertere Regeln für Reihenfolgen, Häufigkeiten (z. B. “genau 1x”, “0 oder mehrmals”) und Strukturen.
Beispiel einer XSD-Definition (äquivalent zur DTD oben):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>Zusammenfassend: Für einfache Dokumente mag eine DTD ausreichen, aber XSD ist der De-facto-Standard in modernen Anwendungen, da es präzisere Validierung und Datentyp-Sicherheit ermöglicht.
Verarbeitung von XML mit APIs (DOM, SAX)
Um XML-Daten in einer Anwendung (z.B. in Java, Python oder JavaScript) nutzen zu können, benötigt man eine Programmierschnittstelle (API), um die Datei zu lesen (parsen) und zu bearbeiten. Die zwei fundamental unterschiedlichen Ansätze hierfür sind DOM und SAX.
DOM (Document Object Model)
DOM ist eine speicherresidente API. Der Parser liest das gesamte XML-Dokument ein und baut es im Arbeitsspeicher als Baumstruktur nach (ähnlich wie ein Stammbaum). Jeder Knoten im Baum (Element, Attribut, Text) ist ein Objekt.
| Kategorie | Beschreibung |
|---|---|
| Vorteile | Flexibler Zugriff: Beliebige Navigation im Baum möglich (vorwärts, rückwärts, aufwärts, abwärts). Manipulation: Das Dokument kann einfach verändert werden – Elemente hinzufügen, Inhalte ändern oder Knoten löschen. |
| Nachteile | Hoher Speicherbedarf: Das gesamte Dokument wird im Speicher gehalten, daher ungeeignet für sehr große XML-Dateien. Startverzögerung: Die Verarbeitung beginnt erst, nachdem das komplette Dokument eingelesen und der Baum aufgebaut wurde. |
SAX (Simple API for XML)
SAX ist eine Ereignis-gesteuerte (Event-based) API. Der Parser liest das XML-Dokument sequenziell (von oben nach unten, Zeile für Zeile) und baut keinen Baum im Speicher auf.
Stattdessen löst der Parser Ereignisse (Events) aus, sobald er auf bestimmte Dinge trifft (z. B. “Start-Tag gefunden”, “Textinhalt gefunden”, “End-Tag gefunden”). Der Programmierer muss “Listener” für diese Ereignisse registrieren, um die Daten während des Lesevorgangs abzufangen.
| Kategorie | Beschreibung |
|---|---|
| Vorteile | Minimaler Speicherbedarf: Nur der aktuell gelesene Teil ist im Speicher – ideal für sehr große XML-Dateien oder XML-Streams. Geschwindigkeit: Die Verarbeitung beginnt sofort, ohne dass zuerst ein vollständiger Baum aufgebaut werden muss. |
| Nachteile | Nur sequenzieller Zugriff: Es ist kein Zurückspringen möglich; frühere Daten müssen bei Bedarf selbst zwischengespeichert werden. Keine Manipulation: SAX dient ausschließlich zum Lesen (Read-only). Komplexere Programmierung: Der eventbasierte Ansatz ist weniger intuitiv als die DOM-Navigation. |
Zusammenfassung
Zusammenfassung:
Grundlagen von XML
XML steht für eXtensible Markup Language und dient dazu, Daten strukturiert und plattformunabhängig zu speichern und auszutauschen. Anders als HTML beschreibt XML Inhalte, anstatt sie darzustellen.
- Zentrale Elemente sind Tags, Attribute und Elemente, die zusammen die Struktur definieren.
- Tags markieren den Beginn und das Ende eines Elements, während Attribute zusätzliche Informationen liefern.
- Ein XML-Dokument benötigt ein eindeutiges Wurzelelement, das alle weiteren Elemente einschließt.
Wohlgeformtheit und Validität
Damit XML verarbeitet werden kann, muss es wohlgeformt und idealerweise valide sein.
- Wohlgeformtheit bedeutet: korrekte Tag-Struktur, ein Wurzelelement, richtige Verschachtelung, Attribute in Anführungszeichen und Maskierung von Sonderzeichen.
- Validität bedeutet, dass das Dokument zusätzlich einer definierten Struktur (DTD oder XSD) entspricht.
- DTD legt zulässige Elemente und Attribute fest, bietet jedoch keine Datentypen.
- XSD (XML Schema Definition) ist der moderne Standard, definiert Datentypen, erlaubt Namensräume und präzisiert die Struktur.
Verarbeitung von XML mit APIs
Für die Nutzung von XML-Daten werden Parser verwendet, die XML in verarbeitbare Strukturen umwandeln.
- DOM (Document Object Model): liest das gesamte Dokument in den Speicher und stellt es als Baumstruktur dar. Ideal für flexible Manipulation, aber speicherintensiv.
- SAX (Simple API for XML): liest sequenziell und löst Ereignisse aus, sobald Elemente erkannt werden. Effizient, aber nur lesend.
- StAX (Streaming API for XML): kombiniert beide Ansätze, erlaubt kontrolliertes Einlesen (Pull-Parsing) bei geringem Speicherverbrauch.
Ausblick
Im nächsten Schritt lernst du, wie sich JSON (JavaScript Object Notation) als moderne, leichtgewichtige Alternative zu XML entwickelt hat. Du erfährst, wie JSON-Daten strukturiert sind, warum sie in Webanwendungen oft bevorzugt werden und wie du sie effektiv mit Programmiersprachen wie Python oder JavaScript verarbeitest.