Thomas J.S.: DTD-Design: Hart oder Herzlich?

Beitrag lesen

Hallo Bernhard,

Ich arbeite gerade an meiner ersten DTD (für einen Seminaranbieter). Und ich schwanke dabei zwischen 2 Polen:

  1. Einheitliches Erscheinungsbild

das hast du auf alle fälle: layout hat mit xml nichts zu tun.

  1. Einfache Bedienung für die XML-Schreiberlinge

das kannst du sowhl als auch haben, denn wie schon Cheatah sagte, dafür gibt's tools.

Da stehe ich an. Sollte man die DTD möglichst grosszügig gestalten, sodass die Verfasser selbst bestimmen können welche Werte ihre Attribute haben sollen,

hier würde ich eher strickt vorgehen: sollte später eine änderung nötig sein, ist es einfacher den attributwert freigeben, als umgekehrt (also alle mögliche vergebene werte zusammenzusuchen)

welche Elemente sie wo weglassen können, ...

das hängt ja auch von dir ab, wenn du elmenete als optionale elemente in der DTD definierst, können die autoren halten wie sie wollen.

oder sollte man ihnen eine (umfassende, vorher durchdiskutierte) begrenzte Menge an gültigen Werten, Elementen vorschreiben.

wäre ich dafür.

Gibts da einen Kompromiss, oder muss man das von Fall zu Fall selber abwägen, was nun gscheiter ist?

wenn ich dir "so locker wie möglich, aber so strikt wie nötig" sage ist dir nicht geholfen. ;-)
also ist immer eine frage der endanwendung, wie du deine dtd machst.

Und thematisch dazupassend: Ist es überhaupt sinnvoll xml für nur leicht strukturierte Daten zu verwenden? Ich verwende derzeit eine ausgewählte Teilmenge von HTML-Elementen, und ein paar selbstdefinierte Container-Elemente, bzw. Metainformationen über die Datei selber.

ich habe das auch schon gemacht (für mittelkomplexe struktur), da habe ich eben aus gründen der autor-freundlichkeit z.B. eine etwas abgespeckte version des html-tabellenmodells verwendet.
(das rad wurde ja schon erfunden)

und stattdessen gleich den ganzen HTML4-Standard in einem Namespace zu erlauben?

das würde ich nicht machen. html4 dtd ist nicht xml konform und würde dir auch davon abgesehen nur ärger bringen.

grüße
thomas