XSD (XML Schema Definition) ist die vom W3C standardisierte Schemasprache, mit der Struktur und Datentypen von XML-Dokumenten beschrieben werden. Die Empfehlung erschien 2001 in Version 1.0, 2012 folgte XSD 1.1; eine kompakte Alternative ist die RELAX-NG-Schemasprache.

Grundstruktur eines Schemas

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="buch" type="xs:string"/>
</xs:schema>

Einfache und komplexe Typen

  • xs:simpleType — einfache Typen mit Restriktionen (xs:restriction), z.B. Muster, Längen, Wertebereiche
  • xs:complexType — Elemente mit Kindelementen und Attributen
  • xs:sequence — geordnete Kindelemente; xs:choice — Auswahl; xs:all — beliebige Reihenfolge
  • xs:attribute — Attribute mit Typ und use="required"
  • Eingebaute Datentypen: xs:string, xs:int, xs:decimal, xs:date, xs:boolean
<xs:complexType name="buchTyp">
  <xs:sequence>
    <xs:element name="titel" type="xs:string"/>
    <xs:element name="preis" type="xs:decimal"/>
  </xs:sequence>
  <xs:attribute name="id" type="xs:int" use="required"/>
</xs:complexType>

Validierung und Werkzeuge

Ein XML-Dokument wird gegen das Schema validiert — xmllint (libxml2) kann mit --schema prüfen, in Java ist der JAXP-Validator der Standardweg. XSD 1.1 brachte Assertions (xs:assert) und die Typalternative xs:alternative.

Verwandte Grundlagen: XPath-Befehle (Pfadabfragen auf validierten XML-Daten), XQuery-Befehle (typisierte Abfragen), XSLT/XSL-Befehle (Transformationen), XML.