Webapplikationen mit Unterstützung von XML 
Navigation:Inhalt ->
2 Grundlagen und Voraussetzungen ->
2.1 Geschichtliches und Entwicklung
Neues und Änderungen
<< Vorheriges Kapitel | Nächstes Kapitel >>

2.1 Geschichtliches und Entwicklung

2.1.1 Entwicklung von Computeranwendungen
2.1.2 Von GML zu XML

2.1.1 Entwicklung von Computeranwendungen

In diesem Kapitel soll ein Abriss über die Entwicklung von Computeranwendungen gegeben werden. Von den ersten Röhrenrechnern bis zu den verteilten Systemen, wie wir sie heute kennen.

Erste Rechnergeneration

Die Rechner der ersten Generation (1945 - 1955) bestanden aus Röhren als Schaltelemente und Steckkarten. Programmiert wurden sie durch Verdrahtung der Steckkarten. Sie wurden für numerische Berechnungen eingesetzt. Da Röhren relativ häufig ausfielen, und für einen Rechner bis zu mehreren 10.000 benötigt werden, waren die Rechner relativ unzuverlässig. [Irmscher 2002]

Anfang der 50er Jahre wurde die Lochkartentechnik entwickelt. Die Programme und Daten konnten auf Lochkarten gestanzt und somit in den Rechner eingelesen werden. Dies bedeutete eine deutliche Erleichterung gegenüber der Programmierung mittels Verdrahten von Steckkarten.

Zweite Rechnergeneration: Stapelverarbeitung

Die Rechner dieser Generation (1955 - 1965) bestanden aus Transistoren statt den Röhren, was zu einer deutlich erhöhten Zuverlässigkeit führte. Ein Programm, das auf einer Lockkarte oder auf einem Lochstreifen gestanzt war, wurde als Job bezeichnet. Die Jobs werden nacheinander vom so genannten Stapel in den Rechner eingelesen, vom Rechner ausgeführt, und wieder als Lochstreifen ausgegeben. Eine Interaktion mit dem Programm war nicht möglich. Das entspricht dem klassischem EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe. Es gab nur sehr primitive Betriebssysteme, die als "Monitor" bezeichnet wurden. Der Monitor war für das Einlesen und Ausführen der Jobs zuständig. Die Programme, die auf diesen Rechnern liefen und vom Monitor ausgeführt wurden, waren meist wissenschaftliche oder technische Berechnungen. Dementsprechend wurden die Programme entweder in Maschinensprache (Assembler) oder in der speziell für Berechnungen optimierten Sprache FORTRAN geschrieben. [Bjork 2000] [Irmscher 2002]

Stapelverarbeitungssysteme

Das Einlesen der Lochkarten und die Ausgabe war relativ zeitaufwändig. Während dieser Zeit konnte die äußerst kostbare Rechenzeit des Rechners nicht benutzt werden. Mit der Einführung der Magnetbänder ab Mitte der 60er Jahre des 20. Jahrhunderts konnte der Prozess optimiert werden: Einfache, kostengünstigere Rechner lasen die Lochkarten ein und schrieben sie auf Magnetbänder. Diese Magnetbänder konnten vom leistungsfähigen aber teuren Hauptrechner viel schneller als Lockarten gelesen werden. Der Hauptrechner führte dann den Job aus und schrieb die Ausgabedaten wieder auf Magnetbänder. Diese konnten dann ebenfalls wieder von einfachen Rechnern auf Lochkarten oder später auch auf Druckern ausgegeben werden. Dadurch wurde die Rechenzeit des Hauptrechners besser ausgenützt. Solche Systeme nannte man Stapelverarbeitungssysteme (engl.: Batch-Systems).

Dritte Rechnergeneration

Die Rechner der dritten Generation (1965 - 1980) zeichneten sich durch die Verwendung von Integrierten Schaltungen (ICs, Integrated Circuits) und dem Mehrprogrammbetrieb aus. Durch die Verwendung von ICs anstatt einzelner Transistoren konnten Platz und Kosten gespart werden. Mehrprogrammsysteme (Multiprogramming Systems) erlaubten es, dass mehrere Programme gleichzeitig im Speicher sind und abwechselnd ausgeführt werden. Aus den einfachen Monitor-Programmen entwickelten sich dabei immer mehr Betriebssysteme, wie man sie heute kennt.

Timesharing Systeme

Als die Rechner schneller wurden, wurde es möglich, dass Benutzer direkt mit dem Rechner interagierten und es konnten gleichzeitig mehrere Programme, mittlerweile oft Prozesse genannt, ausgeführt werden. Dazu ist es notwendig, dass das Betriebssystem sehr schnell zwischen den einzelnen Prozessen hin und her schaltet. So wird die Prozessor-Zeit auf die einzelnen Prozesse aufgeteilt ("Timesharing"). Benutzereingaben werden dabei priorisiert, sodass auf solche sehr schnell reagiert werden kann. In solchen Systemen wird die CPU (Central Processing Unit), also der Prozessor, viel besser ausgenützt. Wird nämlich nur ein Programm ausgeführt, verbringt die CPU viel Zeit damit, auf die Beendigung einer E/A-Operation (Eingabe/Ausgabe-Operation), wie beispielsweise einer Benutzereingabe oder den Zugriff auf einen externen Speicher, zu warten. Bei Mehrprogrammsystemen können diese Wartezeiten von anderen Prozessen genützt werden.

