XSD-Validator

Ein wohlgeformtes XML-Dokument kann trotzdem falsch sein: fehlendes erforderliches Element, falscher Datentyp für ein Attribut oder Elemente in der falschen Reihenfolge. XSD (XML Schema Definition) beschreibt genau, wie das Dokument aussehen sollte. Dieser Validator kombiniert Ihr XML mit seinem XSD, führt den W3C XML Schema-Validator aus und listet jede Verletzung mit Zeile, Element und der spezifischen verletzten Einschränkung auf.

So validieren Sie XML gegen XSD

  1. 1

    Fügen Sie beide Dateien ein

    XML auf der einen Seite, XSD-Schema auf der anderen. Mehrere Schemata können zusammen eingefügt werden.

  2. 2

    Validierung ausführen

    Der Parser vergleicht Elemente, Attribute und Typen mit den Schema-Deklarationen.

  3. 3

    Fehler überprüfen

    Jede Verletzung zeigt den Elementpfad, die erwartete Einschränkung und den tatsächlichen Wert an.

  4. 4

    Korrigieren und erneut validieren

    Bearbeiten Sie direkt und führen Sie die Validierung erneut aus, ohne neu zu laden.

Was XSD überprüft

  • Elementnamen und Kardinalität: erforderlich, optional, min/max Vorkommen.
  • Elementreihenfolge: Sequenz, Auswahl, alle.
  • Attributpräsenz und -typ: erforderlich vs. optional, Standardwerte, feste Werte.
  • Datentypen: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, benutzerdefiniert.
  • Einschränkungen: min/max Länge, Aufzählungen, Regex-Muster, min/max Werte.
  • Referentielle Integrität: xs:key, xs:keyref, xs:unique für bereichsübergreifende Einschränkungen.

Typische Fehler

Fehler XSD-Einschränkung
Fehlendes erforderliches Element <email> minOccurs="1"
Zu viele <phone>-Elemente maxOccurs="2" überschritten
Wert “abc” ist kein gültiger Integer type="xs:integer"
Wert “[email protected]” entspricht nicht dem Muster xs:pattern auf xs:string
Elemente in falscher Reihenfolge xs:sequence
Unbekanntes Element <foo> Nicht im Schema deklariert
Duplikatschlüssel xs:unique Verletzung

Wahl zwischen XSD und Alternativen

  • XSD: W3C-Standard, ausführlich, leistungsstark, weit verbreitet. Erste Wahl für Unternehmens-XML.
  • RELAX NG: einfachere Syntax, ebenso ausdrucksstark. Beliebt in Dokumentationsformaten (DocBook, TEI).
  • Schematron: regelbasiert, führt XPath-Assertions gegen das Dokument aus. Gut für Geschäftsregeln über die Struktur hinaus.
  • DTD: älter, viel weniger ausdrucksstark. Immer noch in Gebrauch für historische HTML-Kompatibilität.

Viele Projekte verwenden XSD für die Struktur und Schematron für komplexe bereichsübergreifende Regeln.

Häufige Stolpersteine

  • Namespaces müssen übereinstimmen. Wenn das XSD targetNamespace="http://example.com" deklariert, das XML jedoch diesen Namespace nicht verwendet, schlägt die Validierung mit “keine Deklaration gefunden” fehl.
  • xs:anyType ist kein magischer Escape. Es entspricht allem, bietet jedoch keine Validierung.
  • Standardwerte gelten nur, wenn das Attribut fehlt. Ein expliziter leerer Wert (attr="") erhält nicht den Standard.
  • Whitespace-Verarbeitung variiert je nach Typ. xs:string bewahrt es, xs:token reduziert es, xs:normalizedString ersetzt Tabs/Zeilenumbrüche durch Leerzeichen.

Debugging-Workflow

  1. Zuerst ohne Schema validieren (Überprüfung der Wohlgeformtheit). Beheben Sie alle Parsing-Fehler.
  2. Dann gegen das Schema validieren.
  3. Konzentrieren Sie sich auf den ersten Fehler. XSD-Validatoren erzeugen manchmal Kaskadenfehler; der erste ist normalerweise am handlungsfähigsten.
  4. Verwenden Sie XPath, um das fehlerhafte Element in großen Dokumenten zu lokalisieren.

Häufig gestellte Fragen

Nein. Fügen Sie sie separat ein oder verweisen Sie im XML über xsi:schemaLocation auf das Schema. Die meisten Tools unterstützen beide Ansätze.

Ja. Wenn Elemente aus verschiedenen Namespaces erscheinen, benötigt jedes sein eigenes Schema. Fügen Sie alle ein; der Validator lädt sie alle.

XSD 1.0. Die zugrunde liegende libxml-Engine implementiert XSD 1.1 nicht, daher werden 1.1-spezifische Funktionen wie Assertions, bedingte Typen und offener Inhalt nicht erzwungen.

Nein. Ihr XML und Schema werden nur an den Server gesendet, um die Validierung für diese eine Anfrage auszuführen; sie werden danach nicht gespeichert oder protokolliert.

Verwandte Tools

Tool in anderen Sprachen verfügbar