personal data 3914806 1280 e1707576321934

Extensible Markup Language (XML): Syntax und Regeln im Detail

Aktualisiert am 9. Oktober 2026

Das Wichtigste in Kürze

  • XML-Dokumente müssen wohlgeformt sein: genau ein Wurzelelement, jedes Tag geschlossen, korrekt verschachtelt, Groß-/Kleinschreibung beachtet, Attributwerte in Anführungszeichen.
  • Schon ein einziger Syntaxfehler reicht, und ein XML-Parser bricht ab. Anders als Browser bei HTML „repariert" er nichts.
  • Maßgeblich ist bis heute XML 1.0 (aktuell die 5. Ausgabe von 2008). XML 1.1 existiert, spielt in der Praxis aber kaum eine Rolle.
  • Namensräume, Schemas (XSD) und DTDs sind Zusätze. Die Grundsyntax kommt ohne sie aus.

Du suchst erst einmal eine einfache Einführung, wofür XML überhaupt gut ist? Dann starte mit Was ist XML? Einfach erklärt für Einsteiger. Hier geht es um die Regeln im Detail.

Herkunft: von SGML zu XML 1.0

XML 1.0 wurde im Februar 1998 vom W3C als Empfehlung veröffentlicht und sollte die Beschränkungen seines Vorgängers, der Standard Generalized Markup Language (SGML), beseitigen und gleichzeitig die Kompatibilität mit SGML-Konzepten wahren. Genau genommen ist XML ein vereinfachtes Profil von SGML: Viele Sonderfälle wie weggelassene End-Tags fielen weg, damit Parser einfacher und strenger arbeiten können. Zu den Editoren der Spezifikation gehörten Tim Bray, C. M. Sperberg-McQueen und später Jean Paoli.

Aufbau eines XML-Dokuments

<?xml version="1.0" encoding="UTF-8"?>
<!-- Kommentar: Artikelliste für den Shop -->
<katalog>
  <artikel id="A-100" verfuegbar="true">
    <name>USB-C-Kabel, 1 m</name>
    <preis waehrung="EUR">9.90</preis>
    <leer/>
  </artikel>
</katalog>
Bestandteil Beispiel Hinweis
XML-Deklaration <?xml version="1.0" encoding="UTF-8"?> optional, aber empfohlen; falls vorhanden, muss sie ganz am Anfang stehen
Wurzelelement <katalog> genau eines pro Dokument
Element <name>…</name> Start-Tag, Inhalt, End-Tag
Leeres Element <leer/> Kurzform für <leer></leer>
Attribut id="A-100" Name-Wert-Paar im Start-Tag
Kommentar <!-- … --> darf kein -- enthalten
Zeichendaten USB-C-Kabel, 1 m der eigentliche Text

Die Regeln für wohlgeformtes XML

  1. Genau ein Wurzelelement. Alle anderen Elemente liegen darin.
  2. Jedes Element wird geschlossen, entweder mit End-Tag oder als leeres Element <tag/>.
  3. Korrekte Verschachtelung: <a><b></b></a> ist erlaubt, <a><b></a></b> nicht.
  4. Groß- und Kleinschreibung zählt: <Titel> und </titel> passen nicht zusammen.
  5. Attributwerte stehen in Anführungszeichen, doppelt oder einfach. Jedes Attribut darf pro Element nur einmal vorkommen.
  6. Namensregeln: Element- und Attributnamen dürfen nicht mit einer Ziffer, einem Bindestrich oder einem Punkt beginnen und keine Leerzeichen enthalten. Namen, die mit xml beginnen (in beliebiger Schreibweise), sind reserviert.
  7. Sonderzeichen maskieren: < und & dürfen im Text nicht roh vorkommen.
  8. Korrekte Zeichenkodierung: Die Datei muss tatsächlich in der angegebenen Kodierung gespeichert sein. Ohne Angabe gehen Parser von UTF-8 oder UTF-16 aus.

Entitäten, Zeichenreferenzen und CDATA

XML kennt fünf vordefinierte Entitäten:

Zeichen Entität Pflicht?
< &lt; im Text immer
& &amp; im Text immer
> &gt; nur in der Folge ]]> nötig
" &quot; in Attributwerten mit " als Begrenzer
' &apos; in Attributwerten mit ' als Begrenzer

Jedes Unicode-Zeichen kannst du außerdem als Zeichenreferenz schreiben, dezimal &#8364; oder hexadezimal &#x20AC; (beides ergibt €). HTML-Entitäten wie &nbsp; oder &euro; kennt XML dagegen nicht, außer eine DTD definiert sie.

Für längere Passagen mit vielen Sonderzeichen, etwa Code-Schnipsel, gibt es CDATA-Abschnitte. Ihr Inhalt wird nicht als Markup interpretiert:

