« Übersicht: Schema

Wiederholung#

../../_images/mosaik008-potsdam.jpg

Lernziel#

Die wiederholte Eingabe eines Kindelementes wird definiert.

Handlungsanweisungen#

Aufgaben:
  1. Erweitern Sie das Schema aus der vorherigen Station

  2. Fügen Sie ein zweites Element adresse ein.

Die DTD als Vorlage#

 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 adressdb (adresse+)>

ComplexType als Container#

 1<?xml version="1.0" encoding="UTF-8"?>
 2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 3  <xs:element name="adressdb">
 4    <xs:complexType>
 5      <xs:sequence>
 6        <xs:element ref="adresse" maxOccurs="unbounded"/>
 7      </xs:sequence>
 8    </xs:complexType>
 9  </xs:element>
10  <xs:element name="adresse"/>
11</xs:schema>

Mit dem neuen Konstrukt werden gleich mehrere Dinge gesteuert:

  • Die Kombination complexType und sequence erlauben das Zusammenfügen unterschiedlichster Elemente.

  • Mit ref=“adresse“ referenzieren wir das adress-Element und damit wird addressdb wieder zum Root-Element

  • mit maxOccurs wird die Entsprechung des Wiederholungzeichen (+) in einer DTD umgesetzt. Es ist nun definiert, dass beliebig viele Elemente adressen in der adressdb untergebracht werden können.

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 />
  <adresse />
</adressdb>