Link zu www.kneller-gifs.de

XML-Schema - Einführung

Zum Austausch von Daten zwischen Computersystemen wird die Auszeichnungssprache XML eingesetzt. Die Beschreibung von zulässigen Datenstrukturen und Dateninhalten in XML-Dokumenten erfolgt über XML-Schemas. Ein XML-Schema wird auch als XSD (XML-Schema-Definition) bezeichnet und mit der Endung ".xsd" gespeichert.

Konkret wird per XML-Schema beschrieben:

Mit Hilfe eines Parsers oder eines anderen XML-Tools kann ein XML-Dokument gegen ein Schema geprüft werden, also ob der XML-Datenstrom den Regeln des XML-Schemas entspricht. Man spricht von Wohlgeformtheit (allgemeine XML-Regeln eingehalten) und Gültigkeit (Regeln des XML-Schemas eingehalten).

Beispiel für ein XML-Dokument, das Personendaten enthält (gespeichert als "person.xml"):
<?xml version="1.0"?>
<Person Id="1">
  <Name>
    <Nachname>Kneller</Nachname>
    <Vorname>Juergen</Vorname>
  </Name>
  <Anschrift>
    <Strasse>Musterstrasse 1a</Strasse>
    <Plz>12345</Plz>
    <Ort>Musterstadt</Ort>
  </Anschrift>
  <Geburtstag>2000-12-31</Geburtstag>
</Person>
Das XML-Dokument beginnt mit dem Hinweis auf die verwendete XML-Version. Es folgen das Wurzelelement "Person" mit einem Attribut "Nummer" und die restlichen strukturierten Informationen.

Die folgende XML-Schemadatei beschreibt ein mögliches wie oben dargestelltes XML-Dokument (gespeichert als "person.xsd"):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Person">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Nachname" type="xs:string"/>
              <xs:element name="Vorname" type="xs:string"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Anschrift">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Strasse" type="xs:string"/>
              <xs:element name="Plz" type="xs:int"/>
              <xs:element name="Ort" type="xs:string"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Geburtstag" type="xs:date"/>
      </xs:sequence>
      <xs:attribute name="Id" type="xs:int"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
Ein Schema ist ein XML Dokument und beginnt somit mit der XML Version und Kodierung. Das Rootelement ist immer "schema" und dort wird auch der Namespacebezug für die Elemente definiert. Dazu wird hier durch das Kürzel "xs" (könnte beliebig auch "xsd" oder "abc" sein) ein Bezug zum verwendeten W3C-Namespace hergestellt. (Durch Namespaces können mehrere Elemente mit gleichem Namen aus unterschiedlichen Namespaces konfliktfrei genutzt werden.)
Hier wird dann ein komplexes Element Person definiert, das aus einer Reihenfolge von weiteren komplexen und einfachen Elementtypen besteht. Jedes Element und jeder Typ hat das Präfix "xs" und wird dadurch dem W3C-Schema-Vokabular zugeordnet.


Validieren/Testen einer XML-Datei gegen ein XML-Schema:
Bei validome.org können XML und XSD online getestet werden. Alternativ bei tools.decisionsoft.com/schemaValidate. Oder man nimmt ein kostenloses XML-Freeware- oder Sharewaretool ("XMLSPEAR"), Profis nutzen z.B. Sax-/Xerces-Parser.