<code><![CDATA[if (a < b && b > c) { ... }]]></code>

Einzige Einschränkung: Die Zeichenfolge ]]> darf innerhalb von CDATA nicht vorkommen.

Elemente oder Attribute?

Eine feste Regel gibt es nicht, aber eine bewährte Faustregel:

  • Attribute für Metadaten und kurze, einfache Werte: IDs, Einheiten, Sprachcodes (waehrung="EUR").
  • Elemente für die eigentlichen Daten, für alles, was mehrfach vorkommen kann, und für alles, was selbst Struktur haben könnte.

Attribute haben keine garantierte Reihenfolge und können nicht verschachtelt werden. Wer später erweitern will, fährt mit Elementen meist besser.

Namensräume (Namespaces)

Namensräume kamen nicht mit XML 1.0, sondern mit der eigenen Empfehlung Namespaces in XML (Januar 1999). Sie lösen Namenskonflikte, wenn mehrere Vokabulare in einem Dokument vorkommen:

<rechnung xmlns="https://example.com/rechnung"
          xmlns:adr="https://example.com/adresse">
  <nummer>2026-0815</nummer>
  <adr:anschrift>
    <adr:ort>Berlin</adr:ort>
  </adr:anschrift>
</rechnung>

Die URI dient nur als eindeutiger Name. Der Parser ruft sie nicht auf, sie muss also nicht erreichbar sein. Entscheidend ist die URI, nicht das Präfix: adr:ort und a:ort sind identisch, wenn beide Präfixe auf dieselbe URI zeigen.

Wohlgeformt vs. gültig

Wohlgeformtheit prüft nur die Syntax. Ob die richtigen Elemente in der richtigen Reihenfolge und mit sinnvollen Werten vorkommen, regelt eine DTD oder ein XML Schema. Wie das mit XSD funktioniert, zeigt der Artikel XML Schema (XSD) mit einem vollständigen Beispiel.

Typische Fehler und was der Parser meldet

Die Meldungen stammen aus xmllint --noout datei.xml (libxml2):

Fehler Beispiel Meldung
Unmaskiertes & <titel>Tom & Jerry</titel> xmlParseEntityRef: no name
Falsche Verschachtelung <a><b></a></b> Opening and ending tag mismatch
Zwei Wurzelelemente <a/><b/> Extra content at the end of the document
Groß-/Kleinschreibung <Titel>x</titel> Opening and ending tag mismatch: Titel … and titel
Attribut ohne Anführungszeichen <a x=1/> AttValue: " or ' expected

Zum schnellen Prüfen reichen xmllint auf der Kommandozeile, die XML-Unterstützung gängiger Code-Editoren oder das Öffnen der Datei in einem Browser. Firefox und Chrome zeigen bei nicht wohlgeformtem XML eine Fehlerseite mit Zeilenangabe.

XML 1.0 und XML 1.1

XML 1.0 XML 1.1
Erstveröffentlichung 10. Februar 1998 4. Februar 2004
Aktuelle Ausgabe 5. Ausgabe, 26. November 2008 2. Ausgabe, 16. August 2006
Wichtigste Unterschiede – erlaubt u. a. die meisten Steuerzeichen als Zeichenreferenz und behandelt zusätzliche Zeilenende-Zeichen
Praxis Standard für praktisch alle Formate selten genutzt

Die 5. Ausgabe von XML 1.0 hat die Regeln für Namen bereits stark gelockert. Deshalb gibt es kaum noch Gründe für 1.1. Schreib version="1.0", solange ein Format nicht ausdrücklich 1.1 verlangt.

FAQ

Muss die XML-Deklaration in der ersten Zeile stehen?

Wenn sie vorhanden ist, ja: Vor <?xml darf nichts stehen, auch kein Leerzeichen und keine Leerzeile. Nur eine Byte-Order-Mark (BOM) ist erlaubt.

Darf ein Elementname Umlaute enthalten?

Ja, XML erlaubt Unicode-Buchstaben in Namen, <straße> ist gültig. Für Schnittstellen mit anderen Systemen sind ASCII-Namen trotzdem die robustere Wahl.

Warum zeigt mein XML-Parser einen Fehler, obwohl die Datei im Browser als HTML funktioniert?

HTML-Parser sind fehlertolerant, XML-Parser nicht. Nicht geschlossene Tags wie <br> oder Entitäten wie &nbsp; sind in XML Fehler.

Ist XHTML noch relevant?

Die XML-Schreibweise von HTML gibt es weiterhin als Teil des HTML Living Standard. Die meisten Websites nutzen aber die normale HTML-Syntax.