Zum Inhalt springen
Aback Tools Logo

So validieren Sie XML gegen ein XSD-Schema: Fehler, Tools & CI/CD

So validieren Sie XML-Dokumente gegen XSD-Schemata: Wohlgeformtheit vs. Gültigkeit, Aufbau eines XSD, browserlokale und CLI-Validierung mit xmllint, häufige XSD-Fehler erklärt und automatisierte Schemavalidierung in GitHub Actions.

DH
Tutorials & How-Tos12 Min. Lesezeit2,700 Wörter

Ein XML-Dokument, das ohne Fehler geparst wird, ist wohlgeformt - aber wohlgeformt ist nicht dasselbe wie korrekt. Die XSD-Validierung geht eine Ebene tiefer und prüft jedes Element gegen einen Vertrag: Pflichtfelder sind vorhanden, Datentypen stimmen überein, Werte liegen innerhalb erlaubter Bereiche, und Elemente erscheinen in der richtigen Reihenfolge. Dieser Leitfaden erklärt genau, was die XSD-Validierung prüft, wie Sie sie online und im Code ausführen, was die häufigsten Fehler bedeuten und wie Sie die XSD-Validierung in Ihre CI-Pipeline einbauen, damit defekte Dokumente nie die Produktion erreichen.

2ValidierungsebenenWohlgeformtheit + Schemagültigkeit
100%Browserlokale Prüfungenkein XML verlässt Ihr Gerät
<1sValidierungsgeschwindigkeitsofortiges Feedback zu Fehlern

Was ist XSD-Validierung?

XSD steht für XML Schema Definition. Es ist ein W3C-Standard, mit dem Sie die exakte Struktur beschreiben können, die ein XML-Dokument einhalten muss: welche Elemente erlaubt sind, in welcher Reihenfolge sie erscheinen, welchen Datentypen ihr Inhalt entsprechen muss und welche Attribute Pflicht oder optional sind. Wenn Sie ein XML-Dokument gegen ein XSD validieren, liest ein Parser beide Dateien und meldet jede Stelle, an der das Dokument vom Schemavertrag abweicht.

XSD hat das ältere DTD-Format (Document Type Definition) als primäre XML-Schemasprache abgelöst, weil es selbst in XML geschrieben ist, einen reichen Satz eingebauter Datentypen unterstützt (`xs:integer`, `xs:date`, `xs:boolean` usw.) und komplexe Einschränkungen wie Zeichenkettenmuster, numerische Bereiche und bedingte Elementanforderungen ausdrücken kann. DTDs begegnen einem noch in Altsystemen, doch XSD ist der Standard für jeden XML-basierten Datenaustausch, der in den letzten fünfzehn Jahren gebaut wurde.

Wo XSD-Validierung eingesetzt wird

XSD-Validierung taucht überall dort auf, wo strukturierte XML-Daten eine Systemgrenze überschreiten. Häufige Beispiele sind SOAP-Webservice-Anfragen und -Antworten (beschrieben durch WSDL, das XSD-Schemata einbettet), E-Rechnungs- und Beschaffungsformate wie UBL 2.1 und EDIFACT, der Gesundheitsdatenaustausch mit HL7-CDA- und FHIR-XML-Profilen, behördliche XML-Einreichungen (Steuererklärungen, Zollanmeldungen) und Konfigurationsdateien von Unternehmenssoftware wie Mavens `pom.xml` oder Springs Application-Context-XML.

  • SOAP-/WSDL-Dienste: Jedes Anfrage- und Antwortelement ist in einem eingebetteten XSD definiert.
  • E-Rechnung (UBL, CII): Beschaffungs- und Rechnungsformate tragen öffentliche XSD-Schemata, gegen die Handelspartner validieren.
  • Gesundheitswesen (HL7, FHIR XML): Der Austausch klinischer Dokumente erfordert strenge XSD-Konformität vor Annahme.
  • Behördliche Einreichungen: Steuerbehörden und Zollämter veröffentlichen XSD-Schemata, die eingereichte Dokumente erfüllen müssen.
  • Build-Werkzeuge: Maven-pom.xml, Ant-build.xml und viele weitere Konfigurationsformate nutzen XSD für IDE-Autovervollständigung und Validierung.

Note

