Auszeichnungssprachen im World Wide Web

Dieser Text ist im Jahrbuch der dt. Fachpresse 1998 erschienen. Er wird an dieser Stelle nicht aktualisiert. Eine Fortschreibung gibt es im Buch "XML in der Praxis". Die hier veröffentlichte Form ist eine Reproduktion des Fachpresse-Artikels, der seinerseits auf früheren Veröffentlichungen basiert. Details sind am Ende zu finden.

Einige Informationen in diesem Artikel sind nicht mehr gültig. Ich lasse den Text hier stehen, da er einige Informationen aus der Vor- bzw. Frühzeit von XML enthält, die in deutschsprachiger Literatur schwer zu finden sind. Weiteres ist im o.g. Buch zu finden.

Stefan Mintert, 1998

Zusammenfassung

Die im World Wide Web primär verwendete Auszeichnungssprache Hypertext Markup Language (HTML) hat trotz ihres relativ jungen Alters eine bewegte Entwicklung hinter sich. Mehrere Dialekte sind entstanden und verschleiern die Sicht auf ursprüngliche Ideen und Konzepte. Neben der Darstellung der auseinanderlaufenden Entwicklung versucht der folgende Artikel die Grundlage von HTML, die Standard Generalized Markup Language, sowie die mögliche Nachfolgerin Extensible Markup Language zu beleuchten.

Der Aufbau des Textes folgt dem geschichtlichem Verlauf. Dieses Vorgehen basiert auf der Überzeugung, daß mit dem Wissen um die grundlegenden Ansätze ein besseres Verständnis für die heutige Situation und die vor uns liegenden Schritte erzielt wird.

1. Geschichtliche Entwicklung

Die wesentliche Idee von SGML, nämlich das Konzept des generic coding, ist bereits fast dreißig Jahre alt. William Tunnicliffe von der Graphic Communications Association (GCA) machte im September 1967 den Vorschlag, den Informationsgehalt eines Dokumentes von seiner äußeren Form zu trennen. Ebenfalls Ende der sechziger Jahre veröffentlichte Stanley Rice, ein New Yorker Buch-Designer, seine Idee der editorial structure tags, woraus später das generic markup entstand. Der Begriff des markup stammt aus dem Verlagswesen, aus einer Zeit, als Begriffe wie Desktop Publishing noch unbekannt waren. Nach der inhaltlichen Überprüfung und Korrektur eines Manuskriptes folgte die Bearbeitung durch den Layouter, der die Entscheidungen über Seitenformat, Zeichensätze sowie weitere typographische Festlegungen traf. Diese wurden in Form von handschriftlichen Markierungen und Anweisungen in das Manuskript eingefügt und anschließend im Druck berücksichtigt.

Die historische Entwicklung der SGML-Sprachfamilie
Abbildung 1: Die historische Entwicklung der SGML-Sprachfamilie

Eine genaue Umsetzung dieser Vorgehensweise spiegelte sich später auch in elektronischen Dokumenten wider. Texte enthielten Steuerzeichen oder Makros, die Anweisungen für die Formatierung betrafen. Als später der Trend begann, Schreibmaschinen durch Computer zu ersetzen, lebte dieses Konzept fort. Noch heute arbeiten die gängigen Textverarbeitungen nach diesem Prinzip. Zwar stellen die modernen WYSIWYG-Programme die Steuerzeichen nicht mehr auf dem Bildschirm dar, sondern können dank graphischer Oberflächen Attribute wie Fettdruck, Unterstreichungen und verschiedene Zeichensätze unmittelbar anzeigen, die Fixierung auf das Layout des Dokumentes herrscht jedoch noch immer vor.

Um so erstaunlicher, daß die Idee des Generic Coding schon so alt ist. Im Gegensatz zum format-orientierten Ansatz geht es beim Generic Coding darum, die Struktur und logischen Elemente eines Dokumentes zu kennzeichnen. Diese Art der Information geht bei der üblichen Vorgehensweise verloren. Setzt ein Verfasser eine Überschrift in einer größeren Schriftart, so kann ein Leser diesen Text durchaus als Überschrift erkennen, der Computer weiß jedoch nichts davon. Das Dokument enthält in diesem Fall nur die Information, wie ein Text darzustellen ist, aber nicht, welche Funktion er erfüllen soll.

Genau hier setzt das Generic Coding an. Markierungen sagen etwas über die Art (generic, Englisch: artmäßig) der markierten Stelle aus. Die Art bezeichnet hier zum Beispiel eine Überschrift, einen hervorgehobe nen Text, eine Fußnote, ein Zitat und so weiter. Die Vorteile liegen auf der Hand. Die Struktur des Dokumentes geht bei der Speicherung nicht verloren. Die Zuordnung einer bestimmten Darstellung zu einer bestimmten Klasse von Textstellen ist anwendungsspezifisch eindeutig möglich: bei einem Ausdruck etwa kämen alle Überschriften in der gleichen Schriftart und -größe, bei einer Ausgabe über einen Sprachsynthesizer immer mit dem Hinweis Titel.

