DTD: Attribute

Lernziel

Nach der Station wissen Sie, was Attribute sind und wie Sie diese definieren.

Handlungsanweisungen

Aufgaben
  1. Fügen Sie per Attribut eine Nummerierung der Datensätze in Ihrer CD-Datenbank durch. Ändern Sie den jeweiligen XML-Content und die jeweilige DTD. Die Nummerierung sollte für alle Datensätze Pflicht sein.

  2. Fügen Sie in Ihrer CD-Datenbank zu dem Element Bandinformation ein Attribut “Herkunft” hinzu. Dieses Attribut soll folgende Zustände annehmen können: “Europa”, “Nordamerika”, “Südamerika”, “Afrika”, “Asien”. Die Angabe der Herkunft ist optional.

Zusatz
  1. Fügen Sie jedem Buch ein Attribut “Format” hinzu. Folgende Angaben sind erlaubt: “a3”,”a4”,”a5”. Die Angabe ist Pflicht. Änderen Sie dementsprechend den XML-Inhalt.

Attribute

Was sind Attibute?

Attribute sind zusätzliche Informationen zu einem Element. Aus der HTML-Welt kennen Sie sicherlich folgendes Element mit dem Attribut:

<img src="mein-bild.png" />

src ist hierbei das Attribut von für das img-Element.

Auch in XML können Sie Attribute verwenden. Wie Sie diese in der DTD definieren, lernen Sie nun.

Attributregeln

Die Syntax, um ein Attribut zu definieren, sieht so aus:

<!ATTLIST Elementname Attributname (Attributtyp) Defaultdeklaration >
Erklärung

Elementname: welchem Tag ist das Attribut zuzuordnen? Attributname: wie heißt das Attribut? Attributtyp: hier kann eine von zwei Varianten gewählt werden:

  1. Aufzählung aller zulässigen Werte

  2. CDATA = beliebige Zeichenfolge

Defaultdeklaration: legt fest, ob ein Wert optional oder die Angabe Pflicht ist.

#IMPLIED = die Eingabe ist optional #REQUIRED = die Eingabe ist Pflicht

Ein Beispiel:

Schauen wir uns nun ein Beispiel an: Sie Definition für das Attribut “land” als Pflichtangabe für das Element “postanschrift” mit einem definierten Wertebereich.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE adressensammlung [
<!ELEMENT adressensammlung (adresse)+>
<!ELEMENT adresse (anrede, name, strasse, postanschrift, email*)>
<!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 postanschrift land (Deutschland | Schweiz | Oesterreich)
          #REQUIRED>
]>
<adressensammlung>
 <adresse>
    <anrede/>
 <name>
      <nachname/>
      <vorname/>
    </name>
    <strasse/>
    <postanschrift land="Deutschland">
      <plz/>
      <wohnort/>
    </postanschrift>
    <email/>
  </adresse>
</adressensammlung>

Noch ein Beispiel

Schauen Sie sich ein zweites Beispiel an. Wir fügen hier eine Nummerierung ein, weil mehrere Adressen in der Datenbank stehen. Der Datentyp ist CDATA, also eine beliebige Zeichenfolge. Hier der Code:

 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"?>
<!DOCTYPE adressensammlung [
<!ELEMENT adressensammlung (adresse)+>
<!ELEMENT adresse (anrede, name, strasse, postanschrift, email*)>
<!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 postanschrift land (Deutschland | Schweiz | Oesterreich)
          #REQUIRED>
<!ATTLIST adresse nr CDATA #REQUIRED>
]>
<adressensammlung>
  <adresse nr="1">  ... </adresse>
  <adresse nr="2">  ... </adresse>
</adressensammlung>

In der DTD verwenden wir als Datentyp “CDATA”, also eine beliebige Zeichenfolge. Die Adressen können nun durch ein Attribut nummeriert werden.