Die XSD-Validierung ist von der XML-Namespace-Korrektheit zu unterscheiden. Ein Dokument kann den richtigen Namespace-URI referenzieren und trotzdem die XSD-Validierung verfehlen, wenn sein Inhalt die Schemaeinschränkungen verletzt. Validieren Sie immer gegen das Schema, nicht nur gegen die Namespace-Deklaration.

Wohlgeformtheit vs. Gültigkeit

Jedes XML-Dokument muss zuerst wohlgeformt sein, bevor es validiert werden kann. Die Wohlgeformtheit prüft der XML-Parser selbst, ohne dass ein Schema nötig ist. Die Gültigkeit ist eine zusätzliche Ebene, die gegen ein bestimmtes Schema geprüft wird. Diese Unterscheidung zu verstehen spart erhebliche Debug-Zeit: Ein XSD-Validator, der ein fehlerhaftes Dokument erhält, meldet oft verwirrende Schemafehler statt des eigentlichen Parse-Problems.

Ein textuelles Objekt ist ein wohlgeformtes XML-Dokument, wenn es der Produktion mit der Bezeichnung document entspricht und alle in der Spezifikation angegebenen Wohlgeformtheitsbeschränkungen erfüllt.

- W3C-XML-Spezifikation

Was die Wohlgeformtheit prüft

  • Tag-Paarung: Jedes öffnende Tag hat ein zugehöriges schließendes Tag (`&lt;item&gt;` → `&lt;/item&gt;`).
  • Korrekte Verschachtelung: Tags müssen in umgekehrter Reihenfolge geschlossen werden - `&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;` ist gültig; `&lt;a&gt;&lt;b&gt;&lt;/a&gt;&lt;/b&gt;` nicht.
  • Einzelnes Wurzelelement: Das Dokument hat genau ein Element auf oberster Ebene.
  • Zitierte Attribute: Alle Attributwerte sind in einfache oder doppelte Anführungszeichen eingeschlossen.
  • Escapete Sonderzeichen: `&lt;`, `&gt;`, `&`, `"` und `'` im Textinhalt müssen Entitätsreferenzen oder CDATA-Abschnitte verwenden.
  • Gültige Element- und Attributnamen: Namen beginnen mit einem Buchstaben oder Unterstrich, nicht mit einer Ziffer oder einem Bindestrich.

Was die XSD-Gültigkeit zusätzlich prüft

Sobald die Wohlgeformtheit passt, legt die XSD-Validierung den Schemavertrag darüber. Dazu gehört die Prüfung, dass jedes als Pflicht deklarierte Element mit `minOccurs="1"` tatsächlich vorhanden ist, dass Textinhalte typisierter Elemente dem deklarierten `xs:type` entsprechen (keine Zeichenketten in Ganzzahlfeldern), dass numerische Werte innerhalb der Grenzen `xs:minInclusive` und `xs:maxInclusive` liegen, dass Zeichenketteninhalte die Regex-Einschränkungen von `xs:pattern` erfüllen und dass Kindelemente in der im Schema definierten Sequenz, Auswahl oder All-Gruppe erscheinen.

PrüfungWohlgeformtheitXSD-Gültigkeit
Tag-Paarung und Verschachtelung✓ Ja✓ Voraussetzung
Einzelnes Wurzelelement✓ Ja✓ Voraussetzung
Pflichtelemente vorhanden✗ Nein✓ Ja - minOccurs
Korrektheit der Datentypen✗ Nein✓ Ja - xs:integer, xs:date usw.
Numerische Bereichseinschränkungen✗ Nein✓ Ja - minInclusive/maxInclusive
Zeichenkettenmuster-Abgleich✗ Nein✓ Ja - xs:pattern
Elementreihenfolge✗ Nein✓ Ja - xs:sequence / xs:choice
Erlaubte Attributwerte✗ Nein✓ Ja - xs:enumeration

XML-Wohlgeformtheitsprüfer

Prüfen Sie Ihr XML-Dokument auf fehlerhafte Tags, ungültige Verschachtelung, fehlende Wurzelelemente und Entitätsfehler - browserlokal mit Diagnosen auf Zeilenebene.

Open tool

Aufbau eines XSD-Schemas

