Übungen
Aufgabe 1
Die folgende DTD soll Graphen beschreiben, u. a. solche, die ein Straßennetz darstellen.
<!ELEMENT graph (node+, edge+)>
<!ATTLIST graph
id CDATA #IMPLIED
>
<!ELEMENT node EMPTY>
<!ATTLIST node
id CDATA #REQUIRED
>
<!ELEMENT edge (data)>
<!ATTLIST edge
source CDATA #REQUIRED
target CDATA #REQUIRED
>
<!ELEMENT data (#PCDATA)>
Entwickle (und teste) ein bzgl. dieser DTD gültiges XML-Dokument, das das unten abgebildete Straßennetz beschreibt.
Aufgabe 2
Entwickle eine DTD zur Beschreibung von Schachspielzuständen.
Version 1:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml version="1.0" encoding="iso-8859-1"?>
<Schach-Spielzustand>
<schwarz>
<Bauer>b7</Bauer>
<Bauer>e7</Bauer>
<Bauer>d6</Bauer>
<Bauer>b5</Bauer>
<Bauer>f4</Bauer>
<Springer>c6</Springer>
<Laeufer>e5</Laeufer>
<Dame>c4</Dame>
<Koenig>d7</Koenig>
</schwarz>
<weiss>
<Bauer>h5</Bauer>
<Bauer>f2</Bauer>
<Bauer>g2</Bauer>
<Turm>f1</Turm>
<Laeufer>f5</Laeufer>
<Dame>f7</Dame>
<Koenig>g1</Koenig>
<amZug/>
</weiss>
</Schach-Spielzustand>
Version 2:
<?xml version="1.0" encoding="iso-8859-1"?>
<Schach-Spielzustand>
<schwarz amZug="nein">
<Bauer Spalte="b" Zeile="7"/>
<Bauer Spalte="e" Zeile="7"/>
<Bauer Spalte="d" Zeile="6"/>
<Bauer Spalte="b" Zeile="5"/>
<Bauer Spalte="f" Zeile="4"/>
<Springer Spalte="c" Zeile="6"/>
<Laeufer Spalte="e" Zeile="5"/>
<Dame Spalte="c" Zeile="4"/>
<Koenig Spalte="d" Zeile="7"/>
</schwarz>
<weiss amZug="ja">
<Bauer Spalte="h" Zeile="5"/>
<Bauer Spalte="f" Zeile="2"/>
<Bauer Spalte="g" Zeile="2"/>
<Turm Spalte="f" Zeile="1"/>
<Laeufer Spalte="f" Zeile="5"/>
<Dame Spalte="f" Zeile="7"/>
<Koenig Spalte="g" Zeile="1"/>
</weiss>
</Schach-Spielzustand>
Überprüfe die Ergebnisse mit einem Validator.
Inwieweit können reguläre Schachspielzustände tatsächlich mit einer DTD exakt beschrieben werden? Wo siehst du Schwierigkeiten?
Aufgabe 4
Ziel ist es, eine DTD zum Zitieren von Büchern zu erstellen. Die folgende Abbildung zeigt, wie
die Literatur zum Thema Schach
bei Wikipedia zitiert wird.
Quelle: Wikipedia - Schach
Das folgende XML-Dokument zeigt, wie Buch-Daten mit XML strukturiert werden können.
<?xml version="1.0" encoding="iso-8859-1"?>
<Buch>
<Autor>
<Name>Borik</Name>
<Vorname>Otto</Vorname>
<Hrsg/>
</Autor>
<Titel>
Meyers Schachlexikon
</Titel>
<Verlag>
Meyers Lexikonverlag
</Verlag>
<Erscheinungsort>
Mannheim
</Erscheinungsort>
<Erscheinungsjahr>
1993
</Erscheinungsjahr>
<ISBN>
3-411-08811-7
</ISBN>
</Buch>
Entwickle eine DTD zur Beschreibung von Buch-Daten. Orientiere dich zunächst am gezeigten XML-Dokument.
Beachte auch folgende Sonderfälle: Ein Buch kann auch mehrere Autoren haben. Ein Buch kann auch einen Untertitel haben.
Aufgabe 5
Um eine E-Mail zu verschicken, musst du verschiedenen Daten angeben: U.a. den Absender, Empfänger, Betreffzeile und den E-Mail-Text an sich.
Das folgende XML-Dokument ist eine Möglichkeit, die Daten einer E-Mail zu speichern:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE EMail SYSTEM "EMail.dtd" >
<EMail date="2016-11-07">
<From>inf-schule@gmx.de</From>
<SendTo type="TO">g.lenk@domain.com</SendTo>
<SendTo type="CC">k.zundklein@domain.de</SendTo>
<Subject>
Infos zum Abitur
</Subject>
<Data>
Hallo Herr Zundklein,
hier schicke ich Ihnen...
</Data>
</EMail>
- In Zeile 2 ist schon ein Verweis auf eine DTD
Email.dtd
vorhanden. Schreibe diese DTD, dass sie das XML-Dokument gültig validiert. - Verändere XML-Dokument und DTD so, dass die Absender- und Empfänger-Adresse in Zeile 4-6 als Attribute gespeichert werden - getrennt nach Domain und Adressat.