Das waren die ursprünglichen Ideen von Tunnicliffe und Rice. Die Bedeutung dieser Ideen erkannte Norman Scharpf, Direktor der CGA. Er gründete ein Komitee, dessen Entwicklung des GenCode-Konzeptes später Bedeutung für SGML erlangte.

Ebenfalls auf den Ideen von Tunnicliffe und Rice basierend, entwickelten Charles Goldfarb, Edward Mosher und Raymond Lorie bei IBM im Jahre 1969 die Generalized Markup Language (GML). GML enthielt erstmals das Konzept eines formal definierten Dokumenttyps mit einer verschachtelten Struktur. Nach der Fertigstellung von GML formulierte Goldfarb weitere Konzepte, die zwar nicht in GML, aber später in SGML Einzug hielten.

Die Entwicklung zu einem Standard begann 1978, als das American National Standard Institute (ANSI) ein Komitee gründete, dessen Ziel die Entwicklung einer standardisierten Textbeschreibungssprache auf GMLBasis war. Goldfarb war Mitglied dieser Gruppe, die auch vom CGA-GenCode-Komitee Unterstützung erhielt. Nach einigen Jahren und mehreren Normentwürfen fand 1984 eine Neuorganisation des Projektes unter Leitung des ANSI und inzwischen auch der International Organization for Standardization (ISO) statt. Die zuständige Arbeitsgruppe der ISO unter Leitung von James Mason vom Oak Ridge National Laboratory rief regelmäßige Treffen ins Leben. Parallel dazu arbeitete das ANSI-Komitee, geleitet von William Davis (SGML Associates), immer noch unterstützt vom GenCode-Komitee, dessen Leiter Sharon Adler von IBM war. Die Abstimmung zwischen ISO und ANSI lag in den Händen von Charles Goldfarb.

Ein letzter Entwurf für den internationalen Standard wurde im Oktober 1985 präsentiert. Nach einem weiteren Jahr, in dem man Anregungen und Kommentare einarbeitete, gipfelte die Arbeit 1986 in der Veröffentlichung der Standard Generalized Markup Language als ISO-Standard 8879.

Ende der achtziger Jahre, genauer im Jahre 1989, begann die Entwicklung des World Wide Web. Den Grundstein legte Tim Berners-Lee am CERN, dem Forschungszentrum der Europäischen Organisation für Kernforschung, in Meyrin bei Genf.

Als Auszeichnungssprache für die Dokumente entschied sich BernersLee für eine einfache, auf SGML basierende Sprache, die später den Namen Hypertext Markup Language erhielt.

Für einen großen Schub für die Beliebtheit des World Wide Web sorgte der erste Browser mit einer graphischen Oberfläche, XMosaic. Die Version 1.0 von XMosaic erschien im April 1993. Im weiteren Verlauf des Jahres programmierten die Entwickler um Marc Andreesen am National Center for Supercomputing Applications (NCSA) Versionen für PC und Macintosh. Konsequent wurde der Name systemneutral in Mosaic verändert. Im November 1993 führte Mosaic die Formulare als Erweiterungen zu HTML ein.

Weitere umfangreiche Abweichungen vom Standard brachten die Browser der Firmen Netscape - der Navigator erschien im Jahre 1994 - und wenig später auch Microsoft.

Parallel dazu hat das World Wide Web Consortium (W3C) die Entwicklung von HTML und den Cascading Style Sheets (CSS) betrieben. Unter den Beteiligten sind Dave Raggett für HTML und Hakon Lie für CSS zu nennen.

Die jüngste Vertreterin dieser Sprachenfamilie, die Extensible Markup Language (XML), wird von einer Arbeitsgruppe des W3C betreut, dessen Leitung Jon Bosak von Sun inne hat. Ein weiterer, im SGML-Umfeld angesehener Mitarbeiter ist James Clark.

2. Standard Generalized Markup Language

Die Betrachtung der Standard Generalized Markup Language ist auch bei Konzentrierung auf HTML sinnvoll, da das Verständnis der Grundlagen das weitere Vorgehen erleichtert.

2.1. Ideen und Konzepte

Im Umfeld von SGML geht es stets um Textdokumente, d.h. um solche Dokumente, die zum überwiegenden Teil aus Text bestehen, die aber auch Graphiken, Tabellen und so weiter enthalten dürfen.

Bei dem Versuch, eine Antwort auf die Frage zu finden, woraus denn solche Textdokumente überhaupt bestehen, findet man etwa folgende Komponenten:

