- Startseite
- Blog
- XML gegen ein XSD-Schema validieren (und die Fehler beheben)
XML gegen ein XSD-Schema validieren (und die Fehler beheben)
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:elementdeklariert ein Element; das äußerste (catalog) ist die Wurzel.xs:sequenceführt Kindelemente in Reihenfolge auf:titlemuss vorpricestehen.maxOccurs="unbounded"erlaubt beliebig viele Bücher; standardmäßig muss ein Element genau einmal vorkommen.typebestimmt, was ein Wert sein darf:xs:stringist beliebiger Text,xs:decimaleine Zahl wie 29.95.use="required"macht das Attributidzur Pflicht.
XML gegen ein Schema validieren
- Öffne den XML-Validator und füge dein XML links ein: einfügen, auf Datei öffnen klicken oder die Datei hineinziehen.
- Füge das Schema rechts in XSD-Schema (optional) ein. Die Schaltflächen Beispiel laden das Beispiel dieser Seite.
- 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 & 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, nicht29,95), ohne Währungszeichen, Leerzeichen oder Wörter. Andere Typen funktionieren genauso:xs:dateverlangt2026-10-30,xs:booleanverlangttrueoderfalse.Element 'price': This element is not expected. Expected is ( title ).
Das Element steht an der falschen Stelle: Die Sequenz im Schema sagt, dasstitlezuerst 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 einentargetNamespace, braucht das XML dasselbexmlns="…"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:includeoderxs:importandere 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
- XML-Formatierer: die Datei erst lesbar machen oder in der Baumansicht erkunden.
- XPath-Tester: die Elemente finden, auf die eine Meldung verweist. Siehe XPath verwenden.
- CSV in XML: das XML aus einer Tabelle erstellen und hier prüfen.
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.