Bevor Sie XML gegen ein XSD validieren können, müssen Sie verstehen, was eine XSD-Datei enthält. Eine Schemadatei ist selbst ein gültiges XML-Dokument mit einem Wurzelelement `xs:schema` im Namespace `http://www.w3.org/2001/XMLSchema`. Alles im Schema beschreibt, wie die Ziel-XML-Dokumente aussehen müssen.

invoice.xsd
xml
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Root element declaration --&gt;
  <xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        <!-- Required string - must be present exactly once --&gt;
        <xs:element name="InvoiceNumber" type="xs:string" minOccurs="1" maxOccurs="1"/>
        <!-- Required date --&gt;
        <xs:element name="IssueDate"     type="xs:date"   minOccurs="1" maxOccurs="1"/>
        <!-- Required positive integer --&gt;
        <xs:element name="TotalAmount"   type="xs:decimal" minOccurs="1" maxOccurs="1"/>
        <!-- Optional - 0 to many line items --&gt;
        <xs:element name="LineItem"      type="LineItemType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <!-- Required attribute --&gt;
      <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Reusable complex type definition --&gt;
  <xs:complexType name="LineItemType">
    <xs:sequence>
      <xs:element name="Description" type="xs:string"/>
      <xs:element name="Quantity"    type="xs:positiveInteger"/>
      <xs:element name="UnitPrice"   type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Zentrale XSD-Konzepte

  • xs:element: Deklariert ein Element mit Name und Typ. `minOccurs` und `maxOccurs` steuern die Kardinalität.
  • xs:complexType: Definiert ein Element, das Kindelemente oder Attribute enthält (nicht nur Text).
  • xs:simpleType: Definiert einen Typ, der von einem eingebauten Typ abgeleitet ist - genutzt für Einschränkungen wie Muster oder Aufzählungen.
  • xs:sequence: Kindelemente müssen in exakt der gelisteten Reihenfolge erscheinen.
  • xs:choice: Genau eines der gelisteten Kindelemente muss erscheinen.
  • xs:all: Alle gelisteten Kindelemente müssen erscheinen, in beliebiger Reihenfolge, jedes genau einmal.
  • xs:attribute: Deklariert ein Attribut an einem komplexen Element. `use="required"` macht es zur Pflicht.
  • xs:restriction: Fügt einem Basistyp Einschränkungen hinzu - `xs:pattern`, `xs:minInclusive`, `xs:enumeration` usw.

Tip

Sie können einen XSD-Entwurf aus einem bestehenden XML-Dokument erzeugen, indem Sie Werkzeuge nutzen, die das Schema aus Beispieldaten ableiten. Prüfen und verschärfen Sie die generierte Ausgabe stets - abgeleitete Schemata machen gern jedes Element optional und lassen die Typen auf `xs:string`, bis Sie manuell korrekte Typdeklarationen und Kardinalitätseinschränkungen ergänzen.

So validieren Sie XML gegen XSD

Es gibt drei praktische Wege, ein XML-Dokument gegen ein XSD-Schema zu validieren: ein browserbasiertes Werkzeug für schnelle Checks, ein Kommandozeilenwerkzeug für lokale Entwicklung und Scripting sowie einen programmatischen Ansatz zur Integration in Anwendungscode oder CI-Pipelines. Alle drei Wege melden dieselben Fehlerkategorien - der Unterschied liegt darin, wo und wie Sie die Validierung ausführen.

1

Zuerst die Wohlgeformtheit prüfen

Bevor Sie die XSD-Validierung ausführen, stellen Sie sicher, dass das XML-Dokument wohlgeformt ist. Nutzen Sie den XML-Wohlgeformtheitsprüfer, um strukturelle Fehler abzufangen - ein fehlerhaftes Dokument erzeugt irreführende XSD-Fehler und verschwendet Debug-Zeit. Beheben Sie zuerst alle Probleme auf Parser-Ebene und fahren Sie dann mit der Schemavalidierung fort.

2

Online validieren mit dem Aback-Tools-XML-Validator

Öffnen Sie den XML-Validator, fügen Sie Ihr XML-Dokument ins linke Panel und Ihr XSD-Schema ins rechte Panel ein und starten Sie die Validierung. Das Werkzeug verarbeitet beide Datei vollständig in Ihrem Browser - es werden keine Daten hochgeladen. Jeder Validierungsfehler wird mit dem Elementpfad, der verletzten Einschränkung und der Zeilennummer im Quelldokument gemeldet.

3

Auf der Kommandozeile mit xmllint validieren