Komponenten von Textdokumenten

Inhalt

Neben dem Text sind damit auch die Abbildungen, Tabellen usw. gemeint.

Struktur

Technische und wissenschaftliche Dokumente besitzen in der Regel eine strenge Gliederung in Kapitel, Abschnitte usw. Im Falle von mathematischen Abhandlungen geht diese Unterteilung bis auf die Ebene von (mathematischen) Sätzen, Definitionen und ähnlichem. In der Prosa sind solche scharfen Trennungen nicht zu finden, während lyrische Texte eine Gliederung etwa in Verse besitzen.

Ein weiteres, beliebtes Beispiel sind Briefe. Sie besitzen eine weitgehend einhetliche Struktur der Art Absender, Adressat, Datum, Betreff, Anrede, Rumpf. Die Konventionen für die Gestaltung des Briefkopfes sind jedoch von Land zu Land sehr verschieden.

Informationen über die Visuelle Darstellung

In der Literatur wird diese Art der Information sehr unterschiedlich bezeichnet. Neben dem Begriff visual markup ist auch häufig der Ausdruck layout markup vertreten.

Zu verstehen ist darunter die Festlegung der Schriftart, der Zeichensatzgröße, aber auch des Layouts, also die Aufteilung der Seite und die Plazierung von Elementen auf der Seite.

Logische Information

Hier geht es um die Bedeutung von Textstellen und einzelnen Worten. Anders ausgedrückt kann man auch von semantischer Information sprechen.

Ist ein Wort ein Name oder ein Fachbegriff? Stellt ein Absatz ein Zitat oder eine These dar? - Diese Information soll hier logische Information heißen.

Generic Markup vs. Visual Markup

Bei der Texterstellung unterscheidet man zwischen Generic Markup und Visual Markup. Letzteres dürfte dem Leser vertrauter sein, denn als ein Spezialfall des Visual Markup ist das Konzept des What you see is what you get (WYSIWYG) weitgehend bekannt.

Die Arbeit an einem Dokument konzentriert sich dabei auf die Erfassung des Textes und die Festlegung der äußeren Form. Das für den Verfasser auf den ersten Blick so einfache Vorgehen - er sieht den Text ständig in seiner endgültigen Form - birgt auch einige Probleme. So muß er selbst darauf achten, daß gleichartige Information (Name, Begriff usw., s.o.) auch stets gleich aussieht. Bei der Speicherung geht die logische Information und die Strukturinformation verloren. Lediglich die äußeren Attribute werden gespeichert.

Diesen Mißstand zu beheben, hat sich das Generic Markup vorgenommen. Die Idee ist einfach: Der Autor wird von der Bürde befreit, sich während der Texterstellung Gedanken über das Aussehen machen zu müssen und bekommt darüber hinaus die Möglichkeit, strukturorientiert zu arbeiten. D.h. er kann die Gliederung seines Textes, die er beim Schreiben ohnehin im Kopf hat, in sein Dokument übernehmen, ohne den Umweg über die Formatierung, das Layout usw. machen zu müssen.

Document Type Definition

Für die Umsetzung dieser Ideen ist bei SGML der Dokumenttyp wichtig. Bereits im Zusammenhang mit GML ist dieser Begriff gefallen. Gemeint ist damit folgendes: Wenn man sich verschiedene Texte hinsichtlich ihres Aufbaus und ihrer Struktur ansieht, sind gewisse Gemeinsamkeiten und Unterschiede feststellbar. Je nachdem wie groß diese Differenzen sind, zählt man verschiedene Dokumente zum selben oder zu unterschiedlichen Typen.

Bei dem Versuch, den Dokumenttyp „Buch“ näher zu charakterisieren, fällt die Gliederung in Kapitel, Abschnitte, Unterabschnitte und letztlich Absätze auf. Die Anzahl und die Tiefe der Gliederungen variiert von Buch zu Buch. Trotz dieser Unterschiede erscheint es sinnvoll, zwei Bücher als gleichartig einzuordnen, auch wenn die Anzahl der Kapitel voneinander abweicht.

Eine formale Typisierung von Dokumenten muß also die Gemeinsamkeiten festlegen, zugleich aber genügend Flexibilität für den konkreten Fall lassen.

In SGML erfolgt die Charakterisierung eines Dokumenttyps in der Document Type Definition (DTD). Die theoretische Grundlage hierfür bilden die regulären Grammatiken.

Die DTD legt fest, welche logischen Elemente ein Text enthalten darf, welche Elemente unbedingt vorhanden sein müssen und in welcher Reihenfolge sie erscheinen dürfen. Um das Beispiel Buch weiter zu verfolgen: ein Buch muß in jedem Fall einen Titel haben, der auch zwingend am Anfang erscheinen muß. Ein Index hingegen ist optional.