Heute werden solche Timesharing Systeme meist als "Multitasking Systeme" bezeichnet. Ein Programm, bzw. ein Prozess kann je nach Aufgabe in mehrere so genannte "Tasks" aufgeteilt werden. Diese Tasks laufen zeitlich parallel ab. Bei einem Textverarbeitungsprogramm könnte zum Beispiel ein Task für die Benutzereingaben und die Darstellung dieser zuständig sein. Ein weiterer, der vermutlich mit geringerer Priorität laufen würde, könnte den geschriebenen Text permanent auf Rechtschreibfehler überprüfen. Wobei - wie oben erwähnt - die Tasks nicht wirklich parallel laufen, sondern nacheinander vom Prozessor bearbeitet werden. Die Umschaltung zwischen den Tasks erfolgt allerdings so schnell, dass sie scheinbar parallel ablaufen. Ausnahmen bilden Multiprozessor Computer, bei denen wirklich mehrere Tasks parallel laufen können. Aber auch hier laufen üblicherweise mehr Tasks als Prozessoren vorhanden sind, sodass auch permanent zwischen den Tasks umgeschaltet wird.

Mainframes und Terminals

Durch das Timesharing Verfahren ist es möglich, dass ein leistungsfähiger Rechner mehrere Benutzer gleichzeitig bedienen kann. Diese Rechner wurden als Mainframes oder Großrechner bezeichnet. An diesen waren einfache Terminals angeschlossen, an denen die Benutzer arbeiteten. Diese Terminals besaßen keine "Intelligenz", sondern bestanden meist nur aus einem Bildschirm, der die Informationen vom Mainframe erhielt, und einer Tastatur, über die die Benutzereingaben direkt an den Mainframe weitergeleitet wurden. Die Terminals konnten nur Text darstellen. Eine grafische Benutzeroberfläche gab es nicht. Mainframes zeichneten sich durch sehr hohe Zuverlässigkeit aus. Sie wurden hauptsächlich für Lohn- und Gehaltsabrechnung, Finanzbuchhaltung und Ähnlichem eingesetzt.

Minicomputer

1960 wurde der erste Minicomputer (PDP-1 der Firma Digital Equipment Corporation, DEC) vorgestellt. Diese Computer waren viel kleiner als die Mainframes und ähnlich der heutigen Personal Computer bereits für den persönlichen Gebrauch ausgelegt. Die Eingaben und Ausgabe erfolgten über Tastaturen und einfachen Monitoren oder Druckern. [Polsson 2002]

Nachfolgende Minicomputer wurden immer leistungsfähiger und übernahmen auch Aufgaben, die vorher den Mainframes vorbehalten waren. Beispielsweise für Standardsoftware für mittelständische Unternehmen wie Finanzbuchhaltung, Warenwirtschaft und Lohn- und Gehaltsabrechnung. IBMs AS/400 ist in diesem Bereich nach wie vor sehr stark vertreten. Da es bei diesen Anwendungen weniger um komplizierte Berechnungen geht, als mehr um die Verwaltung von großen Datenmengen, sind diese Rechner auf diese Anwendungen optimiert.

Unix

Die erste Version des Unix Betriebssystems wurde von Dennis Ritchie und Ken Thompson 1969 auf einem PDP-7 von DEC entwickelt. Damals noch in reiner Maschinensprache. Später entwickelte Thompson die Programmiersprache "B", die Ritchie zu "C" erweiterte. Unix wurde dann auf C portiert und um das Multiprogramming erweitert. [Ritchie 1996] [Krennmair 2002]

C bzw. die objektorientierte Weiterentwicklung C++ gehören neben Cobol noch immer zu den am meisten verwendeten Programmiersprachen. Da es bald C-Compiler auf fast allen Hardwareplattformen gab, konnte Unix relativ einfach auf diesen Plattformen portiert werden. Heute spielt Unix vor allem im Serverbereich eine große Rolle, obwohl es praktisch auch alle typischen Anwendungen der Personal Computer für Unix gibt. Aber hier dominiert eindeutig Microsoft mit ihren Windows-Betriebssystemen.

Standardsoftware

Waren anfangs die meisten Programme maßgeschneidert für einen Kunden entwickelt worden, kam um ca. 1980 betriebliche Standardsoftware auf den Mainframes auf. Da mittlerweile die Anschaffungs- und Betriebskosten der Rechner im Vergleich zu den Softwareentwicklungskosten deutlich gesunken waren, war das die logische Konsequenz. SAP brachte beispielsweise 1979 mit R/2 den Vorgänger der heute am meisten verwendeten Geschäftsprozesslösung R/3 heraus. [SAP 2002]

Emulatoren

