| |
|
Erstellen einer einfachen DTD
Zum besseren Verständnis soll hier ein einfache DTD erstellt werden.
Dabei werden Attribute und Entitäten außer acht gelassen. Als
Beispiel wird ein sehr einfacher Artikel genommen.
Vorgehensweise beim Erstellen einer DTD:
-
Dokumentanalyse
-
Struktur des Dokuments vergegenwärtigen (z.B. mit einem Strukturdiagramm)
-
Markup-Deklarationen generieren
Dokumentanalyse
Ziele:
-
Begrenzen des Anwendungsbereichs der DTD
-
Gruppierung von Dokumenten mit ähnlichen Eigenschaften oder
Verwendungszwecken in Klassen, z.B. Texte, die von einer Person zur anderen
geschickt werden, sind in der Klasse BRIEFE zusammengefaßt.
-
Definieren einer Strategie für die DTD
-
Warum wird diese DTD geschrieben? Wie wird sie angewendet werden?
-
Welche Probleme sollen gelöst werden? Welche Ziele erreicht werden?
-
Gibt es eine frühere Version, auf der man aufbauen könnte?
-
Bestimmen der voraussichtlichen Nutzer
-
Wählen eines Namens
-
Erkennen der logischen Elemente in der Dokumentklasse
-
Ergebnis ist eine Liste der Elemente, Attribute und Entitäten.
-
Unterscheiden zwischen Elementen und Attributen
-
Unterscheiden zwischen strukturierenden Daten (Elemente) und
inhaltsbeschreibenden Daten (Attribute)
Beispiel einfacher Artikel:
Ein Artikel besteht aus folgenden Elementen (angenommen, diese wurden nach
einer ausführlichen Dokumentanalyse herausgefunden):
-
Titel (Haupttitel, Untertitel)
-
Autor (Vorname, Name)
-
Paragraphen
-
Abschnitt
-
Abschnittstitel
-
Unterabschnitt
-
Unterabschnittstitel
-
Liste
-
Listentitel
-
Listenelement
Vergegenwärtigung der Struktur
Da die Elemente eines einfachen Artikels herausgefunden wurden, muß
nun geklärt werden, in welchen Strukturen diese Elemente zueinander
stehen (z.B. hierarchisch, nebeneinander, mehrmals benutzt etc.)
Dazu eine Anmerkung zu den Konnektoren in der SGML-DTD:
Konnektoren definieren die Beziehungen zwischen den Elementen in einer
Modellgruppe.
Eine Modellgruppe definiert die Bestandteile eines Dokuments, z.B. andere
Elemente oder Text.
Mögliche Konnektoren:
| "," |
Sequence |
Reihenfolge, ein Element kommt immer nach dem anderen. |
| "&" |
And |
Beliebige Reihenfolge, aber jedes Element muß
dabei einmal erscheinen. |
| "|" |
Or |
Genau ein Element kann erscheinen. |
| Occurance Indicators (Erscheinungsweise) |
| ? |
Optional |
Element kann nicht oder einmal erscheinen. |
| + |
Wiederholung |
Element kann einmal oder mehrmals erscheinen. |
| * |
Optional und Wiederholung |
Element kann nicht, einmal oder mehrmals erscheinen. |
Beispiel einfacher Artikel:
| Element |
mögliche enthaltene Elemente |
Konnektor / Occurance Indicator |
| Titel |
Haupttitel, Untertitel |
? |
| Haupttitel |
|
? |
| Untertitel |
|
* |
| Autor |
Vorname, Nachname |
* |
| Paragraphen |
|
* |
| Abschnitt |
Abschnittstitel, Paragraphen, Unterabschnitt, Liste
|
+ |
| Abschnittstitel |
|
? |
| Unterabschnitt |
Unterabschnittstitel,Paragraphen, Liste |
* |
| Unterabschnittstitel |
|
? |
| Liste |
Listentitel, Listenelement |
* |
| Listentitel |
|
? |
| Listenelement |
|
+ |
| <!-- Dies ist eine Kommentarzeile
--> |
| <!-- Einfache Artikel-DTD --> |
| <!-- Am Anfang steht das Container-Element,
daß den gleichen Namen wie die DTD hat. --> |
| <-- |
Element |
Minimization |
Content --> |
| <!ELEMENT |
Artikel |
- - |
(Titel?, Autor*, Abschnitt+)> |
| <!ELEMENT |
Titel |
- - |
(TIT?, UT*)> |
| <!ELEMENT |
TIT |
- - |
(#PCDATA)> |
| <!ELEMENT |
UT |
- - |
(#PCDATA)> |
| <!ELEMENT |
Autor |
- - |
((Vorname+, Nachname)*)> |
| <!ELEMENT |
Vorname |
- - |
(#PCDATA)> |
| <!ELEMENT |
Nachname |
- - |
(#PCDATA)> |
| <!ELEMENT |
Abschnitt |
- - |
((AT?,Uabschnitt*,Liste*, P*)*)> |
| <!ELEMENT |
AT |
- - |
(#PCDATA)> |
| <!ELEMENT |
Uabschnitt |
- - |
((UaT?,Liste*,P*)*)> |
| <!ELEMENT |
UaT |
- - |
(#PCDATA)> |
| <!ELEMENT |
Liste |
- - |
(Listtit?, Listel+)> |
| <!ELEMENT |
Listtit |
- - |
(#PCDATA)> |
| <!ELEMENT |
Listel |
- - |
(#PCDATA)> |
| <!ELEMENT |
P |
- - |
(#PCDATA)> |
Beispiel eines SGML-Dokumentes
|