Eine Verknüpfung mit einem bestimmten Layout ist in der DTD nicht enthalten. Für die Verarbeitung von SGML-Dokumenten gibt es einen weiteren ISO-Standard, mit dem handlichen Namen Document Style Semantics and Specification Language (DSSSL, gesprochen Dissel, ISO 10179).

Die Trennung von Struktur und Aussehen beschert den Dokumenten, neben den genannten Vorteilen, eine weitere positive Eigenschaft: Da ihre Formatierung in keiner Weise feststeht, sind sie vollkommen unabhängig vom Ausgabemedium. Ob also ein Text auf Papier (beliebiger Größe) gedruckt, auf dem Bildschirm (in beliebiger Farbe, Schriftart usw.) ausgegeben oder von einem Sprachsynthesizer gesprochen wird, ist vollkommen offen.

2.2. SGML-Syntax - Ein Beispiel

SGML basiert auf dem 7-Bit-ASCII-Zeichensatz. Sonderzeichen, wie deutsche Umlaute, müssen deshalb besonders kodiert werden. In SGML spricht man von einem Entity. Entities beginnen mit einem et-Zeichen (&) und enden mit einem Semikolon. Im ISO-Standard ist eine große Zahl an Sonderzeichen definiert. Dazu zählen die Zeichen des Latin-1-Zeichensatzes, der für die meisten westeuropäischen Sprachen ausreichend ist, aber auch altgriechische und mathematische Zeichen. Als Beispiele dienen die folgenden Entities: ä ä, ß ß, © ©.

Document Type Definition

Eine DTD für einen selbsterdachten Dokumenttyp zeigen die folgenden Zeilen:

<!-- Element      Min Inhaltsmodell      -->
<!ELEMENT notiz   - - (titel, autor, datum, absatz+) >
<!ELEMENT titel   - o (#PCDATA) >
<!ELEMENT autor   - o (#PCDATA) >
<!ELEMENT datum   - o (#PCDATA) >
<!ELEMENT absatz  - - (#PCDATA | wichtig)* >
<!ELEMENT wichtig - - (#PCDATA) >
    

Dieses einfache Beispiel zeigt einen Ausschnitt aus einer DTD für eine Notiz, die besteht aus

Die ersten drei Elemente enthalten reinen Text, in SGML-Terminologie Parsed Character Data (PCDATA) genannt. Ein Absatz kann wahlweise (dafür steht der senkrechte Strich) aus Character Data oder aus wichtigem Text bestehen und zwar beliebig kombinierbar (dafür steht der Stern).

Die Notiz-DTD als Baumdarstellung
Abbildung 2: Die Notiz-DTD als Baumdarstellung

Der enge Zusammenhang zu den regulären Grammatiken erlaubt es, eine DTD unmittelbar in einen regulären Ausdruck zu überführen oder auch in einer Baumstruktur darzustellen. Für das Beispiel zeigt Abbildung 2 eine Baumdarstellung.

Dokumentinstanz

Ein SGML-Dokument wird auch Instanz genannt, abgeleitet aus dem englischen instance, zu Deutsch Beispiel. Eine Instanz ist also ein Beispiel, ein Vertreter aus einer Klasse von Dokumenten, die durch die Document Type Definition bestimmt ist.

Für die obige DTD sieht eine Instanz etwa wie folgt aus.

<!DOCTYPE notiz SYSTEM "/usr/home/sm/dtd/notiz.dtd" >
<notiz>
 <titel>Termine</titel>
 <autor>Stefan Mintert</autor>
 <datum>5. Mai 1997</datum>
 <absatz> Montag, 9 Uhr:
  <wichtig>Zahnarzttermin</wichtig>
 </absatz>
 <absatz>...

 </absatz>
</notiz>
    

In der ersten Zeile, der sogenannten Doctype-Deklaration, nennt die Instanz diejenige DTD, zu der sie konform ist. Die weiteren Zeilen sind das eigentliche Dokument.

Die Syntax ist recht einfach zu verstehen: Eine Instanz besteht aus hierarchisch verschachtelten Elementen. Ein Element beginnt mit einem start tag (z.B. <notiz>) und endet mit einem end tag (z.B. </notiz>). Der englische Begriff tag bedeutet so viel wie Schildchen oder Etikett. Verbindet man anschaulich damit die Auszeichnung von Waren mit einem Preisschild, so ist sofort klar, weshalb der englische Oberbegriff tagging language mit Auszeichnungssprache übersetzt wird.

Die Hierarchie der Elemente läßt sich direkt aus der Instanz bzw. ihrer Baumdarstellung ableiten. Unter bestimmten Bedingungen ist es erlaubt, ein start oder ein end tag wegzulassen. Informell gesagt ist das der Fall, wenn die Eindeutigkeit der Instanz gewahrt bleibt. Diese Option muß durch die DTD aktiviert werden, was im obigen Beispiel für das end tag des Titel-Elementes durch den Eintrag - o geschehen ist. Der Spiegelstrich zeigt an, daß das start tag zwingend erforderlich ist, während das end tag weggelassen (engl.: omit) werden darf. Man spricht hierbei von Tag-Minimierung.

Zusammen mit der gezeigten DTD verifiziert man leicht, daß das vorliegende Beispiel eine gültige Instanz ist. Für komplexere Fälle gibt es Werkzeuge (Parser), die diese syntaktische Verifikation durchführen.

2.3. SGML-Verarbeitungskette

Die Verarbeitung von SGML-Dokumenten zum Zwecke der Formatierung soll hier nur kurz angerissen werden, da sie einerseits den Rahmen dieses Textes sprengen würde und andererseits die Formatierung im Rahmen dieses Seminares weniger interessant ist.

In der Abbildung 3 sind die wesentlichen Stationen, die ein Dokument durchläuft, skizziert.

Ausgangspunkt ist natürlich die SGML-Instanz als Eingabeobjekt. Die erste Prüfung führt ein Parser aus, der zu diesem Zweck die DTD benötigt. In einem weiteren Schritt, dem SGML Tree Transformation Process, werden Operationen auf dem Baum der Elemente durchgeführt. Möchte man etwa im obigen Beispiel nur den Autor einer Notiz extrahieren, so könnte der SGML Tree Transformation Process - bildlich gesprochen - die anderen Äste aus dem Baum abschneiden und nur den Autor übrig lassen. Dieser Vorgang kann als ein Vorverarbeitungsschritt angesehen werden. Sein Ergebnis ist wieder eine SGML-Instanz, die aber ggf. zu einer anderen DTD konform ist.

Die Formatierung geschieht dann im SGML Tree Formatting Process, an dessen Ende ein Dokument im gewünschten Ausgabeformat steht.

Schematische Darstellung der Verarbeitung von SGML-Dokumenten
Abbildung 3: Schematische Darstellung der Verarbeitung von SGML-Dokumenten
(das gesamte Bild zeigt die DSSSL-Verarbeitung; im Original-Artikel von 1998 waren XSLT und XSL noch nicht dargestellt)

3. Einschub: Adressierungs- und Transportmechanismen im World Wide Web

Bevor es um die Hypertext Markup Language gehen soll, wird dieser Abschnitt die Grundzüge der Adressierung und des Transportes von Dokumenten im Web erklären.

3.1. Adressierung

Die Adressierung von Objekten im Web folgt einer sehr einfachen Überlegung:

Der letzte Punkt ist eine Vereinfachung, die aber hier nicht weiter interessiert. Aus den drei Aussagen läßt sich direkt ableiten, daß eine Adresse aus den Bestandteilen

besteht.

Das Ergebnis trägt den Namen Uniform Ressource Locator (URL) und wurde bereits in der Frühphase des Webs von Tim Berners-Lee eingeführt. Eine Stärke liegt darin, daß verschiedene Protokolle darin berücksichtigt sind und das World Wide Web dadurch abwärtskompatibel wurde - bestehende Dienste sind integriert. Ein Beispiel für einen URL sei auch genannt: Die Adresse, unter der es im Web weitere Informationen zur Adressierung gibt, lautet http://www.w3.org/pub/WWW/Addressing/

3.2. Transportmechanismus

Neben der Integration bestehender Protokolle war in der Geburtsstunde des Webs auch ein neues Protokoll geboren, das (besser als bestehende Übertragungsverfahren) auf die Bedürfnisse von Hypertextsystemen zuge schnitten sein sollte. Getauft hat Berners-Lee seine Entwicklung auf den Namen Hypertext Transfer Protocol (HTTP). In der Version 1.1 kennt HTTP die Befehle GET, POST, HEAD, PUT, DELETE, TRACE und OPTIONS. Die wichtigsten davon sind:

GET
zur Anforderung eines Dokumentes von einem Server
POST
zur Übertragung von Daten, die etwa Formulareingaben des Benutzer darstellen
HEAD
zur Abfrage von HTTP-Header-Informationen, ohne ein Dokument vollständig laden zu müssen
PUT
als Gegenstück zu GET zum Übertragen eines Dokumentes zu einem Server

Die früh geforderte Multimedialität des World Wide Webs macht es notwendig, daß verschiedenartige Inhalte von Dokumenten (Text, Graphik, Video, Audio usw.) mit einer Kennzeichnung versehen werden, damit der Empfänger (der Client) weiß, wie er die erhaltenen Daten verarbeiten muß. Diese Kennzeichnung folgt im Web der MIME-Konvention. Ursprünglich als Multipurpose Internet Mail Extensions für den Mailverkehr entwickelt, wird MIME nun auch als Multimedia Internet Message Extensions für weitere Dienste, darunter das World Wide Web, eingesetzt. An einem Beispiel ist die Verfahrensweise leicht ersichtlich. Das HTTP ist aufgrund seiner textuellen Basis auch für Menschen lesbar. Folgende Zeilen zeigen eine Telnet-Verbindung zu einem Web-Server.

sm@brown: telnet www.w3.org 80
Trying 18.23.0.22...
Connected to www.w3.org.
Escape character is '^]'.
HEAD /pub/WWW/Addressing/ HTTP/1.1

HTTP/1.0 200 Document follows
Server: CERN/3.0A
Date: Thu, 17 Apr 1997 11:16:47 GMT
Content-Type: text/html
Content-Length: 12094
Last-Modified: Wed, 16 Apr 1997 21:44:29 GMT

Die hervorgehobenen Zeilen zeigen den Verbindungsaufbau (telnet), die HTTP-Anfrage (HEAD), den Antwortcode des Servers (200 Document follows) sowie den MIME-Typen des angefragten Dokumentes (text/html).

4. Hypertext Markup Language

Die Hypertext Markup Language ist in Form einer SGML-DTD definiert. Nach der SGML-Philosophie bedeutet dies insbesondere, daß alle Dokumente im Web vom gleichen Typ sind, da eine DTD Dokumente gleichen Typs beschreibt. Bereits an dieser Stelle ist offensichtlich, daß die Verwendung einer einzigen DTD für alle Texte im Web eine unsinnige Vereinfachung darstellt. Folglich mußte HTML zu einer unpräzisen, weil allgemeingültigen DTD mutieren, die nicht exakt auf die Struktur einer Klasse von Dokumenten eingehen kann.

4.1 Aufbau einer HTML-Datei

Eine HTML-Datei besteht zunächst aus zwei Elementen, dem Kopf (Head) und dem Rumpf (Body).

Der Kopf enthält den Titel sowie einige weitere, optionale Elemente, die in den folgenden Zeilen nur exemplarisch gezeigt werden. Der eigentliche Inhalt befindet sich im Rumpf.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
  <TITLE>Der Titel</TITLE>
  <!-- folgende Elemente sind optional -->
  <LINK REL="contents" HREF="inhalt.html">
  <LINK REL="index" HREF="index.html">
  <LINK REL="stylesheet" TYPE="text/css" HREF="layout.css" >
  <META NAME="Author" CONTENT="Stefan Mintert">
 </HEAD>
 <BODY>
  Der Rumpf
 </BODY>
</HTML>

4.2. HTML-Rumpf

Innerhalb des Rumpfes besteht eine grobe Unterteilung in Blockelemente und Zeichenelemente. Blockelemente umschließen einen zusammenhängenden Block von Text und sind vertikal voneinander abgesetzt - sie stehen untereinander. Beispiele sind die Überschriften H1 bis H6 (heading), der Absatz P (paragraph) und die verschiedenen Listenformen UL (unordered list), OL (ordered list) und DL (definition list). Zeichenelemente umschließen einzelne Zeichen oder Wörter und stehen innerhalb eines Blockes - sie stehen auf einer Zeile (vorbehaltlich des automatischen Zeilenumbruchs). Beispiele sind logische Elemente, wie die Hervorhebung EM (emphasis), die starke Hervorhebung STRONG und das Zitat Q (quote). Visuelle Elemente sind etwa Schriftartänderungen wie B (Bold), I (Italic), SUP (Superscript) und SUB (Subscript). Letztere Beispiele stellen eine weitere Schwäche von HTML dar. Visuelle Elemente darf es - gemäß der SGML-Idee - gar nicht geben. Es gibt sie dennoch... Für die Einbindung von externen Objekten stehen die Elemente IMG (image, Bild) und APPLET (Java-Applet) zur Verfügung. Daneben gibt es weitere Elemente, die nicht alle Browser unterstützen. Es gibt Bestrebungen, all diese Elemente unter dem OBJECT zusammenzufassen. Tabellen stehen ab HTML 3.0 zur Verfügung. Die bisher vernachlässigten Hyperlinks - der Kernbestandteil jedes Hypertextsystems - tragen in HTML den Namen A, abgeleitet von Anker (anchor). Sie offerieren eine sehr einfache Form der Hyperlinks, denn

4.3. Das Dunkle Zeitalter

Die Einführung verschiedener proprietärer HTML-Erweiterungen und die daraus entstandenen Probleme hat Robert Cailliau, der in der Frühzeit des Webs mit Tim Berners-Lee am CERN zusammen gearbeitet hat, mit folgenden Worten kommentiert (aus [LB97]).

Then we descended into the Dark Ages for several years, because the Web exploded into a community that had no idea that such freedom was possible. [...] Sad.

Robert Cailliau, CERN

Einige wichtige Stationen dieser Entwicklung waren folgende:

Höhepunkte im Umgang der Firmen miteinander waren gegenseitige Beschimpfungen in Newsgruppen und auf Mailinglisten, etwa der Vergleich von Netscapes Vorgehen mit dem Einmarsch der Sowjetunion in Afghanistan durch einen Microsoft-Mitarbeiter oder die öffentlichen Briefe an das US-Handelsministerium über angebliches unkorrektes Verhalten des jeweiligen Gegners. Von einem Browser-Krieg zu sprechen ist nicht übertrieben, angesichts von Ausdrücken wie Heiliger Krieg (Doug Colbeth, chief executive officer of Spyglass Inc) und Pearl Harbor Day (Time Magazine). Eine Zusammenstellung von Zitaten und Artikeln ist im Web zu finden (http://www.internetvalley.com/clrk.html).

Eines haben sie alle gemeinsam, die HTML „enhancements“, sie unterstützen niemals das Generic Markup und stehen damit im Gegensatz zur SGML-Philosophie. Die vielfältigen Probleme, etwa, daß eine Seite nur mit einem bestimmten Browser zu lesen ist oder nur bei einer bestimmten Auflösung, und vieles mehr, sind sämtlich auf das Unverständnis der grundlegenden Idee und die intensive Verwendung der neuen Tags zurückzuführen. Daß kein Verständnis besteht, ist vielleicht nicht ganz korrekt, denn Zitate wie das folgende finden sich viele im Web. Und sie zeigen doch, daß die Konsequenzen erkannt werden...

Best viewed in 800x600 and 24 bit color depth

Anonymer Web-Autor

4.4 Cascading Style Sheets

Eine erst kürzlich fertiggestellte Entwicklung mit dem Namen Cascading Style Sheets (CSS) sieht Robert Cailliau als good news for the Web an. Die Cascading Style Sheets verhalten sich zu HTML ungefähr so, wie sich DSSSL zur Standard Generalized Markup Language verhält: CSS stellt eine Umsetzung einer ursprünglichen Idee für das Web dar, nämlich die Trennung von Struktur und Aussehen. Der Inhalt und die Struktur eines Dokumentes sind in HTML enthalten. Die Zuordnung von einem bestimmten Aussehen zu einem HTML-Element steht in einem Style Sheet. Als Beispiel diene folgender Ausschnitt aus einem Style Sheet.

H1, H2, H3, H4 { margin-top: 1em; margin-bottom: 1em }
H5, H6 { margin-top: 1em }
H1 { text-align: center }
H1 { font-size: xx-large }
B, STRONG { font-weight: bolder }
/* relative to the parent */

Hier wird z.B. der Überschrift H1 eine zentrierte Position zugeschrieben (text-align: center). Weiterhin soll der Zeichensatz besonders groß sein (font-size: xx-large) usw. In der HTML-Instanz sieht die Verwendung dann etwa so aus:

<EM CLASS=person>H&aring;kon Lie</EM>

EM.person { font-variant: small-caps }
    

Die hervorgehobene (EM) Zeichenkette H&aring;kon Lie wird hier mit Hilfe des Class-Attributes als Person gekennzeichnet. Für die Darstellung wählt die zweite Zeile aus einem Style Sheet die Schriftvariante Kapitälchen, was als Ergebnis ungefähr Håkon Lie liefert.

Im Zusammenhang mit intelligenten Agenten ist dies interessant, weil die Klassifizierung wichtige semantische Informationen enthalten kann. Voraussetzung dafür ist, daß der CSS-Autor die Style Sheets sinnvoll einsetzt. Eine weniger sinnvolle Verwendung wäre es in diesem Beispiel, die Klasse wie folgt zu benennen: <EM CLASS=small-caps>.

5. Extensible Markup Language

Die Cascading Style Sheets sind sicher ein Schritt in die richtige Richtung. Jedoch ist die Klassifizierung mit CLASS - selbst bei Verwendung im SGML-Sinne - doch nur eine schlechte Kopie der Idee von Document Type Definitions. Denn die Auszeichnung einer Textstelle als Person ist genau die logische Information, von der zu Beginn die Rede war. Sie sollte nicht in beliebig benennbaren Attributen versteckt sein, sondern in einer DTD formal definiert sein.

Nun könnte der Ruf nach SGML laut werden und das wäre sicher nicht die schlechteste Wahl. Doch haben die vergangenen Jahre gezeigt, daß die Komplexität von SGML nur schwerlich im Web zu etablieren ist. Als neuster Hoffnungsträger der SGML-Gemeinde gilt die Extensible Markup Language (XML). Mit dem im Abschnitt 2 vermittelten Wissen ist über XML nicht mehr viel zu sagen.

XML ist eine Teilmenge von SGML mit all den zuvor genannten Vorteilen. Aus der Teilmengeneigenschaft folgt unmittelbar, daß jede XML-Instanz eine korrekte SGML-Instanz ist, bei gleicher DTD versteht sich.

Für den Einsatz im Web haben die Entwickler die neue Sprache mit erweiterten Hyperlinks ausgestattet, die ihre Eigenschaften aus HTML, HyTime (ISO 10744 Hypermedia/Time-based Structuring Language) und den Text Encoding Initiative Guidelines (TEI P3) entliehen haben. Zu den Eigenschaften zählen

Laut Jon Bosak (W3C/Sun) eröffnet sich mit XML ein neues Anwendungsgebiet für Java („XML gives Java something to do“). Der Hintergrund dieser Aussage ist offensichtlich: XML (oder SGML) kann nicht nur Textdaten aufnehmen, sondern grundsätzlich beliebige, textuell kodierbare (also theoretisch alle) Formen von Daten speichern. Solange es sich um Dokumente im weiteren Sinne handelt, ist DSSSL ein gutes Werkzeug, um die Verarbeitung zu beschreiben. Jedoch ist eine auf die Formatierung von Texten spezialisierte Programmiersprache nicht mächtig genug, für die Realisierung von allgemeinen Anwendungen, die auch noch auf verschiedenen Systemen laufen sollen - Java ist es.

Praktisch könnte es so aussehen, daß ein Web-Server neben den XML kodierten Daten auch gleich das passende Java-Programm mitschickt. XML könnte also neben der universellen, systemunabhängigen Sprache Java das universelle Datenformat des Webs werden.

Literatur

[BD97]
Tim Bray und Steve DeRose. Extensible Markup Language (XML): Part 2. Linking. Online-Veröffentlichung http://www.textuality.com/sgml-erb/WD-xml-link.html, April 1997.
[BM98]
Henning Behme und Stefan Mintert. XML in der Praxis. Addison-Wesley, Bonn, 2. Quartal 1998
[Bos97]
Jon Bosak. XML, Java, and the future of the Web. Online-Veröffentlichung http://sunsite.unc.edu/pub/suninfo/standards/xml/why/xmlapps.htm, März 1997.
[BSM97]
Tim Bray und C. M. Sperberg-McQueen. Extensible Markup Language (XML): Part I. Syntax. Online-Veröffentlichung http://www.w3.org/pub/WWW/TR/WD-xml-lang-970331.html, März 1997.
[Gol90]
Charles Goldfarb. The SGML Handbook. Oxford University Press, New York, 1. Auflage, 1990.
[LB97]
Hakon Lie und Bert Bos. Cascading Style Sheets. Addison Wesley, Bonn, 1. Auflage, 1997.
[Min95]
Stefan Mintert. Leise Revolution - Die Standard Generalized Markup Language. iX - Multiuser Multitasking Magazin, Seite 126, Juli 95.
[Min97]
Stefan Mintert. Der Weg der Tugend - Style Sheets: Make-Up für WWW-Dokumente. iX - Multiuser Multitasking Magazin, Seite 130, März 97.
[RLA97]
Dave Raggett, Jenny Lam, und Ian Alexander. HTML 3.2. Addison Wesley, Bonn, 1. Auflage, 1997.
© Stefan Mintert, 1998

Stefan Mintert schreibt zur Zeit seine Diplomarbeit am Lehrstuhl für künstliche Intelligenz der Universität Dortmund. Er ist seit 1993 u.a. als Web-Administrator am Fachbereich Informatik tätig. Als freiberuflicher Autor schreibt er seit 1994 hauptsächlich über den Themenbereich World Wide Web. Er ist Co-Autor des Buches "XML in der Praxis", das in diesem Jahr erscheint.

Bei obigem Beitrag handelt es sich um die aktualisierte Fassung einer Ausarbeitung, die im Rahmen eines Seminars über "Lernende Agenten im World Wide Web" am Lehrstuhl für künstliche Intelligenz der Universität Dortmund (Prof. Morik) im Sommersemester 1997 entstanden ist. Der Text war ursprünglich unter der Adresse http://irb-www.informatik.uni-dortmund.de/~sm/agenten97/ veröffentlicht.

Teile dieses Textes sind bereits in der Ausgabe Juli/95 der Zeitschrift iX erschienen. Der Abdruck erfolgt mit freundlicher Genehmigung des Verlags Heinz Heise.

Copyright (c) Stefan Mintert. All rights reserved.