Vor der Einführung der IBM-kompatiblen Personal Computer waren neu entwickelte Rechnermodelle meist nicht kompatibel zu den bereits bestehenden. Personalcomputer sind seit über 20 Jahren mehr oder weniger kompatibel. Man hat dadurch zwar den Vorteil, dass Software, die vor über 20 Jahren für den originalen IBM PC mit 8086 Intel Prozessor geschrieben wurde, meist noch heute auf einem aktuellen Pentium IV Prozessor laufen würde. Aber andererseits mussten dadurch bei allen nachfolgenden Prozessor-Designs viele leistungshemmende Kompromisse eingegangen werden. Früher wurde meist auf diese Kompatibilität zu Gunsten der besseren Performance verzichtet. Um sich das Portieren der Software von den alten Systemen auf die neuen zu ersparen, wurden Emulatoren geschrieben. Ein Emulator ist eine Softwareumgebung, die auf dem neuen System läuft, sich aber nach außen hin so verhält, als wäre es das alte System. Auf dieser Umgebung kann dann die alte Software laufen. Durch die Emulation wird natürlich Performance verloren, aber die neuen Rechnermodelle waren meist soviel schneller als die alten, dass trotz Emulation ein Geschwindigkeitsvorteil entstand.

Vierte Rechnergeneration: Personal Computer

In den 80er Jahren des 20. Jahrhunderts kamen die Personal Computer (PC) auf. Diese wurden anfangs hauptsächlich zur Textverarbeitung und für Tabellenkalkulationen eingesetzt. Später wurden die PCs untereinander vernetzt. Man sprach in diesem Zusammenhang von einem Peer-To-Peer6 Netz, da gleichwertige Computer untereinander vernetzt wurden. Nur gemeinsam benutzte Dateien wurden auf so genannten File-Servern abgelegt. ("File-Sharing Architecture"). Das funktionierte solange nicht zu viele Benutzer gleichzeitig auf die Dateien zugreifen mussten und solange diese Dateien nicht zu oft geändert wurden. [Sadoski 2002]

Oft wurde auf den PCs Terminal-Emulationssoftware installiert und mit den Mainframes vernetzt. So konnte man vom PC aus die Mainframe-Anwendungen benutzen. Diese Anwendungen werden nämlich teilweise noch heute verwendet.

Neben den IBM-kompatiblen Personalcomputern gab es auch die Macintoshs der Firma Apple. Diese haben einen ähnlichen Einsatzbereich wie die IBM-kompatiblen PCs, allerdings zeichneten sie sich durch bessere Grafik- und Desktop-Publishing-Eigenschaften aus.

Client-Server Architektur

Da die File-Sharing Architektur mit der Zeit an ihre Grenzen stieß, entwickelte sich um 1990 die Client-Server Architektur. Dabei wurde der File-Server durch einen Datenbank-Server mit einem relationalen Datenbankmanagement System (DBMS) ersetzt. Dieses kümmerte sich um die Konsistenz der Daten, auch wenn mehrere User gleichzeitig darauf zugriffen. Die Daten konnten viel gezielter abgefragt werden und es war nicht mehr nötig komplette Dateien über das Netzwerk zu übertragen. Dadurch konnte der Netzwerk-Verkehr reduziert werden. Typischerweise kommunizieren die Programme am Server und am Client über RPC oder SQL miteinander. RPC (Remote Procedure Call) ist eine Methode, die es einem Programm ermöglicht eine Prozedur oder Funktion eines anderen Programms auf einem entfernten Rechner auszuführen. So können Daten übertragen bzw. Dienste eines anderen Rechners in Anspruch genommen werden. SQL (Standard Query Language) ist die gebräuchlichste Sprache zur Abfrage und Manipulation von Datenbanken.

In einer Client-Server Umgebung kommunizieren hauptsächlich die Clients mit dem Server und umgekehrt. Dabei stellt der Server einen Dienst zur Verfügung, den der Client benutzt. Zu beachten ist, dass die Begriffe "Server" und "Client" sowohl für Hardware als auch für Software verwendet werden. Als "Server" bezeichnet man einerseits einen meist leistungsfähigen Rechner auf dem Programme laufen, die Dienste zur Verfügung stellen. Diese Programme nennt man ebenfalls "Server". So wird als "Webserver" sowohl der Rechner bezeichnet, auf dem das Programm läuft, das die Webseiten an die Webbrowser ausliefert, als auch dieses Programm selbst.

Clients hingegen sind die Benutzer der Dienste, die die Server zur Verfügung stellen. Nicht umsonst wird ein Webbrowser auch Webclient bezeichnet. Er fragt beim Webserver nach einer Webseite und zeigt diese dann im Browserfenster an. Er benutzt also den Webserver. Ein anderes geläufiges Beispiel sind die "Thin Clients" oder "Netzwerkcomputer". Das sind nicht allzu leistungsfähige, kleine, günstige und einfach wartbare Computer. Sie machen meist nichts anderes als Programme, die am Server laufen auf dem Schirm des Benutzers anzuzeigen und die Benutzereingaben wieder an den Server zu schicken. Eigentlich ähnlich den Terminals, die an den Mainframes angeschlossen waren. Allerdings haben sie im Unterschied zu den Terminals einen eigenen Prozessor, können eine grafische Benutzeroberfläche darstellen und auch die Programme ausführen, die mit dem Server kommunizieren.

Middleware

In einer Client/Server Architektur müssen Programme, die am Client laufen, mit Programmen, die am Server laufen zusammenarbeiten. Dazu ist es sinnvoll eine Softwareschicht zwischen den Programmen und den Systemkomponenten wie dem Betriebssystem oder den Übertragungsprotokolle einzuführen. Diese Zwischenschicht nennt man "Middleware". Die Middleware dient dazu, die Entwicklung von verteilten Programmen (also Programme, deren einzelne Komponenten auf mehreren Rechnern laufen) zu vereinfachen, indem sie die Kommunikation zwischen den Komponenten übernimmt. So reduziert die Middleware die Komplexität für die zu entwickelnde Anwendung. [Cambiotis 2001]