Für lokale Entwicklung und Scripting ist `xmllint` aus dem libxml2-Paket die Standard-CLI-Wahl. Führen Sie `xmllint --schema schema.xsd document.xml --noout` aus - die Option `--noout` unterdrückt die Dokumentausgabe, sodass nur Fehler gedruckt werden. Ein sauberer Exit ohne Ausgabe bedeutet, das Dokument ist gültig. Unter macOS installieren Sie per `brew install libxml2`; unter Ubuntu/Debian mit `apt-get install libxml2-utils`.

4

Programmatisch in Java, Python oder .NET validieren

Für die Validierung auf Anwendungsebene nutzen Sie die eingebaute XML-Bibliothek Ihrer Sprache. Javas Paket `javax.xml.validation` (Xerces), Pythons `lxml.etree.XMLSchema` und .NETs `XmlSchemaSet` mit `XmlReader` unterstützen alle XSD-Validierung mit wenigen Codezeilen. Integrieren Sie den Validierungsaufruf an Ihrer API-Grenze oder Datei-Erfassungsstelle, um ungültige Dokumente abzuweisen, bevor sie die Geschäftslogik erreichen.

terminal
bash
# Validate document.xml against schema.xsd using xmllint
xmllint --schema schema.xsd document.xml --noout

# Output on success:
document.xml validates

# Output on failure:
document.xml:12: element TotalAmount: Schemas validity error:
Element 'TotalAmount': 'abc' is not a valid value of the
atomic type 'xs:decimal'.

XML-Validator

Validieren Sie XML-Dokumente auf Wohlgeformtheit und Schemakonformität - browserlokal ohne Upload, mit Fehlerberichten auf Zeilenebene.

Open tool

Häufige XSD-Validierungsfehler

XSD-Validierungsfehler fallen in vorhersehbare Kategorien. Zu verstehen, was jeder Fehlertyp bedeutet, hilft Ihnen, das Problem im Quelldokument schnell zu finden und zu beheben, statt unbekannte Validator-Ausgabe Zeile für Zeile zu entziffern.

Typkonflikt-Fehler

Typfehler treten auf, wenn der Inhalt eines Elements oder Attributs nicht dem deklarierten `xs:type` entspricht. Die häufigsten: eine Zeichenkette wie `"N/A"` in einem als `xs:integer` deklarierten Feld, ein Datum im falschen Format (z. B. `15/06/2026` statt `2026-06-15`) in einem `xs:date`-Feld oder ein Dezimalwert in einem als `xs:positiveInteger` deklarierten Feld. Behebung: den Wert im Quelldokument korrigieren oder die Typdeklaration im Schema anpassen, falls der aktuelle Typ zu restriktiv ist.

Fehlende Pflichtelemente

Wenn `minOccurs="1"` (der Standard für `xs:element`) gilt und das Element im Instanzdokument fehlt, meldet der Validator: `Element 'X': This element is not expected. Expected is one of ( Y )` oder `Element 'X' is missing`. Das bedeutet üblicherweise, dass der XML-Erzeuger ein Pflichtfeld weggelassen hat. Prüfen Sie die `xs:sequence` des Schemas, um zu bestätigen, welche Elemente an welcher Position erforderlich sind.

Unerwartete oder nicht deklarierte Elemente

Wenn Ihr Schema kein `xs:any` verwendet und `processContents="lax"` nicht setzt, erzeugt jedes nicht im Schema deklarierte Element: `Element 'X': This element is not expected`. Das ist der häufigste Fehler, wenn ein XML-Erzeuger ein neues Feld hinzufügt, ohne das Schema zu aktualisieren, oder wenn das Dokument einen nicht deklarierten Namespace-Präfix enthält. Prüfen Sie den Elementnamen, den Kontext des Elternelements und die Namespace-Deklarationen am Anfang des Dokuments.

Verletzungen von Muster und Aufzählung

XSD unterstützt `xs:pattern` (eine Regex) und `xs:enumeration` (eine Liste erlaubter Werte) als Facetten einfacher Typen. Eine Verletzung sieht so aus: `Element 'Status': [facet 'enumeration'] The value 'ACTIVE' is not an element of the set active', 'inactive', 'pending`. Prüfen Sie, ob das Schema groß-/kleinschreibungssensitive Aufzählungswerte verwendet und ob das Instanzdokument exakt der erwarteten Schreibweise entspricht.

