DTD: Attribute¶

Lernziel¶
Nach der Station wissen Sie, was Attribute sind und wie Sie diese definieren.
Handlungsanweisungen¶
- Aufgaben
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.
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
Fügen Sie jedem Buch ein Attribut „Format“ hinzu. Folgende Angaben sind erlaubt: „a3“,“a4“,“a5“. Die Angabe ist Pflicht. Ändern 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" />
wobie src hier das Attribut für das img-Element ist.
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 (Attributwerte) Defaultdeklaration >
- Elementname
Welchem Element ist das Attribut zuzuordnen?
- Attributname
Wie heißt das Attribut?
- Attributwerte
Hier kann eine von zwei Varianten gewählt werden:
Aufzählung aller zulässigen Werte
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 (siehe Zeilen 14-15).
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 (Zeile 16). 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.