Die Middleware kann auf verschiedensten Mechanismen aufbauen. Eine davon ist das bereits oben erwähnte RPC. Bei der Message Oriented Middleware erfolgt die Kommunikation über Nachrichten. Transaction Processing Monitors nehmen Anfragen der Clients entgegen und leiten sie je nach Art und Priorität an die entsprechenden Modulen weiter. Auch die meisten Datenbanksysteme haben bereits Middleware integriert (Database Middleware). Eine weitere Gruppe sind die "Object Request Brokers" (ORB). Die bekanntesten Vertreter davon sind das offene und firmenunabhängige CORBA (Common Object Request Brokers Architecture) und Microsofts proprietäres DCOM (Distributed Component Object Model). Beide erlauben es mit Objekten (Daten und Programmcode) auf entfernten Rechnern zu arbeiten.

2-Tier Client/Server Architektur

Client/Server Systeme kann man anhand der Anzahl an verwendeten Rechnern einteilen. Wobei hier Rechner mit verschiedenen Aufgaben gemeint sind. Bei einem Two-Tier System gibt es üblicherweise eine Anwendung, die am Client läuft, und die die Daten von einem Datenbank Management System (DBMS) am Server erhält. Wenn das System an seine Grenzen gelangt, kann man entweder ein leistungsfähigeres DBMS-System einsetzen, oder auf eine Three-Tier Architektur ausweichen. Ein leistungsfähigeres DBMS könnte aus mehreren Servern bestehen, die als Cluster zusammengeschaltet sind. Das wirft allerdings auch eine Reihe an Problemen auf, vor allem wenn jeder Server seine eigene Datenbank hat, die aber mit den Datenbanken der anderen Server konsistent gehalten werden muss.

3-Tier Client/Server Architektur

Beim Three-Tier System wird zwischen dem Datenbank Server (oder den Datenbankservern) und den Clients ein eigener Server (oder mehrere) hinzugefügt. Dieser wird auch als "Middle-Tier" bezeichnet. Je nach Aufgabe des Middle-Tiers kann man verschiedene Three-Tier Architekturen unterscheiden.

Transaction Processing Monitor

Ein Middle-Tier Server, der als Transaction Processing Monitor (TP-Monitor) arbeitet, verwaltet die zur Verfügung stehenden Ressourcen, wie verschiedenste Datenbankverbindungen oder Dateien. Die Client-Anfragen verteilt er dann auf diese Ressourcen. Dabei wird jede Anfrage als Transaktion betrachtet, für die der TP-Monitor die so genannten ACID-Eigenschaften gewährleistet. Nach [ISG 1997] sind dies:

Message Server

Ein Message Server nimmt Nachrichten der Clients entgegen und leitet sie an das DBMS und andere Ressourcen weiter. Im Unterschied zum TP-Monitor enthalten aber hier die Nachrichten die Intelligenz. Der Message Server analysiert nur den Nachrichten-Kopf mit der Prioritätsinformation und verteilt die Nachrichten entsprechend, wohingegen der TP-Monitor selbst entscheidet, wie die Transaktionen abgearbeitet werden.

Application Server

Der Applikationsserver übernimmt die Aufgaben, die bei den bisher vorgestellten Architekturen am Client ablaufen. Das sind die Business Logic und die Datenabfrage. Die Darstellung der Benutzerschnittstelle bleibt beim Client. Für diese Variante bieten sich als Client-Rechner die bereits erwähnten Thin-Clients an. Es muss nur relativ wenig Software am Client-Rechner laufen, wodurch sich auch die Sicherheit erhöht. Außerdem lässt sich diese Architektur leicht und kostengünstig erweitern, da die Clients nicht besonders leistungsfähig sein müssen und wegen der wenig vorhandenen Software auch wartungsarm sind. Auch ist es kein Problem mehrere Applikationsserver einzusetzen, die dann abwechselnd die Anfragen der Clients entgegennehmen.

N-Tier Architektur

Es ist durchaus auch möglich, dass mehrere Middle-Tiers eingesetzt werden. Es könnten beispielsweise ein Applikationsserver über einen Transaktionsserver auf das DBMS zugreifen.



2.1.2 Von GML zu XML

Markup Sprachen

Wie kam es eigentlich zur Entwicklung von XML? Am Anfang gab es reine Textdokumente, die nur den tatsächlichen Inhalt umfassten. Da man aber auch festlegen wollte, wie ein Text formatiert bzw. präsentiert werden soll, musste man sich überlegen, wie man diese Formatierungsanweisungen in das Dokument integrieren könnte.7 Der Einfachheit halber wurden diese Anweisungen einfach in den Text integriert:

Das ist ein Beispiel Text. Er besteht aus ^bfetter^b und ^ykursiver^y Schrift.
Beispiel 1: Schriftformatierung in einer der frühen Textverarbeitungsprogrammen für den IBM kompatiblen PC: Wordstar aus den 80er-Jahren des vorigen Jahrhunderts.

