Sie sind auf Seite 1von 118

Publizieren im

Internet
HTML, Java und noch mehr ... ?

Copyright 1996 by Bernd Schtze, Dsseldorf

Statt eines

Vorwort(es)

Das man in der Medizin bzw. in der medizinischen Forschung das geistige Eigentum (mehr oder
weniger) freiwillig miteinander teilt, kannte ich aus mehreren Studien- und Profektarbeiten. Ebenso
war es bei Doktorarbeiten blich, da Konzept vorhandener Arbeiten
- mglichst vom selben Doktor-Vater - neu zu berdenken und mit den notwendigsten Vernderungen
zu bernehmen getreu nach dem Motto:
Nicht alles Alte ist schlecht,
nicht alles Neue ist gut.
Wie erfreut war ich, da ich denn whrend des Studiums der Informatik an meiner Hochschule lernte,
da nur dumme Studenten das Rad neu erfinden wollen. Denn:Man greife stets auf vorhandenes
zurck und modifiziere es fr den eigenen Gebrauch, denn dies ist effektiv.
Nun bin ich kein besonders folgsamer Student, welcher immer alles vom Dozenten bzw. von der
Dozentin gesagte wortgetreu befolgt. Die schlichte Logik der obigen Aussagen konnte selbst mein
einfach strukturiertes Gehirn begreifen.
So ist aus mir vielleicht immer noch kein guter Programmierer geworden, jedoch ein recht passabler
Kopierer, vielleicht werde ich so sogar noch Informatiker ?
Der langen Rede kurzer Sinn:
Vieles hier geschriebene ist auch von anderen - und vielleicht besseren - Personen verffentlicht
worden, nur leider nicht in der Zusammenstellung, wie ich sie brauchte. Daraus folgt, da diese
Zusammenstellung auf meine Bedrfnisse ausgelegt ist und andere vieles vielleicht anders (besser ?)
kombinieren wrden.
Fr Anregungen und Verbesserungsvorschlge bin ich immer dankbar:
Bernd Schtze
E-Mail: BeSchue@aol.com

II

Inhaltsverzeichnis
Inhaltsverzeichnis
Vorberlegungen
A. Webserver
B. Uniform Ressource Locator (URL)
C. Home-Pages
1. Grundelemente
1.1 Tags
1.2 Gerst eines Dokuments
1.2.1 HEAD
1.2.2 BODY
1.3 Meta-Informationen
1.3.1 Dokumenttyp
1.3.2 ISINDEX-Element
1.3.3 META-Element
1.4 Dokumentstrukturen
1.4.1 Titel
1.4.2 Banner
1.4.3 berschrift
1.4.4 Paragraph
1.4.5 Zeilenumbruch
1.4.6 Horizontale Linien
1.4.7 Adresse
1.4.8 Kommentar
1.5 HTML-Maske
1.6 Textstruktur
1.6.1 Listen
1.6.1.1 Ungeordnete Liste
1.6.1.2 Geordnete Liste
1.6.1.3 Definitionsliste
1.6.1.4 Men
1.6.2 Texthervorhebungen
1.6.3 Sonderzeichen
1.7 Hypertext-Links
1.7.1 Hypertext-Anker
1.7.1.1 Hypertext-Link zu einem Dokument
1.7.1.2 Hypertext-Link zu einer Textstelle im selben Dokument
1.7.1.3 Hypertext-Links auf Textstellen im anderen Dokument
1.7.2 Relativ oder absolut
1.7.3 Adressierung durch <BASE>
1.7.4 Die Direktive LINK
2. Multimedia
2.1 Mime
2.2 Multimedia-Links
2.2.1 Grafikformate
2.2.2 Videoformate
2.2.3 Audioformate
2.3 Die IMG-Umgebung
2.4 Die FIG-Umgebung

2
6
6
6
6
7
7
8
8
8
10
10
10
11
11
11
12
12
12
12
12
13
13
14
14
14
15
15
16
17
17
19
21
21
21
21
22
22
22
22
24
24
25
26
26
27
27
29

3 Weiterfhrende Elemente
3.1 Formulare
3.1.1 Das FORM-Element
3.1.2 INPUT-Felder
3.1.3 Mehrzeilige Eingabe
3.1.4 Men
3.2 Aktive Grafiken
4. HTML3-Erweiterungen
4.1 Tabellen
4.1.1 Attribute der TABLE-Umgebung
4.1.2 Formatierung einer Tabellenreihe
4.1.3 Formatierung des Zelleninhaltes
4.2 Schrift
4.2.1Schriftfarben
4.2.2 Schriftarten
4.3 Absatz- oder Textausrichtung
4.4 Mathematische Formeln
4.4.1 Box
4.4.2 Indizes und Exponenten
4.4.3 <ABOVE> und <BELOW>
4.4.4 Text
4.4.5 Wurzelzeichen
4.4.6 Mathematische Akzente
4.4.7 Fonts
4.4.8 Matrizen und Felder
4.5 Die STYLE-Umgebung
4.5.1 Style-Sheet Definition
4.5.2 Klassen eines HTML-Elements
4.5.3 Schema der Style-Sheet-Angaben
4.5.4 Bedingte Gltigkeit von Style-Sheet-Angaben
4.5.5 Style-Sheet-Angaben fr Schrift
4.5.6 Style-Sheet-Angaben fr Text
4.5.7 Style-Sheet-Angaben fr Abstze
4.5.8 Style-Sheet-Angaben fr Listen
4.6 Frames
4.6.1 Frame-Sets definieren
4.6.2 Eigenschaften von Frames definieren
4.6.3 Mindestabstnde zwischen Fensterrand und Fensterinhalt
4.6.4 Unvernderbare Fenstergre
4.6.5 Namen von Frames definieren
4.6.6 Verweise zu Frames notieren

30
30
31
31
34
34
35
39
39
40
41
41
41
41
42
42
43
44
45
46
46
46
47
47
47
48
48
49
49
50
50
50
51
51
51
52
53
53
53
54
54

5. Server
5.1 Server Software
5.2 Installation
5.3 Konfiguration
5.4 Dynamische Dokumente - CGI
5.4.1 Methoden der Datenbergabe
5.4.2 Ausgabe von CGI-Scripten
5.4.3 Das Schreiben von CGI-Scripten
5.4.3.1 Die UNIX-Bourne-Shell
5.4.3.2 Die Grundlagen der Bourne-Shell
5.4.3.3 Shell-Prompt
5.4.3.4 Meta-Zeichen
5.4.3.5 Shell-Pipelines
5.4.3.6 Kommandoparameter
5.4.3.7 Das Modifizieren von Ein-/Ausgabe
5.4.3.8 Shell-Variablen
5.4.3.9 Die Umgebung
5.4.3.10 Befehlssubstitution
5.4.3.11 Pfadnamen-Substitution
5.4.3.12 Asynchrone (Hintergrund-) Tasks
5.4.3.13 Die Programmierung der Bourne-Shell
5.4.3.14 Kommentare
5.4.3.15 Positionale Parameter
5.4.3.16 Exit-Status-Codes
5.4.3.17 Das Statement for
5.4.3.18 Das Statement case
5.4.3.19 Das Statement if
5.4.3.20 Das Statement while
5.4.3.21 Die wichtigsten UNIX-Kommandos in der bersicht
5.4.3.22 Beispiel fr ein Script
5.4.4 Das Bearbeiten von Formularen
5.4.5 Index-Suche
5.4.6 Server Side Includes
5.5 Web-Server fr Windows 3.1: WinHTTP
6. JAVASCRIPT
6.1 Einleitung
6.2 Grundlagen
6.3 JavaScript verstecken
6.4 Funktionen
6.5 Objekthierarchie
6.6 Evant Handler
6.7 Das if-Statement
6.8 Formulare
6.8.1 Berechnungen in Formularen
6.9 Kurzer Vergleich: Java versus C++
6.10 Troubleshooting
7. TCP/IP
7.1 bersicht ber TCP/IP
7.2 TCP/IP und das Internet
7.3 Ein Modell zur Datenkommunikation
7.4 Die Protokollarchitektur von TCP/IP
7.5 Die Netzzugangsschicht
7.6 Die Internet-Schicht
7.7 Die Transportschicht
7.8 Die Anwendungsschicht (Application Layer)
7.9 Fehlersuche in TCP/IP

55
55
56
57
57
58
59
59
60
60
61
62
62
63
63
64
65
65
65
66
67
67
67
68
68
69
70
71
72
73
74
74
74
75
77
77
77
77
78
79
80
81
83
83
85
85
87
87
87
89
91
91
92
95
97
98

8. Kurzreferenz
8.1 Notation
8.2 Kompatibilitt
8.3 Dokumentstruktur
8.4 Kommentare
8.5 HEAD-Elemente
8.6 berschriften
8.7 Listen
8.8 Blockformat-Elemente
8.9 Texthervorhebungen
8.10 Dokumentteiler
8.11 Hintergrund und Farben
8.12 Links
8.13 inline images
8.14 Formulare
8.15 Tabelle 3.0
8.16 Figure-Umgebung
8.17 Frames
8.18 Verweis-sensitive Grafiken 3.0
8.19 Multimedia und Fremdprogramme 3.0
8.20 Java-Applets 3.0
8.21 OLE-Objekte (Windows)
8.22 Sonderzeichen
9. Glossar
10. Literatur
10.1 Bcher
10.2 Artikel
10.3. Quellen des Internet

100
100
100
100
100
101
101
101
102
102
103
103
104
104
105
106
107
107
108
109
109
109
109
110
115
115
115
115

Vorberlegungen
A. Webserver
Um Dokumente im Web zu verffentlichen bentigt man einen Server, der die Dokumente und
Medien zu den Browsern schickt, die sie anfordern.
Ein Webserver verwendet das HTTP-Protokoll, um auf Anforderungen von Dateien durch WebBrowser zu lauschen. Dann liefert er die Dateien und die dazugehrigen Medien. Webserver knnen
auch dazu eingerichtet werden, weitere Kommandos zu verarbeiten, die vom Browser
zurckgemeldet werden, so z.B. bei Formularen.
Obgleich ein Groteil der Server-Technologie auf die UNIX-Seite konzentriert ist, gibt es Server fr
alle Betriebssysteme.

B. Uniform Ressource Locator (URL)


Ein URL ( zu deutsch etwa gleichfrmiger Quellen-Lokalisierer) ist ein Zeiger auf einige Daten im
Web, sei es ein Webdokument, eine Datei in FTP oder Gopher, ein Posting im Usenet oder ein
Datensatz in einer Datenbank.
URL bietet eine universelle, konsistente Methode fr das Auffinden von und Zugreifen auf
Informationen.
URLs werden auch benutzt, um in einem Dokument eine Hypertext-Verbindung zu einem anderen
Dokument herzustellen.
URLs enthalten Angaben darber, wie an die Informationen, auf die sie zeigen, zu kommen ist: etwa
welches Protokoll: FTP, Gopher, HTTP, ...; den Internet-Hostnamen, auf welchem die Suche
gestartet wird oder auch das Verzeichnis bzw. die Lokalitt auf diesem System.

C. Home-Pages
Die Home-Page eines Web-Browsers ist jene Webseite, die geladen wird, wenn der Browser gestartet
wird.
Die zweite Anwendung einer Home-Page ist fr Leute, die Informationen im Web verffentlichen. Fr
den Anbieter von Informationen im Web ist die Home-Page die Einstiegs-Stelle seiner Besucher in
den Inhalt der Informationsseiten, welche er im Web anbietet.

1. Grundelemente
1.1 Tags
Ein HTML-Dokument enthlt neben normalen Text auch Anweisungen, die einen Browser
informieren, wie bestimmte Teile des Dokuments behandelt werden sollen. Strenggenommen soll
durch HTML eigentlich nur die Gliederung vorgenommen werden, die Formatierung und das
Aussehen des Dokuments bezglich der Schrifttypen, des Schriftsatzes und des Textumbruch wird im
allgemeinen dem Browser berlassen und hngt somit von dessen Darstellungseigenschaften ab.
Entfernt man die Steuerelemente aus einem HTML-Dokument, stellt der Browser den Inhalt ohne
jede Struktur als fortlaufenden, zusammenhngenden Text in einem vom Browser vorgegebenen
Font dar. Die notwendigen Zeilenumbrche richtet der Browser nach der jeweiligen Breite des
Browser-Fensters aus. Es spielt also keine Rolle, wo in der zugrundeliegenden Datei eine Zeile
umgebrochen wurde, Leerzeilen eingefhrt oder berschriften vom restlichen Text abgesetzt
eingegeben wurden.
Mchte man hingegen haben, da der Browser die Struktur-Merkmale des Textes darstellt, mu man
diese im Dokument durch entsprechende Steuerbefehle markieren. Diese Steuerbefehle werden in
HTML als Elemente bezeichnet und in spitze Klammern eingeschlossen, um sie vom brigen Text
abzuheben. Da diese Objekte dazu dienen, Textstellen zu markieren, werden sie auch einfach als
Tags (tag = engl. Marke) bezeichnet.
Ein Tag ist also ein Steuerelement, das durch die kleiner als(<) Klammer geffnet und durch die
grer als(>) Klammer geschlossen wird. Seinen Namen erhlt der Tag durch den Elementnamen,
der ohne Leerzeichen der ffnungsklammer folgt und das eigentliche Steuerelement der
Textformatierung darstellt.
HTML kennt zwei Formen von Steuerelementen:
1. Leere Tags

<Elementname>

2. Container-Tags

<Elementname> Teil des Dokuments </Elementname>

Leere Tags sind Steuerelemente, die ein Browser sofort und ohne Rcksicht auf etwaige folgende
Steuerelemente ausfhren kann, wie z.B. Zeilenumbrche. Ein typischen Beispiel fr einen leeren
Tag ist daher auch <BR>, der im Text einen Zeilenumbruch erzwingt,
Container-Tags treten immer paarig auf mit einem Start-Tag (<Elementname>) und einem End-Tag
(</Elementname>). Bis auf den zustzlichen /sind beide Tags identisch. Container-Tags schlieen
immer Teile des Dokuments ein und erzeugen somit eine Umgebung, die den zu formatierenden Text
umklammert. Diese knnen selbst wieder Tags enthalten.
Die meisten Tags knnen Parameter enthalten, die die Funktionsweise der Steuerbefehle
beeinflussen und als Attribute bezeichnet werden.
Ein Attribut besteht aus einem Attribut-Namen, gefolgt von einem Gleichheitszeichen und einem
zugeordneten Wert.
Vor und hinter dem Gleichheitszeichen sind Leerstellen erlaubt. Der Wert wird in einfachen () oder
doppelten () Anfhrungszeichen eingeschlossen. Enthlt ein Tag mehr als ein Attribut, so werden
diese durch Leerzeichen voneinander getrennt.
Die vollstndige Syntax fr Tags lautet somit:
<Elementname Attribut1=Wert1 Attribut2=Wert2> Teil des Dokuments </Elementname>

1.2 Gerst eines Dokuments


Die oberste Ebene bei der Strukturierung eines HTML-Dokuments ist durch die folgenden Tags
gegeben:
<HTML> umklammert das gesamte Dokument </HTML>
<HEAD> umklammert den Kopfteil des Dokuments </HEAD>
<BODY> umklammert den Rumpf des Dokuments </BODY>
Das erste Paar (<HTML> ... </HTML>) sollte das gesamte Dokument einschlieen und somit als
HTML-Dokument markieren.
Natrlich mssen diese Markierungen entsprechend ineinander verschachtelt werden. Die
Grundstruktur fr ein HTML-Dokument sieht daher folgendermaen aus:
<HTML>
<HEAD>
Text und Elemente des Kopfteils
</HEAD>
<BODY>
Text und Elemente des Dokuments
</BODY>
</HEAD>

1.2.1 HEAD
Die <HEAD>-Umklammerung enthlt die Teile des Dokuments, die zur Identifizierung des Dokuments
dienen, wie zum Beispiel den Titel des Dokuments, der von jedem Browser beim Laden angezeigt
wird.
Vor allem sogenannte Meta-Informationen, die vom Browser nicht dargestellt werden, aber zur
Identifikation und Klassifizierung der Dokumente genutzt werden, finden hier ihren Platz. Folgende
Tags drfen innerhalb der HEAD-Umgebung auftreten:
<BASE>
<ISINDEX>
<LINK>
<TITLE>
<NEXTID>

1.2.2 BODY
In die <BODY>-Umgebung gehrt schlielich der Rest des Dokuments, also der eigentliche Inhalt mit
Text, Bildern, Formularen und Steuerelementen zur Formatierung des Textes.
BACKGROUND: Durch Angabe einer Grafikdatei im gif- oder jpg-Format kann dem Dokument ein
Hintergrundmuster unterlegt werden. Die Syntax ist:
<BODY BACKGROUND=URL>,
wobei URL fr den Pfad und Namen der zu verwendenden Grafikdatei steht.
TEXT: Dieses Attribut dient der Spezifikation der Farbe, die fr den Text des Dokuments
verwendet werden soll. Die Syntax ist:
<BODY TEXT=xyz>
und xyz steht die hexadezimale Kodierung der gewnschten Farbe nach dem RGB-Modell.

LINK: Dieses Attribut dient der Spezifikation der Farbe, die fr Verweise, d.h. Hyperlinks des
Dokuments verwendet werden soll. Die Syntax ist:
<BODY LINK=xyz>
und xyz steht die hexadezimale Kodierung der gewnschten Farbe nach dem RGB-Modell.
VLINK: Dieses Attribut dient der Spezifikation der Farbe, die fr Verweise zu besuchten Zielen
verwendet werden soll. Die Syntax ist:
<BODY VLINK=xyz>
und xyz steht die hexadezimale Kodierung der gewnschten Farbe nach dem RGB-Modell.
ALINK: Dieses Attribut dient der Spezifikation der Farbe, die beim Anklicken von Verweise
verwendet werden soll. Die Syntax ist:
<BODY ALINK=xyz>
und xyz steht die hexadezimale Kodierung der gewnschten Farbe nach dem RGB-Modell.
BGCOLOR: Mit dem Attribut BGCOLOR kann man die Hintergrundfarbe fr ein Dokument
festlegen. Die Syntax ist:
<BODY BGCOLOR=#xyz>
Hierbei bezeichnet xyz die hexadezimale Kodierung der gewnschten Farbe nach dem RGBModell.
Hier die Kodierung fr 16, bzw. 256 Farben:

ID: Eine Marke, die als Ziel fr Hypertext-Links dient oder bestimmte Elemente des Dokuments
mit sogenannten Style-Sheets verknpft. Diese Style-Sheets sollen fr eine weitere Kontrolle des
Layouts dienen und werden im Kapitel HTML-Erweiterungen erlutert.
LANG: Wird zur Auswahl von nationalen, sprachspezifischen Ligaturen und Eigenheiten benutzt.
CLASS: Dient der Verknpfung einzelner Textelemente mit Style-Sheets.

1.3 Meta-Informationen
Mit Hilfe von Meta-Informationen erhlt der Browser Informationen ber die Form der Daten, die vom
Server verschickt werden, ber den Dokumenttyp des angeforderten Dokuments oder ob das
Dokument eine Stichwortsuche erlaubt.

1.3.1 Dokumenttyp
Die DOCTYPE-Direktive, die am Anfang eines HTML-Dokuments eingefgt werden sollte, dient dazu,
die Dokumenttypdefinition aus dem Dokument selbst heraus aufzurufen.
Fr HTML 3.0 hat sie die Form
<!DOCTYPE HTML PUBLIC -//W30//DTD W3 HTML 3.0//EN>

1.3.2 ISINDEX-Element
Das ISINDEX-Element informiert den Browser, da das empfangene Dokument nach Stichworten
durchsucht werden kann. Fordert man ein solcherart markiertes Dokument an, stellt der Browser
Eingabefenster zur Verfgung, in das der Benutzer einen Suchbegriff eintragen kann, aber nicht mu.
Die Suche selbst wird nicht vom Browser, sondern vom Server durchgefhrt, nachdem man ihm die
bentigte Suchinformation bermittelt hat.
Man sollte beachten, da die reine Angabe des <ISINDEX>-Tags in einem HTML-Dokument noch
keine Stichwortsuche ermglicht, wenn der Server nicht ber einen Suchmechanismus verfgt.
Die Syntax fr die Verwendung des ISINDEX-Elementes lautet:
<ISINDEX>
Im Rahmen von HTML 3.0 kann eine Eingabeanweisung mit Hilfe des Attributs PROMPT vorgegeben
werden:
<ISINDEX PROMPT=Bitte Eingabe eingeben>
Mit der Angabe href= "(Dateiname)" geben Sie die Datei an, die die Information fr Suchanfragen
enthlt. Der Verweis auf die Datei folgt den gleichen Regeln wie Verweise zu anderen Dateien durch
Benutzung des A-Elementes (davon spter mehr). Die Syntax lautet dann:
<isindex href="texte.idx">

10

1.3.3 META-Element
Das Element META ist ein Sammelbecken fr alle Meta-Informationen, die im HEAD des
Dokumentes ihren Platz haben, aber keinen entsprechenden HTML-Tag zugewiesen werden knnen.
Meta-Informationen dienen im allgemeinen dazu, dem Browser nicht darstellbare Informationen zum
Zwecke der Identifikation, Indizierung und Katalogisierung von Dokumenten zu bergeben.
Allerdings sollte man keine Information mit META markieren, die nicht schon vom Server
eigenstndig erzeugt wird.
Der Meta-Befehl kennt drei Attribute:
NAME: weist dem Informationsinhalt einen Namen zu
CONTENT: weist dem Informationsinhalt einen Inhalt zu
HTTP-EQUIV: analog wie Name
Eine Verwendung von Meta-Elementen kann wie folgt aussehen:
<META NAME="AUTHOR" CONTENT="Bernd Schtze">
<META HTTP-EQUIV="OPERATOR" CONTENT="Bernd Schtze">
Mit dem HTML-Tag <meta http-equiv="Refresh" ... > und der in dem unteren Beispiel verwendeten
Syntax knnen Sie erzwingen, da nach einer anzugebenden Zeit automatisch die nchste, ebenfalls
anzugebende Datei aufgerufen wird.
Mit der Zusatzangabe content="6; bestimmen Sie die Anzeigedauer der Datei in Sekunden. Die 6 im
Beispiel bedeutet also, da die Datei 6 Sekunden lang angezeigt wird. Danach wird die nchste Datei
aufgerufen, die mit url=..." spezifiziert wird.
<html>
<head>
<title>1. Datei der Dia-Show</title>
<meta http-equiv="Refresh" content="7; url=dat1.htm">
</head>
<body>
berschriften, Text, Verweise, Grafikreferenzen usw.
</body>
</html>

1.4 Dokumentstrukturen

1.4.1 Titel
Ein Dokument sollte mit einem aussagekrftigen Titel versehen sein. Die meisten Browser zeigen den
Titel in der Kopfzeile des Fensters an.
Markiert wird der Titel mit Hilfe des Tag-Paares
<TITLE>Titel</TITEL>
und mu im Kopfteil des Dokuments innerhalb der HEAD-Umgebung stehen.
Ein Dokument darf nur einen Titel mit maximal 64 Zeichen enthalten.
Bei der Wahl eines Titels sollte man bedenken, da er eine Eigenschaft des gesamten Dokuments
treffend und umfassend identifizieren sollte. Titel wie Einfhrung oder Einleitung sind dafr nicht
sonderlich geeignet.

11

1.4.2 Banner
Mit Hilfe dieses Elements kann man Text oder Grafik in ein Dokument einbinden, so da dieser Text
bzw. diese Grafik im Fenster des Browsers an einer gegebenen Stelle fixiert wird.
So kann z.B. ein Logo, welches immer sichtbar sein soll, in ein Dokument eingebunden werden.

1.4.3 berschrift
Als wichtiges Hilfsmittel zur Dokument-Strukturierung stehen sechs verschiedene Ebenen von
berschriften zur Verfgung. Diese werden markiert durch die Tag-Paare:
<H1>berschrift der Ebene 1</H1>
<H2>berschrift der Ebene 2</H2>
<H3>berschrift der Ebene 3</H3>
<H4>berschrift der Ebene 4</H4>
<H5>berschrift der Ebene 5</H5>
<H6>berschrift der Ebene 6</H6>
berschriften erzeugen Paragraphen und werden im Browser umgebrochen, falls das DokumentFenster zu klein ist.

1.4.4 Paragraph
Will man, da der Browser einen Absatz erzeugt, mu man diesen ausdrcklich als solchen
markieren. Dazu dient der <P>-Tag.
Die Umgebung zur Erzeugung eines Abschnitts besteht aus einem Anfang- (<P>) und einem Endtag
(</P>), wobei der Endtag aber weggelassen werden kann.
Fr den HTML-Autor ist das ALIGN-Attribut sehr interessant, da es die horizontale Positionierung des
Paragraphen bestimmt. Die folgenden Werte knnen dem Attribut zugeordnet werden:
LEFT: Dies ist der Standard und setzt den Paragraphen linksbndig
RIGHT: Setzt den Paragraphen rechtsbndig
CENTER: zentriert den Paragraphen
Beispiele fr die verwendete Syntax:
<P ALIGN=CENTER> Dies ist ein zentrierter Paragraph</P>
<P ALIGN=RIGHT>Dies ist ein rechtsbndiger Paragraph</P>
<P>Dies ist ein linksbndiger Paragraph</P>

1.4.5 Zeilenumbruch
Ein Zeilenumbruch wird durch die Verwendung des <BR>-Tags erzwungen.
Hierzu ein Beispiel:
Dies ist die erste Zeile,<BR>
dies die zweite Zeile.<BR>

1.4.6 Horizontale Linien


der <HR>-Tag erzeugt eine horizontale Linie von der Breite des Textfensters des Browsers. Die Linie
wirft einen kleinen Schatten und erzeugt somit ein dreidimensionales Aussehen.
12

Es ist blich, mit diesem Element verschiedene Informationseinheiten eines Dokuments voneinander
abzusetzen.
Auch Formulare kann man hiermit attraktiver und bersichtliche gestalten.
Die Syntax lautet einfach:
<HR>
Einige Attribute, die hinzugefgt werden knnen, lauten:
SIZE: hiermit kann die Dicke der Linie in Pixel eingestellt werden
WIDTH: steuert die Lnge der Linie. Sie kann als absolute Gre in Pixel gegeben werden oder
als Prozentgre der Seitenbreite. Gibt man keine Gre an, wird standardmig die Seitenbreite
eingestellt.
ALIGN=LEFT|CENTER|RIGHT: wird zusammen mit WIDTH benutzt, wenn man eine Lnge
kleiner als die Seitenbreite angegeben hat. Die Linie kann links- rechtsbndig oder zentriert
ausgerichtet werden.
NOSHADE: hiermit kann man den Schatten abstellen und die Linie erscheint als ein Balken.
Beispiele:
<HR WIDTH=25% ALIGN=RIGHT>
<HR WIDTH=75% ALIGN=CENTER>
<HR WIDTH=10% ALIGN=LEFT NOSHADE>
<HR SIZE=12 NOSHADE>

1.4.7 Adresse
Sinnvoll ist es, ein Dokument durch den Namen des Autors und dessen Adresse zu kennzeichnen.
Denn sollte das Dokument einmal den Weg zu einem fremden Betrachter finden, wei dieser, wen er
im Bedarfsfall kontaktieren mu und auch wo.
Die Syntax fr die Adress-Umgebung lautet:
<ADDRESS>Name<BR>
E-Mail Adresse<BR>
...
</ADDRESS>
Der beste Platz fr die Adresse ist das Ende des Dokuments.
Einige Browser stellen den Inhalt des <ADDRESS>-Tags in einem speziellen Font und/oder einer
speziellen Gre dar.

1.4.8 Kommentar
Manchmal ist es sehr ntzlich, Kommentare in ein Dokument einzufgen, die nicht von einem
Browser dargestellt werden sollen.
Diese mssen in <! -- ... --> eingeschlossen werden und haben im allgemeinen die Form:
<!-- Kommentar -->
Der Browser ignoriert alles nach <!-- bis zum abschlieenden -->.
Dies hat zur Folge, da man Kommentare nicht ineinander verschachteln kann.

13

1.5 HTML-Maske
Da einige Elemente und Tags innerhalb eines Dokuments immer wieder auftreten, ist es sinnvoll, sich
eine Maske zu erzeugen.
Diese Maske knnte folgendermaen aussehen:
<!DOCTYPE HTML PUBLIC -//W30//DTD WWW HTML 3.0//EN>
<HTML>
<HEAD>
<TITLE>Meine Webseite</TITLE>
<META NAME="AUTHOR" CONTENT="Bernd Schtze">
<META HTTP-EQUIV="OPERATOR" CONTENT="Bernd Schtze">
</HEAD>
<!-- Hier kann ein Kommentar stehen -->
<BODY BGCOLOR=#FFFFFF VLINK=#FF0000 LINK=#FF0000 ALINK=#FF0000>
<H1><CENTER>Hier eine passende berschrift </CENTER></H1>
<P> Hier steht mein Text
... </P>
<HR>
<ADDRESS>
Bernd Schtze<BR>
E-Mail: BeSchue@aol.com<BR>
</ADDRESS>
</BODY>
</HTML>

1.6 Textstruktur
Im folgenden werden weitere Sprachelemente von HTML vorgestellt, die in den BODY des
Dokumentes gehren und der Textstrukturierung dienen.

1.6.1 Listen
HTML erlaubt die Formatierung einer Reihe verschiedener Typen von Listen. Diese sind nach
Elementnamen geordnet:
<UL> ... </UL>: ungeordnete oder nicht numerierte Liste
<OL> ... </OL>: geordnete oder numerierte Liste
<DL> ... </DL>: Definitionsliste
<DIR> ... </DIR>: Verzeichnisliste
<MENU> ... </MENU>: Menliste.
Listen knnen selbstverstndlich ineinander verschachtelt werden.

14

1.6.1.1 Ungeordnete Liste


Zur Formatierung von ungeordneten Listen steht der Tag <UL> zur Verfgung. Einzelne
Listenelemente werden durch einen vorangestellten <LI>-Tag markiert. Der End-Tag </LI> ist
optional und kann weggelassen werden.
Die Listeneintrge knnen beliebig lang sein und Grafiken, Hypertext-Links und wiederum Listen
enthalten.
Die meisten graphischen Browser kennzeichnen die einzelnen Listenelemente mit Hilfe von
ausgefllten Kreisen, die im englischen als bullets bezeichnet werden. Bei verschachtelten Listen
werden die untergeordneten Listen meistens durch leere Kreise und/oder leere Quadrate dargestellt.
Mit dem Attribut TYPE knnen die Markierungssymbole festgelegt werden:
CIRCLE: leerer Kreis
DISC: ausgefllter Kreis
SQUARE: ausgeflltes Quadrat
Beispiel:
<UL TYPE=SQUARE>
<LI>Teil 1</LI>
<UL TYPE=DISC>
<LI>Teil 2</LI>
<LI>Teil 3</LI>
</UL>
<LI>Teil 4</LI>
</UL>
sieht wie folgt aus:
n Teil 1
lTeil 2
lTeil 3
n Teil 4

1.6.1.2 Geordnete Liste


Geordnete Listen werden durch numerierte Listenelemente dargestellt. Wie bei der ungeordneten
Liste werden die einzelnen Listenelemente durch <LI> eingeleitet.
Auch hier knnen wieder Listen bis zu beliebiger Tiefe ineinander verschachtelt werden. Dabei
werden die Listen unterschiedlicher Stufen in der Hierarchie von einigen Browsern durch andere
Ziffern dargestellt.
Durch das Attribut TYPE knnen die Ziffern fr jede Stufe einzeln festgelegt werden:
1: arabische Ziffern, dies ist die Standardeinstellung
I: rmische Zahlen, Grobuchstaben
i: rmische Zahlen, Kleinbuchstaben
A: Grobuchstaben
a: Kleinbuchstaben
Beispiel fr eine verschachtelte geordnete Liste:
<OL TYPE=I>
<LI>Zeilenorientierte Browser</LI>
<OL TYPE=1>
<LI>UNIX</LI>
<OL TYPE=i>
<LI>LYNX</LI>
15

</OL>
<LI>DOS/WINDOWS</LI>
<OL TYPE=i>
<LI>DOSLYNX</LI>
</OL>
</OL>
<LI>Grafikorientierte Browser
<OL TYPE=1>
<LI>UNIX</LI>
<OL TYPE=i>
<LI>NETSCAPE</LI>
</OL>
<LI>DOS/WINDOWS</LI>
<OL TYPE=i>
<LI>Netscape</LI>
</OL>
</OL>
</OL>
sieht wie folgt aus:
I. Zeilenorientierte Browser
1. UNIX
i. LYNX
2. DOS/WINDOWS
i. DOSLYNX
II. Grafikorientierte Browser
1. UNIX
i. NETSCAPE
2. DOS/WINDOWS
i. Netscape
Mosaic verwendet hingegen nur arabische Ziffern, d.h. Mosaic ignoriert die Attribute. Bei Mosaic sieht
obige Liste wie folgt aus.
1. Zeilenorientierte Browser
i. UNIX
a. LYNX
ii. DOS/WINDOWS
a. DOSLYNX
2. Grafikorientierte Browser
i. UNIX
a. NETSCAPE
ii. DOS/WINDOWS
a. Netscape

1.6.1.3 Definitionsliste
Definitionslisten sind zur Darstellung von Begriffen und deren Definitionen in Listenform gedacht.
Im Gegensatz zu den vorhergehenden Listentypen werden die einzelnen Listenelementen durch
einen Terminus-Eintrag und separaten Definitionseintrag gegeben. Der Terminus wird durch den Tag
<DT> und die entsprechende Definition <DD> eingeleitet.
Es ist mglich, mehrere Termini einer Definition zuzuordnen. Damit eignet sich diese Listenform sehr
gut zur Darstellung eines Glossars.
Der <DL>-Tag kann das Attribut COMPACT mit sich fhren. Dies bewirkt, da der Browser den
Zwischenraum zwischen den einzelnen Listenelementen minimiert, also kompakter darstellt.
Die Verwendung ist wie folgt:
<DL COMPACT>
<DT>Punkt 1
<DD>Definition zu Punkt 1</DD>
</DT>
<DT>Punkt 2
<DD>Definition zu Punkt 2</DD>
16

<DD>Auch dies ist eine Definition zu Punkt 2</DD>


<DT>

1.6.1.4 Men
Verzeichnis- und Menlisten sind Sonderformen der ungeordneten Liste. Beide Listen werden oft
verwendet, um Hypertext-Links in Form eines Mens darzustellen.
Die Darstellungsform hngt vom Browser ab: Einige setzten bullets vor die Listenelemente, andere
wiederum lassen Markierungszeichen ganz weg.
Ein Beispiel fr beide Listenformen:
<MENU>
<LI>Kapitel 1</LI>
<LI>Kapitel 2</LI>
<LI>Kapitel 3</LI>
</MENU>
<DIR>
<LI>Kapitel 1</LI>
<LI>Kapitel 2</LI>
<LI>Kapitel 3</LI>
</DIR>
Netscape markiert beide Listen mit bullets, das Ergebnis sieht wie folgt aus:
l Kapitel 1
l Kapitel 2
l Kapitel 3
l Kapitel 1
l Kapitel 2
l Kapitel 3

1.6.2 Texthervorhebungen
Zum Zwecke der Hervorhebung spezieller Textstellen kennt HTML eine ganze Reihe verschiedener
Auszeichnungselemente.
Diese werden in ihrer Wirkung in logische und visuelle Markierungen unterteilt. Beide Formen werden
durch einen Start-Tag eingeleitet und durch einen End-Tag abgeschlossen.
Browser brechen den so markierten Text selbstndig um.
Als logische Elemente gelten:
<ABREV>...</ABREV>: Zeichnet eine Abkrzung aus.
<ACRONYM>...</ACRONYM>: Kennzeichnet ein Akronym.
<CITE>...</CITE>: Dieses Element sollte zum Hervorheben von kurzen Zitaten benutzt werden.
Die markierte Textstelle wird oft durch Italics dargestellt.
<CODE>...</CODE>: Hiermit knnen Beispiele eines Computercodes zur Darstellung gebracht
werden. Als Font wird Mono-spaced bei der Darstellung benutzt.
<DFN>...</DFN>: Dient zur Markierung von Textstellen, die als Definitionen gedacht sind.
<EM>...</EM>: Hervorhebende Schriftart; viele Browser benutzen hierfr Italics.
<KBD>...</KBD>: Hiermit kann Benutzern angezeigt werden, was er in die Tastatur zu tippen hat.
Das Krzel KBD steht fr das englische Wort Keyboard.
<PERSON>...</PERSON>: Kennzeichnet einen Personennamen.

17

<SAMP>...</SAMP>: Abgeleitet von dem Wort sample und formatiert den Text wie er eingegeben
wird.
<STRIKE>...</STRIKE>: Der markierte Text wird in der Mitte horizontal durchgestrichen.
<STRONG>...</STRONG>: Starke typographische Hervorhebung. Dieser Text wird meist in
Fettdruck dargestellt.
<VAR>...</VAR>: Namen von Variablen knnen mit Hilfe dieser Markierung vom brigen Text
abgesetzt werden
Als visuelle Markierungselemente gelten:
<B>...</B>: Der markierte Text wird in Fettdruck dargestellt.
<I>...</I>: Der markierte Text wird in Italics dargestellt.
<TT>...</TT>: Der Elementname TT steht fr tele type. Nach Mglichkeit sollte der markierte Text
vom Browser durch einen typewriter-Font dargestellt werden.
<U>...</U>: Der markierte Text wird unterstrichen. Bei der Benutzung der Unterstreichung sollte
man Vorsicht walten lassen, da die derartig markierten Textstellen leicht mit Hyperlinks
verwechselt werden knnen. Am besten benutzt man dieses Element gar nicht.
<BLINK>...</BLINK>: Der markierte Text erscheint blinkend.
Die logischen Elemente sind den visuellen vorzuziehen, da jeder Browser diese relativ zum restlichen
Text des Dokuments interpretiert. Die visuellen Elemente werden immer absolut interpretiert, und das
Ergebnis mu nicht immer dem entsprechen, was man sich vorgestellt hat.
Die Entwickler des Netscape-Browsers haben fr das Textlayout noch einige Elemente hinzugefgt,
die von einigen anderen Browsern nicht dargestellt werden knnen:
<NOBR>...</NOBR>: Der Text innerhalb des Elements wird ohne Zeilenumbruch dargestellt.
<WBR>: Wird innerhalb der NOBR-Umgebung bentigt, um dem Browser mitzuteilen, wo er
gegebenenfalls einen Zeilenumbruch durchfhren knnte.
<FONT SIZE=..>...</FONT>: Mit dem Attribut SIZE kann dem Browser eine Fontgre
vorgegeben werden. Die Werte fr SIZE liegen im Bereich zwischen 1 und 7, mit 3 als
Standardvorgabe. Wird ein Plus- oder Minuszeichen vor die Zahl gesetzt, wird die Fontgre
relativ zum Basisfont kleiner (-) oder grer (+) dargestellt.
Beispiele:
<FONT SIZE=+4>Text</FONT>
<FONT>Beispiel</FONT>
<BASEFONT SIZE=..>: Spezifiziert die Gre des Basisfonts mit Hilfe des Attributs SIZE, dem
die Werte 1 bis 7 zugewiesen werden knnen, der Standardwert ist wieder drei.
<CENTER>...</CENTER>: Der gesamte Text wird zentriert dargestellt.
Mit HTML 3.0 kamen einige Erweiterungen hinzu:
<S>...</S>: Der markierte Text wird durchgestrichen.
<BIG>...</BIG>: Der markierte Text wird in groer Schrift gesetzt.
<SMALL>...</SMALL>: Der markierte Text wird in kleiner Schrift gesetzt.
<SUB>...</SUB>: Der markierte Text wird tiefer und in kleiner Schrift dargestellt.
<SUP>...</SUP>: Der markierte Text wird hher und in kleiner Schrift dargestellt.
Unformatierter Text:
Hufiger als gewnscht kann es vorkommen, da die darzustellende Information kritisch von dem
Layout abhngt, wie z.B. bei Programm-Listings oder kleinen Tabellen. Hier hilft meistens nur noch
das <PRE>-Tag.
Mit dem <PRE>-element wird jegliche Formatierung durch den Browser ausgeschaltet und der Text
18

so ausgegeben, wie er geschrieben ist.


Der Text wird im allgemeinen im typewriter-Font gesetzt. Hypertext-Links und -Anker sind innerhalb
der Umgebung erlaubt.
Der <PRE>-Tag kann das Attribut WIDTH enthalten, welches die Breite des darzustellenden Textes
in Anzahl der Zeichen angibt.
Die Syntax lautet:
<PRE>Text</PRE>
Zitate:
Das BLOCKQUOTE-Element wird hufig benutzt, um lngere Textpassagen aus anderen
Dokumenten zu zitieren.
Der Text wird markiert durch
<BLOCKQUOTE>...</BLOCKQUOTE>
Hierdurch wird automatisch ein neuer Paragraph erzeugt und der Text wird links- und rechtsbndig
eingerckt. Zwischen dem eingerckten Text und dem vorhergehenden bzw. folgenden Text wird
ober- und unterhalb zustzlicher vertikaler Zwischenraum eingefgt. Der eingerckte Text darf
beliebig lang sein, kann also auch ein oder mehrere Paragraphen enthalten.
Mit CREDIT kann man den Autor des Zitates innerhalb der BLOCKQUOTE-Umgebung benennen.
Die Syntax lautet:
<CREDIT>Name des Autors</CREDIT>

1.6.3 Sonderzeichen
Da HTML schon einige Zeichen als Steuerzeichen festgelegt hat, ist es offensichtlich, da diese im
Text nicht mehr verwendet werden drfen.
Will man diese dennoch benutzen, mu man sie durch Kodierungen ersetzen.
Der US-ASCII-Zeichensatz enthlt keine Umlaute oder Zeichen mit Akzenten, so da auch hierfr
Kodierungen erforderlich sind. In der folgenden Tabelle ist der erweiterte Zeichensatz und seine
HTML-Kodierung angegeben:
Deutsche Umlaute und scharfes S:
Ersetzen Sie das Zeichen durch die Zeichenfolge &auml; ersetzen Sie das Zeichen durch die
Zeichenfolge &Auml; ersetzen Sie das Zeichen durch die Zeichenfolge &ouml; ersetzen Sie das
Zeichen durch die Zeichenfolge &Ouml; ersetzen Sie das Zeichen durch die Zeichenfolge &uuml;
ersetzen Sie das Zeichen durch die Zeichenfolge &Uuml; ersetzen Sie das Zeichen durch die
Zeichenfolge &szlig.
Ab HTML 3.0 knnen Sie Leerzeichen und Bindestriche (Hyphen) kontrollieren:
Die Zeichenfolge &ensp; steht fr ein Leerzeichen von der Breite n.
Die Zeichenfolge &emsp; steht fr ein Leerzeichen von der Breite m.
Die Zeichenfolge &endash; steht fr ein Hyphen von der Breite n.
Die Zeichenfolge &emdash; steht fr ein Hyphen von der Breite m.
Sie knnen verhindern, da bei einem Leerzeichen ein automatischer Zeilenumbruch erfolgen kann.
Geben Sie anstelle eines normalen Leerzeichens die Zeichenfolge &nbsp; ein.
<
<
>
>
&
&

&#60;
&lt;
&#62;
&gt;
&#38
&amp;
&#34
&quot
&#128;
&#129;
&#130;
&#131;
&#132;
&#133;
&#134;

&#135;
&#136;
&#137;
&#138;
&#139;
&#140;
&#141;
&#142;
&#143;
&#144;
&#145;
&#146;
&#147;
&#148;
&#149;
&#150;
19

&#151;
&#152;
&#153;
&#154;
&#155;
&#156;
&#157;
&#158;
&#159;
&#160;
(erzwungenes Leerzeichen)

&#161;

&#162;

&#163;

&#164;

&#165;

&#166;
&#167;
&#168;
&#169;
&reg;
&#170;
&#171;
&#172;
&#173;
&#174;
&copy;
&#175;
&#176;
&#177;
&#178;
&#179;
&#180;
&#181;
&#182;
&#183;
&#184;
&#185;
&#186;
&#187;
&#188;
&#189;
&#190;
&#191;
&#192;
&Agrave;
&#193;
&Aacute;
&#194;
&Acirc;
&#195;
&Atilde;
&#196;
&Auml;
&#197;
&Aring;
&#198;
&Aelig;
&#199;
&Ccedil;
&#200;
&Egrave;
&#201;
&Eacute;
&#202;
&Ecirc;
&#203;
&Euml;

&#204;
&Igrave;
&#205;
&Iacute;
&#206;
&Icirc;
&#207;
&Iuml;
&#208;
&ETH;
&#209;
&Ntilde;
&#210;
&Ograve;
&#211;
&Oacute;
&#212;
&Ocirc;
&#213;
&Otilde;
&#214;
&Ouml;
&#215;
&#216;
&Oslash;
&#217;
&Ugrave;
&#218;
&Uacute;
&#219;
&Ucirc;
&#220;
&Uuml;
&#221;
&Yacute;
&#222;
&THORN;
&#223;
&szlig;
&#224;
&agrave;
&#225;
&aacute;
&#226;
&acirc;
&#227;
&atilde;
&#228;
&auml;
&#229;
&aring;
&#230;

20

&aelig;
&#231;
&ccedil;
&#232;
&egrave;
&#233;
&eacute;
&#234;
&ecirc;
&#235;
&euml;
&#236;
&igrave;
&#237;
&iacute;
&#238;
&icirc;
&#239;
&iuml;
&#240;
&eth;
&#241;
&ntilde;
&#242;
&ograve;
&#243;
&oacute;
&#244;
&ocirc;
&#245;
&otilde;
&#246;
&ouml;
&#247;
&#248;
&oslash;
&#249;
&ugrave;
&#250;
&uacute;
&#251;
&ucirc;
&#252;
&uuml;
&#253;
&yacute;
&#254;
&thorn;
&#255;
&yuml;

1.7 Hypertext-Links
Durch Hypertext-Links knnen andere Dokumente angefordert oder auf beliebige Textstellen
verzweigt werden.
Diese Dokumente knnen sich auf nahezu jedem beliebigen, dem Internet angeschlossenen Rechner
befinden und sie knnen in nahezu jedem beliebigen Dateiformat vorliegen.

1.7.1 Hypertext-Anker
Ein Hypertext-Link besteht aus einem Anfangs- und einem End-Tag, besitzt einen eigenen
Elementnamen und erlaubt die eindeutige Adressierung von Dokumenten oder Datenobjekten.

1.7.1.1 Hypertext-Link zu einem Dokument


Referenziert man in einem Dokument X ein Dokument Y, so mu man die folgende Syntax
verwenden:
<A HREF=URL des Dokuments Y>Text des Verweises</A>
Der Elementname A ist von dem englischen anchor (= Anker) abgeleitet. Das HREF-Attribut
initialisiert einen Hypertext-Link mit der URL des Dokuments Y als Wertzuweisung. Prinzipiell kann
jede mgliche Form eines URLs benutzt werden. Mgliche URL-Typen:
http:// = Adressierung von HTML-Dateien im WWW
ftp:// = Adressierung von Dateien auf FTP-Servern
telnet:// = Adressierung von Telnet-Servern
gopher:// = Adressierung von Dateien auf Gopher-Servern
news:// = Adressierung von Newsgroups im Usenet
mailto: = Adressierung von persnlichen E-Mail-Adressen
spezielle Verweistypen, z.B. Daten auf lokalen Rechnern (= auf dem Server)
Der Text innerhalb des A-Containers wird vom Browser farbig hervorgehoben und unterstrichen.
Durch Anklicken des markierten Textes wird der Browser veranlat, das entsprechende Dokument
anzufordern.
Ein Beispiel:
<A HREF=http://www.irgendwo.net/dokument.html>Dokument</A>
Der Text Dokument wird farbig hervorgehoben und durch Anklicken eine Anforderung von
dokument.html vom Server irgendwo.net initiiert. Das angeforderte Dokument wird vom Browser
geladen und dargestellt.

1.7.1.2 Hypertext-Link zu einer Textstelle im selben Dokument


Mglich ist auch die Referenzierung einer Textstelle im gleichen Dokument. In diesem Falle mu
man neben der Angabe der Referenz auch noch die Textstelle, die als Anker benutzt wird, markieren.
Dies geschieht mit Hilfe des gleichen Elementes A, aber statt dem Attribut HREF mu nun das
Attribut NAME verwendet werden.
Beispiel:
Mit
<A HREF=#beispiele>Hier finden sie weitere Beispiele</A>
wird auf eine Stelle im selben Dokument verwiesen, welche durch den Anker
21

<A NAME=beispiele>Weitere Beispiele</A>


markiert sein mu.

1.7.1.3 Hypertext-Links auf Textstellen im anderen Dokument


Schlielich kann man auch auf eine Textstelle in einem anderen Dokument verweisen.
Beispiel:
<A HREF=http://www.igendwo.net/dokument.html#beispiele>hier finden sie weitere
Beispiele</A>
Nach Anklicken des farbig markierten Textes hier finden sie weitere Beispiele wird auf eine
Textstelle in dem Dokument dokument.html auf dem Server irgendwo.net gesprungen, wenn diese
dort den Anker
<A NAME=beispiele>Weitere Beispiele</A>
markiert hat.

1.7.2 Relativ oder absolut


Bisher wurden immer die vollstndigen URLs bei der Referenzierung von Dokumenten angegeben.
Dies ist jedoch nicht immer notwendig.
Liegen zwei Dokumente in dem gleichen Verzeichnis und man will einen Link von A nach B anlegen,
mu nicht der vollstndige URL angegeben werden; es reicht nur den Namen des Dokuments B zu
verwenden. Dies bezeichnet man als relativen URL gegenber dem absoluten URL, der immer die
vollstndige Information enthlt.
Wenn immer ein Link zu einem anderen Rechner angelegt wird, mu man absolut referenzieren,
wenn man Links auf Dateien desselben Rechners legt, sollte man relative URLs benutzen.
Ebenso kann man relative URLs benutzen, um von einem Dokument A auf das Dokument home.html
zwei Verzeichnisebenen hher zuzugreifen. Der entsprechende Link wrde so aussehen:
<A HREF=../../home.html>Home Page</A>
So kann man z.B. den gesamten Verzeichnisbaum der WWW-Dokumente an eine andere Stelle
verschieben, ohne die URLs in den Dokumenten anpassen zu mssen.

1.7.3 Adressierung durch <BASE>


Die Verwendung des Elements BASE im HEAD des Dokumentes stellt eine weitere Mglichkeit dar,
Hypertext-Links relativ zu adressieren.
Zum Beispiel wird mit Hilfe von
<BASE HREF=http://firma.com/dokumente/meins.html>
...
<A HREF=texte/ich.html>ich</A>
die Adresse innerhalb des <A>-Tags zu
http://firma.com/dokumente/texte/ich.html
vervollstndigt.
ndert sich die in dem Element BASE angegebene Adresse, mu sie nur einmal pro Dokument
gendert werden.

1.7.4 Die Direktive LINK


Das LINK-Element definiert eine Relation des vorliegenden Dokuments zu einem anderen Dokument
und hat seinen Platz im HEAD des Dokumentes.
Die Syntax gleicht der eines Hypertext-Links, nur kommen jetzt Attribute hinzu:
<LINK HREF=URL =Wert>

22

Diese Attribute definieren die Art der Relation zu dem referenziertem Dokument. Mgliche Attribute
sind z.B.:
REL: definiert die Art der Relation, die durch LINK definiert wird
TITLE: gibt den Titel des in der URL spezifizierten Dokumentes an
HREF: bezeichnet ein Dokument, auf das verwiesen wird.
Zum Beispiel bekommt der Browser mit der Anweisung
<LINK HREF=kapitel1.htm REL=vorher>
mitgeteilt, da das aktuelle Dokument in einer Hierarchie vor dem Dokument kapitel1.html
eingeordnet ist. Bei dem aktuellen Dokument knnte es sich also um eine Einfhrung handeln.
Die Anweisung
<LINK HREF=http://www.irgendwo.net/intro.html TITLE=Einfhrung in HTML>
teilt dem Browser zum Beispiel mit, da der Titel des referenzierten Dokumentes Einfhrung in
HTML lautet.
Das Element LINK dient vor allem dem Zwecke der Buchhaltung von HTML-Dokumenten und erzeugt
keine Darstellung durch den Browser.

23

2. Multimedia
Durch den Einsatz von Multimedia ist die Bedienung und Navigation durch das immer
unbersichtlicher werdende Rechnergewebe genannt Netz erheblich vereinfacht worden.
Andererseits verursacht die stetige Zunahme von Elementen wie Bilder, Tne, Musik und Videoclips
im WWW nicht nur Freude bei den Benutzern, die nicht selten ber relativ langsame ModemLeitungen an das Internet angeschlossen sind.

2.1 Mime
Die Mime-Spezifikation (Multipurpose Internet Mail Extension) beruht auf der Erweiterung der headerFunktion einer E-Mail und der Mglichkeit, den body einer E-Mail in mehrere Teile zu untergliedern,
die verschiedene Datenformate bertragen knnen. (Bitte die Begriffe header und body nicht mit
den gleichlautenden Begriffen aus der HTML-Umgebung verwechseln.) Die verschiedenen
Datentypen und die Art der Codierung mssen im header der Mail vermerkt sein.
Die Erweiterungen nach der MIME-Spezifikation erlaubt 5 neue sogenannte header fields. Die
wichtigsten sind die Angabe der MIME-Version und das content type header field. Das letztere
bestimmt den Typ und den Subtyp des bodys der zu verschickenden Datei. Die allgemeine Syntax
des content type header fields lautet:
Content-type: Type/Subtype
wobei zwischen verschiedenen Types unterschieden wird. Die wichtigsten sind:
application: wird verwendet, um Daten von Anwendungen zu kennzeichnen
audio: wird zum Senden von Audiodaten bzw. Sprache verwendet
image: wird zum Verschicken von Grafiken verwendet
text: kennzeichnet unterschiedliche Darstellung von Texten
video: wird zum Versenden von Videosequenzen verwendet
x: steht fr freie Erweiterbarkeit und wird auch als privates Attribut bezeichnet.
Dieser MIME-Standard wird auch beim Versenden von Multimediadaten ber das WWW
angewendet. Wenn der Browser eine Datei anfordert, sendet der Server nicht nur die Daten dieser
Datei an den Client, sondern teilt ihm auch mit, welcher Art die bertragenen Daten sind.
Ist dies nicht mglich, versucht der Browser das Datenformat anhand der Endung der bertragenen
Daten zu erschlieen und ordnet die Daten einem speziellen MIME-Typen zu.
Schlielich entscheidet der Browser, ob er den so erhaltenen MIME-Typus direkt im Browser-Fenster
darstellen kann, und ob er die Daten einem externen Programm (auch als viewer bezeichnet) zur
Darstellung bergeben mu. Als viewer knnen im allgemeinen alle Programme Verwendung finden,
die einen bestimmten Typ von Multimedia-Daten verarbeiten knnen. Der Benutzer mu diese
Programme nur dem Browser bekannt machen.
Nahezu jeder Browser legt bei der Installation eine Datei an, in der die verschiedenen MIME-Typen
auf die Endungen der Dateien und den entsprechenden viewer abgebildet sind.
Beispiel fr einen Ausschnitt der Initialisierungsdatei des Browser Mosaic:
[Viewers]
TYPE0=audio/wav
TYPE1=application/postscript
TYPE2=image/gif
TYPE3=image/jpeg
TYPE4=video/mpeg
TYPE5=video/quicktime
TYPE6=video/msvideo
TYPE7=application/x-midi
TYPE8=audio/x-midi
TYPE9=audio/au
24

rem
rem
rem
rem

You can define other MIME types in a simular manner.


Check out this URL for more info on MIME types:
ftp://isi.edu/in-notes/media-types/media-types
YOU MUST DEFINE THE PATHS ZO YOUR RESPICTIVE VIEWERS

application/postscript=ghostview %ls
application/x-rtf=write %ls
image/gif=c:\mosaic\lview\lview31 %ls
image/jpg=c:\mosaic\lview\lview31 %ls
video/mpeg=c:\mosaic\mpegplay\mpegplay %ls
video/quicktime=c:\mosaic\QTW\bin\player.exe %ls
video/msvideo=mplayer %ls
audio/wav=mplayer %ls
audio/au=c:\mosaic\wham\wham %ls
audio/x-midi=mplayer %ls
[Suffixes]
application/postscript=.ps,.eps,.ai
application/x-rtf=.rtf,.wri
audio/wav=.wave,.wav,.WAV
audio/x-midi=.mid
audio/au=.au
image/gif=.gif
image/jpeg=.ipeg,.jpe,.jpg
image/x-tiff=.tiff,.tif
video/mpeg=.mpeg,.mpe,.mpg
video/quicktime=.mov
video/msvideo=.avi
text/x-sgml=.sgm,.sgml,.SGM,.SGML
Im ersten Teil des Beispiels werden die MIME-Typen ber die TYPE-Anweisungen festgelegt, im
zweiten Teil die MIME-Typen dem entsprechenden viewer zugeordnet, im letzten Teil schlielich die
verschiedenen Dateiendungen den MIME-Typen zugeordnet. Man kann beliebige andere MIMETypen hinzufgen, falls man auch im Besitz eines Programmes ist, welches diese darstellen kann.
Man sollte jedoch keine exotischen Datenformate verwenden, die nur von wenigen Benutzern
betrachtet werden knnen. Einige der am hufigsten verwendeten Multimedia-Datenformate sind in
der folgenden Tabelle aufgefhrt:
MIME-Typus
application/postscript
sound/au
sound/wave
sound/midi
image/gif
image/jpeg
image/tiff
text/html
video/mpeg
video/avi

UNIX-Endung
.eps, .ps, .ai
.au, .snd
.wav
.midi
.gif
.jpeg
.tiff
.html
.mpeg
.avi

DOS-Endung
.ps, .eps, .ai
.au, .snd
.wav
.mid
.gif
.jpg, .jpe
.tif
.htm
.mpg, .mpe
.avi

Man beachte, da von all diesen Daten-Formaten in der Tabelle in der Regel nur die Grafik-Dateien
mit der Endung .gif und .jpeg von den Browsern direkt dargestellt werden knnen.

2.2 Multimedia-Links
Hypertext-Links zu Multimedia-Dateien unterscheiden sich nicht von den zuvor besprochenen
Hypertext-Links zu HTML-Dokumenten. Auch hier erfolgt die Einbindung in den Text ber ein Anker25

Element.
Beispiele fr die Einbindung von Grafiken:
<A HREF=http://www.irgendwo.net/bilder/bild.gif>hier gibt es Bilder im GIF-Format</A>
<A HREF=http://www.irgendwo.net/bilder/bild.jpg> hier gibt es Bilder im JPEG-Format</A>
Auch Links fr Sound- und Video-Dateien knnen so eingebunden werden:
<A HREF=http://irgendwo.net/sounds/sound.wav>hier gibts Musik</A>
<A HREF=http://irgendwo.net/movies/movie.api>und hier ne Animation</A>
Aktiviert man die Links durch Anklicken, fordert der Browser das Dokument an und entscheidet nach
Empfang, welcher viewer gestartet werden soll. Alternativ kann man seinen Browser auch anweisen,
die Datei auf der Festplatte zu speichern, damit man sie spter bearbeiten kann. Generell ist zu
beachten, da man Multimedia-Links sparsam einsetzen sollte, da derartige Dateien im allgemeinen
recht umfangreich sind. ber die relativ langsamen Modem-Leitungen wird die bertragung einer
Multimedia-Datei schnell zu einer Geduldsprobe fr den Betrachter und zu einer Goldgrube fr die
Telefongesellschaft.

2.2.1 Grafikformate
Bilder knnen auf subtile Art und Weise eine Menge von Informationen transportieren, die man
anders vielleicht nicht vermitteln knnte. Vor allem grafische Elemente wie Landkarten,
Konstruktionszeichnungen, Diagramme und komplexe mathematische Formeln sind in einfachen
Worten nur unzulnglich darstellbar. Man sollte sich jedoch bewut sein, da viele Benutzer mit
textorientierten Browsern arbeiten oder das automatische Laden von Grafiken in ihrem Browser
abschalten, um die Ladezeiten zu verkrzen. Ein weiterer wichtiger Punkt bei der Verwendung von
Grafiken und Bildern ist die Beachtung des Copyrights, denn jedes grafische Produkt ist prinzipiell mit
einem Copyright geschtzt. Will man ein oder mehrere Bilder in seinem Dokument benutzen, sollte
man bei der Quelle des Bildmaterials nachfragen, ob und zu welchen Bedingungen man dieses darf.
Aber dieses Gebiet streift eine der groen Grauzone des Internet; jeder mu hier fr sich
entscheiden, wie sehr er die persnlichen Rechte Einzelner beachtet. Man sollte Grafikformate
verwenden, welche vom Format mglichst klein sind und von denen man sicher wei, da die
meisten Benutzer sie auch betrachten knnen. Die am weitesten verbreiteten Grafikformate sind im
einzelnen:
GIF: Die Abkrzung steht fr Graphics Interchange Format und wurde von CompuServe
entwickelt. Da dieses Format speziell zum Zwecke des Austausches ber verschiedene
Rechnerplattformen entwickelt wurde, ist es sicherlich das am weitesten verbreitete Grafikformat
und man kann davon ausgehen, da praktisch alle Benutzer ber einen entsprechenden viewer
verfgen.
Von besonderem Interesse ist der erweiterte Standard GIF89A, da er erlaubt, eine gewnschte
Farbe als transparent zu erklren. Damit kann man die Hintergrundfarben von Grafiken
automatisch den Farben von Browser-Fenstern anpassen, so da die Bilder auf dem Hintergrund
zu schwimmen scheinen.
JPEG: Das JPEG-Format wurde von der Joint Photographic Experts Group entwickelt und
beinhaltet ein spezielles Kompressionsverfahren, um die Datenmenge von Bildern zu reduzieren.
Dadurch sind Grafikdateien im JPEG-Format im allgemeinen um die Hlfte kleiner als im GIFFormat. Der Nachteil ist, da der Kompressionsalgorithmus mitunter zuviel Bildinformation
wegwirft und die Qualitt des Bildes leidet.
TIFF: Dieses Grafikformat (Tagged Image File Format) wurde von Aldus und Microsoft entwickelt
und wird hufig von Scannern benutzt. Auch wenn es nicht so verbreitet ist wie die beiden
erstgenannten, so knnen die meisten viewer dieses Format darstellen. Der entscheidende
Nachteil jedoch ist, da dieses Format in der Regel nicht direkt vom Browser untersttzt wird und
somit nicht fr inline images benutzt werden kann.

2.2.2 Videoformate
Auch wenn es weine sehr attraktive Mglichkeit ist, Informationen in kleinen Videoclips oder
Animationen zu verpacken, sollte man dieses Mittel mit Bedacht einsetzen. Selbst kurze
26

Videosequenzen haben hufig schon ein Datenvolumen von mehreren hundert Kilobytes und
bentigen eine betrchtliche bertragungszeit, selbst auf einigermaen flotten Leitungen; langsamere
Modem-Verbindungen knnen jedoch dazu fhren, da der Benutzer whrend der Ladezeit ein 5Gnge-Men zubereitet. Daher sollte man immer die Gre der Videodatei, das Datenformat und die
Lnge der Abspieldauer kenntlich machen. Dies kann hilfreich sein, um die Frustration der Benutzer
in Grenzen zu halten. Eine kurze Erklrung ber den Inhalt der Videosequenz schadet brigens auch
nie. Als Standard fr bewegte Bilder scheinen sich im Netz die Datenformate MPEG, AVI und FLI
durchzusetzen. Hierbei steht MPEG fr Motion Picture Experts Group. Videodateien diesen
Datenformates sind im Internet sicherlich am weitesten verbreitet, da es hnlich JPEG Standards fr
die Codierung von Videodaten definiert. Das AVI-Format kommt aus dem Hause Microsoft und ist
unter Windows sehr verbreitet. Auf vielen anderen Rechnerplattformen wird dieses Dateiformat
hingegen noch nicht untersttzt.

2.2.3 Audioformate
Fr die Verwendung von Audiodaten gilt hnliches wie fr die Videodaten. Speziell Dateien des
Formats WAV knnen sich zu wahren Datenmonstern aufblhen. Obwohl das WAV-Format in der
Windows-Welt sehr verbreitet ist, findet es auf anderen Plattformen weniger Untersttzung. Auf
UNIX-Systemen hat sich mit der Zeit das basic sound-Format (Dateiendung .snd oder .au) als
Standard entwickelt, welches aus der Sun-Welt stammt. Klnge oder Musik im MIDI-Format leiden
hufig aufgrund billiger Soundkarten an einer schlechten Reproduktion und erzeugen beim Hrer
nicht immer das Gefhl der Befriedigung. Dafr weisen Dateien mit der Endung .mid oder .midi meist
ein erheblich geringeres Datenvolumen auf als z.B. WAV-Dateien. Untersttzt wird dieses Format
hauptschlich unter Windows.

2.3 Die IMG-Umgebung


HTML bietet die Mglichkeit, Bilder und Grafiken im gif- oder jpeg-Format direkt in den Text
einzubinden und durch den Browser darstellen zu lassen. Diese Art von Grafiken bezeichnet man
auch als inline images.
Das Referenzieren erfolgt durch das IMG-Element und wird durch die folgende Syntax beschrieben:
<IMG ALIGN=TOP|MIDDLE|BOTTOM|LEFT|RIGHT SRC=bild.gif>
wobei das ALIGN-Attribut folgende Werte hat:
TOP: Die Oberkante des Bildes wird an der Oberkante des Textes ausgerichtet
MIDDLE: Die Mitte des Bildes wird an der Unterkante des Textes ausgerichtet
BOTTOM: Die Unterkante des Bildes wird an der Unterkante des Textes ausgerichtet
RIGHT: Die Grafik wird rechts ausgerichtet
LEFT: Die Grafik wird links ausgerichtet.
Ab der Version HTML 3.0 knnen auch folgende Attribute verwendet werden:
BORDER: Die Grafik wird mit einem Rahmen versehen, wobei die Breite des Rahmens ber die
Pixelgre definiert wird, die Syntax lautet:
<IMG SCR=bild.gif BORDER=Zahl>,
wobei Zahl = Breite in Pixel
VSPACE: Definiert den Abstand von oben und von unten zwischen der Grafik und der Umgebung,
die Syntax lautet:
<IMG SCR=bild.gif VSPACE=ZAHL>
HSPACE: Definiert den Abstand von links und von rechts zwischen der Grafik und der Umgebung,
die Syntax lautet:
<IMG SCR=bild.gif HSPACE=ZAHL>

27

WIDTH: Dient zur Grenbestimmung der Grafik, genauer: Width definiert die Breite der Grafik,
die Syntax lautet:
<IMG SCR=bild.gif WIDTH=Zahl oder %>,
wobei Zahl die Ausdehnung in Pixel angibt und % die Angabe in Relation zur Bildschirmgre
dient
HEIGTH: Dient zur Grenbestimmung der Grafik, genauer: Heigth definiert die Hhe der Grafik,
die Syntax lautet:
<IMG SCR=bild.gif HEIGHT=Zahl oder %>,
wobei Zahl die Ausdehnung in Pixel angibt und % die Angabe in Relation zur Bildschirmgre
dient.
Man beachte, da ein Bild innerhalb einer Textumgebung wie ein einzelner Buchstabe behandelt
wird. Der <IMG>-Tag kennt also keinen Flietext. Dies fhrt manchmal zu unbefriedigenden
Resultaten, wenn groe Bilder in einen flieenden Text eingebunden werden sollen.
Diese inline images eignen sich sehr gut fr transparente Grafiken, also Grafiken mit einer
Hintergrundfarbe, die sich automatisch der Farbe des jeweiligen Browser-Fensters anpat.
Bei der Verwendung von Bildern sollte man beachten, da das GIF-Format 256 Farben untersttzt.
Tatschlich knnen von den Browsern z.B. auf Unix-Rechnern nicht alle 256 Farben auf einmal
dargestellt werden, denn es werden Farbtabellen mit weit weniger Farben geladen. Der Browser
versucht, die nicht geladenen Farben durch hnliche der geladenen Farbtabelle zu ersetzen.
Dieser Verfremdungseffekt kann ein Bild stark verndern. Es ist daher ratsam, die Anzahl der Farben
in einem Bild zu reduzieren. Als ntzlicher Nebeneffekt verringert dies auch die Datenmenge.
Will man mehrere Bilder in ein Dokument einbinden, sollte man darauf achten, da diese nach
Mglichkeit dieselben Farbtabellen benutzen.
Aus verstndlichen Grnden knnen textbasierte Browser keine inline images darstellen. Statt dessen
erscheint an der Stelle des Bildes der Hinweis
[IMAGE].
Da dies nicht sonderlich informativ fr den Benutzer eines Text-Browsers ist, kann man diese
Meldung berschreiben mit Hilfe des Attributes ALT und einer Bildbeschreibung als Wertzuweisung.
Beispiel:
<IMG ALIGN=TOP WIDTH=25% HEIGHT=25% SCR=frosch.gif ALT=Ein Froschbild>
Es ist ratsam, von diesem Attribut immer Gebrauch zu machen, da auch einige grafisch orientierte
Browser diese Erluterung anzeigen, wenn der Benutzer das Laden der Grafiken abgeschaltet hat.
Man gibt dem Benutzer damit die Mglichkeit, sich zu entscheiden, ob er das Bild nachtrglich laden
mchte.
Eine weitere Mglichkeit besteht darin, das ALT-Attribut ohne jegliche Wertzuweisung zu benutzen.
Der Text-Browser verschweigt das Bild dann gnzlich.
Will man ein greres Bild zur Verfgung stellen, kann es sinnvoll sein, in das Dokument zunchst
eine kleinere Version einzubinden und als Hyper-Link zu markieren. Mchte der Benutzer das Bild in
seiner ganzen Gre sehen, kann er dieses Bild mit einem Anklicken laden. Fr unser FroschBeispiel von weiter oben knnte dieser Link wie folgt aussehen:
<A HREF=frosch-1.gif><IMG ALIGN=TOP WIDTH=25% HEIGHT=25% SCR=frosch.gif
ALT=Ein Froschbild></A>.
Das kleinere Bild bekommt einen farbigen Rahmen und wird dadurch als Hyper-Link ausgewiesen.
Eine weit verbreitete Anwendung von inline images ist das Verzieren von Listen durch kleine Grafiken
(= icons), die einfach attraktiver aussehen als die vom Browser standardmig verwendeten bullets.
Fr dieses Verfahren eignet sich die Definitionsliste am besten. Das folgende Beispiel soll den
Gebrauch verdeutlichen:
<HTML>
<HEAD>
<TITLE>Icon-Liste</TITLE>
</HEAD>
<BODY>
<H2>Eine Liste mit Icons</H2>
<DL COMPACT>
<DT><IMG SCR=frage.gif ALT=?>
<DD>Haben Sie noch Fragen ?
28

<DT><IMG SCR=vorsicht.gif ALT=!>


<DD>Bevor Sie diesen Link ausprobieren, lesen Sie Ihren Arzt
oder befragen Sie die Packungsbeilage !
</DL>
</BODY>
</HTML>
Man beachte, da der Trick wesentlich auf der Verwendung des COMPACT-Attributes beruht.

2.4 Die FIG-Umgebung


In HTML 3.0 kommt das FIG-Element zum Einbinden von Grafiken dazu. Neu an diesem Element ist,
da vorhergehender und nachfolgender Text um das Bild herumflieen kann, falls dafr gengend
Platz ist. Die FIG-Umgebung wird definiert durch:
<FIG SRC=bild.gif>...</FIG>
In dieser einfachen Form wird das Bild im Browser-Fenster zentriert und der Flietext-Modus
abgeschaltet. Fr ein detailliertes Layout stehen eine Reihe von Attributen zur Verfgung:
Das ALIGN-Attribut dient zur horizontalen Positionierung des Bildes. Als Werte knnen zugeordnet
werden:
BLEEDLEFT: Das Bild wird bndig mit dem linken Rand des Browser-Fensters gesetzt
LEFT: Das Bild wird bndig mit dem linken Textrand gesetzt
CENTER: Das Bild wird zwischen den Textrndern zentriert und der Flietext-Modus abgeschaltet
RIGHT: : Das Bild wird bndig mit dem rechten Textrand gesetzt
BLEEDRIGHT: Das Bild wird bndig mit dem linken Rand des Browser-Fensters gesetzt
JUSTIFY: Wenn mglich, wird das Bild der Textbreite angepat und der Flietext-Modus
abgeschaltet
Aufgrund der Mglichkeit, Bilder zu positionieren und mit Text, Tabellen und anderen Bildern
umflieen zu lassen, wird es ntig, die Reihenfolge der Dokumententeile zu fixieren. Hierfr steht das
Attribut CLEAR zur Verfgung. CLEAR hat folgende gltige Wertzuweisungen:
LEFT: ist links neben dem vorhergehenden Element Platz, so bleibt dieser leer, und das Bild wird
darunter gesetzt
RIGHT: ist rechts neben dem vorhergehenden Element Platz, so bleibt dieser leer, und das Bild
wird darunter gesetzt
ALL: ist rechts und links neben dem vorhergehenden Element Platz, so bleibt dieser leer, und das
Bild wird darunter gesetzt
Mit den Attributen WIDTH und HEIGHT kann man die Mae eines Bildes anpassen und mit UNITS
die Maeinheit definieren. Gltige Einheiten fr UNITS sind PIXEL und EN.
Das Attribut NOFLOW schaltet den Flietext-Modus aus.
Mit dem Attribut IMAGEMAP kann man die Adresse fr eine sogenannte image map spezifizieren.
Neu hinzu gekommen ist auch das Element CAPTION, mit dem Bildber- oder Bildunterschrift
erzeugt werden kann. Die Syntax lautet:
<CAPTION>Hier kann eine Bildber- oder Bildunterschrift stehen</CAPTION>
Schlielich kann man auch den Knstler, der die Grafik oder das Bild erschaffen hat, zu seinem
Recht kommen lassen mit Hilfe des Elementes CREDIT. Die Syntax lautet:
<CREDIT>Knstlername</CREDIT>

29

3 Weiterfhrende Elemente
Zwei Elemente untersttzen wesentlich die interaktive und benutzerfreundliche Gestaltung von
Webseiten: Formulare und aktive Grafiken.
Diese Elemente lassen sich als Bestandteil des Dokuments relativ einfach realisieren, bentigen zu
ihrer Funktion jedoch einen Server.
Man kann die in HTML erstellten Formulare mit Hilfe eines Browsers zwar betrachten und Text im
Eingabefenster eintragen, nur ausfhren kann man diese nicht. Der Grund dafr ist, da der Browser
die Daten nicht selbstndig auswerten kann, sondern zur Bearbeitung an einen Server schicken mu,
der seinerseits diese Daten wiederum an externe Programme oder Scripte zur Ausfhrung bergibt.
Deshalb ist es zur sinnvollen Verwendung von Formularen notwendig, Zugriffsrechte auf die ServerSoftware zu besitzen.
Im folgenden geht es erstmal darum, wie Formulare und aktive Grafiken in HTML-Dokumenten
verwirklicht werden knnen.

3.1 Formulare
Der Begriff Formular steht hier im weitesten Sinne fr alles, was man durch Eingabefelder und
Bettigung von grafischen Schaltern realisieren kann.
Die Funktionsweise ist im allgemeinen, da der Benutzer aufgefordert wird, eine Wahl durch
Eingaben ber die Tastatur oder Mouse-Klick zu treffen. Hufig wird er ein ganzes Men von
Eingaben vornehmen und schlielich alle Daten abschicken.
Es sei hier angemerkt, da es nicht mglich ist, Eingabedaten ber mehrere Dokumente hinweg zu
akkumulieren und alle am Ende einer Sitzung abzuschicken. Es werden immer nur die Daten des
aktuellen Dokuments verschickt.
Formulare werden erzeugt, indem man Eingabefelder und Schalter innerhalb von Paragraphen,
unformatierten Text, Listen und Tabellen plaziert.
Im Rahmen von HTML 3.0 werden die folgenden Felder untersttzt:
einzellige Textfelder
mehrzellige Textfelder
radio buttons: Auswahl durch Schalter
check boxes: Kstchen zum Ankreuzen
range controls: Knpfe und Schiebebalken
Mens
submit buttons: Schalter zum Absenden des Formulars
reset buttons: Schalter zum Lschen der Eingaben und Rcksetzen auf eventuelle
Voreinstellungen
hidden fields: versteckte Felder, die vom Browser nicht angezeigt werden und zur Buchhaltung
und Identifikation von Daten dienen

30

3.1.1 Das FORM-Element


Das FORM-Element ist ein HTML-Container und besteht aus einem Anfangs- und einem End-Tag.
Innerhalb eines Dokuments knnen zwar mehrere verschiedene Formulare vorkommen, aber sie
drfen nicht ineinander verschachtelt sein. Der bersicht wegen sollten die Formulare durch eine
horizontale Linie optisch voneinander abgesetzt werden.
Innerhalb der FORM-Umgebung knnen alle Elemente des BODYs verwendet werden.
Der <FORM>-Tag kann mehrere optionale Attribute enthalten und gehorcht der Syntax
<FORM [ACTION=URL] [METHOD=Methode] [ENCTYPE=Typ]>...</FORM>,
wobei an Stelle der Pnktchen die Definitionen der entsprechenden Eingabefelder oder Schalter
stehen. Die eckigen Klammern sollen andeuten, da es sich um optionale Attribute handelt.
Das ACTION-Attribut spezifiziert die Adresse, an die das Formular geschickt wird. Fehlt diese
Angabe, wird der URL des aktuellen Dokumentes angenommen. Der URL mu als http-Protokoll
angegeben werden, da derzeitig nur aufgrund dieses Protokolls Daten aus Formularen verschickt
werden knnen.
Wenn nicht zugroe Mengen an ausgefllten Formularen erwartet werden, gibt es jedoch noch einen
anderen Weg, um an die Formulardaten zu kommen. Wenn keine Mglichkeit zur Verfgung steht,
CGI zu nutzen (z.B. weil der Provider das nicht vorsieht), bleibt gar keine andere Wahl, als sich
ausgefllte Formulare per Email zuschicken zu lassen.
Die Syntax lautet:
<form action="mailto:name@adresse" method="post"><h3>Name</h3>
Im eigentlichen Text der Email stehen die bermittelten Daten. Die Daten der einzelnen Elemente
des Formulars sind durch ein kaufmnnisches & voneinander getrennt. Die Namen sind diejenigen
Feldnamen, die bei der Definition der Formularfelder mit der Angabe name= vergeben wurden. Die
Angaben hinter den =sind die Werte bzw. Daten.
Bei Check- und Radiobuttons werden nur die vom Anwender aktivierten Buttons in der Email
bertragen und enthalten die Werte, die beim Formular mit der Angabe value= definiert wurden. Bei
Eingabe- und Textfeldern erhlt man die Daten, die der Anwender eingegeben hat. Leerzeichen
werden dabei in Pluszeichen umgewandelt. Sonderzeichen, wie z.B. deutsche Umlaute, werden in
Hexadezimalschreibweise umgewandelt.
Mit Hilfe eines selbst geschriebenen Filter-Programms knnen diese Zeilen z.B. in eine
kommabegrenzte Datei geschrieben werden, die dann in eine Datenbank eingelesen werden kann.
Das METHOD-Attribut legt fest, nach welcher Methode die Daten verschickt werden. Zur Zeit
existieren POST und GET, wobei die letztere in der Regel als Voreinstellung gesetzt ist. Bei der GETMethode werden die Daten an den URL angehngt, whrend die POST-Methode die Daten extra
versendet. Werden viele Daten bertragen, ist POST sinnvoller, da bei der GET-Methode schwer
kontrollierbare Datenverluste auftreten knnen.
Das ENCTYPE-Attribut gibt die Codierung der Daten nach dem MIME-Standard an. Da zur Zeit nur
das Datenformat x-www-form-encoded bei Daten aus Formularen bertragen werden kann, ist dies
der voreingestellte Wert, und er kann weggelassen werden.

3.1.2 INPUT-Felder
Eines der wichtigsten Elemente innerhalb der FORM-Umbebung ist das INPUT-Feld. Es definiert den
Typus von Eingabe- und Auswahl-Feldern mit Hilfe des Attributes TYPE. Die Syntax ist
<INPUT TYPE=Typus NAME=Name ...>,
wobei anstelle der Pnktchen noch weitere Attribute hinzutreten knnen, die den Typ des
Eingabefeldes nher spezifizieren. Wird TYPE nicht angegeben, so gilt die Voreinstellung
TYPE=text. Folgende andere Angaben sind bei type= mglich:
type=int: Zur Eingabe von Ganzzahlen. Mit size= kann die Stellenzahl begrenzt werden. Mit den
zustzlichen Angaben min= und max= kann ein genauer erlaubter Wertebereich definiert werden.

31

type=float: Zur Eingabe von Dezimalkommazahlen. Mit size= kann die Stellenzahl begrenzt
werden.
type=date: Zur Eingabe eines Kalenderdatums.
type=url: Zur Eingabe einer Internet-Adresse.
Das Attribut NAME ist fr die meisten INPUT-Felder obligatorisch und dient der Identifikation der zu
versendenden Daten. Durch NAME wird jedem verwendeten Eingabe-Feld ein eigener Name
zugeordnet.
Im folgenden sollen die verschiedenen Formen der Eingabefelder besprochen werden.
Das INPUT-Feld vom Typ TEXT wird fr kurze, meist einzeilige Eingaben benutzt. Die vollstndige
Syntax lautet:
<INPUT TYPE=TEXT NAME=Name [SIZE=Zahl] [VALUE=Text] [MAXLENGTH=Zahl]>
Bis auf NAME sind alle weiteren Attribute optional.
SIZE: definiert den sichtbaren Bereich des Eingabefeldes in darzustellenden Zeichen
VALUE: Der Wert, der dem Attribut VALUE zugewiesen wird, erscheint als Vorgabetext im
Eingabe-Fenster
MAXLENGTH: Das Attribut MAXLENGTH setzt die maximale Anzahl von erlaubten Zeichen
Das INPUT-Feld vom Typ PASSWORD funktioniert analog zum Typ Text, nur wird jedes
eingegebene Zeichen durch das Sonderzeichen * ersetzt. Auch die Syntax und die Attribute sind die
gleichen wie bei TEXT:
<INPUT TYPE=PASSWORD NAME=Name
[SIZE=Zahl] [VALUE=Text] [MAXLENGTH=Zahl]>
Der Feldtyp HIDDEN wird vom Browser nicht dargestellt. Das Feld HIDDEN dient dem Austausch von
Zustandsinformationen zwischen Browser und Server. Es eignet sich dazu, einmal gettigte Eingaben
in anderen Dokumenten zu speichern, ohne sie neu eingeben zu mssen. Diese Daten werden dem
Attribut VALUE zugewiesen. Die Syntax lautet:
<INPUT TYPE=HIDDEN NAME=Name [VALUE=Wert]>
Es tritt neben NAME nur noch das optionale Attribut VALUE auf, dem eine Zeichenkette zugeordnet
wird.
Der Feldtyp CHECKBOX kann nur zwei Zustnde einnehmen: ausgewhlt oder nicht ausgewhlt. Die
Syntax lautet:
<INPUT TYPE=CHECKBOX NAME=Name VALUE=Wert [CHECKED]>Bezeichner
mit den Attributen
VALUE: Das Attribut VALUE ist obligatorisch und ordnet der Auswahl einen Wert in Form einer
beliebigen Zeichenkette zu, die dem Server zusammen mit dem Wert fr NAME bermittelt wird.
CHECKED: Dieses Attribut ist optional und definiert die Voreinstellung der CHECKBOX als
ausgewhlt. Dieses Attribut kann mehrfach verwendet werden.
BEZEICHNER: Diese Angabe wird neben dem Auswahlknopf plaziert und ist im allgemeinen ein
Text zur Beschreibung der Option
Verwendung findet CHECKBOX immer dann, wenn mehrere Optionen gleichzeitig ausgewhlt werden
knnen. Fr jede Mglichkeit mu ein eigenes CHECKBOX-Feld erzeugt werden.
Ein Formular fr die Bestellung einer Pizza knnte z.B. wie folgt aussehen:
<FORM ACTION=http://pizza.com/meine_pizza.bin METHOD=GET>
<INPUT TYPE=TEXT NAME=Besteller SIZE=20 VALUE=Ihr Name: MAXLENGTH=28>
Bitte w&auml;hlen Sie den gew&uuml;nschten Belag:
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=K&auml;se CHECKED>K&auml;se
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Salami CHECKED>Salami
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Zwiebeln CHECKED>Zwiebeln
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Pilze CHECKED>Pilze
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Ananas CHECKED>Ananas
</FORM>
32

Mit Hilfe des Feldtyps RADIO kann nur ein Wert von mehreren mglichen Optionen ausgewhlt
werden. Ansonsten ist die Verwendung dieses Feldes analog zur Verwendung von CHECKBOX. Es
gelten auch die gleichen Attribute.
Unsere obige Pizzabestellung knnte mit Hilfe des Radiobuttons noch wie folgt ergnzt werden.
<FORM ACTION=http://pizza.com/meine_pizza.bin METHOD=GET>
<INPUT TYPE=TEXT NAME=Besteller SIZE=20 VALUE=Ihr Name: MAXLENGTH=28>
Bitte w&auml;hlen Sie den gew&uuml;nschten Belag:
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=K&auml;se CHECKED>K&auml;se
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Salami CHECKED>Salami
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Zwiebeln CHECKED>Zwiebeln
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Pilze CHECKED>Pilze
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Ananas CHECKED>Ananas
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=klein>klein
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=mittel>mittel
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=gro&szlig;>gro&szlig;
</FORM>
Das INPUT-Feld SUBMIT hat die Form eines Knopfes und dient zum Absenden der Formulardaten.
Da dieses Feld keine Eingabedaten enthlt, ist auch kein Attribut vorgeschrieben. Lediglich das
Attribut VALUE kann optional verwendet werden, um den Vorgabetext Submit Query zu
berschreiben.
Bettigt man den RESET-Schalter, werden die Inhalte der brigen Eingabefelder auf ihren
voreingestellten Wert zurckgesetzt. Als optionales Attribut kennt dieser Feldtyp VALUE, mit dem
man dem Knopf eine Beschriftung seiner Wahl zuordnen kann.
Mit Hilfe dieser beiden Schalter knnen wir die Pizzabestellung weiter verbessern:
<FORM ACTION=http://pizza.com/meine_pizza.bin METHOD=GET>
<INPUT TYPE=TEXT NAME=Besteller SIZE=20 VALUE=Ihr Name: MAXLENGTH=28>
Bitte w&auml;hlen Sie den gew&uuml;nschten Belag:
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=K&auml;se CHECKED>K&auml;se
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Salami CHECKED>Salami
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Zwiebeln CHECKED>Zwiebeln
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Pilze CHECKED>Pilze
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Ananas CHECKED>Ananas
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=klein>klein
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=mittel>mittel
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=gro&szlig;>gro&szlig;
<INPUT TYPE=SUBMIT NAME=PIZZA VALUE=Abschicken>
<INPUT TYPE=RESET VALUE=Alles l&ouml;schen>
</FORM>
Das INPUT-Feld vom Typ IMAGE erlaubt dem Autor des Formulars ein Bild im GIF-Format wie ein
SUBMIT-Feld zu benutzen und bertrgt zustzlich die Koordinaten des Mouse-Klicks.
Die Syntax ist:
<INPUT TYPE=IMAGE NAME=Name SRC=bild.gif ALIGN=TOP|MIDDLE|BOTTOM>
NAME: Das Attribut NAME dient wieder zur Identifikation des Feldes
SRC: Das Attribut SRC spezifiziert den URL des verwendeten Bildes
ALIGN: Dieses Attribut ist optional und legt fest, ob der umgebende Text oberhalb (TOP), in der
Mitte (MIDDLE) oder an der Unterkante (BOTTOM) des Bildes ausgerichtet wird. Lt man die
Voreinstellung weg, kommt die Voreinstellung BOTTOM zur Anwendung.
Will man mit einem Logo noch Werbung schaffen, kann die Pizzabestellung weiter verfeinert werden:
<FORM ACTION=http://pizza.com/meine_pizza.bin METHOD=GET>
<INPUT TYPE=TEXT NAME=Besteller SIZE=20 VALUE=Ihr Name: MAXLENGTH=28>
Bitte w&auml;hlen Sie den gew&uuml;nschten Belag:
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=K&auml;se CHECKED>K&auml;se
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Salami CHECKED>Salami
33

<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Zwiebeln CHECKED>Zwiebeln


<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Pilze CHECKED>Pilze
<INPUT TYPE=CHECKBOX NAME=BELAG VALUE=Ananas CHECKED>Ananas
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=klein>klein
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=mittel>mittel
<INPUT TYPE=RADIO NAME=gr&ouml;&szlig;e VALUE=gro&szlig;>gro&szlig;
<INPUT TYPE=IMAGE NAME=PIZZA SRC=pizza.gif ALIGN=MIDDLE>
<INPUT TYPE=RESET VALUE=Alles l&ouml;schen>
</FORM>

3.1.3 Mehrzeilige Eingabe


Fr die Eingabe von Text, der nicht in ein einzelliges Fenster pat, steht das Formularelement
TEXTAREA zur Verfgung. Die Syntax fr die Verwendung dieses Elements lautet:
<TEXTAREA NAME=Name
ROWS=Zahl
COLS=Zahl
ALIGN=TOP|MIDDLE|BOTTOM|LEFT|RIGHT
WRAP=VIRTUAL|PHYSICAL|OFF>
optionaler Text
</TEXTAREA>
Das Element erzeugt ein Eingabefenster mit einer Breite, definiert durch das Attribut COLS, und einer
Hhe, definiert durch ROWS.
Die jeweiligen Zahlenwerte dieser beiden Attribute geben die Anzahl der sichtbaren Zeichen an, die in
das Fenster passen sollen.
Der vom Anwender einzutragende Text selber ist aber nicht beschrnkt, was durch Scroll-Balken
rechts und unterhalb des Fensters deutlich gemacht wird.
Zwischen dem Anfangs- und dem End-Tag kann man optional Text einfgen, der als Voreinstellung
vom Browser angezeigt wird und berschrieben oder gelscht werden kann. Der End-Tag mu immer
vorhanden sein, auch wenn kein optionaler Text eingetragen wird.
Mit dem optionalen Attribut ALIGN kann man den umgebenden Text anpassen. Wie schon bei
anderen Anwendungen des gleichnamigen Attributs sind die Werte TOP, MIDDLE und BOTTOM
erlaubt. Zustzlich stehen noch die beiden Werte LEFT und RIGHT zur Verfgung, die das
TEXTAREA-Feld links- oder rechtsbndig mit dem vorhergehenden Text setzen und den
nachfolgenden Text an der gegenberliegenden Seite als Flietext einfgen.
Mit der Zusatzangabe WRAP knnen Sie den Zeilenumbruch steuern. Mit WRAP=VIRTUAL
bewirken Sie, da der Text bei der Eingabe automatisch umgebrochen wird. Beim Absenden des
Formulars werden jedoch keine Zeilenumbruchzeichen bertragen. Mit WRAP= PHYSICAL
bewirken Sie, da der Text bei der Eingabe automatisch umgebrochen wird. Die
Zeilenumbruchzeichen werden beim Absenden des Formulars mit bertragen. Mit WRAP= OFF
stellen Sie den Zeilenumbruch aus (Voreinstellung).

3.1.4 Men
Zur kompakten Gestaltung von Menleisten steht die Umgebung SELECT zur Verfgung. Diese
erlaubt die Auswahl einer oder mehrerer Optionen gleichzeitig. Die Syntax lautet:
<SELECT
NAME=Name
[SIZE=Zahl]
[MULTIPLE]>
<OPTION [VALUE=Name1] [SELECTED]>Option-1</OPTION>
<OPTION [VALUE=Name2] [SELECTED]>Option-2</OPTION>
...
<OPTION [VALUE=Name n] [SELECTED]>Option-n</OPTION>

34

</SELECT>
Folgende Attribute sind mglich:
NAME: Das Attribut NAME ist wieder obligatorisch und wird zum Zwecke der Identifikation der
Daten bentigt
MULTIPLE: Das Attribut MULTIPLE erlaubt die gleichzeitige Auswahl mehrerer Optionen. Der
Browser zeigt alle Optionen in einem Rollfenster an
SIZE: Mit SIZE wird dem Browser mitgeteilt, wieviele Operationen er anzeigen soll. Lt man
dieses Attribut weg oder setzt es auf 1, dann werden die Optionen als Pop-up-Men dargestellt.
Wird hingegen eine Zahl grer oder gleich 2 angegeben, werden die Optionen innerhalb eines
Rollfensters angezeigt. Gibt man eine Zahl an, welche grer als die Anzahl der benutzten
Optionen ist, so werden im Rollfenster entsprechend viele Zeilen mit der Aufschrift nothing
hinzugefgt.
Jedes OPTION-Element markiert eine Option und kann durch Hinzufgen des Attributes SELECTED
als Voreinstellung aktiviert werden. Der End-Tag des Option-Elementes ist optional.
Der <OPTION>-Tag kann auch ein Attribut VALUE enthalten, mit welchem explizit festgelegt wird,
welchen Wert die Daten haben, wenn sie an den Server geschickt werden. Ohne dieses Attribut wird
der Text innerhalb der OPTION-Umgebung bertragen.
Beispiel:
<OPTION VALUE=a>Vanille</OPTION> sendet bei Auswahl von Vanille a an den Server;
<OPTION>Vanille</OPTION> sendet bei Auswahl von Vanille Vanille an den Server.

3.2 Aktive Grafiken


Das Element <IMG> bietet dem HTML-Autor die Mglichkeit, Bildregionen einer eingebetteten Grafik
als Anker fr einen Link zu markieren. So kann es z.B. aus Grnden der Reduktion und Konzentration
von Informationen sinnvoll sein, eine Landkarte als Ausgangspunkt fr geographisch basierte
Informationen zu benutzen. Durch Klicken mit der Maus innerhalb markierter Bildregionen knnen
zum Beispiel Links zu Dokumenten aktiviert werden, die regionale Informationen enthalten. Aus
diesem Grund werden diese Grafiken auch als clickabele images bezeichnet.
Es ist nicht schwer einzusehen, da solch ein Verfahren nur bei grafikorientierten Browsern
Anwendung finden kann. Um Benutzer von textorientierten Browsern nicht zu benachteiligen, sollte
immer eine Alternative zur Verfgung gestellt werden.
Wie man bei der Verwendung von clickabele images vorgeht, soll nun beschrieben werden.
Da das Bild ja vom Browser direkt angezeigt werden soll, kann nur eine Bilddatei im GIF- oder JPEGFormat Verwendung finden.
Die einzelnen aktiven Bildregionen knnen durch Rechtecke, Kreise und geschlossene Polygone
markiert werden.
Bei Gruppenbildern eignen sich Kreise besonders gut fr die Markierung der Kpfe einzelner
Personen. Bei Lageplnen von Gebuden sind Rechtecke meist sinnvoller. Zur Beschreibung der
Einzelteile eines Autos eignen sich Polygone besser, da man mit ihnen beliebige Umrisse aus
aneinandergefgten Geraden erzeugen kann.
Schlielich mssen auch nicht alle Bildregionen markiert sein. Whlt der Benutzer eine Region, die
nicht markiert ist, erhlt er eine entsprechende Nachricht vom Server.
Als nchstes mu man eine image map-Datei erstellen, die die Informationen ber die aktivierten
Bildregionen und die zugeordneten Hyperlinks enthlt. Solch eine Datei mu brigens fr jede
einzelne aktive Grafik gesondert erstellt werden. Sie trgt einen Namen ihrer Wahl, mu aber als
Endung .map haben und auf dem Rechner zu finden sein, auf dem auch der Server installiert ist.
Die Eintrge dieser Datei sind einfach zu verstehen. Jede Zeile definiert die Form der aktiven
Bildregion, den zugeordneten URL des Hyperlinks und die Koordinaten der Bildregion. Hier gibt es
kleine Unterschiede, je nachdem, welchen Server man benutzt.
So lautet z.B. die Syntax fr den CERN-Server
FORM (x1,y1) (x2,y2) ... URL
und fr den NCSA-Server
FORM URL x1,y1 x2,y2 ...
Fr die Variable FORM sind die folgenden Zuordnungen mglich:
35

CIRCLE: steht fr einen Kreis, der beim CERN-Server durch die Koordinaten des Mittelpunktes
und einen Wert fr den Radius definiert wird, whrend der NCSA-Server die Koordinaten fr den
Mittelpunkt und einen Punkt auf dem Kreisumfang bentigt.
RETANGLE (fr den CERN-Server), RECT (fr den NCSA-Server):
steht fr ein Rechteck und wird bei beiden Servern durch zwei Koordinaten-Paare definiert. Diese
sind die linke obere und die rechte untere Ecke.
POLY: die Form POLY ist bei beiden Servern gleich und bezeichnet das geschlossene Polygon.
Jeder einzelne Punkt wird durch ein Koordinaten-Paar definiert. Der einzige Unterschied zwischen
beiden Servern ist, da bei dem NCSA-Server nur maximal 100 Punkte erlaubt sind.
Die Einheit der Koordinaten ist Pixel mit Ursprung am linken oberen Eck des Bildes.
Der einfachste Weg um die bentigten Pixel-Werte zu erhalten, besteht in der Verwendung des
Programmes mapedit, das unter UNIX und MS-Windows luft.
Dieses Programm erlaubt, eine Grafik im GIF-Format zu laden und mit Hilfe des Mouse-Cursers
interaktiv .map Dateien fr den CERN- als auch den NCSA-Server zu erstellen.
Die etwas aufwendigere Methode ist, sich ein Grafikprogramm zu besorgen, welches fhig ist, die
Pixel-Werte einer Grafik anzuzeigen, wenn man einen Mouse-Cursor darber bewegt.
Zu beachten ist, da die Server .map-Dateien zeilenweise abarbeiten. Auch wenn es erlaubt ist, da
aktive Regionen sich berlappen, so wird vom Server immer die erste gltige Adresse gewhlt.
Eine image map-Datei fr einen NCSA-Server knnte folgendes Bild bieten:
default /maps/gruppe/nichts.html
circle /maps/gruppe/person1.html 95,50 109,95
circle /maps/gruppe/person2.html 188,54 204,95
circle /maps/gruppe/person3.html 295,60 301,108
...
Diese map-Datei wird mit den erwnschten Links versehen und dem Server bekanntgegeben.
Prinzipiell knnen map-Dateien an jeder beliebigen Stelle auf dem Server abgelegt werden, es ist
aber der Ordnung halber ratsam, sich innerhalb des Verzeichnisbaums der Server-Software ein
eigenes Verzeichnis anzulegen, das alle map-Dateien enthlt.
Als nchsten mu dem Server mitgeteilt werden, wo er die map-Datei findet. Fr den NCSA-Server
geschieht dies ber die Konfigurationsdatei imagemap.conf, die man normalerweise im
Wurzelverzeichnis der Server-Software im Verzeichnis conf findet. Nach einigen Zeilen Kommentar
sind Eintrge folgender Syntax vorzunehmen
Name:Pfad\Dateiname.map,
wobei Namenicht der Dateiname der map-Datei sein mu. Die Variable Namedient an dieser
Stelle nur als Alias. Schlielich folgt der Pfad (als absoluter Pfad oder relativ zum Wurzelverzeichnis
der Server-Software) zur map-Datei.
Nachdem dem Server die map-Datei bekanntgegeben wurde, mu die aktive Grafik noch in das
HTML-Dokument eingebunden und referenziert werden.
Dies geschieht durch die Erzeugung eines Links mit der aktiven Grafik als Auslser, einer Anweisung,
da das Programm IMAGEMAP auszufhren ist, und wo die entsprechende Datei zu finden ist.
Fr den NCSA-Server lautet diese Einbindung und Referenzierung folgendermaen:
<A HREF=/CGI-BIN/IMAGEMAP/gruppe><IMG SRC=URL ISMAP></A>.
Wenn der Benutzer jetzt einen der aktiven Bereiche der Grafik anklickt, wird der Server aufgefordert,
das Programm IMAGEMAP auszufhren. Auch der Name der map-Datei wird dem Server mitgeteilt.
Das Programm IMAGEMAP ffnet daraufhin die Datei imagemap.conf und benutzt den map-Namen,
um die Zugehrige map-Datei ausfindig zu machen. Dann ffnet das Programm IMAGEMAP diese
Datei und durchsucht sie zeilenweise, bis es auf eine Zeile trifft, die die Koordinaten des Mausklicks
beinhalten.
Findet es keine, so sendet das Programm eine entsprechende Nachricht an den Browser. Wenn es
eine findet, wird der zugehrige Link aktiviert und das referenzierte Dokument an den Browser
gesandt.
Ab HTML 3.0 ist es mglich, verweis-sensitive Grafiken lokal auf jedem Rechner zu realisieren. Der
eingesetzte Browser mu dabei allerdings in der Lage sein, die entsprechenden HTML-Befehle selbst
auszuwerten und korrekt umzusetzen.
36

Verweis-sensitive Grafiken werden in HTML 3.0 mit Hilfe des <FIG>-Tags realisiert.
Im einleitenden <FIG> wird die Grafikdatei referenziert, deren Inhalt verweis-sensitiv sein soll. Die
Grafik selbst ist eine gewhnliche GIF- oder JPEG-Datei. Sie mssen jedoch mit Hilfe eines
geeigneten Grafikprogramms geometrische Flchen der Grafik ermittelt haben, die verweis-sensitiv
werden sollen.
Folgende Flchentypen knnen Sie in einer Grafik im Hinblick auf Verweis-Sensitivitt ermitteln:
RECT (Vierecke)
CIRCLE (Kreise)
Polygon (Vielecke mit unbestimmter Anzahl Ecken)
Zwischen dem einleitenden <FIG> und dem abschlieenden </FIG> wird die verweis-sensitive
Flche definiert. Und zwar so, da, falls die Grafik beim Anwender nicht angezeigt werden kann, eine
sinnvolle Liste von Textverweisen angezeigt wird.
Beispiel:
<FIG SRC="grafverw.gif">
<UL>
<LI><A HREF="inhalt.html" SHAPE="RECT 30,20,60,16">&Uuml;berblick</A>
<LI><A HREF="angebote.html" SHAPE="CIRCLE 400,400,50">Angebote</A>
<LI><A HREF="feedback.html" SHAPE="POYGON 160,200,170,230,300,280">
Ihre Antwort auf uns</A>
</UL>
</FIG>
Die Verweise werden genau so notiert wie gewhnliche Verweise, mit einem Unterschied: durch die
Angabe SHAPE= wird die verweis-sensitive Flche bestimmt.
Die Pixelangaben bedeuten absolute Werte innerhalb der Grafik, die verweis-sensitiv sein soll.
Ein Viereck wird definiert mit SHAPE="RECT x1,y1,x2,y2"
wobei bedeuten:
x1 = linke obere Ecke, Pixel von links
y1 = linke obere Ecke, Pixel von oben
x2 = rechte untere Ecke, Pixel von links
y2 = rechte untere Ecke, Pixel von oben
Einen Kreis wird definiert mit SHAPE="CIRCLE x,y,r"
wobei bedeuten:
x = Mittelpunkt, Pixel von links
y = Mittelpunkt, Pixel von oben
r = Radius in Pixel
Ein Polygon wird definiert mit SHAPE="POLYGON x1,y1,x2,y2, ..., xn,yn"
wobei bedeuten:
x = Pixel einer Ecke von links
y = Pixel einer Ecke von oben
Es knnen so viele Ecken definiert werden, wie es gewnscht wird. Die letzte definierte Ecke
erhlt jedoch eine Linie zur ersten definierten Ecke. Diese schliet das Polygon.
Netscape und der MS Internet Explorer (beide ab Version 2.0) interpretieren eine Lsung fr verweissensitive Grafiken, die von HTML 3.0 abweicht. Aber ebenso wie bei der Lsung in HTML 3.0 ist es
mglich, diese Lsung lokal auf jedem Rechner zu realisieren, d.h. es ist keine spezielle ServerKommunikation erforderlich.
Um entsprechend dieser Lsung eine verweis-sensitive Grafik zu erzeugen, werden folgende Befehle
bentigt:
einen Befehl, mit dem die verweis-sensitiven Flchen der Grafik definiert werden
einen Befehl, um die Grafik zu referenzieren, und um anzugeben, wo sich die Information mit der
Definition der verweis-sensitiven Flchen befindet.
Beispiel:
<MAP NAME="Testbild">
<AREA SHAPE="RECT" COORDS="1,1,249,49" HREF="#a1">
< AREA SHAPE="RECT" COORDS ="1,51,149,299" HREF="#a2">
< AREA SHAPE="RECT" COORDS ="251,1,399,399" HREF="#a3">
< AREA SHAPE="RECT" COORDS ="151,51,249,299" HREF="#a4">
37

< AREA SHAPE="RECT" COORDS ="1,301,249,399" NOHREF>


</MAP>
<IMG SRC="hypgraph.gif" USEMAP="#Testbild" BORDER=0>
Mit <MAP NAME=> wird die Definition der verweis-sensitiven Flchen einer Grafik eingeleitet. Hinter
dem =ist einen Namen fr die verweis-sensitive Grafik zu vergeben. Dieser Name mu nichts mit
dem Dateinamen der Grafik zu tun haben.
Es handelt sich vielmehr um einen Ankernamen, der die gleiche Bedeutung hat wie der Name in
einem Verweisziel innerhalb einer HTML-Datei. Es sollten keine zu langen Namen vergeben werden.
Namen drfen keine Leerzeichen und keine deutschen Umlaute enthalten.
Als Sonderzeichen sollte hchstens den Unterstrich "_" benutzt werden. Der Name mu in
Anfhrungszeichen stehen.
Die <MAP>-Anweisung kann an einer beliebigen Stelle innerhalb des Krpers einer HTML-Datei (also
zwischen <BODY> und </BODY>) stehen. Die Angaben dieser Anweisung erzeugen keine
Bildschirmausgabe. Es empfiehlt sich jedoch, die Anweisung an einer markanten, gesonderten Stelle
innerhalb der Datei zu notieren, z.B. am Anfang oder am Ende des Dateikrpers.
Zwischen dem einleitenden <MAP> und dem abschlieenden </MAP> wird die verweis-sensitive
Flche definiert.
Mit <AREA> werden einzelne verweis-sensitive Flchen definiert.
Durch die Angabe SHAPE="RECT" wird eine viereckige Flche, mit SHAPE="CIRCLE" ein Kreis, und
mit SHAPE="POLYGON" ein beliebiges Vieleck als verweis-sensitiv definiert.
Bei der Angabe COORDS= werden die Koordinaten der verweis-sensitiven Flchen angegeben. Die
Pixelangaben bedeuten absolute Werte innerhalb der Grafik, die verweis-sensitiv sein soll.
Ein Viereck (SHAPE=RECT") wird mit den Koordinaten fr x1,y1,x2,y2 definiert,
wobei bedeuten:
x1 = linke obere Ecke, Pixel von links
y1 = linke obere Ecke, Pixel von oben
x2 = rechte untere Ecke, Pixel von links
y2 = rechte untere Ecke, Pixel von oben
Ein Kreis (SHAPE="CIRCLE") wird mit den Koordinaten fr x,y,r definiert,
wobei bedeuten:
x = Mittelpunkt, Pixel von links
y = Mittelpunkt, Pixel von oben
r = Radius in Pixel
Ein Polygon (SHAPE="POLYGON") wird mit den Koordinaten x1,y1,x2,y2,..., xn,yn" definiert,
wobei bedeuten:
x = Pixel einer Ecke von links
y = Pixel einer Ecke von oben
Es knnen so viele Ecken definiert werden, wie es gewnscht wird. Die letzte definierte Ecke mit
einer Linie zur ersten definierten Ecke verbunden. Diese schliet das Polygon.
Mit der Angabe HREF= wird das Ziel bestimmt, also die Datei, die aufgerufen werden soll, wenn der
Anwender die verweis-sensitive Flche anklickt. Dabei gelten die gleichen Regeln wie bei Verweisen.
Die Grafik, die verweis-sensitive Flchen haben soll, wird auf herkmmliche Weise mit Hilfe des
<IMG>-Tags referenziert.
Um die Grafik als verweis-sensitiv zu kennzeichnen, mu die Zusatzangabe USEMAP= (siehe obiges
Beispiel) benutzt werden. Hinter dem = geben Sie den Namen an, den Sie bei der Definition der
verweis-sensitiven Flchen im einleitenden <map>-Tag vergeben haben.
Der Name mu in Anfhrungszeichen stehen und ein # vorangestellt bekommen.
Die verweis-sensitiven Flchen knnen auch in einer anderen HTML- Datei definiert werden als in
derjenigen, in der die Grafik referenziert wird. Dann mu in der Grafikreferenz bei USEMAP= der
Dateiname und das Sprungziel innerhalb der Datei angeben werden, wo die verweis- sensitiven
Flchen definiert werden. Das funktioniert genauso wie bei gewhnlichen Verweisen.

38

4. HTML3-Erweiterungen
4.1 Tabellen
Tabellen werden innerhalb der Umgebung
<TABLE> ... </TABLE>
durch Reihen und Zellen erzeugt. Innerhalb dieser Zellen knnen die Elemente
- Formulare
- Bilder
- Listen
- unformartierter Text
- Links
- und weitere Tabellen
auftreten.
Das Layout der Tabelle bernimmt der Browser, sofern nicht der Autor dies unter Verwendung
entsprechender Attribute selbst steuert.
Als erstes Element innerhalb der Tabellen-Umgebung kann der optionale <CAPTION>-Tag stehen,
mit welchem man der Tabelle eine berschrift zuweisen kann. Zur Positionierung dieses Elementes
steht das Attribut ALIGN zur Verfgung, das folgende Werte annehmen kann:
TOP: erzeugt eine Tabellenberschrift
BOTTOM: erzeugt eine Tabellenunterschrift
LEFT: setzt die Tabellenbezeichnung linksbndig relativ zur Tabelle
RIGHT: setzt die Tabellenbezeichnung rechtsbndig relativ zur Tabelle
Die Grundelemente einer jeden Tabelle sind Reihen und Zellen, wobei die letzteren in Zellen mit dem
Inhalt berschrift oder Daten unterteilt werden. Zur Verfgung stehen die Elemente:
<TR>: erzeugt eine neue Reihe innerhalb der Tabellenumgebung
<TD>: erzeugt die einzelnen Datenzellen innerhalb einer Reihe
<TH>: wird benutzt um berschriften fr die einzelnen Spalten und Reihen der Tabelle zu
erzeugen, und setzt den Text innerhalb dieser Umgebung in einem anderen Font als den Rest der
Datenzellen.
Fr das bisherige ein kurzes Beispiel:
<HTML>
<HEAD>
<TITLE> Tabellen </TITLE>
</HEAD>
<BODY>
<TABLE>
<CAPTION>
<STRONG>Tabellenberschrift</STRONG>
</CAPTION>
<TR>
<TH>berschrift der ersten Spalte in der ersten Reihe</TH>
<TH>berschrift der zweiten Spalte in der ersten Reihe</TH>
<TH>berschrift der dritten Spalte in der ersten Reihe</TH>
</TR>
<TR>
<TD>Datensatz der zweiten Zeile der ersten Spalte</TD>
<TD>Datensatz der zweiten Zeile der zweiten Spalte</TD>
<TD>Datensatz der zweiten Zeile der dritten Spalte</TD>
39

</TR>
...
</TABLE>
<BODY>
<HTML>

4.1.1 Attribute der TABLE-Umgebung


Das Table-Element erlaubt einige Attribute, deren wichtigste im folgenden beschrieben werden.
BORDER: Dieses Attribut mu gesetzt werden, wenn man die Tabelle mit Linien einfassen will. Im
Rahmen von HTML 3.0 ist es mglich, das Erscheinungsbild dieser Tabelleneinfassung und des
Leerraums um die einzelnen Zellen durch ein zugeordnetes StyleSheet oder mit Hilfe eines Style
Elementes im Kopf des Dokumentes zu beeinflussen.
CELLSPACING: Mit CELLSPACING wird die Dicke der Gitternetzlinien innerhalb der Tabelle
bestimmt.
CELLPADDING: Durch die Angabe CELLPADDING im einleitenden Tabellen-Tag wird der
Abstand zwischen Zellenrand und Zelleninhalt bestimmt.
NOWRAP: Will man verhindern, das ein Browser den Text innerhalb der Tabellenzellen umbricht,
kann dies mit dem Attribut NOWRAP erzwungen werden. Fr die entsprechenden Zeilenumbrche
mu der Autor mit Hilfe des <BR>-Tags dann selbst sorgen.
ALIGN: ALIGN erlaubt die horizontale Positionierung der Tabelle innerhalb des Browser-Fensters.
Die zugeordneten Werte sind:
BLEEDLEFT: richtet die Tabelle am linken Fensterrand aus
LEFT: richtet die Tabelle am linken Textrand aus
CENTER: positioniert die Tabelle zentriert
RIGHT: richtet die Tabelle am rechten Textrand aus
BLEEDRIGHT: richtet die Tabelle am rechten Fensterrand aus
JUSTIFY: richtet die Tabelle an beiden Textrndern aus.
NOFLOW: verhindert, da Text die Tabelle umflieen kann.
WIDTH: stellt die Breite einer Tabelle ein. Die Werte, die WIDTH zugeordnet werden, richten sich
nach dem Attribut UNITS.
HEIGHT: die Angabe HEIGHT legt die Gesamthhe der Tabelle fest. Mit HEIGHT=Zahlenwert
wird die Hhe der Tabelle entsporechend der in UNITS festgelegten Einheit bestimmt.
UNITS: legt die Einheiten der Wertzuweisungen fest, die generell bei der Formatierung der
Tabelle verwendet werden. Dies bezieht sich auf die Attribute WIDTH, HEIGHT and COLSPEC.
Folgende Werte stehen zur Verfgung:
EN:
Standardeinstellung, mit alle Einheiten als halbe Punktgre der vom
Browser benutzen Einstellung
RELATIVE:
Berechnet alle Gren als prozentuale Anteile. Benutzt man diese
Wertzuweisung zum Beispiel zusammen mit dem Attribut WIDTH,
so berechnet der Browser die relative Breite der Tabelle nach dem
zur Verfgung stehenden Zwischenraum zwischen dem linken und
dem rechten Fensterrand.
PIXELS:
alle Einheiten werden als PIXEL verstanden. Da aber das
Ausgabemedium (=Computerbildschirm) im allgemeinen
unterschiedliche Auflsungen eingestellt haben kann, sollte
man von dieser Wertzuweisung Abstand nehmen.
COLSPEC: bestimmt die Spaltenbreite und die horizontale Textanordnung. Zugeordnet werden
eine Liste von Werten, die jeweils mit einem Grobuchstaben beginnen, gefolgt von einer Zahl.
Beispiel:
<TABLE UNITS=RELATIVE COLSPEC=L20 C40 R40>
Die Buchstaben L, Cund Rstehen fr left, center und right und sorgen fr die entsprechende
40

Positionierung des Zellinhaltes innerhalb der Spalten.


Die angwehngten Werte geben die Breite der Spalte in den Einheiten an, die mit dem Attribut
UNITS festgelegt wurde.

4.1.2 Formatierung einer Tabellenreihe


Fr die Formatierung einer Tabellenzeile stehen verschiedene Attribute zu dem Element <TR> zur
Verfgung, mit denen man sowohl die horizontale als auch die vertikale Ausrichtung des Textes
festlegen kann.
ALIGN: Mit dem ALIGN-Attribut kann man explizit die horizontale Ausrichtung des Textes in einer
Reihe bestimmen. Folgende Wertzuwisungen sind mglich:
LEFT:
die einzelnen Paragraphen der Zellen werden linksbndig gesetzt
CENTER: die einzelnen Paragraphen der Zellen werden zentriert
RIGHT:
die einzelnen Paragraphen der Zellen werden rechtsbndig gesetzt
JUSTIFY: die Paragraphen werden beidseitig um den gleichen Betrag eingerckt;
ist dies nicht mglich, wird der Text linksbndig angeordnet
DECIMAL: der Text der Zellen wird so formatiert, da etwaige, in den Zeilen der Zellen
vorkommende Dezimalpunkte vertikal untereinander stehen.
Enthlt eine Zeile keinen Dezimalpunkt, so wird sie linksbndig positioniert
VALIGN: positioniert den Text in den Zellen einer Reihe vertikal. Folgende Werte sind gltig:
TOP:
Standardeinstellung, der Zellinhalt erscheint am Anfang jeder Zelle
MIDDLE:
der Zelleninhalt wird vertikal zentriert
BOTTOM: der Zellinhalt wird am Ende der Zelle ausgerichtet
BASELINE: jeweils die erste Zeile innerhalb der Zellen wird zu einer gemeinsamen
Grundlinie ausgerichtet
NOWRAP: unterbindet den Zeilenumbruch fr alle Zeilen der Tabellenreihen. Die notwendigen
Zeilenumbrche mssen dann mit Hilfe des <BR>-Tags erfolgen.

4.1.3 Formatierung des Zelleninhaltes


Praktisch alle Attribute, die fr das <TR>-Element gelten, knnen auch innerhalb der
Zellenumgebungen <TH> und <TD> verwendet werden.
Dies sind vor allem die Attribute ALIGN, VALIGN und NOWRAP mit den gleichen Wertzuweisungen
und Resultaten, nur gelten sie jetzt lediglich fr eine Zelle.
Weitere Attribute sind:
COLSPAN: Das Attribut COLSPAN legt fest, ber wie viele Spalten sich der Zelleninhalt
erstrecken soll. Damit ist die Mglichkeit gegeben, Zellen ber eine Spalte hinaus auszudehnen.
Dies ist vor allem von Interesse fr Zeilenberschriften, die sich auf mehr als eine Spalte
beziehen.
Standardmig gilt der Wert 1.
ROWSPAN: erlaubt die Positionierung von Text ber mehrere Reihenspalten, so wie COLSPAN
fr Zeilen.

4.2 Schrift

4.2.1Schriftfarben
Fr beliebige Textabschnitte innerhalb des Flietextes, in berschriften, Listen, Tabellen usw.
knnen Farben bestimmt werden. Diese Farben gelten unabhngig von den Farben, die
41

gegebenenfalls als Textvordergrundfarbe fr die gesamte HMTL-Datei festgelegt wurden.


Beispiel:
<font color=#FFFFFF>Weier Text</font>
<font color=#C00000>Knallroter Text</font>
<font color=#00C000>Grner Text</font>
<font color=#0000FF>Blauer Text</font>
Es sollte darauf geachtet werden, da die definierten Textfarben mit der dateiweit definierten
Hintergrundfarbe kontrastieren.

4.2.2 Schriftarten
Es knnen fr beliebige Textabschnitte innerhalb des Flietextes eine andere als die vom Anwender
eingestellte Standardschriftart bestimmen.
Beispiel
<FONT FACE="Arial,Helvetica,Univers">TEXT</font>
Es gilt hierbei:
<FONT FACE> bestimmt die Schriftart. Dahinter folgt die Angabe der gewnschten Schriftart.
Der allgemein bliche Namen der Schriftart ist im Klartextzu notieren. Es knnen mehrere
Schriftarten angeben (wie im Beispiel). In diesem Fall versucht der Browser zuerst, den Text in der
ersten angegebenen Schriftart darzustellen (im Beispiel in Arial). Wenn diese Schrift beim Anwender
nicht installiert ist, wird versucht, die zweite angegebene Schrift (im Beispiel Helvetica) zu nehmen.
Wenn keine der angegebenen Schriftarten beim Anwender darstellbar ist, bleibt die Angabe
wirkungslos, d.h. der Text wird in der vom Anwender eingestellten Schrift angezeigt.
Die Angaben zur Schriftart mssen in Anfhrungszeichen stehen.
Wenn HTML-Dateien im WWW plazieren werden, sollten nur weit verbreitete Standardschriftarten
(z.B. Arial, Helvetica, Times, Courier, Modern) angeben werden.
Die Zusatzangabe FACE ist mit Angaben zur Schriftgre und Schriftfarbe im gleichen EinleitungsTag <FONT> kombinierbar.

4.3 Absatz- oder Textausrichtung


Mit dem neuen Tag <DIV knnen Abstze zentriert, rechts- oder linksbndig ausgerichtet werden. Die
Syntax lautet:
<DIV ALIGN=LEFT> ... </DIV>
<DIV ALIGN=CENTER> ... </DIV>
<DIV ALIGN=RIGHT> ... </DIV>.

42

4.4 Mathematische Formeln


Mit Hilfe der MATH-Umgebung ist es mglich, komplexe mathematische Formeln und Ausdrcke zu
setzen; allerdings wurden die mathematischen Formeln vom W3-Konsortium auch in HTML 3.2 nicht
implementiert. Die Benutzung des Formelsatzes wird vermutlich am besten von denen gemeistert,
die das im Hochschulbereich weit verbreitete Textsatzsystem LATEX beherrschen, denn wann immer
mglich wurde versucht, fr einen HTML-Tag den entsprechenden LATEX-Befehl zu verwenden.
Der Formelsatz wird eingeklammert in die
<MATH> ... </MATH>
Umgebung. Innerhalb der MATH-Umgebung knnen keine mehrzeiligen Formeln gesetzt werden.
Dies ist nur mglich unter Verwendung der TABLE-Umgebung. Es besteht die Mglichkeit, spezielle
Termini und Ausdrcke in Fettdruck zu setzen. Der Zwischenraum zwischen den einzelnen Zeichen
wird vom Browser bestimmt, will man dennoch zustzlichen Zwischenraum erzeugen, stehen die
Befehle
&thinsp;
&sp
&quadsp
zur Erzeugung kleinerer mittlerer und grerer Abstnde zur Verfgung.
Schlielich mute auch der Zeichensatz den Ansprchen des mathematischen Formelsatzes
entsprechend erweitert werden. Neu hinzugekommene mathematische Operatoren und griechische
Symbole sind:
&perp;
%
&ge;

&sigma;

&and;

&ne;

&tau;

&lArr;

&sup;

&upsi;

&rArr;

&ap;

&phi;

&equiv;

&inf;

&phiv;

&sub;

&alpha;

&chi;

&isin;

&beta;

&psi;

&sube;

&gamma;

&omega;

&supe;

&delta;

&Gamma;

&rarr;

&epsi;

&Delta;

&larr;

&zeta;

&Theta;

&darr;

&eta;

&Lambda;

&arr;

&theta;

&Xi;

&harr;

&iota;

&Pi;

&uArr;

&kappa;

&Sigma;

&dArr;

&lambda;

&Upsi;

&forall;

&mu;

&Phi;

&exist;

&nu;

&Psi;

&or;

&xi;

&Omega;

&nabla;

&pi;

&plusmn;

&rho;

&le;

Im folgenden werden die innerhalb der MATH-Umgebung erlaubten Elemente vorgestellt. Da in


HTML 3.2 mathematische Elemente noch nicht aufgenommen wurden, realisieren nicht alle Browser
die Zeichen exakt wie hier beschrieben. Im folgenden werden die innerhalb der MATH-Umgebung
erlaubten Elemente vorgestellt. Da in HTML 3.2 mathematische Elemente noch nicht aufgenommen
wurden, realisieren nicht alle Browser die Zeichen exakt wie hier beschrieben.

43

4.4.1 Box
Das BOX-Element ist die Basis fr den Formelsatz in HTML. Die Aufgabe dieses Elements ist es,
Teile der Formel in Gruppen zusammenzufassen, die einer bestimmten Operation unterworfen
werden.
So kann man mit dem BOX-Element
- unsichtbare Klammern erzeugen
- Teilausdrcke bereinander anordnen (Brche etc.)
- groe Klammern erzeugen, die komplexere Ausdrcke umfassen
- groe Integralzeichen erzeugen, die sich der Hhe des gesamten Ausdruckes anpassen.
Allgemein lautet die Syntax fr die BOX-Umgebung
<BOX> ... </BOX>.
Brche:
Eine typische Anwendung der BOX-Umgebung ist die Erzeugung von Brchen. Zustzlich bentigt
man das Element OVER, um den Zhler und Nenner des Bruches bereinander zu positionieren.
Die Syntax lautet dann:
<MATH>
<BOX>
erste Ziffer, d.h. Zhler
<OVER>
zweite Ziffer, d.h. Nenner
</BOX>
</MATH>.
Groe Klammern:
Die Elemente LEFT und RIGHT dienen der Erzeugung groer Klammern, die sich der Hhe des
restlichen Ausdrucks anpassen.
Beispiel:
<MATH>
f(x)=
<BOX>
<LEFT>
<BOX>
1+1<OVER>x
</BOX>
<RIGHT>
</BOX>
</MATH>
erzeugt

1
f ( x) = 1 + .
x
Mchte man geschweifte Klammern verwenden, so mu die Kodierung der runden Klammern durch
&lcup; und &rcup; ersetzt werden.
CHOOSE:
Die BOX-Umgebung kommt auch bei der Darstellung von Binominal-Koeffizienten zur Anwendung.
Hierbei findet das CHOOSE-Element Verwendung.
Beispiel:
<MATH>
<BOX>
n+1<CHOOSE>k
</BOX>
=
<BOX>
n<CHOOSE>k
</BOX>
+
44

<BOX>
n<CHOOSE>k-1
</BOX>
</MATH>
erzeugt
n + 1 n n
.

= +
k k k 1

SIZE:
Um die Gre von Klammern zu kontrollieren, kann dem BOX-Element das Attribut SIZE mit den
Werten NORMAL, MEDIUM, LARGE and HUGE zugeordnet werden.
Beispiel:
<MATH>
<BOX>
a<OVER>b
</BOX>
<BOX SIZE=LARGE>
<LEFT>a-b<RIGHT>
</BOX>
</MATH>
erzeugt

a
a b.
b

4.4.2 Indizes und Exponenten


Zum vertikalen Positionieren von Zeichen stehen die Tags <SUP> und <SUB> zur Verfgung.
Die hoch- oder tiefgestellten Zeichen werden in einem kleineren Font dargestellt.
Beispiel:
<MATH>
&sum;
<SUB>n=0</SUB>
<SUP>&inf;</SUP>
</MATH>
erzeugt ein Summenzeichen der Form

n= 0

Auch beim Setzen von chemischen Reaktionsgleichungen finden die Sup- und Subscripte ihre
Verwendung:
<MATH>
4LiH
<SUB>3</SUB>
<SUB>&rarr;</SUB>
<SUP>Ether</SUP>
LiAlH
<SUB>4</SUB>
+3LiCl
<MATH>
erzeugt die Reaktionsgleichung

4 LiH 3 + AlCl Ether


LiAlH 4 + 3 LiCl .
Trifft zuflligerweise ein rechtsseitiger Subscribt auf einen linksseitigen Supscribt, so sollte zur
Vermeidung von Zweideutigkeiten das Attribut ALIGN mit den Wertezuweisungen LEFT, RIGHT und
CENTER benutzt werden.
Beispiel:
<MATH>
45

X<SUP ALIGN=LEFT>a</SUP>
<SUB ALIGN=RIGHT>b</SUB>Y
<MATH>
erzeugt

X a bY .

4.4.3 <ABOVE> und <BELOW>


Die Elemente ABOVE und BELOW verwendet man, um horizontale Klammern, Linien, Pfeile oder
auch Text ber oder unter einem Ausdruck zu plazieren.
Beide Tags akzeptieren das Attribut SYM zur Definition eines Symbols.
Um eine geschweifte Klammer ber und unter einen Ausdruck zu positionieren, benutzt man z.B.:
<MATH>
<ABOVE SYM=CUB>a+<BELOW SYM=CUB>+b+c</BELOW>+d</ABOVE>
</MATH>
bildet folgendes ab:

67
4 44
8
a + b{
+ c + d.
Man beachte, da sowohl der Ampersand (&) als auch das Semikolon (;) bei der Definition des
Symbols weggelassen werden.
Als Symbole knnen unter anderem verwendet werden:
LINE: Linie =
LARR: linksgerichteter Pfeil =
RARR: rechtsgerichteter Pfeil =
HAT: Dach =
TILDE: Tilde =

4.4.4 Text
Da innerhalb der MATH-Umgebung keine Trennung einzelner Wrter stattfindet, bentigt man die
Umgebung TEXT zum Einfgen von Textpassagen in Formeln.
Die Syntax lautet
<TEXT> ... </TEXT>.

4.4.5 Wurzelzeichen
In HTML gibt es fr Wurzelzeichen zwei Umgebungen.
Fr die Quadratwurzel existiert
<SQRT> ... </SQRT>
und fr die n-te Wurzel
<ROOT>n<OF> ... </ROOT>.

46

4.4.6 Mathematische Akzente


In mathematischen Ausdrcken bentigt man sehr oft Akzente ber einzelnen Zeichen und
Symbolen.
Die folgende Tabelle gibt einen berblick, was von HTML zur Verfgung gestellt wird:
Symbol

x
x

HTML-Umgebung
<VEC>x</VEC>
<DOT>x</DOT>
<DDOT>x</DDOT>
<HAT>x</HAT>
<TILDE>x</TILDE>

4.4.7 Fonts
Manchmal ist es in mathematischen Formeln ntig, den Font zu ndern. Hierfr gibt es folgende
Umgebungen:
<B> ... </B>: fr Fettdruck
<T> ... </T>: fr den aufgerichteten Font.

4.4.8 Matrizen und Felder


Der von HTML eingeschlagene Weg zur Darstellung von Matrizen, Determinanten oder linearen
Gleichungssystemen hnelt sehr dem Satz von Tabellen.
Zuerst mu eine ARRAY-Umgebung definiert werden mit:
<ARRAY> ... </ARRAY>.
Die Zeilen- und Spaltenstruktur wird durch die Elemente ROW und ITEM erzeugt. Die generelle
Syntax lautet:
<MATH>
<ARRAY>
<ROW><ITEM> ... <ITEM> ... <ITEM> ... </ROW>
<ROW><ITEM> ... <ITEM> ... <ITEM> ... </ROW>
<ROW><ITEM> ... <ITEM> ... <ITEM> ... </ROW>
...
</ARRAY>
</MATH>
Das Positionieren der gesamten Matrix oder des Textes innerhalb der Zellen bernehmen Attribute,
welche sowohl dem <ARRAY> als auch <ITEM> zugeordnet werden knnen.
Standardmig werden Matrizen vertikal derartig positioniert, da der vorhergehende und der
nachfolgende Ausdruck am Mittelpunkt des Feldes oder der Matrix ausgerichtet sind. Diese
Einstellung kann durch das Attribut ALIGN mit seinen Wertzuweisungen gendert werden:
TOP: die oberste Reihe des Feldes wird mit dem vorhergehenden oder nachfolgenden Ausdruck
auf eine gemeinsame Grundlinie gesetzt
MIDDLE: Standardeinstellung; vertikal wird die Mitte des Feldes auf eine gemeinsame Grundlinie
mit dem vorhergehenden oder nachfolgenden Ausdruck gesetzt
BOTTOM: die unterste Reihe des Feldes wird mit dem vorhergehenden oder nachfolgenden
Ausdruck auf eine gemeinsame Grundlinie gesetzt

47

Der Inhalt einer Spalte wird standardmig zentriert. COLDEF dient zum ndern dieser
Einstellungen. Die gewnschten Positionen werden dem Attribut durch einen Grobuchstaben
zugewiesen:
L: der Inhalt der Spalte wird linksbndig gesetzt
C: der Inhalt der Spalte wird zentriert
R: der Inhalt der Spalte wird rechtsbndig gesetzt.
Beispiel:
<ARRAY COLDEF=LLRR>
positioniert den Zellinhalt der ersten beiden Spalten linksbndig, die nchsten beiden rechtsbndig.
Zustzlich knnen mit COLDEF mathematische Operationen zwischen den Spalten eingefgt werden,
was z.B. bei der Darstellung von linearen Gleichungssystemen notwendig ist.
Beispiel:
<ARRAY COLDEF=C+C+C+C=C>
fgt jeweils ein +-Zeichen zwischen den ersten vier Spalten und ein Gleichheitszeichen vor der
letzten Spalte ein.
Mit den Attributen LDELIM und RDELIM werden links- und rechtsseitige Klammern erzeugt. Als Wert
wird das gewnschte Klammerzeichen zugeordnet.
Beispiel:
<ARRAY LDELIM=| RDELIM=|>
setzt fr die rechte und linke Klammer des Feldes einen geraden senkrechten Strich.
Auch bei Feldern kann sich der Inhalt von Zellen ber mehrere Spalten oder Reihen erstrecken. Dies
erreicht man mit den Attributen COLSPAN und ROWSPAN, welche dem Tag <ITEM> zugeordnet
sind. Die Wertzuweisungen sind Zahlen fr die gewnschte Zellenzahl.
Die horizontale Positionierung innerhalb einer Zelle wird mit dem Attribut ALIGN erreicht, da als
Wertzuweisung LEFT, CENTER und RIGHT akzeptiert.

4.5 Die STYLE-Umgebung


Style-Sheets sollen in HTML separat definierte Absatzformate ermglichen, die auf einzelne
Textabstze anwendbar sind.
Dazu gehren Angaben zu Schriftarten, Absatzabstnden, Bullets, automatischer Numerierung von
berschriften usw.

4.5.1 Style-Sheet Definition


Innerhalb einer HTML-Datei sollen Style-Sheets im Dateikopf definiert werden, also zwischen
<HEAD> und </HEAD>.
Die Angaben zum Style-Sheet sollen in das Tag <STYLE> und sein Gegenstck </STYLE>
eingeschlossen werden.
Beispiel:
<HTML>
<HEAD>
<TITLE>Dokument mit blauer H1-berschrift in Helvetica</TITLE>
<STYLE notation=CSS>
h1: text-color = blue
h1: font = 14pt helvetica bold
</STYLE>
<link rel=StyleSheet href="MYSTYLE.CSS">
</HEAD>
<BODY>
<h1>Und das ist die H1-berschrift!</h1>
Die Datei "mystyle.css" enthlt weitere Angaben,
48

z.B. fr die Formatierung dieses Textes hier


</BODY>
</HTML>
In separaten Style-Sheet-Dateien knnen die Angaben ohne HTML-Tags notiert werden.
Die Syntax der Angaben selbst soll jedoch die gleiche sein wie innerhalb von <STYLE> bzw.
</STYLE>.
Beispiel:
Separate Style-Sheet-Datei MYSTYLE.CSS
style notation=CSS
h1: text-color = red
h1: font = 18pt helvetica bold
p.normal = text-color = #D0D0FF
Man betrachte dieses Beispiel und das obere zusammenhngend:
im oberen Beispiel wird die Datei MYSTYLE.CSS,
deren Inhalt das untere Beispiel auflistet,
in Form einer Link-Anweisung referenziert.
Bei den Angaben zu h1 haben die Angaben in der HTML-Datei Vorrang vor den Angaben in der
separaten Style-Sheet-Datei.

4.5.2 Klassen eines HTML-Elements


In HTML 3.0 knnen einem HTML-Element, z.B. <h1> (berschrift 1. Ordnung) oder <p> (Absatz im
Flietext) mehrere "Ausprgungen" zugeordnet werden.
Diese Ausprgungen werden als Klassen (engl.: classes) bezeichnet. Dies ist besonders im
Zusammenhang mit Style-Sheets interessant.
Beispiel:
p.schwarz: text-color = black
p.blau: text-color = blue
p.rotfett: text-color = red
p.rotfett: font-weight = bold
Im Beispiel bekommt das Tag <p> drei Klassen (Ausprgungen) zugewiesen: schwarz, blau und
rotfett.
Beispiel im Text einer HTML-Datei:
<p.schwarz>Das ist ein Absatz in schwarzer Schrift</p>
<p.blau>Das ist ein Absatz in blauer Schrift</p>
<p.rotfett>Das ist ein Absatz in roter und fetter Schrift</p>
Erst mit Hilfe von Style-Definitionen und Klassen knnen in HTML Absatzformate definiert werden,
wie sie aus Textverarbeitungs- und DTP-Programmen bekannt sind.

4.5.3 Schema der Style-Sheet-Angaben


Alle Style-Sheet-Angaben halten sich an folgendes Schema:
HTML-Element[, HTML-Element, ...]: Eigenschaft = Wert[, Eigenschaft = Wert, ...]
HTML-Element(e) ist eines oder sind mehrere HTML-Sprachelemente, z.B. h1, p, li usw. Wenn
mehrere HTML-Sprachelemente angeben werden, sind diese durch Kommata zu trennen. Die
zugeordneten Eigenschaften und Werte gelten dann fr alle genannten HTML-Elemente. Es kann
auch HTML als "Sprachelement" angeben.
Dann gelten die zugeordneten Eigenschaften und Werte fr alle Sprachelemente der HTML-Datei:
Eigenschaft ist eine nher zu bestimmende Eigenschaft(en) fr das oder die angegebenen HTMLElemente, z.B. text-color, font-weight usw.
Wert ist die genaue Ausprgung einer Eigenschaft, z.B. blue bei text-color. Beispiel:
h3: font-size = 18
h1, dt, blockquote: font-weight = bold
h4: text-color = red, font = helvetica bold
p.spezial, li.spezial: text-color = grey, font = times
html: text-color = white
49

Wenn mehrere Eigenschaften mit Werten gleichzeitig zugewiesen werden, sind diese Angaben durch
Kommata zu trennen.
Auch relative Angaben sind zulssig.
Beispiel:
h2: font-size = h1[font-size] * 0.8

4.5.4 Bedingte Gltigkeit von Style-Sheet-Angaben


Man kann erzwingen, da eine Style-Sheet-Angabe nur in bestimmten Umgebungen gltig ist. So
kann z.B. festgelegt werden, da der Ausdruck emnur innerhalb von berschriften rot dargestellt
wird, sonst dagegen in der Normalschrift.
Beispiele:
(h1,h2,h3,h4,h5,h6) em : text-color = red
/h1/ p: text-color = blue
Wenn dem Element, das nher spezifiziert werden soll, in Klammern ein anderes Element
vorangestellt wird, gelten die zugeordneten Eigenschaften und Werte fr das Element nur, wenn es
innerhalb des vorangestellten Elements vorkommt.
Wenn dem Element, das nher spezifiziert werden soll, in Schrgstrichen ein anderes Element
vorangestellt wird, gelten die zugeordneten Eigenschaften und Werte fr das Element nur, wenn es
unmittelbar auf das vorangestellte Element folgt.

4.5.5 Style-Sheet-Angaben fr Schrift


Folgende Vereinbarungen sind mglich:
font-size = (Schriftgre physikalisch, in Punkt)
font-size-index =

(Schriftgre logisch, in Zahl zwischen 1 und 7


oder in den Angaben
smallest | smaller | small | normal | large | larger | largest)

font-family = (Schriftfamilie logisch)


font = (Schrift physikalisch)
font-weight = (Schriftgewicht in Zahlen zwischen -3 und 3
oder in den Werten
extra-light | light | demi-light | medium | normal | demi-bold | bold | extra-bold)
font-style = (Schriftstil in den Werten italic | italics | roman | oblique | upright | small-caps | normal)
font-leading = (Zeilenabstand in Prozent relativ zur Schriftgre)

4.5.6 Style-Sheet-Angaben fr Text


Folgende Vereinbarungen sind mglich:
text-color = (Textfarbe in Namen oder Hex-Werten)
text-background =

(Texthintergrundfarbe in Namen, Hexwerten


oder in Form eines Wallpaper-Verweises)

text-spacing = (Zeilenabstand, wie font-leading)


text-line = (Texteffekt, z.B. schattiert, blinkend usw.)
text-position = (Textposition, z.B. hoch- oder tiefgestellt)

50

text-transform = (Textbersetzung, z.B. Kapitlchen, Grobuchstaben usw.)


text-effect = (Spezialeffekte, z.B. erster Buchstabe im Absatz grer)

4.5.7 Style-Sheet-Angaben fr Abstze


Die Abstze knnen durch folgende Wertzuweisungen positioniert werden:
align = (Ausrichtung)
margin left = (Einrckung von links)
margin right = (Einrckung von rechts)
margin top = (Abstand vom aktuellen Absatz zum Absatz darber)
margin bottom = (Abstand vom aktuellen Absatz zum Absatz darunter)
indent = (Extra-Einrckung der ersten Absatzzeile)
outdent = (Extra-Ausrckung der ersten Absatzzeile)
width = (Erzwungene Breite eines Absatzes)
height = (Erzwungene Hhe eines Absatzes, z.B. mit Grafik)

4.5.8 Style-Sheet-Angaben fr Listen


Auch Listen knnen durch Style-Sheet-Angaben ein besseres Layout zugewiesen bekommen:
numbering = (Numerierung ein/aus)
number-style = (Numerierungsstil, z.B. arabisch, rmisch)

4.6 Frames
Mit Hilfe von Frames kann der Anzeigebereich des Browsers in verschiedene, frei definierbare
Segmente aufgeteilt werden.
Jedes Segment kann eigene Inhalte enthalten. Die einzelnen Anzeigesegmente (also die Frames)
knnen wahlweise einen statischen Inhalt (= "non scrolling regions") oder einen wechselnden Inhalt
haben.
Verweise in einem Frame knnen Dateien aufrufen, die dann in einem anderen Frame angezeigt
werden.
Frames sind kein weiteres Element, um typische Aufgaben der Textverarbeitung zu bewltigen,
sondern ein Element, das die spezifischen Eigenschaften der Bildschirmanzeige konsequent nutzt.
Frames erffnen vllig neue Mglichkeiten, um Information nicht-linear aufzubereiten.
In jedem Frame stehen alle Anzeige-Features zur Verfgung.
So ist es z.B. denkbar, in einem Frame Textinformation anzuzeigen, whrend in einem anderen
Frame gleichzeitig ein passendes Video abluft.
Mit Frames in Verbindung mit Formularen knnen anwenderfreundliche Datenbank-Oberflchen
realisiert werden.
So knnen z.B. in einem linken Frame ein Formular fr Sucheingaben zur Verfgung gestellt werden,
whrend rechts daneben in einem anderen Frame die jeweils aktuellen Suchergebnisse prsentiert
werden.

51

4.6.1 Frame-Sets definieren


Mehrere zusammengehrige Frames bilden ein Frame-Set.
Ein Frame-Set wird anstelle des herkmmlichen BODY-Tags definiert. Wird in einer HTML-Datei ein
Frame-Set definieren, sieht das Grundgerst der HTML-Datei folgendermaen aus:
<HTML>
<HEAD>
<TITLE>berschrift</TITLE>
</HEAD>
<FRAMESET ...>
... Frame-Definitionen ...
</FRAMESET>
</HTML>
<FRAMESET ...> leitet die Definition eines Frame-Sets ein. Dahinter folgen die Definitionen der
einzelnen Frames. </FRAMESET> schliet die Definition des Frame-Sets ab.
Beim Definieren von Frame-Sets wird auch bestimmt, wie das Anzeigefenster aufgeteilt werden soll.
Dabei kann man sich das Anzeigefenster wie den leeren Rahmen einer Tabelle vorstellen. Damit die
Tabelle Gestalt annimmt, mssen Reihen und Spalten definiert werden. Die Definition der Reihen und
Spalten erfolgt bei der Definition der Frame-Sets.
Was in den einzelnen Zellen (Frames) stehen soll, wird bei der Definition der einzelnen Frames
angegeben.
Durch die Angabe ROWS= (Prozent) im einleitenden Frameset-Tag werden die "Zeilen" und deren
Hhen bestimmt. Die Hhenangaben der einzelnen Zeilen werden durch Kommata getrennt. Anstelle
der Prozentangaben knnen auch absolute Zahlenwerte (Anzahl in Pixel) benutzt werden, z.B.
ROWS="120,520". Im Zusammenhang mit absoluten Zahlenwerten knnen auch eine Wildcard
verwendet werden. So bewirkt z.B. z.B. rows="120,*,120" ein Set, bestehend aus drei Reihen fr
Frames, wobei die erste und die letzte Zeile jeweils 120 Pixel hoch sind (z.B. fr Kopf- und
Fuzeilen), whrend die Hhe der mittleren Reihe, markiert durch einen Stern, variabel ist und durch
die Gre des Anzeigefensters beim Anwender bestimmt wird.
Durch die Angabe COLS= (Prozent) im einleitenden Frameset-Tag werden die "Spalten" und deren
Breiten bestimt. Hierbei gelten die gleichen Regeln wie bei den "Zeilen".
Alle Angaben hinter ROWS= und COLS= mssen in Anfhrungszeichen stehen.
Es knnen auch mehrere, verschachtelte Frame-Sets definiert werden.
Beispiel 1:
<FRAMESET ROWS="20%,80%">
... Dadurch ergeben sich zwei Frames, deren Inhalt hier bestimmt wird...
</FRAMESET>
Beispiel 2:
<FRAMESET COLS="40%,60%">
... Dadurch ergeben sich zwei Frames, deren Inhalt hier bestimmt wird...
</FRAMESET>
Beispiel 3:
<FRAMESET COLS="40%,60%">
... Dadurch ergibt sich zwei Frames,
wobei der Inhalt des ersten Frames hier bestimmt wird...
<FRAMESET ROWS="20%,80%">
... Dadurch ergeben sich noch mal zwei Frames,
deren Inhalt hier bestimmt wird...
</FRAMESET>
</FRAMESET>
Nachdem durch die Definition von Frame-Sets geeignete Segmente des Anzeigefensters bestimmt
wurden, wird mit der Definition der Frames angegeben, was in den einzelnen Segmenten angezeigt
werden soll.
Ferner knnen verschiedene Eigenschaften fr die Segmente bestimmt werden.
Mit <FRAME SCR=> "Dateiname" wird innerhalb eines Frame-Sets der Inhalt des bzw. der
zugehrigen Frames definiert. Bei der Adressierung der Dateien, die in einem Frame angezeigt
werden sollen, gelten die gleichen Regeln wie bei der Referenzierung von Grafiken.
Wenn zu Beginn noch kein Inhalt in einem Frame anzeigen werden soll, ist die Angabe SCR=
52

wegzulaassen und ein nacktes <frame> anzugeben.


Wenn ein Frame ganz leer bleiben soll, ist anstelle von <FRAME> einfach <NOFRAME> zu notieren.
Beispiel:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
<HTNL>
<HEAD>
<TITLE>berschrift</TITLE>
</HEAD>
<FRAMESET COLS="40%,60%">
<FRAME SCR="Datei1.htm">
<FRAMESET ROWS="20%,80%">
<FRAME SCR="Datei2.htm">
<FRAME SCR="Datei3.htm">
</FRAMESET>
</FRAMESET>
</HTML>

4.6.2 Eigenschaften von Frames definieren


Jeder Frame wird, abhngig von der verwendeten Benutzeroberflche des Anwenders, in einem
eigenen Fenster angezeigt. Solche Fenster knnen verschiedene Eigenschaften haben: sie knnen
Scroll-Leisten haben oder nicht,
und sie knnen
einen Mindestabstand zwischen Fensterrahmen und Fensterinhalt haben.
Durch die Angabe SCROLLING=YES im Definitions-Tag eines Frames wird erzwungen, da das
Anzeigefenster des Frames in jedem Fall Scroll-Leisten besitzt. Durch die Angabe SCROLLING=NO
wird dies verhindert.
Wird das Scrollen des Fensterinhalts verhindern, knnen Inhalte, die grer sind als das Fenster,
nicht vollstndig angezeigt werden.
Per Voreinstellung stattet Netscape seine Frame-Fenster dann mit einer Scroll-Leiste aus, wenn der
Fensterinhalt es erfordert.
Beispiel:
<FRAMESET COLS="40%,60%">
<FRAME SCR="Datei1.htm"SCROLLING YES>
<FRAME SCR="Datei2.htm" SCROLLING=NO>
</FRAMESET>

4.6.3 Mindestabstnde zwischen Fensterrand und Fensterinhalt


Durch die Angabe MARGINWITH= (Pixel) im Definitions-Tag eines Frames wird der Abstand
zwischen rechtem bzw. linkem Fensterrand und dem Fensterinhalt bestimmt, durch die Angabe
MARGINHEIGHT= (Pixel) der Abstand zwischen oberem bzw. unterem Fensterrand und dem
Fensterinhalt.
Beispiel:
<FRAMESET COLS="40%,60%">
<FRAME SCR="Datei1.htm"SCROLLING YES MARGINWIDTH=5 MARGINHEIGH=12>
<FRAME SCR="Datei2.htm" MARGINWIDTH=5 MARGINHEIGH=12>
</FRAMESET>

4.6.4 Unvernderbare Fenstergre


Frame-Fenster sind normale Dokument-Fenster innerhalb des Browser-Hauptfensters. Solche
Dokument-Fenster kann der Anwender normalerweise in der Gre verndern.
Durch die Angabe NORESIZE im Definitions-Tag eines Frames wird verhindert, da der Anwender
53

die Gre des Frame-Fensters verndern kann. Es gengt, die Angabe bei einem Frame zu notieren.
Benachbarte Frames knnen dann auch nicht bewegt werden.
Beispiel:
<FRAMESET COLS="40%,60%">
<FRAME SCR="Datei1.htm"SCROLLING YES MARGINWIDTH=5 MARGINHEIGH=12>
<FRAME SCR="Datei2.htm" MARGINWIDTH=5 MARGINHEIGH=12 NORESIZE>
</FRAMESET>

4.6.5 Namen von Frames definieren


Frames knnen Namen erhalten. Einen benannten Frame kann in Verweisen adressiert werden, d.h.
es kann beim Verweis angeben werden, da das Verweisziel in einem bestimmten (benannten)
Frame angezeigt werden soll.
Durch die Angabe NAME= "Fenstername" im Definitions-Tag eines Frames wird dem Frame ein
Namen zugewiesen. In Verweisen kann dieser Frame unter dem vergebenen Namen adressiert
werden.
Fensternamen mssen in Anfhrungszeichen stehen, drfen nicht zu lang sein und nur aus
Buchstaben, Ziffern und dem Unterstrichen bestehen.
Bei selbst vergebenen Namen darf das erste Zeichen des Namens kein Unterstrich sein.
Beispiel:
<FRAMESET COLS="40%,60%">
<FRAME SCR="Datei1.htm"SCROLLING YES MARGINWIDTH=5 MARGINHEIGH=12>
<FRAME SCR="Datei2.htm" MARGINWIDTH=5 MARGINHEIGH=12 NAME=Beispiel>
</FRAMESET>
Folgende reservierte Fensternamen haben bei Verweisen eine spezielle Bedeutung:
_blank: Das Verweisziel wird in einem neuen Fenster angezeigt.
_self: Das Verweisziel wird im gleichen Fenster angezeigt wie der Verweis.
_parent: Das Verweisziel wird im bergeordneten Fenster angezeigt. Falls es kein bergeordnetes
Fenster gibt, wird das Verweisziel im gleichen Fenster angezeigt wie der Verweis selbst.
_top: Das Verweisziel wird im ersten Fenster einer Fensterhierarchie angezeigt. Falls es kein
bergeordnetes Fenster gibt, wird das Verweisziel im gleichen Fenster angezeigt wie der Verweis
selbst.

4.6.6 Verweise zu Frames notieren


Bei Verweisen zu anderen Dateien kann festgelegt werden, da die adressierte Datei in einem bestimmten
Frame angezeigt wird.
Zur Adressierung eines Frames in einem Verweis wird ein gewhnlicher Verweis-Befehl benutzt.
Im einleitenden Tag wird jedoch die zustzliche Angabe TARGET= (Name des Frame-Fensters) notiert. Der
Name des Fensters mu in Anfhrungszeichen stehen.
Es knnen hinter TARGET sowohl selbst definierte Fenster als auch reservierte Fensternamen angeben werden.
Beispiel:
<A HREF="Datei1.htm" TARGET="rechtes_Fenster">
Verweis zum rechten Fenster
</a>

54

5. Server
Einen HTML-Server kann man auf nahezu jedem System, welches an ein TCP/IP-Netzwerk
angeschlossen ist, betreiben.
Sogenannte Multitasking-Betriebe wie z.B. Windows NT oder eines der UNIX-Derivate eignen sich im
allgemeinen jedoch besser zum Betrieb eines WWW-Servers, als single-user-Systeme wie
DOS/Windows oder Apple Macintosh.
Obwohl die letzteren dadurch von der Mglichkeit nicht ausgeschlossen weden.
Die Frage nach dem bentigten Rechner hngt sehr stark von der zu erwartenden Benutzung ab. Will
man Daten aus einer umfangreichen Datenbank zur Verfgung stellen, welche auch noch mittels
einer aufwendigen Such-Software bei jeder Anfrage bearbeitet werden mu, so wird man nicht ohne
eine UNIX-Workstation auskommen.
Eine weitere wichtige Rolle bei der Dimensionierung von WWW-Servern spielt die Bandbreite des
Anschlusses ans Internet. Die Anforderungen an einen Server wachsen proportional zu der Menge
der bertragenen Daten und der Benutzerfrequenz.
Soll der Server im Rahmen einer greren Institution betrieben werden, so ist es ratsam, einen
Administrator zu bestimmen, welcher sich um die Verwaltung des Servers kmmert, denn es sind
einige Aufgaben zu bewltigen:
in regelmigen Abstnden mssen Backups der Daten hergestellt werden
allgemeine Systemverwaltungsaufgaben mssen ausgefhrt werden; dies ist vor allem wichtig,
wenn verschiedene Nutzer eigene Datenbestnde oder Informations-Seiten zur Verfgung stellen
die Sicherheit des eigenen Netzwerkes gegenber ueren Eindringlingen mu permanent
berprft werden
Benachrichtigungen ber Fehler mssen entgegengenommen und die Fehler beseitigt werden
vor allem wird der Server-Administrator mit der Beantwortung der technischen Fragen zu tun
haben, die die einzelnen Informationsanbieter an ihn richten
schlielich mchte der zustndige Manager immer auf dem laufenden sein, was die Nutzung der
angebotenen Informationen angeht.

5.1 Server Software


Mittlerweise gibt es eine groe Anzahl von HTTP-Servern fr nahezu jede Rechner-Plattform. Eine
Beschreibung der Eigenheiten jedes einzelnen, inklusive seiner Installation und Konfiguration, wrde
ein mehrbndiges Werk bentigen.
Im folgenden sollen deshalb nur einige der bekanntesten Server aufgelistet werden.
CERN-Server: Der CERN-Server wurde ursprnglich von Tim Berners Lee geschrieben und ist
ohne Zweifel einer der am weitesten verbreiteten Server.
Er erlaubt die Konfiguration von Zugriffsrechten und wird mit einer Anzahl ntzlicher ServerUtilities ausgeliefert.
Eine besondere Eigenschaft ist die Zwischenspeicherung von Dokumenten in einem sogenannten
proxy-Modus.
Der CERN-Server existiert fr UNIX und VMS.
Bezugsquelle:
ftp://ftp.w3.org/pub/www/src/cern_http.tar.z
NCSA-Server: Neben dem CERN-Server ist er der bekannteste Server fr UNIX-Rechner. Als
Besonderheit erlaubt er server side includes.
Er ist kostenlos zu haben, und es existiert eine umfangreiche Dokumentation fr seine Installation
und Konfiguration.
Bezugsquelle:
ftp://ftp.ncsa.edu/Web/httpd/Unix/ncsa_httpd/current/httpd_source.tar.z

55

ALIBABA: Dies ist ein Server fr Windows NT.


Er wird von der Computer Software Manufaktur zur Verfgung gestellt.
Bezugsquelle:
http://www.csm.co.at/csm/alibaba.htm
GOSERVE: Ein Server von Mike Cowlishaw von den britischen IBM laboratories fr OS/2, der das
HTTP- und das Gopher-Protokoll beherrscht.
Bezugsquelle:
http://www2.hursley.ibm.com/goserve
MacHTTP: Wie der Name erwarten lt, ein Server fr den Macintosh.
Bezugsquelle:
ftp://ftp.w3.org/pub/www/MacHTTP/Status.html
NETSIDE: Kommerzieller Server von Netscape Communications Inc.
Bezugsquelle:
http://home.mcom.com/MCOM/products_docs/server.html
PLEXUS: Server fr UNIX von Tony Sander, der als Besonderheit eine Menge ntzlicher
Werkzeuge enthlt, wie z.B. ein Archie-Gateway.
Bezugsquelle:
http://www.bsdi.com/server/doc/plexus.html
VAX/VMS-Server: Einer von mehreren Servern, die auf Vax-Computern laufen.
Bezugsquelle:
http://kcg11.eng.ohio-state.edu/www/doc/serverinfo.html
WINDOWS HTTPD: Der Server von Robert Denny luft unter Windows 3.1 und ist sehr einfach zu
installieren. Er bietet nahezu alle Eigenschaften und Mglichkeiten der UNIX-Server.
Bezugsquelle:
http://www.city.net/win-httpd

5.2 Installation
Die Installation der Server-Software richtet sich natrlich nach der Rechner-Plattform, auf der sie
laufen soll, und ist im allgemeinen nicht sonderlich kompliziert.
Hat man sich die entsprechende Server-Software per anonymous ftp besorgt (in der Regel gepackte
Archive mit den Endungen .tar .gz fr UNIX, .zip fr DOS oder .hqx fr Macintosh), ist auf jeden Fall
auf die entsprechenden Lizenzbestimmungen zu achten.
Die Serversoftware gibt es fr UNIX hufig als Quellencode oder in der binren, bersetzten Version.
Die letztere ist vorzuziehen, falls diese fr die eigene Rechner-Plattform vorhanden ist.
Mu der Quellcode erst bersetzt werden, existieren fre UNIX im allgemeinen Makefile-Dateien, die
an das eigene Umfeld angepat werden mssen.
Hilfreich sind hierbei die beiliegenden README- oder INSTALL-Dateien, die Anleitungen fr nahezu
alle Systeme zur Verfgung stellen.
Ein Problem, welches manchmal auftritt, ist, da die Pfade zu Dateien auf dem eigenen System nicht
stimen. In diesem Fall durchsuche man das Makefile und versichere sich, da die Pfade zu den
aufgerufenen Dateien auch stimmen. Ist dies nicht der Fall, so durchforste man den eigenen
Verzeichnisbaum nach diesen Dateien und ndere das Makefile entsprechend ab.
Stimmt alles, wird die Software mit einem makeinstalliert.
Nahezu jede Serversoftware kennt Standard-Verzeichnisse, in denen Dateien zum Betrieb des
Servers ewartet werden. Beispiele sind:
ein Verzeichnis fr die Konfigurationsdateien
ein Verzeichnis fr Scripte zum Erzeugen dynamischer Dokumente, also das CGI-Verzeichnis
ein Verzeichnis fr LOG-Dateien, die die Server-Aktivitt protokollieren
ein Verzeichnis fr HTML-Dokumente
ein Verzeichnis fr hufig verwendete Icons.
Die meisten sind spter ber Optionen der Konfigurationsdateien einstellbar. Der bersicht wegen
sollte man aber alle bentigten Dateien in einem groen Verzeichnisbaum unterbringen.
Die Versionen fr Windows oder Macintosh legen beim vorschriftsmigen Entpacken die ntigen
Verzeichnisse automatisch an.
56

Ist die Serversoftware installiert, mu man sie vorschriftsmig fr das eigene System konfigurieren.

5.3 Konfiguration
Wie zu erwarten, unterscheiden sich die verschiedenen Server in ihren Konfigurationsmglichkeiten
erheblich, was eine detaillierte Beschreibung an dieser Stelle ausschliet. Jedoch ist im allgemeinen
die mitgelieferte Dokumentation recht ausfhrlich. Einige allgemeine Punkte, die bei der
Konfiguration von Servern zu beachten sind, sollen hier jedoch kurz angesprochen werden.
Aktivierung der Serversoftware
Eine Konfigurationsoption, die die meisten Server anbieten, betrifft die Frage der Initialisierung des
Servers.
Zum einen knnen sie so konfiguriert werden, da sie zur Zeit des Rechnerstarts aktiviert werden,
kontinuierlich laufen und im Hintergrund die eingehenden Anfragen abarbeiten. Diese Option wird als
stand alone bezeichnet. Ein Nachteil dieser Methode ist, da die permanente Aktivitt RechnerResourcen verschlingt, die anderweitig bentigt werden knnten.
Dieses Problem tritt nicht auf, wenn der Server als inetd-Dmonproze konfiguriert wird. In diesem
Fall schlft er so lange, bis eine Anfrage eintrifft. Der Nachteil ist, da jedesmal die
Konfigurationsdateien eingelesen werden mssen, was bei einer hohen Anzahl von BenutzerAnfragen zu einer erheblichen Belastung des Rechners fhren kann.
Wie man die Aktivierung des Servers konfiguriert, sollte man sich also vorher gut berlegen.
Auswahl des Ports
Unterschiedlichen Diensten im Rahmen von TCP/IP-Netzwerken mu immer eine Portnummer
zugeornet werden.
Die Standard-Portnummer fr das HTTP-Protokoll ist 80. Nach dem Internet-Standard sind aber
Nummern kleiner als 1024 fr die Benutzung von privilegierten Prozessen reserviert, und der Start
eines HTTP-Servers kann nur von einem privilegierten Nutzer wie einem Netzwerk-Administrator
ausgefhrt werden.
Will man einen eigenen Server als nicht-privilegierten Nutzer starten, mu man bei der Konfiguration
eine Portnummer grer als 1024 angeben.
Man sollte sich aber vorher vergewissern, da die beabsichtigte Nummer nicht schon fr einen
anderen Dienst vergeben ist.
Hufig findet man die Nutzung des Ports 8080.
Name des Servers
Ein gemeinsames Merkmal aller Server-Konfigurationsdateien ist die Zuweisung eines
Servernamens. Anstatt dem Server den Namen des Rechners zuzuweisen, auf dem er luft, sollte
man immer einen rechnerunabhngigen Namen benutzen.
Am besten ist, den Dienst, den er zur Verfgung stellt, an den Anfang zu setzen, denn damit kann
man den gemeinsamen Verzeichnisbaum bei Bedarf auf einen anderen Rechner des Netzwerks
verschieben.
Natrlich mu man den Server unter diesem Alias dem Internet oder dem lokalen Netzwerk bekannt
machen.
Neben diesen Konfigurations-Direktiven kann man hufig noch die Standard-Verzeichnisse fr die
vom Server bentigten Dateien durch Aliase umbenennen, Zugriffsrechte einschrnken und einiges
mehr.

5.4 Dynamische Dokumente - CGI


Bei der Erstellung von interaktiven Anwendungen wird hufig eine Flexibilitt bentigt, die durch das
Bereitstellen von statischen HTML-Dokumenten nicht gewhrleistet ist. Dies betrifft Anwendungen,
die auf Daten zugreifen, die sich hufig ndern oder bei der Abfrage erst erzeugt werden msssen.
Ein typisches Beispiel hierfr ist die Abfrage von Daten einer Datenbank.
Um auch diese Dienste ber das WWW verfgbar zu machen, wurde das Konzept des gateways
eingefhrt. im allgemeinen ist ein gateway ein kleines Programm, oft auch scriptgenannt, das von
57

dem Serverprogramm ausgefhrt wird, Befehle vom Server akzeptiert und Daten in einer Form
wiedergibt, die vom Server als HTML-Daten an den Client weitergereicht werden knnen.
Die technische Realisierung luft nach dem folgenden Schema ab:
Der Benutzer richtet ber seinen Browser eine Anfrage an den Server. Dieser erkennt anhand des
URLs, da in diesem Fall nicht der Inhalt einer Datei abzuliefern, sondern ein Programm zu starten
ist.
Der Server fhrt das Programm mit Hilfe der Daten aus, die der Benutzer in seiner Anfrage
angegeben hat. Das Programm erzeugt daraufhin das dynamische Dokument, schreibt es auf die
Standardausgabe, und der Server bermittelt das Dokument an den Client.
Der Mechanismus, der die Zusammenarbeit zwischen einem gateway und dem Server-Programm
erlaubtm, wird als Common Gateway Interface (CGI) bezeichnet.
Strenggenommen ist die CGI-Spezifikation ein Standard: Programme oder Scripte, die diesem
Standard entsprechen, sollten dank der einheitlichen Schnittstelle unter jedem CGI-konformen
Serverprogramm ausfhrbar sein.
Gateways sind Programme oder Scripte, die mit C/C++, Perl, tcl oder einfach durch die bourne shell
oder C-shell erzeugt wurden. Benutzt man HTTPD fr Windows, kann man auch Scripte in Visual
Basic erzeugen, die die Benutzung von Dynamically Linked Libraries (DLL) als Zugriff auf WindowsAnwendungen erlauben. Damit knnen Ausgaben von Tabellenkalkulationsprogrammen oder
Datenbanken erzeugt und an den Client zurckgegeben werden.
Sehr hufig liegt der Serversoftware auch eine kleine Anzahl von mehr oder weniger ntzlichen
Beispiel-gateways bei. Zu finden sind sie hauptschlich in dem Verzeichnis cgi-bin. Im allgemeinen
kann man sie sehr gut zur Anpassung an eigene Bedrfnisse verwenden.

5.4.1 Methoden der Datenbergabe


Generell gibt es zwei Methoden, Daten an ein CGI-Script zu bergeben:
GET: bergabe durch Umgebungsvariablen
POST: bergabe durch die Standardeingabe
Wie im Abschnitt ber Formulare beschrieben, mu die Methode der Datenbergabe zwischen
Browser und Server mit Hilfe des Attributes METHOD fr die FORM-Umgebung festgelegt werden.
GET
Bei dieser Methode hngt der Browser die Daten aus dem Eingabefeld des Formulars an das Ende
des als URL referenzierten Programms. Als Trennzeichen zwischen URL und Daten dient das
Fragezeichen. Etwaige Leerzeichen werden durch das +-Zeichen ersetzt.
Im allgemeinen generieren Server noch eine ganze Reihe anderer Umgebungsvariablen, die hier
aber nicht besprochen werden sollen.
Benutzer des NCSA-Servers knnen diese mit Hilfe der URL des Scripts test-cgi aufrufen. Die
Ausgabe des Browsers sollte hnlich der folgenden aussehen:
CGI/1.0 test script report:
argc is 0. argv is .
SERVER_SOFTWARE = NCSA/1.3
SERVER_NAME = xxxxxxxxxx
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.0
SERVER_PORT = 80
REQUEST_METHOD = GET
HTTP_ACCEPT = */*, image/gif, image/x-xbitmap, image/jpeg
PATH_INFO =
PATH_TRANSLATED =
SCRIPT_NAME = /cgi-bin/test-cgi
QUERY_STRING =
58

REMOTE_HOST = xxxxxxxxx
REMOTE_ADR = xxxxxxxxx
REMOTE_USER =
AUTH_TYPE =
CONTENT_TYPE =
CONTENT_LENGTH =
POST
Bei dieser Methode werden die Daten ber die Standard-Eingabe an das CGI-Script bergeben. Sie
wird hauptschlich bei der Bearbeitung von Formularen oder bei groen Mengen zu bermittelnder
Daten verwendet

5.4.2 Ausgabe von CGI-Scripten


Soll der Server die Ausgabe eines CGI-Scripts an den Client zurckleiten, bentigt er Informationen
ber den MIME-Typ der Daten.
Diese Information mu immer am Anfang der Ausgabe in einem Content-Type:-Header erzeugt
werden. Prinzipiell kann jeder gltige MIME-Typ hier eingetragen werden. Der hufigste wird jedoch
der Content-Type: text/html sein, da im allgemeinen HTML-Dokumente verschickt werden.
Weitere HTTP-Header knnen angegeben werden, sind aber nicht vorgeschrieben.
Alternativ kann eine Ausgabe auch nur aus einer URL bestehen, die andeutet, da die Anfrage an die
Adresse des URL umgeleitet werden soll. Befindet sich dieses Dokument auf dem gleichen Rechner,
schickt der Server dieses Dokument eigenstndig an den Client.

Format
HTML
Text
GIF
JPEG
MPEG
PostScript

Content-Type
text/html
text/plain
image/gif
image/jpeg
video/mpeg
application/postscript

5.4.3 Das Schreiben von CGI-Scripten


Zum Schreiben von CGI-Scripten kann nahezu jede Programmiersprache, die auf dem ServerRechner zur Verfgung steht, benutzt werden.
Sehr hufig wird jedoch PERL (Practical Extraction and Report Language) aufgrund seiner mchtigen
Textverarbeitungsfunktion verwendet. Tatschlich sind auf dem Internet schon eine groe Anzahl von
CGI-Scripts fr die verschiedenen Anwendungen zu finden.
Ohne hier in Details gehen zu wollen, sei ein extrem einfaches Beispiel eines Bourne-Shell-CGIScripts gezeigt, das ein einfaches Text-Dokument erzeugt:
#!/bin/sh
DATE=/bin/date
echo Content-Type: text/plain
echo
if [-x $DATE]; then
$DATE
else
echo Kann das date-Kommando auf diesem System nicht finden
fi
Dieses minimale Script macht nichts anderes, als ein Dokument mit dem aktuellen Datum und der
Uhrzeit zu erzeugen.

59

5.4.3.1 Die UNIX-Bourne-Shell


Unter Unix hat sich die Grenze zwischen Betriebssystem und dem Bereich der Anwendungssoftware
merklich von traditionellen Betriebssystemen fortbewegt. Der Kern des Unix-Betriebssystems wurde
kleiner und modularer. Was bisher stets als Betriebssystem-Code (O/S-Code) betrachtet wurde,
wurde nun in derselben Umgebung implementiert, in welcher Anwendungsprogramme laufen.
Die bedeutensten solcher O/S-Module sind die, die direkt mit dem Benutzer kommunizieren, indem
sie Abfragen zwischen Benutzer und internem Betriebssystem bearbeiten - die Shells.
Eine Menge von Arbeiten lassen sich nicht leicht in Shell-Skript-Programmen erledigen, und viele gut
geschriebene Shell-Skripts sind schwer zu lesen.
Die Syntax und Funktionen sind schwer zu erklren:
Man ist auf viele verschiedene spezielle Operatoren oder Metazeichen angewiesen
Die Bedeutung bestimmter Metazeichen ndert sich stark je nach Kontext
ein Escape-Zeichen ist notwendig
willkrlich benannte Objekte, wie z.B. prompt, haben eine besondere Bedeutung
Die enorme Flle der Mglichkeiten in der Shell-Umgebung ist jedoch verfhrerisch. Eine Menge
Features der Shell-Programmierung machen sie attraktiv:
die Mglichkeit, unabhngig voneinander geschriebene Programme scheinbar ohne Anstrengung
in jede beliebige Sprache oder Sprachgemische zu integrieren
die Krze des Edit/Test/Debug-Zyklus, weil die Skripts interpretiert und nicht kompiliert werden
das einfache Zugreifen auf jedes Feature oder jede Funktion innerhalb des Unix-Betriebssystems

5.4.3.2 Die Grundlagen der Bourne-Shell


Man mu einige Schlsselkonzepte kennen, um Befehle in Shell-Skripts verstehen zu knnen. Auf
der niedrigsten Ebene ist die Shell einfach ein Programm, in das Befehle eingegeben werden, wenn
es sich meldet.
Es bersetzt dann diese Befehle in bestimmte Aktionen. Entweder ndert es sein RAM-Bild im
System oder es macht eine Reihe von Betriebssystemaufrufen.
Gebruchliche Befehle sind z.B.:
ls -l
erstelle eine Katalogliste in langem Format
cat food gib die Datei foodaus
who
erstelle eine Liste der aktuellen Systembenutzer
In jedem dieser Befehle findet die Shell eine gleichnamige ausfhrbare Datei, erzeugt einen
einzelnen Proze und startet das Programm.
Der grundlegende Datenfluplan einer Shell-Operation lautet:
Starte und initialisiere
wenn die Shell gesztartet ist, enthlt sie bestimmte Umgebungsvariablen und Parameter, die sie
von dem Programm, welches die Shell gestartet hat, erhlt.
Mit diesen Parametern wird die Shell-Prozedur eingerichtet. Auerdem kann vor irgendwelchen
anderen Befehlen die Profildatei des Systems .profile eingelesen werden.
Erhalten eines Befehls
ein Befehl besteht aus einer Reihe von Wrtern, die vom Terminal oder einer Eingabedatei
eingelesen werden; das erstze dieser Wrter ist der Name des Befehls
Handelt es sich um einen internen Befehl ?
der erhaltene Befehlsname wird mit einer Liste der Befehle verglichen, die die Shell kennt
Befehlsausfhrung
der interne Befehl wird ausgefhrt. Einer dieser Befehle ist exit, der die Shell terminieren lt.

60

Andere Befehle ndern den Kontrollflu eines Shell-Skript-Programms, und weitere ndern den
Datenbereich von Variablen, die die Shell speichert
Ist der Befehl erreichbar ?
wenn der Befehl nicht intern vorhanden war, wird er als Dateiname in einem der Directories, die in
der Umgebungsvariablen PATH benannt wurden, gesucht. Wenn dort keine entsprechende Datei
vorhanden oder die Datei nicht ausfhrbar ist, milingt dieser Test
Gib Fehlermeldung aus
die hier auszugebende Fehlermeldung lautet: Falscher Befehl oder Dateiname, d.h. der Befehl
ist kein interner Befehl und er ist kein Dateiname eines ausfhrbaren Programms
fork()
von diesem Punkt aus laufen zwei Prozesse ab: der Vater- und der Sohnproze
Soll das Programm im Hintergrund laufen ?
der Vaterproze besitzt die Option, den Proze in einer Schleife fortzusetzen. Er wird dies tun,
wenn ein Und-Zeichen (&) diesen Befehl terminierte.
Warte, bis der Sohnproze endet
wenn der Vaterproze warten mu, fhrt er einen wait()-Systemaufruf aus.
Neues Programm laden und ausfhren
der Sohnproze, der als Kopie der Shell startet, fhrt zwischenzeitlich einen der execSystemaufrufe aus, um sich selbst mit dem vorgesehenen ausfhrbaren Programm zu
berschreiben. Dieses neue Programm wird dann seinem eigenen Verlauf entsprechend
fortfahren.
Ende
frher oder spter stoppt das Programm, welches durch einen Sohnproze ausgefhrt wird. Dann
wird ein Signal an den Vaterproze gesendet, woraufhin dieser das Warten, bzw. das, was er
gerade tut, beendet.

5.4.3.3 Shell-Prompt
Wenn die Shell interaktiv eingesetzt wird, d.h. als Kommandointerpreter, gibt sie jedesmal einen
prompt-String aus, wenn sie auf die Eingabe wartet.
Das $-Zeichen wird fr einen normalen Benutzer, das #-Zeichen fr einen Super-User verwendet.
Akzeptiert die Shell zustzliche Eingabezeilen, die sie vor der Ausfhrung eines Befehls bentigt,
erscheint ein zweites Prompt. Dieses zweite Prompt ist normalerweise das >-Zeichen.
Der Benutzer kann die Prompts mit Hilfe der Variablen PS1 und PS2 beliebig ndern.

61

5.4.3.4 Meta-Zeichen
Meta-Zeichen haben eine besondere Bedeutung fr die Shell. Zunchst eine Tabelle der MetaZeichen; die Verwendung dieser Zeichen wird spter in den entsprechenden Unterabschnitten
erlutert:
Zeichen

Name

bliche Verwendung

Semikolon

beendet einen Befehl

&

Und-Zeichen

zeigt Hintergrund an; kann auch mit dem <oder >


verwendet werden, um ihre Bedeutung zu ndern

linke Klammer

Anfang des Einschlusses einer Befehlsliste, die von einer


Sub-Shell ausgefhrt werden soll

rechte Klammer

beendet den bei der linken Klammer begonnenen Einschlu

Pipe

Zeichen fr die Pipeline

Karat

ltere Version des Pipe-Zeichens

<

kleiner als

kennzeichnet eine Operation an einer Eingabedatei

>

grer als

kennzeichnet eine Operation an einer Ausgabedatei

Doppelpunkt

Beginn eines Kommentars

Doppelkreuz

Beginn eines Kommentars

Anfhrungszeichen

gruppiert einen String zu einem einzelnen Wort

Quote

schiebt Interpretation des internen Strings auf

Back-Quote

Befehlssubstitution

Dollarzeichen

Variablen- (Parameter-) Substitution

<Zeilenende>

beendet einen Befehl

<Leerzeichen>

beendet ein Wort

<Tab>

beendet ebenfalls ein Wort

Jedes Meta-Zeichen kann auch fr seine ursprngliche Bedeutung stehen, indem ihm einfacvh ein
Backslash (\) vorangestellt wird. Es wird dann nicht als Spezialzeichen verwendet.
Der wichtigste Nutzen dieser Mglichkeit besteht darin, das Zeilenende zu umgehen. Normalerweise
beendet ein Zeilenende einen Befehl. Es kann jedoch passieren, da ein langer Befehl in mehrere
Zeilen aufgeteilt werden mu.
Dazu werden alle Zeilenende-Zeichen, auer dem letzten, mit einem Backslash angefhrtt.

5.4.3.5 Shell-Pipelines
Ein Befehl ist eine Sequenz von einem oder mehreren Wrtern, die durch Leerstellen voneinander
getrennt sind. Das erste Wort wird stets so behandelt, wie im obigen Datenfluplan besprochen.
Unter Leerstellen versteht man einen String, der aus einer beliebigen Kombination eines oder
mehrerer Leerzeichen, Tabs oder Escape-Zeilenende-Zeichen besteht.
Eine Pipeline besteht aus einem oder mehreren Befehlen, die durch das Pipe-Symbol (|)
voneinander getrennt sind.

62

5.4.3.6 Kommandoparameter
Jeder Befehl ist mit einer Reihe von Parametern versehen, die je nach Programm hinsichtlich ihrer
Option und Art unterschiedlich verwendet werden. In der Regel stellen diese Parameter Optionen und
Daten zur Verfgung, die das Programm kontrollieren.
Bei einem Programmaufruf ist der erste Parameter (mit der Nummer Null) immer der Name des
Programms selbst, so da ein Programm stets wenigstens einen Parameter besitzt. Die
nachfolgenden Parameter werden kopiert, nachdem die Shell eine Reihe von Substitutionen
durchgefhrt hat. Diese Substitutionen sind:
1. Variablen- (Parameter-) Substitution, angefhrt durch das $-Zeichen
2. Zeichen, die einen Pfadnamen erzeugen, was durch Meta-Zeichen
*, ?und /angezteigt wird
3: Befehlssubstitutionen, die durch das Meta-Zeichen `(Back-Quote) erzeugt werden.
Jede dieser Substitutionen ndert die Zeile, auf der sie erscheint, bevor die Shell den Befehl ausfhrt.
Das Ergebnis, das mit dem Programm oder dem Befehl echogetestet wird, wird an das Programm
bergeben, das als einme Reihe von Wrtern abgearbeitet wird.
Bei Wrtern, die Leerzeichen enthalten, mu der String in Anfhrungszeichen erscheinen; die
Anfhrungszeichen erscheinen nicht als Teil der Parameterwrter. Man kann auch ein ZeilenendeZeichen auf diese Weise in einen Parameter einschlieen. Die Anfhrungszeichen bewirken
auerdem, da die Shell Backslash-Zeichen als Parameter abarbeitet. Dies ist besonders wichtig
beim Befehl echo, da er bestimmte Zeichen als Befehle interpretiert, wenn ihnen ein Backslash
vorangestellt ist.
Innerhalb des Paares einfacher Anfhrungszeichen wird jedes Zeichen behandelt, als stnde dem
Zeichen ein Backslash voran. Dad bedeutet, da Operationen wie die Variablen (Metazeichen $)
oder Befehlssubstitutionen (Metazeichen ) in einem String zwischen einfachen Anfhrungszeichen
nicht erkannt werden.
Unvollendete einfache () oder doppelte ( ) Anfhrungsfehler sind ein Syntaxfehler.

5.4.3.7 Das Modifizieren von Ein-/Ausgabe


Filter sind deshalb ntzlich, weil ihre Ein- und Ausgaben an eine beliebige Quelle oder Zielvorrichtung
angeschlossen werden knnen. Es gibt folgende Quellen und Ziele:
1. ein physikalisches Gert
2. eine Diskettendatei
3. eine Pipeline von oder zu einem anderen Programm.
Die Shell stellt diese Verbindungen her. Es mssen nur die richtigen Meta-Zeichen an den
entsprechenden Stellen eingesetzt werden.
Die Standardeingabe ist mit der Tastatur und die Standardausgabe mit dem Bildschirm verbunden.
Der Befehl lsschreibt auf die Standardausgabe und erscheint daher auf dem Bildschirm.
Die Operatoren Kleiner(<) und Grer(>) dienen zur Umleitung der Standardeingabe und
Standardausgabe.
Beispiel:
Der Befehl
who > Gruppe
leitet die Ausgabe des Befehls whoan die Datei Gruppeum, die normalerweise auf dem Bildschirm
erscheinen wrde. Die Datei Gruppewird, wenn ntig, neu erzeugt oder die vorhandene Datei
Gruppewird berschrieben.
Der Befehl
who >> Gruppe
hngt die Ausgabe an eine existierende Datei Gruppean statt sie zu berschreiben.
Entsprechend kann mit <bzw. <<die Standardeingabe gendert werden. Der <<-Operator kann
durch ein Minus-Zeichen (-) erweitert werden, wodurch alle fhrenden Tabs vom Anfang der Eingabe
entfernt werden.
Es existieren folgende Operatoren zur Dateimanipulation:
<
Umlenken des Standardeingabe
63

>
Umlenken der Standardausgabe zum Erzeugen / berschreiben einer Datei
>>
Umlenken der Standardausgabe zum Erzeugen / Anhngen einer Datei
<<
Umlenken der Standardeingabe vom folgenden Text
n<
ffne fr Eingabe von Datei-Deskriptor n
n>
ffne fr Ausgabe von Datei-Deskriptor n (berschreiben)
n>>
ffne fr Ausgabe von Datei-Deskriptor n (Anhngen)
n<<
ffne fr Eingabe von Datei-Deskriptor n des folgenden Textes
<&n
verbinde Standardeingabe mit offener Datei in Datei-Deskriptor n
<&schliee Standardeingabe
>&n
verbinde Standardausgabe mit offener Datei in Datei-Deskriptor n
>&schliee Standardausgabe
n<&m verbinde fr die Eingabe Datei-Deskriptor n mit Datei-Deskriptor m
n<&- schliee Datei in Datei-Deskriptor n
n>&m verbinde fr die Ausgabe Datei-Deskriptor n mit Datei-Deskriptor m
n>&- schliee Datei in Datei-Deskriptor n
Das Wort verbindensteht hier fr quivalent machen.
Die Standardeingabe und -ausgabe lt sich also auf Pipelines umlenken, so da die Ausgabe eines
Programms in die Eingabe eines anderen mndet.

5.4.3.8 Shell-Variablen
Die Shell enthlt einen Datenbereich von Variablen, von denen sie einige automatisch setzt, andere
vom Benutzer- oder Skriptbefehlen, die sie ausgefhrt hat, gesetzt wurden.
Shell-Variablen sind immer Strings; es gibt keine numerischen Variablen. Es knnen jedoch auch
Zahlen in Variablen gespeichert werden und Kalkulationen darber mit dem Befehl expr
durchgefhrt werden.
Eine andere Eigenart der Shell-Syntax ist die Unterscheidung zwischen einer Variablenreferenz und
einer Variablendefinition. Zum Setzen einer Variablen gilt die Syntax:
string=Dies ist ein String
word=DiesisteinWort
number=123.
Leerzeichen, die nicht zwischen Anfhrungszeichen stehen, sind beim Setzen der Variablen tabu.
Taucht ein Leerzeichen vor dem Gleichheitszeichen auf, wird der Variablenname als
Befehlsbezeichnung aufgefat. Ein Leerzeichen innerhalb des Strings veranlat die Shell, einen
neuen Befehl zu starten.
Beispiel:
Bei der Eingabe von
word=Dies ist ein String
versucht die Shell ist ein Stringals einen anderen Befehl zu bewerten, nachdem die den String Dies
in die Variable word gespeichert hat. Bei Verweisen auf die Variablen sind die Befehle wie folgt zu
schreiben:
echo Der Inhalt von string ist $string
echo Der Inhalt von word ist $word
echo $number / 10.
Sobald die Shell die Befehlszeile empfngt, scannt sie sie bei einem Dollarzeichen ohne
Anfhrungszeichen und ersetzt sie mit einem Wert, bevor sie den Befehl interpretiert. Die Ausgabe
der obigen drei Befehle sieht also folgendermaen aus:
Der Inhalt von string ist Dies ist ein String
Der Inhalt von word ist DiesisteinWort
12.
Es gibt eine Reihe von Variationen zum $-Operator. Diese Variationen testen den aktuellen Status
der Referenzvariablen und fhren eine bestimmte Aktion aus, wenn die Variable nicht bereits gesetzt
oder ihr Wert Null war.
In allen Fllen - auer beim Modifizierer +- wird der Wert der Variablen wie in einer einfachen
Referenz interpoliert, wenn die Variable bereits gesetzt oder ihr Wert nicht Null war. Diese
Modifizierer, die auf varverweisen, sind:
64

Referenz

Aktion, wenn var nicht gesetzt oder Null war

$[var:-word]

interpoliere word

$[var:=word]

setze var an word und interpoliere den Wert von word

$[var:?word]

drucke den Wert von word und terminiere die Shell; wenn word
ausgelassen wird, gebe aus: Parameter Null oder nicht gesetzt

$[var:+word]

interpoliere nichts

Der Doppelpunkt (:) kann ausgelassen werden, wenn lediglich getestet wird, ob die Variable gesetzt
wurde oder nicht. Dies impliziert, da in diesem Fall die Interpolation des Wertes Null akzeptiert wird.

5.4.3.9 Die Umgebung


Shell-Variablen knnen las lokale oder globale Variablen betrachtet werden.
Auf eine lokale Variable und deren Inhalt kann nur die Shell zugreifen, die sie definiert hat. Auf
globale Variablen knnen auer der aktuellen Shell alle Shells und andere Programme, die von der
aktuellen Shell gestartet werden, zugreifen.
Wird eine Shell gestartet, erbtsie eine Umgebung von ihrem Vorfahren. Die Shell kann jede
Variable verndern und nachfolgend mit dem Befehl exportin die Umgebung setzen.

5.4.3.10 Befehlssubstitution
Viele Sprachen sind in der Lage, Quellcode auszufhren, der gleichzeitig assembliert wird. ShellSkripts haben fr diesen Zweck einen einfachen Operator: das Back-Quote-Zeichen ( ` ).
Der String, der sich innerhalb des Back-Quote-Paares befindet, wird als ein Shell-Befehl bewertet.
Jede Ausgabe, die durch diesen Befehl fr die Standardausgabe erzeugt wurde, wird in eine Liste von
Wrtern assembliert und als Teil des Befehls, der zwischen den Back-Quotes steht, betrachtet.
Die Ausgabe zwischen Back-Quotes wird normalerweise als eine Wrterliste assembliert, auch wenn
Zeilenende-Zeichen innerhalb der Ausgabe vorkommen. Eine interessante Ausnahme zeigt sich in
folgendem Beispiel:
CLEAR= `tput cleat`
DATE= `date`
Mit dem Befehl tputerhlt man CRT-Bildschirmkontrollstrings unabhngig vom jeweiligen Gert. Der
Befehl dategibt eine Reihe von Wrtern zurck, die beispielsweise so aussehen knnten:
DATE=Thu Nov 26 16:28:53 PST 1987
was nicht funktioniert htte, weil Noveigentlich als Anfang eines neuen Befehls angesehen werden
mte. Dies geschieht jedoch nicht, und die Variable DATEwird dem gesamten String zugewiesen.

5.4.3.11 Pfadnamen-Substitution
Viele Befehle betrachten eine Liste von Dateinamen als Parameter. Hufig kann die Liste der Namen
als ein Dateisatz oder Dateiuntersatz von Dateien im Dateisystem angesehen werden. Die Shell kann
diese Namen automatisch nachsehen, wenn ihr ein Muster geliefert wird, welches die Shell auf das
Gesuchte anpat.
Ein Muster ist ein String aus einem oder mehreren Zeichen, von denen eins oder mehrere
Spezialzeichen sind, die auf einen bestimmten Dateisatz angepat sind. Diese Spezialzeichen sind:
*
entspricht jedem beliebigen String, auch dem Null-String
?
entspricht jedem beliebigen String, auer dem Null-String
[]
entspricht jedem Zeichen, das durch die in den Klammern
stehende Definition definiert wird.
65

Jedes Zeichen im Muster, sofern es nicht zu den hier genannten gehrt, mu dem Dateinamen
entsprechen, auf den zugegriffen werden soll. Beispiele fr Muster sind:
*
alle Dateien
*.c
alle Dateien, die auf .cenden
fool*
alle Dateien, die mit foolbeginnen
??
alle Dateien mit zwei Zeichen
cash.???
alle Dateien, die mit cashbeginnen und mit drei weiteren Zeichen enden
[abc]*
alle Dateien, die entweder mit a, boder cbeginnen
[am-z]??? alle Dateinamen, die aus vier Zeichen bestehen und mit einem a
oder irgendeinem Zeichen zwischen mund zbeginnen
[!fo]*
Dateien, die nicht mit einem foder obeginnen
Im interaktiven Befehlsmodus drngen sich viele Anwendungen auf, so z.B.:
vi *.c
bearbeite alle C-Programme im aktuellen Directory unter Verwendung von vi
rm *temp
entferne jede Datei im aktuellen Directory, die auf tempendet
ls -l[A-Z]* erstelle ein Listing im langen Format aller Dateien im aktuellen
Directory, die mit Grobuchstaben beginnen
Die Shell behandelt den Punkt (.) etwas anders als andere Zeichen in der Musteranpassung. Gem
Konvention werden Dateien, welche mit einem Punkt beginnen, normalerweise als verborgene
Dateien betrachtet.
Diese Dateien sind bis auf einige Ausnahmen nicht fr eine Verwendung vorgesehen, verhalten sich
ansonsten aber wie alle anderen Dateien. Auf die Datei .profile beispielsweise, die von der Shell bei
Initialisierung gelesen wird, greift der Benutzer nur dann zu, wenn sie gendert werden mu. Diese
Datei whrend routinemiger Musteranpassungen dauernd auftauchen zu lassen, wre reichlich
unpraktisch. Aus diesem Grunde passen Dateien, deren Namen mit einem Punkt beginnen, auf kein
Muster, sofern sie nicht ausdrcklich genannt werden.
Mit einem Muster werden auch viele Directories gesucht. Will man beispielsweise das .profile-Skript
jedes Benutzers sehen, gibt man folgenden Befehl ein:
cd /usr
more */.profile.
Das im Befehl moreverwendete Muster erzeugt einen relativen Pfadnamen fr jedes Directory,
wofr der Benutzer die Sucherlaubnis hat und welches eine .profile-Datei enthlt. moreerscheint
dann mit einer Liste von Pfadnamen, mit denen es operieren kann.

5.4.3.12 Asynchrone (Hintergrund-) Tasks


Die Shell mu nicht auf die Terminierung eines laufenden Programms warten, um mit dem nchsten
Befehl fortzufahren. Der Benutzer whlt diesen Modus, indem er den Befehl mit einem Und-Zeichen
(&) beendet. Dabei wird die Shell-Prozenummer-I.D. des neu erzeugten Prozesses ausgegeben.
Die Shell setzt die Variable ! auf dieselbe Prozenummer, wodurch einem Shell-Skript erlaubt wird,
diese Nummer fr die Verwendung in einem spteren Befehl zu speichern. Mit dem Statement kill
wird ein Signal an diesen unabhngigen Proze gesendet.
Beispiel:
server&
# starte einen Proze namens server
serverpid=$!
# speichere die Proze-ID von server
...
# mache andere Dinge
kill -16 $serverpid
# teile server mit, etwas zu tun
Ein Programm, das einen oder mehrere Sohnprozesse erzeugt, erwartet ein Rckgabesignal. Deshalb
speichert die Shell eine Liste der Prozenummern ihrer Abkmmlinge: so wei der Befehl wait,
wenn er aufgerufen wird, worauf er wartet.
Man mu darauf achten, die Ausgabe jedes abzuarbeitenden Hintergrundprozesses auf ein anderes
Ziel als den Bildschirm zu leiten. Wird dies unterlassen, wird die Ausgabe ohne Rcksicht auf die
anderen Vorgnge auf dem Bildschirm auftauchen. Bei der Eingabe wird ein Hintergrundprogramm,
dem keine andere Standardeingabe als das Terminal zugewiesen wurde, ein EOF (End of File)
empfangen, sobald es den ersten Leseversuch unternimmt. Die meisten Programme werden auf
diese Art sofort beendet.
66

5.4.3.13 Die Programmierung der Bourne-Shell


Man erlernt die Shell-Programmierung am besten anhand von Beispielen. Es werden im Folgenden
Beispiele fr die Verwendung jedes der Shell bekannten internen Statements aufgefhrt werden.
Syntax-Fehler-Meldungen sind in der Regel nichtssagende Mitteilungen, die dem Programmierer mit
Sicherheit nur eines zu erkennen geben: Hier lief was falsch. Meist erweist sich der Fehler als ein
fehlendes Semikolon.
Ein Shell-Skript ist in einer Datei gespeichert, die whrend Iterationsschleifen - und zweigen
wiederholt gelesen werden kann. Das Programm kann wie jedes andere Programm in einer
kompilierten Sprache durch die Verwendung seines Dateinamens als erstes Wort eines Befehls
ausgefhrt werden. Zwischen einer Skriptdatei und einer regulren Textdatei gibt es keine
Unterschiede, und sie mssen bis auf folgendes nicht besonders vorbereitet werden:
1. die Markieruntg fr den execute-Modus mu mit dem Systemaufruf oder
Befehl chmodgesetzt werden
2. wenn das Bourne-Shell-Skript von einem Befehl aus einer C-Shell ausgefhrt
werden soll, sollte die erste Zeile nur einen Doppelpunkz (:) in der ersten
Position enthalten; mit dieser Konvention unterscheidet die C-Shell
C-Shell-Skripts von Bourne-Shell-Skripts.
Zur Ausfhrung des Shell-Skript-Programms mu lediglich der Name der Datei, in welcher sich das
Skript befindet, eingeben - vorausgesetzt, die Datei befindet sich in einem der Directories der
Suchwegliste.
Das Skript kann auf dieselbe Weise auch aus einem anderen Skript heraus aufgerufen werden.

5.4.3.14 Kommentare
Jeder Programmierer kennt den Einsatz von Kommentaren in Programmen. In der Bourne-Shell wird
ein Kommentar gekennzeichnet, indem die Zeile mit einem Doppelpunkt (:) oder einem Doppelkreuz
(#) beginnt. Der Kommentar endet mit dem nchsten Zeilenende-Zeichen, das nicht in
Anfhrungsstrichen steht.
Der Doppelpunkt ist eigentlich kein Kommentarindikator, sondern ein NOP-Befehl (No More
Processes). Um wirksam zu werden, mu er als erstes Wort eines Befehls erscheinen. Der
nEbeneffekt des Doppelpunktes besteht darin, da er die Statusvariable $! auf Null setzt.
Das Metazeichen #kann an beliebiger Stelle einer Zeile erscheinen.

5.4.3.15 Positionale Parameter


Man kann sich ein Shell-Skript-Programm wie eine Unterroutine mit Parametern vorstellen. Alle
Wrter auf einer Befehlszeile werden in positionaleParameterkopeirt, auf die das Shell-Skript dann
zugreift.
Der Befehl
add 15 12
definiert drei positionale Parameter:
$0 wird auf add gesetzt (Prameter 0)
$1 wird auf 15 gesetzt (Parameter 1)
$2 wird auf 12 gesetzt (Parameter 2).
Dies wird fr beliebig viele Parameter fortgesetzt. Sieht das Shell-Skript addso aus
: add zwei Zahlen
if test $# != 3; then
# falls falsche Parameteranzahl
echo Falsche Parameterzahl #Fehlermitteilung
exit 1; fi
# Programmende
expr $1 + $2
# berechne mit zwei Parametern

67

dann ist die Ausgabe des Befehls add 15 12


27.
Man beachte die Verwendung von $# im Statement test. Dieses Symbol wird automatisch von der
Shell auf die Anzahl der fr die aktuelle Shell erreichbaren Parameter gesetzt.
Ein weiteres Objekt ist $* (oder als Alternative $@ ), an dessen Stelle man $1 $2 ... fr alle
Parameter, die beim Aufruf der Shell oder durch den letzten Befehl setspezifiziert wurden, eingeben
knnte.
Man wird oft darauf zugreifen, wenn ein anderes Skript oder Programm mit den Parametern des
aktuellen Skripts aufgerufen werden soll.

5.4.3.16 Exit-Status-Codes
Jeder Befehl wird beendet und hinterlt einen Exit-Status-Code, der fr einige Zwecke abgefragt
werden kann.
Man kann ihn sich als Rckgabewert einer Unterroutine vorstellen, obwohl er auf eine einzige Zahl
begrenzt ist.
Der hauptschliche Nutzen des Exit-Status-Code besteht darin, die erfolgreiche bzw. nicht
erfolgreiche Durchfhrung eines Befehls zu testen. In den meisten Fllen bedeutet die Rckgabe
einer Zahl ungleich Null einen Fehler. Im Fall des Statemants readgibt es jedoch zwei Bedeutungen:
entweder Fehler oder EOF (End of File).
Referenzen auf Exit-Status-Codes knnen entweder implizit oder explizit erfolgen.
Hier eine explizite Referenz:
mkdir test
echo mkdir endete mit: $?
Das Symbol $?wird durch den Exit-Status-Code ersetzt, den der letzte vollendete Befehl
zurckgegeben hat. Man beachte, da der Befehl echoin diesem Beispiel diesen Wert
berschreiben wrde, weil echoselbst einen Exit-Status-Code zurckgibt, der hchstwahrscheinlich
Null wre.
Explizite Referenzen kommen nur selten vor. Die Statements ifund whilebearbeiten implizite
Referenzen.
Ein Skript, das einen expliziten Exit-Status-Code zurckgibt, wird mit dem Befehl exitbeendet, auf
den eine beliebige Zahl folgen kann:
exit 1
Damit wird die Shell beendet und eine 1 an das aufrufende Programm zurckgegeben. Endet das
Shell-Skript ohne exit, wird der Exit-Status-Code des letzten ausgefhrten Befehls zurckgegeben.

5.4.3.17 Das Statement for


Mit dem Statement forwerden Schleifen in einem Shell-Skript programmiert. Dabei wird eine
Kontrollvariable an die nachfolgenden Punkte einer Liste bergeben und die Befehle der Schleife
ausgefhrt.
Es gibt zwei grundlegende Methoden bei der Programmierung:
for name do list done
und
for name in word ... do list done.
Mit der ersten Form wird die Variable namenacheinander auf jeden einzelnen Wert in den
positionalen Parametern gesetzt, indem die Befehle in listjedesmal einmal ausgefhrt werden.
Das obige Programm addkann so verfeinert werden, um beliebig viele Parameter zu erlauben:
: add Zahlen
sum=0
for number do sum= expr $sum + $number ; done
echo $sum
68

Bei der Eingabe von


add 15 2 9 31
kommt die Ausgabe
57.
Die zweite Form der for-Schleife funktioniert genauso, setzt aber eine gegebene Liste von Werten in
die Variable name, wenn sie die Befehle in listausfhrt.Meistens wird die Liste anhand von Mustern
erzeugt.
Wenn bei Programmen der Programmtitel in der ersten Zeile steht, kann der Titel ausgelesen und auf
die Standardausgabe gelesen werden:
for file in *.c; do
echo $file: \c
sed lq $file
done
Die Shell erweitert dann das Objekt *.c(.c Endung der Programme) in alle Dateinamen im aktuellen
Directory, die auf .c enden. Die Ausgabe knnte z.B. wie folgt aussehen:
main.c
/* Hauptprogramm */
recread.c
/* Routine zum Record lesen */
recwrite.c
/* Routine zum Record schreiben */
sedist ein ntzlicher Stream-Editor, der hier zum Auslesen der gewnschten Daten aus dem
Datenstrom dient. Der Aufruf von sederfolgt mit dem Kommando
sed program file,
darin ist programeine Folge von Editor-Befehlen fr sed. sedliest die angegebene Datei file,
fhrt die Editor-Befehle auf den Inhalt von fileaus und gibt das Ergerbnis auf die Standardausgabe
aus. Statt die Editor-Befehle in der Kommandozeile beim Aufruf von sedanzugeben, knnen sie
auch in einer Datei progfileabgelegt werden. Der Name von progfilewird hinter dem Flag -f(fr
file) angegeben:
sed -f progfile file
Das Flag -nbewirkt die unbedingte Ausgabe auf die Standardausgabe; die sed-Befehle fr die
Ausgabe heien p (print) und w (write). Mit
sed -n 1,10pfile
werden die ersten 10 Zeilen der Datei fileausgegeben.
Mit dem Flag s(fr substitude) kann sedbenutzt werden, um in einer Datei oder Pipe Zeichenketten
zu suchen und zu ersetzen. Der Befehl hat die Form
sed s /pattern/string/ flag
und ersetzt Zeichenfolgen, welche dem Muster pattern entsprechen durch Zeichenketten von dem
Muster string. Flags sind
g
bewirkt die Ersetzung in der ganzen Befehlszeile
p
die Zeilen, die ersetzt werden, werden zugleich ausgegeben
w file
wie p, nur wird Ausgabe in die Datei file geschrieben.
Gelscht werden Zeilen mit dem Befehl d(delete), wobei lschen hier nur heit, da die Zeilen nicht
ausgegeben werden, d.h. es findet keine Entfernung der Zeilen in der Eingabedatei statt.
Zum Einfgen von Zeilen dienen die Befehle a(append, hnge an) und i(insert, fge ein). afgt
Text hinter jede adressierte Zeile ein, idavor.
Zu beachten ist die Verwendung des Semikolons (;) im Statement for. Die Shell mu unbedingt
wissen, da das Wort donicht zum Wort listgehrt.

5.4.3.18 Das Statement case


Mit dem Statement casewird eine Fallunterscheidung ermglicht, d.h. es wird eine Reihe von
Programmteilen mit Hilfe bzw. unter Kontrolle von Variablen ausgewhlt.
Die allgemeine Form lautet
case word in caselist esac
wobei caselistdie folgende Form besitzt:
pattern) list ;;
und so oft wie gewnscht wiederholt wird. Das Zeichen Klammer zuterminiert pattern, das
Konstruct ;;terminiert list.

69

Beispiel:
CLEAR= `tput clear
cat <<-SCREEN
$[CLEAR] Grundlegende Benutzer-Optionen
1. who:
gib Liste momentan eingeloggter Benutzer aus
2. df:
gib freien Diskettenplatz aus
3. brf:
sende Brief an Benutzer
4. end:
beende Shell
5. reboot:
starte Rechner neu
Geben Sie die Nummer oder das erste Zeichen des Kommandos ein:
SCREEN
read ANSWER
case $ANSWER in
1| w*) wer;;
2| d*) df;;
3| b*) echo Bitte Empfngernamen eingeben
read ANSWER
echo Bitte Brief eingeben
echo Ende mit STRG-D
mail $ANSWER
4| e*) exit;;
5| r*) reboot;;
*)
echo Falsche Eingabe
exit 1;;
esac
Wenn dieses Script abluft, kann der Benutzer eine der Ziffern der Nenoptionen oder den jeweils
ersten Buchstaben der Befehle eingeben. Nach dem Statement casewerden nur die Befehle hinter
dem Muster ausgefhrt, das dem Wert von $ANSWER entspricht.
Das Statement casegehorcht folgenden Regeln:
1. Der Wert von wordwird mit allen Mustern in der Reihenfolge ihres Erscheinens
verglichen. Die Befehle hinter dem ersten erfolgreichen Versuch werden ausgefhrt.
2. Wenn das Programm auf ein ;;-Symbol stt, springt es auf das Statement hinter
dem Wort esac. Es ist kein Break-Statement wie bei switchin C++ ntig.
3. Die Muster fogen denselben Regeln wie die Muster in der Erzeugung von Dateinamen,
auer in folgenden Punkten:
- es drfen zwei oder mehr Muster angegeben werden, die durch einen
vertikalen (|) Balken getrennt werden
- der Punkt (.) wie der Slash (/) mssen nicht explizit angepat werden.

5.4.3.19 Das Statement if


Das Statement iffunktioniert genau wie in anderen Sprachen, die Bourne-Shell besitzt jedoch keine
Grundoperatoren fr Arithmetik und Vergleiche.
Deshalb verwendet man das if-Statenent fast immer zusammen mit dem Befehl test, der einen dem
durchgefhrten Test entsprechenden Status-Code zurckgibt. testwerdet die Bedingung condition
aus und liefert den Exit-Status 0 (=true), falls die Bedingung zutrrifft, sonst den Exit-Status 1 (=false).
Gltige Angaben fr conditionsind:
-r file
Datei fileexistiert und ist lesbar
-w file
Datei fileexistiert und dar beschrieben werden
-f file
Datei fileexistiert und ist kein Directory
-d file
Datei fileexistiert und ist ein Directory
-s file
Datei fileexistiert und ist nicht leer
-t [filedes]
Die Datei mit file descriptor filedes(default 1 fr stdin) ist dem Terminal
zugeordnet. Damit kann eine Prozedur z.B. abgefragt werden, ob die
Eingabe stdin von einem Terminal kommt oder auf eine Datei umgelenkt ist.
-z s1
String s1 hat die Lnge Null
-n s1
String s1 ist grer als Null
s1=s2
Die Strings s1 und s2 sind gleich
70

n1 -relop n2

relop ist ein Vergleichsoperator eq (equal), ne (not equal), ge (greater or


equal), gt (greater then), le (less or equal), lt (less then). Die Strings n1 und
n2 werden als Zahlen interpretiert und auf Gleichheit, Ungleichheit,
grer gleich, grer als, kleiner gleichund kleiner alsverglichen.

Das bliche Format des einfachsten if-Statements lautet


if list then list fi.
Mglich sind aber auch folgende Formen:
if list then list elif list then list fi
oder
if list then list elif list then list else list fi.
In allen Fllen endet die Struktur mit fi. Die Struktur listist einfach eine Reihe von Befehlen, die
entweder durch ein Semikolon (;) oder ein Zeilenende terminiert werden.
Erscheint listhinter den Befehlen ifoder else, dann wird der Rckgabe-Status-Code des zuletzt
ausgefhrten Befehls zur Kontrolle des Programmflusses getestet.
Der Strukturteil
elif list then list
kann so oft wie ntig wiederholt werden; endlose Wiederholungen dienen jedoch nicht unbedingt der
Lesbarkeit des Programmes.
Beispiel:
# teste, ob das File vorhanden ist, ob Benutzer zu fragen ist, ob es erzeugt werden soll
if test -r post; then
echo Das File post ist nicht vorhanden. Soll es erzeugt werden ? \c
read ANSWER
if test $ANSWER=j; then
echo post-Kanal wird erzeugt`date`>post
echo post-Kanal wurde erzeugt
else
echo post-Kanal konnte nicht erzeugt werden
exit
fi
fi
Die Referenz #ANSWER steht in doppelten Anfhrungszeichen, weil dem Programm testein Wort
mit Null-String gesendet wird, wenn die Variable ANSWERauf den Null-String gesetzt wird.
Anderenfalls erscheint ein Syntaxfehler.
Der Befehl testmu mit einem Semikolon terminiert werden, da das Schlsselwort thenauf
derselben Zeile steht. thenkann aber auch auf die nchste Zeile gesetzt werden.

5.4.3.20 Das Statement while


Auch whilekann Iterationen einer Befehlsliste ausfhren. Da die Shell-Sprache kein goto-Statement
hat, ist dieses Feature hier besonders wichtig, da alle iterativen Prozesse mit dem Statement while
kontrolliert werden.
Die grundlegende Form lautet:
while list do list done.
Die Programmierung und Verwendung jeder Liste entspricht genau der beim Statement if, aber der
Proze wird hier wiederholt, bis der Exit-Code-Status (der ungleich Null ist) von der ersten Liste
zurckgegeben wird.
Der Befehl whilefhrt seine Tests durch, bevor er irgendwelche Statements der zweiten Liste
berechnet. Deshalb wird die zweite Liste mglichewrweise nie ausgefhrt.
Eine der vielen Anwendungen von whilebesteht darin, abfragende Iterationen fr die
Benutzereingabe zur Verfgung zu stellen:
while true; do # unendliche Schleife
echo Geben Sie den Filenamen ein: \c
read FILE
71

if !test -r $FILE then


echo Dieses File kann nicht gelesen werden
else
echo File gefunden
break;fi
done
Diese Sequenz wird solange wiederholt, bis ein Benutzer den Dateinamen einer lesbaren Datei
eingibt. Das Statement truegibt stets einen Exit-Code-Status von Null zurck, d.h. truebedeutet
eine unendliche Schleife.
Mit breakwird diese Schleife terminiert.

5.4.3.21 Die wichtigsten UNIX-Kommandos in der bersicht


1. Um das On-line Manual zu lesen
man cmd
zeigt Manual-Eintrag fr Kommando cmd
2. Dateinamen zeigen
ls dirfile
Auflisten Dateinamen in Directory dirfile
ls
Auflisten Dateinamen im Arbeitsverzeichnis
ls -l
long list: drwxrwxrwx n1 owner n2 date name
d
= file ist directory, sonst -
rwx = read / write / execute-permission fr owner, group, all other
n1 = Anzahl links
n2 = Anzahl bytes
date = creation date
3. Dateiinhalt zeigen / drucken:
cat file
Ausgabe Datei fileauf Standard-Ausgabe (Bildschirm, Terminal)
more file
Seitenweise Ausgabe von fileauf Terminal (blank / break)
head file
zeigt die ersten 10 Zeilen der Datei file
lpr file
Ausgabe auf Zeilendrucker
4. kopieren / umbenennen / entfernen / Zugriffsrechte
cp old new
Copy, kopiere Datei oldauf Datei new
mv old new
Move, umbenennen von Datei oldin new
rm file
Remove, lsche Datei file
chmod +r file
change modus
file darf von allen gelesen (+r) werden
+w = geschrieben werden, +x = ausgefhrt werden
-r = nicht gelesen werden, etc.
chmod u+r file Leserecht fr user der Datei (g=group, o=other)
5. Directories
pwd
cd
cd dirfile
mkdir dirfile
rmdir dirfile

print working directory, zeigtName working directory


wechselt vom working directory ins home directory
wechselt vom working directory ins dirfile
make directory, erzeuge directory dirfile
remove directory, lsche directory dirfile

6. Statusabfrage / Prozesse
ps
Prozestatus,
ps -l
long list,
ps -a all
kill 1234
breche Proze mit Prozenummer 1234 ab;
Prozenummer liefer ps
kill -g 1234
unbedingtes killfr Proze 1234
who
Wer arbeitet am Rechner, wer ist eingeloggt ?

72

5.4.3.22 Beispiel fr ein Script


HTML-Eingabe:
<HTML>
<HEAD>
<TITLE> Formular</TILTLE>
</HEAD>
<BODY>
<H2>Wer sind Sie ? </H2>
<FORM METHOD=post ACTION=/cgi-bin/test.cgi>
<P> Sagen Sie mir Ihren Namen :
<INPUT TYPE=Name></P>
<P> Geben Sie bitte Ihren Beuf an:
<UL>
<LI><INPUT TYPE=checkbox NAME=Doktor>Doktor</LI>
<LI><INPUT TYPE=checkbox NAME=Jurist>Jurist</LI>
<LI><INPUT TYPE=checkbox NAME=Lehrer>Lehrer</LI>
<LI><INPUT TYPE=checkbox NAME=Knecht>Programmierer</LI>
</UL>
<P><INPUT TYPE=submit VALUE=Hier klicken>
<P><INPUT TYPE=reset VALUE=Alles lschen></P>
</FORM>
</P>
</BODY
</HTML>
Hier das dazu passende Gateway-Skript (abgeleitet aus cgiparsevon CERN-HTTPD):
#!/bin/bash
#
CGI=/hypertext/cgi-bin/cgiparse
eval $CGI -init # liest Daten aus Standardeingabe in QUERY_STRING ein
eval $CGI -form #zerlegt die Werte aus QUERY_STRING in einzelne Umgebungsvariablen
echo -e Content-type: text/html \n
cat<<_Ende_
<HTML>
<HEAD>
<TITLE>Tachauch</TITLE>
</HEAD>
<BODY>
<P><B>
-Ende_
/usr/bin/basename $0
echo </B> meldet am
/bin/date +%d.%m.%Y um %T Uhr: </P>
echo <HR>
if [!$#=0];then
echo -e <P><B>Aufruf-Parameter: </B>[$@]</P>\n
fi
echo -e <P><B>Laenge der uebergebenen Datei: <B>\
$Content-Length
echo -e </P><P><B>die uebergebenen Name/Wert-Paare: </B><BR>\n\$QUERY_STRING
echo -e </P><P><B>die einzelnen FORM-Variablen: </B><BR>\nset |grep FORM_
echo -e </P><P><B>die einzelnen HTTP-Variablen: </B><BR>\nset | grep HTTP_
echo -e </P><P><B>die einzelnen REMOTE-Variablen: </B><BR>\nset | grep Remote_
echo -e </P><P><B>die einzelnen SERVER-Variablen: </B><BR>\nset |grep SERVER_
if [! -z $HTTP_REFERER];then
echo -e </P><P><A HREF=$HTTP_REFERERzurueck</A>
73

fi
cat <<_ENDE_
</P>
</BODY
</HTML>
-Ende_

5.4.4 Das Bearbeiten von Formularen


Daten eines Formulars knnen entweder nach der Methode GET oder POST verschickt werden. Zur
Erinnerung: eine der beiden Methoden mute in dem Attribut METHOD zum INPUT-Element
spezifiziert werden.
Wurde GET gewhlt, wird die Benutzereingabe in der Umgebungsvariablen QUERY_STRING
abgelegt und mu vom jeweiligen Script ausgelesen werden.
Wurde POST angegeben, so werden die Daten vom Server ber die Standard-Eingabe an ein Script
bergeben. Zustzlich wird die Anzahl der Zeichen in der Umgebungsvariablen CONTENT_LENGTH
gespeichert.
Die Daten werden fr jedes Eingabefeld als Zuordnung Name des NAME-Attributs = Benutzer-Daten
bergeben. Getrennt werden die Daten der verschiedenen Felder durch das &-Zeichen.
Es knnen mehrere Datenwerte zu einem Datennamen auftreten.
Die Aufgabe des Scripts, und damit auch des Programmierers, besteht nun darin, diese Zeichenkette
wieder in seine Bestandteile aufzuspalten und die Daten entsprechend zu verarbeiten.

5.4.5 Index-Suche
Findet ein Browser den <ISINDEX>-Tag in einem Dokument, ffnet er dem Benutzer ein EingabeFeld mit der Aufforderung, einen Suchbegriff einzutragen.
Die vom Benutzer eingegebenen Zeichen werden an die URL angehngt und an den Server
geschickt. Dieser entscheidet, ob er die Suche selbst vornimmt oder an ein Script weiterleitet. Das
Script wiederum kann die Suche selbst vornehmen oder an ein dafr konzipiertes Indizier- und
Suchprogramm weiterleiten.
Auf diese Art und Weise kannman eines der mchtigsten Suchwerkzeuge des Internet ansprechen,
nmlich WAIS (Wide Area Information Server).

5.4.6 Server Side Includes


Der NCSA-Server hat einen Mechanismus implementiert, welcher Informationen und Daten in ein
HTML-Dokument zu dem Zeitpunkt einbindet, wenn sie angefordert werden. Diese Fhiglkeit wird mit
server side includes umschrieben.
Fr ein weiteres Beispiel fr server side includes soll die frher erstellte Dokumenten-Maske
modifiziert werden. Zu diesem Zweck wird das ADDRESS-Element in eine eigene Datei kopiert, die
adresse.txt genannt wird.
Innerhalb der Maske wird nun dieser Teil gelscht und ersetzt durch folgendes Script:
<!--#include file=adresse.txt-->.
Das Resultat ist, da jedesmal, wenn das Dokument aufgerufen wird, die Datei adresse.txtan der
Stelle des include-Befehls eingebunden wird.
Es rteicht also, in allen Dokumenten, die die eigene Adresse enthalten sollen, den obigen Befehl
einzufhren. Mu nun aus irgendwelchen Grnden einmal die Adresse gendert werden, so hat dies
nur in der Datei adresse.txtzu geschehen.

74

Der NCSA-Server kennt noch eine Reihe anderer Direktiven zum Einbinden von dynamischen,
aktuellen Informationen. Die Syntax lautet ganz allgemein:
<!--#directive tag=wert ...-->.
Der NCSA-Server kennt folgende Direktiven:
echo: Diese Direktive fgt den Wert einer Umgebungsvariablen, die mit dem Tag vardefiniert
werden mu, in das Dokument ein. Diese knnen CGI-Variablen oder durch den Server selbst
definierte Variablen sein.
Der Server selbst kennt:
DATE_GMT:
Das derzeitige Datum in Greenwich-Zeit. Das Format der Ausgabe
kann durch die Direktive config timefmtspezifiziert werden.
DATE_LOCAL:
Die Zeit der lokalen Zeitzone.
Auch hier kann die Zeitzone formatiert werden.
DOCUMENT_NAME:
Der Datei-Name des Dokumentes.
DOCUMENT_URI: Der virtuelle Pfad des Dokumentes.
LAST_MODIFIED: Das Datum und die Zeit der letzten nderung der Datei.
QUERY_STRING_UNESCAPED: Enthlt die gleiche Information wie die
QUERY_STRING-Variable, nur werden alle Meta-Zeichen
der UNIX-Shell mit einem /versehen.
Beispiel:
<!--#echo varLAST_MODIFIED-->
bewirkt, da das Datum der letzten nderung der Datei in das Dokument
eingebunden wird.
include: Bindet eine Datei oder ein virtuelles Dokument ein, das mit dem Tag filespezifiziert
werden mu. Der Pfad mu relativ zum Dokument, in welchem der include-Befehl steht,
angegeben werden. Fr ein virtuelles Dokument mu man den Tag virtualverwenden.
fsize: bernimmt diew Gre der durch fileoder virtualbenannten Datei in das HTMLDokument.
flastmod: Gibt die Zeit der letzten nderung der durch fileoder virtualspezifizierten Datei.
exec: Bindet das Resultat eines UNIX-Shell_kommandos, welches mit cmdzugewiesen wird, in
das HTML-Dokument ein. Analog kann man Resultate von CGI-Scripten einfgen, die mit cgi
spezifiziert werden.
Zu bedenken ist, da server side includeseine Eigenschaft des NCSA-Servers sind, und somit nicht
portierbar auf andere Server sind. Schlielich stellt die Benutzung dieses Features eine gehrige
Sicherheitslcke dar und sollte deswegen mit Vorsicht benutzt werden.

5.5 Web-Server fr Windows 3.1: WinHTTP


Unter Windows 3.1 ergibt die folgende Zusammenstellung von Programmen ein Entwicklungssystem,
mit dem sich ohne grere Probleme arbeiten lt:
Webserver WinHTTP
WebBrowser Netscape
Trumpet Winsoch (Windows TCP/IP-Socket).
Weil sowohl WinHTTP als auch Netscape auf dem Winsock-TCP/IP-API aufsetzen, ist die Installation
eines entsprechenden Sockets erforderlich.
Es gibt zwar die Mozock.dll, welche Netscape eine Winsock-Verbindung vorgaukelt, jedoch kommt es
bei dieser Kombination hufiger zu Systemabstrzen, die das ganze Windows-System mitnehmen.
Stabiler luft die Anordnung mit Trumpet Winsock 2.0b; diese Version hat noch keine Zeitsperre fr
die Benutzungsdauer.
Damit sich der Socket korrekt initialisieren kann, mu man Trumpet eine Slip-Verbindung ber
Modem vorgaukeln. Dazu trgt man im Setup einen freien Com-Port als Schnittstelle ein. Zustzlich
wird eine unverfngliche IP-Nummer, z.B. 192.0.2.1, eingetragen. Die Datei winsock.dllsollte ins
75

Windows-Systemverzeichnis kopiert werden, so da auch andere Winsock-Applikationen sie finden


knnen.
Bei der Installation von WinHTTP (Bezugsquelle: http://www.city.net/win-httpd/) sollte man zu Anfang
jede Vernderung der Konfiguration vermeiden. Die mitgelieferten Konfigurationsdateien des Servers
gehen von bestimmten Pfaden zu HTML-Dokumenten und anderen Steuerfiles aus. Deshalb mu das
Archiv mit der Server-Software unbedingt in das Verzeichnis C:\HTTPDkopiert werden, wo man es
mit pkunzip -d whttpd(PKUNZIV Version 2.04 oder spter) auspackt.
Der Server verwendet eine DOS-Umgebungsvariable, welche die korrekte Zeitzone seines
Standortes angibt. Sie mu vor dem Start des Servers in die autoexec.bat eingetragen werden:
SET TZ=ESThEDT, mit h = Stunden.
Die Installation von Netscape sollte keine Probleme bereiten, da der Browser ber eine eigene SetupRoutine verfgt. Es ist lediglich darauf zu achten, da die Win32s-Erweiterung installiert ist, da es
sich bei Netscape um eine Win32s-Applikation handelt. (Bezugsquelle fr die aktuellen Win32sDateien: ftp://ftp.microsoft.com).
Nach der Installation startet man tcpman(Trumpet Winsock) und ruft anschlieend WinHTTP auf.
Der Start des Servers kann sich ein wenig verzgern, da er zunchst einen Nameserver sucht. Der
Server initialisiert sich selbststndig und verkleinert sich anschlieend auf Symbolgre. Geht nun
der Start von Netscape problemlos vonstatten, kann man die URL http://localhost/index.htmstarten,
woraufhin der Browser die Einfhrungsseite von WinHTTP anzeigt.

76

6. JAVASCRIPT
6.1 Einleitung
Der Netscape-Browser ab Version 2.0b3 wartet mit einer neuen Programmierschnittstelle names
JavaScript auf, die die Lcke zwischen HTML und Java schlieen soll. Java ist eine von Sun
entwickelte Programmiersprache, die mit einigen Eigenschaften ausgestattet ist, die sie fr den
Einsatz im Internet prdestinieren. Dazu gehren besondere Sicherheitsmanahmen und die
Kompilierung in einen systemunabhngigen Bytecode. Als objektorientierte, an C++ angelehnte
Sprache ist Java nicht mit HTML zu vergleichen.
Im Gegensatz zur komplexen Programmiersprache Java finden bei JavaScript auch HobbyProgrammierer ein Werkzeug, mit dem die Funktionalitt von WWW-Seiten stark verbessert werden
kann.
JavaScript-Programme kommen nicht kompiliert, sondern werden im Klartext mit der HTML-Seite
bermittelt und vom Browser interpretiert. Derzeit interpretieren nur Netscape ab Version 2.0 und
Microsofts Internet-Explorer ab Version 3.0 JavaScript.

6.2 Grundlagen
Script als Namenskomponente deutet ja schon an, da es sich um eine Sprache handelt, die
interpretiert wird. Darin hnelt JavaScript stark HTML und deshalb ist es auch mglich, JavaScriptProgramme direkt in HTML-Text einzubetten, im Gegesatz zu Java-Applets, die auf Grund ihrer
kompilierten Form stets auerhalb des HTML-Dokumentes ablaufen.
Ein neues Element namens <SCRIPT> bettes das Programm in die HTML-Seite ein. Die allgemeine
Syntax lautet
<SCRIPT> ... </SCRIPT>.
Die Einbettungin ein HTML-Dokument soll hier am wohl bekanntesten Beispiel der Programmierkunst
gezeigt werden:
<HTML>
<HEAD>
<TITLE> JAVA sagt &quot;Hallo Welt&quot; </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE=JavaScript>
document.write(Hallo Welt);
</SCRIPT>
</BODY>
</HTML>
Bekannterweise analysiert der Browser ein Dokument zeilenweise. Stt er dabei auf das
Schlsselwort SCRIPT, so fhrt er die sich anschlieende Programmzeile unverzglich aus, egal wo
sie sich befindet. Ausgenommen hievon sind natrlich Funktionen, die erst der sptere FunktionsAufruf aktiviert.

6.3 JavaScript verstecken


Wenn ein Benutzer mit einem Browser das JavaScript enthaltende HTML-Dokument betrachtet, der
JavaScript nicht interpretieren kann, erscheint das komplette Programm im Klartext im BrowserFenster.
77

Um dies zu verhindern, kann man das Skript als Kommentar verstecken:


<HTML>
<HEAD>
<TITLE> JAVA sagt &quot;Hallo Welt&quot; </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE=JavaScript>
<!- Hierdurch wird das Skript auskommentiert
document.write(Hallo Welt);
//->
</SCRIPT>
</BODY>
</HTML>
Innerhalb des Skripts wird der aus C++ bekannte Doppelstrich (//) fr Kommentare verwendet. Das
Ende des HTML-Kommentars mu mit //auskommentiert sein, sonst versucht der JavaScriptInterpreter das Ende des HTML-Kommentars zu interpretieren.

6.4 Funktionen
Zusammenhngende Programmabschnitte werden in der Regel in Funktionen untergebracht. Diese
Funktionen werden mit einer Bezeichnung deklariert und mit zwei geschweiften Klammern
eingeschlossen:
function Funktionsname()
{
Funktionscode
}
Bei der Deklaration knnen zustzlich Parameter angegeben werden, die in der Funktion abgearbeitet
werden knnen:
function Funktionsname(variable1, wert1, variable2, wert2, ...)
{
Funktionscode(variable1, wert1)
Funktionscode(variable2, wert1)
Funktionscode(variable2, wert2)
Funktionscode(variable1, variable2)
...
}
Funktionen lassen sich aus anderen Programmteilen heraus aufrufen, egal wo diese plaziert sind. Ein
HTML-Dokument kann mehrere Skript-Elemente beinhalten, die sich an verschiedenen Orten
innerhalb des Dokumentes befinden und sich gegenseitig aufrufen.
<SCRIPT> kann an beliebiger Stelle im Text stehen. Fr die Definition von Funktionen empfiehlt sich
jedoch der Dokumentkopf. Hierdurch wird die bersichtlichkeit des gesamten Dokumentes erhht.

78

Ein HTML-Dokument mit JavaScript kann also wie folgt aussehen:


<HTML>
<HEAD>
<SCRIPT LANGUAGE=JavaScript>
function ...
{
...
}
</SCRIPT>
</HEAD>
<BODY>
Aufruf function ...
</BODY>
</HTML>
Eine Funktion wird an ein bestimmtes Objekt gebunden, dem eine entsprechende Methode
zugeordnet wird. Neben den Methoden besitzt ein Objekt auch noch ein oder mehrere Properties
(=Eigenschaften). Die Schreibweise fr die Eigenschaften ist die gleiche wie fr die Methoden., d.h.
sie knnen direkt hingeschrieben werden (Beispiel: document.title) oder ber eine Array-Notation
adressiert werden (Beispiel: document[title]). Kennt man die Indexnummer des Property, so kann
auch diese benutzt werden (Beispiel: dicument[0]).

6.5 Objekthierarchie
Die Sprache JavaScript besteht aus einer Handvoll Funktionen, Methoden und Events (=
Ereignissen) und ist im Ansatz objektorientiert. JavaScript arbeitet mit den Inhalten und Elementen
eines HTML-Dokumentes, die Syntax und die Objektorientierung ist jedoch bei Java entliehen.
Letztere Eigenschaft ist im Vergleich zur echten Programmiersprache natrlich stark eingeschrnkt.
In JavaScript besteht nicht die Mglichkeit, eigene Objekte oder Methoden zu definieren. Die
vordefinierten, d.h. fr den Benutzer verfgbaren Objekte bilden eine eigene Hierarchie.
Window

Location

History

Document

Forms

Links

Anchors

Plug-ins

Applets

Elements

[form_elements]
Hierin bedeuten:
WINDOW:
Dies ist das Top-Level-Objekt in einem Frame (= Rahmen). Es handelt sich um den Bereich, in
dem Netscape den Text darstellt und nicht etwa um das Netscape-Fenster selbst. Bei der
Unterleilung in verschiedene Framesunter Verwendung des <FRAMESET>-Elementeskann
unabhngig von den anderen Frames jeder Frame einen Text darstellen. Dieses Fenster (=
Window) ist hiermit gemeint.
Die Methoden von Window erlauben die Ausgabe von Texten in einem kleinen Fenster (alert) und
die Abfrage einer Besttigung (confirm).
Diese Abfrage liefert als Rckgabewert trueoder false, je nach der Reaktion des Benutzers.
79

Location:
dessen Properties (= Eigenschaften) enthalten die URL der aktuellen Seite, sowie die
Komponenten der URLs, d.h. die Komponenten des Protokolls, Hosts etc.
History:
erlaubt den Zugriff auf die URLs der bisher besuchten Seiten; mit Hilfe dieser Methoden kann man
aus einem JavaScript-Programm heraus Sprnge innerhalb der History durchfhren.
Document:
enthlt eine Reihe von Properties, darunter drei Arrays, welche die Formulare, Links und Anchors
enthalten. Es stehen Methoden zur Ausgabe von Text zur Verfgung.
Am wichtigsten fr den praktischen Einsatz sind die folgenden Objekte, die Teil des Dokumentes
sind. Sie sind allerdings noch nicht vollstndig implementiert:
Forms:
Formulare sind das wichtigste Einsatzgebiet fr JavaScript, da diese Elemente die
Benutzerschnittstelle von HTML darstellen. Ein Formular enthlt die untergeordneten Elemente
Text Fields, Text Areas, Check Boxes, Radio Buttons, Selections, Buttons.
Die Properties dieser Objekte enthalten die Namen und Inhalte -Text bei Textfeldern oder
Boolesche Werte bei Buttons.
Eine Schlsselfunktion zur Auswertung der Benutzerigenschaften besitzen die Event Handlers.
Links und Anchors:
Bei diesen beiden Objekten handelt es sich um das HTML-Element <A> (= Anchor). Die
Unterscheidung in Links und Anchors entsteht durch die Verwendung der Attribute HREF(Link)
und/oder NAME(Anchor).
Die Properties der JavaScript-Objekte enthalten die Inhalte dieser Attribute.
Plug-Ins und Elements:
Plug-Ins sind eine Schnittstelle des Browsers zur Darstellung von Fremdformaten wie PostScript,
PDF usw.
Applets:
Miniprogramme, die man als Referenz auf eine Klassendatei in HTML-Dateien einbettet. Ein
Programm sucht in diesem HTML-Dateien nach solchen Referenzen.
Stt es auf einen Querverweis zu einem Applet, ldt es die entsprechende Klassendatei (*.java).
Danach interpretiert es deren Inhalt (= den Bytecode), indem es den Bytecode Instruktion fr
Instruktion in die Maschinensprache des jeweiligen Computers wandelt.
Diese Objekte ermglichen eine einfachere Kommunikation zwischen Programmierer und clientseitigemBenutzer. Zum Beispiel stellen diese Objekte Mittel zur Verarbeitung von Benutzereingaben
in Formularen zur Verfgung.

6.6 Evant Handler


Mit Hilfe der sogenannten Evant Handler knnen JavaScript-Programmierer auf unterschiedliche
Aktionen, wie z.B. Mausclicks oder das Aktivieren von Textfeldern, des Benutzer reagieren.
Whrend die serverseitigen CGI-Scripte erst die eingegebenen Daten zu sehen bekommen, kann
JavaScript schon bei der Eingabe auf Ereignisse reagieren.
Beispielsweise ist es mglich, in Formularfeldern Hilfstexte darzustellen, die verschwinden, sobald
der Benutzer ein Feld aktiviert mit Hilfe des Evant Handler focus.
Beim Deaktivieren eines Feldes -Evant Handler blur- durch Verlassen desselben kann das
JavaScript-Programm die Eingabe gleich auf Fehler testen, etwa Buchstabeneingaben in Boolsche
Felder usw.

80

Die Handlerfhren den Programmcode bei entsprechendem Eventaus, die Methoden erzeugen
den jeweiligen Event knstlich. Folgende Evant Handler und Methoden stehen fr Formularelemente
zur Verfgung:
Event Handler / Methode
Aktivitt
onBlur / blur
Desaktivieren eines Textfeldes
onChange / ndern eines Textfeldes
onClick / click
Anklicken eines Buttons
onFocus / focus
Aktivieren eines Textfeldes
onLoad / Ausfhren von JavaScript-Code
onMouseOver / Ausgabe einer whlbaren Statusmeldung
onSelect / select
Auswhlen eines Select-Feldes
onSubmit / Abschicken eines Formulares
onUnload / Ausfhren von JavaScript-Code
- / enable
Eingabe in ein Feld zulassen (Feld normal dargestellt)
- / disable
Eingabe verbieten (Feld grau dargestellt)
Mit Methoden wie write, closeoder backwerden Objekte bearbeitet, whrend Zustnde und
Variablen mit Eigenschaften wie Selected, Targetoder Elementsgelesen werden knnen.
Die Ereignisse (= events) bilden die Schnittstelle zum Benutzer, denn diese Ereignisse reagieren auf
die Aktivitten des Benutzers.
So wird onClickwahr, wenn der Benutzer etwas anklickt, onUnloadwird wahr, sobald der Benutzer
die Seite verlt, onChange, wenn sich der Inhalt eines Textfeldes ndert usw.
Beispiele fr die Anwendung von Evant Handler:
Funktionaufruf:
<BODY onLoad=Funktionsname()>
Funktionsaufruf mit Parameterbergabe:
<BODY onLoad=Funktionsname(Parameter)>
Funktion im Hintergrund durch Mausaktivitt starten:
<A HREF=Datei.htm onMouseOver=Funktionsname(); RETURN TRUE>Verweis</A>
Befindet sich der Mauszeiger ber diesen Hyperlink Verweis, wird die Funktion
Funktionsnamegestartet, ohne das ein Mausclick erfolgt ist. So kann z.B. ein Hilfetext
generiert werden (Beispiel: wird die Maus ber Verweisbewegt, erscheint die
Textmeldung Mit diesem Link verlassen Sie unsere Seiten).

6.7 Das if-Statement


Um den Programmflu in Abhngigkeit von einem zu bewertenden Ausdruck verzweigen zu
++
lassen,bnenutzt JavaScript die Anweisung if.Die Implementierung des Statements ifist stark an C
orientiert.
Hinter dem Schlsselwort if folgt in Klammern der zu bewertende Ausdruck. Ist dieser wahr, wird der
folgende in geschweiften Klammern stehende Anweisungsblock ausgefhrt. Ist er falsch, wird hinter
dem Block weitergemacht.
Die if-Anweisung kann nach um einen else-Zweig erweitert werden. Dieser wird ausgefhrt, wenn der
Ausdruck hinter dem if falsch ist.
Bei einem einzelnen Ausdruck nach der if-Anweisung brauchen die geschweiften Klammern nicht
gesetzt zu werden.
If-Anweisungen knnen mehrere Bedingungen logisch verknpfen:
mit && wird eine logische UND-Verknpfung hergestellt, d.h. beide Bedingungen mssen den
Wahrheitswert truehaben;
mit || eine logische ODER-Verknpfung hergestellt, d.h. nur eine der Bedingungen mu den
Wahrheitswert truehaben;

81

das Ausrufezeichen (!) fordert, da ein Argument unwahr ist, d.h. den Wahrheitswert falseliefert.
Beispiel:
<HTML>
<HEAD>
<TITLE> JAVA sagt wie sp&auml;t es ist </TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!function tag()
{
heute=new Date();
// Stundenzahl ermitteln mit der Methode .getHours()
stunde=heute.getHours();
anrede=<BR><BR><CENTER><FONT SIZE=6>
IF (stunde<12)
{
anrede+=Guten Morgen
ELSE
{
IF (stunde>12 && stunde <18)
{
anrede+=Tach
ELSE
{
IF (stunde>=18)
anrede+=Guten Abend
}
}
}
}
// bei Bedarf eine Null vor die Stunde setzen fr zweistellige Ausgabe
if (stunde<10)
stunde=0+stunde;
//Minutenzeit ermitteln mit der Methode .getMinutes()
minute=heute.getMinutes();
// bei Bedarf eine Null vor die Minutenzahl setzen fr zweistellige Ausgabe
if (minute<10)
minute=0+minute;
//Ausgabe in das Fenster des Web-Browsers
document.write(anrede, - es ist jetzt , stunde, :, minute, Uhr<br>)
//Rcksetzung von Schrift und Ausrichtung fr das restliche HTML-Dokument
document.write(</FONT></CENTER><P>)
}
//->
</SCRIPT>
</HEAD>
<BODY>
<CENTER>
<H1>Willkommen bei Javas Zeitmanagement</H1>
<H3>Die aktuelle Uhrzeit</H3>
</CENTER>
<SCRIPT LANGUAGE=JavaScript>
<!zeit();
//->
</SCRIPT>
</BODY>
</HTML>

82

6.8 Formulare
Zusammen mit dem <FORM>-Element lassen sich Skripts hervorragend einsetzen. JavaScript liest
Eingabefelder und lst auf Knopfdruck eine Funktion aus.
So knnen die Eingaben eines Benutzers in ein Formular direkt, d.h. onlineauf ihre Richtigkeit und
Vollstndigkeit berprft werden.
Beispiel:
<HTML>
<HEAD>
<TITLE> Formular-&Uuml;berpr&uuml;fung</TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!//Die Funktion checkit verwendet ein Objekt vom Typ form
function checkit(form)
{
if (form.name.value==)
{
alert(Keine Eingabe beim Namen gemacht);
RETURN false;
}
if (form.email.value==)
{
alert(Ohne E-Mail-Adresse kann keine Antwort erfolgen);
RETURN false;
}
if (form.comments.value==)
{
alert(Kommentar fehlt);
RETURN false;
}
}
//->
</SCRIPT>
<BODY>
<CENTER>
<H1>Formulare und deren &Uuml;berpr&uuml;fung<H1>
<FORM ACTION=HTTP://www.myHome.com/cgi-bin/antwort.cgi
METHOD=POST onSubmit=return checkit(this)>
Ihr Name lautet:<INPUT NAME=name><BR>
Ihre E-Mail-Adresse lautet:<INPUT NAME=email><BR>
Ihr ehrlicher Kommentare ist:<BR>
<TEXTAREA NAME=comments ROWS=5 COLS=6>
</TEXTAREA>
<BR><P>
<INPUT TYPE=SUBMIT VALUE=Kommentar abschicken>
</FORM>
</BODY>
</HTML>

6.8.1 Berechnungen in Formularen


Die Skriptsprache bietet auch die Mglichkeit zur Berechnung einfacher mathematischer Ausdrcke.
Der Benutzer kann in einem Formular den Rechenausdruck angeben und durch Klicken auf den
Berechne-Button die Auswertung durchfhren lassen.

83

Beispiel:
<HTML>
<HEAD>
<TITLE> Berechnungen in Formularen</TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!//Die Funktion compute verwendet ein Objekt vom Typ form
function compute(form)
{
//Abfrage starten mit confirm
if (confirm(Sind Sie sicher ?))
// Berechnung durchfhren mit eval
form.result.value=eval(form.expr.value)
else
alert(Ich hoffe, es hat Ihnen gefallen)
}
//->
</SCRIPT>
</HEAD>
<BODY>
<FORM>
Bitte einen Rechenausdruck eingeben:<BR>
<INPUT TYPE=text NAME=expr SIZE=15><BR>
//onClick startet beim Ereignis Mausclick die Funktion compute
<INPUT TYPE=BUTTON VALUE=Berechnen onClick=compute(this.form)><BR>
Ergebnis:<BR>
<INPUT TYPE=TEXT NAME=result SIZE=15><BR>
</FORM>
</BODY>
</HTML>
Die Bereiche fr Ein- und Ausgabe sind gewhnliche Text-Felder, die mit einem Namen versehen
wurden. Das Schlsselwort thiserlaubt den Zugriff auf das eigene Objekt. Es handelt sich bei this
um einen konstanten Zeiger (auch hier eine Analogie zu C++). Hier zeigt this auf das Objekt Button,
und durch Anhngen von formwird hier das Formular referenziert, in welchem Buttonenthalten ist.
Beim Ausfhren der Funktion wird der Benutzer zuerst gefragt, ob der Benutzer die Auswertung auch
wirklich wnscht. Dazu wurde die in JavaScript definierte confirm-Funktion benutzt. Wird hier
Abbrechengewhlt, erscheint die Meldung deralert-Funktion, anschlieend ist das Programm
beendet.
Whlt der Benutzer die Durchfhrung, so fhrt das Programm die Berechnung (evaluation =
Berechnung) des Objektes form.expr.valueaus. Der Wert (value) stammt aus dem expr
(expression = Ausdruck) genannten Element des Formulars. Die Funktion weist das Ergebnis der
Rechnung dem Objekt form.result.valuezu.

84

6.9 Kurzer Vergleich: Java versus C++


Feature

C++

Java

Zeiger
Zeichen

char a=; a wird als 16-Bit-Unicode


gespeichert
Zeichenketten
String-Objekte fr konstante,
Stringbuf-Objekte fr variable
Zeichenketten
numerische Datentypen nur vorzeichenbehaftete Datentypen
Boolesche Werte
Felder (arrays)

Aufzhlungstyp
typedef
zusammengesetzte
Datentypen und
Variablen
Prprocessor
#include

NULL

Kommentare

Mehrfachvererbung
Templates
berladen von
Operatoren
Linker
Thread-Support
Heap-Verwaltung

boolean ist ein Basis-Datentyp


Felder sind Objekte. Zur Laufzeit wird
eine berprfung auf korrekten zugriff
innerhalb der Dimension des Feldes
durchgefhrt (bound-checking)
-

import <interface> stellt Schnittstellen


aus anderen Objektmodulen zur
Verfgung
Null ist Schlsselwort

//... und /*...*/


/**...*/ zur automatischen
Dokumentationsgewinnung von
Schnittstellen
class a extends b implements c {...}
nicht bentigt, da interpretiert
synchronized {...}
klammert kritischen Abschnitt
Garbage Collection durch Thread im
Hintergrund

int *a,b; a=&b


char a=; a wird als ein Byte
gespeichert
char szName[30];
Feld von 8-Bit-Charactern
vorzeichenbehaftete und vorzeichenlose
Datentypen
boolean ist ein Basis-Datentyp
int a[5];a=[10]; Felder werden statisch
alloziert und verhindern keine Zugriffe
auerhalb der definierten Grenzen des
Feldes
enum{...};
typedef{...};
struct a {...};
union b {...};

#define NULL 0
Null wird durch Prprozessor im
Quelltext ersetzt
// und /*...*/

class a:oublic b, public c {...}


template <class a>

essentiell vorhanden
explizite Freigabe von Speicherblcken
durch Programmierer erforderlich

6.10 Troubleshooting
JavaScript steckt nach in der Entwicklung. Schwer nachzuvollziehende Abstrze des Web-Browsers
sind fr den JavaScript-Programmierer nichts ungewhnliches.
Oder: Sauber funktionierte Programme wollen nicht laufen, auch dies ist kommt vor.
Nicht zuletzt: Wie sicher ist mein Rechner bei Besuchen im Internet ?
Bekannt sind folgende Probleme:

85

Wird mit Reloadein modifiziertes Skript wiederholt aufgerufen, kann es zu nicht


nachvollziehbaren Problemen kommen. In diesem Fall sollte das Festplatten- und Speicher-Cache
des Browsers gelscht werden. Anschlieend ist die HTML-Seite mit dem Skript neu zu laden.
Es sollte stets die aktuellste Browser-Version benutzt werden, da immer weitere
Implementierungen von JavaScript in die Web-Browser stattfinden. Mit lteren Browsern kann es
passieren, das einige Programme trotz folgerichtiger Programmierung nicht laufen.
Mit allzu langen Strings kann es ebenfalls zu Problemen kommen. Diese Strings erzeugen eine
Fehlermeldung namens Unterminated String Literal.
Um dies zu verhindern, ist die Zeichenkette einfach in zwei odermehrere Teilstrings aufzuteilen,
wenn diese Zeichenkette einer Variablen zugewiesen werden soll. Die Syntax lautet dann:
var name=Ausdruck1+Ausdruck2+Ausdruck3+...
Werden Bilder in Seiten mit JavaScript eingebunden, ist im IMG-Tag die Breite und Hhe jeder
Grafik einzugeben. Ansonsten kann es zu vielfltigen Problemen kommen:
- Fehler in den Forms
- unvollstndige Darstellung der WWW-Seiten
- Abstrze.
Zur Erinnerung: Die Syntax zum Einbinden des Bildes lautet dann
<IMG SRC=bild.gif HEIGHT=... WIDTH=...>
Folgende Anweisung ist unbedingt zu vermeiden:
document.write(</SCRIPT>);
JavaScript wrde das </SCRIPT> in dieser Programmzeile als Skript-Ende interpretieren und
diese wie auch den folgenden Code nicht mehr ausfhren.
Bei Bedarf kann folgende Alternative verwendet werden:
document.write(</SCR+IPT>);
Ist Netscape Version 2.0 auf dem Rechner installiert, liest folgendes Skript die E-Mail-Adresse des
Benutzers aus der Dateiablage von Netscape:
<BODY onLoad=document.mailme.submit()>.
Das Skript sorgt dafr, das prompt eine E-Mail an den Betreiber der WWW-Seite geschickt wird.
Das Ausschalten der Java-Untersttzung wirkt sich nur auf die Programmiersprache Java aus,
nicht auf JavaScript.
Netscape ab Version 2.01 hat diese Sicherheitslcke nicht mehr. Doch letztlich ist auch das
Augenwischerei: ber kurze Skripts lt sich die Liste der zuletzt verwendeten Internet-Adressen
und Newsgroups, der Inhalt des Caches und auch der Inhalt von lAufwerken auslesen.

86

7. TCP/IP
7.1 bersicht ber TCP/IP
Der Name TCP/IP bezeichnet eine ganze Reihe von Protokollen fr die Datenkommunikation. Diese
Protokollfamilie bezieht ihren Namen von zweien der enthaltenen Protokolle - dem Transmission
Control Protocol (TCP) und dem Internet Protocol (IP).
Obwohl noch einige andere Protokolle enthalten sind, sind TCP und IP sicherlich zwei der
wichtigsten.

7.2 TCP/IP und das Internet


Im Jahre 1969 finanzierte die Defense Advanced Research Procejts Agency (DARPA) ein
Forschungs- und Entwicklungsprojekt mit dem Ziel, ein experimentelles Paketvermittlungsnetz zu
entwickeln. Dieses Netz namens APRANET wurde eingerichtet, um Techniken fr die sichere,
zuverlssige und herstellerunabhngige Datenkommunikation zu entwickeln. Viele der heute
angewendeten Verfahren bei der Datenkommunikation wurden im APRANET entwickelt.
Viele der am APRANET angeschlossenen Organisationen nutzen das APRANET fr den tglichen
Datenaustausch. Im Jahre 1975 wurde aus dem Versuchsnetz ein voll funktionsfhiges Datennetz,
dessen Administration der Defense Communications Agency (DCA; heute Defense Information
Systems Agency, DISA) bertragen wurde. Die grundlegenden TCP/IP-Protokolle entstanden,
nachdem das APRANET dem Experimentalstadium entwachsen war. Im Jahre 1983 wurden die
TCP/IP-Protokolle zu Military Standards (MIL STD) erhoben und alle Institutionen, die am APRANET
partizipierten, muten auf die neuen Protokolle umstellen. Um diese Umstellung zu vereinfachen,
beauftragte die DARPA die Firma Bolt, Beranek & Newman (BBN) TCP/IP in das Berkeley-UNIX
(BSD) zu integrieren. So kam es zur Fusion zwischen TCP/IP und dem UNIX-Betriebssystem.
Etwa zu der Zeit, als TCP/IP als Standard akzeptiert wurde, bildete sich der Begriff Internet heraus.
1983 wurde das alte APRANET geteilt. Es entstand das MILNET als Teil des Defense Data Network
(DDN) sowie ein neues, kleineres APRANET. Mit Internet bezeichnete man das ganze, aus MILNET
und APRANET bestehende Netzwerk. 1990 wurde das APRANET offiziell aufgelst, aber das Internet
ist heute grer als je zuvor und umfat viele Netzwerke rund um die Uhr.
Das Internet ist weit ber seine ursprngliche Gre hinausgewachsen. Die DDN ist ein wichtiger Teil
des Netzwerks, und Institutionen wie die DISA spielen weiterhin eine wichtige Rolle fr das ganze
Internet. Gleichzeitig wchst die Bedeutung von neuen Netzen wie dem NSFNET und den
verschiedenen regionalen Netzen. Das Wachstum des Internet hat vielen neuen Organisationen
einen Anschlu beschert.
Ein Zeichen fr den Erfolg des Netzes ist die Verwirrung um den Begriff Internet. Ursprnglich
bezeichnete man damit nur ein Netzwerk, welches auf dem Inrernet-Protokoll aufsetzte. Heutzutage
ist Internet ein generischer Begriff, der eine ganze Klasse von Netzwerken bezeichnet. Ein internet
(mit kleinem i) steht fr eine Reihe getrennter, physikalischer Netzwerke, die ein gemeinsames
Protokoll benutzen, um als ein einziges logisches Netzwerk zu erscheinen. Das Internet (mit groem
I) bezeichnet die rund um die Welt miteinander verbundenen Netzwerke, die aus dem APRANET
entstanden sind; diese benutzen das Internet Protokoll (IP) um die einzelnen physikalischen
Netzwerke zu einem einzigen logischen Netz zu vereinen.
Da fr einen Anschlu an das Internet TCP/IP vorausgesetzt wird, ist das Interessse an diesen
Protokollen aufgrund der groen Anzahl neuer Organisationen im Internet stark gestiegen. Dadurch,
da immer mehr Organisationen TCP/IP benutzen, stellte sich bald heraus, da es auch in anderen
Netzwerkanwendungen sinnvoll eingesetzt werden kann. In der UNIX-Gemeinde werden die InternetProtokolle oft in LANs eingesetzt - auch dann, wenn das lokale Netzwerk nicht an das Internet
angebunden ist.

87

Die TCP/IP-Protokolle entstanden gerade zur richtigen Zeit, um das Bedrfnis nach weltweiter
Datenkommunikation zu erfllen. Einige wichtige Merkmale trugen dazu bei, diese Funktion
wahrzunehmen:
Offene Protokollspezifikationen, welche frei zugnglich und unabhngig von der Hardware und
dem Betriebssystem sind. Aufgrund seiner weltweiten Untersttzung eignet sich TCP/IP in idealer
Weise dazu, unterschiedliche Hard- und Software miteinander zu verbinden.
Unabhngigkeit von einer bestimmten Netzwerkhardware. So ist es mglich, mittels TCP/IP viele
unterschiedliche Netze miteinander zu verbinden. TCP/IP kann ber ein Ethernet, einen TokenRing, eine Whlleitung, ein X.25-Netz und beinahe jedes andere physikalische
bertragungsmedium betrieben werden.
Ein einheitliches Adressierungsschema, welches es jedem Rechner in einem TCP/IP-Netz
ermglicht, jeden beliebigen anderen Rechner in diesem Netzt eindeutig zu identifizieren.
Standardisierte Protokolle der hheren Schichten, die dem Benutzer einheitliche und weithin
verfgbare Dienste zur Verfgung stellen.
Protokolle sind formalisierte Verhaltensregeln. Auf internationaler Ebene minimieren Protokolle die
Probleme, welche durch kulturelle Unterschiede zwischen den Nationen entstehen knnen. Dadurch,
da man sich auf bestimmte, allgemein anerkannte und von nationalen Eigenheiten unabhngige
Regeln geeinigt hat, minimieren Protokolle auf diplomatischer Ebene das Risiko von
Miverstndnissen. In hnlicher Weise mssen fr die Kommunikation zwischen Computern Regeln
festgelegt werden, die den Austausch von Daten ermglichen.
Innerhalb der Datenkommunikation nennt man diese Regeln auch Protokolle. In einem homogenen
Rechnerverbund kann ein einzelner Computerhersteller Protokolle definieren, die die Strken der
spezifischen Hard- und Software besonders gut ausnutzen. TCP/IP hingegen versucht ein
heterogenen Netzwerk mit offenen Protokollen zu schaffen, die unabhngig von unterschiedlichen
Betriebssystemen und Hardware-Architekturen sind. Die TCP/IP-Protokolle sind fr jedermann frei
verfgbar und werden nur aufgrund von allgemeiner Einigkeit weiterentwickelt und gendert - niemals
nur aufgrund der Ideen eines einzelnen Herstellers. Es steht jedermann frei, Produkte zu entwickeln,
die diese Protokollspezifikationen einhalten.
Der ffentliche Charakter der Protokollspezifikationen fr TCP/IP erfordert auch, da die
Standardisierungsunterlagen frei zugnglich sind. Es gibt drei Arten von Dokumenten im Internet, in
denen die TCP/IP-Protokollfamilie beschrieben wird. Ein Teil der Protokolle ist in den Military
Standards (MIL STD) festgelegt; einige andere wurden in den Internet Engineering Notes (IEN)
beschrieben - die IENs werden allerdings nicht publiziert. Der grte Teil der Informationen zu den
TCP/IP-Protokollen ist in den Requests for Comments (RFCs) verffentlicht worden. Die RFCs
enthalten die neuesten Versionen aler TCP/IP-Spezifikationen.
Wie der Titel Request for Comment schon andeutet, sind Stil und Inhalt dieser Dokumente bei
weitem nicht so trocken und technisch wie Standardisierungsunterlagen blicherweise sind. Die RFCs
enthalten eine Menge interessanter und ntzlicher Informationen und nicht nur technische
Beschreibungen von Datenbertragungsprotokollen.

88

7.3 Ein Modell zur Datenkommunikation


Zu Beginn sollen erst einmal verschiedene Fachbegriffe der Datenkommunikation nher erlutert
werden.
Zur Beschreibung der Struktur und Funktion von Protokollen fr die Datenkommunikation wird hufig
ein Architekturmodell herangezogen, das von der International Standards Organisation (ISO)
entwickelt wurde. Dieses Basisreferenzmodell namens Open Systems Interconnect Reference Modell
(OSI) schafft einen Bezugsrahmen fr die Behandlung von Themen aus dem Bereich der
Datenkommunikation. Die in diesem Modell verwendeten Begriffe sind wohldefiniert und in der Welt
der Datenkommunikation weit verbreitet.
Das Basisreferenzmodell der ISO besteht aus 7 Schichten (= layers). Jede dieser Schichten definiert
gewisse Funktionen der Protokolle fr die Datenkommunikation. Jede Schicht des OSI-Modells
reprsentiert eine Funktion, die beim Austausch von Daten zwischen Anwendungen ber ein
dazwischenliegendes Netzwerk hinweg ausgefhrt wird:
1. Bitbertragungsschicht: definiert die physikalischen Eigenschaften der bertragungswege
2. Sicherungsschicht: sorgt fr die zuverlssige bertragung der Daten ber die physikalischen
Verbindungen
3. Vermittlungsschicht: verwaltet die Verbindungen zwischen den Rechnern im Netz fr die hheren
Schichten
4. Transportschicht: garantiert die fehlerfreie Datenbertragung durch Fehlererkennung und korrektur
5. Kommunikationssteuerschicht: verwaltet die Verbindungen zwischen den Anwendungen
6. Darstellungsschicht: standardisiert das Format der Daten auf dem Netz
7. Anwendungsschicht: besteht aus den Anwendungen mit denen man das Netz nutzen kann
Diese Schichten sind wie ein Haufen von Ziegelsteinen aufeinander gestapelt, deshalb spricht man
auch oft von einem Stavk (= Stapel) bzw. einem Prtokoll-Stack.
Jede einzelne Schicht definiert nicht etwa ein Protokoll - sie stellt vielmehr eine Funktion der
Datenkommunikation dar, die von beliebig vielen Protokollen ausgefhrt werden kann. Jede Schicht
kann also mehrere Protokolle enthalten, von denen jedes solche Dienste bereitstellt, wie sie fr die
Erfllung der Funktion dieser Schicht bentigt werden. So stellen z.B. die Protokolle fr die
Dateibertragung und fr den E-Mail-Verkehr Benutzerdienste zur Verfgung, und beide gehren zur
Anwendungsschicht.
Jedes Protokoll kommuniziert mit seinem Peer (= Gegenber). Ein Peer ist die Implementierung
desselben Protokolls in der entsprechenden Schicht auf einem fremden Rechner. Das lokale
Datenbertragungsprotokoll ist also der Peer eines fremden (= remote) Dateibertragungsprotokolls.
Die Kommunikation zwischen den Peers mu standardisiert sein, damit ein erfolgreicher
Datenaustausch statttfinden kann. Abstrakt ausgedrckt ist jedes Protokoll nur an der Kommunikation
mit seinem Peer interessiert - nicht jedoch an den Schichten darber oder darunter.
Beim Trabsport von Daten zwischen einer lokalen Anwendung und derselben Anwendung auf einem
entfernten Rechner wird jede einzelne Schicht durchlaufen. Aus diesem Grunde mu es eine
Vereinbarung darber geben, wie die Daten zwischen den einzelnen Schichten innerhalb eines
Computers weitergereicht werden. Die oberen Schichten sind darauf angewiesen, da die unteren
Schichten die Daten ber das zugrundeliegende Netzwerk transportieren. Dazu werden die Daten von
jeder Schicht an die jeweils darunterliegende Schicht bergeben, bis die Protokolle der Bitbertragungsschicht (Physical Layer) die Daten ber das Netzwerk transportieren. Auf dem
Zielrechner werden die Daten durch alle Schichten hindurch nach oben an die empfangende
Anwendung weitergereicht. Dabei mssen die einzelnen Schichten nicht wissen, wie die Schichten
darber und darunter die Daten handhaben; sie mssen nur wissen, wie die Daten an die andere
Schicht zu bergeben sind. Diese Isolierung einzelner Funktionen der Datenbertragung in den
89

verschiedenen Schichten hat zur Folge, da der Einflu von technischen nderungen auf die
Protokollfamilie insgesamt minimiert wird. Neue Anwendungen knnen eingebunden werden, ohne
da das physikalische Netzwerk gendert wird, und neue Netzwerkhardware kann installiert werden,
ohne da die Anwendungssoftware neu geschrieben werden mu.
Obwohl das OSI-Modell sich als ntzlich erwiesen hat, bilden die TCP/IP-Protokolle seine Struktur
nicht genau ab. Aus diesem Grund werden die Schichten des OSI-Modells bei der folgenden
Betrachtung von TCP/IP wie folgt betrachtet:
Anwendungsschicht (Application Layer):
Die Anwendungsschicht ist diejenige Ebene der Protokollhierarchie, in der Netzwerkprozesse
residieren, auf welche der Benutzer direkt zugreifen kann. Im folgenden wird jeder
Netzwerkproze, der oberhalb der Transportschicht angesiedelt ist, als TCP/IP-Anwendung
bezeichnet. Das schliet sowohl Prozesse auf dieser Ebene ein, mit denen ein Benutzer direkt
interagiert als auch diejenigen, von denen der Benutzer im Normalfall nichts bemerkt.
Darstellungsschicht (Presentation Layer):
Zum Zwecke des Datenaustausches mssen kooperierende Anwendungen sich auf eine
gemeinsame Darstellung der Daten einigen. Im OSI-Modell sind hierfr Standardprozeduren
vorgesehen, die in TCP/IP fehlen. In der TCP/IP-Welt fllt diese Aufgabe den Anwendungen
(Applications) zu.
Kommunikationsschicht (Session Layer):
Ebenso wie die Darstellungsschicht (Presentation Layer) tritt innerhalb der TCP/IP-Protokollfamilie
die Kommunikationsschicht nicht als eigenstndige Ebene in Erscheinung. Die
Kommunikationsschicht des OSI-Basisreferenzmodells verwaltet die Verbindungen (Sessions)
zwischen den kooperierenden Anwendungen. Im TCP/IP-Protokollstapel ist diese Schicht nicht
vorgesehen - hier ist es die Transportschicht (Transport Layer), die die einzelnen Verbindungen
berwacht. Statt des Begriffs Sessions spricht man in der TCP/IP-Welt von Socket und Port,
um die Verbindungen zwischen Anwendungen eindeutig zu identifizieren.
Transportschicht (Transport Layer):
Die Transportschicht des OSI-Modells stellt sicher, da der Empfnger die Daten genau so erhlt,
wie sie der Absender auf den Weg gebracht hat. Innerhalb des TCP/IP-Protokollstapels wird diese
Funktion vom Transmission Control Protocol (TCP) bernommen. Auerdem bietet TCP/IP
innerhalb der Transportschicht einen zweiten Dienst an, das User Datagram Protocol (UDP),
welches jedoch keine gesicherte Datenbertragung vorsieht.
Vermittlungsschicht (Network Layer):
Die Vermittlungsschicht dient dem Aufbau von Verbindungen zu anderen Rechnersystemen im
Netz und isoliert die Protokolle der hheren Schichten von den Details des zugrundeliegenden
Netzwerkes. Das Internet Protocol (IP) bernimmt diese Trennung und ist auerdem fr die
Adressierung und Zustellung der Daten zustndig; das IP wird oft als die Vermittlungsschicht
innerhalb von TCP/IP bezeichnet.
Sicherungsschicht (Data Link Layer):
Die Aufgabe der Sicherungsschicht ist die zuverlssige bertragung von Daten ber das
zugrundeliegende physikalische Netzwerk. In der Regel benutzt TCP/IP keine eigenen Protokolle
in der Sicherungsschicht. Die meisten RFCs, die sich mit dieser Schicht beschftigen,
beschreiben, wie TCP/IP auf bereits existierenden Protokollen der Sicherungsschicht aufsetzten
kann.
Bitbertragungsschicht (Physical Layer):
Diese Schicht definiert die Charakteristika der Hardware, welche zur bertragung der Daten
bentigt wird. Signalpegel und die Anzahl und Anordnung von Kontakten in Steckern sind in dieser
Schicht spezifiziert. TCP/IP definiert keine neuen physikalischen Standards, sondern nutz bereits
existierende.
Zwar ist das OSI-Basisreferenzmodell recht ntzlich, um den Aufbau des TCP/IP-Protokollstapels zu
beschreiben; um TCP/IP jedoch verstehen zu knnen, ist ein Architekturmodell, welches nher an die
Struktur TCP/IP angelehnt ist, besser geeignet.

90

7.4 Die Protokollarchitektur von TCP/IP


TCP/IP besteht aus weniger als den sieben Schichten des OSI-Modells. Es besteht keine Einigkeit
darin, wie TCP/IP mit einem Schichtenmodell beschrieben werden soll. Das DNN Protocol-Handbook
beschreibt es folgendemaen:
Anwendungsschicht (Schicht 4):
enthlt Anwendungen und Prozesse, die auf das Netzwerk zugreifen
Host-zu-Host-Transportschicht (Schicht 3):
stellt End-zu-End-Datendienste zur Verfgung
Internet-Schicht (Schicht 2):
definiert den Aufbau von Datagrammen und routet Daten
Netzzugangsschicht (Schicht 1):
enthlt Routinen fr den Zugang auf physikalische Natze.
Genau wie im OSI-Modell werden die Daten im Stack nach unten weitergereicht, wenn Daten
verschickt werden; beim Empfang von Daten aus dem Netz fhrt der Weg durch den Stack nach
oben.
Die vier Ebenen des Protokollstacks von TCP/IP werden analog zum Weg der Daten von der
Anwendungsschicht abwrts durch den Stack zum physikalischen Netzwerk dargestellt. Jede Schicht
fgt ihre eigenen Kontrollinformationen hinzu, um die korrekte bertragung der Daten sicherzustellen.
Diese Informationen nennt man Header (= Kopf), da sie den eigentlichen Daten vorangestellt werden.
Jede Schicht betrachtet die gesamte Information, die sie von der darberliegenden Schicht empfngt,
als zu bertragende Daten und stellt diesen den eigenen Header voran. Dieses Hinzufgen von
Kontrollinformationen nennt man Encapsulation(= Kapselung). Beim Empfang von Daten werden
die einzelnen Schritte der Kapselung rckgngig gemacht. Jede Schicht entfernt ihren Header, bevor
sie den Rest der Daten weitergibt. Auf ihren Weg durch den Stack nach oben werden Informationen,
die von einer niedrigeren Schicht empfangen werden, als Header und als Daten interpretiert.
Jede Schicht verfgt ber eigene, unabhngige Datenstrukturen. Im Prinzip wei die einzelne Schicht
nichts ber die Datenstruktur der beiden Ebenen darber und darunter. In der Praxis sind die
Datenstrukturen allerdings so gestaltet, da sie zu den Strukturen der benachbarten Schichten
kompatibel sind - dies dient der effizienten Datenbertragung. Trotzdem verfgt jee Schicht ber ihre
eigene Datenstruktur und ihre eigene Terminologie zur eschreibung dieser Struktur.
Anwendungen, die TCP benutzen, bezeichnen Daten als Stream (Datenstrom), UDP-Anwendungen
bezeichnen die Daten als Message (Nachricht). TCP gliedert Daten in Segmente, whrend UDP seine
Daten in Pakete aufteilt. Die Internet-Schicht betrachtet alle Daten als Blcke, die Datagramm
genannt werden.
TCP/IP benutzt viele verschiedene Arten von Netzwerken - alle haben mglicherweise ihre eigenen
Begriffe zur Bezeichnung der transportierten Daten. Die meisten Netzwerke bezeichnen bertragene
Daten als Packets oder Frames.

7.5 Die Netzzugangsschicht


Die Netzzugangsschicht (Network Access Layer) stellt die unterste Schicht der TCP/IPProtokollhierarchie dar. Die Protokolle dieser Schicht ermglichen dem System die bertragung von
Daten zu anderen Gerten in einem direkt angeschlossenen Netzwerk. Diese Schicht definiert, wie
ein IP-Datagramm ber das Netzwerk transportiert wird. Anders als die Protokolle der hheren
Schichten mssen Protokolle der Netzzugangsschicht den Aufbau des zugrundeliegenden Netzes
kennen, d.h. die Strutur seiner Packets, seine Adressierung usw.; nur so kann sichergestellt werden,
da bertragene Daten entsprechend den Anforderungen des Netzes formatiert werden. Die
Netzzugangsschicht von TCP/IP deckt die Funktionen der drei unteren Schichten des OSI-Modells,
das sind Vermittlung, Sicherung und Bit-bertragung, ab.
Die Netzzugangsschicht wird von Benutzern hufig gar nicht zur Kenntnis genommen. TCP/IP
verbirgt die Funktionen der unteren Schichten, und die besser bekannten Protokolle wie IP, TCP,
91

UDP usw. sind Protokolle der hheren Schichten. Mit dem Erscheinen neuer Hardware mssen auch
neue Netzzugangsprotokolle entwickelt werden, damit TCP/IP-Netzwerke die neue Hardware nutzen
knnen. Deshalb gibt es viele Protokolle fr den Netzzugang - eines fr jeden physikalischen
Netzwerkstandard.
Zu den Funktionen dieser Schicht gehren die Kapselung von IP-Datagrammen in den Frames, die
das Netzwerk bertrgt sowie die Abbildung von IP-Adressen auf die physikalischen Adressen des
Netzwerkes. Eine der Strken von TCP/IP ist seine Adressierung - jeder Rechner im Internet erhlt
eine eindeutige Adresse. Diese IP-Adresse mu in eine Adresse umgewandelt werden, die das
physikalische Netzwerk, welches die Daten transportiert, verstehen kann.
Zwei Beispiele fr RFCs, die Protokolle der Netzzugangsschichten definieren, sind:
RFC 826, Adress Resolution Protocal (ARP), das IP-Adressen auf Ethernet-Adressen abbildet
RFC 894, A Standard for Transmission of IP Datagrams over Ethernet Networks,
das beschreibt, wie IP-Datagramme fr den Transport ber Ethernet-Netze gekapselt werden.
Unter UNIX werden Protokolle dieser Schicht oft als eine Kombination aus Gertetreibern und
zugehrigen Programmen implementiert. Die Module, die unter ihrem Gertenamen angesprochen
werden, kapseln in der Regel die Daten und bergeben sie an das Netzwerk, whrend andere
Programme solche Funktionen wie die Abbildung von Adressen bernehmen.

7.6 Die Internet-Schicht


Die Schicht oberhalb der Netzzugangsschicht wird als Internet-Schicht bezeichnet. Das wichtigste
Protokoll dieser Schicht ist das Internet Protokoll (IP, RFC 791). Es bildet die Grundlage fr TCP/IPNetze, indem es den Transport von Datagrammen definiert. Alle Protokolle der Schichten oberhalb
und unterhalb von IP benutzen IP fr den Transport von Daten. Alle TCP/IP-Daten durchlaufen auch
das IP - eingehende wie ausgehende, und unabhngig von ihrem Ziel.
Das Internet Protokoll (IP):
Das IP hlt das Internet zusammen. Seine Funktionen umfassen unter anderem:
Definition des Datagramms, der kleinsten Einheit fr die bertragung im Internet;
Definition der Adressierung im Internet;
Datentransport zwischen der Netzzugangsschicht und den Protokollen der Tansportschicht;
Routing von Datagrammen zu fremden Rechnern;
Fragmentierung und Defragmentierung von Datagrammen.
Das IP ist ein verbindungsloses Protokoll, das bedeutet, da vor der bertragung von Daten keine
Kontrollinformationen (Handshake) ausgetauscht werden mssen, um eine Verbindung zwischen
zwei Rechnern herzustellen. Im Gegensatz dazu mu ein verbindungsorientiertes Protokoll mit dem
entfernten Rechner zunchst Kontrollinformationen austauschen; damit signalisiert die Gegenstelle,
wann sie bereit ist. Wenn dieses Handshake erfolgreich war, dagt man, da eine Verbindung
hergestellt wurde. Das IP verlt sich auf Protokolle anderer Schichten, wenn ein
verbindungsorientierter Dienst gebraucht wird.
Auch bei der Erkennung und Korrektur von Fehlern verlt sich das IP auf die anderen Schichten.
Das IP wird deshalb manchmal als unzuverlssiges Protokoll bezeichnet. Das bedeutet aber nicht,
da man sich auf IP nicht verlassen kann. Man kann sich darauf verlassen, da IP die Daten
vollstndig und richtig an das Zielnetzwerk bertrgt; es prft allerdings nicht, ob die Daten ebenso
empfangen wurden. Sollte eine solche Prfung notwendig sein, knnen die Protokolle anderer
Schichten von TCP/IP diese bernehmen.

92

Das Datagramm:
Die TCP/IP- Protokolle wurden entworfen, um Daten im APRANET zu transportieren: das APRANET
war ein Paketvermittlungsnetz. Ein Paket ist ein Datenblock, der auch Adressinformationen enthlt.
Ein Paketvermittlungsnetz benutzt diese Adressinformationen, um die Pakete von einem
physikalischen Natzwerk auf das andere umzusetzen und sie so immer nher an ihr Ziel
heranzubringen. Jedes einzelne Paket durchquert das Netz unabhngig von allen anderen Paketen.
Ein Datagramm ist ein Paketformat, wie es vom IP definiert wird. Die ersten fnf oder sechs 32-BitWrter enthalten Kontrollinformationen und werden als Header bezeichnet. Normalerweise ist der
Header fnf Wrter lang, das sechste Header-Wort ist optional.
Weil die Lnge des Header variieren kann, ist auch ein Feld namens Internet Header Length (IHL)
enthalten, in welchem die Lnge angegeben ist. Der Header enthlt alle Informationen, die fr die
Zustellung des Paketes notwendig sind.
Das IP transportiert Datagramme, indem es die Destination Address (= Zieladresse) im fnften Wort
des Headers liest. Die Zieladresse ist die Standard-IP-Adresse mit einer Lnge von 32-Bits; hier sind
das Zielnetzwerk sowie der Zielrechner innerhalb des Netzwerkes kodiert.
Gehrt die Zieladresse zu einem Rechner im lokalen Netzwerk, so wird das Paket auf direktem Wege
zugestellt. Liegt die Zieladresse nicht im lokalen Netzwerk, so wird das Paket an einen Gateway
bergeben.
Gateways sind Rechner, die Pakete zwischen verschiedenartigen physikalischen Netzwerken
umsetzen. Die Wahl eines geeigneten Gateways nennt man Routing. IP bewerkstelligt dieses Routing
fr jedes einzelne Datenpaket.
Das Routing von Datagrammen:
Die Gateways im Internet werden in der Regel als IP-Router bezeichnet, weil sie das IP benutzen, um
pakete durch die Netzwerke zu routen. Ursprnglich sprach man im TCP/IP-Jargon nur von zwei
Arten von Gerten: von Gateways und Hosts (Rechnern).
Gateways bertragen Pakete von einem Netzwerk in ein anderes, und Rechner tun dies nicht. Wenn
ein Rechner allerdings an mehr als ein Netzwerk angeschlossen ist, kann er Pakete von einem Netz
in ein anderes transportieren, man spricht dann von einem multi-bomed-host.. Wenn ein solcher
Rechner Pakete weiterreicht, verhlt er sich wie ein beliebiger Gateway und wird auch als solcher
betrachtet. In der Terminologie zur Datenkommunikation wird gelegentlich zwischen Gateways und
Rechnern unterschieden, aber hier sollen die beiden Begriffe ab jetzt synonym benutzt werden.
Die Hosts (= Endbenutzersysteme)bewegen Pakete durch alle vier vier Protokollebenen, whrend die
dazwischen liegenden Systeme (= intermediate systems) die Pakete nur bis zur Internet Schicht nach
oben reichen, wo dann das Routing stattfindet:
Pakete knnen nur an solche Gerte direkt zugestellt werden, die sich im gleichen physikalischen
Netz befinden.
Host A1

Host C1

Anwendung

Transport

Internet

Netzzugang

Anwendung

Transport

Internet

Netzzugang

Gateway G1

Gateway G2

Internet

Netzzugang

Internet

Netzzugang




Netz A
Netz B
Netz C
Pakete von Host A1, die fr den Host C1 bestimmt sind, werden durch die Gateways G1 und G2
geleitet.
Rechner A1 bergibt die Daten (=das Datenpaket) zunchst an das Gateway G1, mit welchem er das
Netz A teilt. Gateway G1 bergibt die Daten dann durch das Netzwerk B an das Gateway G2. Das
Gateway G2 kann die Daten schlielich direkt an den Rechner C1 bergeben, weil sich die beiden im
Netzwerk C befinden.
93

Der Rechner A1 kennt allein das Gateway G1 und keine anderen Stationen, d.h. A1 schickt alle seine
Daten fr die Netzwerke B und C an sein lokales Gateway und verlt sich darauf, da G1 die Daten
odrnungsgem zum Ziel hin weiterleitet. In gleicher Weise bergibt der Rechner C1 alle
Datenpakete fr einen Rechner in den Netzen A und B an seinen Gateway G2.
Die physikalischen Netze, durch welche ein Datagramm wandert, knnen verschieden und sogar
miteinander inkompatibel sein.
Zum Beispiel routet ein Rechner A1 im Token-Ring-Netzwerk das Datagramm durch das Gateway G1
um den Rechner C1 im Ethernet zu erreichen. Gateway G1 schickt die Daten auf dem Weg nach C1
ber ein X.25-Netzwerk an Gateway G2.
Das Datagramm durchquert dann also drei physikalisch verschiedene Netzwerke und kommt doch
vollstndig und korrekt bei C1 an.
Die Fragmentierung von Datagrammen:
Wenn ein Datagramm durch verschiedene Netzwerke geroutet wird, kann es notwendig werden, da
das IP in einem Gateway das Paket in kleinere Einheiten aufteilen mu. Ein Datagramm aus einem
Netzwerk kann zu gro sein, um als Paket durch ein anderes Netzwerk zu wandern. Diese
Konstellation kann natrlich nur dann auftreten, wenn ein Gateway als Verbindung zwischen
physikalisch verschiedenen Netzwerken dient.
Jede Art von Netzwerk kennt eine Maximum Transmission Unit (MTU, = grte zu bertragende
Einheit). Die MTU bezeichnet die grte mgliche Paketlnge fr ein Netzwerk.
Wenn ein Netz einem anderen ein Datagramm bergibt, mu das Datagramm vor der bergabe in
kleinere Fragmente aufgeteilt werden. Diesen Vorgang nennt man Fragmentierung. Das Format jedes
einzelnen Fragmentes ist dabei immer noch dasselbe wie das Format des unfragmentierten
Dtagramms. Das zweite Wort des Headers enthlt Informationen, die jedes einzelne DatagrammFragment identifizieren. Auerdem sind hier die Informationen enthalten, welche fr die
Defragmentierung und Wiederherstellung des ursprnglichen Datagramms bentigt werden.
Das Feld Identification zeigt an, zu welchem Datagramm ein Fragment gehrt, und das Feld
Fragmentation Offset gibt die Position eines Fragmentes im Datagramm an. Das Feld Flags enthlt
eine More-Fragments-Bit, an welchem das IP ablesen kann, ob alle Fragmente eines Datagramms
empfangen wurden.
Die bergabe von Datagrammen an die Transportschicht:
Wenn IP ein Datagramm empfngt, das fr den lokalen Rechner bestimmt ist, mu es den Datenteil
des Datagramms an das richtige Protokoll der Transportschicht bergeben. Dazu wird die
Protokollnummer aus dem dritten Wort des Headers gelesen. Jedes Protokoll der Transportschicht
wird von IP anhand dieser eindeutigen Protokollnummer identifiziert.
Das Internet Control Message Protocol (ICMP):
Das Internet Control Message Protocol - in RFC 792 definiert - ist das zweite wichtige Protokoll der
Internet Schicht. Es benutzt die Datagramm-Dienste des IP, um seine Kontrollmeldungen zu
verschicken. Diese Meldungen dienen der Kontrolle und Information und erfllen im einzelnen
folgende Funktionen:
Die Flukontrolle:
Wenn ein Gateway oder Zielrechner eingehende Datagramme nicht schnell genug bearbeiten
kann, sendet er eine ICMP-Source-Quench-Meldung (= Overflow-Meldung, berlauf) zurck an
den Absender.
Der Absender wird damit aufgefordert, das Abschicken von Datagrammen vorbergehend
einzustellen.
Das Erkennen unerreichbarer Ziele:
Ist ein Ziel nicht erreichbar, schickt das System, welches dieses Problem bemerkt, eine
Destination-Unreachable-Meldung (= Ziel ist nicht erreichbar) an den Absender des Datagramms.
Falls das unerreichbare Ziel ein Netzwerk oder Rechner ist, wird diese Fehlermeldung von einem
dazwischenliegenden Gateway generiert.
Handelt es sich jedoch bei dem Ziel um einen Port, schickt der Zielrechner diese Meldung.

94

Eine nderung im Routing:


Ein Gateway schickt eine Route-Redirect-Meldung,um einem Rechner mitzuteilen, da dieser die
Datagramme fr ein bestimmtes Ziel ber einen anderen Gateway senden soll, z.B. weil der
andere Gateway eine gnstigere Route bietet.
Diese Meldung kann nur gesendet werden, wenn der Absender des Datagramms und die beiden
Gateways am gleichen physikalischen Netz angeschlossen sind.
Die Statusabfrage bei fremden Rechnern:
Ein Rechner kann eine ICMP-Echo-Nachricht schicken um so zu testen, ob ein anderes System
ber IP ansprechbar ist.
Empfngt ein System soclch eine Nachricht, schickt es das gleiche Paket zurck an den
Absender.

7.7 Die Transportschicht


Die oberhalb der Internet-Schicht angesiedelte Protokollschicht des Rechners wird als Rechner-zuRechner-Transportschicht - oder krzer: Transportschicht - bezeichnet. Die beiden wichtigsten
Protokolle dieser Schicht sind das Transmission Control Protocol (TCP) und das User Datagram
Protocol (UDP).
TCP stellt einen zuverlssigen Datenbertragungsdienst mit Fehlererkennung und -korrektur von
einem Ende der Verbindung bis zum anderen bereit. UDP bietet eine verbindungslose bertragung,
die sich durch geringen Verwaltungsaufwand auszeichnet.
Beide Protokolle stellen eine Schnittstelle zwischen der Anwendungsschicht und der Internet-Schicht
zur Verfgung.
Das User Datagram Protocol (UDP, RFC 768):
Das UDP gewhrt Anwendungsprogrammen einen direkten Zugriff auf einen
Datagrammtransportdienst, der dem des IP hnelt. Auf diese Weise knnen Anwendungsprogramme
mit minimalen Verwaltungsaufwand Nachrichten ber das Netz austauschen.
UDP ist ein unzuverlssiges, verbindungsloses Datagramm-Protokoll, da UDP keine Mechanismen
zur Fehlererkennung und -korrektur vorsieht. Innerhalb eines Computers bertrgt UDP die Daten
jedoch stets korrekt.
UDP benutzt die zwei 16-Bit-Felder Source Port und Destination Port im ersten Wort des Message
Headers, um die Daten dem gewnschten Anwendungsproze zu bergeben.
Sind nur geringe Datenmengen zu bertragen, kann es passieren, da der Verwaltungsaufwand fr
die Herstellung einer Verbindung und das Sicherstellen einer korrekten bertragung grer wre als
der Aufwand fr eine erneute bertragung der gesamten Daten. In so einem Fall ist UDP das
effizienteste Protokoll der Transportschicht. Auch Anwendungen, die nach dem Frage-AntwortSchema arbeiten, sind geeignete Kandidaten fr die Benutzung von UDP. Dabei wird die Antwort als
positive Besttigung der Anfrage aufgefat. Ist innerhalb einer bestimmten Zeit keine Antwort
eingetroffen, wird eine neue Anfrage losgeschickt.
Andere Anwendungen enthalten ihre eigenen Mechanismen zur zuverlssigen Datenbertragung und
sind deshalb nicht auf das Protokoll der Transportschicht angewiesen, um diese Sicherheit zu
gewhrleisten. Es wre auerordentlich ineffizient, irgendeiner dieser Anwendungen eine weitere
Ebene der Verifizierung aufzuzwingen.
Das Transmission Control Protocol (TCP, RFC 793):
Anwendungen hingegen, die darauf angewiesen sind, da ihre Daten zuverlssig den
Bestimmungsort erreichen, benutzen TCP, weil es sicherstellt, da die Daten korrekt und in der
richtigen Reihenfolge ber das Netzt transportiert werden. TCP ist ein zuverlssiges,
verbindungsorientiertes Byte-Strea,-Protocol.
TCP arbeitet zuverlssig durch einen Mechanismus namens Positive Acknowledgement with ReTransmission (PAR; = positive Besttigung mit Neu-bertragung). Einfacher ausgedrckt bedeuitet
dies, da ein Rechner die Daten noch einmal sendet, solange er nicht vom Empfnger die
Besttigung erhlt, da sie korrekt empfangen wurden.

95

Die Dateneinheit, die TCP-Module bei der Kommunikation untereinander verwenden, heit SegmentJedes Segment enthlt eine Prfsumme, die auf der Empfngerseite ausgewertet wird um zu testen,
ob die Daten korrekt eingetroffen sind. Ist dies der Fall, so sendet der Empfnger eine positive
Besttigung zurck an den Absender.
Trifft ein beschdigtes Datensegment ein, wird es ignoriert. Nach einer angemessenen Wartezeit wird
der Absender alle Segmente noch einmal losschicken, fr die er keine positive Besttigung erhalten
hat.
TCP arbeitet verbindungsorientiert, d.h. das Protokoll stellt eine logische Rechner-zu-RechnerVerbindung zwischen Sender und Empfnger her.
Zu diesem Zweck bertrgt TCP vor der bertragung der Nutzdaten zunchst einige
Kontrollinformationen, der sogenannte handshake, zwischen Sender und Empfnger und startet
damit den Dialog zwischen den Kommunikationspartnern. TCP kennzeichnet ein Kontrollsegment
durch Setzen des entsprechenden Bits im Flags-Feld des Segment-Headers.
Der von TCP benutzte handshake wird als 3-Wege-handshake bezeichnet, da drei Segmente
ausgetauscht werden.
In der einfachsten Form des 3-Wege-handshakes beginnt Rechner A mit dem Verbindungsaufbau,
indem er Rechner B ein Segment schickt, in welchem das Bit Synchronize Sequence Numbers
(SYN; = synchronisiere Sequenznummern, durch die Sequenznummern bleiben die Daten in der
richtigen Reihenfolge erhalten) gesetzt ist. Dieses Segment teilt Rechner B mit, da Rechner A eine
Verbindung aufbauen mchte, und zustzlich weis Rechner B mit welcher Sequenznummer Rechner
A sein ersten zu bertragendes Segment versehen wird.
Rechner B antwortet daraufhin mit einem Segment, in dem die Bits Acknowledgement (ACK) und
Synchronize Sequence Numbers (SYN) gesetzt sind. Hiermit quittiert Rechner B den Erhalt des
von Rechner A gesendeten Segments und bergibt gleichzeitig die Sequenznummer, mit welcher
Rechner B sein erstes Segment versehen wird. Anschlieen besttigt Rechner A den Erhalt dieses
Segments und beginnt mit der bertragung der eigentlichen Daten.
Nach dem Austausch der Kontrollsegmente hat Rechner A die Gewiheit, da das TCP von Rechner
B bereit ist, Daten zu empfangen. Sobald die Verbindung hergestellt ist, knnen Daten bertragen
werden. Nachdem alle Daten bertragen worden sind, nehmen die beteiligten Module einen weiteren
3-Wege-handshake vor. Dabei werden Segmente mit dem gesetzten Bit No more data from sender
(FIN; = keine weiteren Daten zu bertragen) ausgetauscht, um so die Verbindung zu schlieen.
Dieser Rechner-zu-Rechner-Austausch von Daten schafft die logische Verbindung zwischen den
beiden Systemen.
TCP betrachtet die bertragenen Daten als ununterbrochenen Datenstrom und nicht als Reihe
unabhngiger Pakete. Deshalb sorgt TCP dafr, da die transportierten Daten nicht
durcheinandergeraten. Die Felder Sequence Number und Acknowledgement halten die Bytes in
der richtigen Reihenfolge.
Der TCP-Standard verlangt nicht, da die Rechner ihre Bytes ab einer bestimmten Zahl
durchnummerieren; jedes System whlt seinen eigenen Startwert. Um den Datenstrom in der
richtigen Reihenfolge zu halten, mssen die Kommunikationspartner den Startwert der jeweils
anderen Seite kennen. Dazu werden whrend des handshakes SYN-Segmente ausgetauscht, um die
Numerierung der Bytes zu synchronisieren. Das Fels Sequence Number im SYN-Segment enthlt
die Initial Sequence Number (ISN; = Anfangs-Sequenznummer) als Startwert fr die Nummerierung
der Bytes. Obwohl das Protokoll dies nicht vorschreibt, wird als ISN in der Regel die 0genommen.
Ausgehend von der ISN werden die Datenbytes fortlaufend durchnumeriert, d.h. das erste Byte der
Nutzdaten hat also die Sequenznummer ISN + 1, in der Regel also 1.
Die Sequenznummer im Header eines Datensegmentes kennzeichnet die Position innerhalb des
Datenstromes, welche das erste Datenbyte dieses Segmentes einnimmt.
Das Acknowledgement-Segment (ACK) erfllt zwei Funktionen:
1) die positive Besttigung (positive acknowledgement),
2) die Flukontrolle (flow control).
Die Besttigung teilt dem Absender mit, wieviele Daten bereits empfangen wurden und wieviele mehr
noch empfangen werden knnen. Die Besttigungsnummer (Acknowledge Number) ist die
Sequenznummer des letzten Bytes, das am anderen Ende empfangen wurde. Der Standard schreibt
nicht vor, da jedes einzelne Paket individuell besttigt werden mu. Statt dessen zeigt die
Besttigungsnummer an, da alle Bytes bis zu dieser Nummer korrekt empfangen wurden.

96

Das Feld Window (= Fenster) enthlt die Anzahl Bytes, die der fremde Rechner noch empfangen
kann. Ist der Empfnger in der Lage 6 000 weitere Bytes entgegenzunehmen, enthlt das FensterFeld den Wert 6 000.
Das Fenster zeigt dem Absender an, da er weitere Datensegmente schicken kann. Der Empfnger
steuert also nicht den Datenflu, indem er die Gre des Fensters verndert. Ein Fenster mit dem
Wert 0veranlat den Absender, keine weiteren Daten zu schicken bis ein anderer Fensterwert als 0
empfangen wird.
TCP ist auch dafr verantwortlich, da die von IP empfangenen Daten an die richtige Anwendung
zugestellt werden. Diese Anwendung wird durch eine 16 Bit lange Nummer names Port Number
identifiziert. Der Source Port (= Ursprungs-Port) und der Destination Port (= Ziel-Port) sind im ersten
Wort des Segment-Headers kodiert. Der korrekte Austausch von Daten mit der Anwendungsschicht
ist eine wichtige Aufgabe der Dienste in der Transportschicht.

7.8 Die Anwendungsschicht (Application Layer)


Auf der obersten Ebene der TCP/IP-Protokollarchitektur befindet sich die Anwendungsschicht.
Diese umfat alle Prozesse, die die Protokolle der Transportschicht fr die Datenbertragung nutzen.
Es gibt viele Anwendungsprotokolle, die meisten stellen dem Benutzer Dienste direkt zur Verfgung
und neue Dienste werden laufend hinzugefgt.
Die am weitesten verbreiteten und bekanntesten Anwendungen sind;
TELNET (RFC 854), das Network Terminal Protocol, welches es dem Benutzer ermglicht, sich
auf einem fremden Rechner im Netzwerk einzuloggen;
FTP (RFC 959), das File Transfer Protocol, welches interaktiven Datentransfer ermglicht;
SMTP (RFC 821), das Simple Mail Transfer Protocol, welches fr die Auslieferung von
elektronischer Post (= E-Mail) zustndig ist.
FTP, SMTP und TELNET sind sicherlich die am weitesten verbreiteten TCP/IP-Anwendungen, aber
sowohl als Benutzer wie auch als System-Administrator arbeitet man mit einigen anderen
Anwendungen, so z.B.:
Domain Name Server (DNS, RFC 1035)):
auch Name-Service genannt; diese Anwendung bernimmt die Zuordnung von numerischen IPAdressen zu den Namen, welche den Gerten im Netzwerk zugeordnet wurden
Routing Information Protocol (RIP, RFC 1058):
das Routing ist eine wichtige Funktion von TCP/IP; RIP wird von Gerten im Netz benutzt, um
Routing-Informationen auszutauschen
Network File System (NFS, RFC 1094):
dieses Protokoll ermglicht den gemeinsamen Zugriff von mehreren Rechnern im Netz auf
einzelne Dateien
Einige dieser Dienste wie z.B. TELNET oder FTP verlangen vom Benutzer Grundkenntnisse ber den
Aufbau des Netzwerkes. Andere Dienste wie z.B. RIP arbeiten, ohne da der Benutzer von ihrer
Existenz erfhrt.

97

7.9 Fehlersuche in TCP/IP


Da sich die meisten Probleme auf eine einfache Ursache zurckfhren lassen, fhrt die grndliche
Analyse eines Problems oft zu dessen Lsung.
Da dies unglcklicherweise nicht immer zutrifft, stehen einige Tools zur Untersuchung von
hartnckigen Problemen bereit. Die hier beschriebenen Tools werden in RFC 1147 beschrieben,
daher hier nur ein kurzer berblick:
ifconfig
gibt Auskunft ber die grundlegende Konfiguration eines Interfaces; ifconfig gibt zwei Zeilen aus:
die erste Zeile enthlt den Interface-Namen und die Interface-Parameter, die zweite Zeile enthlt
die IP-Adresse, die Subnet-Maske (in hexadezimaler Schreibweise) sowie die Broadcast-Adresse;
ifconfig ist im Lieferumfang des UNIX-Betriebssystems enthalten;
arp
gibt Auskunft ber die Adreumsetzung zwischen Ethernet und IP; arp kann dazu eingesetzt
werden, Rechner in ihrem Netz aufzuspren, die mit der falschen IP-Adresse arbeiten; arp kennt
drei Optionen:
-a
listet alle Eintrge der ARP-Tabelle auf
-d rechnername
lscht den entsprechenden Eintrag aus der ARP-Tabelle
-s rechnername ether-adresse
trgt eine neue Adresse in die ARP-Tabelle ein
arp ist im Lieferumfang des UNIX-Betriebssystems enthalten
netstat
liefert eine Vielzahl von ntzlichen Informationen; netstat wird benutzt um detaillierte Statistiken
ber die Netzwerk-Interfaces, Sockets und Routing-Tabellen anzuzeigen; netstat ist im
Lieferumfang des UNIX-Betriebssystems enthalten
ping
zeigt, ob ein externer Rechner erreichbar ist oder nicht; ping generiert statische Informationen
ber Verluste und Laufzeiten von Paketen; ping ist im Lieferumfang des UNIX-Betriebssystems
enthalten;
die Syntax von ping lautet:
ping rechner [paketgre] paketanzahl]
rechner
enthlt den Rechnernamen oder die IP-Adresse des Zielrechners
paketgre setzt die Gre des Testpaketes; dieses Feld ist nur relevant, wenn auch die
Paketanzahl gesetzt wird; in der Regel sollte die voreingestellte Paketgre
von 56 Bytes beibehalten werden
paketanzahl enthlt die Anzahl der zu bertragenden Pakete; wird hier kein niedriger Wert
eingegeben, sendet ping kontinuierlich Testpakete bis zur Unterbrechung
(CTRL/STRG + C)
nslookup
stellt DNS-Anfragen an einen Name-Server; nslookup ist Bestanteil der BIND-Distribution
dig
stellt ebenfalls DNS-Anfragen an einen Name-Server und arbeitet hnlich wie nslookup; dig ist via
ftp von venera.isi.edu/pub/dig.2.0.tar.z erhltlich
ripquery
stellt den Inhalt von RIP-Updates dar, die der Rechner sendet oder empfngt; ripquery ist Teil der
gated-Distribution, kann jedoch auch ohne gated verwendet werden; ripquery arbeitet mit jeder
RIP-Implementierung
zwei Parameter von ripquery sollten bekannt sein:
-n
bewirkt, da ripquery alle IP-Adressen in numerischer Form ausgibt; ohne diese
Option versucht ripquery smtliche IP-Adressen auf Domain-Namen abzubilden;
durch die Verwendung von -nmssen keine Namen entschlsselt werden
-r
weist ripquery an, anstelle des Befehls RIP POLLden Befehl RIP REQUEST, der
RIP-Updates schickt, an den Rechner zu senden; RIP POLLwird nicht von allen
RIP-Implementierungen untersttzt

98

traceroute
zeigt, welchen Weg Datenpakete nehmen, die von einem Rechner zu einem anderen wandern;
traceroute gibt Informationen ber jede einzelne Zwischenstation aus; traceroute ist auch via ftp
erhltlich: ftp.ee.lbl.gov/traceroute.tar.Z
etherfind
analysiert die einzelnen Pakete, die zwischen Rechnern in einem Netz ausgetauscht werden;
etherfind ist ein TCP/IP-Protokoll-Analyzer, der den Inhalt von Paketen einschlielich der Header
darstellen kann; etherfind ist die SunOS-Version von tcpdump, und ist ebenfalls via ftp.ee.lbl.gov
erhltlich
etherfind benutzt verschiedene Filter zur Analyse; ein Filter besteht aus einer Primitiven sowie den
Rechnernamen;
mit Hilfe dieser Primitiven und der Operatoren and und or lassen sich recht komplexe Filter
konstruieren; meist reichen jedoch einfache Filter aus, die es ermglichen, die Daten, die
zwischen zwei Rechnern flieen, zu analysieren;
die Primitiven von etherfind und der VMS-Version von tcpdump sind identisch, die UNIX-Version
von tcpdump verwendet etwas andere Primitiven:
Primitive
dst ziel
src absender
host rechner
between rechner1 rechner2
dstnet ziel
srcnet absender
dstport ziel
srcport absender
proto protokoll

filtert Pakete
zum Zielrechner
vom Absender
zum oder vom Rechner
zwischen Rechner1 und Rechner2
zum Ziel-Netzwerk
vom Absender-Netzwerk
zum Ziel-Port
vom Absender-Port
vom Protokoll-Typ
(icmp, udp oder tcp)

99

UNIX tcpdump
dst ziel
src absender
host rechner
host r1 and host r2
dst net ziel
src net absender
dst port ziel
src port absender
ip proto protokoll

8. Kurzreferenz
8.1 Notation
URL

referenziert ein Dokument

beliebige Zahl

beliebige Prozentangabe

***

beliebiger Text

$$$

beliebige Hexadezimalzahl (rot, grn, blau)

Alternativen

[...]

optional

8.2 Kompatibilitt
kein Eintrag

HTML 2.0; sollte von allen Browsern untersttzt werden

3.0

ab HTML 3.0

8.3 Dokumentstruktur
<!DOCTYPE HTML PUBLIC -//W30//DTD HTML//EN2.0>
oder
<!DOCTYPE HTML PUBLIC -//W30//DTD W3 HTML 3.0//EN>
<HTML>
<HEAD>
Elemente des HEAD
</HEAD>
<BODY>
Elemente des BODY
</BODY>
</HTML>

8.4 Kommentare
<!-- *** -->

Kommentartext, wird nicht angezeigt

100

8.5 HEAD-Elemente
Nur <TITLE> wird dargestellt.
<TITLE>***</TITLE>

Titel

<ISINDEX>

erlaubt Stichwortsuche

<ISINDEX PROMPT=***>

Beschriftung

<BASE HREF=URL>

Basis-URL

<LINK REF=***
REL =***
HREF=URL>

Relation zu Dokumenten

<META HTTP-EQUIV=*** Metainformation


NAME=***
CONTENT=***>

8.6 berschriften
<H?>***</H?>

berschriften; ? = 1 bis 6

<H? ALIGN=LEFT|CENTER|RIGHT>***</H?> Positionierung

3.0

8.7 Listen
Listenelemente werden durch <LI> eingeleitet; bei Definitionslisten wird stattdessen <DT> und <DD>
verwendet.
<OL></OL>
<OL TYPE=A|a|I|i|1></OL>

<OL VALUE=?></OL>
<LI TYPE=A|a|I|i|1></LI>
<LI VALUE=?>

numerierte Liste
Zhler fr ganze Liste
A = A, B, C, ...
a = a, b, c, ...
I = I, II, III, ...
i = i, ii, iii, ...
1 = 1, 2, 3, ...
Startwert fr die Liste
Zhler fr Listeneintrag
Startwert fr die Liste

<UL></UL>
ungeordnete Liste
<UL RYPE=DISC|CIRCLE|SQUARE></OL> Marker fr die Liste
DISC = Liste mit Datei-Bullets
CIRCLE = Liste mit runden Bullets
SQUARE = Liste mit eckigen Bullets
<LI TYPE= DISC|CIRCLE|SQUARE></LI>
Marker fr den Listeneintrag
<DIR></DIR>

Verzeichnisliste

<MENU></MENU>

Men-Liste

<DL [COMPACT]></DL>
<DT></DT>
<DD></DD>

Definitionsliste
zu definierender Ausdruck
Definition

101

8.8 Blockformat-Elemente
<BLOCKQUOTE></BLOCKQUOTE>

als Block abgesetzt

<CENTER></CENTER>

als Block zentriert

<P ALIGN=LEFT|CENTER|RIGHT></P> formatierter Absatz


<ADDRESS></ADDRESS>

3.0

Autor-Internet-Adresse

8.9 Texthervorhebungen
SOFT FORMAT, d.h. wird vom Browser kontrolliert:
<EM></EM>

Hervorhebung in Italics

<STRONG></STRONG>

Hervorhebung in Fettschrift

<PRE></PRE>
<PRE WIDTH=?></PRE>

Prformatierter Text
Anzahl der Zeichen

<XMP></XMP>

unformatiert, keine Tags

<CITE></CITE>
<Q></Q>

Zitat, Hervorhebung in Italics


Kurzzitat

<CODE></CODE>

Programmbeispiel

<SAMP></SAMP>

Beispiel

<KBD></KBD>

Variable

<VAR></VAR>

Variable

<DFN></DFN>

Definition

<PERSON></PERSON>

Personenname

3.0

<ACRONYM></ACRONYM>

Akronym

3.0

<ABBREV></ABBREV>

Abkrzung

3.0

<INS></INS>

eingefgt (Revisionsmarkierung

3.0

<DEL></DEL>

gelscht (Revisionsmarkierung)

3.0

<BASEFONT SIZE=?></BASEFONT>

Bestimmung des Basisfont; ? = 1 bis 7

<FONT SIZE=?></FONT>

Fontgre; ? = 1 bis 7

HARD FORMAT, d.h. wird durch den Autor kontrolliert:


<B></B>

Fett

<I></I>

Italic

<TT></TT>

Schreibmaschinenschrift

<UNDERLINE></UNDERLINE>

unterstrichen

3.0

<S></S>

durchgestrichen

3.0

<BLINK></BLINK>

blinkend

<BIG></BIG>

groe Schrift
102

<SMALL></SMALL>

kleine Schrift

<SUB></SUB>

tiefgestellt

<SUP></SUP>

hochgestellt

<font color=#$$$></font>

Schriftfarbe

3.0

<font face=> ... </font>

Schriftart

3.0

<marquee></marquee>
Marquee-Effekt (Auto-Scrolling)
3.0
<marquee direction=right></marquee>
Scrollrichtung nach rechts
3.0
<marquee scrollamount=?></marquee>
Pixel zwischen 2 Scrollzustnden
3.0
<marquee scrolldelay=?></marquee>
Millisekunden zwischen 2 Scrollzustnden
<marquee behavior=slide></marquee>
Textverschlucken ausschalten
3.0
<marquee align=top|middle|bottom></marquee>
Marquee-Umgebung ausrichten
3.0
<marquee height=?> ... </marquee>
Hhe des Marquee-Bereichs
3.0
<marquee hspace=?></marquee>
Abstand zum umgebenden Text
3.0
<marquee bgcolor=$$$></marquee>
Hintergundfarbe des Marquee-Bereichs
3.0

8.10 Dokumentteiler
<P></P>

Absatz

<BR>
<BR CLEAR=LEFT|RIGHT|ALL>
<NOBR>
<WBR>

Zeilenumbruch
clear textwrap
kein Zeilenumbruch
optionaler Zeilenumbruch

<HR>
<HR ALIGN=LEFT|RIGHT|CENTER>
<HR SIZE=?>
<HR WIDTH=?>
<HR WIDTH=%>
<HR NOSHADE>

horizontale Linie
Positionierung
Gre in Pixel
Lnge in Pixel
Lnge in Prozent
ohne Schatten

8.11 Hintergrund und Farben


<BODY BGCOLOR=$$$>

Hintergrundfarbe

<BODY BACKGROUND=URL>

Textur

<BODY TEXT=$$$>

Textfarbe

<BODY LINK=$$$>

Linkfarbe

<BODY VLINK=$$$>

Farbe eines besuchten Links

<BODY ALINK=$$$>

Farbe eines aktiven Links

103

3.0

8.12 Links
<A HREF=URL></A>

Link auf Dokument


URL-Typen:
HTTP://Adressierung von HTML-Dateien im WWW
FTP:// Adressierung von Dateien auf FTP-Servern
TELNET://
Adressierung von Telnet-Servern
GOPHER://
Adressierung von Dateien auf Gopher-Servern
NEWS://
Adressierung vonNewsgroups im Usenet
MAILTO://
Adressierung vonpersnlichen E-Mail-Adressen

<A HREF=../[pfad]/datei.html>***</A>

relativer Verweis zu Datei in einem


anderen Verzeichnis

<A HREF=file://localhost/[Laufwerk:/Pfad]/datei.html>***</A> absoluter Verweis zu


Datei in einem anderen Verzeichnis
<A HREF=datei.html>***</A>

Verweis zu Datei im gleichen Verzeichnis

<A HREF=#***></A>
<A HREF=URL#***></A>
<A NAME=***></A>

Link auf Text


Link auf Text in einem anderen Dokument
Sprungziel

8.13 inline images


<IMG SRC=URL>
<IMG SRC=URL ALT=***>

Grafik
alternativer Text

<IMG SRC=../[pfad]/datei.gif>***</A>

relativer Verweis zu Grafik in einem


anderen Verzeichnis

<IMG SRC=file://localhost/[Laufwerk:/Pfad]/datei.gif>***</A>
absoluter Verweis zu
Grafik in einem anderen Verzeichnis
<IMG SRC=datei.gif>***</A>

Verweis zu Datei im gleichen Verzeichnis

<IMG SRC=URL ISMAP>

aktive Grafik

<IMG SRC=URL ALIGN=TOP|MIDDLE|BOTTOM> Grafikbeschriftung


TOP: Beschriftung oben
MIDDLE: Beschriftung mittig
BOTTOM: Beschriftung unten
<IMG SRC=URL ALIGN=LEFT|RIGHT>
Grafikausrichtung (Text umfliet Grafik)
LEFT: links ausrichten
RIGHT: rechts ausrichten
<IMG SRC=URL BORDER=?>

Rahmen um Grafik setzen; ? = Rahmenbreite in Pixel

<IMG SRC=URL LOWSRC=URL> geringe Auflsung fr Proxy-Modus


<IMG SRC=URL WIDTH=?>
<IMG SRC=URL WIDTH=%>

Gre der Grafik; Breite bestimmen in Pixel


Gre der Grafik; Breite bestimmen in Prozent

<IMG SRC=URL HEIGHT=?>


<IMG SRC=URL HEIGHT=%>

Gre der Grafik; Hhe bestimmen in Pixel


Gre der Grafik; Hhe bestimmen in Prozent

<IMG SRC=URL VSPACE=?>

Abstand zwischen Grafik und Umgebung;


Abstand oben und unten in Pixel

104

<IMG SRC=URL VSPACE=%>

Abstand zwischen Grafik und Umgebung;


Abstand oben und unten in Prozent

<IMG SRC=URL HSPACE=?>

Abstand zwischen Grafik und Umgebung;


Abstand links und rechts in Pixel
Abstand zwischen Grafik und Umgebung;
Abstand links und rechts in Prozent

<IMG SRC=URL HSPACE=%>

8.14 Formulare
<FORM ACTION=URL METHOD=GET|POST></FORM>

Formulardefinition

<INPUT TYPE=TEXT|PASSWORD|RADIO|CHECKBOX|SUBMIT|RESET>
Eingabefeld definieren
<INPUT TYPE=int>
fr ganzzahlige Eingaben
<INPUT TYPE=float>
fr Kommazahlen-Eingaben
<INPUT TYPE=date>
fr Datums-Eingaben
<INPUT TYPE=url>
fr URL-Adreeingaben
<INPUT NAME=***>
<INPUT CHECKED>
<INPUT SIZE=?>
<INPUT MAXLENGTH=?>

Feldname
Vorgabe
Feldgre
maximale Lnge

<INPUT TYPE=RADIO NAME=*** VALUE=***> Beschriftung;


mehrere Buttons mit gleichem Namen bilden eine Gruppe
<INPUT TYPE=CHECKBOX NAME=*** VALUE=***>
Beschriftung;
mehrere Buttons mit gleichem Namen bilden eine Gruppe
<INPUT TYPE=SUBMIT VALUE=***>

abschicken;
VALUE: Beschriftung des Button

<INPUT TYPE=RESET VALUE=***>

verwerfen
VALUE: Beschriftung des Button

<SELECT></SELECT>
<SELECT NAME=***></SELECT>
<SELECT SIZE=?></SELECT>
<SELECT MULTIPLE></SELECT>

Auswahl
Listenname
Anzahl der Optionen
Mehrfachauswahl

<OPTION></OPTION>
<OPTION SELECTED>

Option
per Voreinstellung ausgewhlter Eintrag

<TEXTAREA ROWS=? COLS=?></TEXTAREA>


Texteingabefeld
ROWS: Anzahl Zeilen
COLS: Anzahl Spalten
<TEXTAREA NAME=***></TEXTAREA>
Feldname

105

8.15 Tabelle

3.0

<TABLE></TABLE>

Tabellendefinition

<TABLE BORDER></TABLE>

Gitternetzlinien

<TABLE BORDER=?></TABLE>

Auenrahmendicke in Pixel

<TABLE CELLSPACING=?></TABLE> Zellenbreite in Pixel


<TABLE CELLSPACING=%></TABLE> Zellenbreite in Prozent
<TABLE CELLPADDING=?></TABLE> Abstand Zelleninhalt von Rand in Pixel
<TABLE WITH=?></TABLE>
<TABLE WITH=%></TABLE>

Tabellenhhe in Pixel
Tabellenhhe in Prozent

<TABLE HEIGHT=?></TABLE>
<TABLE HEIGHT=%></TABLE>

Tabellenbreite in Pixel
Tabellenbreite in Prozent

<TABLE BGCOLOR=$$$></TABLE>
<TABLE BORDERCOLOR=$$$></TABLE>
<TABLE BORDERCOLORDARK=$$$></TABLE>

tabellenweite Hintergrundfarbe
Rahmen- und Gitternetzfarbe
dunkler Teil der Rahmen- und
Gitternetzfarbe
<TABLE BORDERCOLORLIGHT=$$$></TABLE> heller Teil der Rahmen- und
Gitternetzfarbe
<TR></TR>
<TR ALIGN=LEFT|RIGHT|CENTER></TR>
<TR ALIGN=TOP|MIDDLE|BOTTOM></TR>
<TD></TD>
<TD ALIGN=LEFT|RIGHT|CENTER></TD>
<TD ALIGN=TOP|MIDDLE|BOTTOM></TD>
<TD VALIGN=TOP|MIDDLE|BOTTOM></TD>
<TD NOWRAP></TD>
<TD COLSPAN=?></TD>
<TD ROWSPAN=?></TD>
<TD WIDTH=?></TD>
<TD WIDTH=%></TD>
<TD HEIGHT=?></TD>
<TD HEIGHT=%></TD>>
<TD BGCOLOR=$$$></TD>
<TH></TH>
<TH ALIGN=LEFT|RIGHT|CENTER></TH>
<TH ALIGN=TOP|MIDDLE|BOTTOM></TH>
<TH VALIGN=TOP|MIDDLE|BOTTOM></TH>
<TH NOWRAP></TH>
<TH COLSPAN=?></TH>
<TH ROWSPAN=?></TH>
<TH WIDTH=?></TH>
<TH WIDTH=%></TH>
<TH HEIGHT=?></TH>
<TH HEIGHT=%></TH>>
<TH BGCOLOR=$$$></TH>

Reihendefinition
Positionierung vertikal
Positionierung horizontal
Datenzelle
Positionierung vertikal
Positionierung horizontal
Positionierung horizontal
kein Zeilenumbruch
? = Anzahl Spalten verbinden
? = Anzahl Zeilen verbinden
Zellenbreite in Pixel
Zellenbreite in Prozent
Zellenhhe in Pixel
Zellenhhe in Prozent
Hintergrundfarbe der Kopfzelle
berschriftszelle
Positionierung vertikal
Positionierung horizontal
Positionierung horizontal
kein Zeilenumbruch
? = Anzahl Spalten verbinden
? = Anzahl Zeilen verbinden
Zellenbreite in Pixel
Zellenbreite in Prozent
Zellenhhe in Pixel
Zellenhhe in Prozent
Hintergrundfarbe der Kopfzelle

<CAPTION></CAPTION>
Tabellenbezeichnung; berschrift
<CAPTION ALIGN=TOP|BOTTOM></CAPTION> Positionierung vertikal

106

8.16 Figure-Umgebung
<FIG SRC="datei.gif"></FIG> Einfache Grafikreferenz
< FIG SRC="datei.gif" ALIGN=LEFT></FIG>
< FIG SRC="datei.gif" ALIGN=BLEEDLEFT></FIG>
< FIG SRC="datei.gif" ALIGN=CENTER></FIG>
< FIG SRC="datei.gif" ALIGN=RIGHT></FIG>
< FIG SRC="datei.gif" ALIGN=BLEEDRIGHT></FIG>

Grafik am linken Textrand ausrichten


Grafik am linken Fensterrand ausrichten
Grafik zentriert ausrichten
Grafik am rechten Textrand ausrichten
Grafik am rechten Fensterrand ausrichten

<CAPTION></CAPTION>

Tabellenbezeichnung; berschrift

<CREDIT>*** </CREDIT>

Grafik beschriften

8.17 Frames
<FRAMESET ...></FRAMESET>

Frame-Definitionen

<FRAMESET ROWS="%,%" COLS="%,%"> </FRAMESET>


Anzeigefenster aufteilen
ROWS: bestimmt die Zeilen und deren Hhen in Prozent
COLS: bestimmt die Spalten und deren Breiten in Prozent
<FRAMESET ROWS="?,?" COLS="?,?"> </FRAMESET>
Anzeigefenster aufteilen
ROWS: bestimmt die Zeilen und deren Hhen in Pixel
COLS: bestimmt die Spalten und deren Breiten in Pixel
<FRAME>

es wird zu Beginn kein Inhalt in dem Frame angezeigt

<FRAME SRC=" datei.html">

definiert innerhalb eines Frame-Sets den Inhalt des


bzw. der zugehrigen Frames

<NOFRAME>

Frame bleibt ganz leer

<FRAME SRC="datei.html" SCROLLING=YES>

Frame besitzt in jedem Fall Scroll-Leisten

<FRAME SRC=" datei.html" SCROLLING=NO>

Frame besitzt in keinem Fall Scroll-Leisten

<FRAME SRC="datei.htm" MARGINWIDTH=? MARGINHEIGHT=?> Abstand definieren:


MARGINWIDTH: bestimmt den Abstand zwischen rechtem bzw. linkem Fensterrand
und dem Fensterinhalt in Pixel;
MARGINHEIGHT: bestimmt den Abstand zwischen oberem bzw. unterem Fensterrand
und dem Fensterinhalt in Pixel
<FRAME SRC="datei.htm" MARGINWIDTH=? MARGINHEIGHT=? NORESIZE>
NORESIZE: der Anwender kann die Gre des Frame-Fensters nicht verndern
<FRAME SRC="datei.htm" NAME="Anzeigefenster"> NAME weistdem Frame einen Namen zu;
in Verweisen kann dieses Frame unter dem vergebenen Namen adressiert werden
Reservierte Fensternamen:
_blank: Das Verweisziel wird in einem neuen Fenster angezeigt
_self: Das Verweisziel wird im gleichen Fenster angezeigt wie der Verweis
_parent: Das Verweisziel wird im bergeordneten Fenster angezeigt. Falls es kein
bergeordnetes Fenster gibt, wird das Verweisziel im gleichen Fenster angezeigt
wie der Verweis selbst
_top: Das Verweisziel wird im ersten Fenster einer Fensterhierarchie angezeigt.
Falls es kein bergeordnetes Fenster gibt, wird das Verweisziel im gleichen
Fenster angezeigt wie der Verweis selbst
<A HREF="datei.htm" TARGET="Anzeigefenster">***</A>
legt fest, , da die adressierte Datei
in dem bestimmten Frame Anzeigefensterangezeigt wird;
TARGET ist der Name des Frame-Fensters, welches mit NAME bestimmt wurde

107

8.18 Verweis-sensitive Grafiken 3.0


<FIG SRC="datei.gif">
<UL>
<LI><A HREF="datei.html" SHAPE="rect ol,or,ul,ur">***</A></LI>
<LI><A HREF="datei.html" SHAPE="circle x,y,r">***</A></LI>
<LI><A HREF="datei.html" SHAPE="polygon x1,y1,x2,y2,...">***</A>
</UL>
</FIG>
rect = viereckige verweis-sensitive Flche
cirle = runde verweis-sensitive Flche
polygon = beliebige vieleckige verweis-sensitive Flche
ol = Pixel von links fr linke obere Ecke
or = Pixel von oben fr linke obere Ecke
ul = Pixel von links fr rechte untere Ecke
ur = Pixel von oben fr rechte untere Ecke
x(1,2).. = Pixel von links
y(1,2).. = Pixel von oben
r = Radius
datei.html = Verweisziele
speziell Netscape / MS Internet Explorer ab Version 2.0:
<MAP NAME="Bildname">
<AREA SHAPE="rect" coords="ol,or,ul,ur" href="#datei.html">
< AREA SHAPE="circle" coords="x,y,r" href="datei.html">
< AREA SHAPE="polygon" coords="x1,y2,x2,x2,..." href="datei.html">
</MAP>
<IMG SCR="bild.gif" USEMAP="#Bildname" BORDER=0>
rect = viereckige verweis-sensitive Flche
cirle = runde verweis-sensitive Flche
polygon = beliebige vieleckige verweis-sensitive Flche
ol = Pixel von links fr linke obere Ecke
or = Pixel von oben fr linke obere Ecke
ul = Pixel von links fr rechte untere Ecke
ur = Pixel von oben fr rechte untere Ecke
x(1,2).. = Pixel von links
y(1,2).. = Pixel von oben
r = Radius
datei.html = Verweisziele
Bildname = zu vergebender Ankername
#Bildname = Sprung zum Ankernamen

108

8.19 Multimedia und Fremdprogramme 3.0


<IMG DYNSCR="datei.avi">

Einfache Video-Referenz

<IMG DYNSCR="datei.avi" LOOP=INFINITE> Video-Referenz mit Abspielwiederholung


infinite = Endloswiederholung, ansonsten Wiederholung als Zahlenwert angeben
<IMG DYNSCR="datei.avi" WIDTH=? HEIGHT=?>

Anzeigegre des Videos

<IMG DYNSCR="datei.avi" IMG SRC="datei.gif">

Alternative Grafikanzeige

< IMG DYNSCR="datei.avi" START=MOUSEOVER>

Start erst, wenn Video im Anzeigebereich

<IMG DYNSCR="datei.avi" CONTROLS>

<SOUND SRC="datei.wav">

Kontrollbuttons fr Anwender

Einfache Sound-Referenz

< SOUND SRC="datei.wav" LOOP=INFINITE DELAY=?>


Sound-Referenz mit Abspielwiederholung und Zwischenpausen;
infinite = Endloswiederholung, ansonsten Wiederholung als Zahlenwert angeben;
delay = Zwischenpausen in Sekunde

8.20 Java-Applets 3.0


Netscape-Syntax:
<APPLET CODE=Objektklasse.class WIDTH=? HEIGHT=? SRC="datei.java">
<PARAM NAME=Name VALUE="Text">
</APPLET>

HotJava-Syntax:
<APP CLASS="Objektklasse" SRC="datei.java" WIDTH=? HEIGHT=? ParameterName=Wert>

8.21 OLE-Objekte (Windows)


MS Internet Explorer ab Version 2.0:
<EMBED SRC="datei.typ">

Typ = beliebiger Dateityp, der unter Windows registriert ist

8.22 Sonderzeichen
&auml;
&Auml;

&ouml;
&Ouml;

&uuml;
&Uuml;

&szlig;

&lt;

&gt;

&amp;

&quot;

<

>

&

&ensp;
&endash;

Leerzeichen von der Breite n


Bindestrich von der Breite n

&nbsp;

Leerzeichen ohne Umbruchmglichkeiten dahinter

109

9. Glossar
Account

Zugangsberechtigung zu einem Online-System; der Account besteht aus Name


und Kennwort.

Amaya

neuer HTML 3.2-fhiger Viewer und Editor des W3-Konsortiums

anchor

Marker fr den Beginn und das Ende eines Hypertextlinks

anonymous ftp

spezielle Form des FTP-Dienstes, der Benutzern weltwqeit Zugang zu FTPServern ohne Pawort bzw. mit Pawort anonymouserlaubt

Applet-Viewer

mit dem Applet-Viewer kann man die in HTML-Seiten enthaltenen Applets


ausfhren. Er zeigt jedoch nicht die ganze HTML-Seite an, sontern extrahiert
das Applet aus der Seite heraus

Application

eigenstndiges Programm, welches in Java geschrieben wurde und ohne


Browser ausgefhrt werden kann.

Archie

Archie-Server sind digitale Verzeichnisse, die Informationen darber enthalten, auf welchem
Internet-Server Files zu welchen Themen aufbewahrt werden.

Arena

am CERN entwickelter experimenteller HTML 3.0-Browser

ARP

Address Resolution Protocol; dient der Umsetzung von 48-Bit-Ethernet-Adresse in 32Bit-IP-Adressen; siehe auch RARP

ASCII

Abkrzung fr American Standard Code for Information Interchange; Standardverfahren


zur Codierung alphabetischer, numerischer und Steuerzeichen in 7-bit-Form

Attribut

Body

Parameter zur Steuerung eines HTML-Elementes

Der Hauptteil eines HTML-Dokumentes

Browser

Ein Programm, welches ber Netzwerke angefertigte Dokumente darstellt

bullet

gefllter Kreis als Markierungszeichen von Listen

Bytecode

Der Bytecode ist das plattformunabhngige, aber sehr kompakte


Zwischenformat eines Java-Programms beziehungsweise Java-Applets. Dieser
Code wird vom Java-Compiler erzeugt und dient dem Java-Interpreter als
Futter. Bytecode ist keine Maschinensprache, sondern plattformunabhngig
und mu deshalb erst interpretiert werden. Dies geschieht mit speziell zu
diesem Zweck entwickelten Interpretern oder Software, in welcher der
Interpreter integriert ist, z.B. Netscape ab Version 2.0.

CERN

Das Europische Zentrum fr Kern- und Elementarteilchenphysik in Genf; gilt


als Wiege des World Wide Web

CGI

Abkrzung fr Common Gateway Interface; bezeichnet Standardschnittstelle


zwischen HTTP-Server und externen Programmen

client

ein Programm, welches Informationen von einem Server anfordert

client-server-Architektur
Kommunikation zwischen Prozessen, die auf dem Anforderung/AntwortPrinzip beruhen
container
clickable image

Bezeichnung fr ein HTML- oder SGML-Element, welches Text enthlt


Grafik mit sensitiven Regionen, die als Hyperlinks, durch Mausklicks aktiviert,
auf andere Dokumente verzweigen

110

Daemon

Prozesse, die vom Benutzer unsichtbar im Hintergrund arbeiten und auf Anfragen
reagieren

DTD

Abkrzung fr Document Type Definition; dient zur Definition von SGMLScriptelementen

E-Mail

elektronische Briefbermittlung ber Mailbox oder Datennetze

FAQ

Frequently Asked Questions. Sammlungen von hufig gestellten Fragen und


den dazugehrigen Antworten aus allen Bereichen.

ftp

Abkrzung fr file transfer protocol und dient zur Kommunikation zwischen


unterschiedlichen Rechnern, d.h. mit ftp lassen sich Dokumente externer
Computer transferieren, lschen, ndern oder auch umbenennen

Gateway

Brcken zwischen verschiedenen Datennetzen oder Dateidiensten

gif

Grafikformat, Abkrzung fr graphics interchange format

gopher

Hierarchisch aufgebautes und menartig organisiertes Informationssystem des


Internets, das Zugang zu unterschiedlichsten Daten bietet

GNU

Rekursiv benutzte Abkrzung fr GNU ist Not UNIX; bezeichnet Software von
der Free Software Foundation

Head

Kopfteil eines HTML-Dokumentes

Home Page

Einstiegs-Seite von Informations-Anbietern auf dem WWW

Hotjava

Hotjava ist ein Net-Browser, der zum Java-SDK von Sun gehrt. Er ist in der
Lage Applets auszufhren.

HTML

Abkrzung fr HyperText Markup Language; Sprache zur Strukturierung von


Dokumenten im Internet. Diese Sprache ist nichts anderes als ein Rich-TextFormat, mit welchem sich Dokumente mit Querverweisen auf weitere
Dokumente, Bilder usw. kodieren lassen

HTTP

Abkrzung fr HyperText Transfer Protokoll; Protokoll, welches benutzt wird,


um innerhalb des WWW Daten und Dokumente auszutauschen

Hypertext

Ein Dokument, das markierten Text als Links zu anderen Dokumenten enthlt

ICMP

Internet Control Message Protocol; ICMP meldet Ausflle und Fehler, die bei
der bertragung von IP-Paketen auftreten

icon

kleines graphisches Symbol zum Markieren von Programmen und Dateien

image maps

Dateien, die die Information ber Koordinaten und die zu aktivierenden


Hyperlinks fr clickable images enthalten

inline images

Bild oder Grafik, welches von einem Browser im HTML-Dokument dargestellt


werden kann

Internet

Weltweites Netz von Netzen, welches das TCP/IP-Protokoll zur


Kommunikation benutzt

IP

Internet Protocol; es dient der Adressierung und Fragmentierung von Daten


und bermittelt diese vom Sender zum Empfnger
111

ISO

Abkrzung fr International Standards Organisation; Gremium zur Definition


und Entwicklung von Netzwerk-Standards

Java

Der Begriff Java ist ein amerikanischer Slang-Ausdruck fr heien Kaffee. Ab


etwa 1990 begann die Entwicklung der gleichnamigen Programmiersprache
Java, an der unter anderem James Gosling und Billy Joy beteiligt waren.

Java-Applets

Applets sind Miniprogramme, die man als Referenz auf eine Klassendatei in
HTML-Dateien einbettet. Ein Programm sucht in diesem HTML-Dateien nach
solchen Referenzen. Stt es auf einen Querverweis zu einem Applet, ldt es
die entsprechende Klassendatei (*.java). Danach interpretiert es deren Inhalt (=
den Bytecode), indem es den Bytecode Instruktion fr Instruktion in die
Maschinensprache des jeweiligen Computers wandelt.

Javacode

Java-Applets werden im Javacode codiert, um dann vom Browser als Bytecode


interpretiert zu werden.

Java-Compiler

Der Java-Compiler wandelt Java-Quelltexte (*.java) in Java-Bytecode (*.class)


um, den der Java-Interptreter ausfhrt.

Java-Interpreter

Java-Interpreter sind in der Regel Java-fhige Web-Browser.

Java-Klassenbibliotheken
Da der Sprachumfang von Java relativ klein ist, kommt den
mitgelieferten Klassenbibliotheken groe Bedeutung zu. Sie decken praktisch
erst alle Bereiche der Softwareentwicklung ab.
Java-Packages

Sun hat die bei Java mitgelieferten Klassenbibliotheken nach


Aufgabengebieten in Packages integriert:
java.applet
alle Klassen fr Applets
java.awt
GUI-Klassen (Abstract Windowing Toolkit)
java.awt.image Klassen fr die Bearbeitung von Bildern
java.awt.peer
weniger bentigte Klasseb fr GUIs
java.io
Klassen fr die Ein-/Ausgabe (Input(Output)
java.lang
Object-Programmklassen
java.net
Netzwerkuntersttzung
java.util
verschiedene Datenstrukturen und Zufallszahlen
sun.tools.debug fr den Debugger bentigte Klassen

Java-Programme

Im Gegensatz zu Applets knnen Java-Anwendungen unabhngig von


Webseiten ausgefhrt werden.

Java-Quelltexte

Die Java-Quelltexte werden wie bei anderen Prpgrammiersprachen auch mit


einem ASCII-Editor kodiert und mit der Extension java gespeichert.

JavaScript

JavaScript ist identisch mit Java, wobei der Quelltext jedoch direkt in
eineHTML-Seite eingebunden und nicht referenziert wird. JavaScript soll dazu
dienen, animierte Webseiten einfacher zu gestalten.

Jigsaw

in JAVA geschriebener Referenz-HTTP-Server des W3-Konsortiums;


Bezugsquelle: http://www.w3org/pub/WWW/Jigsaw

JPEG

Grafikformat, Abkrzung fr Joint Photographic Experts Group Standard zur


Kompression von Grauskalen- und Farbbildern

Meta-Information

Information ber Informationen

MIDI

Abkrzung fr Musical Instrument Digital Interface; Notenorientierte


Kontrollsprache fr Musikdaten

MIME

Abkrzung fr Multipurpose Internet Mail Extensions; definiert das


Datenformat, welches mit E-Mail verschickt werden soll

112

MPEG
Multithreading

Abkrzung fr Moving Picture Experts Group; Standard zur Kompression von


bewegten Bildern und Animationen
verschiedene Aufgaben oder Ereignisse werden gleichzeitig bzw. abwechsend
nacheinander von der Software bearbeitet.

NCSA

Abkrzung fr National Center of Supercompouting Applications; Einrichtung


der University of Illinois, welche den Browser MOSAIC entwickelte

NFS

Network File System; mit NFS lassen sich PCs und Grorechner auf
transparente Weise verbinden. Der auch als ONC (Open Network Computing)
bekannte entwickelte UNIX-Dienst stellt virtuelle Verbindungen von
Laufwerken/Festplatten her, so da sich ein entferntes Dateisystem als
Erweiterung ihres eigenen lokalen Dateisystems darstellt. Auch PCs knnen
ber das Produkt PC-NFS auf ein mit NFS ausgestatteten Rechner zugreifen.

NNTP

Network News Transport Protocol; das Protokoll, welches die Art und Weise
des Austausches von News zwischen Computern im Internet definiert

OPAC

Online-Publikumskataloge von Universittsbibliotheken

Port

Instanz, die von Internet-Datentransport-Protokollen benutzt wird, um zwischen


verschiedenen Diensten zu unterscheiden; wird durch eine Zahl spezifiziert, die
sogenannte Port-Nimmer

PostScript

beschreibt die Darstellung von Text und Grafik auf druckbaren Medien; wurde
von Adope Systems Incorporated entwickelt

Protokoll

Regeln, welche die Kommunikation und den Austausch von Daten zwischen
verschiedenen Rechnern steuern

RARP

Remote Address Resolution Protocol; mit RARP kann eine laufwerkslose


Internet-Adresse initialisiert werden. ARP

RFC

Request for Comment; enthalten die neuesten >Versionen ber TCP/IPSpezifikationen

Server

ein Programm, welches auf Anfragen von Client-Programmen antwortet; wird


als Synonym hufig auch fr den Rechner benutzt, auf dem sich dieses
Programm befindet

server side includes

eine Eigenschaft des NCSA-Servers, weche es erlaubt, Informationen in


HTML-Dokumenten zur Zeit ihrer Auslieferung einzubinden

selector

Zeichenkette, die benutzt wird, um einzelne Men-Punkte eines GopherServers zu spezifizieren

SGML

Abkrzung fr Standard Generalized Markup Language; ein ISO-Standard zur


Strukturierung von Dokumenten

SMTP

Simple Mail Transfer Protocol; SMTP ist ein Dienst, der die Kommunikation
zwischen Mail-Anwendungen auf unterschiedlichen Computern erlaubt

Socket

bezeichnet die Kombination aus Internet-Adresse und Portnummer, daher kann


es keine zwei identischen Socket-Paare zur gleichen Zeit geben.

Tag

Ein SGML-Zeichen zur Markierung von Dokument-Elementen


113

TCP

Transmission Control Protocol; TCP ist ein verbindungsorientiertes Protokoll


und fr den sicheren Transport von Daten durch das Netzwerk verantwortlich.
Es erkennt und korrigiert bertragungsfehler selbststndig.

Telnet

Remote Terminal Login; ist das Protokoll des Internets fr virtuelle Terminals.
Es erlaubt, sich auf fremden Rechnern mit IP-Anbindung einzuloggen, falls
man dort eine Benutzerberechtigung besitzt

UDP

User Datagram Protocol; das verbindungslose Protokoll ohne Fehlerkorrektur


fr den Transport von Daten durch das Netzwerk.

URI

Abkrzung fr Uniform Resource Identifier; Standard zur Identifikation von


Daten-Quellen auf dem Internet

URL

Abkrzung fr Uniform Resource Locator; Mechanismus zur (eindeutigen)


Identifizierung und Benennung von Datenquellen im Internet, bzw. im Netz
allgemein

Usenet

Ursprnglich war das Usenet nur fr den Transport von ffentlichen


Nachrichten gedacht; inzwischen wird der Begriff Usenet als weltweites E-Mailund Nachrichtennetz verstanden.

Virtual Machine

Die Virtual Machine besteht aus einer Software, die einen Prozessor simulert

WAIS

Abkrzung fr Wide Area Information Service; ermglicht die Volltext-Suche in


weltweit verteilten Datenbanken

W3O

Abkrzung fr W3-Organisation; weltweit einberufene Organisation zur


Weiterentwicklung der WWW-Technologie

WWW

Abkrzung fr World Wide Web; weltweiter, verteilter und hypertext-orientierter


Informationsdienst

X Window-System

plattformbergreifendes, netzwerkfhiges Festersystem, das am MIT begrndet


wurde

114

10. Literatur
10.1 Bcher
Cricket, L., Peek, J., Jones, R., Buus, B., Nye, A.; Managing INTERNET Information Services;
OReilly & Associates, Inc., Sebastopol; USA; 1994
Deikman, A.; UNIX - Programmierung auf dem 80286/80386; Markt & Technik Verlag; 1989
Ford, A.; Spinning the Web - How to provide Information on the Internet;
International Thompson Publishing; London; 1995
Hunt, C.; TCP/IP - Network Administration; OReilly & Associates, Inc.; Sebastopol; USA 1992
Koch-Steinheimer, P.; HTML Verffentlichen im Internet;
Verlag Harri Deutsch, Frankfurt am Main, 1995
Lemay, L.; Web Publishing mit HTML; Markt & Technik Buch-und Software-Verlag GmbH; 1995
Martin, G., Trostmann, M.; Programmieren mit UNIX; Verlag Friedr. Vieweg & Sohn,
2. Auflage, 1987
Neou, V., Recker, M.; HTML CD An Internet Publishing Toolkit for Windows;
Prentice Hall PTR, Upper Saddle River, New Jersey 07458; 1995
Scheller, M., Boden, K.-P., Geenen, A., Kampermann, J.; Internet: Werkzeuge und Dienste;
Springer Verlag, Berlin - Heidelberg - New York; 1994
Szillat, H.; SGML - Eine praktische Einfhrung; International Thomson Publishing; Bonn; 1995

10.2 Artikel
Back,S.; Heier Kaffee: Programmieren mit Java; ct; 2, 138 - 142, 1996
Behme, H.; Rhythmuswechsel - 5. Weltweite Web-Veranstaltung in Paris; iX; 7, 16 - 17, 1996
Eggeling, Th.; Ausgespht im Internet: JavaScript ffnet Sicherheitslcken;
PC-Welt; 5, 48, 1996
Goldmann, M.; Java light; PC-Online; 7, 124 - 127, 1996
Hosenfeld, F., Brauer, K.; Kommunikation ohne Grenzen - TCP/IP: Informationsbermittlung im
Internet; ct; 12, 330 - 336, 1995
Klute, R.; Aus dem Rahmen - Netscapes Besonderheiten: Frames und Zielfenster;
iX; 5, 156 - 164, 1996
Kunze, M.; Geheimtip: Entwickeln und Testen von Web-Projekten; ct; 9, 166 - 172, 1995
Kuschke, M.; Sysadmin-Corner: Java, NFS und andere Schwachstellen; iX; 6, 154 - 156, 1996
Mesaric, G.; Missing Link - Vosaic: Echtzeitvideo per WWW; iX; 6, 116 - 121, 1996
Mintert, St.; Annherungsversuche - JavaScript: neue Netscape-Mglichkeiten;
iX; 2, 134 -139, 1996
Mintert, St.; Rendezvous - LiveConect: Kommunikation zwischen Java und JavaScript;
iX; 7, 110 - 114, 1996
Schneider, U.; Applets, schne Applets; iX; 5, 62 - 68, 1996

115

Schneider, U.; Vorgemahlen - Packages: Arbeit mit Javas Klassenbibliotheken;


iX; 6, 142 - 147, 1996
Schneider, U.; Sag mir quando - Talk-Applet: im Web kommunizieren; iX; 7, 142 - 152, 1996
Steppan, B.; Caf ol: Projekt Java-Applets; DOS; 7, 200 - 208, 1996
Templ, J.; Schwarzes Loch - Wie sicher ist Java wirklich ?; iX; 5, 70 - 73, 1996

10.3 Quellen des Internet


Adressen im Internet ndern sich schneller als das Wetter. Wenn daher der eine oder der andere Link
nicht dahin fhren, wo man eigentlich hinmchte, hilft manchmal eine Suchmeldung, z.B.
AltaVista
http://altavista.digital.com

WWW
World Wide Web-Initiative:
http://www.w3.org
W3-Konsortium:
http://www.w3.org/hypertext/WWW/Consortium/
W3: HTML-Spezifikation:
http://www.w3.org/hypertext/WWW/MarkUp/MarkUp.html
W3: Text Version der HTML-Spezifikation:
http://www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec.txt
URL, URN und URI Info's und Spezifikationen:
http://www.w3.org/hypertext/WWW/Addressing/Addressing.html
SGML:
http://www.iso.ch/cate/d16387.html

HTML-Tutorium:
HTML-Dateien selbsterstellen von Stefan Mnz:
http://ourworld.compuserve.com/homepages/muenz/selfhtml.zip
The HTML Writers Guild:
http://www.synet.net/hwg/
The Web Developer's Journal:
http://www.awa.com/nct/software/eleclead.html

Server:
CERN HTTP-Server-Status:
http://www.w3.org./hypertext/WWW/Daemon/Overview.html
NCSA HTTPD
http://hoohoo.ncsa.uiuc.edu/docs/Overview.html

116

CGI:
The Common Gateway Interface (CGI):
http://hoohoo.ncsa.uiuc.edu/cgi/
CGI Tutorial:
http://lpage.com/cgi/
HTML-based Interface:
http://blackcat.brynmawr.edu/~nswoboda/prog-html.html
Perl-Tutorium fr Anfnger:
http://www.cs.cmu.edu:8001/htbin/perl-man
Eine Sammlung exzellenter Perl-Tools:
http://www.uci.edu/indiv/ood
CGI Form Handling in Perl:
http://www.bio.cam.ac.uk/web/form.html
A CGI Programmer's Reference:
http://www.best.com/~hedlund/cgi-faq/
Die CGI Spezifikation:
http://www.ruhr-uni-bochum.de/X/tommy.informatik.uni-dortmund.de/iX/WWW/CERNServer/Dynadocs/CGISkripts.html

JAVA:
JAMBA - JAVA-Applikationen ohne Programmieren:
http://www.aimtech.com
SUN:
http://java.sun.com
Javasoft FTP-Server:
ftp://ftp.javasoft.com
Uni-Augsburg FTP-Server:
ftp://infoserv.cc.uni-augsburg.de/pub/all_os/java
AOL's JAVA-Workshop:
http://users.aol.com/thingtone/workshop/index.html
FAQ: Applet Security:
http://www.javasoft.com/sfaq/
Sun's Java-Dokumentation:
http://www.javasoft.com/doc.html
Netscapes Handbuch ber JavaScript:
http://home.netscape.com/eng/mozilla/Gold/handbook/javascript/index.html
Bekanntmachung von Home-Pages:
Submit it!
http://www.submit-it.com/
HomeCom Communications
http://www.homecom.com/global/pointers.html
Deutsches Internet Verzeichnis
http://vroom.web.de/web/html/new.html

117