« Übersicht: Schema

Wiederholung

Einfache Datentypen I

Lernziel

Aus dem Element adresse wird ein komplexer Datentyp, der als Container dient.

Handlungsanweisungen

Aufgaben:
  1. Erweitern Sie das Schema aus der vorherigen Station.
  2. Fügen Sie ein zweites Element anrede ein.

Die DTD als Vorlage

Zeile: 4

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT adressdb (adresse+)>
<!ENTITY % sichtbarkeit "einsicht (privat|public|proteced) #REQUIRED">
<!ELEMENT adresse (anrede, name, strasse, postanschrift, email?, bild)>
<!ELEMENT anrede (#PCDATA)>
<!ELEMENT name (nachname, vorname)>
<!ELEMENT postanschrift (plz, wohnort)>
<!ELEMENT nachname (#PCDATA)>
<!ELEMENT vorname (#PCDATA)>
<!ELEMENT plz (#PCDATA)>
<!ELEMENT wohnort (#PCDATA)>
<!ELEMENT strasse (#PCDATA) >
<!ELEMENT email (#PCDATA)>
<!ATTLIST strasse %sichtbarkeit;>
<!ATTLIST postanschrift land
          (Deutschland | Schweiz | Oesterreich) #REQUIRED %sichtbarkeit; >
<!ATTLIST adresse nr CDATA #REQUIRED>
<!ELEMENT bild EMPTY>
<!ATTLIST bild bezeichnung CDATA #REQUIRED>
<!ENTITY email_default "keine E-Mail angegeben" %sichtbarkeit; >

Kind-Element in der DTD

<!ELEMENT adresse (anrede, name, strasse, postanschrift, email?, bild)>

ComplexType als Container

Siehe Zeile: 6

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="adressdb">
    <xs:annotation>
      <xs:documentation>Meine Adressammlung</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="adresse" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="adresse">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="anrede" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="anrede" type="xs:string"/>
</xs:schema>

Einfache Datentypen

  • Das Element adresse ist nun wie das Element adressdb, ein Container, der weitere Elemente zusammenfassen soll. Es enthält als einziges Element das Kindelement anrede. Der Datentyp ist xs:string.

  • Elemente können von einem einfachen Typ sein oder setzen sich in einem komplexen Typ aus einfachen Typen zusammen.

  • Eine Übersicht zu allen einfachen Datentypen finden Sie unter folgender Adresse:

    http://www.w3.org/TR/xmlschema-0/#simpleTypesTable

Das fertige XML-Dokument

<?xml version="1.0" encoding="UTF-8"?>
<adressdb xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="art03.xsd">
  <adresse>
   <anrede />
  </adresse>
</adressdb>