DB XSD = XML Schema Definition = Beschreibung der Struktur von XML-Dokumenten

Theorie

  • Basierend auf XML
  • Struktur von XML-Dokumenten zu definieren + validieren
  • Definiert Datenmodell, einschließlich Elemente, Attribute, Datentypen, etc.
  • Kann verwendet werden, um die Gültigkeit von XML-Dokumenten zu überprüfen und Fehler zu identifizieren
  • Kann zur Dokumentation von XML-Schemas und zum Datenaustausch zwischen verschiedenen Systemen verwendet werden
  • Unterstützt komplexe Datenstrukturen und Wiederholungen von Elementen und Attributen
  • Kann mit anderen XML-Technologien wie XSLT und XPath verwendet werden, um Daten zu transformieren und zu analysieren
  • Teil des W3C-XML-Schema-Standards und wird von verschiedenen Anwendungen und Systemen unterstützt

Code-Beispiel

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
    <xs:simpleType name="zipcodeType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9][0-9][0-9][0-9]"/>
        </xs:restriction>
    </xs:simpleType>
 
    <xs:complexType name="addressType">
        <xs:sequence>
            <xs:element name="zipcode" type="zipcodeType"/>
            <xs:element name="city" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
 
    <xs:simpleType name="username">
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
 
    <xs:simpleType name="emailType">
        <xs:restriction base="xs:string">
            <xs:pattern value="([a-zA-Z0-9]([-.\w]*)([a-zA-Z0-9])@([a-zA-Z0-9]([-.\w]*)([a-zA-Z0-9]*)+[a-z]{2,9}))"/>
        </xs:restriction>
    </xs:simpleType>
 
    <xs:element name="kursverwaltung">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label"/>
                <xs:element name="participants">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="participant" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element type="username" name="lastname"/>
                                        <xs:element type= "username" name="firstname"/>
                                        <xs:element type="emailType" nillable="true" minOccurs="0" name="email"/>
                                        <xs:element type="addressType" name="address" nillable="true" minOccurs="0"/>
                                        <xs:element name="courses" nillable="true" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="course" maxOccurs="4">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:sequence>
                                                                    <xs:element type="xs:string" name="subject"/>
                                                                    <xs:element type="xs:int" name="price"/>
                                                                    <xs:element type="xs:string" name="bookingstate"/>
                                                                    <xs:element type="zipcodeType" name="year"/>
                                                                    <xs:element type="xs:int" name="grade" nillable="true" minOccurs="0"/>
                                                                </xs:sequence>
                                                            </xs:sequence>
                                                            <xs:attribute name="course_id" type="xs:string"/>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute type="xs:string" name="id"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>