Lieber Christoph,
einen Punkt hatte ich bisher übersehen:
[...] denn wenn da Unsinn drin steht oder Spam oder anderes soll das natuerlich raus.
Daher wäre noch ein Attribut nötig, das eine Freigabe (oder etwas in der Art) enthält, ob der Eintrag nun öffentlich angezeigt werden soll, oder nicht. Mein Vorschlag wäre:
<!ATTLIST eintrag
datum CDATA #REQUIRED
zeit CDATA #REQUIRED
moderator (public|private) #REQUIRED
>
Das mit den Instant Messengers... Du meintest:
[...], aber ...
icq CDATA #IMPLIED
aim CDATA #IMPLIED
yim CDATA #IMPLIED
msn CDATA #IMPLIED
... das ist eine unnoetige Begrenzung der Variabilitaet.
Dafuer sollte lieber ein eigenes unspezifisches Element angeboten werden, z.B.
<!ELEMENT autor (aname,(aadress)*)>
<!ELEMENT aname (#PCDATA )>
<!ELEMENT aadress EMPTY>
<!ATTLIST aadress
protocol CDATA #REQUIRED
ref CDATA #REQUIRED>
Ich denke, die Protokolle für Email und Homepage sind irgendwie fest etabliert, da wird sich wohl kaum etwas ändern, oder? Also warum diese nicht als Attribute für "Autor" realisieren? Die anderen "Adressen" für die diversen Instant Messengers könnte man als mehrfach mögliches leeres Element "im" realisieren, welches die Attribute "protocol" und "ref" enthält, also genau so, wie Du in obigem Beispiel unter "ELEMENT aadress" vorgeschlagen hast. Damit sähe die DTD so aus:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE gaestebuch [
<!ELEMENT gaestebuch (eintrag)*>
<!-- definiert das Grundgerüst des Dateiformates -->
<!ELEMENT eintrag (autor, nachricht, (im)*)>
<!-- definiert den Aufbau eines GB-Eintrags -->
<!ATTLIST eintrag
datum CDATA #REQUIRED
zeit CDATA #REQUIRED
>
<!ELEMENT autor (#PCDATA)>
<!-- definiert den Aufbau der Daten über den Autor eines Eintrags -->
<!ATTLIST autor
email CDATA #IMPLIED
homepage CDATA #IMPLIED
>
<!-- definiert Email-Adresse und Homepage des Autors (optional) -->
<!ELEMENT im EMPTY>
<!-- definiert ein Element, das Kontakt-Daten für Instant-Messengers enthält -->
<!ATTLIST im
protocol CDATA #REQUIRED
ref CDATA #REQUIRED
>
<!-- Die notwendigen Angaben zum Instant Messaging Dienst werden hier gespeichert -->
<!ELEMENT nachricht (#PCDATA)>
<!-- definiert den Aufbau der Daten für die Nachricht -->
]>
Käme das in etwa Deinem Vorschlag gleich?
Liebe Grüße aus Ellwangen,
Felix Riesterer.