1. Startseite
  2. Blog
  3. XML gegen ein XSD-Schema validieren (und die Fehler beheben)
XML-Toolkit

XML gegen ein XSD-Schema validieren (und die Fehler beheben)

Veröffentlicht am 30. Oktober 2026 · 7 Min. Lesezeit

XML kann wohlgeformt sein, mit geschlossenen Tags und maskierten Zeichen, und trotzdem für das empfangende System falsch: eine fehlende ID, ein Preis als Text, Elemente in falscher Reihenfolge. Genau das erkennt ein XSD-Schema. E-Rechnungen, Bankdateien, Produktfeeds und die meisten Datenaustausche zwischen Firmen haben eines, und Dateien, die nicht passen, werden abgelehnt.

Diese Anleitung zeigt, wie du eine Datei mit dem kostenlosen XML-Validator prüfst, und erklärt die Fehlermeldungen eine nach der anderen. Die Grundlagen zu wohlgeformtem XML findest du unter XML formatieren und validieren.

Was ein XSD-Schema festlegt

Ein Schema ist selbst eine XML-Datei. Dieses beschreibt einen Bücherkatalog:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="book" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="title" type="xs:string"/>
              <xs:element name="price" type="xs:decimal"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:ID" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
  • xs:element deklariert ein Element; das äußerste (catalog) ist die Wurzel.
  • xs:sequence führt Kindelemente in Reihenfolge auf: title muss vor price stehen.
  • maxOccurs="unbounded" erlaubt beliebig viele Bücher; standardmäßig muss ein Element genau einmal vorkommen.
  • type bestimmt, was ein Wert sein darf: xs:string ist beliebiger Text, xs:decimal eine Zahl wie 29.95.
  • use="required" macht das Attribut id zur Pflicht.

XML gegen ein Schema validieren

  1. Öffne den XML-Validator und füge dein XML links ein: einfügen, auf Datei öffnen klicken oder die Datei hineinziehen.
  2. Füge das Schema rechts in XSD-Schema (optional) ein. Die Schaltflächen Beispiel laden das Beispiel dieser Seite.
  3. Klicke auf XML validieren. Ein grünes ✓ Gültig bedeutet, dass die Datei passt. Sonst siehst du etwa ✗ 2 Probleme laut Schema gefunden, mit der Zeile jedes Problems und der Schaltfläche Zur Zeile.

Hier das Beispiel-XML. Es sieht gut aus, verstößt aber zweimal gegen das Schema:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <book id="bk101">
    <title>XML &amp; JSON for Everyone</title>
    <price>29.95</price>
  </book>
  <book>
    <title>Daten für alle</title>
    <price>free</price>
  </book>
</catalog>

Der Validator meldet Zeile 7 (das zweite Buch hat keine id) und Zeile 9 (der Preis ist „free“, also keine Zahl).

Die Fehlermeldungen erklärt

Die Schema-Prüfung nutzt libxml2, die Standard-XML-Bibliothek vieler Programme, deshalb sind ihre Meldungen auf Englisch. Diese siehst du am häufigsten:

  • Element 'book': The attribute 'id' is required but missing.
    Ein Pflichtattribut fehlt. Füge es hinzu: <book id="bk102">.
  • Element 'price': 'free' is not a valid value of the atomic type 'xs:decimal'.
    Der Wert passt nicht zum Typ. Dezimalzahlen schreiben einen Punkt (29.95, nicht 29,95), ohne Währungszeichen, Leerzeichen oder Wörter. Andere Typen funktionieren genauso: xs:date verlangt 2026-10-30, xs:boolean verlangt true oder false.
  • Element 'price': This element is not expected. Expected is ( title ).
    Das Element steht an der falschen Stelle: Die Sequenz im Schema sagt, dass title zuerst kommt. Ordne die Elemente so, wie das Schema sie aufführt.
  • Element 'isbn': This element is not expected.
    Das Schema erlaubt dieses Element hier überhaupt nicht. Prüfe die Schreibweise samt Groß-/Kleinschreibung oder entferne es.
  • Element 'order', attribute 'status': [facet 'enumeration'] The value 'sent' is not an element of the set {'open', 'paid', 'shipped'}.
    Nur die aufgeführten Werte sind erlaubt. Nimm einen davon, genau gleich geschrieben.
  • Element 'order': No matching global declaration available for the validation root.
    Das Schema hat nichts für das Wurzelelement. Meist fehlt der Namespace oder ist falsch: Hat das Schema einen targetNamespace, braucht das XML dasselbe xmlns="…" an seinem Wurzelelement.

Behebe die Probleme von oben nach unten. Ein Fehler kann weiter unten weitere Meldungen auslösen, prüfe also nach jeder Korrektur erneut; die Liste wird oft kürzer als erwartet.

Gut zu wissen

  • Eine Schema-Datei. Schemas, die mit xs:include oder xs:import andere Dateien nachladen, können diese hier nicht laden; der Bericht nennt die fehlende Datei. Kopiere diese Definitionen zuerst in ein einziges Schema.
  • XSD 1.0. Funktionen, die es nur in XSD 1.1 gibt, etwa Assertions, werden nicht unterstützt. Die meisten verwendeten Schemas sind XSD 1.0.
  • Erster Lauf. Die Prüf-Engine (etwa 1 MB) wird beim ersten Validieren gegen ein Schema geladen; danach geht es sofort.
  • Kein Schema? Lass das Feld leer, um nur zu prüfen, ob das XML wohlgeformt ist.

Weitere XML-Tools

Wird mein XML hochgeladen?

Nein. Die Prüfung, auch die Schema-Prüfung, läuft in deinem Browser, dein XML und dein Schema verlassen also nie dein Gerät.

Häufige Fragen

Woher bekomme ich das XSD?

Vom Empfänger der Datei: aus der Dokumentation des Systems, dem Standard, dem du folgen musst (E-Rechnungs- und Bankstandards veröffentlichen ihre Schemas), oder von den Entwicklern deines Partners.

Werden DTDs unterstützt?

Nein, der Validator prüft nur gegen XSD-Schemas.

Verändert das Validieren mein XML?

Nein. Es liest die Datei nur und meldet Probleme. Behebe sie in deinem Editor oder im Feld und prüfe dann erneut.