Diese Art der Notation wird Formatierungs-Auszeichnung oder auch Markup genannt [Goldfarb 2000, 1.1.1 Formatierungsmarkup]. Ähnliche Notationen findet man neben HTML und XML auch in Zeiten von WYSHIWYG nach wie vor: LaTex, eine Dokument-Formatierungssprache, erfreut sich vor allem im wissenschaftlichen Bereich größter Beliebtheit. Aber auch als Nutzer des Webs kann man auf solche Markup Sprachen stoßen: Die bekannten HTML-Formulare bieten nur die Möglichkeit reinen Text einzugeben. Sollte der eingegebene Text dann allerdings auf einer Webseite erscheinen und eine spezielle Formatierung aufweisen, kann das nur mit Markup erreicht werden. Typische Beispiele sind Online-Diskussionsforen oder Web-basierte CMS (Content Management Systeme).

Dieser Satz enthält ein [b]hervorgehobenes[/b] Wort. Zusätzlich möchte ich noch einen Link anführen: [url]www.w3.org[/url].
Beispiel 2: Typische Formatierungsanweisungen, wie sie bei vielen Online-Diskussionsforen verwendet werden.

GML

Ende der 60er-Jahre sollte Charles Goldfarb für IBM ein einheitliches System für das Speichern, Suchen, Verwalten und Publizieren von juristischen Texten schaffen. Gemeinsam mit den IBM-Forschern Ed Mosher und Ray Lorie erkannte er, dass so ein System eine einheitliche Sprache verwenden muss, damit die Werkzeuge8 zum Verwalten und Bearbeiten zusammenarbeiten können. Trotzdem sollte es aber benutzerdefinierte Dokumenttypen geben, die unterschiedliches Vokabular verwenden. Goldfarb vergleicht das mit Anwälten und Wissenschaftern, die sich beide des Lateins bedienen, aber unterschiedliche Fachausdrücke verwenden.

Weiters müssen die Dokumente so abgespeichert werden, dass der Computer bzw. die Werkzeuge damit auch etwas anfangen können. Von sich aus kann kein Computer entscheiden, welche Bedeutung einzelne Teile eines Dokuments haben. Wenn jedoch zum Beispiel das Datum der letzten Änderung als solches markiert bzw. ausgezeichnet ist, kann ein Werkzeug gezielt nach Dokumenten suchen, die in letzter Zeit bearbeitet wurden. Es soll also den Teilen eines Dokuments eine Bedeutung gegeben werden, die ein Werkzeug interpretieren kann.

<FirstName>Max</FirstName> <LastName>Mustermann</LastName>
<Address>Musterstraße 1a</Address>
<Zip>5020</Zip> <City>Salzburg</City>
Beispiel 3: Adresse bei der durch Markup den einzelnen Feldern eine Bedeutung gegeben wurde.

1969 entstand aus diesen Anforderungen die General Markup Language (GML) oder zu Deutsch: Verallgemeinerte Auszeichnungssprache. "GML" sind auch die Anfangsbuchstaben der drei Entwickler Goldfarb, Mosher und Lorie. Aus diesem Grund prägte Goldfarb auch den Begriff "Markup Language". [Goldfarb 2000, S. 61]

SGML

Was aber noch fehlte, war ein automatisierter Mechanismus, der es erlaubte die Korrektheit des Markups zu überprüfen. Beispielsweise, dass im obigen Beispiel "<FirstName>" auch wirklich in jedem Dokument so geschrieben wird und auch immer vor dem Element "<LastName>" kommt. Nur wenn alle Dokumente eines gleichen Typs den gleichen Markup verwenden, können diese automatisiert bearbeitet werden. Um diese Gleichheit überprüfen zu können, muss der Aufbau eines bestimmten Dokumenttyps definiert werden. Zu diesem Zweck wurde die Dokument Type Definition (DTD, auf Deutsch: Dokumenttyp-Definition) eingeführt. Hier wird für einen Dokumenttyp die logische Struktur der XML-Dokumente festgelegt: welche Markup-Elemente in welcher Reihenfolge und mit welcher Multiplizität (optional, einmal, mehrmals, etc.) auftreten dürfen. Ein solcher Dokumenttyp kann z.B. eine Rechnung, ein Brief oder eine Bestellung sein.

Aus GML wurde später - wiederum unter der Federführung von Charles Goldfarb - die Standard Generalized Markup Language (SGML). Diese wurde 1986 von der ISO (International Organization for Standardization) unter der Nummer ISO 8879 als ein internationaler Standard für die Speicherung und den Austausch von Daten festgelegt. [Anderson et al. 2000, Kapitel 1: XML, eine Einführung]

Hypertext und das World Wide Web

Ende der 80er-Jahre des letzten Jahrhunderts beschäftigte sich ein junger Wissenschafter namens Tim Berners-Lee9 am CERN, dem Europäischen Laboratorium für Teilchenphysik, mit Dokumentationssystemen. Es sollte möglich gemacht werden, dass alle Wissenschafter einfach auf die Dokumente der anderen Wissenschafter zugreifen können, auch wenn diese auf den unterschiedlichsten Computersystemen erstellt wurden und dort gespeichert sind. Er kam bald auf die Idee die unterschiedlichen Dokumente über ein einheitliches Basissystem zu verlinken. [Berners-Lee 2000, Kapitel: tangles, links, and webs]