FehlertypTypische MeldungsausschnittSo beheben
Typkonflikt'abc' is not a valid xs:integerWert korrigieren oder Typ aufweichen
Fehlendes Element'InvoiceNumber' is missingPflichtelement ins Dokument aufnehmen
Unerwartetes Element'Notes': This element is not expectedElement entfernen oder ins XSD aufnehmen
AufzählungsfehlerValue 'ACTIVE' not in setSchreibweise der Schema-Enum-Werte angleichen
Muster-VerletzungValue fails xs:pattern restrictionWert an die Regex anpassen
Sequenz-ReihenfolgeExpected is 'IssueDate' not 'Total'Elemente passend zur xs:sequence umsortieren
KardinalitätElement 'Item' can occur max 1 timesDuplikat entfernen oder maxOccurs erhöhen

Warning

Fehler in der Elementreihenfolge sind besonders leicht zu übersehen. Eine `xs:sequence`-Deklaration verlangt, dass Elemente in der gelisteten Reihenfolge erscheinen - selbst wenn alle Elemente vorhanden sind und gültige Werte haben, führt eine falsche Reihenfolge zum Scheitern der Schemavalidierung. Prüfen Sie stets die Sequenzdefinition im XSD, wenn Sie Fehler der Art „This element is not expected“ bei Elementen sehen, von denen Sie wissen, dass sie existieren.

XSD-Validierung in Code und CI/CD

Manuelle Validierung genügt für Einzelchecks, doch XML-Workflows in der Produktion brauchen automatisierte Validierung an jedem Integrationspunkt. Die XSD-Validierung in Ihren Anwendungscode und Ihre CI-Pipeline einzubauen stellt sicher, dass ungültige Dokumente abgewiesen werden, bevor sie Datenkorruption, Verarbeitungsfehler oder Compliance-Verstöße verursachen.

Validieren in Python mit lxml

validate_xml.py
python
from lxml import etree

def validate_against_xsd(xml_path: str, xsd_path: str) -&gt; list[str]:
    """Returns a list of validation error messages, empty if valid."""
    with open(xsd_path, 'rb') as f:
        schema_doc = etree.parse(f)
    schema = etree.XMLSchema(schema_doc)

    with open(xml_path, 'rb') as f:
        doc = etree.parse(f)

    schema.validate(doc)
    return [str(e) for e in schema.error_log]

errors = validate_against_xsd('invoice.xml', 'invoice.xsd')
if errors:
    for err in errors:
        print(err)
else:
    print('Document is valid.')

XSD-Validierung in GitHub Actions ergänzen

Bei CI/CD-Workflows, die XML verarbeiten oder erzeugen, verhindert ein Validierungsschritt, dass defekte Dokumente gemerged werden. Der Befehl `xmllint` ist auf den GitHub-Actions-Ubuntu-Runnern via `sudo apt-get install -y libxml2-utils` verfügbar. Ergänzen Sie einen Schritt, der `xmllint --schema schema.xsd document.xml --noout` bei jedem Pull Request ausführt, der XML-Dateien berührt. Ein Exit-Code ungleich null lässt die Prüfung scheitern und blockiert den Merge.

