XML Schema Definition (XSD)
XSD (XML Schema Definition), definiert die Dokumentstruktur für einen XML-basierten Dokumententyp, dazu gehören die Elemente, Attribute und deren Inhalt. Es ist eine XML-basierte Sprache mit der üblichen *.xsd Endung.
Ein XML-Schema kann wie folgt aussehen:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Die Deklaration erfolgt durch „xs:element“ mit den Attributen „name“ für Name, „type“ für den Typen und „minOccurs“, „maxOccurs“ für die „minimale“, „maximale“ Anzahl an Werten.
Man kann auch Attribute definieren. Je nachdem in welcher Baumposition diese stehen, sind es lokale oder globale Attribute.
// Globales Attribut <xs:attribute name="comment" type="xs:string" /> // Lokales Attribut <xsd:complexType name="PurchaseOrderType"> <xs:attribute name="comment" type="xs:string" /> </xsd:complexType>
Durch das Attribut „use“ in der Attributdeklaration lassen sich folgende Attribute eintragen:
- optional (Attribut ist Optional)
- required (Attribut ist verpflichtend)
- prohibited (Attribut ist nicht erlaubt)
XSD Beispiel
XML Schema für eine CD-Datenbank
XML Dokument:
<catalog name="My CD´s"> <disc title="Krawall" artist="7" year="2001"> <song title="Krawallation" artist="7" length="61" index="1"/> </disc> </catalog>
XML Schema XSD:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="catalog" type="catalogType"/> <xsd:complexType name="catalogType"> <xsd:sequence> <xsd:element name="disc" type="discType" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="discType"> <xsd:sequence> <xsd:element name="song" type="songType" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="title" type="xsd:string"/> <xsd:attribute name="artist" type="xsd:IDREF"/> <xsd:attribute name="year" type="xsd:gYear"/> </xsd:complexType> <xsd:complexType name="songType"> <xsd:attribute name="title" type="xsd:string"/> <xsd:attribute name="artist" type="xsd:IDREF"/> <xsd:attribute name="length" type="xsd:int"/> <xsd:attribute name="index" type="xsd:int"/> </xsd:complexType> </xsd:schema>