Zu diesem Zeitpunkt gab es schon längst die Idee des Hypertextes und auch schon lauffähige Hypertext-Systeme. Ted Nelson war es, der bereits ab 1960 am ersten Computer-basierten Hypertext-Konzept arbeitete. Allerdings prägte er erst 1965 den Begriff "Hypertext", den er selbst als "non-sequential writing" definierte.10 [Keep et al. 2001]

Ein Kollege, der zuvor einige Zeit in den USA verbracht hatte und dort mit dem Internet in Berührung gekommen war, brachte Tim Berners-Lee auf die Idee, sein Dokumentationssystem auf die Internetprotokolle TCP bzw. IP aufzubauen. In Europa und insbesondere im CERN war das Internet noch wenig verbreitet. Aber es eignete sich hervorragend, verschiedene Rechnerarchitekturen, wie sie am CERN anzutreffen waren, zu vernetzen.

Da keiner der Hersteller von Hypertextsystemen bereit war, auf Berners-Lees Vorschlag einzugehen und ihr jeweiliges System auf das Internet zu portieren, begann er im Oktober 1990 an seinem eigenen Internet-basierten Hypertextsystem zu schreiben. Der Name: "World Wide Web". Bis zum Weihnachtstag 1990 hatte er die erste lauffähige Version eines Webbrowsers und eines Webservers programmiert. Die beiden Programme kommunizierten über das von ihm entwickelte Hypertext Transfer Protocol (HTTP), das wiederum auf das oben erwähnte TCP/IP aufsetzt. Die erste Webseite war unter info.cern.ch zu finden. [Berners-Lee 2000, Kapitel: info.cern.ch]

HTML

Für sein System brauchte er aber auch ein geeignetes Dateiformat. Die Hypertext-Dokumente bestanden ja nicht nur aus Text, sondern mussten auch Links zu anderen Dokumenten enthalten. Diese Links müssen im Quelldokument angegeben werden, damit sie dann im Webbrowser auch als solche dargestellt werden können.

Berners-Lee entschied sich aus zwei Gründen für eine Sprache, die auf SGML basiert, bzw. eine Untermenge von SGML ist: Erstens wurde SGML schon im CERN eingesetzt, sodass der Syntax mit den spitzen Klammern für viele nichts Neues war. Zweitens brauchte die Idee des Webs Unterstützung auf breiter Front. Wenn er sein Produkt auf SGML aufbaut, konnte er sich auch Unterstützung von der SGML Gemeinschaft erwarten. Er entwickelte also ein Dokumentformat für seine Hypertextdokumente, das aus einer einfachen Untermenge von SGML bestand11 und für seinen Zweck sinnvoll war. Er nannte es HTML (Hypertext Markup Language). [Berners-Lee 2000, Kapitel: protocols]

<html>
<head>
  <title>Ein HTML-Beispiel-Dokument</title>
</head>
<body>
  Ein Link: <a href="http://www.w3.org">W3C</a>
  Ein Bild:
  <img src="images/testbild.gif" alt="Testbild" width="10" height="10">
</body>
</html>
Beispiel 4: Der Quellcode eines einfachen HTML-Dokuments mit Titel, Link und einem eingebundenen Bild.

Der HTML-Markup besteht aus den so genannten HTML-Elementen. Die Elemente zusammen mit den spitzen Klammern werden als Tags bezeichnet. Diese können wiederum Attribute enthalten. So ist "<title>Ein HTML-Beispiel-Dokument</title>" ein "Title"-Element mit dem Inhalt "Ein HTML-Beispiel-Dokument". Der Image-Tag (<img ... >) enthält die Attribute "src", "alt", "width" und "height". Zu beachten ist, dass die Elemente und Attribute im HTML-Markup fix vorgegeben sind. Eigene Elemente oder Attribute können nicht definiert werden.

Interessanterweise hatte Tim Berners-Lee nie daran gedacht, dass man den HTML-Quelltext direkt bearbeiten könnte. Er dachte, dass es Editoren geben würde, die die Bearbeitung von HTML-Dokumenten so erlauben würden, wie das aktuelle Textverarbeitungsprogramme tun. Allerdings war der HTML-Code so einfach zu erlernen, dass viele die HTML-Syntax erlernten und den HTML-Code direkt in einfachen Text-Editoren bearbeiteten. Dies ist sicher auch ein Grund für die schnelle und weite Verbreitung des Webs.

W3C

Das World Wide Web wuchs so schnell, dass bald der Ruf nach einer unabhängigen Organisation laut wurde, die die weitere Entwicklung lenken sollte. Insbesondere sollte diese Organisation darauf achten, dass es zu keinem Wildwuchs bei den Standards kommt, und dass keine Firma die Macht über das World Wide Web an sich reißt. Im Oktober 1994 gründete Tim Berners-Lee am MIT (Massachusetts Institute of Technology) in Zusammenarbeit mit dem CERN das World Wide Web Consortium (W3C). Der Zweck des Konsortiums ist, wie sie selbst schreiben: "to lead the Web to it's full potential." [W3C-Consortium 2000]

CSS

