Multimediakurs Leinfelder: Modul 11 - Anlagen: html-xhtml

(© copyright)     Letzte Änderungen:07.04.2003


Position innerhalb des Kurses

Modul 11: Anlage 4: Geschichte von HTML und dem Web - Was ist XHTML? - oder gleich XML verwenden?

von Reinhold Leinfelder

Sprungmarken für diese Anlage:

Internet, WWW und html | Prinzip von XML | XHTML |
Addon: erläuterte XML-Beispiele


Die Geschichte des Web und der HTML-Auszeichnungssprache

Erfindung des Internets: Das Internet, d.h. das Zusammenschließen verschiedener und entfernter Rechner, die über ein gemeinsames Protokoll, nämlich TCP/IP verbunden sind, begann experimentweise schon in den 70er Jahren. Wer hat's erfunden? Das US-Verteidigungsministerium!I n der Frühgeschichte des Internets war dieses Netz aber noch längst nicht weltweit und wurde nur zum Austausch von Daten via telnet, ftp oder kaum mehr verwendeten Dienst-Protokollen wie Gopher verwendet.

Entstehen von html und dem WWW: Der Durchbruch kam erst 1990 als Tim Berners-Lee vom Europäschien Labor für Teilchenphysik CERN (Genf) die Seitenbeschreibungssprache html (hypertext markup language) entwickelte. Version html 1.0 war geboren. Damit konnten nun nicht nur Textdokumente von entfernten Rechnern am eigenen Rechner in einigermaßen formatierter Weise dargestellt werden, sondern auch Bilder eingebunden werden und v.a. per Link andere Dokumente angefordert werden. Überschriften und Absätze, einfache Formatierung von Text, Listendarstellung und eben Grafikeinbindung waren möglich. Html war verbunden mit dem neuen Dienstprotokoll http (Hyptertext Transfer Protocol) und das WorldWideWeb war geboren.

Es kam allerdings sehr rasch zu proprietären Entwicklungen, wie z.B. der Erfindung von Frames durch Netscape. Der nächste Standard, html 2.0 ließ bis 1995 auf sich warten. Der html 2.0-Standard führte u.a. Formulare ein. Zwischenzeitlich hatten die nicht standardisierten Erweiterungen (dazu gehörte auch JavaScript von Netscape) aber sehr die Oberhand gewonnen.

(Eigene Webgeschichte: Der Kursleiter begann übrigens Ende 1994 mit seinen ersten Webversuchen; die ersten beiden zum Thema gekauften Bücher sind unten angegeben und sind teilweise Grundlage für diesen Essay. Der erste von mir eingerichtete versuchsweise Webserver war ein kleiner Apple LC mit dem kostenlosen Webserver MacHTTP, dem Vorläufer des Webstar-Servers, der via Telefonleitung nur minutenweise im Netz war. Der Proto-Server lief am Institut für Geologie und Paläontologie der Universität München. Das erste Webangebot von 1995 lief auf einem Unix-Apache-Webserver des Rechenzentrums RUS, bevor am neu vernetzten Institut - als wohl eines der ersten in Deutschland - ein Netscape Webserver unter Unix eingerichtet wurde. Aus meinen Webfrühzeiten existiert noch das nach wie vor sehr gut besuchte Projekt Jurassic Reef Park (1995, mit Update 1996), welches heute unter http://www.palaeo.de/edu/JRP zu erreichen ist).

Weitere Versionen waren dann html 3.0 (Ende 1995)und rasch hinterher html 3.2. Erst jetzt wurden nach meinem Wissen Frames in den Standard aufgenommen. Html 4.0 soll wohl die letzte Version von html sein, sie wurde 1998 standardisiert.

Die Standardisierung beginnt zuerst über die Publikation von sog. RCFs (Requests for Comments), bevor dann der Standard erlassen wird. Das zuständige Gremium war früher die IETF (Internet Engineering Task Force), dann 1994 in das W3C, das WorldWideWeb-Consortium überging. Das W3C wurde vom CERN zusammen mit dem MIT (Massachusetts Institut of Technology, Cambridge) gegründet und dann um das INRIA (Institut National de Recherche en Informatique et en Automatique, Le Chesnay, Frankreich) sowie durch verschiedene Mitglieder industrieller Firmen /u.a. Sun Microsystems, Netscape, AT&T, IBM, usw) erweitert. Die Leitung haben jedoch die drei Forschungseinrichtungen. Näheres und Aktuelles zum W3C unter http://www.w3.org.

