« Übersicht: Schema

Einfache Datentypen II#

../../_images/mosaik010-potsdam.jpg

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. Alle Kindelemente aus Adresse sollen als einfache Datentypen definiert werden.

Die DTD als Vorlage#

Siehe: Zeile 4

 1<?xml version="1.0" encoding="UTF-8"?>
 2<!ELEMENT adressdb (adresse+)>
 3<!ENTITY % sichtbarkeit "einsicht (privat|public|proteced) #REQUIRED">
 4<!ELEMENT adresse (anrede, name, strasse, postanschrift, email?, bild)>
 5<!ELEMENT anrede (#PCDATA)>
 6<!ELEMENT name (nachname, vorname)>
 7<!ELEMENT postanschrift (plz, wohnort)>
 8<!ELEMENT nachname (#PCDATA)>
 9<!ELEMENT vorname (#PCDATA)>
10<!ELEMENT plz (#PCDATA)>
11<!ELEMENT wohnort (#PCDATA)>
12<!ELEMENT strasse (#PCDATA) >
13<!ELEMENT email (#PCDATA)>
14<!ATTLIST strasse %sichtbarkeit;>
15<!ATTLIST postanschrift land
16          (Deutschland | Schweiz | Oesterreich) #REQUIRED %sichtbarkeit; >
17<!ATTLIST adresse nr CDATA #REQUIRED>
18<!ELEMENT bild EMPTY>
19<!ATTLIST bild bezeichnung CDATA #REQUIRED>
20<!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<?xml version="1.0" encoding="UTF-8"?>
 2  <xs:element name="adressdb">
 3     <xs:annotation>
 4       <xs:documentation>Meine Adressammlung</xs:documentation>
 5     </xs:annotation>
 6     <xs:complexType>
 7       <xs:sequence>
 8         <xs:element ref="adresse" minOccurs="1" maxOccurs="unbounded"/>
 9       </xs:sequence>
10     </xs:complexType>
11   </xs:element>
12  <xs:element name="adresse">
13    <xs:complexType>
14      <xs:sequence>
15        <xs:element ref="anrede" minOccurs="1"/>
16        <xs:element ref="name" minOccurs="1"/>
17        <xs:element ref="strasse" minOccurs="1"/>
18        <xs:element ref="postanschrift" minOccurs="1"/>
19        <xs:element ref="email" minOccurs="0"/>
20        <xs:element ref="bild" minOccurs="1"/>
21      </xs:sequence>
22    </xs:complexType>
23  </xs:element>
24  <xs:element name="anrede" type="xs:string"/>
25  <xs:element name="name" type="xs:string"/>
26  <xs:element name="strasse" type="xs:string"/>
27  <xs:element name="postanschrift" type="xs:string"/>
28  <xs:element name="email" type="xs:string"/>
29  <xs:element name="bild" type="xs:string"/>
30</xs:schema>

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 />
    <name />
    <strasse />
    <postanschrift />
    <email/>
    <bild/>
  </adresse>
</adressdb>