Ursprünglich war vorgesehen, dass der Autor einer Webseite dessen Inhalt nur mittels logischem Markup auszeichnet. Solche logischen Auszeichnungen sind zum Beispiel "<em>" oder "<strong>" für verschieden Arten von hervorgehobenem Text. Weitere findet man auf der Webseite [Münz 2001] unter HTML/XHTML -> Elemente zur Textstrukturierung -> Logische Auszeichnungen im Text. Diese HTML-Tags definieren aber nicht die Darstellung im Browser. Die Darstellung soll im Browser vom Benutzer frei gewählt werden können.

Viele Autoren von Webseiten wollten aber das Aussehen ihrer Webseiten genau vorgeben und nicht von Benutzereinstellungen im Browser abhängig sein lassen. Mit der Zeit wurden in HTML auch immer mehr Tags eingeführt, die eine physische Auszeichnung erlaubten. Man konnte zum Beispiel mit dem "<font>"-Tag die Schriftart und die Schriftgröße genau definieren. Somit konnten die Besucher der Webseiten immer weniger Einfluss auf die Darstellung einer Webseite nehmen und in den HTML-Dokumenten wurde der Inhalt immer mehr mit Präsentations-Markup vermischt. Dies ist aus zwei Gründen nicht wünschenswert: Erstens ist es dann schwerer möglich, die Darstellung auf bestimmte Bedürfnisse einzustellen (beispielsweise sehbehinderte oder schwachsichtige Menschen), und zweitens geht das genau gegen die ursprüngliche Intension des W3C, die Darstellung vom Inhalt zu trennen.

Als ersten Schritt, den Inhalt und dessen Darstellung zu trennen, wurden vom W3C die Cascading Style Sheets (CSS) eingeführt. Mit Stylesheets kann die Darstellung fast aller HTML-Elemente beeinflusst werden. Es ist z.B. nicht mehr nötig, einem Absatz eine bestimmte Schriftart zuzuweisen. Stattdessen wird ihm eine Style-Klasse zugewiesen. In dieser Style-Klasse wird die Schriftart definiert. Die Style-Klassen können in einer externen Datei (Stylesheet) definiert werden. Dadurch ist es möglich, durch Austausch der Stylesheet-Datei, die Darstellung ein und derselben HTML Seite unterschiedlich zu gestalten. Zum Beispiel für verschiedene Schriftgrößen oder eine Version speziell für den Druck. Leider werden diese Möglichkeiten noch zuwenig benutzt. Außerdem werden die CSS-Anweisungen, die speziell für den Druck eingeführt wurden, von gängigen Browsern noch kaum unterstützt. Deswegen werden Dokumente, die für den Druck vorgesehen sind, im Web meist im proprietären PDF Format publiziert. Dabei steigt der Verwaltungsaufwand, wenn ein Dokument sowohl als HTML- als auch als PDF-Dokument gewartet werden muss.12

Die aktuelle Version des W3C ist CSS2. Diese wird aber noch nicht von allen aktuellen Browsern vollständig unterstützt. Allerdings ist die Unterstützung von CSS1 und Teilen von CSS2 von allen aktuellen Browsern soweit fortgeschritten, dass damit vernünftig gearbeitet werden kann. CSS3 existiert momentan als W3C-Entwurf13.

XML

Obwohl CSS schon ein Schritt in die richtige Richtung ist, geht es noch nicht weit genug. HTML-Dokumente sind hauptsächlich für den Menschen gemacht. Einem Computer bzw. einem Computerprogramm ist es nur eingeschränkt möglich, automatisiert und gezielt nach Informationen zu suchen. Durch Markup ausgezeichnet und zum automatisierten Verarbeiten geeignet sind in HTML-Dokumenten hauptsächlich nur der Dokumenttitel, die Meta-Informationen, Überschriften, Bilder und Links. Bei den Meta-Informationen werden meist eine kurze Seitenbeschreibung ("description") und Schlüsselwörter ("keywords") verwendet.

Zur automatisierten Bearbeitung würde man etwas wie SGML benötigen. SGML ist aber durch die vielen optionalen Erweiterungen viel komplizierter. Auch die SGML-Werkzeuge sind viel aufwändiger. HTML dagegen ist sehr einfach aufgebaut, außerordentlich weit verbreitet und beliebt. Daher begann das W3C 1996 mit der Entwicklung der Extensible Markup Language (XML). Die Sprache sollte die Mächtigkeit und Flexibilität von SGML und die breite Akzeptanz von HTML verbinden. Das "extensible" (erweiterbar) soll verdeutlichen, dass es möglich ist eigene Elemente (Tags) zu definieren. [Anderson et al. 2000, Kapitel: XML, Eine Einführung]

XML ist aber nicht nur wegen der Trennung von Darstellung und Daten und wegen der Vereinfachung von automatisierter Bearbeitung entwickelt worden, sondern soll auch den Vorteil von HTML nützen, dass der Quelltext aus reinem Text besteht und somit vom Menschen lesbar ist. Vor der Einführung von XML hat jeder Hersteller sein eigenes proprietäres Dokumentformat für seine Anwendungen entwickelt. Diese Formate sind im Allgemeinen von Menschen nicht oder nur sehr umständlich lesbar. XML fördert in diesem Zusammenhang auch die Transparenz. Nur den wenigsten ist vermutlich bewusst, dass im Dateiformat für Microsoft Word Dokumente die komplette History (Änderungen, Autoren, etc.) mitgespeichert wird. Das kann fatale Auswirkungen haben, wenn man beispielsweise aus einem internen Dokument durch Entfernen von Passagen ein für die Öffentlichkeit zugängliches Dokument erstellen will. [Rost 2002]

