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, Wertebereichexs:complexType— Elemente mit Kindelementen und Attributenxs:sequence— geordnete Kindelemente;xs:choice— Auswahl;xs:all— beliebige Reihenfolgexs:attribute— Attribute mit Typ unduse="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.