Übung 4 Flashcards
(3 cards)
Über XML Schema
Erklären Sie den Sinn und Zweck von XML Schema in eigenen, einfachen Worten - so, als würden Sie es ihrer Quietscheente erklären.
Stell dir vor, du baust ein Formular, in das Leute ihren Namen, ihr Alter und ihre E-Mail-Adresse eintragen sollen. Du möchtest sicherstellen, dass:
- ein Name immer eingetragen ist,
- das Alter eine Zahl ist,
- und die E-Mail-Adresse korrekt aussieht.
Mit einem XML Schema kannst du genau solche Regeln festlegen für XML-Daten
- Struktur vorgeben: Welche Elemente darf / muss es geben? In welcher Reihenfolge?
- Datentypen festlegen: Ist etwas ein Text, eine Zahl, ein Datum, …?
- Validierung: Entspricht die XML-Datei den Regeln?
- Kommunikation erleichtern: Der Austausch von Daten ist mit einer festgelegten Datenstruktur einfacher.
XML Schema
Nachdem die XML-Übungsaufgabe des letzten Übungsblattes zu unterschiedlichen XML-Definitionen geführt hat, soll mit einem XML-Schema ein einheitlicher Standard für die Beschreibung von Filmen in XML-Form geschaffen werden.
Die XML-Datei soll eine <filmsammlung> repräsentieren, in der 0 bis unendlich viele Elemente vom Typ <film> enthalten sind. Ein Film enthält dabei die folgenden Eigeschaften:</film></filmsammlung>
- Titel (String)
- Regisseur (Person)
- ein oder mehrere Darsteller (Person)
- Erscheinungsdatum (Date)
- Genre (Genre)
- Preis (Decimal)
- Ist es ein Toptitel? (Boolean)
- null bis unendlich viele Kommentare (String)
String, Date, Boolean und Decimal sind dabei einfache Datentypen (xs:string usw.). Person und Genre sind von Ihnen zu definierende Typen. Dabei verfügt eine Person über einen
Namen (String) und ein Geschlecht (String, beschränkt auf w und m). Das Genre ist immer
genau ein String-Wert aus der Menge {Action, Comedy, Horror, Dokumentation}.
Entwerfen Sie für die logische Struktur der Filmsammlung ein XML-Schema. Dabei bietet es
sich an, nacheinander die Typen geschlecht, person, genre und film zu definieren, um schließlich das Element filmsammlung definieren zu können, welches Elemente der eben definierten
Typen enthält
- Geschlecht (String, beschränkt auf w und m)
<simpleType name="geschlecht"> <restriction base="string"> <enumeration value="m"/> <enumeration value="w"> </restriction> </simpleType>
- Das Genre ist immer genau ein String-Wert aus der Menge {Action, Komödie, Horror, Dokumentation}
<simpleType name="genre"> <restriction base="string"> <enumeration value="Action"/> <enumeration value="Komödie"/> <enumeration value="Horror"/> <enumeration value="Dokumentation"/> </restriction> </simpleType>
- Eine Person verfügt über einen Namen (String) und ein Geschlecht (String, beschränkt auf w und m)
<complexType name="person"> <all> <element name="name" type="string"/> <element name="geschlecht" type="geschlecht"/> </all> </complexType>
- Complex Type “film”
<complexType name="film"> <sequence> <element name="titel" type="string"/> <element name="regisseur" type="person"/> <element name="darsteller" type="person" maxOccurs="unbounded"/> <element name="genre" type="genre"/> <element name="erscheinungsdatum" type="date"/> <element name="preis type="decimal"/> <element name="toptitel" type="boolean"/> <element name="kommentar" type="string" minOccurs ="0" maxOccurs="unbounded"/> </sequence> </complexType>
- Complex Type “filmsammlung”
<complexType name="filmsammlung"> <sequence> <element name="film" type="film" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <element name="filmsammlung" type="filmsammlung"/>
XML aus Schema
Erstellen Sie eine XML-Datei mit einem Adress-Datensatz. Dieser soll das folgende Schema
einhalten:
<?xml version=" 1 . 0 " encoding="UTF−8 " ?> <xs:schema xmlns:xs=" h t t p : / /www. w3 . org / 2 0 0 1 /XMLSchema"> <xs:complexType name=" contact −type "> <xs:sequence> <xs:element name=" firstname " type=" x s : s t r i n g " /> <xs:element name=" lastname " type=" x s : s t r i n g " /> <xs:element name=" birthday " type=" x s : d a t e " /> <xs:element name="homepage" type=" xs:anyURI " /> <xs:element name=" address " type=" address −type " /> </xs:sequence> </xs:complexType> <xs:complexType name=" address −type "> <xs:sequence> <xs:element name=" s t r e e t " type=" x s : s t r i n g " /> <xs:element name=" zip " type=" x s : s t r i n g " /> <xs:element name=" c i t y " type=" x s : s t r i n g " /> </xs:sequence> </xs:complexType> <xs:complexType name=" contacts −type "> <xs:sequence> <xs:element name=" contact " type=" contact −type " minOccurs=" 0 " maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:element name=" c o n t a c t s " type=" contacts −type " /> </xs:schema>
<?xml version="1.0" encoding="UTF-8"?> <contacts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="contactschema.xsd"> <contact> <firstname>firstname</firstname> <lastname>lastname</lastname> <birthday>2001-01-01</birthday> <homepage>http://tempuri.org</homepage> <address> <street>street</street> <zip>zip</zip> <city>city</city> </address> </contact>