Zwischenzeitlich waren die nicht standardisierten Entwicklungen aber sehr weit vorangeschritten. Denken Sie an Netscape-Entwicklungen wie Frames, JavaScript oder die embed- und blink-Tags. Noch viel komplexer ist die Problematik mit dhtml, ebenfalls mit der Einführung des layer-Tags von Netscape geschaffen (vgl. Anlage dhtml). Die Reaktion und Gegenentwicklung von Microsofts Internetexplorer lies nicht auf sich warten: iFrames, der anders interpretierte JavaScript-Dialekt JScript, Active-X, andere Definition von dhtml oder Tags für den Backgroundsound sowie die Markees bezeugen dies. Etliche Browser versuchen nun, sich wieder auf die Standards zu besinnen und verschmähen diese Erweiterungen zumindest teilweise, aber diese Entwicklung kommt wahrscheinlich zu spät.

Die Verwirrung wird durch die Plugin-Erweiterungen noch größer. Damit ist fast alles im Web machbar, eigentlich hätte diese Aufgabe Java übernehmen sollen, was sich aber nicht recht durchgesetzt hat. Das Plugin-Problem: es gibt verschiedenste Versionen der Plugins, teilweise auch nicht für alle Browser oder für alle Plattformen. Und bei der Datenbankanbindung, die ja für die on-the-fly Generierung von Webseiten, etwa für virtuelle Kaufhäuser immer wichtiger wird, ist man auch weit von akzeptierten Standards entfernt.

Wussten Sie, dass bereits vor der Standardisierung von html3 sehr viele eigenständige Entwicklungen vorhanden waren? Einige Beispiele von Netscape-Zusatzentwicklungen zu diesem Zeitpunkt:

Die Beispielliste könnte noch sehr verlängert werden.

Umgekehrt haben sich viele Möglichkeiten von html 3 überhaupt nie richtig durchgesetzt. Auch ich habe sie nie oder kaum verwendet und weiß gar nicht, ob sie mit den heutigen Browsern überhaupt noch funktionieren, zumindest sind sie in keinem der aktuellen Webeditoren implementiert. Nur wenige Beispiele sollen dies erläutern:

Überlagerte Abbildungen können mit dem Tag <overlay> erstellt werden. Hier kann eine Abbildung über die andere gelegt werden. Im Prinzip war dies die (nicht wahrgenommene) Geburtsstunde von dhtml (siehe entsprechende Anlage).

Fußnoten: werden mit Link auf Anker, nämlich <a href="#fn1"> zur Fußnote</a> definiert. Es wird aber kein Anker erstelt sondern im Gleichen Dokument die Fußnote definiert mit: <fn ID="fn1">Hier steht der Fußnotentext</fn>.
Gleich mal ausprobiert: zur Fußnote
Das ganze funktioniert, aber Big-Deal! Die Fußnote wird dauerhaft angezeigt. Interessant wäre es, wenn Sie erst beim Klick eingeblendet würde. Kein Wunder, dass sie sich nicht durchgesetzt hat. Mit einem normalen Ankerlink geht dies genauso.

Mathematische Formeln: Hier sind unglaubliche Möglichkeiten auch mit html zur Darstellung komplexer mathematischer Formeln vorhanden, aber wer kennt sie schon. Eine komplexe Formel wird heute in aller Regel als gif-Bildchen dargestellt. In Zeiten niedriger Übertragungsraten war die html-Formeldarstellung aber nicht unwichtig. Nachfolgend ein Beispiel (aus dem u.a. Buch von R. Tolksdorf):

