Schema: Erste Definition

Lernziel

Entwickeln Sie nun Ihre erste Schema-Definition.

Handlungsanweisungen

Aufgaben
  1. Entwickeln Sie bitte für folgende XML-Datei eine Schema-Datei:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <reise>
      <veranstalter>Fahr-Away</veranstalter>
      <ziel>Japan</ziel>
      <beginn>2007-02-09</beginn>
      <ende>2007-02-20</ende>
      <preis>1020.99</preis>
    </reise>
    
  2. Testen Sie die XML-Datei gegen die Schema-Datei. Ist sie valide? Prüfen Sie die Schema-Datei durch bewusste Falsch-Eingaben (z.B. als Preis eine Zeichenkette eingeben).

Die Schema-Datei

Die Dateiendung für Schema-Dateien ist: xsd

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="artikel">
    <xs:complexType>
       <xs:sequence>
         <xs:element name="titel" type="xs:string"/>
         <xs:element name="autor" type="xs:string"/>
         <xs:element name="inhalt" type="xs:string"/>
       </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Artikel ist ein komplexer Typ – xs:complexType. Dieser enthält eine Sequenz möglicher Kindelemente. Enscheidend für die Kindelemente ist der verwendete Datentyp. Es sind fünf vordefinierte Standard-Datentypen vorhanden:

Datentyp

Anmerkung

xs:string

Für normale Zeichenketten, also Texte

xs:integer

Für Ganzzahlen wie 1234, keine Fließkommazahlen.

xs:decimal

Datentyp für Dezimalzahlen, also Fließkommazahlen, wie 0.123

xs:boolean

Ein Boolscher Wert, d.h. es gibt nur “wahr” oder “falsch” bzw. “0” oder “1”.

xs:date

Ein Datum im Format Jahr-Monat-Tag

Die XML-Datei

1
2
3
4
5
6
7
<?xml version="1.0" encoding="ISO-8859-1"?>
<artikel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="artikel.xsd">
  <titel>Der Titel</titel>
  <autor>Heinz Becker</autor>
  <inhalt>Hier irgendein Inhalt.</inhalt>
</artikel>

Die Schema-Datei wird über die Zeile 3 angesprochen und mit der XML-Datei verbunden.