Übung 4 Flashcards

(3 cards)

1
Q

Ü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.

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

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

A
  • 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"/>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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>
A
<?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>
How well did you know this?
1
Not at all
2
3
4
5
Perfectly