<math>f (x)={x+1<over>+2}
f (x) ={x+1<atop>x+2
f (x) ={x+1<choose>x+2}</math>

ergibt:

f (x)={x+1x+2} f (x) ={x+1x+2 f (x) ={x+1x+2}

Haben Sie noch einen Browser, in dem das richtig dargestellt wird? Ich fand keinen, es müsste nämlich folgendermaßen aussehen (nun als GIF-Bild)

Es wird sich also keiner mehr auf die Unsicherheiten bei der Formelgenerierung mit html einlassen.

Zunehmend wird klar, dass Standardisierungen wieder wichtig werden, dass sich diese aber auf html alleine nicht mehr zurückziehen können. Die Entwicklung von WML (wireless Markup Language) als html-Anpassung für Handies (- erfordert auch ein anderes Protokoll, nämlich wap: wireless application protocol- ) zeugt davon, html war hier überfordert.


XML-Der zukünftige Standard? Der zukünftige Standard auch fürs Web soll XML darstellen (vgl. Kursmodul 9. #) XML wurde 1998 zum ersten Mal vorgestellt und bedeutet extensible Markup Language. XML alleine kann aber überhaupt keine Webseiten darstellen, sondern vereinfacht gesagt nur die gewünschte Grundstruktur einer Seite beschreiben - die Umsetzung muss dann durch html-Derivate, StyleSheets und Skriptsprachen kommen. Klingt ziemlich kompliziert und ist es auch; xml soll nämlich ein Tausendsassa werden und auch für Datenbankanbindung, Grafik und andere Dateiformate ersetzen und vieles mehr.

XML ist nicht an einen festen Befehlssatz wie html gebunden, man kann bzw. muss in XML eigene Tags (Elemente) und Attribute definieren. Im Normalfall benötigt eine XML-Datei, die mit Hilfe dieser Elemente und Attribute sowie deren Verschachtelung bzw. Gruppierung nur die Struktur einer Datei beschreibt, interne oder externe Angaben, wie die Seite dann wirklich darzustellen ist. Dazu muss eine sog. DTD (Document Type Definition) angelegt werden, die das näher regelt. Stellen Sie sich z.B. vor, dass ein Kundenblatt aus Name, Vorname, Adresse, Bestellungsbereich definiert. Sie können mit xml vereinfacht gesagt selbst Tags mit beliebigen Namen anlegen (die zu einer zusammengehörenden Gruppe, sog. Wurzel gruppiert sind; die Tags heißen in xml-Elemente). Damit ist klar, wie die Struktur der Datei aussieht. Soll Sie als html dargestellt werden, muss eben via DTD definiert werden, wie jedes Wurzel- und Unterwurzeltag zu formatieren ist (Sie wissen ja bereits, dass Sie zur CSS-Formatierung auch beliebige Tags anlegen können, die dann eben mit entsprechenden Definitionen belegt werden). Eine andere Lösungsmöglichkeit wäre eine sog. Insellösung, bei der dann den entsprechenden xml-Tags direkt in der Datei html-Attribute zugeordnet werden.

Für die gleiche xml-Datei könnte aber mit einer anderen DTD festgelegt werden, dass Daten in die Wurzelelemente importiert werden, damit wäre sie zu einer echten Datenbankdatei geworden.

Je nach verwendeter DTD erkennt dann also ein Programm, ob die xml-Datei zur Darstellung oder Weiterverarbeitung geeignet ist oder nicht. Eine xml-Datei könnte also irgendwann einmal beim Anklicken durch eine Textverarbeitung, eine Tabellenkalkulation, eine Datenbank, ein Bildverarbeitungsprogramm oder eben durch einen Webbrowser geöffnet werden, obwohl die Endung immer xml ist. Sogar noch weiter: Eine xml-Datenbankdatei könnte ggf. gleichzeitig mit einem Bildverarbeitungsprogramm geöffnet werden, wobei dort eben die entsprechenden eingelesenen Bilder oder das Layout der Datenbank entsprechend weiterbearbeitet werden. Das ist natürlich alles noch Zukunftsmusik und der Web zu einem offiziellen, kompatiblen xml-Standard ist noch lang. Bislang bedient sich XML verschiedenster Auszeichnungs- und Programmiersprachen zur Dastellung, z.B. html, scalable vector graphics, wml, css und vielen mehr.

Wirklich Zukunftsmusik? Es gibt bereits einen Standard, der ähnliches vermag, auch wenn er nichts mit xml zu tun hat - Apples Quicktime-Technologie. Ein Dateiformat (mit nur einer Endung .mov, sowie ggf auch nur einem MIME-Typ, nämlich quicktime/video) kann sowohl Bilder, Sounds, Videos in unterschiedlichsten Formaten verstehen, daneben auch Text und interaktive Elemente (sprites, tweens, flash usw.) aufnehmen sowie mit Skripten versehen werden, die sogar Datenbankanschluss ermöglichen. Die Quicktime.mov-Dateien können von unterschiedlichsten Programmen geöffnet, weiterverarbeitet und auch wieder gespeichert werden. Auch wenn xml-Insider mit diesem Vergleich sicher nicht zufrieden sein werden (- die unterschiedlichen Formate liegen bei Quicktime auf unterschiedlichen Spuren und sind nicht durch jeweilige DTD-s definiert -) so erscheint mir das Prinzip dem des xml-Ansatzes doch etwas ähnlich zu sein.

Eine echte xml-Einführung sprengt den Rahmen dieses Kurses, zumal xml eben noch kein Standard ist. Ich empfehle denjenigen, die professionell mit Webseitenproduktion und Multimedia zu tun haben, die Entwicklung zu beobachten und sich in die Grundprinzipien einzuarbeiten. Was das Web betrifft, erwarte ich xml-fähige Webeditoren, sobald sich xml als Standard durchsetzt. Die aktuellen Webbrowser der 5. und 6. Generation verstehen xml in einem gewissen Umfang, sofern es mit den richtigen DTDs verknüpft ist.

Als Lektüre verweise ich auf die entsprechenden Kapitel im Buch von U. Hess & G Karl (Zitat siehe unten) sowie auf Stefan Münzers entsprechende xml-Erläuterungen in seinem SelfHTML-Kurs)

Für diejenigen die gleich mehr wissen wollen, gebe ich Ihnen am Ende dieses Textes (quasi als Anlage zu dieser Anlage) jedoch noch ein adaptiertes Beispiel zur Gestaltung von XML-Code aus dem Hess & Karl-Buch mit Erläuterungen wieder. Bevor Sie dieses inspizieren, sollten Sie jedoch die nachfolgenden Erläuterungen zu xhtml, speziell zu den DTDs von XHTML lesen.


XHTML - was ist denn das?

Ob sich xml wirklich durchsetzen wird, ist noch offen (es ist jedoch auf gutem Wege dorthin), aber tatsächlich ist bereits eine Übergangsentwicklung vorhanden, dies ist xhtml (extensible hypertext markup language). Die Einschätzung zum Sinn von xhtml fällt mir etwas schwer, es ist allerdings erst die Version XHTML 1.0 vorhanden, die im Frühjahr 2000 vorgestellt wurde; zukünftige Versionen sollen deutlich anders aussehen. Folgendes erscheint mir wichtig:

XHTML ist fast identisch mit HTML 4.0, allerdings regelt es die Verwendung und Auszeichnung von Tags deutlich strikter. In gewisser Weise ist es also eine "erzieherische Maßnahme" für Webproduzenten, die an die zu erwartenden noch strikteren Regeln zu XML gewöhnen soll (Beispiele siehe unten).

Dies sind die wesentlichen Neuerungen:

1. Dokumente müssen "well formed" sein.
Heißt nichts anderes, als dass man die Spielregeln von XHTML einhalten muss, diese bestehen u.a. daraus:

2. XHTML bestet ansonsten aus Plänen und Vorschlägen für zukünftige Versionen:
XHTML soll z.B. den Weg zu einem modularen Aufbau der Webseiten öffnen, so wie es ähnlich in XML sein wird. Man definiert also z.B. die body, head, meta und title-Tags als Struktur-Modul, daneben gibt es einen Basic Text Modul mit Tags wie br, div, h1-6, p etc., einen Hypertextmodul mit den a und area-Tags, desweiteren Listen-, Formular- und andere Module. Via DTDs kann dann definiert werden, wie diese Tags darzustellen sind. Nähere Ausführungsbestimmungen fehlen noch und die Modulmöglichkeit soll (laut Buch von U. Hess & G. Karl, siehe unten) erst ab Version 1.1 integriert werden. Ich verstehe dies so, dass die jeweiligen Module dann z.B. auch globale Modul-Einstellungen z.B. durch ein Style-Sheet bekommen können. Das ist bislang ebenfalls via Style-Sheets lösbar (indem Sie eben die entsprechenden Elemente via CSS formatieren), wird aber dann wohl erweiterte Möglichkeiten haben.

XHTML wird bereits jetzt von den modernen Browsern verstanden, kann also bereits angewendet werden, wenn Sie sich daran gewöhnen wollen. Wichtig ist jedoch, dass die richtige Version im Header angegeben wird, ich empfehle unbedingt die Version transitional, damit es zu keinen Darstellungsfehlern kommt. Die Anpassungen müssen Sie bislang noch von Hand im Source-Code machen (oder tief in die Umprogrammierung Ihres Webeditors einsteigen). Ich bin mir aber sicher, dass zukünftige Webeditoren auch automatisch xhtml-Code generieren können, sofern dieser sich durchsetzt.

3. Angabe einer Public-DTD

Nicht nur XML, sondern auch XHTML und sogar XML verwenden DTDs, d.h. Dokumenttypdefinitionen. Während diese aber in XML selbstgeschaffen sein können (Typ: System) und dann nur für die zugewiesenen Dokumente gelten, verwenden XHTML und XML sogenannte öffentliche DTDs (Typ Public), die nichts anderes darstellen, als die Standarddefinition der verwendeten Auszeichnungssprache.. Diese DTDs sind allgemein bekannt (eben public) und müssen deshalb (im Unterschied zu selbstdefinierten System-DTDs in XML) nicht mitgeliefert werden, es genügt der Verweis. Nachfolgend DTD-Beispiel ab HTML 3.0. Sie finden diese Zeilen immer als erste Zeile im Header Ihres html-Dokumentes (noch bevor der html-Tag geöffnet wird). Wenn Sie von Hand html-Code generieren, sollten Sie diese Zeilen einbauen, ansonsten kann es sein, dass der Browser Darstellungsschwierigkeiten bekommt (ist aber eher selten, er verwendet dann eben die flexiblen, sog. transitional DTDs:

<!DOCTYE HTML PUBLIC "- //IETF/DTD HTML 3.0//EN">

<!DOCTYE HTML PUBLIC "- //W3C/DTD HTML 3.2//EN">
von html 3.0 zu 3.2 fand der Wechsel der zuständigen "Aufsichtsbehörde" statt: von IETF zu W3C.

<!DOCTYE HTML PUBLIC "- //W3C/DTD HTML 4.0//Strict//EN">
Dies besagt, dass HTML 4.0 strikt eingehalten werden muss, alle dort nicht definierten Tags sind zu ignorieren.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
diese transitional DTD besagt, dass das Dokument prinzipiell dem html 4.0 Standard entspricht, aber auch noch die Verwendung älterer Tags zulässt, die also umgesetzt (gerendert) werden sollen.

Die vorliegende Webseite verwendet übrigens (gemäß Voreinstellung des verwendeten Webeditors GoLive5, der ein entsprechende Update erhielt) folgende DTD:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Der neue Standard XHTML 1.0 heißt so:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" http://www.w3.org/TR/Xhtml1/DTD/strict.dtd>
Es wird also gleich noch auf die Lage der entsprechenden DTD im Web verwiesen. Fall der Browser die DTD nicht kennt, kann er dort nachsehen.

Wenn Sie bereits xhtml verwenden wollen, empfehle ich jedoch eine Kombination von transitional html 4 und xhtml 1, damit es nicht zu Darstellungsfehlern kommt:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "DTD/xhtml1-transitional.dtd">

Bei Verwendung von Framesets sollte eine andere xhtml-DTD angegeben werden (soll in Zukunft vereinheitlicht werden):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "DTD/xhtml1-frameset.dtd">

Wenn man will, kann man zusätzlich für den html-Inhalt noch einen sogenannten "Namensraum" angeben (xmlns, bedeutet xml-Namensraum). Damit ist man schon ganz nah an xml, da html-Formatierung innerhalb von xml-Dokumenten in einem derartigen Namensraum ablaufen muss. Nachfolgend ein entsprechendes Beispiel für ein komplettes derartiges xhtml-Dokument aus dem Buch von Hess & Karl:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" http://www.w3.org/TR/Xhtml1/DTD/strict.dtd>
<html xmlns="http://www.w3.org/TR/xhtml1">
<head>
<title>Beispiel</title>
<body>
<p>Hier steht der Inhalt des xhtml-Dokuments</p>
</body>
</html>

puh... (no comment)


Beispiel für die XML-Syntax

nun noch die versprochene "Anlage" zur Anlage, ein ansatzweise erläutertes Beispiel, basieren auf Vorlagen aus dem Hess & Karl-Buch.

XML-Beispiel:

<?xml version="1.0"?>

<!DOCTYPE Kontakt [
    
<!ELEMENT Kontakt (Eintrag)+>
    <!ELEMENT Eintrag (Name, Telefon, Adresse)>
        <!ELEMENT Name (#PCDATA)>
        <!ELEMENT Telefon (#PCDATA)>
        <!ELEMENT Wohnort (#PCDATA)>
]>

<Kontakt>
   <Eintrag>
      <Name>Hans Huber</Name>
      <Telefon>45678</Telefon>
      <Wohnort>Augsburg</Wohnort>
   </Eintrag>

   <Eintrag>
      <Name>Helmut Haberle</Name>
      <Telefon>34596</Telefon>
      <Wohnort>Stuttgart</Wohnort>
   </Eintrag>
</Kontakt>

Oben steht ein komplettes xml-Dokument, welches erklären soll, dass xml alleine nur die Strukturierung von Dokumenten steuert.

Es beginnt mi der Angabe der xml-Version, die Syntax mit den ? ist einzuhalten.

Danach erfolgt die Definition der verwendeten DTD (in rot). Diese ist hier intern angelegt, sie hätte auch ausgelagert und verlinkt werden können. Wichtig ist dabei, dass es sich um eine von uns geschaffene DTD handelt und nicht um eine public DTD. Wir nennen Sie Kontakt, dies wird gleichzeitig als sog. Wurzelelement definiert. Wir schaffen danach innerhalb des Wurzelelements ein Unterelement Eintrag mit seinen Inhalten Name, Telefon und Wohnort. Die Inhalte des Unterelements Eintrag sollen alle vom Typ Text sein, dies regelt die Angabe #PCDATA (parced character data). Dies besagt aber noch nichts, wie der Text dargestellt werden soll (s.u.). Man kann auch eingene Inhaltstypen erstellen oder andere verwenden (Sie sehen, hier liegt das Geheimnis, wo und wie z.B. der Inhalt eines Unterelements als Text, Grafik, als Film oder was auch immer definiert wird).

Da wir regeln wollen, dass das Wurzelelement mehrfach verwendet werden kann, legen wir über dessen Definition eine entsprechende Anweisung (in lila gehalten), das + regelt, dass dieses Element mehrfach verwendet werden kann.

Damit ist die DTD Definition zu Ende und wir können das eigentliche xml-Dokument schreiben. Wie Sie sehen, kann es als "Tags" (nun Elemente) genannt ausschließlich die in der DTD definierten Elemente verwenden.

Nochmals sei betont: die DTD kann sehr viel komplexer sein, sie kann auch als extra Datei ausgelagert sein und es können auch mehrere DTDs in ein xml-Dokument importiert werden; dies ist alles sehr vergleichbar mit externen Stylesheets oder externen Skripten in html-Dokumenten.

Was passiert nun, wenn Sie obiges abtippen, mit der Endung .xml versehen und in xml-fähigen Browers aufrufen? Recht enttäuschend, aber nachvollziehbar. Schauen wir uns erst mal das Ergebnis an, bevor wir es erkläutern:

Darstellung in Netscape Navigator 6:

Navigator hat das xml-Dokument als solches erkannt (machen Sie mal nen fehlerhaften Code und Sie werden mit ner entsprechenden Fehlermeldung konfrontiert) und hat sogar die mit PCDATA ausgezeichneten Elemente als Text interpretiert. Allerdings völlig unformatiert und ohne Umbruch.

Darstellung in Internet Explorer 5.0 für Mac:

Mit dem Internet-Explorer ergebnis können wir gleich gar nichts anfangen. Es hat nur den Code dargestellt, diesen aber farblich und durch Einrückungen strukturiert. Die DTD hat er gar nicht erst dargestellt. Das ist natürlich nicht, was wir erreichen wollen.

Woran liegt es? Nun, hier wird ganz klar, xml ist nur eine Strukturierungssprache. Wir müssen nun noch andere Möglichkeiten verwenden, um unsere xml-Datei überhaupt darzustellen. Wir wählen Cascading Style Sheets und verbinden mit einer externen StyleSheet-Datei. Damit muss unser xml-Seitencode so aussehen:

<?xml version="1.0"?>
<?xml-stylesheet href="teststil.css" type="text/css"?>
<!DOCTYPE Kontakt [
    
<!ELEMENT Kontakt (Eintrag)+>
    <!ELEMENT Eintrag (Name, Telefon, Adresse)>
        <!ELEMENT Name (#PCDATA)>
        <!ELEMENT Telefon (#PCDATA)>
        <!ELEMENT Wohnort (#PCDATA)>
]>
<Kontakt>
   <Eintrag>
      <Name>Hans Huber</Name>
    ... Rest wie oben ....

Der Verweis auf die externe Stylesheet-Datei ist oben mit der grünen Zeile erfolgt.

Unser Stilsheet hat folgenden Code (vereinfacht mit GoLive erstellt) und wurde unter dem Namen teststil.css abgespeichert. Es liegt mit unserer xml-Datei im selben Verzeichnis.

Eintrag { background-color: gray; border: dashed 2pt red }
Name { color: black; font-weight: bold; font-size: 14px; line-height: 14px; font-family: Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
Telefon { color: maroon; font-size: 12px; line-height: 12px; font-family: "Courier New", Courier, Monaco }
Wohnort { color: navy; font-size: 12px; line-height: 18px; font-family: "Times New Roman", Georgia, Times }

Die Darstellung in NN6 sieht dann folgendermaßen aus:

Das Prinzip sollte Ihnen klar geworden sein. Wie Sie sehen, haben unsere im Style Sheet zu formatierenden Elemente dieselben Namen wie die xml-Elemente. Allerdings hätten wir die Darstellung gerne untereinander. Das geht halt doch am besten mit html-Tags. Auch dies soll in Verbindung mit xml möglich sein, wir müssen dann sog. html-Namensinseln schaffen. Vergleichen Sie auch mit der entsprechenden Erläuterung oben bei xhtml.

In unten stehendem Code habe ich eine entsprechende html-Namensinsel eingebaut . Sie beginnt mit <Text xmlns....> und endet mit </Text>. Den html-Tags muss dann entsprechend html vorgestellt werden, also z.B. <html:p>Text</html:p>. Leere Tags müssen so gestaltet sein: <html:br/>.

Unten soll also zwischen die beiden Kontakteinträge in einer html-Namensinsel ein Paragraph eingeschaltet werden. Der entsprechende Code ist in blau hervorgehoben. Damit der Paragraph auch gut sichtbar ist, habe ich noch ein Hallo eingefügt.

So sieht nun unser kompletter Dokumentencode nun aus:

-- Beginn des Dokuments ---

<?xml version="1.0"?>
<?xml-stylesheet href="teststil.css" type="text/css"?>
<!DOCTYPE Kontakt [
    <!ELEMENT Kontakt (Eintrag)+>
    <!ELEMENT Eintrag (Name, Telefon, Adresse)>
        <!ELEMENT Name (#PCDATA)>
        <!ELEMENT Telefon (#PCDATA)>
        <!ELEMENT Wohnort (#PCDATA)>
]>
<Kontakt>
   <Eintrag>
      <Name>Hans Huber</Name>
     
 <Telefon>45678</Telefon>
      <Wohnort>Augsburg</Wohnort>
   </Eintrag>
<Text xmlns:html="http://www.w3.org">
<html:p>Hallo
</html:p>
</Text>
   
<Eintrag>
      <Name>Helmut Haberle</Name>
      <Telefon>34596</Telefon>
      <Wohnort>Stuttgart</Wohnort>
   </Eintrag>
</Kontakt>

-- Ende des Dokuments ---

Nun kommt aber etwas Frust. Unsere html-Namensinsel wird mit den meisten aktuellen Browsern nicht richtig angezeigt:

So sieht es unter Netscape Navigator 6.0 für Mac sowie NN 6.2 für PC bzw. für Opera 5.0 für Mac aus:

Der Umbruch wird nicht bewerkstelligt, aber immerhin wird das Wort Hallo ohne Fehlermeldung zwischen den Blöcken wiedergegeben. Allerdings funktioniert dies genauso auch ohne jede html-Namensinsel, einfach durch Einfügen des Wortes Hallo.

Und wie sieht es unter Internet Explorer 5.0 aus?

Frust beim IE 5.0 für Mac: gar nichts wird erkannt, nicht einmal das Style-Sheet, es wird nur der gesamte Code (mit Ausnahme der DTD angezeigt).

Gerade wollte ich frustriert aufgeben, hab dann aber doch noch Internet Explorer 5.0 für PC ausprobiert und siehe da, alles wird so angezeigt, wie wir es haben wollten, na also:

Sie sehen aber aus den Beispielen (und deshalb habe ich sie alle aufgeführt), dass noch ein recht weiter Weg zur korrekten Implementierung von xml in den aktuellen Browsern zurückzulegen ist. Selbst wenn mit der nächsten Generation alle Browser dies können sollten, bleiben doch wieder alle älteren Browser außen vor. XML für Webseiten wird also wohl erst nur für Intranet-Lösungen (dort weiss man, welche Browser verwendet werden) sowie für spezielle Projekte (mit vorgeschalteten sehr komplexen JavaScript-Browserweichen) Anwendung finden.

Das entsprechende xml-Beispiel mit Namensinsel können Sie hier aufrufen, vielleicht haben Sie ja bereits einen Browser, der dies korrekt anzeigt. Aber Vorsicht: Browser, die nicht mit xml umgehen können, sind beim Aufruf dieses Links stark absturzgefährdet (IE 5.5 für MacOSX stürzt z.B. immer ab; NN 7 für MacOSX hat keine Probleme)


Literatur zum Thema:

Die Geschichte zum Web und zu html basiert unter anderem auf meinen beiden ersterworbenen, mir immer noch teuren Webbüchern:

Bob LeVitus & Jeff Evans (1995): Webmaster (Macintosh): How to build your own WorldWideWeb Server without really trying.- AP-Professional, Boston etc.

Robert Tolksdorf (1995): Die Sprache des Web: HTML 3.- dpunkt-Verlag. (gibt es immer noch, in akualisierter Version)

Die Erläuterungen zu XML und XHTML basieren insbesondere auf entsprechenden ABschnitten im folgenden Buch:

Uwe Hess & Günter Karl (2000): XHTML 1.0.- bhv-Taschenbuch, ¤ 15,29

Es gibt auch weitere Bücher zu XML, z.B. aus der preisgünstigen bhv-Reihe, die ich aber nicht durchgearbeitet habe.

Das entsprechende bhv-Buch stammt vom Autor des hier mehrfach hochgelobten JavaScript-Buch derselben Reihe, so dass ich davon ausgehe, dass er Ihnen auch für xml einen sehr anschaulichen Einstieg gibt: M. Seeboerger-Weichselbaum: Das Einsteigerseminar XML, 3. Aufl., 432 Seiten, bhv-Verlag, ¤ 9.95.

Außerdem verweise ich nochmals auf das xml-Kapitel in Stefan Münzers Selfhtml-Kurs: http://selfhtml.teamone.de/xml/intro.htm


Inhaltsseite

Anlagenverzeichnis


Beispiel zu oben: Hier steht der Fußnotentext