Bei XML wäre es klar, dass die Quelldokumente lesbar sind. Im Programm müsste es Einstellungsmöglichkeiten geben, diese automatische History auf einfache Weise abzustellen.

Mittlerweile haben aber viele Firmen die Vorteile von XML erkannt und setzen bei ihren Dateiformaten auf XML. Teilweise sind sie aus Marketing-Gründen fast dazu gezwungen, weil XML in der Informationstechnologie (IT) mittlerweile eine so große Rolle spielt. Bei den Office Programmen hat hier StarOffice und dessen freier Ableger OpenOffice eine Vorreiterrolle übernommen: Sie verwenden als Dateiformate ZIP-komprimierte XML-Dokumente. Dies macht sich auch bezahlt, wenn man bedenkt, dass die genannten Produkte auf verschiedenen Plattformen zur Verfügung stehen, und somit ein problemloser Datenaustausch gewährleistet ist.

Ein Missverständnis ist aber gerade am Anfang der XML-Euphorie häufig aufgetaucht: "XML, das neue HTML." So stimmt das nicht. XML soll nicht HTML ersetzen. Die aktuellen Browser können zwar XML-Seiten anzeigen, aber das ist nur der Quellcode in strukturierter Form. Für die üblichen Webseiten wird man weiter auf HTML oder - wie wir im nächsten Absatz erfahren werden - auf XHTML bauen. XML dient hauptsächlich zum Informationsaustausch oder als Basis für weitere Standards und Dateiformate. Weiters ist es relativ einfach möglich, aus XML-Dokumenten HTML-Dokumente für die Ansicht im Browser zu erzeugen. [Berners-Lee 2000, Kapitel: mind to mind]

XHTML

Ein weiteres Problem von HTML ist, dass es sehr viele Freiräume bei der Codierung erlaubt. Dies und der Umstand, dass viele Browserhersteller ihre Produkte möglichst fehlertolerant gemacht hatten, führte dazu, dass sehr viele fehlerhafte Webseiten entstanden. Diese können dann beispielsweise bei zwei Browsern korrekt funktionieren, aber beim dritten nicht mehr. Daher entwickelte das W3C XHTML. Die erste Version der XHTML 1.0-Empfehlung14, wurde im Jänner 2000 herausgebracht. XHTML 1.0 ist ein XML kompatibles Dokument-Format, das auf die letzte gültige HTML-Empfehlung HTML 4.01 aufbaut. Da ein XHTML-Dokument ein XML-Dokument ist, kann die Korrektheit sehr einfach mit den gängigen XML-Werkzeugen überprüft werden. Seit August 2002 gibt es eine überarbeitete Version von XHTML 1.0. An XHTML 2.0 wird gerade gearbeitet. [W3C-XHTML 2002]



6Peer engl. f. Ebenbürtiger, Gleicher

7Es ist zu beachten, dass XML primär nicht dazu dienen soll, die Präsentation eines Dokuments festzulegen. Vielmehr soll es den Teilen eines Dokuments eine "Bedeutung" geben. Wie wir später hören werden, dienen zur Festlegung der Präsentation so genannte Stylesheets.

8"Werkzeug" ist hier die Übersetzung des englischen Begriffs "Tool". Dieser wird oft für Computerprogramme verwendet, die alleine eingesetzt keinen Nutzen hätten, aber von anderen Programme verwendet werden. Oder auch für Programme, die nur eine ganz bestimmte und abgegrenzte Aufgabe erledigen. Man könnte "Tool" oft auch mit "Hilfsprogramm" übersetzen.

9Tim Berners-Lee ist mittlerweile Direktor des World Wide Web Consortium (W3C), das Standards für die Architekturen und Protokolle des World Wide Webs entwickelt.

10Weitere Definitionen findet man beispielsweise hier: Was ist Hypertext, The Electronic Labyrinth

11Tatächlich war erst HTML 2.0, das im November 1995 verabschiedet wurde, eine standardgemäße SGML-Anwendung. [Behme 2000]

12Wie wir später erfahren werden, gibt es mit XML eine Möglichkeit aus einem XML-Dokument automatisch sowohl ein HTML, als auch ein PDF-Dokument erstellen zu können.

13Entwürfe, die das W3C entwickelt, werden als "Working Draft" bezeichnet. Einen Überblick über die Art der Dokumente, die das W3C herausbringt, gibt es unter [W3C-Process 2001, Kapitel 5 Technical Reports].

14Die Dokumente, die das W3C publiziert, werden nicht als Standards sondern als Empfehlungen ("Recommendations") bezeichnet. Standards können nur von Organisationen, die von Regierungen autorisiert worden sind, herausgebracht werden. [Kay 2001, S. 27] Trotzdem wird in diesem Zusammenhang oft von Standards gesprochen. Einen Überblick über die Art der Dokumente, die das W3C herausbringt, gibt es unter [W3C-Process 2001, Kapitel 5 Technical Reports].

Nächstes Kapitel >>
Zum Seitenanfang diplomarbeit_o a-t schmiderer d-o-t cc2003-04-25