.github/workflows/xml-validate.yml
yaml
name: Validate XML
on:
  pull_request:
    paths:
      - '**/*.xml'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install xmllint
        run: sudo apt-get install -y libxml2-utils
      - name: Validate XML against XSD
        run: |
          xmllint --schema schemas/invoice.xsd \
                  data/invoices/*.xml \
                  --noout

XPath nutzen, um vor der Validierung konkrete Werte zu inspizieren

Bevor Sie einen vollständigen XSD-Durchlauf starten, können Sie den XPath-Finder und Tester nutzen, um den Wert eines bestimmten Elements oder Attributs in einem großen XML-Dokument zu lokalisieren. XPath-Abfragen wie `//Invoice/TotalAmount/text()` holen ein Feld, ohne die gesamte Datei von Hand zu parsen. Das ist besonders nützlich bei der Diagnose eines Typkonflikts in einem Dokument mit hunderten Elementen - erst den fehlerhaften Wert orten, dann die Korrektur anwenden.


Vergleich der Validierungsansätze

AnsatzGeschwindigkeitDatenschutzSchema-UnterstützungAm besten für
Aback-Tools-XML-ValidatorSofort✓ BrowserlokalWohlgeformtheit + XSDSchnelle Einzelchecks
xmllint CLISchnell✓ Lokale MaschineXSD, DTD, RelaxNGDev-Skripte und CI/CD
lxml / Xerces / .NETSchnell✓ Im ProzessXSD (volle Spezifikation)Anwendungscode
Online-Server-ToolsMittel✗ Daten hochgeladenVariabelFür sensible Schemata meiden

XSD-Best-Practices

Ein gut gestaltetes XSD-Schema macht Dokumente leichter zu validieren, zu erweitern und über Schemaversionen hinweg zu pflegen. Diese Praktiken gelten, egal ob Sie ein Schema von Grund auf schreiben oder eines pflegen, das Sie von einem externen Partner erhalten haben.

Benannte Typen statt anonymer Inline-Typen verwenden

Definieren Sie komplexe Typen mit `xs:complexType name="..."`, statt sie anonym innerhalb von Elementdeklarationen zu verschachteln. Benannte Typen lassen sich über mehrere Elementdeklarationen wiederverwenden, reduzieren Wiederholungen und erleichtern Schemaänderungen - die Typdefinition einmal aktualisieren, und alle Elemente, die sie nutzen, erben die Änderung.

Für strenge Verträge xs:sequence statt xs:all bevorzugen

`xs:all` erlaubt Elementen, in beliebiger Reihenfolge zu erscheinen, was tolerant wirkt, aber bei Erzeugern und Konsumenten Mehrdeutigkeit schafft. `xs:sequence` ist expliziter und entspricht der natürlichen Lesereihenfolge der meisten XML-Formate. Nutzen Sie `xs:all` nur, wenn die Elementreihenfolge wirklich keine Rolle spielt und Sie das Schema für ein System schreiben, das Sie selbst kontrollieren; bevorzugen Sie `xs:sequence` für jedes Schema, das Organisationsgrenzen überschreitet.

Schemata über einen Namespace versionieren

Verwenden Sie einen Ziel-Namespace-URI mit Versionsindikator, etwa `targetNamespace="urn:example:invoice:v2"`. So werden brechende Schemaänderungen explizit - Konsumenten auf v1 sehen einen Namespace-Mismatch, statt still gegen die falsche Schemaversion zu validieren. Halten Sie das alte Schema während des Migrationsfensters für abwärtskompatible Deployments verfügbar.

  • Einen targetNamespace deklarieren: Vermeidet Namenskollisionen von Elementen, wenn Schemata per xs:import kombiniert werden.
  • xs:documentation verwenden: Fügen Sie menschenlesbare Beschreibungen in xs:annotation-Blöcken ein, damit Schema-Konsumenten jedes Feld verstehen.
  • Explizite minOccurs/maxOccurs setzen: Verlassen Sie sich nie auf den Standard - geben Sie die Kardinalität explizit an, um die Absicht zu kommunizieren.
  • xs:restriction für eingeschränkte Zeichenketten: Ein Postleitzahlenfeld sollte xs:pattern verwenden, nicht xs:string - die Validierung fängt Formatfehler an der Grenze ab.
  • Große Schemata aufteilen: Nutzen Sie xs:include, um ein 500-Zeilen-Schema in dateispezifische Dateien zu gliedern (addresses.xsd, line-items.xsd) für leichtere Pflege.

Tip

Nach der Bearbeitung eines XSD validieren Sie Ihre bestehenden Testdokumente stets erneut gegen das aktualisierte Schema. Eine Schemaänderung, die eine Einschränkung verschärft, kann still Dokumente ungültig machen, die zuvor gültig waren. Nutzen Sie den [XML-Validator](/tools/data/validators/xml-validator), um vor dem Veröffentlichen des aktualisierten Schemas eine schnelle Regressionsprüfung Ihrer kanonischen Testdaten durchzuführen.

Note

Wenn Sie mit XML-Daten arbeiten, die von REST-APIs oder JavaScript-Anwendungen konsumiert werden sollen, wandelt der [XML-zu-JSON-Konverter](/tools/data/converters/xml-json-converter) validierte XML-Dokumente ins JSON-Format um und bewahrt dabei die Elementhierarchie und Attributwerte.

Key takeaways

  • Die XSD-Validierung prüft ein XML-Dokument gegen einen Schemavertrag - Elementtypen, Pflichtfelder, Wertebereiche und Reihenfolge - über die bloße Wohlgeformtheit hinaus.
  • Bestätigen Sie die Wohlgeformtheit immer mit dem XML-Wohlgeformtheitsprüfer, bevor Sie die XSD-Validierung starten, um irreführende Fehlerausgaben zu vermeiden.
  • Die häufigsten XSD-Fehler sind Typkonflikte, fehlende Pflichtelemente, unerwartete Elemente und Verletzungen der xs:sequence-Reihenfolge.
  • Nutzen Sie `xmllint --schema schema.xsd document.xml --noout` auf der Kommandozeile für schnelle lokale Validierung und CI/CD-Integration.
  • Ergänzen Sie einen XSD-Validierungsschritt in Ihrem GitHub-Actions-Workflow, um ungültige XML-Dokumente am Mergen in den Hauptbranch zu hindern.
  • Entwerfen Sie XSD-Schemata mit benannten Typen, expliziter Kardinalität, Ziel-Namespaces und xs:restriction-Facetten, um Schemata zu schaffen, die streng und pflegbar zugleich sind.
  • Nutzen Sie den XPath-Finder und Tester, um konkrete Werte in großen XML-Dokumenten vor und nach der Validierung zu orten.

Häufige Fragen

XSD validation is the process of checking an XML document against an XML Schema Definition (XSD) file to confirm it meets all defined structural and data constraints. It goes beyond well-formedness checks - which only verify that the XML is syntactically correct - by enforcing element order, data types, value ranges, string patterns, and which elements are required or optional. A document that is well-formed but fails XSD validation is called invalid.

A well-formed XML document follows the basic XML syntax rules: every opening tag has a matching closing tag, tags are properly nested, attribute values are quoted, and there is exactly one root element. A valid XML document is well-formed AND conforms to a specific schema (DTD, XSD, or Relax NG) that defines the allowed elements, attributes, types, and constraints. Well-formedness is checked by any XML parser; validity requires the schema file to be present during the check.

The quickest approach is to use the Aback Tools XML Validator, which runs entirely in your browser. Paste your XML document into the first panel and your XSD schema into the second, then click Validate. The tool reports each constraint violation with the element path and line number. No file is uploaded to a server - all processing happens locally, which makes it safe for schemas that contain proprietary data structures or sensitive field names.

Run the command: xmllint --schema yourschema.xsd yourdocument.xml --noout. The --noout flag suppresses the document echo, leaving only validation errors in the output. A clean exit with no output means the document is valid. xmllint is part of the libxml2 package, available on Linux via apt-get install libxml2-utils and on macOS via Homebrew with brew install libxml2. For Windows, it is included with many XML toolkits.

The most frequent XSD errors are: missing required elements (an element declared with minOccurs='1' is absent), type mismatches (a string in a field declared as xs:integer), pattern violations (a value that does not match an xs:pattern restriction), unexpected element order (elements declared in a specific sequence appearing out of order), and attribute violations (a required attribute is missing or an undeclared attribute is present). Most validators report these with the element path and constraint name.

Yes. Large XML schemas are often split across multiple XSD files using xs:import and xs:include directives. The root XSD imports the sub-schemas, and a validating parser resolves them either from the file system or from namespace URIs. When validating locally with xmllint or a Java-based validator (Xerces, Saxon), you pass the root XSD and the parser follows the import chain automatically, provided all referenced schema files are accessible.

xs:include pulls in a schema file that belongs to the same target namespace as the current schema. xs:import pulls in a schema file that belongs to a different namespace. Use xs:include to split a large schema into manageable files that all share one namespace. Use xs:import when you need to reference elements or types from an external namespace, such as the SOAP envelope namespace or a shared enterprise data model namespace.

For new projects using REST APIs and JSON payloads, JSON Schema is the practical choice - it has better tooling integration with OpenAPI, a lighter syntax, and broader library support in modern languages. XSD remains the right choice when working with SOAP web services, EDI formats like UBL and EDIFACT, government and healthcare data exchange (HL7 CDA, FHIR XML), or any legacy system that is already XML-based. If the ecosystem you are integrating with uses XML, XSD is the validation standard.

ShareXLinkedIn