]> Introduction to html 4 25 Die HT Dokumententyp-Klasse

Zum Schluss der Untersuchung der DTDs aus dem alten Weg beginnt nun die Untersuchung über die drei Beziehungen des neuen Wegs, in denen html zu SGML stehen kann. Sie treten als die drei Dokumententyp-Arten HT, WH und WT auf. Zunächst HT.Die Dateien des HT.book sind mal unter HT, mal unter WT geschrieben, wo Elemente benötigt werden, die HT nicht vorrätig hat. SGML stört sich beim Export daran nicht. Nur beim Import des book als Ganzes käme es zu Problemen, weil da nur eine DTD zugrunde liegen darf. Da müssen die Dateien einzeln mit ihrer zugehörigen app importiert werden. Das ist ein Übergangsproblem bei der Suche nach der idealen Beziehung zwischen HTML und SGML. Dez. 2018 Aus diesem Dilemma hat sich dann die WT app WHHT entwickelt, in der WH und HT gleichberechtigt fusionieren.

dreieck DTD WH WHWT WT SGML B D A C

Contents
  1. ent
  2. ele
  3. attl

In einem HT Dokument stehen im SGML Editor dieselben Elemente und Attribute wie in den nach SGML/HTML exportierten Dateien, dass also nicht eine Übersetzung von einer DTD in die andere stattfindet, sondern die Elemente nur vom SGML-Editor in den HTML-Editor übertragen werden.

Unter diesen Gesichtspunkten wird die HT.dtd, die bereits in den ersten 24 Kapiteln der Dokumentation des W3C besprochen worden ist, nun noch einmal besprochen.

Da die Bedeutungen der Elemente und Attribute bekannt sind, kann sich die zweite Dokumentation die Besonderheiten der drei Schwerpunkte Entitäten, Elemente und Attribute untersuchen, die HT als SGML application mit sich bringt.

Der hHT body

Der HT body ist primitiv und strukturlos, so war lange Zeit das Urteil der neu in SGML Eingeweihten.

Der HT body hat jedoch eine ganz besondere Struktur, die kann, was keine "reine" SGML.dtd kann. Der HTML body kann nämlich jede beliebige Struktur annehmen, während eine reine SGML.dtd stets nur genau eine Struktur annehmen kann.

Während der body einer WH.dtd die Mitte zwischen der frontmatter und der backmatter oder ähnlicher Elemente ist, ist der body einer HT.dtd der Ort, an dem der ganze Inhalt des Dokuments ist. Und während im body eines WH Dokuments eine Tiefenstruktur etwa von preface, section, subsection und para ist, gibt es im body des HT Dokuments die block elements, die inline elements und #PCDATA, die allgemeinen Regeln der Physik, der Logik und der Gewohnheit entsprechen. Mit diesen wenigen Regeln - des Geteilten und des Getrennten - kann ein HT Dokument das Abbild eines WH Dokuments mit derselben Teilungsstruktur von preface, section, subsection und para darstellen.

Dazu genügen die vorhandenen html Elemente, weil es für die Struktur des Ineinander und des Nebeneinander nur zweier Elemente bedarf, die html besitzt.

Um aber den in SGML noch nicht Geübten die Strukturierung eines html Dokuments zu erleichtern, habe ich im div element von html401 einige zusätzliche Attribute eingeführt. Sie sind das Abbild einiger Strukturen aus der whole.dtd, die zur Klasse der WH dtds gehört, die aber jeder am heimischen PC ausprobieren kann, ohne html401 oder eine SGML Software zu benötigen. Denn die Gesetze, denen die Elemente von SGML unterliegen, sind universell und lassen sich weder aushebeln, noch muss man nach ihnen suchen. Jeder kennt sie.

Ein Beispiel

Soll der Text, der unter h1 fällt zu einer Einheit zusammengefasst werden, so markiert man die Überschrift h1 und den gesamten zu ihr gehörigen Text darunter, wie in dem Bildschirmabzug aus der Strukturansicht des SGML Editors zu sehen ist. Das ist etwa in der html401 Dokumentation im Dokument global.html der gesamte Text zwischen den beiden Navigationsleisten div.navbar am Anfang und am Ende des Dokuments. Dann schließt man diesen Text in ein div element ein und gibt dem Attribut partabise den Wert parta, so dass <div partabise = "parta"> h1 mit Text umschließt. Ebenso verfährt man mit den fünf h2 Elementen und den zu ihnen gehörigen Texten in parta, so dass in parta fünfmal <div partabise = "partb"> alle h2 Abschnitte steht (7.1 bis 7.5).

Innerhalb des vierten partb (7.4): The document head gibt es vier Unterabschnitte, die in <div partabise = "partc"> eingepackt werden. Und innerhalb des vierten partc: Meta data gibt es drei Unterabschnitte, die zu <div parabise = "partd"> werden, und so weiter, bis alles in parts ist.

So hat man innerhalb einer halben Stunde ein HTML Dokument wie mit einer SGML DTD strukturiert, die die Elemente <parta> bis <parte> hat. Diese einfache Teilung eines Ganzen in Teile und Unterteile entzaubert einerseits die Struktur, gibt andererseits der einen oder dem anderen die Motivation, sich näher mit SGML zu befassen. In CSS sind die Stufen a bis e mit dunkelroten borders rechts und oben markiert, so dass die Anzahl der Striche rechts die Strukturtiefe wiedergibt, in der man gerade ist. (Falls sich die partabise oder andere Attribute für div durchsetzen, ist es für die CSS Programmierer sicher leicht, den borders Hinweise auf die parts zu geben, zu denen sie gehören und auf onmouseover reagieren zu lassen. Dann hätte man an jeder Stelle des Dokuments die Information, wo man gerade ist.)