7 - WBT Master

Transcription

7 - WBT Master
Technische Universität Graz
Institut für Informationsverarbeitung und
Computergestützte neue Medien
Skript zur Vorlesung
506.032, 506.432
WS 2002/2003
Multimediale Informationssysteme
DI. Christof Dallermassl
Univ.Ass.DI.Dr. Denis Helic
Version vom 24. November 2004
Inhaltsverzeichnis
1 Inhaltsübersicht
1.1
1.2
11
Organisatorisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.1.1
Übungsablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Änderungen im Skript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2 Internet - das Netz der Netze
16
2.1
Geschichtliche Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
Technische Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.3
Dienste im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.4
Protokolle im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3 Informationssysteme
21
3.1
Historisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.2
Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.2.1
Geschichte von Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.2.2
Einteilung von Suchmaschinen nach Kategorien . . . . . . . . . . . . . . . . . . . .
25
Indexsuchdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Katalogsuchdienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Meta Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
Recommendation Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.3
Reihung von Suchergebnissen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.4
Suche nach Multimediadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.3
Brockhaus Multimedial
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.3.1
Textdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.3.2
Computergenerierter Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.3.3
Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.3.4
Videos und Animationen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.3.5
Landkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.3.6
Weblinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.3.7
Programming Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
Gläserner Mensch
1
INHALTSVERZEICHNIS
2
4 Markup Languages
34
4.1
4.2
4.3
4.4
SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.1
Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.1.2
Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.1.3
Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.1.4
Dokumententypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.1.5
Probleme von SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.1
Tags und Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.2
HTML Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2.3
HTML Mindesttags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2.4
HTML Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.5
Farben in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.6
Skripte (Client-seitig) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.2.7
Weiterführende Informationen über HTML . . . . . . . . . . . . . . . . . . . . . .
40
Style Sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.3.1
Einbinden von Style Sheet Definitionen . . . . . . . . . . . . . . . . . . . . . . . .
41
4.3.2
Unterschiedliche Ausgabemedien . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.3.3
Format-Definitionen für HTML-Tags . . . . . . . . . . . . . . . . . . . . . . . . . .
43
4.3.4
CSS Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
eXtensible Markup Language (XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.4.1
Warum XML und nicht HTML? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.4.2
Aufbau von XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
XML Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
XML Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
Document Type Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
Schema Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
Processing Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
4.4.3
Beispiele Vorhandener XML-Definitionen . . . . . . . . . . . . . . . . . . . . . . .
56
4.4.4
Extensible Stylesheet Language (XSL) . . . . . . . . . . . . . . . . . . . . . . . . .
58
Mustervergleich (XPath) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
Formatting Objects (FO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
XML/XSL in the real-world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
Weitere Literatur zu XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
4.4.5
5 Digital Audio
66
5.1
Digitale Darstellung von Tönen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
5.2
Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.2.1
69
Wellentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
INHALTSVERZEICHNIS
3
5.2.2
MPEG Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
5.2.3
Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
5.2.4
Mehrkanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
5.2.5
Weitere Kompressionsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
5.2.6
MPEG Layer 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
5.2.7
MPEG Layer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
5.2.8
MP3 - MPEG Layer 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
5.2.9
MPEG2/4 AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
5.2.10 MP3 Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.2.11 Ogg Vorbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.2.12 TwinVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
5.2.13 ATRAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
5.2.14 Dolby AC-3/QDesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
5.2.15 Wave
75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.16 MSAudio - WMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
5.2.17 Realaudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
5.2.18 Literatur zu Digital Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
5.3
MP3 Hörtest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
5.4
MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6 Digital Images
6.1
6.2
6.3
6.4
78
Das Auge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.1.1
Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.1.2
Richtlinien für die Verwendung von Farben . . . . . . . . . . . . . . . . . . . . . .
79
Farbmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.2.1
RGB-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.2.2
CMY-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.2.3
YUV-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.2.4
YIQ-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.2.5
HSV-Farbmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.2.6
Umrechnung zwischen Farbmodellen . . . . . . . . . . . . . . . . . . . . . . . . . .
82
Rasterbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.3.1
Farbe in Rasterbildern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
Gamma-Korrektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
Alpha-Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
Datenkompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
6.4.1
Lauflängenkodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
6.4.2
LZW-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
6.4.3
Huffman Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
6.4.4
Verlustfreie JPEG Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
6.4.5
Verlustbehaftete JPEG Kompression . . . . . . . . . . . . . . . . . . . . . . . . . .
90
INHALTSVERZEICHNIS
4
Progressive Encoding
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
JPEG Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
JPEG 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
JPEG2000 Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
Fraktale Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
Bildformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
6.5.1
BMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
6.5.2
TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
6.5.3
GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
6.5.4
PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
Interlacing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
Datenkompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
6.4.6
6.4.7
6.5
6.6
6.7
6.5.5
JFIF (JPEG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.5.6
JPEG 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Metaformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.6.1
WMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.6.2
PICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Vektorgrafik Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.7.1
Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.7.2
Portable Document Format (PDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.7.3
DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.7.4
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Anwendung von SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6.8
Digitale Wasserzeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Lowest Bit Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Texture Block Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Patchwork Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Steganografie Literatur
7 Digital Video
7.1
7.3
107
Video und der Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
7.1.1
7.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Wahrnehmung von Bewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Analoges Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.1
BAS und FBAS (Composite Video) . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.2
Komponentenvideo (Component Video) . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.3
Y/C Video (Separiertes Video) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.4
PAL Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.5
NTSC Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.2.6
High Definition Television (HDTV) . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Digitale Videotechnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.3.1
Codecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
INHALTSVERZEICHNIS
5
Cinepak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Indeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Microsoft Video-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Microsoft RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
MJPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3.2
Videokompression nach H.261 und H.263 . . . . . . . . . . . . . . . . . . . . . . . 110
H.261 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.3.3
Videokompression nach MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
MPEG-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
MPEG-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Windows Media Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . 114
DivX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
MPEG-Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
I-Frame Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
P-Frame und B-Frame-Codierung . . . . . . . . . . . . . . . . . . . . . . . . 115
D-Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.3.4
Video-Dateiformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Audio-Video-Interleaved Format (AVI) . . . . . . . . . . . . . . . . . . . . . . . . . 116
Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
RealVideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Advanced Streaming Format (ASF) . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.4
7.5
Speichermedium DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.4.1
Kopierschutzmechanismen der DVD . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.4.2
Rechtliche Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Synchronized Multimedia Integration Language (SMIL) . . . . . . . . . . . . . . . . . . . 118
8 Serverseitige Technologien
8.1
122
Dynamische Generierung von Web-Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.1.1
Common Gateway Interface (CGI) . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.1.2
Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.1.3
Sicherheitsüberlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.1.4
Server Side Includes (SSI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.1.5
Servlets und Java Server Pages (JSP) . . . . . . . . . . . . . . . . . . . . . . . . . 125
Java-Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Java Server Pages (JSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Interne Behandlung von JSP . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Installation Servlet/JSP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
INHALTSVERZEICHNIS
6
Installation Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Installation eigener Java Server Pages . . . . . . . . . . . . . . . . . . . . . 128
Installation eigener Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
8.1.6
Active Server Pages (ASP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
8.1.7
in the beginning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Informationen zu ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.1.8
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.1.9
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.1.10 Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.2
Distributed Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
8.2.1
.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
C#
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
WebMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.3
WAP/WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.3.1
WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.3.2
WAP
8.3.3
Installation einer eigenen WAP-Einwahl unter Linux . . . . . . . . . . . . . . . . . 139
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
mgetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
pppd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Kannel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9 Knowledge Management
9.1
9.2
142
Die (Informatik) Welt in 100 Jahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.1.1
Wie kann irgendwer über eine so lange Zeit eine vernünftige Prognose machen? . . 142
9.1.2
Die arbeitsteilige Gesellschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.1.3
Die wissensteilige Gesellschaft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9.1.4
Wissensteilige Gesellschaft oder im Wissen ertrinkende Gesellschaft? . . . . . . . . 145
9.1.5
Technik und Technikspekulationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.1.6
Wollen wir das alles? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.1.7
Zum Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Active Documents: Concept, Implementation and Applications . . . . . . . . . . . . . . . 148
9.2.1
The notion of active documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
9.2.2
The implementation of active documents
. . . . . . . . . . . . . . . . . . . . . . . 149
The heuristic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
The iconic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
The linguistic approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
9.2.3
Futher research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
9.2.4
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
INHALTSVERZEICHNIS
9.2.5
7
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10 Prüfungsfragen
153
10.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
10.2 Informationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
10.3 Markup Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.4 Digital Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.5 Digital Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
10.6 Digital Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.7 Serverseitige Technologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.8 Bonus Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
A MP3 Hörtest
176
B Abkürzungsverzeichnis
180
C Glossar
182
Literaturverzeichnis
184
Index
187
Abbildungsverzeichnis
2.1
Anzahl der Hosts im Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.2
EBONE 2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.3
hierarchical organisation of domain names . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.1
Ted Nelson’s Interfile Communication (1971) . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.2
Screenshot eines Gopher Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.3
Sponsored Links bei Suchmaschine ’Overture’ . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.4
Suchergebnis ähnlicher Bilder anhand ihrer Struktur . . . . . . . . . . . . . . . . . . . . .
29
3.5
Beispiel des Wissensnetzwerkes (Computergenerierter Kontext) des Multimedialen Brockhauses (2001) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.1
Das Ergebnis des Formatting Object Processors . . . . . . . . . . . . . . . . . . . . . . . .
63
4.2
Internet Explorer 5.0: XML Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
4.3
Internet Explorer 5.0: XSL Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
4.4
Internet Explorer 5.0: XML Datei mit Formatierungen aus XSL Datei . . . . . . . . . . .
65
5.1
Abtastung der Welle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.2
Abtastung der Welle - zeit und wertdiskret . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.3
Abtastung der Welle - Quantisierungsfehler . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.4
Aliasing bei zu niederer Abtastfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.5
Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
6.1
Farbraum des RGB-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.2
Farbauswahldialog des Bilderbearbeitungsprogrammes Gimp . . . . . . . . . . . . . . . .
81
6.3
Farbmischung bei RGB und CMY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4
Farbraum des CMY-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.5
Codebaum für die Huffman-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
6.6
Helligkeitsänderung gegenüber Farbtonänderung . . . . . . . . . . . . . . . . . . . . . . .
90
6.7
Zick-Zack-Serialisierung der DCT bei der JPEG-Kompression . . . . . . . . . . . . . . . .
92
6.8
Sehr hohe (1:100) Kompressionsrate bei JPEG . . . . . . . . . . . . . . . . . . . . . . . .
93
6.9
Vergleich JPG mit JPG 2000 bei gleicher Datenrate . . . . . . . . . . . . . . . . . . . . .
94
6.10 JPEG 2000 Regions of Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
6.11 Wavelet Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
8
ABBILDUNGSVERZEICHNIS
6.12 JPG 2000 Wavelet Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
96
6.13 SVG Grafik ’Stars and Stripes’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.1
I-Frames und P-Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
7.2
Anordnung und Beziehung der Frame-Typen bei der MPEG-Kompression . . . . . . . . . 115
7.3
RealPlayer mit SMIL Unterstützung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
8.1
Die Common Language Runtime (CLR) Architektur von .NET . . . . . . . . . . . . . . . 135
8.2
WAP-Einwahl und beteiligte Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Tabellenverzeichnis
4.1
Unvollständige Liste der Entities in HTML . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5.1
Werte von Abtastfrequenzen und Samplingraten . . . . . . . . . . . . . . . . . . . . . . .
67
6.1
Kompressionsfaktoren bei verlustbehafteter JPEG-Kompression . . . . . . . . . . . . . . .
90
6.2
Quantisierungstabelle von JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
6.3
EXIF Daten eines JPEG-Bildes einer digitalen Kamera. . . . . . . . . . . . . . . . . . . . 100
7.1
Datenraten bei H.261 Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7.2
Kompressionsraten bei MPEG-Frametypen . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.3
Gruppierung der Frames in MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
A.1 Musikstücke und ihre Filegrössen im Vergleich zu mp3-komprimierten Dateien . . . . . . . 179
10
Kapitel 1
Inhaltsübersicht
Das Ziel dieser Lehrveranstaltung (LV) ist es, einen Überblick über vorhandene Multimediale Informationssysteme und die verwendeten Technologien zu geben. Der Schwerpunkt liegt dabei mehr auf den
technischen Möglichkeiten und weniger auf der (künstlerischen) Gestaltung oder dem Inhalt der Informationssysteme.
Verschiedene Technologien, die verwendet werden, um Multimediale Informationssysteme aufzubauen,
werden mehr oder weniger detailiert beschrieben, ihre Vor- und Nachteile aufgezeigt und ihre Verwendung
erklärt. Dazu gehören auch (einfache) Beispiele, die aufzeigen, wie die jeweiligen Möglichkeiten verwendet
werden können bzw. sollen.
Diese LV beschreibt aber auch existierende Informationssysteme und versucht, deren technische Hintergründe zu beleuchten. Informationsgewinnung und Knowledge Management gehören aber ebenfalls zu
den behandelten Themen.
1.1
Organisatorisches
Die LV “Multimediale Informationssysteme” wird von Prof. Hermann Maurer1 und Christof Dallermassl2
gehalten.
Eine Anmeldung für “Multimediale Informationssysteme” ist ab Wintersemester 2001/2002 für die Vorlesung als auch für die Prüfung notwendig. Die Prüfungsanmeldung ist ausschliesslich am Online System
der TU-Graz3 möglich.
Für die Teilnahme an den Konstruktionsübungen ist eine Anmeldung am Online System notwendig! Der
Anmeldeschluss und die Übungsthemen dafür werden in der Vorlesung bekanntgegeben.
Unterlagen, Folien und die aktuellste Version dieses Skripts sind unter http://courses.iicm.edu/mmis
im Internet zu finden. Die offizielle Webseite der LV ist im Online System der TU Graz zu finden. Dort
werden auch alle Vorlesungstermine bzw. deren Entfallen aufgelistet.
Die Kommunikation über diese LV findet hauptsächlich in der Newsgroup news://news.tu-graz.ac.
at/tu-graz.lv.mmis auf dem Newsserver der TU-Graz news.tu-graz.ac.at statt.
In diesem Skript wird soweit als möglich auf die deutsche Rechtschreibung Rücksicht genommen. Allerdings kann nicht garantiert werden, dass alle Regeln der alten/neuen Rechtschreibung berücksichtigt
werden :-) Der Schreiber dieses Skripts (Christof Dallermassl) bekennt sich der Einfacherheit halber zu
einem Gemisch aus neuer, alter und schweizer (ohne ’scharfes s’ (ß)) Rechtschreibung und hofft auf allgemeines Verständnis. Der Autor ist jedoch im Allgemeinen froh, etwaige Tipp- oder sonstige Fehler
mitgeteilt zu bekommen und bemüht sich, diese schnellstmöglich auszubessern.
1 hmaurer@iicm.edu
2 cdaller@iicm.edu
3 http://online.tu-graz.ac.at
11
KAPITEL 1. INHALTSÜBERSICHT
1.1.1
12
Übungsablauf
In der Übung sollen Gruppen von StudentInnen (2 bis 4 Personen, in Einzelfällen auch einzeln) ein
Projekt durchführen, das irgendwie mit dem in der Vorlesung vorkommenden Stoff zu tun hat. Im
Allgemeinen wird daher ein multimediales Informationssystem zu erstellen sein. Das Ziel der Übung ist
es, verschiedene Technologien, die in der Vorlesung ja meist nur kurz angerissen werden können, in der
Praxis kennenzulernen und das Wissen darüber zu vertiefen.
Wichtig ist jedoch nicht nur die Beschäftigung mit diversen Techniken, sondern auch das Planen des
Übungsprojektes. Es muss von jeder Gruppe vor Beginn der Implementierung ein kurzer Projektplan
abgegeben werden, in dem
• die Gruppenteilnehmer (Name, Matrikelnummer, email-Adresse),
• eine kurze Beschreibung des Projektes (was wird gemacht) - User Requirements und die daraus
resultierenden Software Requirements
• eine kurze Beschreibung der verwendeten Technologien (warum wird es so gemacht, wie es geplant
ist und nicht mit einer ähnlichen Technologie (z.B. warum PHP und nicht JSP)) - grobes Software
Design,
• eine Zeitplanung
enthalten ist.
Die Zeitplanung ist einer der wichtigsten Teile der Projektplanung und nur durch häufige Aufwandsschätzungen zu erlernen. Ohne (halbwegs) richtige Zeitplanung ist es unmöglich, ein Projekt zu kalkulieren.
Da die Einschätzung, was wie lange brauchen wird, aber nicht aus Büchern erlernt werden kann, sondern
hauptsächlich mit Erfahrungswerten arbeitet, sollte dies so oft wie möglich geübt werden, bevor man sich
in die freie Wirtschaft wagt.
Eine beispielhafte Projektplanung kann z.B. so aussehen:
Teilnehmer:
Christof Dallermassl, 9031434, cdaller@iicm.edu
Karl Blümlinger, 9112345, kbluem@iicm.edu
Thema:
Serverbasiertes Fotoalbum im Web
Beschreibung:
Fotos und ihre Beschreibungen sollen im Web angezeigt werden können. Es soll möglich
sein, Fotos upzuloaden und Kommentare und Links zu einzelnen Fotos hinzuzufügen. Zum
Uploaden soll kein Zusatzprogramm ausser einem Webbrowser nötig sein. Die Webseiten
sollen möglichst mit verschiedenen Browsern zusammen arbeiten. Zusätzlich soll es auch
möglich sein, die Bilder auf dem Server leicht zu bearbeiten (Skalieren, Drehen, Spiegeln,
evtl. Effekte).
Grobes Design:
Kommentare und Links werden in einer relationalen Datenbank verwaltet. Die Bilder werden
einfach im Filesystem oder auch in der Datenbank gespeichert. Zur dynamischen Generierung
der HTML-Seiten wird Serverseitig PHP verwendet, da diese serverseitige Erweiterung einen
sehr einfachen Zugriff auf die verwendete Datenbank MySQL erlaubt und es ausserdem eine
umfangreiche Bibliothek zur Bildverarbeitung gibt. Zusätzlich ist PHP plattformunabhängig.
Alternativ kämen Java Servlets/Java Server Pages in Frage. ASP scheidet wegen der Plattformabhängigkeit aus.
Zeitplan:
KAPITEL 1. INHALTSÜBERSICHT
Task
Installation/Konfiguration Apache/PHP/MySQL
Design Webseiten
Design der Datenbank
PHP lernen
PHP Implementation Anzeige/Upload/Kommentare
Serverseitige Bildbearbeitung
Testen
Dokumentation
13
Dauer
5h
15h
4h
15h
30h
20h
5h
5h
Der Abgabetermin für diese Projektplanung wird in der Vorlesung bzw. in der Newsgroup bekanntgegeben.
1.2
Änderungen im Skript
Hier werden Änderungen am Skript dokumentiert, um es dem Leser des Skripts die Entscheidung zu
erleichtern, ob sich der Download der neuesten Version bezahlt macht. Die Version des Skripts, die Sie
gerade in Händen oder Bildschirm halten, wurde am 24. November 2004 erstellt.
Änderungen:
• 19.03.2003 : Kleine Fehler im Kapitel “Markup Languages” und “Digital Video” ausgebessert.
Danke an Christina Irk
• 21.01.2003 : Update für PHP4 Konfiguration (Globale Variablen) - Danke an Edi Haselwanter und
einen Übungsteilnehmer (Name leider vergessen)
• 13.01.2003 : Kleine Änderungen im Kapitel “Digital Video”
• 02.12.2002: Kleine Änderungen im Kapitel “Digital Bilder”: Kleine Beispiele geändert/dazu. Kurzer Kommentar zu JPEG dazu (Zick-Zack)
• 25.11.2002: Kleine Änderungen im Kapitel “Digital Audio”: Ogg Vorbis, MP3Pro dazu, kleine
Details dazu
• 18.11.2002: Kleine Änderungen im Kapitel “Server Seitige Erweiterungen”.
• 11.11.2002: Kleine Änderungen im Kapitel “Markup Languages”. XML/CSS hinzugefügt, XHTML
kurz erwähnt. Kleine Umstellung der Reihenfolge (XML Anwendungen mit XSL getauscht).
• 04.11.2002: Kleine Änderungen im Kapitel “Markup Languages”.
• 07.10.2002: Titelseite an neues Semester angepasst, Vorlesungsnummer für Multimediale Informationsysteme 1 eingefügt.
• 12.07.2002: Neue Prüfungsbeispiele und Antworten (Bonusfrage) der letzten Prüfung hinzugefügt.
Beispiel für Processing Instructions hinzugefügt. Viele Tippfehler ausgebessert (Danke an Martin
Pirker).
• 25.06.2002: Link auf freien PHP-Provider hinzugefügt.
• 13.06.2002: Kleine Änderungen im Kapitel “Digital Video”.
• 27.05.2002: Viele Tipp- und Schreibfehler ausgebessert (Danke an Peter Schifferl)
• 21.05.2002: Ab sofort gib es auch die Folien in den papiersparenden Versionen von 4 bzw. 8 Folien
pro Seite in verschiedenen Anordnungen. Das Skriptum in 2 pro Seite (aber leider ohne Hyperlinks,
d.h. nur zum Drucken).
• 14.05.2002: JSP/Servlet Konfiguration vereinfacht (keine Contexte mehr).
• 02.05.2002: Javascript Beispiel für Hidden Formfields im Kapitel “Serverseitige Erweiterungen”
hinzugefügt. (Danke an Karl Svensson!), PHP-Tutorial-Links hinzugefügt.
KAPITEL 1. INHALTSÜBERSICHT
14
• 01.05.2002: Updated Links im Kapitel “Serverseitige Erweiterungen”
• 23.04.2002: Originelle Bonusfragen der Prüfung vom 17.04.2002 hinzugefügt.
• 18.04.2002: kleine Tippfehler (Kapitel Knowledge Management) (gefunden von Mario Grünwald),
kleine Änderungen im Kapitel Markup-Languages. Abschnitt “Vorhandene XML-Definitionen”
hinzugefügt (Beispiele von XML-Standards).
• 21.03.2002: kleinere Tippfehler ausgebessert (Kapitel Markup Languages). Links auf SelfhtmlSeiten upgedated (auf Version 8.0)
• 14.03.2002: Tippfehler im Kapitel Internet entfernt. Ein paar Links bei Informationssystemen
hinzugefügt. Gnu Image Find Tool (Suche nach Multimediadaten) hinzugefügt.
• 17.01.2002: Kleine Umstellung bei XSL. XSL manchmal durch XSLT ersetzt.
• 17-19.12.2001: Details zu Processing Instructions hinzugefügt. Literaturverweise aus RFC.bib
entfernt (keine Verlinkung innerhalb der RFCs/STDs/FYIs mehr). Details zur Reihung von Suchmaschinen hinzugefügt. Korrektur, dass FTP UDP verwendet. Ist falsch! (Sorry!) (Danke an
Thomas Oberhuber)
• 27.11.2001: Kapitel “Knowledge Management” von Prof. Maurer hinzugefügt.
• 21.11.2001: Originelle Antworten zur Bonusfrage der Prüfung am 14.11.2001 hinzugefügt.
• 19.11.2001: Kleine Änderungen im Kapitel “Digitale Bilder”. Info über JPEG2000 upgedated.
• 05.11.2001: Kleine Umstellungen (u.a. Titel) im Kapitel “Information Server Technologien” (jetzt
“Serverseitige Technologien”). Kleine Fehler in Kapitel “Digital Audio” und “Digital Images”
ausgebessert (gefunden von Dieter Freismuth).
• 29.10.2001: Kapitel “Markup Sprachen: Kleine Änderungen bei XML/XSL. Beispiel und Screenshot für XSLT/FO eingefügt.
• 24.10.2001: Kapitel “Inhaltsübersicht”: Kurze Erklärung zu den Übungen eingefügt. Beispiel für
Projektplanung
• 22.10.2001: Kapitel “Markup Languages”: Beispiele für verschiedene Media-Typen (print, projection) eingefügt (Danke an Stefan Thalauer).
• 12.10.2001: Kapitel “Internet”: Zahlen von Internet Consortium verwendet, nicht mehr von netsizer. Bildformat von pdf auf jpg/png umgestellt, wo vorhanden.
• 09.10.2001: Ein paar Index Einträge korrigiert.
• 04.10.2001: Ein paar Tippfehler korrigiert und das XML/XSL Beispiel richtig gestellt (gefunden
von Dieter Freismuth).
• 29.09.2001: Ein oder zwei Prüfungsfragen dazugeschrieben bzw. leicht geändert.
• 19.09.2001: Viele kleinere Fehler ausgebessert (bemerkt von Erwin Pischler).
• 07.09.2001: Kleine Fehler ausgebessert (bemerkt von Peter Strassnig).
• 24.07.2001: Änderung des PHP-Beispiels (jetzt Verwendung von Standard MySQL PHP Befehlen).
• 05.07.2001: Minimale Änderungen (Tippfehler, Indexfehler)
• 30.05.2001: Kapitel “Digitales Video” ein paar Details dazugefügt, DivX und rechtl. Probleme
dazu.
• 10.05.2001: Kapitel “Information Server Technologies” Teil über SSI und .NET hinzugefügt. Tippfehler ausgebessert.
• 02.05.2001: Tippfehler aus Kapitel ’Digital Images’ entfernt.
KAPITEL 1. INHALTSÜBERSICHT
15
• 05.04.2001: Datenmenge in Tabelle (Digital Audio - Sample Rate, Auflösung, Frequenzband, Datenmenge) von kbit auf kB korrigiert.
• 04.04.2001: DVD-Audio Werte korrigiert
• 03.04.2001: Beschreibung von LZW leicht geändert.
• 28.03.2001: in xmltags sind jetzt wieder spaces drin, wenn sie reingehören.
• 15.03.2001: ein paar Tippfehler ausgebessert
• 07.03.2001: Dateinamen alle umbenannt (mmis_ws2000_ weg - auch die Folien sind jetzt nach
Thema und nicht mehr nach Datum benannt.)
• 01.02.2001: Index hinzugefügt
• 30.01.2001: Englische Prüfungsfragen hinzugefügt.
• 29.01.2001: Kleine Layoutänderungen
• 27.01.2001: Tippfehler und Vannevar Bush’s Artikel-Titel korrigiert und mit Url versehen (im
Literaturverzeichnis).
• 26.01.2001: Prüfungsfragen anders gelayoutet, sonst daran nichts geändert.
In der Inhaltsübersicht die “Grobe Inhaltsübersicht” rausgeworfen.
Leichte Layoutänderungen, weil bei Kapitelanfängen Seitenzahl beim Ausdrucken weggeschnitten
wurde.
• 24.01.2001: Kapitel Markup Languages/XML: XSL transformiert ein XML-Dokument in ein anderes XML-Dokument (also evtl. auch in ein HTML-Dokument), aber keinesfalls immer in ein
HTML-Dokument!
Digital Audio: Abbildung mit Aliasing: Rechter Rand wird jetzt nicht mehr abgeschnitten.
Kurze Erklärung und Bild zu WAP/WML hinzugefügt.
Prüfungsfragen hinzugefügt.
Textbreite verändert, Ränder verkleinert und alle code-Schnipsel in kleinerer Schrift (ca. 40 Seiten
gespart).
• 23.01.2001: IPv6 verwendet natürlich Adressen von 128bit Länge (und nicht 129 bit) [Kapitel
Internet - Das Netz der Netze].
• 22.01.2001: Kapitelweise Titel-Folien eingebaut (in die Folien, NICHT ins Skript!)
• 20.01.2001: Beim Kapitel “Informationssysteme” die Abschnitte “Suchmaschinen” und “Brockhaus
Multimedia” hinzugefügt.
• 18.01.2001: Den Abschnitt mit den Änderungen und ein Erstellungsdatum auf die Titelseite eingefügt. Diesen Abschnitt mit den Änderungen gibt es nun auch als eigenes Dokument zur schnellen
Überprüfung, ob sich etwas geändert hat. Korrektur von etlichen Schreibfehlern im ganzen Skript.
Kapitel 2
Internet - das Netz der Netze
2.1
Geschichtliche Entwicklung
Im Jahre 1970 begann die ARPA (Advanced Research Projects Agency) damit, Forschungen an weitreichenden, ausfallsicheren Netzen zu fördern. 1972 wurde dann die Arbeit von DARPA (Defense Advanced
Research Projects Agency) weitergeführt, da man vor allem im militärischen Bereich auf der Suche nach
ausfallsicherer, weiträumiger Vernetzung war. Die heute anzutreffende Internet Architektur und die Protokolle bekamen ihre Form gegen Ende der 70er Jahre. Durch die besondere Auslegung des Internet
als Packet Switched Network erreichte man die Möglichkeit der Topologie als Maschennetz, bei dem der
Ausfall eines Knotens noch nicht zum Ausfall des Gesamtnetzes führt, da das Routing auch über andere
Knoten weiter erfolgen kann. Basis für alle Protokolle im Internet ist TCP/IP (Transmission Control
Protocol/Internet Protocol), an dessen Entwicklung bereits 1979 so viele Organisationen beteiligt waren, sodass DARPA ein informelles Komitee gründete um die Entwicklungen zu koordinieren (ICCB =
Internet Control and Configuration Board). Im Jahre 1980 begann, was wir heute als Internet kennen:
DARPA stellte die Computer in den Forschungsnetzen auf die neuen TCP/IP Protokolle um. Das ARPANET, das es als Vernetzung schon gab, wurde schnell zum Kern des neuen Internet. Abgeschlossen
wurde die Umstellung auf TCP/IP im Jänner 1983. Zur selben Zeit teilte die DCA (Defense Communication Agency) das Internet in zwei getrennte Netzwerke - eines für militärische Zwecke, eines für weitere
Forschung. Der Forschungsteil des Netzes behielt den Namen ARPANET, der militärische Teil, der wie
zu erwarten damals der grössere war, bekam den Namen MILNET.
Um nun den Forschungseinrichtungen einen Anreiz zu geben, mit der neuen Technologie zu arbeiten, gab
DARPA eine Implementation zu sehr geringen Kosten heraus. Zu dieser Zeit verwendeten die meisten
Computer-Science Institute auf Universitäten BSD Unix. So erreichte man durch die Implementation
für Unix auf einen Schlag 90% der universitären Forschungseinrichtungen im Bereich Computer-Science.
Ein weiterer Grund für die rasche Verbreitung der TCP/IP Technologie war die mangelnde Verfügbarkeit
anderer Protokolle für LANs. Gerade aber LANs waren durch die seit den frühen 80er Jahren verfügbare
billige Ethernet Technologie sehr stark im Kommen. Damit schlug man also gleich zwei Fliegen mit einer
Klappe - man konnte Rechner billig mit Ethernet vernetzen und durch die Verwendung von TCP/IP als
Protokoll kam auch gleich die Möglichkeit dazu, am Internet teilzunehmen.
Das “New Hacker’s Dictionary” [Ray] beschreibt den Grund für den Erfolg von TCP/IP so:
TCP/IP evolved primarily by actually being used, rather than being handed down from on
high by a vendor or a heavily-politicized standards committee. Consequently, it (a) works, (b)
actually promotes cheap cross-platform connectivity, and (c) annoys the hell out of corporate
and governmental empire-builders everywhere.
Als die NSF (National Science Foundation) erkannte, dass Netzwerke bald ein sehr wichtiger Teil der
Forschung sein würden, begann sie 1985 um ihre 6 Supercomputer Center herum grössere Netzwerke auf
TCP/IP Basis zu installieren. 1986 wurden dann diese Zentren untereinander verbunden und bildeten
das NSFNET; weiters wurde das NSFNET auch gleich mit dem ARPANET verbunden.
Bis 1987 waren so hunderte Netzwerke in den Staaten und in Europa mit knapp 20.000 Computern zu
16
KAPITEL 2. INTERNET - DAS NETZ DER NETZE
17
Anzahl der Computer im Internet
(Source: Internet Software Consortium (http://www.isc.org/))
180
160
140
in Millionen
120
100
80
60
40
20
0
01/1993 01/1994 01/1995 01/1996 01/1997 01/1998 01/1999 01/2000 01/2001 01/2002 01/2003
Abbildung 2.1: Anzahl der Hosts im Internet
einem Internet verbunden. Sowohl der Grössenzuwachs (siehe Abbildung 2.1 - Zahlen vom Internet Software Consortium (http://www.isc.org)) als auch der Datenverkehrszuwachs waren damals schon viel
grösser als zuvor erwartet. Bereits 1990 verband das Internet ca. 3000 Netze und mehr als 200.000 Computer. Dieser unerwartete Zuwachs stellte die ursprünglich entwickelte Technologie vor einige Probleme,
die in den folgenden Jahren gelöst wurden. Zum Beispiel waren ursprünglich alle Rechnernamen und
zugehörigen IP-Adressen in einem einzigen File gespeichert, das von Hand editiert wurde und an alle
Internet Sites geschickt wurde. Aus diesem Grund wurde dann DNS (Domain Name System) entwickelt,
das die Verwaltung in die Verantwortung der Domains übergab.
Ein nicht ausser Acht zu lassender Faktor ist das Engagement der Telefongesellschaften AT&T, MCI,
SPRINT, etc. die sehr früh erkannten, dass Rechnernetzwerke für sie der Verdienst der Zukunft würden.
Dementsprechend stiegen diese sehr früh in den Markt um die Vernetzung der Backbones ein und halfen
damit, die Verbreitung noch schneller voranzutreiben.
Ein Punkt noch zur Philosophie des Internet - es war als reines Standleitungsnetz geplant und ausgelegt
und ist auch in seinem Kern als solches realisiert. Alle Internetdienste sind so definiert, dass adressierte
Teilnehmer direkt erreichbar sind und fix definierte IP Adressen haben. SLIP und PPP als Einwahlprotokolle kamen erst relativ spät in Einsatz, zu einer Zeit, als die ersten Studenten, kleineren Firmen und
Privatleute über die nun billiger gewordenen Modems die Dienste des Internet nutzen wollten.
An dieser Stelle stellt sich nun die Frage nach dem Betreiber des Internet. Nun, diese ist einfach zu
beantworten, es gibt ihn nicht direkt. Die Verwaltung des Internet erfolgt vollkommen dezentral, wir
betreiben es sozusagen alle. Auch ist bei TCP/IP selber keine Vergebührung vorgesehen. Damit nun
aber nicht der absolute Wildwuchs im Technologiebereich im Internet zuschlägt (zumindest bei TCP/IP)
gibt es ein Gremium, das die Standards vorgibt: die ISOC (Internet Society). Diese wiederum enthält
zwei Gruppen, zum einen das IAB (Internet Architecure Board), das die Anforderungen vorgibt und zum
anderen die IETF (Internet Engineering Task Force). Die Arbeit der IETF kommt als RFC (Request
For Comment) an die Öffentlichkeit, und diese gelten als niedergeschriebener Standard.
Der Backbone ist in Europa allgemein als EBONE Topology bekannt und besteht aus einer ganzen Reihe
von breitbandigen Leitungen zwischen verschiedenen Zentren in Europa sowie natürlich nach Amerika
(siehe Abbildung 2.2). Die Netzwerke der einzelnen Länder sind über die grossen Knoten an den Backbone
angeschlossen. Diese Netzwerke sind wiederum landesabhängig organisiert.
KAPITEL 2. INTERNET - DAS NETZ DER NETZE
18
Abbildung 2.2: EBONE 2000
2.2
Technische Grundlagen
Jeder Teilnehmer des Netzes hat eine IP Adresse, die aussagt, in welchem Netzwerk er sich befindet
und welcher Rechner er in diesem Netzwerk ist. Diese Kombination ist eindeutig. Es kann keine zwei
Maschinen mit der gleichen Adresse im Internet geben. Alle IP Adressen sind 32 Bit (IPv4) lang (IPv6
verwendet 128 Bit lange Adressen - Es gibt bei 16 Byte-Adressen 2128 verschiedene Adressen, das sind
ca. 3 ∗ 1038 . Auf der gesamten Erde (Land und Wasserflächen!) könnte man damit 7 ∗ 1023 Rechner pro
Quadratmeter adressieren.). Adressen werden in einer Punkt-Dezimalzahl Notation geschrieben, d.h. die
32-Bit Adressen werden in 4 x 8 Bit Dezimalzahlen durch einen Punkt getrennt geschrieben.
Beispiel: Die Adresse 2166031126 ist binär 10000001000110110000001100010110 (hexadezimal 0x811B0316).
Jeweils 8 Bit werden zusammengefasst (10000001.00011011.00000011.00010110) und in der PunktDezimalzahl Notation als 129.27.3.22 geschrieben.
Da diese Zahlen unmöglich zu merken sind, werden einzelnen Rechnern auch Namen (einer oder mehrere)
zugewiesen. So hat der oben genannte Rechner den Namen news.tu-graz.ac.at.
Diese Namen sind hierarchisch organisiert (siehe Abbildung 2.3) und werden von vielen Domain Name
Servern verwaltet.
Das Internet Protokoll ist jedoch von diesen Namen unabhängig und arbeitet immer nur mit den IPAdressen.
TCP/IP ist das im Internet am meisten benutzte Protokoll und setzt sich aus zwei eigentlich unabhängigen Protokollen zusammen:
• IP (Internet Protocol): erzeugt eine Punkt zu Punkt Verbindung, kümmert sich um das richtige
Routing der Datenpakete. Unterstützt aber keine zuverlässigen Verbindungen oder Fehlerkontrolle
der Daten.
• TCP (Transmission Control Protocol): baut auf IP auf und stellt eine zuverlässige, virtuelle Punkt
KAPITEL 2. INTERNET - DAS NETZ DER NETZE
19
Generic
int
com
edu
sun
yale
eng
ai
cs
gov
Countries
mil
org
acm
eng
jack
linda
robot
net
ieee
jill
jp
us
ac
co
keio
nec
cs
csl
nl
oce
...
vu
cs
flits
fluit
pc24
Abbildung 2.3: hierarchical organisation of domain names
zu Punkt Verbindung her. TCP kümmert sich um die Wiederanforderung von verlorenen oder
defekten Paketen. Ausserdem können Pakete in falscher Reihenfolge oder mehrfach beim Empfänger
ankommen. TCP behandelt auch diese Fehlerquellen.
Durch die Verwendung von Ports ist es bei TCP (und auch bei UDP) möglich, verschiedene Dienste eines
Computers über das Netzwerk getrennt anzusprechen. So lauscht z.B. ein Web-Server normalerweise auf
Port 80, ein Newsserver auf Port 119 oder ein Telnet-Server auf Port 23.
Auf weitere Protokolle, die im Internet verwendet werden (UDP, ICMP, ARP,. . . ), wird hier nicht näher
eingegangen, da dies zu weit führen würde. Genaueres kann jedoch im Skript zur Vorlesung ’Datenübertragungsprotokolle’1 nachgelesen werden.
2.3
Dienste im Internet
Ursprünglich war das Internet dazu gedacht, eine Möglichkeit zu bieten, auf ’remote’ Rechnern arbeiten
zu können (☞TELNET). Diese Anwendung wurde aber schon bald von email überholt. Email ist übrigens
immer noch der meistgenutzte Dienst des Internet.
Ein weiterer oft benutzter Dienst ist FTP (File Transfer Protocol) der es ermöglicht, Dateien zwischen
Rechnern zu übertragen. Schon bald bildeten sich Server im Internet, die eine Vielzahl von Dateien und
Programmen anboten. Suchmaschinen für Dateien entstanden.
2.4
Protokolle im Internet
Jeder Dienst im Internet verwendet ein eigenes Protokoll, um zwischen dem Client und dem Server Daten auszutauschen. Fast alle Protokolle basieren auf TCP/IP, manche auch auf UDP(/IP). Beispiele für
Dienste, die TCP verwenden, sind POP3 (Post Office Protocol Version 3), ☞TELNET, SMTP (Simple Mail Transfer Protocol), HTTP (HyperText Transfer Protocol). FTP verwendet sogar zwei TCPVerbindungen. Auf einer werden die Kommandos des Clients und die Antworten des Servers gesendet,
während die Daten (upload, download, Verzeichnislisting) auf einer eigenen TCP-Verbindung verschickt
werden.
Viele Streamingprotokolle verwenden UDP, da der Übertragungsoverhead geringer ist als bei TCP und es
z.B. wenig Sinn macht, ein verlorenes Datenpacket einer Telefonverbindung nocheinmal zu senden, wenn
das Telefongespräch schon weiter fortgeschritten ist.
Häufig arbeiten viel benutzte Internetdienste mit relativ einfachen, textbasierten Protokollen (z.B. POP3,
SMTP, HTTP,...). So ist es meist mit geeigneter Dokumentation relativ einfach, einen (einfachen) Client
1 ftp://ftp2.iicm.edu/pub/hkrott/duep/duep.pdf
KAPITEL 2. INTERNET - DAS NETZ DER NETZE
20
oder Server für ein bestimmtes Protokoll zu implementieren.
Das Senden der Zeichenkette GET / HTTP1.0 gefolgt von einer Leerzeile an einen beliebigen Webserver
(Port 80) liefert beispielsweise schon das gewünschte Ergebnis.
Als Grundlage für fast alle der offenen Protokollstandards dient ein RFC - Dokument. Diese RFCs sind
frei einsehbar und in der Designphase auch von jedermann kommentierbar (wie der Name schon sagt).
RFCs sind u.a. auf den entsprechenden Seiten der IETF2 nachlesbar.
Beispiele für RFCs:
• UDP: RFC 768 ([Pos80])
• TCP: RFC 793 ([Pos81])
• TCP/IP Tutorial: RFC 1180 ([SK91])
• HTTP 1.0 bzw. 1.1: RFC 1945 ([BLFF96] bzw. RFC 2068 ([FGM+ 97])
• NNTP (Network News Transfer Protocol): RFC 977 ([KL86])
• FTP: RFC 959 ([PR85])
2 http://www.ietf.org/rfc.html
Kapitel 3
Informationssysteme
3.1
Historisches
Schon 1945 publizierte Vannevar Bush den Artikel “As We May Think” [Bus45], in dem er eine digitale
Bibliothek beschrieb, die wohl heute eher “Knowledge Management System” heissen würde. In ihr wollte
er alle “books, records, and communications” eines Menschen speichern. Ein Index-Device namens memex
sollte ähnlich dem menschlichen Gehirn arbeiten und das Auffinden von Daten ermöglichen:
Consider a future device for individual use, which is a sort of mechanized private file and
library. It needs a name, and, to coin one at random, “memex” will do. A memex is a
device in which an individual stores all his books, records, and communications, and which is
mechanized so that it may be consulted with exceeding speed and flexibility. It is an enlarged
intimate supplement to his memory.
Der Begriff Hypertext stammt von Ted Nelson, einem Informationssystem-Pionier. Bereits 1967 beschrieb er die Anforderungen an ein Hypertext-System namens Xanadu (später publiziert in Literary
Machines [Nel92]). Abbildung 3.1 zeigt ein (historisches) Dokument, in dem Ted Nelson Hyperlinks
designt.
Er verwendete verschiedene Typen von Hyperlinks wie z.B.
• Kommentare
• Lesezeichen
• Fussnoten
• “Hypertext-Sprünge”
Ein weiteres Konzept, das auf Ted Nelson zurückgeht, ist das der transclusions. Transclusions erlauben
es, Dokumente oder Teile von Dokumenten in andere Dokumente einzubetten, ohne sie zu kopieren. Dies
spart redundante Speicherung und garantiert, dass die eingebetteten Dokumente immer auf aktuellem
Stand sind.
Das Xanadu Projekt ist noch immer in Arbeit (der Start der Implementation war erst in den 90ern).
Unter der Url http://www.udanax.com ist der aktuelle Stand der mittlerweile Open-Source Entwicklung
zu finden.
Andere Informationssysteme waren z.B. das Hypertext Editing System, das 1967 von van Dam entwickelt
und als erstes Hypertext-System auch realisiert wurde. Es unterstützte
• in-text links
• branches: Menü am Ende eines Segments für Verzweigungen zu anderen Segmenten
21
KAPITEL 3. INFORMATIONSSYSTEME
22
Abbildung 3.1: Ted Nelson’s Interfile Communication (1971)
• tags: Bemerkungen, die an ein Segment angehängt werden konnten.
1968 entstand NLS (oN-Line System) von Douglas Engelbart, das schon über 100.000 Artikel enthielt,
und sowohl Hyperlinks als auch Struktur kannte. Douglas Engelbart gilt heute als der Erfinder der
Textverarbeitung, der Fenstertechnik, der elektronischen Post (email), der heutigen Hypertextsysteme
und der Maus. Auf http://sloan.stanford.edu/MouseSite/1968Demo.html stehen einige (ziemlich
geniale) Demonstrationen von Douglas Engelbart als RealVideos zur Verfügung.
Das 1975 von Akscyn geschaffene KMS (Knowledge Management System) war schon ein verteiltes Hypermedia System, das keinen Unterschied zwischen normalen Benutzern und Autoren machte. Informationen
waren in mehreren Hierarchien organisiert und durch Hyperlinks untereinander verknüpft. Auch Annotationen (Bemerkungen) waren schon möglich.
Das VideoTex-System, das Anfang der 80er Jahre entstand, war ein öffentliches System, das auf Telefon
und erweiterten TV-Geräten basierte.
Eine Weiterentwicklung davon war BTX (BildschirmTeXt), das ab 1982 von Prof. Maurer und dem
IICM entwickelt wurde. BTX enthält über 20.000 Seiten, die ein sehr weit gestreuten Inhalt hatten. Von
Enzyklopädien, über Spiele bis zu Diskussionsforen und Sex-Angeboten zog sich das Spektrum. Auch
war dies das erste Vorkommen von eCommerce, da bei BTX eine Abrechnung mit dem Konsumenten
möglich war. Ein paar Screenshots (damals hiessen die sicher noch Bildschirmschüsse :-) sind im Museum
Unseres Computer Hinterhofs (MUCH))1 zu finden.
Ein weiteres Hypertextsystem war IRIS , das 1985 von Norman Meyrowitz entwickelt wurde. Mehrfenstertechnik mit eingebauten Editoren (Bearbeitung von Text, Graphik, Bildern, ...), bidirektionale Links
und eine “tracking map”, die die aktuelle Position im Verhältnis zu Umgebungslinks zeigte, waren die
herausragenden Eigenschaften des Systems.
Als Vorgänger zu heutigen Multimediapräsentationswerkzeugen kann man Hypercard nennen (1987 von
Bill Atkinson entwickelt). Ein sehr einfaches Benutzerinterface gestattete es relativ einfach, multimediale Präsentation zu gestalten. Die Informationen waren in “Stapeln” von elektronischen Karten (vgl.
“card decks” in WML (WAP) (Abschnitt 8.3) organisiert. Eine Skriptsprache erlaubte auch komplexere
Operationen.
1 http://much.iicm.edu:88/much/projects/videotex_2/index.htm/
KAPITEL 3. INFORMATIONSSYSTEME
23
WAIS (Wide Area Information Server) startete 1989 als eine gemeinsame Entwicklung von Thinking
Machines, Apple Computer und Dow Jones um Online-Zugriff auf das Wall Street Journal zu realisieren.
WAIS bietet Suchfunktionalität in einem vorher erzeugten Index, einschliesslich Sortierung der Ergebnisse
nach Wichtigkeit. Die Suchergebnisse konnten danach als Basis für weitere Suchen verwendet werden,
um so eine verfeinerte Suche durchführen zu können. WAIS ist eine reine Suchmaschine. Es gibt weder
Hyperlinks noch irgendeine Strukturierung der enthaltenen Informationen.
Gopher wurde ab 1991 als campus-weites Informationsystem an der Universität von Minnesota verwendet.
Es bietet Zugriff auf die enthaltenen Informationen über eine Menüstruktur. Auch wenn der “Informationsraum” in Wirklichkeit ein Graph ist (mit Schleifen), präsentiert Gopher eine Baumstruktur. Gopher
selbst hat keine Hyperlinks und keine integrierte Suchmaschine, bietet aber gateways zu WAIS.
Abbildung 3.2: Screenshot eines Gopher Clients
Hyper-G (jetzt Hyperwave2 ) wurde Anfang der 90er am IICM entwickelt und ist ein “multi-user, multiprotocol, structured, hypermedia information system”. Es bietet
• Dokumentenmanagement
• konsistente Links
• Benutzerverwaltung
• Editierfunktionalität
• und vieles mehr
Trotz der vielen Features, die vor allem bei einer grossen Dokumentenanzahl unersetzbar sind, wurde
Hyper-G von einer anderen Informationssystemtechnologie überholt.
1994 war das Jahr, in dem die Welt ausserhalb der Universitäten das Internet entdeckte. Hypertext und
multimediale Elemente erregten das Aufsehen der Öffentlichkeit. Das WWW (World Wide Web) war
geboren. Obwohl dieses System bei weitem nicht das erste Informationsystem war, das Verknüpfungen
zwischen verschiedenen Inhalten bot, überholte es alle anderen Systeme mit Überschallgeschwindigkeit.
Der Grund dafür war, dass sowohl das verwendete Dateiformat (HTML (HyperText Markup Language)),
als auch das verwendete Protokoll (HTTP) sehr einfach waren und so von vielen Anwendern/Anbietern
implementiert wurde. HTML wurde aber nicht erst 1994 erfunden. Der Grundstein dafür wurde schon
lange vorher bei der Definition von SGML im Speziellen und markup languages im Allgemeinen gelegt.
2 http://www.hyperwave.com
KAPITEL 3. INFORMATIONSSYSTEME
3.2
24
Suchmaschinen
Der Siegeszug des WWW brachte es mit sich, dass die Anzahl der Dokumente, auf die zugegriffen werden kann, sich in den letzten Jahren explosionsartig vervielfachte. Innerhalb weniger Monate verdoppelt
sich der Umfang jeweils und die Anzahl der Dokumente überschritt anfangs des Jahres 2001 die 2 Milliardengrenze. Ähnlich verhält es sich auch bei den Benutzern: Ungefähr alle 11 Monate verdoppelt
sich die Anzahl der Internetbenutzer. Im Jahr 2000 waren geschätzte 142 Millionen Menschen InternetTeilnehmer. Das Wachstum des WWW lässt das Internet an die Grenzen seiner Funktionalität stossen,
von Effektivität ganz zu schweigen [For99].
Brauchbare Informationen in diesem Wust an Daten zu finden, ist mittlerweile eine eigene Kunst. Dieser Abschnitt veranschaulicht die Technik, mit der heutige Suchmaschinen diese Problematik zu lösen
versuchen.
3.2.1
Geschichte von Suchmaschinen
Als der Abt Hugues de Saint-Cher im Jahre 1240 das erste Stichwortverzeichnis der Bibel aufstellen liess,
waren damit 500 Mönche beschäftigt. Dabei hat die Bibel in der heute üblichen Druckfassung nur etwa
800 Seiten, also knapp 5 MByte. Das World Wide Web, so wird geschätzt, enthält zur Zeit mehrere
Milliarden Seiten beziehungsweise mehrere Tera Bytes an Daten.
Der erste Versuch, ein “Inhaltsverzeichnis” des Internets zu erstellen, hiess Archie. Archie bestand aus
einem ‘Datensammler’ (Data Gatherer ), der automatisch die Inhaltsverzeichnisse von anonymen ftpServern durchsuchte, und einem Retrieval-System, in dem die User mit Suchwörtern nach ftp-Dateien
recherchieren konnten. Der Suchdienst, der 1990 an der McGill University in Kanada entwickelt worden
war, gehörte spätestens ab 1992 zu den geläufigsten Internet-Tools.
Archie war als Suchwerkzeug für ftp-Dateien so erfolgreich, dass er die Mitarbeiter des Rechenzentrums
der University of Nevada in Reno 1992 dazu inspirierte, einen ähnlichen Index für den seinerzeitigen
Vorläufer des WWW zu entwickeln, Gopher. Die Gopher-Suchmaschine bekam den Namen Veronica.
Veronica ähnelt in vieler Hinsicht schon den heute gängigen, kommerziellen Search Engines: Das Programm indizierte im Monatsrhythmus alle Gopher-Sites, die beim ‘Mother Gopher’ an der University of
Minnesota angemeldet waren. Veronica erlaubte es, mehrere Suchbegriffe mit Hilfe von booleschen Operatoren zu verknüpfen, also den gleichen Befehlen AND, OR und NOT, die auch heute noch die meisten
Suchmaschinen einsetzen. Und obwohl die Zahl der zu untersuchenden Dokumente für heutige Verhältnisse einigermassen überschaubar war (im November 1994 verzeichnete Veronica 15 Millionen Gopher-,
ftp- und HTML-Dokumente), wurde schon damals beklagt, dass man als User der unüberschaubaren Zahl
von Dokumenten und den Suchmethoden von Veronica hilflos ausgeliefert sei.
Der erste Such-Robot für das gerade neu entstehende WWW war der World Wide Web Wanderer, den
der MIT-Student Mathew Gray im Frühjahr 1993 programmiert hatte. Ursprünglich zählte der Wanderer
nur Web-Server. Einige Monate später fügte Michael L. Mauldin, ein Computerwissenschaftler an der
Carnegie Mellon University, ein ‘Retrieval Program’ namens ‘Wandex ’ hinzu, um die gesammelten Daten
durchsuchen zu können. Der Wanderer durchsuchte und katalogisierte von Juni 1993 bis Januar 1996
zweimal pro Jahr das Netz.
Im Oktober 1993 entstand Aliweb (kurz für: Archie-Like Indexing of the Web). Aliweb überliess einen
Teil der Arbeit bei der Katalogisierung den Betreibern von WWW-Servern. Diese mussten für ihren
Server einen Index erstellen und diesen bei Aliweb anmelden. Aliweb selbst war lediglich ein in Perl
geschriebenes System, das die auf diese Weise zusammengestellten Indizes durchsuchte und sich dabei
auf die Angaben der Server-Betreiber und der Autoren der Seiten verliess.
Im Dezember 1993 gingen fast gleichzeitig drei neue Suchhilfen ans Netz: Jumpstation, World Wide
Web Worm und RBSE Spider. Jumpstation und der World Wide Web Worm waren Suchroboter, die
Websites nach Titel und Header (Jumpstation) beziehungsweise nach Titel und URL (WWW Worm)
indizierten. Wer mit diesen beiden Tools suchte, bekam eine Liste von ‘Hits’ ohne weitere Bewertung in
der Reihenfolge, in der sie in der Datenbank abgespeichert waren. Der RBSE Spider und der im April
1994 an der University of Washington gestartete Webcrawler waren die ersten Search Engines, die nicht
bloss eine Aufzählung von gefundenen Dokumenten lieferten, sondern diese auch nach einem ‘Ranking’
sortierten. Webcrawler ist übrigens der einzige der bisher erwähnten Web-Fahnder, der bis heute überlebt
KAPITEL 3. INFORMATIONSSYSTEME
25
hat, auch wenn er inzwischen kein Uni-Projekt mehr ist. Mittlerweile hat Excite3 den Webcrawler gekauft
und führt ihn als ein Element des Excite Network.
Im Mai 1994 begann Michael Mauldin mit der Arbeit an dem Spider, der unter dem Namen Lycos4 immer
noch eine der bekanntesten Suchmaschinen ist. Wie Webcrawler listete auch Lycos seine Suchergebnisse
nicht einfach nur auf, sondern sortierte sie nach ihrer Relevanz; anders als Webcrawler bewertete Lycos
nicht nur die Häufigkeit eines Wortes in einem bestimmten Dokument, sondern auch die ‘word proximity’,
also die Nähe von mehreren Suchbegriffen zueinander. Lycos ging am 20. Juli 1994 online.
Wie viele Internet-Einrichtungen sind also auch die Suchmaschinen, die - wie Lycos und Webcrawler heute
als kommerzielles Unternehmen betrieben werden - ein Ergebnis wissenschaftlicher Vorarbeiten an den
Universitäten. Erst 1995, dem Jahr, als das Internet langsam das Bewusstsein einer nicht-akademischen
Öffentlichkeit erreichte, gingen die ersten Suchmaschinen ans Netz, die Unternehmen mit Gewinnabsicht
entwickelt hatten: Infoseek5 startete Anfang 1995; Architex, heute unter dem Namen Excite bekannt,
ging im Oktober 1995 online; AltaVista6 startete im Dezember 1995 den regulären Betrieb. Während
AltaVista als Projekt des Western Research Lab, einer Forschungsabteilung der Computerfirma Digital
Equipment Corporation (DEC) entstand, war es von Anfang an das ‘Business Model’ von Excite und
Infoseek angelehnt, sollte sich also durch Anzeigen finanzieren.
Etliche weitere kommerzielle Recherche-Helfer kamen hinzu. Gegenwärtig gehören Search Engines zu den
wenigen kommerziellen Angeboten im Internet, die wirklich Profite machen. Anbieter wie Infoseek oder
Lycos sind an die Börse gegangen, Lycos machte im dritten Quartal 1997 - nach einem Jahr an der Börse erstmals Gewinne. Google7 meldete kürzlich, dass seit Sommer 2001 wieder schwarze Zahlen geschrieben
werden.
Heutzutage belegt allein der Index einer Search Engine wie Lycos etwa 300 GByte und wird monatlich
aktualisiert. Suchmaschinen erlauben auch Benutzern, die nicht englisch sprechen, auf den jeweiligen
Sprachraum eingeschränkte Suchen durchzuführen. Die Hersteller bauen ihre Suchmaschinen um Funktionen für immer neue Medientypen aus. Lycos und AltaVista beispielsweise suchen nicht mehr nur
nach HTML-Texten, sondern auch nach Bildern, Videos und MP3-Dateien. Ihre Popularität macht sie
zu einem zentralen Element im eCommerce: Keine Portal Site kommt mehr ohne Suchmaschine aus.
[Bau99]
Google speichert auf seinem Linux Cluster mit mehr als 10.000 Computern über 2 Milliarden Webseiten
und beantwortet pro Tag über 150 Millionen Anfragen. (Informationen von http://www.google.com/
press/highlights.html)
3.2.2
Einteilung von Suchmaschinen nach Kategorien
Suchmaschinen können nach der verwendeten Technik in verschiedene Kategorien eingeteilt werden
[For99]:
• Indexsuchdienste mittels Spider
• Katalogsuchdienste
• Kombination von Index- und Katalogsuchdiensten
• Metasuchdienste
• Intelligente Agenten
• Recommendation Systems
3 http://www.excite.com
4 http://www.lycos.com
5 http://www.infoseek.com
6 http://www.altavista.com
7 http://www.google.com
KAPITEL 3. INFORMATIONSSYSTEME
26
Indexsuchdienste
Hierbei handelt es sich um vollautomatische Suchdienste. Mit Hilfe von sogenannten Robots werden Informationen zusammengetragen und in einer Datenbank gespeichert. Der User kann Suchbegriffe eingeben,
mit deren Hilfe dann vom Suchdienst eine Liste zurückgegeben wird, die nach den Ranking-Kriterien
sortiert ist.
Robots, auch Wanderer oder Spiders genannt wandern nicht wirklich durchs Netz, sondern bewegen
sie sich nur entlang der Hyperlinks fort, indem sie den Dokumenteninhalt verarbeiten und Links aus
dem Inhalt extrahieren. Die Suchmaschine führt bei jedem Dokument eine lexikalische Analyse durch,
extrahiert inhaltsrelevante Ausdrücke und legt sie in einer Datenbank ab. Meist wird der gesamte Text
indiziert (Volltext-Indizierung), oder aber auch nur der Titel plus Headerinformationen und Metatags.
Wie man eine Suchmaschine dazu überreden kann, die eigene Seite als besonders wichtig einzustufen
ist ebenfalls eine eigene Wissenschaft ([Len99]): Es kommt vor allem darauf an, nicht möglichst viele
Besucher auf die eigenen Webseite zu locken, sondern gezielt diejenigen anzusprechen, die auch der Inhalt
der Seiten interessieren wird.
Mit Zunahme der Komplexität der einzelnen Seiten wird es für Robots immer schwerer aus dem Durcheinander von HTML-Frames (viele Suchmaschinen unterstützen keine Frames und durchsuchen nur den
<noframes>-Teil), CSS, JavaScript usw. den wirklichen Inhalt der Seite zu erfassen. Zusatz- (Meta-)
Informationen (z.B. <meta name = ’’keywords’’content = ’’Obst, Gemuese, Fruechte’’> oder
<meta name = ’’description’’content =’’Der ultimative Obstladen im Internet’’>) werden von Robots bevorzugt ausgewertet und danach dem Suchenden präsentiert. Natürlich wird auch der Titel der Seite besonders bewertet. Seiten, die Informationen nur in graphischer Form präsentieren (Text als Graphik oder
Flash, weil der Designer es so will - Google indiziert mittlerweile auch Texte, die in Flash-Anwendungen
vorkommen), haben meist das Nachsehen.
Damit ein Roboter der Suchmaschine aber erst einmal auf eine eigene Webseite aufmerksam wird, muss
er entweder einem Link gefolgt sein, oder die Seite wird bei der Suchmaschine registriert. Bei einer
Registrierung sollte man allerdings keineswegs auf sofortige Ergebnisse hoffen. Während Altavista und
Fireball8 neue Seiten innerhalb eines ein- oder zweitägigen Zeitraums aufnehmen, kann es bei Lycos schon
einmal vier Wochen dauern. Bei Yahoo9 , einem der wichtigsten Web-Wegweiser, wartet man am längsten
- denn dieser Katalog wird komplett von Hand gepflegt.
Katalogsuchdienste
Diese Dienste stehen meist im Zusammenhang mit redaktionell aufgearbeiteten Informationen, es handelt
sich um verzeichnisbasierte Suchdienste. Die in der Datenbank eingetragenen Seiten sind von einer
Redaktion inhaltlich überprüft, und alle von den Autoren zur Eintragung angemeldeten Seiten werden
ebenfalls überprüft und kategorisiert. Auf diese Weise kann sichergestellt werden, dass dem Benutzer des
Suchdienstes keine inhaltlich falschen Dokumente vorgeschlagen werden. Der Datenumfang ist jedoch
oft viel geringer als bei den vollautomatischen Suchdiensten. Die Inhalte sind nach Interessensgebieten
unterteilt, die ähnlich einer Verzeichnisstruktur angeordnet sind. Diese Form des Suchdienstes bietet dem
unerfahrenen User einen leichteren Einstieg bzw. oft schnellere Erfolge bei einfachen Suchanforderungen.
Meta Suchmaschinen
Unter Metasuchdiensten versteht man die simultane Nutzung oder Zusammenfassung mehrerer Suchdienste. Es werden nach Eingabe der Suchkriterien automatisierte Abfragen an verschiedene Suchdienste
verschickt und die Ergebnisse dann zusammengefasst. Dies bietet für den Anwender den Vorteil, sich
wiederholte Abfragen bei verschiedenen Anbietern ersparen zu können bzw. sich nicht mit der Syntax der
verschiedenen Systeme vertraut machen zu müssen. Die speziellen Eigenschaften der einzelnen Anbieter,
die im einen oder anderen Fall bei der Suche sehr nützlich sein können, fallen dabei aber grösstenteils weg,
d.h. man muss sich mit simplen Suchanfragen zufriedengeben. Ein Beispiel dieser Art von Suchmaschinen
8 http://www.fireball.de
9 http://www.yahoo.com
KAPITEL 3. INFORMATIONSSYSTEME
27
ist Metacrawler10 oder Mamma11 .
Agents
Im Zeitalter der zunehmenden Dienstleistungsgesellschaft geht auch das Internet den Weg hin zur persönlicheren Betreuung. Der Gedanke ist ganz einfach: Jeder User hat seine persönlichen Interessen und kann
nun einen “Agenten” beauftragen, Material zu einem bestimmten Thema zu sammeln. Diese Agenten
können ferner die Gewohnheiten der User erforschen, dazulernen und entsprechend handeln. Das Prinzip der Agenten wird sicher in der Zukunft noch grossen Anklang finden, hat aber den Nachteil, dass
im schlimmsten Fall für jeden User im Internet Unmengen von Nachrichtenpaketen verschickt werden.
Schon heute wird über die Belastung der Datenleitungen durch die vielen Suchdienste, die unaufhörlich
das Netz durchforsten, geklagt. Die Netzwerkbelastung durch eine grosse Verbreitung von Agenten ist
schwer abzuschätzen.
Recommendation Systems
Man kann sich das System wie folgt vorstellen: Wenn ein Kunde auf der Suche nach einem Buch ist, so
kann man ihn einfach fragen, welche Bücher, die er gelesen hat, ihm gefallen haben. Existiert nun eine
Gruppe von Personen die dieselben Bücher gut fanden, und dieser Gruppe gefielen weitere Bücher, so ist
es naheliegend, dem Kunden auch diese Bücher vorzuschlagen, und er wird damit höchstwahrscheinlich
sehr zufrieden sein. Dieses Prinzip liegt den Recommendation Systems zugrunde und kann natürlich
auch auf andere Gegenstände, wie etwa Filme, CDs oder Produkte in einem Katalog angewandt werden.
Solche Systeme sind vor allem in Online-Buchhandlungen wie Amazon12 oder ähnlichem zu finden.
3.2.3
Reihung von Suchergebnissen
Die Schwierigkeiten für aktuelle Suchmaschinen sind nicht so sehr im Auffinden von Informationen zu
suchen, sondern eher in der Reihung der Ergebnisse. Das heisst, die besten Treffer sollen zuerst gereiht
sein. Da es mittlerweile fast unendlich viele verschiedene Suchmaschinen gibt, verwenden diese auch fast
soviele Algorithmen zur Reihung ihrer Suchergebnisse. Einen Überblick über Suchmaschinentechnologien
liefert http://searchenginewatch.com/resources/tech.html.
Bei der einfachsten Reihung wird einfach die Anzahl der Worte, die mit der Suchanfrage übereinstimmt,
untersucht. Etwas bessere Ergebnisse liefert schon der Reihungsalgorithmus, der nicht nur das Vorhandensein bzw. die Häufigkeit, sondern auch die Nähe der Suchworte untereinander bewertet. D.h. eine
Webseite, in der die gesuchten Begriffe im gleichen Satz vorkommen bekommt eine bessere Reihung als
eine Seite, in der zwar die gesuchten Worte vorkommen, diese aber quer über den ganzen Text verstreut
sind. Zusätzlich ist es immer möglich, Suchbegriffe, die nicht nur einfach im Text, sondern an bevorzugten
Positionen (Titel der Seite oder in Meta-Beschreibungen (Meta-Tags)) vorkommen, höher zu bewerten
und im Suchergebnis nach vorne zu reihen.
Eine etwas fragwürdige Reihungsmethode ist die der sponsored Links. Werbekunden zahlen für eine
bessere Reihung bei Suchergebnissen. So ist möglich, für spezielle Suchworte eine gute Plazierung zu
kaufen. Google13 hebt diese gekauften Links farblich hervor und schränkt sich auf wenige solcher Links
pro Suchergebnis ein. Die Suchmaschine Overture14 zeigt sogar, wieviel ein Klick auf das Suchergebnis
dem Anzeigenkunden kostet (siehe Abbildung 3.3). Eine Suche nach dem Stichwort “Linux” brachte
erst um den Platz 50 (auf Seite 2) einen Link zu http://www.linux.org (der erste nichtbezahlte Link),
während bei Google obige URL an erster Stelle kommt. Der Nutzen von solchen Reihungen für den
Benutzer ist natürlich sehr fraglich.[SH01]
Als innovativer (zumindest zu dem Zeitpunkt, als er vorgestellt wurde) Ansatz wird hier der Reihungsalgorithmus von Google15 [otPC99] vorgestellt: Der sog. PageRank -Algorithmus wurde an der Stanford
10 http://www.metacrawler.com
11 http://www.mamma.com
12 http://www.amazon.com
13 http://www.google.com
14 http://www.overture.com
15 http://www.google.com/technology/index.html
KAPITEL 3. INFORMATIONSSYSTEME
28
Abbildung 3.3: Die Suchmaschine ’Overture’ zeigt, wieviel ein Klick auf das Suchergebnis den Anzeigenkunden
kostet.
University entwickelt und ist immer noch die Grundlage von Google. Hierbei werden vor allem Links, die
von und zu einer Seite zeigen, bewertet. Eine Seite wird dabei als (ge)wichtig eingestuft, wenn viele Links
von anderen ’(ge)wichtigen’ Seiten einen Link auf diese Seite haben und wenn viele Links von dieser Seite
auf andere ’(ge)wichtige’ Seiten zeigen.
Dieser Prozess muss natürlich iterativ verlaufen, da ja zu Beginn der Suche nach ’(ge)wichtigen’ Seiten,
alle Seiten das gleiche ’Gewicht’ haben. Bei jeder Iteration werden Relationen zwischen den Seiten
überprüft und neu bewertet.
Somit werden auch Suchbegriffe einer Seite zugeordnet, die unter Umständen garnicht auf der betreffenden
Seite, wohl aber auf Seiten, die auf diese Seite verweisen, vorkommt. Als Benutzer kann man dies sehen,
wenn man sich die von Google gecachte Seite anschaut. Bei einer Suche nach “xml standards dtd” wurde
beispielsweise die URL http://www.oasis-open.org/ gefunden. Bei der Anzeige aus Google’s Cache,
kommt folgende Bemerkung zum Vorschein:
These search terms have been highlighted: xml standards
These terms only appear in links pointing to this page: dtd
Das Wort dtd kommt also auf der gefunden Seite nicht vor, wohl aber in Links auf diese Seite. Anfang
des Jahres 2002 wurde versucht, dieses Verhalten auszunutzen (Details im Internet unter dem Stichwort
“Google Bombing”), in der Praxis stellt es aber keine Gefahr für den Ranking-Algorithmus dar.
Die Verwendung von Frames stellt für Google ein grosses Problem dar, da einzelne Frameteile meist nicht
extra referenziert werden und somit kein expliziter Link zum Inhalt dieses Frameteils verweist und daher
der Teil eine schlechtere Bewertung erhält.
3.2.4
Suche nach Multimediadaten
Bei der Suche nach Multimediadaten, also Bildern oder Musikstücken, ist man zur Zeit noch meist
auf die Suche in den Beschreibungen der Daten (Metainformationen) beschränkt. Es gibt nur wenige
Systeme, die wirklich Query by Content erlauben: Anhand von Farb- und Kontrastvergleichen kann man
so beispielsweise alle Bilder finden, die ein blauer Himmel ziert. Doch solche Algorithmen sind noch kaum
den Kinderschuhen entwachsen. Das Fraunhofer-Institut versucht sich in diese Richtung und versucht die
Suche nach Schablonen ([V.98]). Eine Anwendung ist z.B. das Fingerabdruckarchiv des FBI, das über 25
Millionen Bilder von Fingerabdrücken enthält. Der Sinn dieser Datenbank ist es, Personen anhand ihrer
Fingerabdrücke zu identifizieren. Eine andere Anwendung, die in Zukunft grosse Bedeutung erlangen
wird, ist die automatische Erkennung von Personen anhand eines Photos. Weitere Anwendungen sind
medizinische Bilddatenbanken, geographische oder Wetter-Karten, Filmarchive, Kunstsammlungen...
KAPITEL 3. INFORMATIONSSYSTEME
29
Abbildung 3.4: Suchergebnis von ähnlichen Bildern anhand ihrer Struktur (Photobook vom MIT). Das gesuchte
Bild ist links oben, die ähnlichsten Bilder aus der Datenbank nachfolgend von links nach rechts, oben nach unten.
Normalerweise verlangt die automatische Suche nach Bildern ein grosses Wissen von domain-spezifischen
Merkmalen (wie z.B. Know-How über Fingerabdruckmerkmale). Es gibt jedoch auch Projekte, die diese
Einschränkungen zu umgehen suchen. Das Photobook Projekt des MIT16 (siehe auch Abbildung 3.4)
versucht, Ähnlichkeiten von Bildern zu finden, indem es nicht die Bilder selbst vergleicht, sondern Merkmale von Bildern heranzieht. Beispielsweise werden Farbe, Struktur und Formen verwendet. Diese
Eigenschaften werden mit verschiedenen Matching-Algorithmen verglichen (euclidean, mahalanobis, divergence, vector space angle, histogram, Fourier peak, wavelet tree distances und lineare Kombinationen
dieser).
Eine andere Möglichkeit, Bilder nach ihrem Inhalt zu finden, ist das GNU Image Finding Tool 17 . Dieses
nach der GPL (General Public Licence) freie Werkzeug erlaubt die Suche anhand von Beispielbildern.
Das Besondere ist jedoch die Möglichkeit, die Suchanfrage iterativ mit der Angabe von positiver oder
negativer Relevanz zu verbessern. Dies erlaubt eine genauere Beschreibung des gewünschten Ergebnisses.
Ein guter Artikel zu GIFT ist unter [M0̈2] zu finden, der unter anderem auch die Installation beschreibt.
GIFT indiziert alle Bilder und analysiert dabei verschiedene Bildcharakteristika - hauptsächlich Farb- und
Texturmerkmale (Farbhistogramm, vorherrschende Farbe in bestimmten Bereichen des Bildes, Muster
und Kanten). Eine Online-Demonstation kann unter http://viper.unige.ch probiert werden.
Eine gute Übersicht über bestehende Systeme ist ebenfalls auf der zum GIFT Projekt gehörigen Webseite
16 http://vismod.www.media.mit.edu/vismod/demos/photobook/index.html
17 http://www.gnu.org/software/gift
KAPITEL 3. INFORMATIONSSYSTEME
30
der Multimedia Retrieval Markup Langauge (MRML)18 zu finden. Ein nicht mehr ganz aktueller Artikel
steht unter http://searchenginewatch.com/sereport/00/12-images.html.
3.3
Brockhaus Multimedial
Der Brockhaus Multimedial dient als Beispiel eines grossen Informationssystems, das viele Bereiche aus
dem Themengebiet “Multimediale Informationsysteme” in der Praxis zeigt.
Da die Entwicklung dieses Nachschlagewerks am IICM stattfindet, können auch einige Hinweise über die
interne Arbeitsweise des Systems gegeben werden.
Der Brockhaus Multimedial 2002 enthält 98.000 Artikel zu verschiedensten Themen, die aus dem 15bändigen Brockhaus, dem Kunst und Kultur Brockhaus, dem Schülerduden über Sexualität, dem 6bändigen
Werk über Weltgeschichte, Büchern aus der Reihe “Mensch, Natur, Technik” und anderen stammen.
Zusätzlich sind zahlreiche Weblinks, Animationen, Bilder, Filme, Interaktive Anwendungen und Tonbeispiele enthalten. Die gesamte Datenmenge beträgt ungefähr 3GB und wird auf 6 CDs bzw. auf DVD
ausgeliefert.
3.3.1
Textdaten
Die Texte werden von der Firma Brockhaus zum Grossteil in Form von SGML (Standard Generalized
Markup Language)-Dateien geliefert (mehr über SGML ist in Abschnitt 4.1 zu finden) und am IICM in ein
proprietäres Textformat umgewandelt. Dieses proprietäre Format wird aus Effizienzgründen verwendet
und nicht etwa aus Ablehnung von SGML.
Als Beispiel dient der Artikel über “Leporello” [Bro00]:
Leporello
[nach der langen Liste der Geliebten Don Giovannis, die sein Diener Leporello in Mozarts Oper
anlegt] das, harmonikaartig gefaltete Landkarten, Prospekte, Bilderbücher oder Ähnliches.
Hier ein Ausschnitt aus der SGML-Version, die von Brockhaus geliefert wird:
<sachart art-id="30899000" typ="norm" verwstw="nein" inhalt="i-nein">
<lem><t>Lepor<k>e</k>llo</t></lem>
<sachkopf>
<ety>
[nach der langen Liste der Geliebten Don Giovannis, die sein
Diener Leporello in <person><pn>Mozarts</pn></person> Oper anlegt]
</ety>
<gram>das,</gram>
</sachkopf>
<artcorp>
<abs>
harmonikaartig gefaltete Landkarten, Prospekte, Bilderb&uuml;cher
und &Auml;hnliches.
</abs>
</artcorp>
</sachart>
Sehr schön ist hier zu erkennen, dass die Informationen mit Hilfe von verschiedenen SGML-Tags inhaltlich
gekennzeichnet werden (z.B. <gram> kennzeichnet eine grammatikalische Information, <person> eine
Person, ...) und nicht etwa ein Teil des Textes als ’kursiv’ markiert wird. Die Trennung von Inhalt und
Darstellung wird hier sehr schön durchgeführt.
Die Weiterverarbeitung dieses Artikels fügt interne Daten, wie z.B. eine eindeutige Identifikationsnummer
(%ID=30899000%) oder Metainformationen (MIME-Type) hinzu und resultiert in dem (weniger interessanten und nur der Vollständigkeit halber aufgeführtem) Text:
@1Lepore£éllo@0\S{;.FWISSEN;107}@8\\
@9@C%ID=30899000%
@0[nach der langen Liste der Geliebten Don Giovannis, die sein Diener
Leporello in Mozarts Oper anlegt] @2das, @0harmonikaartig gefaltete
Landkarten, Prospekte, Bilderbücher und Ähnliches.\\
18 http://www.mrml.net
KAPITEL 3. INFORMATIONSSYSTEME
31
Die Texte für alle Artikel werden blockweise komprimiert und in einer Datei gespeichert. Die Unterteilung
in Blöcke hat den Vorteil, dass trotz Kompression effizient auf beliebige Stellen innerhalb der Datei
zugegriffen werden kann (random access).
Die Offsetwerte, die auf einzelne Artikel in dieser Datei zeigen, werden in mehreren Indizes mit Hilfe einer
eigenentwickelten Datenbank gespeichert, die mit binären Bäumen sog. b-trees arbeitet. b-trees eignen
sich hervorragend, um Daten effizient zu speichern und zu suchen, speziell wenn diese auf Festplatte/CDRom/etc. gespeichert werden sollen (für eine genauere Beschreibung von b-trees siehe [MR01] oder
http://perl.plover.com/BTree/article.html).
Es gibt Index-Dateien für die Volltextsuche und für die Suche nach Stichwörtern. Der gesamte Textumfang (komprimiert) beläuft sich auf ca. 41MB Daten. Der Volltextindex belegt fast 50MB Speicherplatz.
Aktuelle Daten, die über das Internet als Update geholt wurden, werden in einem zweiten Satz von
Datenbank plus Indizes abgelegt, die bei Suchen automatisch verwendet werden. Es werden also keine
Daten in die originale Datenbank aufgenommen. Der Benutzer merkt von der Aufteilung der Daten in
verschiedene Datenbanken aber nichts, mit der Ausnahme, dass er gesondert nach aktualisierten/aktuellen
Daten suchen kann.
3.3.2
Computergenerierter Kontext
Der computergenerierte Kontext (auch Wissensnetzwerk genannt) ist eine Neu- und Eigenentwicklung
des IICM und erstmals beim multimedialen Brockhaus im Einsatz. Abbildung 3.5 zeigt einen Screenshot
des Wissensnetzwerkes des Wiedehopfes.
Abbildung 3.5: Beispiel des Wissensnetzwerkes (Computergenerierter Kontext) des Multimedialen Brockhauses
(2001)
Wollte ein Lexikonhersteller bisher mehrere Artikel so verlinken, dass sie inhaltlich zusammenpassen,
musste ein Heer von Redakteuren dies erledigen. Das Wissensnetzwerk versucht nun, mit Hilfe von
verschiedenen Ähnlichkeitsfunktionen herauszufinden, ob und welche Artikel inhaltlich zusammenpassen.
Dazu werden mehrere Kriterien herangezogen:
• Wortähnlichkeit: je mehr Worte in beiden Artikeln vorkommen, desto höher wird die Wortähnlichkeit eingestuft. Dabei wird jedoch unterschieden, wie hoch das Gewicht der einzelnen Worte ist.
Je seltener ein Wort im ganzen Datenbestand vorkommt, desto höher ist sein Gewicht. Dadurch
werden u.a. Bindeworte (und, oder, ...), Artikel (der, die, das, ...) usw. nicht berücksichtigt. Um
diese Gewichtung berechnen zu können, muss zu Beginn ein Worthistogramm erstellt werden, das
die Häufigkeit jedes Wortes enthält.
Worte, die im Titel eines Artikels vorkommen, werden auch höher bewertet, als solche, die nur im
Text des Artikels enthalten sind.
• (Fein)Klassifikation: jeder Artikel wird von der Brockhausredaktion einem Themengebiet zugeordnet. Z.B. existiert eine Klasse Literatur, mit der Unterklasse österreichische Literatur. Diese
Themenklassen werden auch als Vergleichskriterium für die Ähnlichkeit zweier Artikel herangezogen.
• Linkwert: zwei Artikel enthalten gemeinsame Referenzen auf einen dritten Artikel
KAPITEL 3. INFORMATIONSSYSTEME
32
• Medienwert: zwei Artikel verweisen auf gleiche Multimediaobjekte (Bilder, Audioobjekte, ...)
Da die Erstellung der für diese Vergleiche benötigten Daten (z.B. des Worthistogrammes) sehr viel Computerleistung (Zeit und Speicher) benötigt, wird das gesamte Wissensnetzwerk für alle Brockhaus-Artikel
vorgeneriert und nicht dynamisch erzeugt.
Selbst dies wäre aber ein Ding der Unmöglichkeit, wenn jeder der knapp 100.000 Artikel mit jedem
Anderen verglichen werden müsste: Die Anzahl der Vergleiche wäre n(n−1)
= ca. 5 Milliarden, bei einer
2
theoretischen Vergleichsdauer von 1ms immer noch über 2 Monate Rechenzeit!
Daher werden für den Artikelvergleich nur Artikel herangezogen, die ähnliche Worte aufweisen. Dazu
werden zwei Tabellen erstellt: Eine enthält für jedes der ca. 300.000 verschiedenen Worte diejenigen
Artikel, in denen das Wort vorkommt. Die andere Tabelle enthält für jeden Artikel eine Wortliste von
Worten, die insgesamt nicht öfter als 200mal vorkommen dürfen. Dadurch kann relativ schnell eine grobe
Auswahl an Artikeln getroffen werden, die zu einem Artikel passen könnte (rein durch Vergleichen der
’seltenen’ Worte).
In diesem Zusammenhang sei noch ein grosses Problem erwähnt, dass das Erkennen von gleichen Worten
betrifft: Die deutsche Sprache hat viele Wortformen (gleiches Wort mit verschiedenen Endungen) und
zusammengesetzte Worte, die durch einen einfachen Vergleich natürlich nicht gefunden werden können.
Daher wird (mässig erfolgreich) versucht, mit verschiedenen morphologischen Programmen den Wortstamm zu extrahieren.
Die Erstellung des Wissensnetzwerkes wird von verschiedenen ☞PERL-Skripts erledigt.
3.3.3
Bilddaten
Bilder werden nicht einzeln als Dateien gespeichert, sondern viele zusammen in einer grossen Datenbank
(ebenfalls ein b-tree), da bei ca. 13.000 Bildern und vor allem den dazugehörigen Thumbnails viel Speicherplatz durch Fragmentierung der CD verschwendet würde. Jede Datei belegt ja mindestens einen
Block auf der CD und im Schnitt wird ein halber Block pro Datei verschwendet.
Die Bilder selbst sind im JPG-Format oder als Bitmap gespeichert.
3.3.4
Videos und Animationen
Die Videodaten und Animationen (und teilweise auch die Musik) sind als grossteils als Quicktime Movie
gespeichert. Dies ist durch lizenzrechtliche Gründe und die einfache Installation des Quicktime Players
begründet. Quicktime Videos können eine Vielzahl an verschiedenen Datentypen enthalten (siehe auch
Abschnitt Quicktime auf Seite 116). So kommen beim Brockhaus gezeichnete (Computer)-Animationen,
Videos, aber auch interaktive dreidimensionale Animationen (Quicktime VR) und 360◦ Fotos vor.
Einen Nachteil hat der Quicktime Player aber doch: es ist nicht ganz so einfach, den Player so in
ein Programm zu integrieren, dass die Player-Oberfläche (Buttons, Fortschrittsanzeige, ...) mit der
Applikation eine Einheit darstellt und nicht der Quicktime Player als gesondertes Programm (Fenster)
erscheint.
Als weitere Formate sind in der Zwischenzeit Flash- oder IPIX-Animationen in Verwendung.
Gläserner Mensch
Eine Sonderrolle bei den Animationen des Brockhaus stellt der Gläserne Mensch (auch Anima genannt)
dar: Ein menschlicher Körper kann von allen Seiten interaktiv betrachtet werden. Verschiedene Ansichten
zeigen den nackten Körper, nur die Muskeln, nur Venen, Adern und Nerven, das Knochenskelett oder
nur inneren Organe. Die jeweilige Ansicht kann gedreht und vergrössert werden.
Was aussieht, wie ein 3D-Modell des Menschen, besteht in Wirklichkeit aus über 1500 Bilddateien (JPG),
die nur sehr geschickt hintereinander dargestellt werden, sodass der Eindruck entsteht, ein wirkliches 3DModell vor sich zu haben. Ein Lookup-Table beschreibt dabei, wie die einzelnen Bilder aneinander gereiht
werden müssen, um eine flüssige Bewegung zu erzielen.
KAPITEL 3. INFORMATIONSSYSTEME
33
Anima ist eine zugekaufte Applikation der Firma iAS19 .
3.3.5
Landkarten
Die Landkarten des Brockhaus bestehen im Grunde genommen aus Bitmap-Grafiken, die mit Ortsinformationen angereichert wurden. Die Bitmaps sind in einem eigenen Format gespeichert, um erstens ein
einfaches Auslesen zu verhindern und um die Daten effizient speichern zu können.
3.3.6
Weblinks
Es gibt zwei verschiedene Arten von Verbindungen ins Internet:
• Redaktionell erstellte Weblinks, die im Text von Brockhaus geliefert werden.
• Es kann eine Anfrage an verschiedene Suchmaschinen generiert werden. Die Begriffe, nach denen
gesucht wird, sind mehr oder weniger ein Abfallprodukt der Generierung des Wissensnetzwerkes, da
hierbei die “gewichtigsten” Worte (siehe Abschnitt 3.3.2), die einen Artikel beschreiben, gefunden
werden.
3.3.7
Programming Framework
Die Brockhaus-Applikation ist vollständig in ☞C++ geschrieben und verwendet eine selbstentwickelte
Oberfläche.
19 http://www.brainmedia.de
Kapitel 4
Markup Languages
Ein Markup gibt an, wie Text in einem Dokument zu interpretieren ist. Es sind Zusatzinformationen, die
zu dem eigentlichen Text eines Dokuments hinzugefügt sind. Das deutsche Wort für “Markup Language” wäre Auszeichnungssprache, zum leichteren Verständnis wird jedoch der englische Begriff verwendet
werden.
Markups gibt es in vielen textverarbeitenden Programmen. In LATEX werden z.B. die verschiedenen Teile
eines Dokuments damit gekennzeichnet. Dieser Teil des Skriptums wird z.B. von
\chapter{Markup Languages}
eingeleitet. Andere Markups zeigen LATEX, wie es den Text setzen soll (kursiv oder fett), wie groß die
Seite ist, usw. Jede Textverarbeitung schreibt in ihr Dokumentenformat verschiedene “Auszeichnungen”.
Ein “Hello World” Dokument in RTF (Rich Text Format) wird z.B. von Staroffice so geschrieben:
{\rtf1\ansi\deff0
{\fonttbl{\f0\froman\fprq2\fcharset0 Times;}}
{\colortbl\red0\green0\blue0;\red255\green255\blue255;\red128
\green128\blue128;}
{\stylesheet{\s1\snext1 Standard;}
}
{\info{\comment StarWriter}{\vern5690}}\deftab720
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1800
\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Standard;}}
\paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440
\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800
\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar
\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \s1 Hello World
\par }
Man sieht, dass der Anteil der Formatierungsanweisungen also durchaus höher sein kann als der Anteil
der wirklichen Information.
Die meisten Textverarbeitungen verbergen die Markups vor dem Benutzer, sodass dieser nur in seltenen
Fällen damit konfrontiert wird (ausser er benutzt LATEX und einen ’normalen’ Texteditor :-).
Verallgemeinerte oder beschreibende Auszeichnungen (generalized or descriptive Markups) folgen einer
einfachen Philosophie: sie beschreiben nur die Struktur innerhalb des Dokuments. Das Layout des
Dokuments wird von anderen Elementen bestimmt; Formatierungsanweisungen sind beispielsweise in
style sheets enthalten.
Ein Beispiel für eine solche beschreibende Auszeichnung könnte sein (in diesem Fall in SGML-Notation,
aber das spielt keine Rolle):
<section>
<p>this ia a paragraph</p>
<p>this ia another paragraph</p>
34
KAPITEL 4. MARKUP LANGUAGES
35
<p>this ia a third paragraph</p>
</section>
Diese Trennung von Inhalt und Darstellung hat grosse Vorteile:
• Konsistenz: Alle Überschriften, Absätze, Fussnoten, usw. haben das gleiche Layout. Muss z.B.
die Schriftgrösse einer Überschrift geändert werden, wird nur einmal die “Formatvorlage” geändert
und sofort nehmen alle Überschriften die Änderung an.
• Flexibilität: Verschiedene “style sheets” passen das Dokument einfachst an verschiedene Bedingungen an. So ist es z.B. einfach, den Inhalt leicht für sehschwache Personen anzubieten, indem die
Schriftgrösse einfach auf “riesig” gesetzt wird.
Diese Trennung von Inhalt und Layout wird seit langem gepredigt, aber von den Erzeugern von Dokumenten nur selten eingehalten (sei es, wenn es um die Benutzung der Formatvorlage in Winword geht,
oder um HTML/CSS).
4.1
SGML
Als Internationaler Standard ISO8879 [SGM86] wurde 1986 SGML als ein solches “generalized markup”
System verabschiedet. Er ist ein Standard für geräte- und systemunabhängige Beschreibung von Text
in elektronischer Form. Wer sich für historische Details über SGML interessiert, sei auf die Webseite
http://www.sgmlsource.com/history/index.htm verwiesen.
SGML bietet ein Markup-Schema, das flexibel und plattformunabhängig ist. Da der Standard aber
gleichzeitig sehr komplexe Möglichkeiten bietet, waren erstens Programme, die SGML verarbeiten konnten, sehr teuer und zweitens setzte sich SGML daher nie wirklich durch. Zusätzlich erlaubte die Definition
von SGML verschiedene Dinge, die für Autoren zwar manchmal praktisch waren, aber bei SGML Parsern
(☞parse) nur schwer zu implementieren waren (z.B. Weglassen des End-Tags in manchen Fällen).
Trotzdem ist SGML immer noch eine wichtige Grundlage, auf der viele heutige Markup languages aufbauen (HTML, XML, ...).
Die Markup language definiert,
• welche Markups überhaupt erlaubt sind,
• welche davon notwendig sind
• wie die Markups vom restlichen Text unterschieden werden und
• welche Bedeutung die verschiedenen Markups haben.
Ein Markup beschreibt zwar die Bedeutung, lässt die Vorgehensweise aber offen. So kennzeichnet das
Markup “<p>” einen Absatzbeginn, stellt aber das Verhalten frei (Neue Zeile, einrücken, etc.). Daher kann die Interpretation leicht an unterschiedliche Bedingungen angepasst werden. So kann z.B. ein
Programm, das Texte analysiert, alle Literaturangaben einfach weglassen, während ein Formatierungsprogramm diese Angaben sammelt und am Ende des Dokuments anhängt.
4.1.1
Struktur
SGML führte das Konzept von Ende-Tags zur Kennzeichnung des Endes für ein Strukturmelement ein.
So wird z.B. ein Absatz der mit dem Tag <p> beginnt, immer von dem Ende-Tag </p> beendet. In
SGML-Terminologie ist der Absatz ein Element mit dem Element-Typ “p”.
Das Problem von SGML war allerdings, dass Ende-Tags in manchen Fällen weggelassen werden konnte.
Ein Absatz darf beispielsweise nicht innerhalb eines anderen Absatzes vorkommen und so erlaubt SGML
das Weglassen des End-Tags </p> für den Fall, dass das Ende des Absatzes zugleich der Anfang eines
neuen Absatzes ist.
KAPITEL 4. MARKUP LANGUAGES
36
<p>
Hier ist ein Absatz
<p>
Und hier kommt ein neuer Absatz. Das fehlende End-Tag stoert SGML
nicht, da Absaetze nicht verschachtelt sein können und daher ein
Start-Tag eindeutig den vorherigen Absatz schliesst.
</p>
Um verschiedene Strukturen zu erhalten, können Elemente verschachtelt werden:
<p>
Dies ist ein Absatz, der ausserdem noch ein Zitat (quote) enthaelt
<q>
dies ist das Zitat
</q>
hier koennte der Absatz weitergehen...
</p>
4.1.2
Attribute
Für praktische Anwendungen sind Zusatzinformationen zu Tags oft notwendig. So kann zum Beispiel für
eine Notiz ein Typ angegeben werden, der hilft, die Art der Notiz näher zu bestimmen:
<note type="warning">
Im Falle eines Notfalles....
</note>
Attribute werden also direkt in das jeweilige Tag geschrieben. Nähere Details zu XML-Attributen folgen
in Abschnitt XML Attribute auf Seite 49
4.1.3
Entities
SGML-Dokumente sollen leicht und ohne Verluste von einer Software/Hardware auf eine andere übertragen werden können. Daher basiert SGML auf ASCII (American Standard Code for Information Interchange). Um Buchstaben anderer Zeichensätze oder binäre Daten (Musik, Bilder, ...) unterstützen zu
können, wurden sog. Entities eingeführt. Jede Folge von Zeichen oder Bytes kann als Entity in SGML
kodiert werden. So sind z.B. Umlaute oder Buchstaben mit Akzenten als Entities kodiert (z.B. &auml;
für ’ä’).
Um z.B. ein Bild in ein SGML-Dokument einzubinden könnte folgender Code benutzt werden:
<figure entity="figure1">
“Figure1” ist allerdings kein Filename, sondern ein Entity-Name, der irgendwo am Anfang der Datei
deklariert werden muss:
<!ENTITY figure1 SYSTEM "fig1.bmp" NDATA BMP>
Auf Details dieser Notation wird hier nicht näher eingegangen, da dieser Abschnitt über SGML nur als
Überleitung zu anderen Markup-Sprachen wie XML oder HTML verwendet wird.
4.1.4
Dokumententypen
SGML und die meisten von SGML abstammenden Markup-Sprachen unterstützen verschiedene Dokumententypen, die formal durch die verschiedenen Bestandteile und deren Struktur beschrieben werden.
Diese Information steht in der DTD (Document Type Definition). Ohne eine DTD kann ein SGMLDokument nicht auf seine syntaktische Richtigkeit überprüft werden.
Eine DTD legt fest, wie sich Elemente innerhalb eines Dokumentes aufeinander beziehen. Sie stellt auch
eine Grammatik (Syntax) für das Dokument und alle seine Elemente zur Verfügung. Ein Dokument, das
sich sowohl an die Markup-Spezifikationen als auch an die Regeln hält, die von seiner DTD umrissen
KAPITEL 4. MARKUP LANGUAGES
37
werden, wird als gültig bezeichnet (im Gegensatz zu einem wohlgeformten Dokument, das sich nur an die
die Markup-Syntaxregeln hält).
Details, wie genau eine DTD aufgebaut wird, sind im Abschnitt Document Type Definition auf Seite 50
zu finden.
4.1.5
Probleme von SGML
Die Spezifikation von SGML umfasst über 500 Seiten (zum Vergleich: die Spezifikation von XML (eXtensible Markup Language) passt auf 33 Seiten). SGML ist extrem komplex und beinhaltet viele nur
selten gebrauchte Features.
SGML unterstützt tippfaule Dokumentenersteller, indem es erlaubt, dass Tags, die offensichtlich nutzlos
sind (End-Tag, wenn keine Verschachtelung erlaubt), weggelassen werden können. Dies erleichtert das
Lesen/Schreiben von SGML-Dokumenten für Menschen, erschwert aber die Interpretation für Computerprogramme.
4.2
HTML
1990 verwendete Tim Berners-Lee1 , britischer Informatiker am Genfer Hochenergieforschungszentrum
CERN und der Erfinder des Word-Wide-Webs, einige Tags einer SGML-DTD, die am CERN verwendet
wurde, fügte die Möglichkeit, Hyperlinks und Bilder einzubinden dazu, und schon war HTML entstanden.
Die anfänglich reine Dokumentenbeschreibungsprache entwickelte sich mangels Alternativen nun auch zu
einer Sprache, die das Layout bestimmte. HTML wurde von Netscape und Microsoft ohne Koordination
verwässert und erweitert. Browserinkopatibilitäten machten Web-Designern das Leben schwer.
Das Layout wurde unter Zuhilfenahme von “schmutzigen” Tricks, selbst unter Ausnutzung von Fehlern
der Browser, erzeugt. Die Trennung von Inhalt und Darstellung und die Einhaltung des HTML-Standards
wurde immer unwichtiger, sodass es heute kaum noch Seiten im WWW gibt, die dem Grundgedanken
des Erfinders von HTML entsprechen.
Da das Wissen über HTML schon sehr verbreitet ist, folgt hier nur ein kurzer Überblick über die
Grundzüge dieser Seitenbeschreibungssprache.
HTML ist eine Sammlung plattformunabhängiger Stile, die die verschiedenen Komponenten eines Dokuments im WWW definieren. Es existiert eine HTML Document Type Definition (DTD), die die erlaubten
Tags und Entities definiert.
4.2.1
Tags und Entities
Ein Tag in HTML ist mit spitzen Klammern umgeben (z.B. <p> oder <a>) und tritt meist paarweise (Start & End-Tag) auf. Das End-Tag unterscheidet sich durch ersteres durch einen vorgestellten
Schrägstrich ’/’. Bei HTML spielt es keine Rolle, ob Tags in Form von Klein- oder Grossbuchstaben
geschrieben werden. <H1> ist demnach äquivalent mit <h1>.
Einige wenige “Standalone-Tags” haben kein abschliessendes End-Tag (z.B. das Tag für den manuellen
Zeilenumbruch <br>).
Tags können Attribute haben, die zusätzliche Angaben enthalten. Viele Browser akzeptieren den Attributwert auch ohne doppelte Anführungsstriche:
<h4 align=center>
HTML - die Sprache des WWW
</h4>
Dieses Beispiel zeigt eine Überschrift 4. Ordnung, die zentriert auszugeben ist. Hier sieht man auch
schon/schön, wie Inhalt (Überschrift) mit Darstellung (zentriert) vermischt wurde.
1 http://www.w3.org/pub/WWW/People/Berners-Lee/
KAPITEL 4. MARKUP LANGUAGES
38
Tags, die ein Browser nicht kennt, werden normalerweise einfach ignoriert. Dies ist zwar praktisch beim
Surfen, aber unpraktisch beim Erstellen von Seiten, da eigene Fehler schwerer auffallen.
Entities beginnen mit einem kaufmännischem ’&’ und schliessen mit Strichpunkt ’;’. Die UnicodeNummern oder Namen bzw. Abkürzungen für diese Namen bezeichnen die einzelnen Sonderzeichen.
Entities werden hauptsächlich verwendet, um (deutsche) Umlaute bzw. akzentuierte Buchstaben und
Sonderzeichen zu setzen. Je nach HTML-Version (3.2 oder 4.0) existieren eine ganze Menge davon.
Tabelle 4.1 zeigt ein paar davon.
Zeichen
à
á
â
ã
ä
å
À
...
è
...
α
...
∀
...
Beschreibung
a mit Accent grave
a mit Accent acute
a mit Circumflex
a mit Tilde
a mit Umlaut
a mit Ring
A mit Accent grave
Name
&agrave;
&aacute;
&acirc;
&atilde;
&auml;
&aring;
&Agrave;
Unicode
&#224;
&#225;
&#226;
&#227;
&#228;
&#229;
&#192;
ab Version
3.2
3.2
3.2
3.2
3.2
3.2
3.2
e mit Accent grave
&egrave;
&#232;
3.2
alpha
&alpha;
&#945;
4.0
für alle
&forall;
&#8704;
4.0
Tabelle 4.1: Unvollständige Liste der Entities in HTML
Eine ziemlich vollständige Liste findet sich im entsprechenden Kapitel von SelfHTML2 .
Viele Browser “verstehen” mittlerweile auch z.B. die deutschen Umlaute direkt, dies sollte aber nicht
dazu verleiten, sie in eine HTML-Seite einzubauen!
4.2.2
HTML Kommentare
HTML beinhaltet die Möglichkeit, an beliebigen Stellen innerhalb einer HTML-Datei Kommentare einzufügen. Kommentare werden von WWW-Browsern ignoriert, d.h. bei der Präsentation nicht angezeigt.
Kommentare sind z.B. sinnvoll, um interne Angaben zu Autor und Erstelldatum in einer Datei zu plazieren, um interne Anmerkungen zu bestimmten Textstellen zu machen, oder um verwendete HTML-Befehle
intern auszukommentieren.
<!-- Dieser Text ist ein Kommentar -->
Eine Kommentardeklaration beginnt mit ’<!’ und endet mit ’>. Ein Kommentar selbst beginnt und endet
mit ’--’ und darf ’--’ nicht enthalten. D.h. dass verschachtelte Kommentare nicht möglich sind, wohl
aber andere HTML-Tags in einem Kommentar.
4.2.3
HTML Mindesttags
Ein HTML-Dokument muss mindestens aus folgenden Tags bestehen:
<html>
<head>
<title>
Titel des Dokuments
</title>
</head>
<body>
2 http://courses.iicm.edu/mmis/selfhtml80/html/referenz/zeichen.htm
KAPITEL 4. MARKUP LANGUAGES
39
Inhalt des Dokuments
</body>
</html>
Der <head>-Teil kann zusätzliche Meta-Informationen enthalten, die z.B. den Autor des Dokuments
ausweisen. Diese Information wird vom Browser aber nicht angezeigt (der Inhalt von < title > steht
meist in der Titelzeile des Browserfensters).
Nur die Teile zwischen dem Start- und dem End-Tag von <body> werden vom Browser interpretiert und
angezeigt.
Da es nicht sehr sinnvoll ist, im Rahmen dieses Skriptums alle möglichen HTML-Tags herunterzuleiern
(dazu gibt es tausende Bücher und Webseiten - siehe auch Abschnitt 4.2.7), werden hier nur einige wichtige
Techniken beschrieben, die zum Standardwerkzeug von HTML-Programmierern bzw. HTML-Designer
gehören.
4.2.4
HTML Frames
Die Erklärungen von SelfHTML sind so gut, dass dem nicht wirklich was hinzuzufügen ist (und es auch
nicht viel Sinn macht, es abzuschreiben) siehe SelfHTML Kurs / Frames3
4.2.5
Farben in HTML
Die Farbdefinitionen und deren HTML-Tags sind je nach Browser ziemlich unterschiedlich, die Farbkodierung selbst folgt jedoch einem einheitlichen Schema:
• durch Angabe der RGB-Werte in Hexadezimalform (RGB = Rot/Grün/Blau) (browserunabhängig
und vielseitiger)
• durch Angabe eines Farbnamens (Nur 16 Farbnamen standardisiert, der Rest ist browserabhängig!)
Beispiel für hexadezimale Kodierungen:
<body bgcolor=#808080> <!-- dunkelgrauer Dateihintergrund -->
<font color=#990000>roter Text</font>
<table bgcolor=#00C0C0> <!-- blaugrüner Tabellenhintergrund -->
<hr color=#CC00CC> <!-- violette Trennlinie -->
Jede hexadezimale Farbdefinition ist 6stellig und hat das Schema: #XXXXXX. Die ersten beiden Stellen
stellen den Rot-Wert der Farbe dar, die zweiten beiden Stellen den Grün-Wert, und die letzten beiden
Stellen den Blau-Wert. Die jeweiligen Werte sind natürlich in hexadezimaler Form anzugeben (00 bis
FF).
Ein Beispiel für die Kodierung mit Farbnamen:
<body bgcolor=black> <!-- schwarzer Dateihintergrund -->
<font color=yellow>gelber Text</font>
<table bgcolor=aqua> <!-- hellblauer Tabellenhintergrund -->
<hr color=red> <!-- rote Trennlinie -->
4.2.6
Skripte (Client-seitig)
Normale HTML-Seiten sind, sobald sie einmal beim Client angekommen sind, rein statische Dokumente.
D.h. es ist wohl möglich, sie auf der Server-Seite dynamisch zu erzeugen, im Client-Browser können
sie aber nicht mehr verändert werden. Oft ist es jedoch sinnvoll, bestimmte Dinge beim Client zu
starten. Es ist beispielsweise viel effizienter, eine einfache Überprüfung von Formularfeldern (z.B. besteht
die Postleitzahl nur aus Ziffern?) direkt beim Client durchzuführen, als das ausgefüllte Formular zum
Server, und bei einem Fehler wieder zum Client zurück zu schicken.
3 http://courses.iicm.edu/mmis/selfhtml80/html/frames/definieren.htm
KAPITEL 4. MARKUP LANGUAGES
40
Diese Skripte werden direkt in den HTML-Code eingebettet und vom Browser ausgeführt (interpretiert).
Ein einfaches Beispiel4 zeigt eine Interaktion zwischen dem User und dem HTML-Dokument und eine
aktive Veränderung des Dokumentes durch die Eingabe des Benutzers:
<html>
<head>
<title>Text des Titels</title>
<script language="JavaScript">
<!-UserName = window.prompt("Dein Vorname:","Vorname");
-->
</script>
</head>
<body>
<script language="JavaScript">
<!-document.write("<h1>Hallo " + UserName + "!</h1>");
-->
</script>
</body>
</html>
Das daraus resultierende HTML-Dokument enthält (in meinem Fall) die Zeile ’<h1>Hallo Christof</h1>’.
Mit <script> leitet man einen Skript-Bereich ein. Innerhalb des einleitenden <script>-Tags gibt man mit
dem Attribut language an, welche Script-Sprache man innerhalb des Bereichs benutzen möchten. Die
gängigste Angabe ist dabei language="JavaScript". Andere denkbare Sprachangaben sind beispielsweise JScript oder VBScript (beide Microsoft).
Auch hier gehört es zum guten Ton, dem Betrachter der Webseiten eine “Skript-freie” Zone anzubieten.
Dies geschieht mit Hilfe des <noscript>-Tags. Manche Surfer benutzen Web-Browser, die keine Skripte
ausführen können, andere verbieten aus Sicherheits- oder anderen Gründen die Ausführung von aktiven
Skripten in ihrem Browser.
Eine weiterführende Behandlung der Skript-Sprachen würde den Rahmen dieser Unterlagen sprengen. Es
sei hier nur kurz auf das Kapitel über JavaScript von SelfHTML5 verwiesen.
4.2.7
Weiterführende Informationen über HTML
Als ausführlicher HTML-Kurs mit allen Tipps, Tricks und Features bietet sich SelfHTML6 an. Um den
Internetverkehr möglichst gering zu halten und gleichzeitig die Zugriffsgeschwindigkeit zu erhöhen, liegt
der gesamte Kurs unter http://courses.iicm.edu/mmis/selfhtml80/ bzw. unter ftp://courses.
iicm.edu/courses/mmis/selfhtml80.zip als Zip-Datei (7.1MB).
4.3
Style Sheets
Style-Sheets sind eine unmittelbare Ergänzung zu HTML7 . Es handelt sich dabei um eine Sprache zur
Definition von Formateigenschaften einzelner HTML-Befehle. Mit Hilfe von Style-Sheets kann man beispielsweise bestimmen, dass Überschriften erster Ordnung eine Schriftgrösse von 18 Punkt haben, in
der Schriftart Helvetica, aber nicht fett erscheinen, und mit einem Abstand von 1,75 Zentimeter zum
darauffolgenden Absatz versehen werden. Angaben dieser Art sind mit herkömmlichem HTML nicht
möglich.
Das ist aber nur der Anfang. Style-Sheets bieten noch viel mehr Möglichkeiten. So kann man beliebige Bereiche einer HTML-Datei mit einer eigenen Hintergrundfarbe, einem eigenen Hintergrundbild
(Wallpaper) oder mit diversen Rahmen versehen. Man kann beliebige Elemente, sei es eine Grafik, ein
Textabsatz, eine Tabelle oder ein Bereich aus mehreren solcher Elemente, pixelgenau im Anzeigefenster
des WWW-Browsers positionieren. Für Drucklayouts stehen Befehle zur Definition eines Seitenlayouts
bereit. Für die akustische Wiedergabe von HTML-Dateien gibt es ein ganzes Arsenal an Befehlen, um
4 http://courses.iicm.edu/mmis/selfhtml80/javascript/beispiele/formulareingaben.htm
5 http://courses.iicm.edu/mmis/selfhtml80/javascript/index.htm
6 http://www.selfhtml.com
7 bzw.
zu SGML. Da SGML Style Sheets aber wenig Bedeutung haben, werden hier nur HTML Style Sheets behandelt.
KAPITEL 4. MARKUP LANGUAGES
41
künstliche Sprachausgabesysteme feinzusteuern. Spezielle Filter schliesslich, die derzeit allerdings noch
rein Microsoft-spezifisch sind, erlauben Grafik-Effekte bei normalen Texten, die aus Grafikprogrammen
wie PhotoShop bekannt sind.
Ein weiteres wichtiges Leistungsmerkmal von Style-Sheets ist es, dass man Style-Definitionen zentral
angeben kann. So kann man beispielsweise im Kopf einer HTML-Datei zentrale Definitionen zum Aussehen einer Tabellenzelle notieren. Alle Tabellenzellen der entsprechenden HTML-Datei erhalten dann die
Formateigenschaften, die einmal zentral definiert sind. Das spart Kodierarbeit und macht die HTMLDateien kleiner. Man kann die Style-Sheet-Definitionen sogar in separaten Dateien notieren. Solche
Style-Sheet-Dateien kann man in beliebig vielen HTML-Dateien referenzieren. Auf diese Weise können
für grosse Projekte einheitliche Layouts entworfen werden. Ein paar kleine Änderungen in einer zentralen
Style-Sheet-Datei bewirken so für hunderte von HTML-Dateien ein neues Layout.
Style-Sheets unterstützen also erstens die professionelle Gestaltung beim Web-Design, und zweitens helfen
sie beim Corporate Design für grosse Projekte oder für firmenspezifische Layouts.
Es gibt mehrere Sprachen zum Definieren von Style-Sheets (siehe <style type=’’style sheet language’’>
in unterem Beispiel). Die bekannteste ist CSS (Cascaded Style Sheet).
Ein erstes Beispiel zeigt, wie Style Angaben in einem HTML-Dokument angegeben werden können.
<head>
<title>Text des Titels</title>
<style type="text/css">
<!-/* eine Style-Angabe in CSS */
body { margin:2cm }
h1 { font-size:24pt }
-->
</style>
<style type="text/javascript">
<!-/* eine Style-Angabe in der Netscape eigenen JSSS-Sprache */
with(tags.H2)
{
color = "red";
fontSize = "16pt";
marginTop = "2cm";
}
-->
</style>
</head>
Wie man sieht, kochen auch hier die grossen Browser-Hersteller ihre eigenen Süppchen. Das W3C hat
bisher zwei Standards verabschiedet: CSS1 und CSS2
Netscape 4.x interpretiert fast den vollen Sprachumfang der CSS-Version 1.0 und einen Teil der Befehle der
CSS-Version 2.0. Der MS Internet Explorer kennt die CSS-Version 1.0 bereits seit seiner Produktversion
3.0. In der Version 4.0 interpretiert er einen Teil der CSS-Version 2.0 und einige spezielle, von Microsoft
eingeführte Style-Sheet-Angaben.
Daraus ergibt sich auch, dass der Einsatz von CSS gut überlegt werden muss, da dies zwar einige Möglichkeiten bietet, Web-Seiten “aufzupeppen”, ein Benutzer dessen Browser diese Features nicht unterstützt,
wird dann allerdings evtl. gelangweilt oder enttäuscht sein.
4.3.1
Einbinden von Style Sheet Definitionen
Die Style Informationen können auf verschiedene Arten einem HTML-Dokument zugewiesen werden:
• innerhalb des HTML-Dokumentes
• in einer extra-Datei
Zweiteres hat den unschätzbaren Vorteil, dass sich eine Änderung in einer Datei sofort auf alle einbindenden Dokumente auswirkt.
Werden beide Möglichkeiten genutzt, überschreiben die Definitionen in einem HTML-Dokument die Definitionen der externen Datei. So kann man globale Einstellungen treffen, die aber noch je nach Dokument
leicht angepasst werden können.
KAPITEL 4. MARKUP LANGUAGES
42
Ein Beispiel für die Definition innerhalb eines HTML-Dokuments:
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-/* ... Style-Sheet-Angaben ... */
-->
</style>
</head>
<body>
</body>
</html>
Mit Hilfe des <link>-Tags kann eine externe Datei als Style-Sheet eingebunden werden:
<link rel=’’stylesheet’’ type=’’text/css’’ href=’’formate.css’’>
Eine zweite Möglichkeit bietet die selbe Funktionalität, wird aber nicht von allen Browsern unterstützt:
...
<style type="text/css">
<!-@import url(formate.css);
//-->
</style>
...
Weitere Details entnehme man bitte dem entsprechenden Kapitel von SelfHTML8 .
4.3.2
Unterschiedliche Ausgabemedien
Style Sheets unterstützen unterschiedliche Ausgabemedien. Je nach verwendetem Client, ist es möglich,
verschiedene Formatierungen zu erstellen. Diese drei Definitionen im Header des HTML-Dokuments
ermöglichen Style-Definitionen aus unterschiedlichen Dateien zu laden:
<link rel=stylesheet media="screen" href="website.css">
<link rel=stylesheet media="print" href="printer.css">
<link rel=stylesheet media="aural" href="speaker.css">
bzw.
<style type="text/css">
<!-@import url(druck.css) print;
@import url(multimedia.css) projection, tv;
-->
</style>
bzw. direkt in ein externes Style File:
/* allgemeines fuer alle */
@media print {
/* und hier nur die Style Angaben fuer den Druck */
}
Mögliche Medien sind:
• screen für Style-Sheets, die bei der Bildschirmpräsentation wirksam sein sollen.
• print für Style-Sheets, die bei der Ausgabe über Drucker wirksam sein sollen. Beispiele finden sich
unter
– http://www.telematik.edu/xml/index.xml?style=css: Druckansicht ohne Navigationsleiste
8 http://courses.iicm.edu/mmis/selfhtml80/css/index.htm
KAPITEL 4. MARKUP LANGUAGES
43
– http://courses.iicm.edu/mmis/selfhtml80/css/eigenschaften/printlayouts.htm#size:
Ausdruck im Querformat
• aural für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei per Sprachausgabe
über Lautsprecher erfolgt.
• projection für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei per Diaprojektor oder Overhead-Projektor erfolgt. Ein Beispiel findet sich unter http://www.opera.com/
support/operashow/.
• braille für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über taktile
Braille-Medien erfolgt.
• tv für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über Fernsehtechnik
erfolgt.
• handheld für Style-Sheets, die wirksam sein sollen, wenn der Inhalt der HTML-Datei über Handys,
Palmtops oder ähnliche Geräte mit kleinem Display erfolgt.
• all für Style-Sheets, die in allen Medientypen wirksam sein sollen.
Zur Zeit werden diese verschiedenen Medien allerdings nicht von allen Browsern unterstützt (CSS2).
Eine gute Testmöglichkeit bietet der kleine, aber feine Browser Opera9 , da er z.B. eine Druckvorschau
(Media-Typ print) und einen full-screen Modus (Media-Typ projection) bietet.
4.3.3
Format-Definitionen für HTML-Tags
Es ist möglich, verschiedene Style-Definitionen für verschiedene HTML-Tags zu definieren. Diese StyleAngaben werden dann vom Browser immer verwendet, um das HTML-Tag darzustellen. Folgendes
Beispiel definiert einen Style für eine Überschrift 1. Ordnung (<h1>) und einen für Text eines Absatzes
(<p>) und einen Listeneintrag (< li >):
<style type="text/css">
<!-h1 { font-size:48pt; color:#FF0000; font-style:italic; }
p,li { font-size:12pt;
line-height:14pt;
font-family:Helvetica,Arial;
letter-spacing:0.2mm;
word-spacing:0.8mm; }
-->
</style>
Hier sieht man auch, dass Format-Definitionen für mehrere Tags auf einmal deklariert werden können.
Zusätzlich bieten Format-Unterklassen weitere Möglichkeiten, verschiedene Formatierungen auf gleiche
HTML-Tags anzuwenden. Das Beispiel von SelfHTML zeigt auf http://courses.iicm.edu/mmis/
selfhtml80/css/formate/zentrale.htm, wie Unterklassen definiert und verwendet werden. Das Attribut “class”, das die Klassenzugehörigkeit bestimmt, ist ein sog. Universalattribut und kann bei allen
HTML-Tags verwendet werden. Das folgende Beispiel zeigt auch, wie man ein Navigationsmenu für den
Ausdruck (Medientyp “print”) ausblenden kann.
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-p.normal { font-size:10pt; color:black; }
p.gross { font-size:12pt; color:black; }
p.klein { font-size:8pt; color:black; }
all.rot { color:red; }
.blau { color:blue; }
/* do not show menu on print: */
9 http://www.opera.com
KAPITEL 4. MARKUP LANGUAGES
44
@media print {
.menu {display: none;}
}
-->
</style>
</head>
<body>
<p class="menu">Navigations Menu: etc.</p>
<p class="normal">Normaler Textabsatz mit Schrift 10 Punkt schwarz</p>
<p class="gross">Textabsatz mit Schrift 12 Punkt schwarz</p>
<p class="klein">Textabsatz mit Schrift 8 Punkt schwarz</p>
<p class="rot">roter Textabsatz</p>
<address class="rot">roter Absatz für Adressen</address>
<blockquote class="blau">blaues Zitat</blockquote>
</body>
</html>
Eine Unterklasse von all gilt für alle Tags (das Wort all kann auch weggelassen werden).
Will man das Aussehen eines Tags von der Verschachtelung der HTML-Tags abhängig machen (Wie
schaut ein kursiver (<i>) Text aus, wenn er in einer Überschrift 1. Ordnung (<h1>) verwendet wird?),
verwendet man folgende Syntax:
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-h1 { color:red; }
h1 i { color:blue; font-weight:normal; }
-->
</style>
</head>
<body>
<h1>Wir lernen <i>Style-Sheets</i></h1>
<p>Wir lernen <i>Style-Sheets</i></p>
</body>
</html>
Es lassen sich aber auch Formatdefinitionen deklarieren, die keinem bestimmten Tag zugewiesen sind:
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-p,li,dd,dt,blockquote {
color:red;font-family:Times;
margin-top:1cm; margin-left:1cm;
}
#fettkursiv { font-weight:bold; font-style:italic; }
-->
</style>
</head>
<body>
<p id="fettkursiv">
Extra-Formatierung
</p>
<p>
Das ist formatierter Text mit <em id="fettkursiv">
Extra-Formatierung</em>
</p>
</body>
</html>
Diese unabhängigen Definitionen können mit dem Universalattribut “id” jedem HTML-Tag zugewiesen
werden. Diese Ids müssen eindeutig für das ganze Dokument sein (im Gegensatz zu den Definitionen per
“class” Attribut, wo ein Klassenname für mehrere Tags auch verschiedene Formatierungen hervorrufen
kann).
Es gibt auch Formatierungen, die nicht von HTML-Tags abhängig sind, bzw. die sich nicht eindeutig
durch ein Tag ausdrücken lassen. Diese heissen “Pseudo”-Formate.
Ein Beispiel ist ein Hyperlink, der verschiedene Zustände haben kann:
<style type="text/css">
KAPITEL 4. MARKUP LANGUAGES
45
a:link { color:#FF0000; font-weight:bold }
a:visited { color:#990000; }
a:active { color:#0000FF; font-style:italic }
</style>
Die Schlüsselworte sind festdefiniert und können nicht frei gewählt werden.
Seit der Version 2.0 der Cascaded Style Sheets gibt es auch die Möglichkeit, Styles abhängig von verwendeten Attributen zu erstellen:
<html>
<head>
<title>Titel der Datei</title>
<style type="text/css">
<!-p { font-weight:bold; font-family:Tahoma,sans-serif; font-size:14pt; }
p[align] { color:red; }
p[align=center] { color:blue; text-align:left; }
td[abbr~=Berlin] { background-color:#FFFF00 }
*[lang|=en] { background-color:#FF0000; color:#FFFFFF; }
-->
</style>
</head>
<body>
<p>Das ist ein Textabsatz, ein stinknormaler.</p>
<p align="right">Das ist ein Textabsatz, rechts ausgerichtet.</p>
<p align="center">Das ist ein Textabsatz, zentriert? Wirklich zentriert?</p>
<table border="1"><tr>
<th>Berlin</th>
<th>Hamburg</th>
</tr><tr>
<td abbr="Es folgen Infos zu Berlin">Eine Menge Inhalt zu Berlin</td>
<td abbr="Es folgen Infos zu Hamburg">Eine Menge Inhalt zu Hamburg</td>
</tr></table>
<p>
Ein Textabsatz <span lang="fr">avec</span> Text
<span lang="en">about</span> einen <span lang="en-US">
English man in New York</span>
</p>
</body>
</html>
Der Hauptnutzen von Style Sheets ist eigentlich die zentrale Definition von Formatangaben. Ab und
zu ist es allerdings notwendig, einem HTML-Tag direkt eine Formatangabe ohne zentrale Deklaration
zuzuweisen. Mit Hilfe des style-Attributes ist dies bei allen HTML-Tags möglich:
<h1 style="color:red;font-size:36pt;">
Heading 1. order
</h1>
Beliebige Textabschnitte lassen sich mit dem <span>-Tag formatieren. Dieses Tag hat keine eigene
Bedeutung und dient nur zum Definieren von Style-Sheet-Angaben. Es eignet sich besonders dazu, um
innerhalb des Geltungsbereichs anderer HTML-Tags einzelne Zeichen oder Wörter anders zu formatieren:
...
<body>
<h1>
&Uuml;berschrift 1. Ordnung mit
<span style="color:blue;">
blauem Text
</span>
</h1>
<p>
Normaler Textabsatz mit
<span style="font-style:italic; color:red;">
rotem kursiven Text
</span>
</p>
</body>
...
Ähnlich kann das <div>-Tag verwendet werden. Im Unterschied zu <span> erzwingt <div> aber eine
neue Textzeile.
KAPITEL 4. MARKUP LANGUAGES
4.3.4
46
CSS Eigenschaften
Hier soll keine komplette Liste aller Dinge, die man mit CSS beeinflussen kann, stehen, da das den
Rahmen dieses Skriptes sprengen würde. Eine vollständigere Liste findet man wieder mal im Kapitel
“Style-Sheet-Angaben” von SelfHTML 10 .
Ein Grossteil (vor allem von CSS1) der Formatierungen bezieht sich auf die verwendeten Schriften. Es
können fast alle Eigenschaften bestimmt/geändert werden:
• Schriftgrösse (font-size)
• Schriftart (font-family)
• Schriftstil (font-style)
• Schriftvariante (font-variant)
• Schriftgewicht (font-weight)
• Wortabstand (word-spacing)
• Zeichenabstand (letter-spacing)
• Textdekoration (text-decoration)
• Textfarbe (color)
• Textschatten (text-shadow) (CSS2)
Ausserdem ist es möglich, eigene Schriften in eine Web-Seite einzubetten, bzw. diese nachzuladen, falls
sie auf dem Computer nicht existiert (CSS2):
<style type="text/css">
@font-face { font-family:Kino;
src:local(Kino MT), url(kino.ttf) format(TrueType); }
@font-face { font-family:MeineArt;
url(http://www.xy.de/cgi-bin/myfont.pl)
format(intellifont) }
</style>
Die erste Deklaration erwartet eine Schrift der “Kino”-Familie. Falls diese Schrift lokal nicht existiert,
wird sie von der angegebenen Url geladen. Die zweite Deklaration lädt eine Schrift von der angegebenen
Url und signalisiert, dass diese im Format ’intellifont” ist.
Ein Problem mit diesen Angaben stellen natürlich die verschiedenen Schriftformate dar. Ein Macintosh
kann mit einer TrueType-Schrift nicht viel anfangen, braucht sie daher erst garnicht herunterzuladen,
kann sie danach natürlich aber auch nicht darstellen.
Weitere Formatangaben beziehen sich auf die Positionierung der Elemente (Abstand zum Rand, Texteinrückung, Textausrichtung, etc.) und ermöglichen z.T. eine pixelgenaue Positionierung am Bildschirm.
Eine ganz andere Art von Formatierung beschreiben die Attribute für die Sprachausgabe. Aus dieser
in CSS2 eingeführte Möglichkeit, HTML-Dokumente z.B. für Blinde als gesprochene Worte auszugeben,
folgen eine ganze Reihe von Einstellungen (siehe auch http://courses.iicm.edu/mmis/selfhtml80/
css/eigenschaften/sprachausgabe.htm):
• Lautstärke (volume)
• Aussprache (speak)
• Pause vor/nach einem Element (pause)
• Hintergrund-Sound (play-during)
10 http://courses.iicm.edu/mmis/selfhtml80/css/eigenschaften/index.htm
KAPITEL 4. MARKUP LANGUAGES
47
• Raum-Effekt links/rechts/vorne/hinten (azimuth)
• Sprechgeschwindigkeit (speech-rate)
• Sprechertyp (voice-family)
• etc.
Es wäre nicht Microsoft, wenn es nicht auch in Cascaded Style Sheets eine ganze Reihe von eigenen
Erweiterungen eingebaut hat, die hier nur kurz erwähnt werden sollen:
• Kontrolle über den Cursor
• Bild-Filter
– Vordergrund/Hintergrund verschmelzen - filter:Alpha()
– Verwisch-Effekt - filter:Blur()
– Transparenzfarbe - filter:Chroma()
– Schattenwurf - filter:DropShadow()
– Spiegeln - filter:FlipH() und filter:FlipV()
– Transparenzmaske filter:Mask()
– etc.
Eine vollständigere Liste und deren Beschreibungen sind bitte unter http://courses.iicm.edu/mmis/
selfhtml80/css/eigenschaften/filter.htm nachzulesen. Es ist aber zu beachten, dass diese Features
nur vom Internet Explorer >4.0 unterstützt werden, und eine Verwendung derselben dadurch automatisch
viele Web-Surfer ausschliesst.
4.4
eXtensible Markup Language (XML)
Die erweiterbare Markup-Sprache XML ist ein Dokumentenverarbeitungsstandard, der vom World-WideWeb-Konsortium (W3C)11 vorgeschlagen wurde. Obwohl die genauen Spezifikationen noch nicht alle
fertiggestellt sind, erwarten viele, dass XML und die mit XML verwandten Technologien HTML ersetzen
werden.
4.4.1
Warum XML und nicht HTML?
Die ursprüngliche Absicht von HTML war, dass Elemente (Tags) verwendet werden, um Information
logisch auszuzeichnen (nach ihrer Bedeutung) ohne Rücksicht darauf zu nehmen, wie ein Browser diese
Information präsentiert. In anderen Worten: Titel, Überschriften, hervorgehobener Text oder die Kontaktadresse des Autors sollten in die Elemente < title >, <h1>, <em> (oder <strong>) und <address>
gestellt werden. Werden in die Information Elemente wie <font> oder <i> eingemischt um ein gutes
Layout zu bekommen, wird es sehr schwierig, die Information bestmöglich an die Gegebenheiten des
Benutzers anzupassen.
Der Grund, warum am Besten der Browser entscheidet, wie er z.B. Titel und Überschriften präsentiert,
ist, weil er am meisten über die Vorlieben und die Umgebung des Benutzers weiss und daher die Layoutentscheidungen darauf aufbauen kann. Da der Autor der Informationen den Benutzer nicht kennt,
kann er natürlich keine Rücksicht darauf nehmen. Beispielsweise kann so ein Benutzer, der schlecht sieht,
eine grössere Schrift benutzen.
Leider haben Browserhersteller dieses Konzept entweder nicht verstanden oder beschlossen, es einfach zu
ignorieren und haben so Standards, die Präsentation und Inhalt zu trennen versuchen, einfach ignoriert.
Im Gegenteil - sie erfanden eigene Elemente und Attribute, die nur darauf abzielten, die Präsentation zu
11 http://www.w3c.org
KAPITEL 4. MARKUP LANGUAGES
48
bestimmen (wie <font>, <center>, <bgcolor> etc.). Zusätzlich wurden existierende semantische Tags
für Layoutinformationen missbraucht. So verwendete beispielsweise der HTML-Editor Netscape Gold
das Tag <ul>, um Text einzurücken und nicht nur für Listenelemente.
Dies ist aber nur ein Teil des Problems. Will man unterschiedlichste Informationen sehr präzise beschreiben, werden viele unterschiedliche Elemente benötigt, die es in HTML nicht gibt. Ein Chemiker braucht
z.B. viele Elemente, um chemische Formeln zu beschreiben. Ein Maschinenbauer kann damit aber rein
garnichts anfangen. Statt dessen würde er Elemente verwenden, die Maschinenteile beschreiben.
Ein weiteres Problem ist, dass HTML nur sehr wenige Regeln definiert, wie Elemente verschachtelt werden
dürfen. Es macht im Allgemeinen wenig Sinn, eine Überschrift <h2> innerhalb einer Überschrift <h1>
zu verwenden. HTML verbietet dies aber nicht.
1996 begann das W3C einen Standard zu entwickeln, der diese Probleme beseitigen soll. Die XMLWorking Group definierte drei Phasen:
1. Definition eines Standards für die Erstellung von Markup-Sprachen.
2. Entwicklung eines Standards, um Relationen in diesem Markup-Sprachen zu definieren.
3. Entwicklung eines Standards, um die Präsentation dieser Dokumente zu spezifizieren.
4.4.2
Aufbau von XML
XML ist eine vereinfachte Form von SGML, die deren Nachteile vermeiden will, die Vorteile jedoch
auszunutzen versucht. Die XML-Working Group sieht XML eher als “SGML light” als “HTML++”.
XML erlaubt die Definition eigener Markup-Sprachen und daher auch höchstmögliche Präzision, um
Informationen kodieren zu können. Dies erlaubt auch Programmen, die diese Informationen verarbeiten,
diese besser zu “verstehen”. Als Beispiel könnte ein Dokument dienen, das Kochrezepte enthält und einer
DTD entspricht, die es erlaubt, die verschiedenen Zutaten und Mengen zu definieren. Dieses Dokument
kann so von einem Programm verarbeitet werden, das aus den Zutaten im Kühlschrank alle möglichen
Gerichte heraussucht. Sind zusätzliche Informationen über die Kalorien oder die Preise der Zutaten
enthalten, können weitere Kriterien angewandt werden, was zu Mittag am Tisch stehen soll.
Dies ist nur möglich, wenn die Applikation die Bedeutung der Informationen wirklich “versteht”. Das
folgende Beispiel zeigt den Unterschied zwischen einer Markup-Sprache, die nur den Inhalt beschreibt
und einer, die es erlaubt, den Inhalt zu interpretieren.
In HTML könnte ein Eintrag einer Adressliste so geschrieben werden:
<p>
<strong>Christof Dallermassl</strong><br>
email:<a href="mailto:cdaller@iicm.edu">cdaller@iicm.edu</a><br>
<p>
Inffeldg. 16c<br>
8010 Graz<br>
Tel: +43-316/873-5636<br>
Tel: +43-316/873-5699<br>
</p>
</p>
Die gleiche Information in XML:
<person>
<name>Dallermassl Christof</name>
<email>cdaller@iicm.edu</email>
<address>
<street>Inffeldg. 16c</street>
<town>8010 Graz</town>
<tel note="office">+43-316/873-5636</tel>
<tel note="fax">+43-316/873-5699</tel>
</address>
</person>
Der Unterschied besteht nun darin, dass die XML-Beschreibung des Eintrags z.B. von einer Suchmaschine,
“verstanden” werden kann und somit die Suche nach einer Adresse einfacher und besser beantworten
KAPITEL 4. MARKUP LANGUAGES
49
kann, während sie bei der HTML-Version nur Anhand der Worte vermuten kann, dass es sich um eine
Adressbeschreibung handelt. Voraussetzung für das richtige Interpretieren ist allerdings das Kennen der
verwendeten XML-Elemente.
XML Syntax
Bevor hier weiter auf die Verwendung und Details von XML eingegangen wird, soll noch kurz die Syntax
erklärt werden.
Die Syntax von XML ist sehr ähnlich zu HTML und SGML, wobei es trotzdem kleine, aber feine Unterschiede gibt:
• Alle Elemente haben ein End-Tag. Das Weglassen von End-Tags aus Faulheit oder weil es sowieso
implizit geschlossen wird (<p> in SGML), ist in XML verboten.
• Elemente, die keinen Inhalt haben, können (müssen aber nicht) verkürzt geschrieben werden:
<img src=’’filename.jpg’’/> anstatt <img src=’’filename.jpg’’></img>. Man beachte den Schrägstrich
(’/’) vor der schliessenden Spitzklammer!
• Bei Element- und Attributnamen wird zwischen Gross- und Kleinschreibung unterschieden.
• Alle Elemente müssen richtig verschachtelt sein. HTML bzw. die Browser erlauben ja zum Teil
Konstrukte wie
<b><i>dieser Text ist fett und kursiv, aber falsch verschachtelt!</b></i>
• Attributwerte müssen immer zwischen Anführungsstrichen stehen. Elemente wie <img src=filename.jpg>
sind ungültig und werden vom XML-Parser nicht akzeptiert. Richtig wäre <img src=’’filename.jpg’’>.
• Element oder Attributnamen dürfen nicht mit “xml” beginnen, weder in Gross- noch in Kleinschreibung.
• Doppelpunkte sind in Elementnamen nur erlaubt, um Namensräume zu vergeben (siehe Abschnitt
Namespaces auf Seite 55).
• Elementnamen dürfen keine Leerzeichen enthalten. Zusätzlich dürfen sie nicht mit Ziffern beginnen.
Dafür sind Umlaute oder Zeichen aus anderen Alphabeten erlaubt (aber nicht sehr empfehlenswert).
XML Attribute
XML Attribute werden normalerweise verwendet, um XML-Elemente näher zu beschreiben oder Zusatzinformationen zu den Elementen zu liefern. Beim aus HTML bekannten Tag <img src=’’filename.jpg’’>
ist src ein Attribut zum <img>-Element und liefert die Zusatzinformation, welches Bild eingebunden
werden soll.
Folgendes Beispiel zeigt nicht nur den Gebrauch von Attributen, sondern auch das Dilemma, in dem
der Autor von XML-Dokumenten ist, da er sich entscheiden muss, ob eine gewisse Information eher als
eigenes XML-Element oder lieber als Attribute bei einem XML-Element stehen soll.
Gebrauch eines Attributes, um die Abteilung (department) einer Person anzugeben:
<person department="marketing">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Verwendung eines eigenen Elements für den gleichen Zweck:
<person>
<department>marketing</department>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
KAPITEL 4. MARKUP LANGUAGES
50
Es gibt keine fixen Regeln, wann Attribute und wann eigene Elemente verwendet werden sollen. Die
Erfahrung zeigt jedoch, dass Attribute eher vermieden werden sollen:
• Attribute können keine Mehrfach-Werte annehmen. Es ist jedoch durchaus erlaubt, mehrmals ein
Element zu verwenden (z.B. wenn eine Person mehreren Abteilungen zugeordnet ist.).
• Attribute sind nicht erweiterbar (für zukünftigen Gebrauch). Beispielsweise kann man das Element
<adresse> später durch weitere Elemente wie <strasse>, <ort>, . . . erweitern und somit genauer
beschreiben.
• Attribute können keine Strukturen beschreiben (wie Kind-Elemente es können).
• Attribut-Werte sind schwerer zu überprüfen (gegen eine DTD).
Manche Informationen sind trotzdem (jede Regel hat ihre Ausnahmen) gut (besser?) in Attributen
aufgehoben( z.B. eindeutige Identifikation von Elementen):
<?xml version="1.0"?>
<messages>
<note id="501">
bla, bla, bla,...
</note>
<note id="502">
und so weiter und so weiter....
</note>
</messages>
Entities
Da es nicht wirklich grossartige Unterschiede von XML-Entities zu SGML-Entities gibt, sei hier nur auf
Abschnitt 4.1.3 verwiesen.
Document Type Definition
Da es keinen einheitlichen Standard gibt, welche XML-Elemente existieren (das widerspräche ja dem Sinn
von XML), kann sich jeder seine eigene Markup Sprache selbst definieren. Eine Möglichkeit, dies zu tun,
ist das Erzeugen einer Document Type Definition (DTD).
Eine eigene Markup-Sprache zu definieren ist ziemlich einfach. Das folgende Beispiel zeigt ein XML
Dokument, das den Inhalt und den logischen Aufbau eines Buches beschreibt.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE book SYSTEM "book.dtd">
<book>
<info>
this is some info about this book
</info>
<date>
2000-10-31
</date>
<author>
<name>Christof Dallermassl</name>
<email>cdaller@iicm.edu</email>
</author>
<chapter name="the chapter heading">
<section name="Section one">
<image src="image1.jpg"/>
<para>some text abtout Ted Nelson .....</para>
<para>some info about XML .....</para>
</section>
<section name="Section two">
....
</section>
</chapter>
</book>
Die Deklaration (<?xml .... ?>) hält mehrere Attribute, die generell ein XML-Dokument beschreiben. Es
soll nicht näher auf einzelne Details eingegangen werden, da dies den Rahmen sprengen würde. Trotzdem
KAPITEL 4. MARKUP LANGUAGES
51
ein paar Anmerkungen: Das encoding Attribut gibt an, mit welchem Zeichensatz das XML-Dokument
erstellt worden ist. Wird hier z.B. ISO-8859-1 verwendet, können auch Umlaute verwendet werden. Ist
der Wert des Attributes standalone ’no’, muss der Parser weitere XML-Dokumente (z.B. eine DTD)
laden, um ein gültiges XML-Dokument zu erhalten (bzw. es kann auch eine DTD in der <!DOCTYPE>Instruktion deklariert werden).
Die <!DOCTYPE>-Instruktion bezeichnet nun den Typ des Dokuments. Das Schlüsselwort SYSTEM
bedeutet, dass die DTD nur für die private Nutzung bestimmt ist. Im Gegensatz zu PUBLIC, bei dem die
DTD für eine weitverbreitete Nutzung gedacht ist.
Welche Elemente nun in der XML-Datei vorkommen dürfen, bestimmt die zugehörige Document Type
Definition. Normaler- und sinnvollerweise wird diese in einer externen Datei definiert (hier book.dtd),
es ist aber auch möglich, die DTD direkt in der XML-Datei anzugeben.
<?xml version="1.0"?>
<!ELEMENT book
(info, author, chapter+, date?)>
<!ELEMENT author (name, email?)>
<!ELEMENT chapter (section+, para*)>
<!ELEMENT section (para+, image*)>
<!ELEMENT image
(EMPTY)>
<!ELEMENT info
(#PCDATA)>
<!ELEMENT date
(#PCDATA)>
<!ELEMENT name
(#PCDATA)>
<!ELEMENT email
(#PCDATA)>
<!ELEMENT para
(#PCDATA)>
<![ IGNORE [
dieser Teil wird ignoriert!
]]>
<!ATTLIST chapter
<!ATTLIST section
<!ATTLIST image
name CDATA #IMPLIED>
name CDATA #IMPLIED>
src CDATA #REQUIRED>
<!ELEMENT name content> definiert, wie das Markup heisst (name) und welche Inhalte (content) es
haben darf. Das angehängte ’+’ bedeutet ’ein- oder mehrmal’, das ’?’ heisst ’null- oder einmal’ und ’*’
sagt ’null- oder mehrmal’. Ist kein Zeichen angegeben, darf das Element genau einmal vorkommen.
#PCDATA steht für normale Buchstaben (Parsed Character Data), die vom XML-Parser geparsed werden
(im Gegenteil zu #CDATA, die nicht geparsed werden).
Die Deklaration der gültigen/notwendigen Attribute ist folgendermassen:
<!ATTLIST element-name attribute-name attribute-type default-value>
wobei der Attributtyp #IMPLIED angibt, dass das Argument auch weggelassen werden kann (im Gegenteil
zu #REQUIRED).
Da hier die genaue Beschreibung aller möglichen Variationen den Rahmen sprengen würde, sei hier auf
die Webseite von xml10112 verwiesen, die mehr Einzelheiten auflistet.
Ist es unbedingt nötig, eine DTD für ein XML-Dokument zu schreiben? Nein, nicht unbedingt, aber
es ist sehr empfehlenswert, da es ansonsten nicht möglich ist, die high-level Syntax bzw. Semantik des
Dokuments auf seine Richtigkeit zu überprüfen. Die low-level Syntax wird ja durch die XML-Regeln
definiert, aber welche Elemente wie verschachtelt sein können und welche Attribut(werte) sie enthalten
dürfen, steht nur in der DTD (Unterschied zwischen valid und wellformed ). Für einen ersten Test ist es
allerdings nicht notwendig, eine DTD zu schreiben.
Schema Definitionen
Traditionellerweise werden XML-Sprachen mittels DTDs (siehe Abschnitt Document Type Definition auf
Seite 50) definiert. Diese haben aber einige Nachteile: bestimmte syntaktische Beschränkungen sind mit
DTDs nicht möglich, die Anzahl der Datentypen ist sehr beschränkt, die Syntax folgt eigenen Regeln und
DTDs unterstützen keine Namespaces (siehe Abschnitt Namespaces auf Seite 55).
12 http://www.xml101.com/dtd/
KAPITEL 4. MARKUP LANGUAGES
52
Schemas13 (oder Schemata) sind als Ersatz für DTDs gedacht und sind selbst im XML-Format geschrieben. Das erleichtert die Implementation von Parsern. Die grossen Vorteile von Schemas sind, dass sie
viele verschiedene Datentypen unterstützen und es möglich ist, neue Datentypen zu definieren und ein
XML-Dokument auch genauestens zu überprüfen, ob diese Richtlinien auch eingehalten wurden.
Dies ist besonders für Dokumente wichtig, die sehr daten-orientiert sind, da es hier besonders auf eine
genaue Überprüfung der Datentypen ankommt. Folgendes Beispiel zeigt den Unterschied zwischen dem
Daten-orientierten und dem Dokument-orientierten Ansatz:
Daten-orientiert
<invoice>
<orderDate>1999-01-21</orderDate>
<shipDate>1999-01-25</shipDate>
<billingAddress>
<name>Ashok Malhotra</name>
<street>123 IBM Ave.</street>
<city>Hawthorne</city>
<state>NY</state>
<zip>10532-0000</zip>
</billingAddress>
<voice>555-1234</voice>
<fax>555-4321</fax>
</invoice>
Dokument-orientiert
<memo importance=’high’
date=’2001-10-23’>
<from>Christof Dallermassl</from>
<to>Hermann Maurer</to>
<subject>Latest draft</subject>
<body>
We need to discuss the latest
draft <important>immediately</important>.
Either email me at <email>
cdaller@iicm.edu</email>
or call <phone>873-5636</phone>
</body>
</memo>
Das ’Daten-orientierte’ Dokument ist mehr oder weniger eine Datenbank, die verschiedenste Elemente
enthält. Der grosse Vorteil eines XML-Dokumentes gegenüber einer Datenbank ist jedoch, dass das Dateiformat von vielen Applikationen gelesen werden kann und nicht auf einen Hersteller (den der Datenbank)
oder eine Plattform beschränkt ist und somit leicht weitergegeben werden kann.
Natürlich ist auch bei dem ’Dokument-orienten’ Dokument eine strenge Typen- oder Werteprüfung nützlich (z.B. bei der Telefonnummer oder dem Datum). Die Frage ist nur, ob sich der Aufwand, ein solches
Schema zu erstellen, immer rechnet. Vor allem, da im Moment kaum Tools, die die Erstellung eines
Schemas unterstützen, erhältlich sind.
Dies hängt auch damit zusammen, dass die Schema-Spezifikation noch nicht abgeschlossen ist (Ende des
Reviews war der 15. Oktober 2000) und es daher noch keine gültigen Richtlinien, an die man sich halten
könnte, gibt. Seit dem 2. Mai 2001 ist die Schema-Spezifikation eine Recommendation und langsam
stehen Werkzeuge zur Verfügung.
Folgendes Beispiel ist ein Versuch, ein Schema für das Buch-Beispiel in Abschnitt Document Type Definition auf Seite 50 zu finden:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="book" type="bookType"/>
<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:element name="info"
type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="chapter" type="chapterType" minOccurs="1"/>
<xsd:element name="date"
type="xsd:date"
minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="chapterType">
<xsd:sequence>
<xsd:element name="section" type="sectionType" minOccurs="1"/>
<xsd:element name="para"
type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="sectionType">
<xsd:sequence>
<xsd:element name="para" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
13 http://www.w3c.org/XML/Schema
KAPITEL 4. MARKUP LANGUAGES
53
Da dieses Beispiel nur die Möglichkeiten ausnutzt, die eine DTD bietet, verbergen sich die Vorteile von
Schemas.
Das Beispiel aus dem Schema-Tutorial des W3C14 ist deutlich komplexer, zeigt dafür ein paar Möglichkeiten der Schemadeklaration.
<?xml version="1.0"?>
<purchaseOrder orderDate="1999-10-20">
<shipTo country="US">
<name>Alice Smith</name>
<street>123 Maple Street</street>
<city>Mill Valley</city>
<state>CA</state>
<zip>90952</zip>
</shipTo>
<billTo country="US">
<name>Robert Smith</name>
<street>8 Oak Avenue</street>
<city>Old Town</city>
<state>PA</state>
<zip>95819</zip>
</billTo>
<comment>Hurry, my lawn is going wild!</comment>
<items>
<item partNum="872-AA">
<productName>Lawnmower</productName>
<quantity>1</quantity>
<USPrice>148.95</USPrice>
<comment>Confirm this is electric</comment>
</item>
<item partNum="926-AA">
<productName>Baby Monitor</productName>
<quantity>1</quantity>
<USPrice>39.98</USPrice>
<shipDate>1999-05-21</shipDate>
</item>
</items>
</purchaseOrder>
Die zugehörige Schemadeklaration:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>
Purchase order schema for Example.com.
Copyright 2000 Example.com. All rights reserved.
</xsd:documentation>
</xsd:annotation>
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
<xsd:element name="comment" type="xsd:string"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="items" type="Items"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
<xsd:complexType name="USAddress">
<xsd:sequence>
<xsd:element name="name"
type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city"
type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip"
type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN"
use="fixed" value="US"/>
</xsd:complexType>
<xsd:complexType name="Items">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
14 http://www.w3.org/TR/xmlschema-0/
KAPITEL 4. MARKUP LANGUAGES
54
<xsd:sequence>
<xsd:element name="productName" type="xsd:string"/>
<xsd:element name="quantity">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="USPrice" type="xsd:decimal"/>
<xsd:element ref="comment"
minOccurs="0"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- Stock Keeping Unit, a code for identifying products -->
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
/xsd:schema>
Dieses Beispiel soll nicht dazu dienen, alle Features von XML-Schemas zu erklären, sondern soll nur einen
kurzen Überblick der Möglichkeiten aufzeigen:
• Die Anzahl und Reihenfolge von Kind-Elementen kann genauer begrenzt werden (minOccurs="0").
• Es gibt vordefinierte Datentypen: xsd:string, xsd:date, xsd:positiveInteger, boolean, recurringDay,
etc. (die komplette Liste ist unter http://www.w3.org/TR/xmlschema-0/#CreatDt zu finden)
• Neue Datentypen können jederzeit definiert werden (type="SKU").
• Gültige Attributwerte können sehr genau (mit Regular Expressions (http://www.w3.org/TR/xmlschema-0/
#regexAppendix) eingegrenzt werden
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
• usw.
Wie man sieht, bieten Schemas deutlich mehr Möglichkeiten als DTDs, fallen dafür aber auch deutlich
komplexer aus.
Schemas werden DTDs auch nicht überall ersetzen, sondern neue Definitionen ermöglichen, die mit DTDs
bisher überhaupt nicht machbar waren. Vor allem ’daten-orientierte’ Dokumente brauchen die Vielfalt
der Schemadeklarationen. Und überall, wo Namespaces verwendet werden müssen, kommt man um
Schemas nicht herum, da DTDs mit Namensräumen nicht umgehen können.
Processing Instructions
In HTML werden oft Kommentare dazu missbraucht, eigene Erweiterungen einzuschmuggeln (z.B. serverside includes, Browserspezifische Script-Programme, Datenbankabfragen, etc.). Der Vorteil, Kommentare
für diesen Zweck zu benutzen, ist zwar, dass Browser diese Kommandos einfach ignorieren, wenn sie es
nicht verstehen. Der Nachteil an dieser Methode ist, wenn alle Kommentare aus dem Dokument entfernt
werden, entsteht ein Dokument mit neuem Inhalt (oder auch keinem Inhalt), was ja eigentlich nicht Sinn
und Zweck von Kommentaren sein kann.
XML bietet für solche Zwecke Processing Instructions (PIs) an. PIs stellen einen Mechanismus zur
Verfügung, der es erlaubt, Informationen in ein Dokument einzubetten, die nur für Applikationen und
nicht für den XML-Parser bestimmt sind.
Eine Processing Instructions steht zwischen <? und ?> und muss als erstes Wort eine eindeutige Identifikation haben (normalerweise der Name der Applikation oder der Name einer XML-Notation der DTD,
die auf die Applikation verweist). IBM verwendet z.B. für die Bean Markup Language den Namen bmlpi:
KAPITEL 4. MARKUP LANGUAGES
55
z.B. <?bmlpi register demos.calculator.EventSourceText2Int?>
Alles, was hinter dem Namen steht, besteht aus Daten, die für Applikationen gedacht sind, die Daten
mit diesem Identifier (bmlpi) interpretieren wollen. Der XML-Parser übergibt die Processing Instruction
uninterpretiert an jede Applikation.
Wenn nun eine Applikation dieses XML-Dokument parst und auf diese Processing Instruction stösst,
kann sie (muss aber nicht) die Argumente der PI auswerten und dementsprechend reagieren. In obigem
Beispiel wird wahrscheinlich die Java-Klasse demos.calculator.EventSourceText2Int registriert.
Es ist aber nicht so, dass ein XML-Parser automatisch eine Applikation mit der gegebenen Id sucht und
diese startet! Ob eine PI ausgewertet wird, hängt immer von der Applikation ab, die das Dokument parst.
Die Daten, die eine PI enthält, können beliebiger Natur sein (Variablenwerte wie unten, Kommandos wie
oben, Zusatzinformationen, . . . ).
XML selbst verwendet auch solche Processing Instructions, darum sind auch Identifikationsnamen, die
mit xml beginnen, verboten. Als Beispiel dazu kann die Style-File Deklaration von XML gelten:
<?xml−stylesheet type=’’text/xsl’’href=’’stylefile. xsl ’ ’?>
Diese PI wird beispielsweise vom XSL-Prozessor ausgewertet und der Name des Style-Files herausgelesen.
Alle anderen Programme, die dieses XML-Dokument parsen, die aber nichts mit XSL zu tun haben,
können diese PI einfach ignorieren.
Ein weiteres Beispiel ist das Einbetten von serverseitigem Code (Kapitel 8), z.B. PHP-Code (Abschnitt 8.1.8):
hier wird durch die Identifikation php der Applikation, die das Dokument verarbeitet (in diesem Fall dem
PHP-Interpreter) mitgeteilt, dass PHP-code folgt. Andere Applikationen können diese Processing Instruction ignorieren.
<?php
$db_host
$db_user
$db_pass
$db_name
$my_url
?>
=
=
=
=
=
"was.weiss.ich.net";
"username";
"meinpasswort";
"meinedb";
"http://dies.ist.meine.url";
Processing Instructions können überall in einem XML-Dokument stehen (ausgenommen in einem Tag
oder einem CDATA-Abschnitt).
Namespaces
Namensräume (namespaces) sind eine Neuerung der XML-Spezifikation. Die Benutzung von Namensräumen ist in XML nicht notwendig, oft aber sehr nützlich. Namensräume sind eingeführt worden, um
die Eindeutigkeit unter XML-Elementen sicherzustellen. Ein Element <book> wird sicher von vielen
XML-Autoren verwendet werden. Welche Elemente oder Attribute aber bei einem <book> vorkommen
dürfen, wird sich aber von Autor zu Autor unterscheiden. Sobald verschiedene Deklarationen von <book>
zusammentreffen, kollidieren sie und das korrekte Zusammenführen von Dokumenten wäre unmöglich.
Namensräume helfen durch die Bereichserweiterung jedes Tags, Elementnamen-Kollisionen zu vermeiden.
Namensräume werden mit dem Attribut xmlns:namespace_id deklariert:
<OReilly:Books xmlns:OReilly="http://www.oreilly.com/">
oder
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Falls kein Name (namespace_id) nach dem xmlns-Präfix angegeben wird, wird der Namensraum als
Default-Namensraum eingestuft und für alle Elemente innerhalb des definierenden Elements verwendet,
die kein eigenes Namensraum-Präfix verwenden.
mit explizitem Namespace
<OReilly:Books
xmlns:OReilly="http://www.oreilly.com/">
<OReilly:Book>
was weiss ich was fuer ein buch ....
</OReilly:Book>
</OReilly:Books>
mit Default-Namespace
<Books xmlns="http://www.oreilly.com/">
<Book>
was weiss ich was fuer ein buch ....
</Book>
</Books>
KAPITEL 4. MARKUP LANGUAGES
56
Ein leerer String als Default-Namespace verhindert, dass ein Default-Namespace innerhalb eines spezifischen Elements gesetzt ist.
4.4.3
Beispiele Vorhandener XML-Definitionen
Die Vorteile von XML als universelles Austauschformat kommen natürlich erst zum Tragen, wenn es klar
definierte Element-Sätze gibt, die von mehreren Applikationen verstanden werden. Die Liste ist natürlich
weit entfernt, vollständig zu sein, versucht aber die Möglichkeiten und das breite Spektrum von XML zu
verdeutlichen:
• eXtensible HyperText Markup Language (XHTML): ist HTML in strikter XML-Syntax geschrieben
(Gross/Klein Schreibung, Verschachtelung, etc.). Der Hauptzweck von XHTML ist die leichtere
Überprüfbarkeit auf gültiges HTML. Die generellen Browserprobleme (verschiedene Interpretation
von HTML-Tags) werden damit wohl nicht gelöst werden.
• Scalable Vector Graphics (SVG): siehe Abschnitt 6.7.4
• Die OpenGIS Geographic Markup Language (GML): Geographische Daten können so applikationsunabhängig gespeichert werden (siehe http://www.opengis.org) und relativ einfach (z.B. mit
Hilfe von XSLT) in SVG umgewandelt und dargestellt werden.
Als Beispiel dient die (sehr kurze) Definition des Flusses Cam (Cambridge):
<River>
<gml:description>The river that runs through Cambridge.</gml:description>
<gml:name>Cam</gml:name>
<gml:centerLineOf>
<gml:LineString srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
<gml:coord><gml:X>0</gml:X><gml:Y>50</gml:Y></gml:coord>
<gml:coord><gml:X>70</gml:X><gml:Y>60</gml:Y></gml:coord>
<gml:coord><gml:X>100</gml:X><gml:Y>50</gml:Y></gml:coord>
</gml:LineString>
</gml:centerLineOf>
</River>
• Docbook bietet eine Möglichkeit, Bücher in XML/SGML zu schreiben. Diese ausgabeformatunabhängige Textbeschreibung erlaubt es relativ einfach, den Text in verschiedene Formate zu konvertieren (HTML, PDF). Details sind unter http://www.oasis-open.org/committees/docbook/
zu finden. Eine online-Version des O’Reilly Buches DocBook: The Definitive Guide ist unter
http://www.docbook.org zu finden. Die Homepage der Entwickler steht unter http://docbook.
sourceforge.net.
Ein einfaches Beispiel (aus dem O’Reilly Buch entnommen) eines Artikels ist z.B.:
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<article>
<artheader>
<title>My Article</title>
<author><honorific>Dr</honorific><firstname>Emilio</firstname>
<surname>Lizardo</surname></author>
</artheader>
<para> ... </para>
<sect1><title>On the Possibility of Going Home</title>
<para> ... </para>
</sect1>
<bibliography> ... </bibliography>
</article>
Das docbook-Projekt hat auch eine DTD für die Erstellung von Webseiten namens website herausgebracht. Auf den Downloadseiten von Docbook bei Sourceforge15 ist dieser Teil zu finden. Ein Beispiel ist unter http://docbook.sourceforge.net/release/website/example/layout.html zu
finden.
• Chemical Markup Language (CML) erlaubt es, chemische Elemente zu beschreiben. Viele Beispiele
und Details sind unter http://www.xml-cml.org/ zu finden. Auch dieses XML-Format lässt sich
einfach mit Hilfe von SVG visualisieren.
Das Beispiel (von http://www.adobe.com/svg/demos/devtrack/chemical.html) zeigt ein Karotinmolekül bzw. eine (SVG) Visualisierung eines Koffeinmoleküls:
15 http://sourceforge.net/projects/docbook/
KAPITEL 4. MARKUP LANGUAGES
57
<?xml version="1.0"?>
<document>
<cml title="carotine" id="cml_carotine_karne"
xmlns="x-schema:cml_schema_ie_02.xml">
<molecule title="carotine" id="mol_carotine_karne">
<atomArray>
<atom id="carotine_karne_a_1">
<float builtin="x2" units="A">17.3280</float>
<float builtin="y2" units="A">2.0032</float>
<string builtin="elementType">C</string>
</atom>
... many atoms deleted, for space ...
</atomArray>
<bondArray>
<bond id="carotine_karne_b_1">
<string builtin="atomRef">carotine_karne_a_1</string>
<string builtin="atomRef">carotine_karne_a_2</string>
<string builtin="order" convention="MDL">2</string>
</bond>
... many bonds deleted, for space ...
</bondArray>
</molecule>
</cml>
</document>
• Mathematical Markup Language (MathML): Details sind unter http://www.w3.org/Math/ zu finden. Die Unterstützung von MathML ist browsermässig ganz gut.
Pb
Als Beispiel (von http://www.zvon.org/HowTo/Output/index.html) dient folgende Formel: x=1 f (x)
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<sum/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
</math>
• Synchronized Multimedia Language (SMIL): siehe Abschnitt 7.5
• Voice Markup Language (VoiceXML): Mit VoiceXML kann man Dialogsysteme aufbauen, die sowohl
Sprachein- als auch -ausgabe unterstützen. Die Spezifikationen und Beispiele sind unter http:
//www.w3.org/Voice/ zu finden. Folgendes Beispiel lässt den Benutzer eine Stadt aussuchen:
<field name="city">
<prompt>Where do you want to travel to?</prompt>
<option>Edinburgh</option>
<option>New York</option>
<option>London</option>
<option>Paris</option>
<option>Stockholm</option>
</field>
• Election Markup Language (EML): ein Versuch, strukturierte Wahldaten zwischen verschiedener
Soft-, Hardware und Service-Providern austauschen zu können (siehe http://xml.coverpages.
org/eml.html).
• und viele weitere. . .
Eine lange Liste von XML-Anwendungen kann auf den Webseiten des W3C unter http://www.w3.org/
TR/ oder bei xml.com16 unter http://www.xml.com/pub/q/stdlist eingesehen werden.
16 http://www.xml.com
KAPITEL 4. MARKUP LANGUAGES
4.4.4
58
Extensible Stylesheet Language (XSL)
Die Spezifikation der erweiterten Stylesheet-Sprache XSL17 ist einer der kompliziertesten Teile der XMLSpezifikation und erst seit dem 15.10.2001 eine Recommendation.
Da bei XML Tags keine bestimmte Bedeutung haben (das Element <table> könnte sowohl eine HTMLTabelle als auch ein Tisch sein), gibt es keinen Standardweg, ein XML-Dokument anzuzeigen. Es muss
also ein Weg gefunden werden zu beschreiben, wie ein solches Dokument präsentiert werden soll. Einer
dieser Wege ist CSS, aber XSL sollte der bevorzugte Mechanismus für XML sein.
XSL besteht aus zwei Teilen:
• XSLT (XSL Transformations): eine Sprache, um XML-Dokumente zu transformieren.
• XSL-FO (Formatting Objects): eine Methode, um XML-Dokumente zu formatieren. Dieser Teil
der Spezifikation ist noch stark im Wandel begriffen. Daher auch nur eine ganz kurze Beschreibung
unter Abschnitt Formatting Objects (FO) auf Seite 62.
XSLT ist eine Sprache, die ein XML-Dokument in ein anderes (XML-)Dokument (also evtl. auch in ein
HTML-Dokument) transformiert, bestimmte Elemente sortiert und filtert und die die Daten danach noch
formatiert (z.B. negative Zahlen in Rot).
XML-Dokumente können aus verschiedenen Elementen (nodes) bestehen:
• der Dokumentenwurzel (root).
• Elementen
• Text
• Attributen
• Namensräumen
• Processing Instructions
• Kommentaren
Diese Knoten sind intern als Baum organisiert und können auch über diese Baumstruktur angesprochen
werden. Die XSL-Transformationen arbeiten als Eingabe mit einem solchen Baum und das Resultat ist
wiederum ein solcher Baum.
Die Transformationen drehen sich in erster Linie um so genannte Template Rules. Diese Schablonen
enthalten Anweisungen für den XSLT-Parser, die dieser mit XML-Elementen auffüllt und kombiniert.
Gewöhnlich passen die Regeln nur zu bestimmten Elementen (Knoten im Baum).
Als Beispiel soll hier ein XML-Dokument, das eine Adressliste enthält, mittels XSLT in HTML (auch
eine XML-Art) umgewandelt werden:
<?xml version="1.0"?>
<addresslist>
<person>
<name>Dallermassl Christof</name>
<email>cdaller@iicm.edu</email>
<address>
<street>Inffeldg. 16c</street>
<town>8010 Graz</town>
<tel note="office">+43-316/873-5636</tel>
<tel note="fax">+43-316/873-5699</tel>
</address>
<address>
<street>IrgendwoInGrazStr. 43</street>
<town>8010 Graz</town>
<tel>+43-316/123456</tel>
</address>
</person>
17 http://www.w3.org/TR/xsl
KAPITEL 4. MARKUP LANGUAGES
59
<person>
<name>Ablinger Franz</name>
<address>
<street>Wasweissichwelchestr. 49</street>
<town>4840 Igendwo_in_OOe</town>
<tel>+43-7672/987654</tel>
</address>
</person>
</addresslist>
Das zugehörige XSL-File muss den Namensraum xsl verwenden und ist ebenfalls ein gültiges XML-File:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
Als erstes muss natürlich darauf geachtet werden, dass das Ergebnis ein gültiges HTML-Format besitzt:
<xsl:template match="/">
<html>
<head>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
Diese Template-Regel trifft nur auf das root-Element (match="/") zu. XSLT-Kommandos sind immer an
dem Namensraum xsl zu erkennen. Alle anderen Elemente werden ohne Änderung in den Ausgabebaum
bzw. das Ausgabedokument übernommen. In diesem Fall werden die Elemente <html>, <head> und
<body> samt ihren zugehörigen Ende-Tags unverändert ausgegeben. Die Anweisung <xsl:apply−templates/>
versucht nun, weitere Templates auf den Eingabebaum anzuwenden:
<xsl:template match="addresslist">
<h1>Adressenliste</h1>
<xsl:apply-templates/>
</xsl:template>
Das Template zum XML-Element <addresslist> schreibt eine Überschrift und weist den Parser an, weitere
Templates anzuwenden.
Das Template für <person> geht nun endlich auf die Daten los:
<xsl:template match="person">
<p>
<strong>
<xsl:value-of select="name"/>
</strong><br/>
<xsl:apply-templates select="email"/>
<xsl:apply-templates select="address"/>
</p>
<hr/>
</xsl:template>
<xsl:value−of select=’’name’’> selektiert den Wert (den Text) des Sub-Elements <name> und schreibt
ihn innerhalb der <strong>-Tags in die Ausgabe. Nach einem Zeilenumbruch (<br> würde gegen die
Syntaxregeln von XML verstossen, darum wird <br/> verwendet), werden nun weitere Template Regeln
angestossen: für <email> und <address>. Existiert kein Kind-<email>-Element, wird kein Template
angewandt und auch kein Ausgabecode produziert.
Die weiteren Templates sind hoffentlich selbsterklärend und folgen den obigen Mustern:
<xsl:template match="email">
email:
<a>
<xsl:attribute name="href">
mailto:<xsl:value-of select="."/>
</xsl:attribute>
<xsl:value-of select="."/>
</a>
<br/>
KAPITEL 4. MARKUP LANGUAGES
60
</xsl:template>
<xsl:template match="address">
<p>
<xsl:value-of select="street"/><br/>
<xsl:value-of select="town"/><br/>
<xsl:apply-templates select="tel"/>
</p>
</xsl:template>
<xsl:template match="tel">
Tel: <xsl:value-of select="."/><br/>
</xsl:template>
Abschliessend muss natürlich noch das <stylesheet>-Element abgeschlossen werden:
</xsl:stylesheet>
Als XSLT-Prozessor wurde Xalan vom Apache-Projekt18 verwendet. Nach dem Aufruf von
# je nach Ort von Xalan, XALAN_HOME zu setzen:
setenv CLASSPATH $XALAN_HOME/xerces.jar:$XALAN_HOME/xalan.jar
java org.apache.xalan.xslt.Process -in addresslist.xml \
-xsl addresslist.xsl -out addresslist.html
entsteht das HTML-Dokument addresslist.html:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Adressenliste</h1>
<p>
<strong>Christof Dallermassl</strong><br>
email:<a href="mailto:cdaller@iicm.edu">cdaller@iicm.edu</a><br>
<p>
Inffeldg. 16c<br>
8010 Graz<br>
Tel: +43-316/873-5636<br>
Tel: +43-316/873-5699<br>
</p>
<p>
IrgendwoInGrazStr. 43<br>
8010 Graz<br>
Tel: +43-316/123456<br>
</p>
</p>
<hr>
<p>
<strong>Franz Ablinger</strong><br>
<p>
Wasweissichwelchestr. 49<br>
4840 Igendwo_in_OOe<br>
Tel: +43-7672/987654<br>
</p>
</p>
<hr>
</body>
</html>
Der HTML-Code des Dokuments wurde der leichteren Lesbarkeit wegen etwas umformatiert (Einrückung,
neue Zeilen, ...), ist aber sonst unverändert und vor allem ein gültiger HTML Code, der von allen Browsern
angezeigt werden kann.
Die hier verwendeten Transformationen sind natürlich nur ein kleiner Teil der Features, den XSLT bietet.
Ein Feature, das die erweiterten Möglichkeiten zeigt und gut zum Beispiel passt, ist z.B. das Umstellen
der Reihung (in sortierter Reihenfolge). Der Befehlt < xsl:sort > innerhalb <xsl:apply−templates> bewirkt
eine Sortierung der Adressliste:
<xsl:template match="addresslist">
<h1>Adressenliste</h1>
<xsl:apply-templates>
<xsl:sort select="name"/>
</xsl:apply-templates>
</xsl:template>
18 http://xml.apache.org/xalan
KAPITEL 4. MARKUP LANGUAGES
61
Ein XSL-Stylesheet wird mit mit folgender Processing Instruction in ein XML-Dokument eingebunden:
<?xml-stylesheet type="text/xsl" href="mystyle.xsl"?>
Mustervergleich (XPath)
Der mächtige Mustervergleich (XPath19 ) von XSL wird in obigem Beispiel nur sehr wenig ausgenutzt. Er
wird u.a. verwendet, um im <xsl:template>-Element mit dem match-Attribute einen Knoten im XMLDokumenten-Baum auszuwählen. Das verwendete Muster passt auf ein Element, das eine Beziehung
zum aktuellen Knoten besitzt. <xsl:template match=’’addresslist/person/email’’> addressiert z.B. das
<email>-Element ausgehend vom root-Knoten.
<xsl:template match="person/email">
stimmt nur dem Element <email> überein, das ein Eltern-Element <person> besitzt.
<xsl:template match="person//tel">
passt jedoch zu jedem <tel>-Element, das einen Vorgänger (muss kein direkter sein) <person> hat. Bei
obigem Beispiel würde dieser Ausdruck auf alle <tel>-Elemente auch innerhalb der Adresse zutreffen.
<xsl:template match="person/address/*">
passt auf alle Elemente innerhalb der Adresse einer Person.
<xsl:template match="street | town">
passt auf <street> oder <town>.
<xsl:template match="person/comment()">
<xsl:template match="person/pi()">
selektiert alle Kommentare bzw. Processing Instructions innerhalb des <person>-Elements.
Aber nicht nur Elemente, auch Attribute können Ziele sein. Es kann z.B. auch nur diejenigen Telefonnummern selektiert werden, die einen (bestimmten) Attributwert besitzt:
<xsl:template match="tel[@note]">
In diesem Fall werden nur <tel>-Elemente ausgewählt, die ein note Attribut besitzen.
<xsl:template match="tel[@note=’fax’]">
wählt nur Telefoneinträge mit note-Attribut und dem Wert “fax” aus.
Der Wert von Attributen wird mit Hilfe des Klammeraffen ’@’ adressiert. Im Beispiel wird das Attribut
note mittels @note selektiert und in den HTML-Code in Klammern an die Telefonnummer angefügt.
<xsl:template match="tel">
Tel: <xsl:value-of select="."/>(<xsl:value-of select="@note"/>)<br/>
</xsl:template>
Hier alle Elemente von XSL zu erklären, würde den Rahmen des Skriptes sprengen, so seien ein paar der
weiteren nur noch kurz erwähnt:
• die Fähigkeit, Zähler mitlaufen zu lassen (um z.B. alle Adresseinträge zu numerieren)
• Stringmanipulationen (Zusammenhängen, Ersetzen, ...)
• Erzeugen von Kommentaren oder Processing Instructions (<xsl:comment> und < xsl:pi >)
• etc...
19 http://www.w3.org/TR/xpath.html
KAPITEL 4. MARKUP LANGUAGES
62
Formatting Objects (FO)
Die zweite Hälfte der eXtensible Style Language (XSL) ist die Formatting Language. Diese XMLApplikation wird benutzt, um zu beschreiben, wie der Inhalt gerendert wird, wenn er von einem Leser angezeigt wird. Die Spezifikation ist seit 15.10.2001 eine Recommendation. Auch gibt es erst eine
sehr kleine Anzahl von Applikationen, die mit Formatting Objects umgehen können. Darum wird die
Beschreibung hier sehr knapp ausfallen.
FOs bieten ein besseres Layout-Model als CSS, versuchen aber z.T. kompatibel zu CSS zu sein (Eigenschaftsnamen, etc.).
FOs basieren auf rechteckigen Boxen und Seiten, die nacheinander / nebeneinander gereiht werden
können. Sie erlauben u.a. Text in verschiedenen Formen fliessen zu lassen (von rechts nach links).
Mehr Details findet man im Kapitel der XML-Bibel20 .
Das FOP-Projekt von Apache21 ist ein freier Formatting Object Processor, der im Moment die Ausgabe in
PDF, MIF, PCL, Postscript, Text, auf einen Drucker und auf den Bildschirm unterstützt. Die verwendete
Version von FOP ist 0.20.4.
Folgendes ist ein einfaches “Hello World” FO-Dokument, das nur aus der Deklaration des Seitenlayouts
und vier Blöcken besteht:
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
??<fo:layout-master-set>
<!-- layout for the first page -->
<fo:simple-page-master master-name="my_page"
page-height="10cm"
page-width="15cm"
margin-top="1cm"
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
<fo:region-body margin-top="3cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<!-- actual layout -->
<fo:page-sequence master-reference="my_page">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello, world!</fo:block>
<fo:block font-size="12pt"
font-family="sans-serif"
line-height="15pt"
space-after.optimum="3pt"
text-align="start">
This is the second block in the hello world page.
It has a vertical space afterwards.
</fo:block>
<fo:block>And now there comes the third block! Pay attention!</fo:block>
<fo:block>
And the fourth and last block in the little Hello World Formatting Objects Example.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Es kann durch einfaches Aufrufen des Shell-Skripts (Unix) bzw. des Batch-Files (Windows) eine PDFDatei erzeugt werden:
unix:
fop.sh hello_world.fo -pdf hello_world.pdf
windows:
fop hello_world.fo -pdf hello_world.pdf
Eine gute und ausführliche Einführung in XSL-Formatting Objects kann unter http://www.dpawson.
co.uk/xsl/sect3/bk/index.html gefunden werden.
20 http://www.ibiblio.org/xml/books/bible/updates/15.html
21 http://xml.apache.org/fop/
KAPITEL 4. MARKUP LANGUAGES
63
Hello, world!
This is the second block in the hello world page. It has a vertical
space afterwards.
And now there comes the third block! Pay attention!
And the fourth and last block in the little Hello World Formatting
Objects Example.
Abbildung 4.1: Das Ergebnis des Formatting Object Processors
Ein nettes Projekt, das ausgehend von HTML-Dokumenten von Word 2000 FO-Dokumente erstellt, ist
WH2FO22 . Auf der Webseite sind auch einige schöne Beispiele, die die Mächtigkeit von Formatting
Objects zeigen.
XML/XSL in the real-world
Im Moment gibt es mehrere Möglichkeiten, XML in Kombination mit XSL zu nutzen:
• Server seitig: Der Server transformiert das XML-Dokument mit Hilfe einer XSL-Datei zu einem
HTML-Dokument (evtl. mit CSS). Der User Agent (Browser) stellt dieses HTML Dokument wie
gewohnt dar.
• Client seitig mit XSL: Der Server sendet ein XML-Dokument mit dem dazugehörigen XSL Dokument an den User Agent. Dieser transformiert wiederum das Ergebnis und stellt es dar. Da im
Moment nur der Internet Explorer eine XSL-Transformation unterstützt, beschränkt sich dieser
Weg auf Microsoft-Benutzer.
• Client seitig mit CSS: Der Server liefert ein XML Dokument und ein dazugehöriges Cascaded
Style Sheet File aus. Der Browser benutzt diese Information, um die XML Daten darzustellen.
Diese Methode wird zumindest vom IE, Opera und Mozilla unterstützt. Ein Beispiel ist unter
http://www.w3schools.com/xml/xml_display.asp zu finden. Obwohl dies im Moment die browserübergreifendste Möglichkeit ist, XML Dokumente zur Verfügung zu stellen, sollte es sich hier nur
um eine Übergangslösung handeln.
Ein Server, der schon eingesetzt werden kann und viele der obigen Features unterstützt, ist z.B. Cocoon
vom Apache-Projekt23
Weitere nützliche XML/XSL-Werkzeuge:
• XSLT processor Xalan (Apache Projekt): http://xml.apache.org/xalan
• IBM-XSL-Editor: http://www.alphaworks.ibm.com/tech/xsleditor
• XML-Spy: Österreichische Entwicklung! http://www.xmlspy.com
• Internet Explorer ab Version 5.0
• Das Kapitel 17 (XSL) der XML-Bible (2.Ed.)24 von Elliot Rusty Harrold ist online lesbar.
22 http://wh2fo.sourceforge.net/index.html
23 http://xml.apache.org/cocoon
24 http://ibiblio.org/xml/books/bible2/chapters/ch17.html
KAPITEL 4. MARKUP LANGUAGES
64
Obwohl die XSLT-Unterstützung des Internet Explorers 5.0 nicht 100% kompatibel mit der letzten Spezifikation des W3C ist, zeigen Abbildung 4.2, Abbildung 4.3 und Abbildung 4.4 schon, dass man durchaus
damit experimentieren kann.
Abbildung 4.2: Internet Explorer 5.0: XML Datei
4.4.5
Weitere Literatur zu XML
Weiter(führende) Literatur zum Thema XML:
• Der Anlaufpunkt überhaupt sind die XML-Webseiten des W3C25
• Einen guten Start bieten die The XML Cover Pages26 , die auf viele andere Artikel über XML
verweisen.
• Guter XML Kurs (auch mit XSL, ...) http://www.vbxml.com (empfohlen von Stefan Thalauer)
• Kurzes Paper (schon älter): Introduction to XML27
• Ganz gute Einführung in XML ist unter XML10128 zu finden.
• W3C Webseite für Schemas29
• O’Reillys Taschenbibliothek “XML kurz und gut”
• “XML Bible 2nd Ed.” v. Elliotte Rusty Harold, online zu finden unter http://ibiblio.org/xml/
books/bible2 ([Har00])
• “O’Reilly: Mastering XML Transformations”
25 http://www.w3.org/XML
26 http://xml.coverpages.org/xmlIntro.html
27 http://www.stud.ifi.uio.no/~lmariusg/download/xml/xml_eng.html
28 http://www.xml101.com
29 http://www.w3.org/TR/xmlschema-0/
KAPITEL 4. MARKUP LANGUAGES
Abbildung 4.3: Internet Explorer 5.0: XSL Datei
Abbildung 4.4: Internet Explorer 5.0: XML Datei mit Formatierungen aus XSL Datei
65
Kapitel 5
Digital Audio
Töne sind (Luft)Druckänderungen, die das menschliche Trommelfell als Schwingungen wahrnimmt und
mittels Nerven an das Gehirn weiterleitet.
Töne haben grundlegende Eigenschaften:
• Lautstärke oder Amplitude: je grösser der Druck ist, desto grösser ist die Lautstärke. Lautstärke
wird in deziBel gemessen. 0dB kann vom Menschen kaum noch wahrgenommen werden, 120dB
erzeugen schon Schmerzen. Eine Erhöhung um 10dB (10fache Amplitude) wird als Verdopplung
der Lautstärke wahrgenommen.
• Tonhöhe oder Frequenz: wie oft ändert sich der Druck. Das menschliche Ohr kann Frequenzen im
Bereich von 16Hz bis 20kHz aufnehmen. Dies unterscheidet sich von Mensch zu Mensch und nimmt
im Alter gewöhnlich ab.
Das Ohr misst Töne logarithmisch, d.h. eine Verdopplung der Frequenz empfindet man als eine
Oktave. Z.B. der Unterschied zwischen 200Hz und 400Hz wird gleich dem Unterschied zwischen
5kHz und 10kHz empfunden (beides entspricht der Verdopplung der Frequenz und damit einer
Oktave).
Lautstärke und Frequenz sind jedoch nicht völlig unabhängig. So nimmt das menschliche Ohr verschiedene
Frequenzen bei gleicher Amplitude als verschieden laut auf. Am empfindlichsten ist das Ohr bei ca. 3kHz,
den grössten Lautstärkebereich hat es aber bei ca. 1kHz.
Man sieht schon, dass mit reiner Mathematik zwar Töne beschrieben werden können, dass sich aber das
menschliche Ohr nicht an die reine Mathematik hält.
Töne können aus
• reinen Sinusschwingungen, oder aus
• einer Basis- und (mehreren) Oberschwingungen
bestehen. Die Oberschwingungen bestimmen die Klangfarbe (“Timbre”) des Tons. Verschiedene Musikinstrumente erzeugen zwar gleich hohe Töne, haben aber unterschiedliche Oberwellen, die sich aus den
unterschiedlichen Materialien, Bauformen, etc. der Instrumente ergeben.
5.1
Digitale Darstellung von Tönen
Mikrophone produzieren im Allgemeinen analoge Signale. Um diese mittels Computer weiterverarbeiten zu können, müssen sie digitalisiert werden. Dazu wird die Musikwelle (Summe der Basis- und aller
Oberwellen) zu bestimmten Zeiten abgetastet (Abbildung 5.1) und der Wert digital gespeichert (zeitund wertdiskret - Abbildung 5.2). Dass aus der Einteilung in diskrete Werte ein gewisser Fehler (Quantisierungsfehler) resultiert, ist in Abbildung 5.3 gezeigt.
66
KAPITEL 5. DIGITAL AUDIO
67
Abbildung 5.1: Abtastung der Welle
Abbildung 5.2: Abtastung der Welle - zeit und wertdiskret
Wichtige Parameter der A/D-Umsetzung:
• Abtastfrequenz (Samplingrate)
• Bitgrösse des Abtastwertes (Samplingsize), der die Auflösung für die Dynamik (Bereich zwischen
leisestem und lautestem Wert) bestimmt.
Laut Nyquist/Shannon muss die Samplingrate doppelt so hoch sein, wie die höchste darzustellende Frequenz, damit das Ursprungssignal wieder rekonstruiert werden kann. Ist die Abtastfrequenz zu nieder,
kann aliasing auftreten (Abbildung 5.4). Dabei entsteht beim Zurückwandeln in ein analoges Signal eine
ganz andere Frequenz und das Ursprungssignal kann somit nicht mehr wiedergegeben werden.
Tabelle 5.1 zeigt einige Werte von Samplingraten, Auflösung, Frequenzband und die daraus resultierende Datenmenge (Auflösung in Byte * Samplingrate * Anzahl Kanäle (Stereo/Mono)). Wobei von den
angegebenen Beispielen nur das Telefon mono überträgt, alle anderen sind stereo.
Telefon
CD
DAT
DVD Audio
Sample Rate
8kHz
44.1kHz
48kHz
max 192kHz
Auflösung
8bit
16bit
16bit
max 24bit
Frequenzband
200-3400Hz
20-20000Hz
20-20000Hz
0-96000Hz (max)
Datenmenge
8kBytes/sec
176kBytes/sec
192kBytes/sec
1152kBytes/sec
Tabelle 5.1: Werte von Abtastfrequenzen und Samplingraten
KAPITEL 5. DIGITAL AUDIO
68
Abbildung 5.3: Abtastung der Welle - Quantisierungsfehler
Abbildung 5.4: Aliasing bei zu niederer Abtastfrequenz
5.2
Kompression
NOTIZ: Die hier in Folge beschriebenen Kompressionsalgorithmen bzw. -verfahren stammen zum
Grossteil aus [vL00] und sind ziemlich ausführlich beschrieben. Bei der Prüfung zur Vorlesung werden
auf keinen Fall hunderte Details verlangt. Ein Überblickswissen reicht!
Bei der Kompression von Audio-Daten muss man zwischen verlustlosen Kompressionsverfahren und Verfahren, bei denen ein Teil der Audio-Information verloren geht, unterscheiden.
Verlustlose Kompressionsalgorithmen sind:
• RLE (Run Length Encoding) (Lauflängen): Serie von gleichen Werten wird durch Wert plus Zähler
ersetzt (anstatt 1,5,5,5,5 wird z.B. 1,4*5 geschrieben). (siehe Abschnitt 6.4.1)
• Silence Compression: ähnlich zu RLE, Stille wird nicht übertragen. Wird hauptsächlich bei Sprachtelefonie verwendet.
• Huffmann Coding: Statistisches Verfahren bei dem Werte binär gewichtet werden und häufigeren
Werten kürzere Codes zugewiesen werden. (siehe Abschnitt 6.4.3)
• LZW (Lempel, Ziv & Welch) basiert auf wiederkehrenden Mustern. (siehe Abschnitt 6.4.2)
• Differential Puls Code Modulation (DPCM): Nur die Differenz zwischen zwei Samples wird gespeichert. Da die Differenz normalerweise kleiner ist, als der Samplewert, kommt man bei der Differenz
mit einer kleineren Auflösung aus (8 Bit anstatt 16 Bit). Bei grossen Sprüngen besteht aber die
Gefahr des “Nachlaufens”, da der kleine Wert nicht mehr ausreicht und so die grosse Differenz auf
mehrere “kleine” Differenzen aufgeteilt werden muss.
KAPITEL 5. DIGITAL AUDIO
69
• Adaptive Differential Puls Code Modulation: wie DPCM, nur wird zusätzlich bei kleineren Werten
die Auflösung herabgesetzt.
• µ-Law, a-Law basieren auf nichtlinearer Abbildung von Samplewert auf Lautstärke. Daraus resultiert eine höhere Dynamik bei gleichen Datenmengen.
• etc.
Alle diese Verfahren arbeiten für Audiodaten nur in beschränktem Masse zufriedenstellend. Bessere
Kompressionsraten erhält man mit “lossy” Kompression, also Verfahren, bei denen ein Teil der Ausgangsinformation unwiederbringlich verloren geht.
Eigentlich ist alles ganz einfach: Zur Kompression von Audio-Signalen speichert man unwichtige Informationen nicht ab. Basierend auf Studien über das menschliche Gehör entscheidet der so genannte Encoder,
welche Informationen wichtig sind und welche nicht. Beim Menschen ist es nicht viel anders: Bevor ein
Klang ins Bewusstsein dringt, haben Ohr und Gehirn ihn schon auf seine Kernelemente reduziert. Die
psychoakustische Reduktion der Audio-Daten nimmt diesen Vorgang teilweise vorweg.
Der Schlüssel zur Audio-Kompression besteht darin, auch solche Elemente zu beseitigen, die nicht redundant, aber irrelevant sind. Dabei geht es um diejenigen Teile des Signals, die der menschliche Zuhörer
sowieso nicht wahrnehmen würde. Es gibt drei Basistechniken bei Audio-Kompression:
• Predictive Coding: Das Wissen über das vergangene Signal wird für eine Vorhersage des nächsten
Samples benutzt. Die Kompression ergibt sich daraus, dass man nur die Differenz zwischen dem
Signal und der Vorhersage abspeichert. Der Verlust resultiert daher, dass das Wissen über vergangenen Signale nicht immer eine exakte Vorhersage der nächsten Samples erlaubt.
• Subband Coding: In diesem Fall teilt man das Audio-Spektrum in Frequenzbänder auf. Dann
kann man die Tatsache ausnutzen, dass fast alle Bänder ein viel geringeres (oder weniger wichtiges)
Signal beinhalten als das lauteste Band. Die Kompression beruht darauf, dass man für die wichtigen
Bänder mehr Platz aufwendet als für die unwichtigen; in manchen Fällen kann man sich die Übertragung auch ganz sparen. Die Bits werden dynamisch auf die Bänder verteilt; dem Encoder fällt
die aufwendige Selektionsarbeit zu, für die er ein so genanntes psychoakustisches Modell benutzt,
nach dem er die wichtigen und unwichtigen Teile eines Signals unterscheidet. Der Encoder muss
neben den Audio-Daten auch Informationen über die Bitverteilung übertragen. Der Decoder muss
das Signal aus den abgespeicherten Informationen nur synthetisieren.
• Spectral oder Transform Coding: Mit dieser Technik berechnet man über die Wellenform periodisch
eine Fourier-Transformation. Weil sich die transformierte Darstellung eines Signals nur langsam
ändert, muss man sie viel seltener übertragen. Subband Coding wird oft als Spezialfall von Transform Coding verstanden. Transform-Encoder benutzen gewöhnlich eine hohe Zahl an Subbändern
und betrachten von der Frequenz her benachbarte Samples gemeinsam.
Alle Audio-Kompressionsverfahren vollziehen zunächst den gleichen Schritt wie das menschliche Gehör:
Sie schlüsseln das Signal nach der Frequenz auf. Für einen Computer ist das eine aufwendige Angelegenheit, bei der er mit komplexen Zahlen hantiert und einiges an Gleitkomma-Arithmetik vollzieht.
Standardverfahren sind die Fourier- und die Diskrete Cosinus-Transformation.
5.2.1
Wellentheorie
Die Theorie hinter diesen Verfahren besagt, dass man ein Signal annähern kann, indem man verschiedene
Kurven überlagert. In der Regel kommen Sinuskurven zum Einsatz. Wenn man dies aber standardisiert
hat, muss man die Funktionen nicht mitspeichern, sondern nur die Koeffizienten.
Bei der Kompression von Multimedia-Daten gibt es aber auch noch andere Ziele als die blosse Datenreduktion. Bei MPEG, den Standards der Motion Picture Expert Group, waren beispielsweise wichtige
Ziele, dass ein Echtzeit-Encoder mit überschaubaren Kosten in Hardware und ein Echtzeit-Decoder auf
verbreiteter Software umsetzbar ist. Weitere Forderungen bestanden darin, dass man im Datenstrom
vor- und zurückspulen und ihn auch rückwärts abspielen kann. Ausserdem soll das Ganze resistent gegen
KAPITEL 5. DIGITAL AUDIO
70
Kaskadierung sein: Wenn jemand einen Song überspielt (und dabei dekodiert und wieder kodiert), sollen
keine neuen Artefakte dazukommen. Darüber hinaus sollte die Bitrate fest sein. Die Netzwerktechnik ist
heute so weit, dass man garantierte Bandbreite reservieren kann; man muss also schon am Anfang wissen,
wie viel Bandbreite man maximal belegen wird. Und wenn man sich entsprechenden Platz reserviert hat,
möchte man ihn auch komplett ausnutzen. Auch würde man gerne den benötigten Platz in Abhängigkeit
von der aufgenommenen Zeit berechnen können - dadurch sind Angaben wie ‘auf diese CD passen vier
Stunden Musik’ möglich.
Deshalb verfolgt MPEG nicht den Ansatz, ein gegebenes Signal auf möglichst wenig Platz abzulegen, sondern eine gegebene Bandbreite optimal für das Signal auszunutzen. Das Ziel der Hardware-Realisierung
erkennt man bei MPEG-Audio etwa daran, dass die Konfiguration der Filterbänke im Standard fest
definiert und nicht vom Signal abhängig ist; ausserdem benötigt die Technik kein Wissen über das vergangene Signal (das würde im Encoder viel Speicherplatz benötigen und Vor- sowie Zurückspulen wäre
nicht möglich). Eine Filterbank ist das Hardware-Äquivalent einer Fourier- oder Cosinus-Transformation
und besteht aus vielen parallelen Bandpass-Filtern.
Der MPEG-Standard sieht allerdings auch vor, dass man ein Signal auf möglichst wenig Platz ablegen
kann. Das Stichwort dafür ist VBR (Variable Bitrate). Der Encoder belegt dabei für schwache Abschnitte
des Signals weniger Bandbreite als für starke. Aber auch ohne VBR hat MPEG Layer 3 ein so genanntes
Bit-Reservoir, das der Encoder in schwächeren Perioden ansammelt und dann bei dynamischeren Perioden
benutzt. Dieses Reservoir ist aber nicht sonderlich gross, da dies sonst wieder viel Speicher beim Encoder
verlangen würde. Ausserdem darf es nur sehr kurze Zeit verwendet werden, damit beim Vorspulen (wobei
das Reservoir übersprungen würde) keine Schwierigkeiten auftauchen.
5.2.2
MPEG Audio
Das MPEG-Gremium hat sich ursprünglich mit Video-Kompression beschäftigt. MPEG-Audio ist in so
genannten Layern definiert. Layer 1 ist die Basis, die alle En- und Decoder leisten müssen. Decoder für
Layer 2 können automatisch auch Layer 1 spielen, aber nicht umgekehrt. Die berühmten MP3-Dateien
sind nach MPEG-1 Layer 3 kodiert (MPEG-2 Layer 3 für die sehr kleinen Bitraten). MPEG-2 unterscheidet sich von MPEG-1 vor allem durch zusätzlich definierte Bitraten, Multichannel-Erweiterungen
und der alternativen, zu MP3 inkompatiblen Kodierung AAC (Advanced Audio Coding).
Bei dem so genannten perzeptionellen Audio-Coding existiert allerdings das Problem, dass die Wissenschaft die Eigenschaften des Gehörs noch nicht vollkommen verstanden hat. Erst in letzter Zeit gibt
es fundierte Daten über die verschiedenen Maskierungseffekte. Diese Daten können nur über Hörtests
gewonnen werden, an denen viele Testhörer beteiligt sein müssen, damit man in der Lage ist, die Ergebnisse zu verallgemeinern. MPEG Layer 3 ist beispielsweise unter anderem in Deutschland bei der
Fraunhofer-Gesellschaft in Erlangen entwickelt worden, wobei die Hörtests mit Steuergeldern finanziert
wurden.
Die Firmen und Institute sind dabei in einer Zwickmühle. Forschungsausgaben lassen sich nur rechtfertigen, wenn das Verfahren Verbreitung findet. Auf der anderen Seite findet es nur Verbreitung, wenn
es international standardisiert ist. Trotzdem möchte man an Encodern und am besten auch Decodern
verdienen. Die ISO, die die MPEG-Entwicklungen als Standards übernimmt, schreibt aber vor, dass Patenthalter an alle zu den gleichen Konditionen Lizenzen vergeben müssen: Der Mann an der Ecke zahlt
genau so viel Gebühren wie grössere Firmen wie Microsoft.
Bei MPEG ist daher nur der Decoder eindeutig definiert. So ermöglicht man eine weite Verbreitung des
Verfahrens, kann aber bei den Encodern Lizenzgebühren kassieren. Für Encoder heisst das aber auch,
dass der teuerste (und der wichtige und interessante) Teil, nämlich das psychoakustische Modell, nicht
offen gelegt wird. Encoder kann also nur bauen, wer selbst neben dem nötigen Know-how auch das Geld
für Hörtests hat oder das Wissen von der Fraunhofer Gesellschaft lizenziert. Eine wichtige Konsequenz
ist, dass Aussagen wie “MPEG ist besser als AC-3” Unsinn sind: Die Qualität der Kompression hängt
fast ausschliesslich von dem psychoakustischen Modell ab, das nicht mitspezifiziert ist und in der Regel
als Firmengeheimnis behandelt wird.
Der für den Hörtest verwendete MP3-Encoder verwendet das freie psychoakustische Modell GPSYCHO1 .
1 http://lame.sourceforge.net/gpsycho/gpsycho.html
KAPITEL 5. DIGITAL AUDIO
5.2.3
71
Akustikmodell
Wenn auch der Encoder nicht spezifiziert ist, so sind doch die von ihm ausgenutzten Eigenschaften des
menschlichen Gehörs dokumentiert. Am wichtigsten ist dabei die adaptive Hörschwelle (adaptive hearing
threshold): Die leiseste wahrgenommene Lautstärke hängt nicht nur vom Individuum, sondern auch von
der Frequenz ab.
Das Gehör der meisten Leute ist zwischen ein und fünf Kiloherz am empfindlichsten. Diese Minimallautstärke hängt aber auch vom Umgebungsgeräusch ab. Das Ticken eines Weckers ist normalerweise
gut hörbar - aber nicht, während er klingelt, obwohl er natürlich weitertickt. Man spricht davon, dass
Geräusche wie das Ticken maskiert werden. Dieser Effekt findet sich auch überall bei Musikaufnahmen,
etwa wenn ein Schlagzeug beispielsweise die Bratsche kurzzeitig maskiert. Das Aufnahmegerät nimmt
die Bratsche zwar mit auf, man hört sie aber eben nicht.
Dieser Effekt tritt interessanterweise nicht nur bei gleichzeitigen Signalen auf. Das Ohr braucht eine kurze
Zeit, nachdem der Schlagzeuger Ruhe gibt, bevor sich die Schwelle wieder gesenkt hat (Abbildung 5.5).
Ausserdem gibt es sogar einen kurzen Maskierungseffekt vor dem ersten Schlag. Je näher das leisere
Signal an der Frequenz des maskierenden Geräuschs ist, desto lauter kann es sein und trotzdem maskiert
werden.
starkes Signal
maskiertes Signal
Abbildung 5.5: Ein besonders starkes Signal kann nicht nur mehrere schwächere Folgesignale maskieren, sondern
auch Signale überdecken, die isoliert gesehen relativ laut wirken würden.
Eine verlustbehaftete Audiokompression wird also versuchen, Töne, die von anderen Tönen maskiert
werden, gar nicht abzuspeichern, da der Mensch diese nicht wahrnimmt.
5.2.4
Mehrkanal
Bei Mehrkanalsignalen kann ein Encoder zusätzlich auch Redundanzen zwischen den Kanälen ausnutzen. Normalerweise würde er jeden Kanal einzeln speichern und so den benötigten Platz verdoppeln.
MPEG Layer 3 hat dafür den Modus Joint Stereo eingeführt. Die Idee dabei ist, dass man für manche
Frequenzen auf dem linken Kanal die Summe der beiden Eingabekanäle kodiert und auf dem rechten
Kanal die Differenz. Das hat wie im Radio unter anderem den Vorteil, dass ein Mono-Decoder nur einen
Übertragungskanal dekodieren muss und man trotzdem das Signal aus beiden Kanälen hören kann.
Dem Encoder bietet Joint Stereo den Vorteil, dass er für beide Kanäle nicht gleich viel Platz braucht.
Dem Differenzsignal fehlen ja die Anteile, die beide Kanäle gemeinsam haben. Also kann der Encoder
für das Summensignal 70 Prozent der Bandbreite und für das Differenzsignal nur 30 Prozent vorsehen
(dabei setzt ein Encoder auf spezielle handselektierte Schwellenwerte).
Der bei MPEG-2 eingeführte Mehrkanalmodus richtet sich vor allem auf Kinofilme und Heimkino. Historisch gesehen ist es aber interessant, dass Stereo nicht prinzipiell für zwei Kanäle steht. In den 30er
Jahren haben die Bell Labs frühe Experimente mit Stereo-Sound gemacht, allerdings mit drei Kanälen.
KAPITEL 5. DIGITAL AUDIO
72
In den Kinos gab es in den 50er Jahren erstmals Stereo, wobei vier bis sieben Kanäle gemeint waren.
Stereo wurde erst zum Synonym für zwei Kanäle, als es in Form des Plattenspielers die Privathaushalte
erreichte. Der Plattenspieler bildete Stereo über die beiden Seiten der Rille auf der Schallplatte ab und
war deshalb durch die Hardware auf zwei Kanäle limitiert.
Die Dolby Labs haben mit dem Dolby-Surround-Verfahren Mehrkanal-Ton im Heim etabliert, der die
zusätzlichen Kanäle analog im Zweikanal-Signal versteckt. Dolby hat sich schon bei der berühmten
Rauschunterdrückung (etwa Dolby B und Dolby C bei Kassettendecks) mit der Psychoakustik beschäftigt.
Anfangs wurde einfach gemessen, welche Teile des Signals Kassetten gewöhnlich verrauschen - das Signal
hat man dann einfach lauter aufgespielt und beim Abspielen wieder (mit dem Rauschen) leiser geregelt. Später hat Dolby dann auch mit AC1 bis AC3 (inzwischen Dolby Digital genannt) verschiedene
Kompressionsverfahren für Digital-Sound beim Kinofilm entwickelt.
5.2.5
Weitere Kompressionsverfahren
Auch Dolby spezifiziert wie MPEG nicht den Encoder, sondern nur den Decoder und ist damit genau so
’offen’ wie MPEG. Das Unternehmen hat allerdings nach eigenen Aussagen doppelt so viele Anwälte wie
Ingenieure, was möglicherweise einer der Gründe dafür ist, dass bisher niemand ausser Dolby einen AC-3
Encoder gebaut hat. AC-3 ist heute im Kino und auf DVDs neben MPEG-2 (allerdings nur Layer 2,
nicht AAC) der am häufigsten eingesetzte Standard zur Audio-Kompression. Für Kinofilme und DVDs
haben sich auch 5.1-Kanäle durchgesetzt, wobei der Zehntel-Kanal für Bass-Effekte gedacht ist und sehr
wenig Bandbreite hat.
Neben MPEG und AC-3 ist Sonys proprietäres MiniDisc-Verfahren ATRAC relativ verbreitet. ATRAC
komprimiert immerhin auf ein Fünftel der Originalgrösse - dies ist zwar heute nicht mehr sehr viel, aber
bei Erscheinen der MiniDisc war dieser Kompressionsfaktor sehr beeindruckend. Ohne ATRAC würden
nur 15 Minuten auf eine MiniDisc passen.
5.2.6
MPEG Layer 1
Der erste Schritt bei MPEG ist die Polyphase-Filterbank, die das Signal in 32 gleich breite FrequenzSubbänder aufteilt. Die Filter sind verhältnismässig einfach und haben eine gute Zeitauflösung; die
Frequenzauflösung ist ebenfalls recht brauchbar. Bis auf drei Punkte ist das Design ein guter Kompromiss:
• Das Gehör teilt das Signal nicht in gleich breite Subbänder auf, sondern sie werden mit steigender
Frequenz exponentiell breiter. Bei den Maskierungseffekten kann man die Subbänder des Gehörs
beobachten (von 100 Hz für tiefe Frequenzen bis 4 kHz für Höhen), nicht die von MPEG.
• Die Filterbank und die Synthese sind verlustbehaftet. Das ist allerdings nicht hörbar.
• Benachbarte Bänder haben signifikante Frequenzüberlappung, weil die Filterbänke nicht scharf
abschneiden, sondern mit Cosinus approximieren. Ein Ton auf einer Frequenz kann also in zwei
Subbändern auftauchen und so die Kompression verschlechtern (Aliasing).
Die Filterbank nimmt je 32 Eingabe-Samples und produziert daraus je ein Sample in jedem der 32
Subbänder. Ein Layer-1-Frame hat insgesamt 384 Samples, in dem er zwölf Samples aus jedem der 32
Subbänder gruppiert. Der Encoder befragt das psychoakustische Modell und allokiert dann pro SampleGruppe entsprechend Bits. Wenn eine Sample-Gruppe mehr als 0 Bits zugewiesen bekommen hat, wird
auch ein 6-Bit-Skalierungsfaktor mitgespeichert: So kann man den Wertebereich des Quantisierers vergrössern.
5.2.7
MPEG Layer 2
Layer 2 kodiert die Daten in grösseren Gruppen und schränkt die Bit-Allokationen in mittleren und
hohen Subbändern ein, weil diese für das Gehör nicht so wichtig sind. Die Bit-Allokationsdaten, die
Skalierungsfaktoren und die quantisierten Samples werden kompakter abgelegt. Durch diese Einsparungen
können mehr Bits in die Audio-Daten investiert werden.
KAPITEL 5. DIGITAL AUDIO
73
Ein Layer 2 Frame hat 1152 Samples pro Kanal. Es werden nicht Gruppen von zwölf Samples betrachtet,
sondern Dreier-Blöcke zu je zwölf Samples pro Subband. Die Bits vergibt das Verfahren pro Dreiergruppe,
aber es existieren bis zu drei Skalierungsfaktoren. Ausserdem kann Layer 2 drei quantisierte Werte in
einem einzigen, kompakteren Code-Wort ablegen, wenn er drei, fünf oder neun Levels für die SubbandQuantisierung vergeben hat.
5.2.8
MP3 - MPEG Layer 3
MPEG Layer 3 (meist als MP3 bezeichnet) benutzt eine modifizierte diskrete Cosinus-Transformation
(MDCT) auf die Ausgabe der Filterbänke und erhöht damit die Auflösung drastisch. Dadurch kann Layer
3 auch die Aliasing-Effekte zurückrechnen - der Decoder muss das allerdings wieder hinzufügen. Layer
3 spezifiziert zwei MDCT-Blocklängen: 18 und sechs Samples. Aufeinander folgende TransformationsFenster überlappen sich zu 50 Prozent, sodass die Fenster 36 und 12 Samples umfassen. Die lange
Blockgrösse ermöglicht eine bessere Frequenzauflösung für stationäre Audio-Signale, während die kurze
Blocklänge bessere Zeitauflösung für transiente impulsartige Signale bietet. Layer 3 definiert Varianten,
in welcher Kombination kurze und lange Blöcke vorkommen können. Der Wechsel zwischen Blocklängen
funktioniert nicht unmittelbar, sondern wird durch einen speziellen langen Block eingeleitet.
Weil MDCT bessere Frequenzauflösung bietet, ist die Zeitauflösung entsprechend schlechter. MDCT
operiert auf 12 oder 36 Filterbank-Samples, also ist das effektive Zeitfenster um den Faktor 12 oder 36
grösser. Das Quantisierungsrauschen erzeugt also Fehler, die über dieses grosse Zeitfenster verteilt sind
- es ist wahrscheinlicher, dass man sie hört. Bei einem Signal, in dem sich laute und leise Abschnitte in
schneller Folge abwechseln, verteilt sich das Rauschen nicht nur auf die lauten Stellen, wo man es weniger
stark hören würde, sondern auch auf die leisen. Diese Störungen treten gewöhnlich als Pre-Echo auf, weil
die temporale Maskierung vor einem Signal schwächer (und kürzer) ist als danach.
Neben MDCT hat Layer 3 noch andere Verbesserungen gegenüber früheren Verfahren:
• Layer 3 kann die Aliasing-Effekte der Filterbank wegrechnen.
• Der Quantisierer potenziert die Eingabe mit 3/4, um die Signal-to-Noise-Ratio gleichmässiger auf
den Wertebereich der Quantisierungswerte zu verteilen. Der Decoder muss das natürlich wieder
rückgängig machen.
• Die Skalierungsfaktoren werden bei Layer 3 in Bändern zusammengefasst. Ein Band umfasst
mehrere MDCT-Koeffizienten und hat ungefähr die Breite der Bänder des Gehörs. So wird das
Quantisierungsrauschen ähnlich den Konturen der Maskierungsschwelle eingefärbt, damit es keine
Rausch-Spitzen gibt.
• Layer 3 benutzt einen statischen Huffman-Code für die quantisierten Samples. Der Encoder sortiert
die 576 Koeffizienten (32 Subbänder x 18 MDCT-Koeffizienten) in einer standardisierten Reihenfolge. Dies soll dafür sorgen, dass die hohen Werte von den tiefen Frequenzen am Anfang stehen
und die kleinen am Ende. Dann vergibt der Encoder für die hohen Werte am Anfang lange und
für die kleinen Werte kurze Code-Wörter. Die Koeffizienten werden in drei Regionen aufgeteilt, die
jeweils eine speziell optimierte Huffman-Tabelle benutzen. Teilweise bildet man hier auch mehrere
Zahlen auf einen Huffman-Code ab.
• Das Bit-Reservoir ist ebenfalls eine Innovation von Layer 3. Der Encoder darf nur Bits entnehmen,
die er vorher in das Reservoir gepackt hat - Kredit wird nicht gegeben.
5.2.9
MPEG2/4 AAC
Die Details von AAC würden den Rahmen hier bei weitem sprengen. Grundsätzlich teilt AAC das
Signal erst mit einem Polyphase Quadrature Filter (PQF) in vier Subbänder, für die es jeweils einen
Verstärkungsfaktor separat überträgt. Die vier Subbänder werden jeweils mit einer MDCT der Länge
256 transformiert - für sehr dynamische Passagen kommt auch eine MDCT-Länge von 32 zum Einsatz.
Die Koeffizienten sagt AAC aber mit einem speziellen Mechanismus für jedes Frequenzband aus den
zwei vorhergehenden Frames vorher. Bei stationären Signalen erhöht das die Effizienz. Die Differenzen
KAPITEL 5. DIGITAL AUDIO
74
quantisiert das Verfahren nicht-uniform; es benutzt einen von zwölf vordefinierten Huffman-Codes. Eine
wichtige Neuerung ist das Temporal Noise Shaping (TNS), das auf dynamische Signale zugeschnitten ist.
Dabei nutzt man die Beobachtung aus, dass ein Ton in der Frequenzdarstellung wie ein Impuls aussieht.
Umgekehrt sieht ein Impuls in der Frequenzdarstellung wie ein tonales Signal aus. Tonale Signale kann
man mit einem Linear Predictive Coding (LPC)-Ansatz gut vorhersagen. Es kommt dann ein linearer
Vorhersager zum Einsatz, um das nächste spektrale Sample zu bestimmen.
Im Zuge von MPEG-4 wurde in AAC noch eine sog. Perceptual Noise Substituion eingebaut. Der Encoder
codiert Rauschen nicht mehr, sondern teilt dem Decoder lediglich die Rauschleistung und die Frequenz
mit.
MPEG4-AAC gliedert sich in verschiedene Profile, die jeweils verschiedene Techniken ausnutzen. So
unterstützt QuickTime 6 momentan nur das “Low Complexity” (LC) Profil, während der Frauenhofer
Codec Daten für das “Long Term Prediction” (LPT) Profil erzeugt. Somit kann der QuickTime Player
diese nicht decodieren.
5.2.10
MP3 Pro
MP3 Pro erweitert und verbessert MP3 bei niedrigeren Bitraten (um 64kBit/s) bei Kompatibilität zum
MP3-Format. Die Kompatibilität heißt allerdings nicht, dass die verbesserten Fähigkeiten von MP3 Pro
auch mit einem “normalen” MP3 Decoder genutzt werden können.
MP3 Pro versucht mittels Spectral Band Replication (SBR) die bei MP3 verlorenen höheren Harmonischen
zu rekonstruieren. Beim Kodieren wird diese Zusatzinformation in den MP3-Bitstrom eingefügt. SBR
verliert bei höheren Bitraten zunehmend an Wirkung, sodaß bei Bitraten über 96kBit/s der Einsatz
keinen Sinn mehr macht.
Ein Nachteil des MP3 Pro Formats ist auch, dass es bei keiner Bitrate tatsächliche Transparenz (kein
wahrnehmbarer Unterschied zwischen Original und codiertem Stück) erzeugt. [LZ02]
5.2.11
Ogg Vorbis
Ogg Vorbis ist ein Oberbegriff für eine Vielzahl von Multimediaformaten der Xiphophorous Foundation2 .
Das Besondere an Ogg Vorbis ist, dass es sich um ein patent- und lizenzfreies Modell handelt. Der
Open-Source Codec geniesst daher schon aus diesem Grund einen guten Ruf.
Ogg Vorbis liefert aber auch eine sehr gute Tonqualität. Er ist (lt. [LZ02]) auch der einzige Codec, der
bei einer Bitrate von 128kBit/s das Signal erst bei 20kHz beschneidet (bei 64kBit/s immerhin erst bei
15,2kHz).
Ogg Vorbis unterstützt bis zu 255 Kanäle und es gibt schon Bestrebungen, Multikanal für DivX Videos
zu nutzen.
Sowohl beim C’t Test [LZ02] als auch bei einem Test der Zeitschrift Chip3 , schnitt Ogg Vorbis erstklassig
ab.
5.2.12
TwinVQ
TwinVQ wurde vom japanischen Telekommunikationskonzern NTT entwickelt und verfolgt einen anderen
Ansatz als MPEG. Beide Verfahren wandeln zwar das Signal in die Kurzzeit-Frequenzdarstellung, aber
TwinVQ kodiert die Samples dann nicht, sondern betrachtet jeweils Muster aus Samples in Form von
Vektoren. Der Encoder greift auf eine Tabelle von Standardmustern zurück, mit denen er die Eingabevektoren vergleicht. Der Index des Vektors, der der Eingabe am nächsten ist, wird dann übertragen.
Die Artefakte von TwinVQ sind anders als bei MPEG. Es klingt nicht so, als würde Rauschen dazukommen, sondern als würden Teile des Signals verloren gehen: Es klingt sozusagen ’weichgespült’. Bei
Sprachübertragung geht dabei gewöhnlich unter anderem beispielsweise der Strassenlärm-Teil des Signals
2 http://www.xiph.org/
3 http://www.chip.de/produkte_tests/produkte_tests_8731098.html
KAPITEL 5. DIGITAL AUDIO
75
verloren. Daher ist TwinVQ für Sprachübertragung und für sehr kleine Bitraten ausgezeichnet geeignet
und wurde in MPEG-4 aufgenommen.
5.2.13
ATRAC
ATRAC steht für Adaptive Transform Accoustic Coding und ist der von Sony entwickelte Codec für die
MiniDiscs. Ein ATRAC-Frame hat 512 Samples; die Eingabe wird erstmal mit einem QMF (Quadrature
Mirror Filter) in drei Subbänder unterteilt, die jeweils nochmal mit MDCT aufgeteilt werden: 0 bis 5,5
kHz (128 MDCT), 5,5 bis 11 kHz (128 MDCT) und 11 bis 22 kHz (256 MDCT). Es gibt auch einen
langen Block-Modus (11,6 ms) und einen Modus mit drei kurzen Blöcken (2,9 ms + 2,9 ms + 1,45 ms).
Die Koeffizienten quantisiert ATRAC nach Wortlänge und versieht sie mit einem Skalierungsfaktor.
Bei ATRAC schleichen sich bei einer Kaskadierung Artefakte ein. MPEG hingegen hat sich in Hörtests
als weitgehend resistent dagegen erwiesen.
5.2.14
Dolby AC-3/QDesign
Dolby AC-3 ist ebenfalls ein psychoakustischer Transformations-Codec, der eine Filterbank mit AliasingKürzung verwendet. Überlappende Blöcke aus 512 Eingabe-Samples wandelt das Verfahren mit einer
Transformation zu 256 spektralen Koeffizienten. Die Transformation hat die Eigenschaften von MDCT;
die AC-3 Dokumente nennen es allerdings nur TDAC: Dies bedeutet nichts anderes als Time Domain
Aliasing Cancellation und beschreibt die wichtigste Eigenschaft von MDCT.
Dolby macht zu dem Verfahren keine genaueren Angaben, weil es sich um ein Geschäftsgeheimnis handle,
das man nur mit einer Vereinbarung, keine Details zu veröffentlichen, lizenzieren kann. Ähnliches erfährt
man auch von QDesign, Hersteller des Audio-Codec von Apples QuickTime: Anfragen wies die Firma
mit dem Hinweis ab, dass es sich bei den technischen Details um ein Geschäftsgeheimnis handle. Die
Firma behauptet jedenfalls, ihr psychoakustisches Modell selbst entwickelt zu haben. Leider sind über
den Algorithmus keine Details bekannt; auf der Webseite von QDesign findet man nur die Aussage, dass
ihr neuer Codec die Audio-Quelle parametrisch erfasst, das Signal in ’relevante Komponenten’ zerlegt
und das Ergebnis als Koeffizienten ablegt. Von der Differenz speichert der Encoder ab, wofür er Platz
hat.
5.2.15
Wave
Dieses Audioformat (Dateiendung *.wav) von Microsoft und IBM ist Bestandteil der RIFF (Resource
Interchange File Format)-Spezifikation und war ursprünglich nur für 16-Bit-Stereo und maximal 44.1kHz
Sample-Frequenz gedacht. Dies hielt die Audioindustrie jedoch nicht davon ab, dieses Format mit 32 Bit
und 96kHz zu nutzen. In diesem verlustfreien Format können einfach die Daten der PCM-Codierung,
aber auch die Codierungsalgorithmen a-Law, µ-Law (Dynamik Kompression) und ADPCM verwendet
werden.
5.2.16
MSAudio - WMA
Microsoft hat innerhalb kürzester Zeit ASF als ein Konkurrenzmodell zu MP3 aus dem Boden gestampft,
das sowohl Audio als auch Video enthalten kann. Es ermöglicht Streaming bis zu 160kbit/sec.
Einiges zum Thema MSAudio lässt sich derzeit gar nicht oder nur vage beantworten. So hört man aus
ansonsten gut unterrichteten Kreisen, Microsoft habe Entwickler extra eingekauft. Die Zeit für langwierige Forschung und Hörversuche hatte die Firma wohl nicht. Die dem Perceptual Audio Coding
zugrundeliegenden Verfahren sind überall bestens dokumentiert und veröffentlicht - hier lässt sich fremdes Know-how wunderbar ausschlachten. Dass es sich bei MSAudio nicht um eine revolutionäre neue
Technologie handelt, wird schon daran deutlich, dass Microsoft bisher keinerlei Patente angemeldet hat.
[CO99]
Die WMA 9 Version von Microsofts Audio Codec kann zusätzlich zu den verlustbehafteten Kompressionsarten auch mit einer Verlustlosen aufwarten. Der Player hat allerdings das Problem, dass er nur unter
KAPITEL 5. DIGITAL AUDIO
76
Windows XP läuft.
5.2.17
Realaudio
Dieses Streamingverfahren verwendet ein unbekanntes (Firmengeheimnis) Coding.
Real erweiterte seinen Real-Audio 8 Codec um Surround Eigenschaften, bleibt aber trotzdem abwärtskompatibel.
Ein Vorteil dieses Formats ist die Verfügbarkeit des Real Players, den es für alle Betriebssysteme gibt.
In Version 9 hat RealNetworks grosse Teile seines Codes als Open Source (RealNetworks Public Source
License (RPSL)) zur Verfügung gestellt. Unter http://www.helixcommunity.org/ finden sich mehr
Details.
5.2.18
Literatur zu Digital Audio
• Ein Grossteil des Wissens in diesem Kapitel stammt aus [vL00] bzw. aus [LZ02].
• Ein ganz guter Artikel über “Audio Compression” ist unter http://www.cs.sfu.ca/undergrad/
CourseMaterials/CMPT479/material/notes/Chap4/Chap4.3/Chap4.3.html zu finden. Vor allem ist da eine Beschreibung, wie ein psychoakustisches Modell entwickelt wird, zu finden.
• Für den MP3-Hörtest wurde das Programm “lame” verwendet. http://lame.sourceforge.net/
• eine gute Linksammlung ist auf http://www.mpeg.org/MPEG/links.html zu finden.
5.3
MP3 Hörtest
Für den mp3-Hörtest wurden verschiedene Teile von Musikstücken von CD in mp3-Dateien codiert.
Ein gute Mischung aus verschiedenen Musikstilen wurde gegenüber einer akademischen Klanganalyse
bevorzugt.
Eine genaue Auflistung der verwendeten Stücke und wie diese erzeugt wurden, ist in Anhang A zu finden.
5.4
MIDI
Musical Instrument Digital Interface (MIDI) ist kein Soundformat, wie die oben besprochenen, sondern
eine Definition von Klangbeschreibungen. Es dient nicht zum Digitialisieren von bestehender Musik,
sondern vielmehr zum Produzieren von neuer Musik. Es wurde 1983 von Sythesizerfirmen als serieller
Schnittstellenstandard zum Austausch von Musikdaten definiert. MIDI beschreibt keine Einzelsamples,
sondern Daten wie
• Tonhöhe
• Lautstärke
• Klangbild
• Anschlagdynamik
• Instrument
• etc.
Generell verfolgt MIDI das Ziel, durch eine standardisierte Beschreibung des Klanges, diesen überall, auch
mit verschiedenen Geräten, reproduzieren zu können. Dies ermöglicht eine sehr effiziente Übertragung
KAPITEL 5. DIGITAL AUDIO
77
(da ja nicht der Klang selbst, sondern nur eine Beschreibung, wie er erzeugt werden kann, übertragen
werden muss), setzt aber auch voraus, dass alle MIDI-Geräte die verwendeten Klänge abspielen können.
General MIDI stellt dazu eine Instrumententabelle4 und eine percussion map 5 zur Verfügung, die garantieren soll, dass alle beteiligten MIDI-Geräte “die gleiche Sprache sprechen”.
MIDI-Geräte kommunizieren mittels Nachrichten. Es gibt zwei Arten von Nachrichten:
• Channel Messages: werden benutzt, um einzelne Kanäle anzusprechen, und nicht ein oder mehrere
komplette MIDI-Geräte
• System Messages: tragen nicht Kanal-spezifische Informationen, wie z.B. timing-Signale für die
Synchronisation oder Setup-Informationen für ein MIDI-Gerät
Channel Messages enthalten Informationen,
• welche bestimmten Klänge ein Instrument abspielen soll,
• dass bestimmte Noten ein- oder ausgeschaltet werden sollen,
• dass der aktuelle Ton oder die aktuelle Note verändert werden soll.
Eine byte-genaue Aufschlüsselung der Nachrichten würde hier den Rahmen sprengen, kann aber unter
http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/Chap3.1.html eingesehen werden.
Eine weitere gute Quelle für Informationen über MIDI ist http://www.midi.org, MIDI-Dateien en masse
können z.B. bei http://www.midi.com gefunden werden.
4 http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/instrument.html
5 http://www.cs.sfu.ca/CourseCentral/365/li/material/notes/Chap3/Chap3.1/percussion.html
Kapitel 6
Digital Images
Da sich ein Grossteil der Erklärungen in diesem Kapitel sowohl auf Bilder als auch auf Grafiken beziehen,
wird der Begriff Bilder als Sammelbegriff für beide verwendet werden.
Bilder gehören fast zu jeder (multimedialen) Präsentation, sei es im Web, in einem Informationssystem
oder bei einer Präsentation. Sie werden zur Informationsvermittlung, zur Erklärung oder einfach als
optischer Aufputz verwendet und nicht umsonst heisst das Sprichwort “ein Bild sagt mehr als tausend
Worte”.
Bilder wurden bereits in der Steinzeit als Kommunikationsmedium (Felszeichnungen) benutzt und geschätzt,
da sie ohne viele Erklärungen von vielen Menschen verstanden werden (bei moderner Kunst gilt dies oft
nicht mehr :-).
Eine Eigenschaft von Bildern wird jedoch in fast allen Fällen ausgenutzt: Der Mensch ist imstande,
innerhalb von sehr kurzer Zeit den Inhalt eines Bildes zu erfassen. Darum ist das Wissen um den Aufbau
und Eigenschaften von verschiedenen Bildformaten eine grundlegende Voraussetzung für den optimalen
Einsatz.
6.1
Das Auge
Etwa 126 Millionen Sinneszellen kleiden das Innere des Augapfels aus (das ergibt ca. 400.000 Zellen/mm2 )
und bilden die Netzhaut (Retina).
Es gibt zwei Arten von Photorezeptoren:
• Stäbchen arbeiten bereits bei niedriger Lichtintensität und dienen daher dem Dämmerungssehen
(Hell/Dunkel). Ein Auge enthält ca. 120 Millionen Stäbchen.
• Zapfen dienen dem Tages- und Farbsehen. Jeder Mensch hat ca. 6 Millionen Zapfen pro Auge.
In jeder Sekunde werden ca. 20 Bilder über den Sehnerv an das Gehirn übermittelt. [Hol00]
6.1.1
Farbe
Das menschliche Auge wandelt elektromagnetische Strahlung einer bestimmten Wellenlänge in eine vom
menschlichen Gehirn verständliche Information um. Das Gehirn ordnet dann dieser Information den
Sinneseindruck Farbe zu.
Gegenstände, die von einer Lichtquelle beleuchtet werden, reflektieren und absorbieren jeweils einen Teil
des Lichts. Das für den Menschen sichtbare Spektrum reicht etwa von 380nm (blau) bis zu 780nm (rot).
Verschiedene Arten von Zapfen auf der Netzhaut sind mit verschiedenen lichtempfindlichen Farbstoffen
ausgestattet [Hen00]:
• rot (ca. 580nm), zu etwa 64% vertreten
78
KAPITEL 6. DIGITAL IMAGES
79
• grün (ca. 545nm), zu etwa 32% vertreten
• blau (ca. 440nm), zu etwa 4% vertreten
Werden alle drei Zapfensorten zu gleichen Teilen angeregt, “sieht” der Mensch Grautöne (schwarz bis
weiss, je nach Intensität).
Bevor das Signal jedoch in das Sehzentrum des Gehirns geleitet wird, erfährt es noch eine Farbveränderung
und es werden aus den separaten Signalen für rot, grün und blau drei neue Signale gebildet.
• Differenzsignal rot - grün zur rot/grün Unterscheidung
• Summensignal rot + grün = gelb = Y zur Gelb- und Helligkeitswahrnehmung - Im Laufe der
Evolution hat sich die spektrale Empfindlichkeit der Helligkeitswahrnehmung an die Farbe der
Sonne angepasst.
• Differenzsignal gelb - blau zur blau/gelb Unterscheidung.
Zunächst noch einige Begriffe, die im Zusammenhang mit Farben immer wieder auftreten:
• Die Helligkeit (brightness) bestimmt, wie intensiv ein visueller Reiz erscheint bzw. wieviel Licht die
Fläche abzustrahlen scheint (“dunkel” bis “hell”).
• Farbton (hue) ist das Attribut einer Farbwahrnehmung, das durch Namen wie “rot”, “grün” usw.
bezeichnet wird.
• Sättigung (saturation) ermöglicht ein Urteil, wie stark sich ein farbiger Reiz von einem anderen
unabhängig von dessen Helligkeit unterscheidet.
6.1.2
Richtlinien für die Verwendung von Farben
Die bedachte Auswahl der Farben ist bei Informationssystemen sehr wichtig, da verschiedene Farben
auf der einen Seite psychologische Wirkung auf Personen haben, auf der anderen Seite physikalische
Gegebenheiten des Auges verschiedenes voraussetzen.
Laut [Hen00] sollen folgende Dinge wegen diverser Eigenschaften des Sehapparates vermieden werden:
• Gleichzeitige Darstellung mehrerer gesättigter Farben aus unterschiedlichen Bereichen des Spektrums, da dies das Auge ermüdet.
• Blauer Text, dünne Linien oder kleine Formen, da im Zentrum der Retina keine blau-sensitiven
Zapfen zu finden sind.
• Verwendung von rot und grün in der Peripherie grösserer Bilder oder Anzeigen.
• Verwendung von roten Zeichen auf blauem Hintergrund:
Beispieltext in Rot
• Verwendung benachbarter Farben, die sich nur im Blauanteil unterscheiden.
• Verwendung von Farbe als alleinigem Unterscheidungsmerkmal bei der Codierung (ca. 9% aller
Männer sind Farbenblind)
Zu beachten ist weiters:
• Ältere Benutzer benötigen eine höhere Lichtintensität.
• Farbwahrnehmung ist abhängig vom Umgebungslicht.
• Bei gesättigten Farben ist das Auge weniger empfindlich für Farbtonunterschiede.
KAPITEL 6. DIGITAL IMAGES
6.2
80
Farbmodelle
Der Zweck eines Farbmodells ist immer die bequeme Spezifikation von Farben. Ein Farbmodell enthält
nicht unbedingt alle wahrnehmbaren Farben! Eine gute Einführung in Farbmodelle ist u.a. unter http:
//www.adobe.com/support/techguides/color/colormodels/rgbcmy.html zu finden.
6.2.1
RGB-Farbmodell
Das RGB (rot-grün-blau) Modell ist das meistverwendete Modell zur Ausgabe auf aktiv lichterzeugenden
Medien (z.B. Displays, ...). Die Farbmischung in diesem Modell erfolgt additiv, d.h. die spektralen
Intensitäten der einzelnen Lichtkomponenten werden addiert (alle drei Farben zusammen in höchster
Intensität ergeben weiss - siehe auch Abbildung 6.3).
Abbildung 6.1 zeigt den Farbraum des RGB-Modells, der einen Würfel mit der Kantenlänge 1 darstellt.
Grauwerte liegen auf der Hauptdiagonale zwischen schwarz und weiss. Schön experimentieren lässt sich
mit den Farbauswahldialogen von Photoshop oder Gimp1 , die verschiedene Abbildungen des RGB-Würfels
auf eine Ebene vorweisen. So lassen sich auch leichter die Zusammenhänge zwischen RGB und YUV
verstehen (siehe Abbildung 6.2).
cyan (0,1,1)
blau (0,0,1)
blau−Achse
weiss (1,1,1)
magenta (1,0,1)
grün−Achse
grün (0,1,0)
schwarz (0,0,0)
gelb (1,1,0)
rot−Achse
rot (1,0,0)
Abbildung 6.1: Farbraum des RGB-Modells [Hen00]
6.2.2
CMY-Farbmodell
Das CMY (cyan-magenta-yellow) Modell ist das meistverwendete Modell zur Ausgabe auf reflektierenden
Medien (z.B. Druckern, ...).
Die Farbmischung erfolgt subtraktiv, d.h. die spektralen Intensitäten der einzelnen Lichtkomponenten
werden entsprechend dem Farbwert von Gegenständen absorbiert und der Rest reflektiert (aus dem
weissen Licht entfernt, siehe auch Abbildung 6.3). Grauwerte liegen wiederum auf der Hauptdiagonalen.
Der Farbbereich (color gamut) im CMY-Farbmodell (siehe Abbildung 6.4) ist nicht identisch mit dem
des RGB-Modells, d.h. dass im Allgemeinen nicht alle angezeigten Farben auf einem Bildschirm auch auf
einem Farbdrucker druckbar sind!
Viele Drucker fügen zu den drei Farben noch schwarz als vierte Farbe hinzu, um dafür nicht alle drei
Farben zusammenmischen zu müssen (CMYK-Farbmodell).
1 http://www.gimp.org
KAPITEL 6. DIGITAL IMAGES
81
Abbildung 6.2: Farbauswahldialog des Bilderbearbeitungsprogrammes Gimp
Abbildung 6.3: Farbmischung bei RGB (links) und CMY Farbmodellen (rechts) [von http://www.adobe.com/
support/techguides/color/colormodels/rgbcmy.html]
6.2.3
YUV-Farbmodell
In diesem Modell erfolgt die Aufspaltung der Bildinformation in ein Helligkeits- und zwei Farbsignale
(Bläue und Röte - und ist damit äquivalent zum YCbCr-Farbmodell). Es ist damit abwärtskompatibel
zum Schwarz-Weiss-Fernsehen. Die Y-Komponente hat den Wertebereich [0,1], die beiden Farbkomponenten den Wertebereich [-0.5,0.5].
Das YUV-Farbmodell wird bei PAL-Video verwendet und ist über die Norm CCIR 601 auch in die
Standardisierung für Digitales Video eingegangen. Ausserdem wird dieses (oder YIQ) auch bei der
verlustbehafteten JPEG-Kompression (Abschnitt 6.4.5) verwendet.
6.2.4
YIQ-Farbmodell
Auch in diesem Modell erfolgt die Aufspaltung der Bildinformation in ein Helligkeits- und zwei Farbsignale. Damit ist es auch abwärtskompatibel zum Schwarz-Weiss-Fernsehen. Es wird bei NTSC-Video
verwendet.
6.2.5
HSV-Farbmodell
Das HSV (Hue-Saturation-Value bzw. Farbton, Sättigung, Wert) Modell hat als Farbraum eine sechsseitige Pyramide, den sogenannten “Hexcone”. Die Projektion der Pyramide entlang der Value-Achse
entspricht dem Blick auf den RGB-Farbwürfel (siehe Abbildung 6.1) entlang der Grauwert-Diagonalen.
KAPITEL 6. DIGITAL IMAGES
82
rot (0,1,1)
gelb (0,0,1)
yellow−Achse
schwarz (1,1,1)
grün (1,0,1)
magenta−Achse
magenta (0,1,0)
weiss (0,0,0)
blau (1,1,0)
cyan−Achse
cyan (1,0,0)
Abbildung 6.4: Farbraum des CMY-Modells [Hen00]
Eine sehr gute Simulation (Java-Applet) der verschiedenen Farbmodelle findet sich unter http://www-cg-hci.
informatik.uni-oldenburg.de/~pgse96/html/team3/HSV.html.
6.2.6
Umrechnung zwischen Farbmodellen
Alle Formeln dieses Abschnitts stammen aus [Hen00].
Als Basis für die Umrechnung dient immer das RGB-Modell. Die Beziehung zwischen RGB und CMY
ist sehr einfach:
(C M Y ) = (1 1 1) − (R G B)
Die Transformation auf die in der Videotechnik verwendeten Formate sind zwar komplizierter, aber immer
noch linear:


0.299 −0.168736
0.500
(Y U V ) = (R G B) ·  0.587 −0.331264 −0.418688 
0.114
0.500
−0.081312
Für Leser mit wenig Erfahrung beim Matrizenrechnen sei hier noch eine kleine Hilfe angegeben:
Die Luminanz (Helligkeit, Grauwert) errechnet sich folgendermassen:
Y = 0.299 ∗ R + 0.587 ∗ G + 0.114 ∗ B
Chrominanz 1 (Bläue):
U = −0.168736 ∗ R − 0.331264 ∗ G + 0.5 ∗ B
Die Chrominanz 2 (Röte) oder der V-Wert kann somit leicht aus der obiger Matrix berechnet werden. Zu
beachten sei aber noch, dass der U- und V-Wert einen Wertebereich von [-0.5,0.5] haben und evtl. noch
in einen anderen Wertebereich (in [0,1] bzw. [0,255]) transformiert werden muss.
Für die Umrechnung in das Farbmodell HSV sind zunächst einige Hilfsgrössen zu bestimmen:
q
q
1
c = 23 R −
6 (G + B)
q
s = 12 (G − B)
m1 = max(R, G, B) m2 = min(R, G, B)
Dabei sind c und s dem Cosinus und Sinus des Farbwinkels proportional, ferner ist die Mehrdeutigkeit
KAPITEL 6. DIGITAL IMAGES
83
der inversen Winkelfunktionen zu berücksichtigen. Der Farbton H ergibt sich daraus als
180, wenn c < 0
s
H = arctan c +
360, wenn s < 0 und c > 0
Die Farbsättigung S ergibt sich dann als
S = m1 − m2
und die Helligkeit V ist
V = m1
6.3
Rasterbilder
Die Digitalisierung von Bilddaten verläuft in der Regel so, dass ein rechteckiges Raster über das (rechteckige) Bild gelegt wird. Jedem Feld des Rasters (genannt Pixel für “picture element”) wird ein Helligkeitsoder Farbwert zugeordnet, der der Helligkeit oder Farbe entspricht, die über das Feld gemittelt wurde.
Wichtige Eigenschaften jedes Bildes sind
• Bildgrösse (Höhe/Breite)
• Farbanzahl/Farbtiefe
– Monochrom (1 Bit)
– Graustufen (z.B. 8 Bit)
– Farbpaletten (z.B. 4-8 Bit)
– Echtfarben (z.B. 15, 16, 24, 32 Bit)
• Kompressionstechniken
– keine
– verlustlos (lossless)
– verlustbehaftet (lossy) - mit mehr oder weniger offensichtlichen Verlusten
6.3.1
Farbe in Rasterbildern
Obwohl die Anzahl der Farben, die das menschliche Auge wahrnehmen kann, durch 19 Bits (ca. 520.000
Farben) ausgedrückt werden kann, hat es sich als günstig erwiesen, die technische Auflösung auf eine
ganze Anzahl von Bytes aufzurunden (24 Bits). Dies erlaubt die gleichzeitige Darstellung (nicht Wahrnehmung!) von 16,7 Millionen Farben und erlaubt in jeder beliebigen Farbe Verläufe, die von Menschen
als kontinuierlich angesehen werden. Diese Darstellung wird deshalb als true color bezeichnet.
In den meisten Fällen wird der RGB-Farbraum verwendet und es werden je Grundfarbe 8 Bit Auflösung
zur Verfügung gestellt.
In vielen Fällen wird nicht für jedes Pixel einzeln eine Farbe gespeichert, sondern aus allen in einem Bild
vorkommenden Farben wird eine Tabelle gebildet. Für die entsprechenden Pixel wird dann lediglich ein
Index in dieser Farbtabelle gespeichert. Die Grafikformate GIF und TIFF verwenden diese Technik.
Gamma-Korrektur
Jedes Display ist anders und reagiert anders auf Erhöhung der Eingangsspannung. Bei Kathodenröhren
steigt die Leuchtkraft nicht linear mit der Eingangspannung, sondern in einer Potenz. Die lineare Umsetzung der binären Zahlen führt demnach zu einer nichtlinearen Steigerung der Farbintensität. Um dies
auszugleichen, kann eine auf die Hardware abgestimmte Color-LookUp Tabelle eingesetzt werden, die für
eine entsprechende Korrektur bei der Darstellung sorgt.
KAPITEL 6. DIGITAL IMAGES
84
Alpha-Kanal
Manche Formate verwenden ein zusätzliches Byte (24 Bit Farbe plus 8 bit Alpha Kanal (also insgesamt
32 Bit)) um z.B. Informationen über die Durchsichtigkeit (Transparenz) des Pixels geben zu können. Die
Verwendung des Alpha-Kanals ist jedoch nicht standardisiert.
6.4
Datenkompression
Da unkomprimierte Bilddaten sehr gross werden (Höhe * Breite * Farbauflösung in Bytes (nicht Bit!!)),
wurden sehr bald Methoden gesucht, diese Datenmenge zu verkleinern. Generell unterscheidet man
verlustlose (lossless) und verlustbehaftete (lossy) Algorithmen.
Ein unkomprimiertes Bild der Grösse 1024 x 768 Pixel in 24 Bit Farbtiefe (24 Bit = 3 Bytes) benötigt
).
daher 1024x768x24bit = 2304KBytes (= 1024x768x24
1024x8
Die verlustfreie Datenkompression sorgt dafür, dass die Codierung des Datenbestandes möglichst der
theoretischen Grenze (dem Informationsgehalt) nahekommt, entfernt aber keine Informationen aus dem
Datenbestand.
Beispiel: Bilddaten werden in bestimmten Formaten mit 8 Bit/Pixel codiert. Für ein schwarz/weiss Bild
wäre dies aber eine Verschwendung von 7 Bit/Pixel. Eine verlustfreie Datenkompression würde hier die
überflüssigen Bits entfernen.
Eine verlustbehaftete Datenkompression ist nur bei Daten möglich, die für menschliche Sinnesorgane
bestimmt sind. Aufgrund der Tätigkeit unseres Gehirns kann man bei Bildern, Audio- oder Videodaten
Informationen entfernen, ohne dass dies den subjektiven Eindruck verschlechtert.
6.4.1
Lauflängenkodierung
Bei der Lauflängenkodierung (RLE) werden Folgen von Mehrfachsymbolen durch ein Symbol und die
Angabe eines Zählers ersetzt. Diese sehr einfache Methode ist verlustlos, sehr schnell und einfach, hat
aber einen sehr niedrigen Wirkungsgrad bei abwechslungsreichem Bildinhalt.
Beispiel: aus den Rohdaten aaaaaaabbcccccccc wird so z.B. 7a 2b 8c. Aus 17 Bytes werden so 6 Bytes
(die Leerzeichen dienen nur der besseren Lesbarkeit!).
Bei binären Datenströmen (schwarz/weiss bzw. 0/1) kann Zusätzliches eingespart werden, indem nur die
Anzahl und nicht mehr der eigentliche Wert übertragen wird:
Beispiel: aus 0000000011100001111111110000 wird einfach 8 3 4 9 4. Eindeutigkeit wird erreicht,
indem der erste übertragene Wert sich immer auf eine Anzahl von Nullen bezieht (ist daher evtl. Null).
Im schlimmsten Fall kann aber die Lauflängenkodierung die Datenmenge vergrössern, anstatt sie zu
komprimieren:
Beispiel: aus abcdefg wird mit der obersten Kompressionsmethode 1a 1b 1c 1d 1e 1f 1g, also eine
Verdopplung der Datenmenge.
Dies kann durch z.B. durch escape-codes verhindert werden, indem keine fixen Positionen für Zähler
verwendet werden, sondern erst durch ein spezielles Zeichen wird ein Byte als Zähler interpretiert.
Beispiel: so kann aus abcdeeeeefffffffg folgendes entstehen: abcd+5e+7fg, wobei hier ’+’ als escapecode verwendet wurde.
Eine etwas andere Methode von RLE wird am Macintosh packbits benannt:
Jede Zeile beginnt mit Zählerbyte n, gefolgt von einem oder mehreren Datenbytes.
• n = 0 bis 127 : die nächsten n+1 Bytes werden direkt angegeben.
• n = -127 bis -1 : das nächste Byte wird -n+1 mal wiederholt.
• n = -128 : nicht verwendet.
KAPITEL 6. DIGITAL IMAGES
85
Mit dieser Methode, die übrigens auch beim Bildformat TIFF verwendet wird, liegt die Grösse der
komprimierten Daten im Worst-Case nur mehr geringfügig über der Originalgrösse.
Trotzalledem ist die Effizienz dieses Verfahrens eher gering und kommt nur bei sehr grossen Blöcken
von gleichen Symbolen auf eine gute Kompressionsrate. Lauflängenkodierung wird beim BMP-, PCX-,
JPEG- und vor allem beim Fax-Format (nur 2 Farben, schnell, einfach, grosse weisse Flächen) verwendet.
6.4.2
LZW-Codierung
Abraham Lempel und Jakob Ziv entwickelten 1977 den Grundstock dieses Algorithmus (LZ77 und LZ78),
der in vielen Text-Kompressionsalgorithmen und Archivierungsprogrammen (z.B. zoo, lha, pkzip oder
arj) verwendet wird. Terry Welch (damals bei Unisys) modifizierte 1984 den Algorithmus und so entstand
der LZW-Algorithmus, der für eine Vielzahl von unterschiedlichen Daten verwendet werden kann.
Die verlustlose Kompression nach Lempel-Ziv-Welch (LZW) beruht auf wiederkehrenden Mustern. Diese Muster bestehen aus Elementen des Grundalphabets und werden ebenso wie diese in eine Tabelle
(Wörterbuch) eingetragen. Die komprimierte Version eines solchen Abschnittes besteht aus der laufenden Nummer der entsprechenden Tabellenzeile. Bei wiederholtem Auftreten desselben Abschnittes wird
ebenfalls nur der Tabellenverweis geschrieben, ohne dass eine neue Tabellenzeile notwendig wäre. Die
Codetabelle wird im Laufe der Übertragung immer länger.
Durch eine geschickte Wahl des Verfahrens für die Tabelleneinträge und Verzicht auf die maximal mögliche
Kompressionsrate wird erreicht, dass die fertige Codetabelle nicht übertragen/gespeichert werden muss,
sondern durch den Dekompressionsalgorithmus selbst wieder dynamisch aufgebaut werden kann.
Die Codes haben entweder eine fixe Länge (z.B. bei 8 Bit Daten werden 12 Bit Codes verwendet) oder
eine variable Länge (bei GIF).
Bei Verwendung der fixen Länge, wird die Tabelle mit dem Grundalphabet gefüllt (normalerweise werden
also die ersten 256 Einträge des Wörterbuches zu Beginn mit den ASCII-Werten von 0 bis 255 gefüllt
(also ein 1:1 Mapping vom Zeichen zu Wert)). Für jedes neue Muster wird ein neuer Eintrag in der
Tabelle gemacht.
Prinzip: Ein neuer Substring wird erzeugt, indem ein neues Zeichen an einen bestehenden Substring
angehängt wird. Dieser neue Substring bekommt dann den nächsten freien Code im Wörterbuch.
Beispiel: Die Zeichenkette /WED/WE/WEE/WEB soll codiert werden. Das Wörterbuch wird zur Initialisierung
mit den ASCII-Zeichen von 0 bis 255 gefüllt.
char. input
/W
E
D
/
WE
/
WEE
/W
EB
code output
/ = <47>
W = <87>
E = <69>
D = <68>
<256>
E = <69>
<260>
<261>
<257>
B = <66>
new code value
<256> = /W
<257> = WE
<258> = ED
<259> = D/
<260> = /WE
<261> = E/
<262> = /WEE
<263> = E/W
<264> = WEB
Die codierte Zeichenfolge ist also /WED<256>E<260><261><257>B (eigentlich ja <47><87><69><68>
<256><69><260><261><257><66>).
Beim Decodieren wird nun auch wieder ein Wörterbuch aufgebaut:
KAPITEL 6. DIGITAL IMAGES
86
code input
/ = <47>
W = <87>
E = <69>
D = <68>
<256>
E = <69>
<260>
<261>
<257>
B = <66>
char output
/
E
D
/W
E
/WE
E/
WE
B
new code value
<256>
<257>
<258>
<259>
<260>
<261>
<262>
<263>
<264>
=
=
=
=
=
=
=
=
=
/W
WE
ED
D/
/WE
E/
/WEE
E/W
WEB
und die ursprüngliche Zeichenkette ausgegeben.
Ein weiteres Beispiel stammt aus [Lip97]:
Beispiel: Angenommen, es steht ein Alphabet, bestehend aus vier Zeichen, zur Verfügung: A,B,C,D. Die
LZW-Codetabelle wird folgendermassen initialisiert:
LZW-Code
0
1
2
3
Zeichen
A
B
C
D
Die zu kodierende Zeichenkette lautet ABCABCABCABCD (13 Zeichen).
Das erste Zeichen A kommt natürlich in der Tabelle vor. Deshalb merkt man es sich als Präfix. Das
nächste Zeichen B wird dem Präfix nachgestellt (Suffix) und es entsteht das aktuelle Muster AB. Dieses
ist in der Codetabelle nicht vorhanden, weshalb ein neuer Eintrag in der Zuordnungstabelle erforderlich
wird:
• LZW-Code 4: AB
Nun gibt man den Code <0> für das Präfix A aus, und B wird zum aktuellen Präfix. Das nächste Zeichen
C ergibt mit dem Präfix B das aktuelle Muster BC, das wiederum nicht in der Tabelle vorhanden ist.
Die nun erforderlichen Schritte sind:
• LZW-Code 5: BC
• Ausgabe von Code <1> (für B)
• neues Präfix: C
Das nächste Zeichen ist ein A, das zusammen mit dem Präfix C das Muster CA bildet. Dieses ist in der
Tabelle wieder nicht vorhanden, was zu folgender Tätigkeit führt:
• LZW-Code 6: CA
• Ausgabe von Code <2> (für C)
• neues Präfix: A
Das nächste zu betrachtende Muster lautet AB (Präfix A, Suffix B), für das bereits ein Eintrag in der
Codetabelle existiert (LZW-Code 4). Deshalb lautet das neue Präfix jetzt AB. Das nächste Muster ABC
(Präfix AB, Suffix C) ist in der Tabelle nicht vorhanden, weshalb wieder eine neuer Eintrag erforderlich
wird:
• LZW-Code 7: ABC
• Ausgabe von Code <4> (für AB)
KAPITEL 6. DIGITAL IMAGES
87
• neues Präfix: C
Hier macht sich der Algorithmus erstmals bezahlt, da zwei Zeichen mit einem Code ausgegeben werden
konnten.
Als neues Muster ergibt sich CA (Präfix C, Suffix A), das als neues Präfix gemerkt wird, da es in der
Codetabelle enthalten ist. Das Muster CAB (Präfix CA, Suffix B) kommt jedoch darin nicht vor:
• LZW-Code 8: CAB
• Ausgabe von Code <6> (für CA)
• neues Präfix: B
Auch das Muster BC (Präfix B, Suffix C) ist in der Zuordnungstabelle vorhanden. Weiter geht es dann
mit BCA (Präfix BC, Suffix A):
• LZW-Code 9: BCA
• Ausgabe von Code <5> (für BC)
• neues Präfix: A
Das nächste Muster lautet AB, das zum nächsten Präfix wird. Auch ABC ist in der Tabelle schon
vorhanden (LZW-Code 7). Beim Muster ABCD (Präfix ABC, Suffix D) wird die Codetabelle wieder
erweitert:
• LZW-Code 10: ABCD
• Ausgabe von Code <7> (für ABC)
• neues Präfix: D
Da nun das Ende der Daten erreicht ist, muss noch der LZW-Code für das verbleibende Präfix notiert
werden: LZW-Code 3. Insgesamt ergibt sich die Codefolge <0><1><2><4><6><5><7><3>.
Die Dekomprimierung erfolgt im Prinzip analog zur Komprimierung. Da die Codetabelle nicht übertragen
wird, muss sie beim Dekomprimieren neu erzeugt werden. Alles, was man dazu wissen muss, ist, wieviele
Zeichen (roots) es gibt und wie diese codiert werden. GIF löst dieses Problem auf elegante Weise,
indem die LZW-Datengrösse zu Beginn der Bilddaten gespeichert wird. Daraus ergeben sich die ersten
2LZW −Datengroesse Einträge in der Codetabelle. Anschliessend wird jeder LZW-Code decodiert und ein
neuer Code in der Tabelle erzeugt (Präfix und Suffix). Dieser ergibt sich aus den Zeichen des letzten
Codes (Präfix) und dem ersten Zeichen des aktuellen Codes (Suffix). Anschliessend merkt man sich
die ausgegebenen Zeichen, um sie für den nächsten Code als Präfix zu verwenden. Die nachstehende
Tabelle demonstriert die Dekomprimierung des obigen Beispiels. Zu Beginn ist die Codetabelle mit den
Elementarzeichen A,B,C,D belegt:
Code
<0>
<1>
<2>
<4>
<6>
<5>
<7>
<3>
Char. Output
A
B
C
AB
CA
BC
ABC
D
Neuer Code
<4> = AB
<5> = BC
<6> = CA
<7> = ABC
<8> = CAB
<9> = BCA
<10> = ABCD
Präfix
A
B
C
AB
CA
BC
ABC
KAPITEL 6. DIGITAL IMAGES
88
Wenn die Code-Tabelle voll ist, wird die aktuelle Kompressionsrate überprüft und bei Bedarf ein CLEARCode (z.B. bei GIF 2Code−Size ) ausgegeben, der signalisiert, dass das Wörterbuch gelöscht werden soll
um danach ein neues aufzubauen.
Der LZW-Algorithmus wird von den Grafikformaten GIF und TIFF verwendet und liefert Kompressionswerte von Faktor 2 bis 3, bei Daten mit vielen ähnlichen Mustern bis zu Faktor 10.
Ein Hauptproblem dieser Kompressionsmethode ist, dass Unisys auf Teile ein Patent hat und so die Benutzung lizenzpflichtig ist. Vor allem Compuserves GIF Format verwendet seit 1987 diesen Algorithmus,
aber erst 1993 erfuhr Unisys davon und seit 1995 sind alle Programme, die GIF verarbeiten, lizenzpflichtig
(eigentlich ist die Implementation des LZW-Algorithmuses lizenzpflichtig). [MvR96]
6.4.3
Huffman Codierung
Bei der Huffman-Codierung werden den Zeichen eines Datenstromes Codes verschiedener Länge zugewiesen. Dabei erhalten diejenigen Zeichen die kürzesten Codes, die in der Nachricht am häufigsten auftreten.
Dieses Prinzip wurde auch schon vor Beginn des Computerzeitalters verwendet: Der am häufigsten in
Texten auftretende Buchstabe “e” hat als Morsecode einen einzelnen “Punkt”.
Dieser verlustlose Komprimierungs-Algorithmus wurde schon 1952 erfunden und zeichnet sich dadurch
aus, dass die Decodierung sehr schnell geht. Die Codierung (Kompression) erfordert jedoch 2 Durchläufe:
1. Die relativen Häufigkeiten aller Zeichen muss erfasst und ein Codierungsbaum erstellt werden.
2. Die Daten werden mit Hilfe des Codierungsbaumes codiert.
Beispiel: Die Zeichenkette abbbbccddddddeeeeeee soll codiert werden. Folgende Tabelle gibt Auskunft
über die relativen Häufigkeiten der einzelnen Zeichen.
Zeichen
a
b
c
d
e
Summe:
Anzahl
1
4
2
6
7
20
p
0.05
0.20
0.10
0.30
0.35
1.0
Der Codebaum für diese Verteilung ist in Abbildung 6.5 zu sehen. Er wird nach folgendem Prinzip
erstellt: Fasse die beiden Gruppen niedrigster Häufigkeit zusammen und addiere ihre Häufigkeit. Linke
Äste werden mit “0”, rechte mit “1” codiert (in diesem Beispiel).
1.0
0
1
0.35
0
1
0.15
0.65
0
1
a
0.05
c
0.10
b
0.20
0
1
d
0.30
e
0.35
Abbildung 6.5: Codebaum für die Huffman-Codierung für gegebene relative Häufigkeiten einzelner Zeichen
KAPITEL 6. DIGITAL IMAGES
89
Die gegebene Zeichenkette wird demnach mit 000, 01, 01, 01, 01, 001, 001, 10, 10, 10, 10, 10, 10,
11, 11, 11, 11, 11, 11, 11 codiert. Der Ergebniscode würde natürlich mit 8 Bit pro Byte codiert und
somit 00001010, 10100100, 11010101, 01010111, 11111111, 111xxxx ergeben. Die 20 Bytes der Eingabe
wurden auf nur 6 Byte komprimiert!
Im Allgemeinen komprimiert dieses Verfahren (für ein verlustloses Verfahren) sehr gut (Faktor 2 bis
Faktor 8).
Ein Nachteil des Huffman-Verfahrens ist, dass vor der eigentlichen Codierung / Decodierung die statistische Verteilung der Zeichen einer Nachricht bekannt sein muss bzw. die Codetabelle mitgespeichert
werden muss.
Eine Erweiterung des Huffman-Verfahrens, welches diesen Nachteil aufhebt, ist die adaptive HuffmanCodierung. Schlüssel zu ihrem Verständnis ist, dass sowohl Encoder als auch Decoder dieselbe Routine
zur Änderung der Baumstruktur benutzen. Die Codetabelle wird im Laufe der Codierung immer “besser”. Der eigentlich verwendete Code kann sich von einem Zeichen zum nächsten komplett ändern, diese
Veränderung wird aber beim Decodieren nachvollzogen. Für spezielle Anwendungen kann auch eine fixe
Code-Tabelle festgelegt werden.
Ein weiterer Nachteil des Huffman-Algorithmus ist, dass sich kleine Übertragungsfehler dramatisch auswirken. Schon das Kippen eines Bits kann die Missinterpretation aller nachfolgenden Daten nach sich
ziehen.
Folgende Bildformate verwenden die Huffman-Codierung:
• TIFF
• TGA
• Lossless JPEG (alternativ zur arithmetischer Komprimierung)
• PNG (in Kombination mit LZ77)
• G3 FAX
6.4.4
Verlustfreie JPEG Kompression
Dieses (weniger gebräuchliche) Kompressionsverfahren wurde 1991 bis 1993 durch die Joint Photographers
Expert Group (JPEG) entwickelt und ist von der CCITT standardisiert worden (ISO-10918). Die JPEGKompression von Bilddaten ist farbenblind, d.h. sie muss gegebenenfalls für jeden Farbkanal eines Bildes
separat durchgeführt werden. JPEG ist eigentlich kein Dateiformat, dieses hat vielmehr die Abkürzung
JFIF (JPEG File Interchange Format).
Im verlustfreien Modus der JPEG-Kompression werden die einzelnen Pixel eines Bildes aus den benachbarten Pixeln vorhergesagt, und zwar nach einem von 7 möglichen Algorithmen. Dabei wird der Algorithmus ausgewählt, welcher den Vorhersagewert möglichst nahe an die tatsächliche Bildinformation des
gesuchten Pixels heranbringt. In den Ausgabestrom wird dann die Nummer des gewählten Algorithmus,
sowie die Differenz zwischen Vorhersagewert und tatsächlichem Datenwert geschrieben.
Nr.
0
1
2
3
4
5
6
7
Algorithmus
A
B
C
A+B-C
A + (B - C)/2
B + (A - C)/2
(A + B)/2
Wobei sich ’A’ auf das Pixel links, ’B’ auf das Pixel oberhalb und ’C’ auf das Pixel links-oberhalb des
aktuellen Pixels bezieht.
KAPITEL 6. DIGITAL IMAGES
Kompressionsfaktor
4:1 bis 5:1
5:1 bis 10:1
10:1 bis 20:1
20:1 bis 30:1
30:1 bis 40:1
90
subjektive Bildqualität
mit blossem Auge nicht vom Original unterscheidbar
exzellente Qualität
gute Qualität
sichtbare Vergröberung
“Klötzchengrafik”
Tabelle 6.1: Kompressionsfaktoren bei verlustbehafteter JPEG-Kompression
Durch die Flexibilität bei der Vorhersage sind die meisten dieser Differenzwerte nahe bei Null, sie können
darum effizient mit Hilfe z.B. der Huffman-Codierung komprimiert werden. Mit der verlustfreien JPEGKompression sind Einsparungen beim Datenvolumen von Bilddaten von bis zu ca. 50% möglich. [Hen00]
6.4.5
Verlustbehaftete JPEG Kompression
In der verlustbehafteten Ausprägung basiert das JPEG-Verfahren auf einer speziellen Fourier-Transformation (einer diskreten Cosinus-Transformation), d.h. einer Transformation der Bildinformation in den
Frequenzraum. Durch Quantisieren, d.h. Rundung der Fourier-Koeffizienten, werden die höheren Glieder
dieser Transformation und damit die feineren Details der Bildinformation unterdrückt.
Tabelle 6.1 aus [Hen00] zeigt eine Auflistung der erreichbaren Kompressionsfaktoren und die Auswirkungen auf die subjektive Bildqualität.
Die Komprimierung der Grafikdaten mit der verlustbehafteten JPEG Kompression erfolgt in mehreren
Schritten:
1. Datenreduzierung: Das Auge ist nicht in der Lage, so viele Farbdetails zu unterschieden wie Unterschiede in der Helligkeit (siehe Abbildung 6.6). Das RGB-Farbmodell (Abschnitt 6.2.1) wird
deshalb nach YUV (Abschnitt 6.2.3) oder nach YIQ (Abschnitt 6.2.4) umgewandelt (je nachdem,
welcher Literatur man glauben darf), wobei die Farbanteile auf die Hälfte (Y:U:V = 2:1:1) oder
auf ein Viertel (Y:U:V = 4:1:1) der Auflösung reduziert werden. Bei einer Umwandlung auf 4:1:1
stehen für die Farbinformation (U und V) nur noch 2 Bit für die Farbanteile (anstatt 8 Bit vor der
Umwandlung) zur Verfügung, während für die Helligkeit (Y) immer noch 8 Bit verwendet werden.
Dies ergibt schon eine Datenreduktion von 50%.
Das Bild wird zusätzlich noch in 8x8 Pixel Blöcke pro Kanal (Y, U, V) oder nur für die Luminanz
(Y) aufgeteilt. Die weiteren Schritte werden dann jeweils auf solche Makroblöcke durchgeführt.
Abbildung 6.6: Kleine Änderungen der Helligkeit sind für das menschliche Auge leichter zu erkennen (kleines
Quadrat links) als kleine Änderungen des Farbtons (kleines Quadrat rechts - fast unsichtbar).
KAPITEL 6. DIGITAL IMAGES
91
2. Diskrete Cosinus-Transformation (DCT): Die DCT basiert auf der Fourier-Transformation, die
beliebige Signale als Überlagerung von Sinuswellen verschiedener Frequenzen und Amplituden darstellt. Aus der örtlichen Verteilung von Pixelwerten in einem Bild entsteht nach der Fourier-Transformation eine Frequenz- und Amplitudenverteilung. Grosse, regelmässige Flächen schlagen sich
dabei in den niederen Frequenzanteilen nieder, feine Details in den hohen. Der überwiegende Anteil
der visuellen Information eines Bildes mit kontinuierlich verteilten Werten liegt im Bereich niederer
Frequenzen.
Für jeden Makroblock wird die DCT des Helligkeitswertes f (i, j) in den Frequenzraum durchgeführt:


7
7
(2j + 1)vπ 
(2i + 1)uπ
1 X X
· cos
C(u) · C(v) · f (i, j) · cos
F (u, v) =
4 i=0 j=0
16
16
C(u) =
C(v) =
√1
2
√1
2
wenn u = 0, sonst C(u) = 1
wenn v = 0, sonst C(v) = 1
Das Ergebnis der DCT ist wiederum ein Satz von 8x8 Koeffizienten je Makroblock, wobei sich die
niederen Frequenzen links oben, die höheren Frequenzen rechts unten niederschlagen.
3. Quantisierung: Die Quantisierung ist der eigentlich verlustbehaftete Schritt. Aus dem linearen
Verlauf der Werte erfolgt die Bildung einer stufenartigen Anordnung, d.h. Division von F (u, v)
durch eine Zahl q(u, v) und Rundung der Resultate. Diese Quantisierung ist die Hauptquelle der
zunehmenden Ungenauigkeit bei mehrfacher JPEG-Kompression.
Q
F (u, v) = round
F (u, v)
q(u, v)
Dabei ist entweder eine gleichförmige Quantisierung möglich (ein q(u, v) für alle u, v oder es wird
eine Tabelle (Beispielsweise Tabelle 6.2) zugrunde gelegt. Diese Tabelle kann entweder eine Standardtabelle sein, oder eine eigene, die auch in der JFIF-Datei mitgespeichert werden kann. Dabei
werden meist niedrigere Frequenzen (links oben) weniger geteilt, während die hohen Frequenzen
(rechts unten) durch höhere Werte dividiert werden [Küs95]. Je grösser der Quantisierungsfaktor,
desto kleiner sind die zu speichernden Werte, die sich somit mit weniger Bits kodieren lassen.
16
12
14
14
18
24
49
72
11
12
13
17
22
35
64
92
10
14
16
22
37
55
78
95
16
19
24
29
56
64
87
98
24
26
40
51
68
81
103
112
40
58
57
87
109
104
121
100
51
60
69
80
103
116
120
103
61
55
56
62
77
92
101
99
Tabelle 6.2: Quantisierungstabelle von JPEG [Hen00]
Die standardisierten Quantisiertabellen wurden durch Versuche mit Testpersonen erstellt, bei denen
herausgefunden wurde, welche fehlenden Farben/Frequenzen das subjektive Sehen am wenigsten
beeinflussen.
4. Entropie Codierung: Der Fourier-Koeffizient F Q (0, 0) heisst DC-Koeffizient (von directed current,
Gleichstrom) und stellt den Gleichanteil dar. Er wird für alle Kompressionsmodi übertragen. Er
gibt (bezogen auf den jeweiligen Farbkanal) den mittleren Helligkeitswert des Makroblocks wieder.
Dieser Wert ist meist ähnlich dem Wert des vorhergehenden 8x8 Makroblocks. Es wird darum nur
der Differenzwert zum vorhergehenden 8x8 Makroblock übertragen.
Die weiteren Fourier-Koeffizienten heissen AC-Koeffizienten (von alternating current, Wechselstrom). Sie werden nach dem DC-Koeffizienten normalerweise in der sogenannten Zick-ZackSerialisierung übertragen (Abbildung 6.7). Dabei erfolgt zunächst eine Lauflängen-Codierung (RLE,
KAPITEL 6. DIGITAL IMAGES
i
j
f(i,j)
92
DC
u
v
F(u,v)
Abbildung 6.7: Zick-Zack-Serialisierung der DCT bei der JPEG-Kompression
Abschnitt 6.4.1), die von der Zick-Zack Reihenfolge profitiert, da so öfters ähnliche Werte direkt
hintereinander stehen und somit besser komprimiert werden können.
Schliesslich werden die dadurch erhaltenen Werte noch entropiecodiert (Huffman-Coding, Lauflängenkodierung, etc.) . Die evtl. vorhandene Huffman-Tabelle wird zusammen mit der evtl. vorhandenen
Quantisierungstabelle im Header der Bilddatei gespeichert.
Das Decoding von JPEG-Daten erfolgt blockweise und führt die inversen Schritte der Kompression in
umgekehrter Reihenfolge durch:
• Entropie-Decoding (lt. Huffman-Tabelle)
• Dequantisierung
• Inverse Diskrete Cosinus-Transformation
• Umwandeln in RGB-Werte
Progressive Encoding
Im progressiven Modus werden die Quantisierungswerte nicht blockweise, sondern nach Frequenzen bzw. Frequenzbereichen sortiert gespeichert (sog. slices oder scans). Zuerst wird hier der Gleichanteil (DC), dann
niedrige Frequenzteile bzw. die wichtigsten Bits der AC-Koeffizienten für alle Blöcke und erst zuletzt
höhere Frequenzteile übertragen.
Im hierarchischen Modus wird ein Bild zunächst in grober Auflösung codiert, die nächstfeinere Auflösung
wiederum wird nur als Differenz zur gröberen übertragen.
JPEG Eigenschaften
JPEG-Kompression eignet sich sehr gut für photorealistische Bilder und bietet hierfür sehr gute Kompressionsraten (Tabelle 6.1). Harte Übergänge im Bildmaterial bilden Artefakte (siehe Abbildung 6.8)
oder werden unscharf. Zusätzlich verringert sich die Qualität, wenn Bilder öfter hintereinander mit JPEG
komprimiert/dekomprimiert werden. Daher eignen sich Bildformate, die JPEG-Kompression verwenden,
nicht für Bildbearbeitung.
Der Algorithmus ist sehr aufwendig und daher eher langsam.
KAPITEL 6. DIGITAL IMAGES
93
Abbildung 6.8: Sehr hohe (1:100) Kompressionsrate (und zusätzlicher Zoomfaktor) bei JPEG zeigt deutlich die
8x8 Makroblöcke und lässt die Frequenz-Transformation (und Beschneidung) erahnen (beim Text)
6.4.6
JPEG 2000
1997 begannen die Bemühungen zur Schaffung eines neuen Standards mit dem Namen JPEG20002 .
Hauptkritikpunkte am alten JPEG-Standard sind unter anderem die geringe Bildqualität bei mittleren
und hohen Kompressionsraten, die unbefriedigende progressive Darstellung und die mangelnde Fehlertoleranz bei Online- und Mobilfunk-Anwendungen. Darüber hinaus soll durch eine offene Architektur
des neuen Standards eine Optimierung für unterschiedliche Anwendungsbereiche ermöglicht werden, zum
Beispiel Digitalfotografie, medizinische Bildverarbeitung, Druckvorstufe und Publishing, digitale Bildarchivierung, mobile Kommunikation, Telefax (auch in Farbe), Satellitenfernerkundung und natürlich die
Internetübertragung.
Der JPEG2000 Standard unterteilt sich in sechs Teile, von denen der erste die Grundfunktionalität bereit
stellt und lizenzfrei ist. Der zweite Teil der Spezifikation stellt einige Erweiterungen zur Verfügung und
wurde Ende 2001 fertig gestellt (nicht lizenzfrei). Ein wichtiger weiterer Abschnitt ist Teil 3, der sich
dem Speichern von bewegten Bildern widmet: Motion JPEG2000 beruht auf den in Teil 1 festgelegten
Verfahren zum Speichern von stehenden Bildern. Weitere Teile befassen sich mit Konformitätstests,
Referenzsoftware und einem Spezialformat für gemischte Dokumente. [Tri01]
Folgende Anforderungen wurden an den neuen Standard gestellt [BBJ99]:
• höhere Auflösung: JPEG unterstützte 24 Bit Farbtiefe und eine Bildgrösse von 65535 x 65535 Pixel.
JPEG2000 komprimiert Bilder mit bis zu 16384 Komponenten (z.B. Farbkanäle) zu jeweils 38 Bit
Tiefe, woebei die Komponenten unterschiedliche Bittiefen haben können. Die maximale Grösse der
Bilder beträgt knapp 4.3 Milliarden Pixel (232 − 1) im Quadrat [SMM01].
• bessere Bildqualität als JPEG bei mittleren und hohen Kompressionsraten. Siehe dazu auch Abbildung 6.9
• wahlweise verlustbehaftete oder verlustfreie Kompression
• mehrere Arten der progressiven Übertragung: auflösungsabhängig, qualitätsabhängig oder positionsabhängig (beispielsweise von links oben nach rechts unten)
• Erfassung von Echtfarb-, Graustufen- und Schwarzweissbildern
• Arbeit mit begrenzten Ressourcen (Übertragungs- oder Speicherkapazität sowie Arbeitsspeicher)
und in Echtzeitumgebungen
• freier Zugriff auf Teilbereiche eines kodierten Bildes
2 http://www.jpeg.org/JPEG2000.htm
KAPITEL 6. DIGITAL IMAGES
94
Abbildung 6.9: Das linke Bild ist mit JPG bei 0.125 Bits per Pixel komprimiert. Das rechte ist bei gleicher
Datenrate mit JPG2000 komprimiert. Man sieht deutlich die schlechtere Qualität der JPG Kompression [CS01].
Bei 8 Bit pro Pixel entspricht 0.125bpp einem Kompressionsfaktor von 1:64.
• Robustheit gegenüber Übertragungsfehlern. Bei JPG leidet die Bildqualität dramatisch, wenn BitFehler auftreten.
• Möglichkeit der Definition besonders wichtiger Bildregionen (ROIs, Regions of Interest), die mit
höherer Genauigkeit kodiert werden. Abbildung 6.10 zeigt ein Beispiel, in dem das Gesicht der
Person mit höherer Qualtät gespeichert wurde.
Abbildung 6.10: Bei JPG 2000 ist es möglich, bestimmte Regionen eines Bildes mit höherer Qualität zu
speichern[CS01].
• Mitübertragung von Randinformation wie etwa stufenlose Transparenz
• offene Architektur, die Optimierungen auf spezielle Bildklassen erlaubt
• Rückwärtskompatibilität zu JPEG und Verträglichkeit mit MPEG-4 sowie bestehenden Fax-Standards
• Unterstützung von Metadaten, etwa zur Beschreibung der Bildinhalte, sowie von Mechanismen zum
Schutz der Eigentums- und Verwertungsrechte
Je nach Anwendung spielen diese Anforderungen wichtigere bzw. unwichtigere Rollen. Für mobile Anwendungen (Handy, PDA, ...) spielt z.B. die progressive Übertragung eine wichtige Rolle. Für satelliten-
KAPITEL 6. DIGITAL IMAGES
95
gestützte Abtastung der Erdoberfläche (Remote Sensing) ist die Robustheit gegenüber Übertragunsfehlern wichtiger. Und im medizinischen Bereich sind Regions of Interest unbedingt von Nöten.
Eine engdültige Verabschiedung des neuen Standards ist Ende 2000 geschehen (Final Commitee Draft).
JPEG2000 verwendet keine Weiterentwicklung der Diskreten Cosinus Transformation von JPEG, sondern
eine ganz neue Technik, die Wavelet Kompression.
JPEG2000 Kodierung
Mit Hilfe des JPEG-Verfahrens sind Kompressionsraten von etwa 1:35 in akzeptabler Bildqualität zu
erreichen. Die Wavelet-Kompression ermöglicht Raten von etwa 1:65. Unter den hier vorgestellten Kompressionsverfahren ist dieses sicherlich das mathematisch anspruchsvollste. Die Strategie ist mit JPEG
vergleichbar. Es wird versucht, im Bild nicht wahrnehmbare Details zu entfernen. Hierbei wird es jedoch
nicht komplett in Frequenzkomponenten zerlegt, sondern nach und nach immer gröbere Bildstrukturen
herausgefiltert.
Die JPG2000 Kodierung teilt sich in 4 Schritte auf [CS01]:
1. Wavelet Transformation
2. Scan Algorithmus
3. Quantisierung
4. Entropie Kodierung
Eine Wavelet-Transformation wandelt das Originalbild in Wavelet-Koeffizienten um, die im Prinzip verkleinerte Kopien des Ausgangsbilds beschreiben. Zusätzlich enthalten diese Koeffizienten noch hoch- und
tiefpassgefilterte Versionen dieser Bilder.
Abbildung 6.11 zeigt den mathematischen Hintergrund einer Wavelet Transformation. Die Funktion
f (x) kann aus gedehnten, gestauchten und verschobenen Kopien seiner selbst dargestellt werden3 . Das
zugehörige Wavelet g(x) kann aus denselben Basisfunktionen erzeugt werden[BBSS99].
f(x)
f(x/2)
f(x/2−1/2)
g(x)
Abbildung 6.11: Die Haar-Funktion f (x) kann durch verkleinerte (und verschobene) Kopien ihrer selbst beschrieben werden. Das zugehörige Wavelet g(x) wird nun aus der gleichen Basisfunktion konstruiert.
Ein Wavelet-transformiertes Bild besteht sozusagen aus gedehnten, gestauchten und verschobenen Kopien
seiner selbst [BBSS99]. Abbildung 6.12 zeigt ein solches Bild.
Die eigentliche Kompression erfolgt im sogenannten Quantisierungsschritt (Rundung). Der bereits verabschiedete Teil des Standards (Teil 1) definiert zwei Transformationen: eine ganzzahlig arbeitende für
die verlustlose und eine Gleitkommavariante für die verlustbehaftete Kompression.
3 In der Mathematik wird ein Satz von Funktionen, aus denen andere Funktionen zusammengesetzt werden, als Basis
bezeichnet. Die Haar-Basis von 1910 ist eines der einfachsten Beispiele für eine Wavelet-Funktionenbasis.
KAPITEL 6. DIGITAL IMAGES
96
Abbildung 6.12: Die Wavelet Transformation beruht auf der Tatsache, dass das Signal aus verkleinerten Kopien
seiner Selbst dargestellt werden kann[BBSS99].
Anschliessend wird das Ergebnis noch einer Entropie-Codierung (z.B. Run-Length Coding) unterworfen.
[Hol00, BBSS99, SMM01]
Bei JPEG führt die Blockbildung zu störenden Mosaikartefakten bei hoher Komprimierung (‘Klötzchenbilder’), da benachbarte Bildblöcke nach der Kodierung nicht mehr nahtlos aneinander passen. Im aktuellen JPEG-2000-Vorschlag wird deshalb die Einteilung in Blöcke erst nach der Wavelet-Transformation
angesetzt. Dadurch können die einzelnen Blöcke unabhängig voneinander kodiert und dekodiert werden.
Abweichungen zwischen den Blöcken - etwa durch Datenverlust bei der Übertragung - treten aber nicht
an den Blockkanten auf, sondern werden durch die Wavelet-Transformation geglättet. Dass dies gelingt,
verdankt man der Eigenschaft der Wavelet-Transformation, nur die Umgebung eines Pixels zu beachten.
[BBJ99]
Mittlerweile existieren verschiedene Programme, die JPEG2000 Dateien codieren/decodieren können
(u.a. eine Java Implementation einer Universität von Lausanne4 ). Andere Links sind auf der Homepage von JPEG20005 angegeben.
6.4.7
Fraktale Kompression
Die verlustbehaftete fraktale Bildkompression basiert auf fraktaler Geometrie. 1988 wiesen Michael
Barnsley und Alan Sloan die Möglichkeit einer solchen Bildkompressionsmethode nach. Die Grundlage dafür war die Beobachtung, dass natürliche Objekte oft nicht geraden Linien folgen und keine glatten
Oberflächen besitzen, mit denen die klassische Geometrie arbeitet. Viele Formen der Natur gehorchen
der fraktalen Geometrie. Ihre schroffen, scheinbar zufälligen Formen treten im Grossen, wie im Kleinen
auf.
Beispiel: Beim Rand einer Wolke treten bei zunehmender Vergrösserung immer wieder die gleichen
(gedrehten, gespiegelten) Formen auf.
Dieses Verfahren liefert bis zu einer Kompressionsrate von etwa 1:25 ähnlich gute Ergebnisse wie JPEG.
4 http://jj2000.epfl.ch
5 http://www.jpeg.org/JPEG2000.htm
KAPITEL 6. DIGITAL IMAGES
97
Bei höheren Raten ergeben sich bei JPEG grobe Rasterungen.
Die fraktale Kompression ist sehr zeitaufwendig, die Dekompression eines fraktal komprimierten Bildes
erfolgt jedoch sehr schnell.
Zur Zeit existiert noch kein Standardbildformat, das dieses Kompressionsverfahren nutzt. [Hol00]
6.5
Bildformate
Im Folgenden werden einige der bekanntesten Dateiformate für digitale Rasterbilder vorgestellt. Die
Eigenschaften des jeweiligen Formats bestimmen oft den Einsatz (z.B. JPEG für photorealistische Bilder,
PNG für Screenshots, ...).
6.5.1
BMP
Bei dem Bitmap (BMP) Format handelt es sich um eines der einfachsten Formate für Bilddaten. Es ist
vor allem in der Windows Welt weit verbreitet.
Als Kompressionsalgorithmus kann RLE (Abschnitt 6.4.1) verwendet werden. Bei Bildern mit 1-, 4- oder
8-Bit Farbinformation enthält der Pixelwert nicht direkt die Farbinformation, sondern einen Index auf
die Farbpalette.
6.5.2
TIFF
Das TIFF-Format wurde bereits 1986 von Aldus Corporation (seit 1994 Adobe) entwickelt. Oberstes Ziel
war Portabilität und Hardwareunabhängigkeit. TIFF ist sehr universell einsetzbar und ist in der Lage,
Schwarzweiss-, Grauwert- und Farbbilder inkl. des jeweils verwendeten Farbmodells zu enthalten.
Da es viele Varianten von TIFF-Bildern gibt, kann es ab und zu zu Problemen kommen. Viele Programme
unterstützen nur einen Teil aller TIFF-Varianten (verschiedene Kompressionsmethoden, etc.).
6.5.3
GIF
GIF wurde von Compuserve 1987 entwickelt (GIF87a) und 1989 verbessert (GIF89a - zu GIF87a kompatibel). Vor allem durch die Aufnahme von GIF in die HTML-Spezifikation hat dieses Format ungeheure
Verbreitung erlangt. Das Patentproblem (siehe dazu auch The GIF Controversy: A Software Developer’s
Perspective 6 ) mit Unisys wegen der Implementation des LZW-Kompressionsalgorithmus (Abschnitt 6.4.2)
hat allerdings viele Firmen dazu bewogen, ein anderes Fileformat zu favorisieren. GIF ist dennoch sehr
verbreitet und wird für viele Gelegenheiten (vor allem im Web) immer noch benutzt (u.a. weil es im
Gegensatz zu JPEG Transparenz und Animationen erlaubt).
GIF unterstützt eine Farbtabelle von 256 Farben in 24 Bit. D.h. in einem GIF-Bild können nur 256
verschiedene Farben vorkommen, diese können jedoch beliebig aus dem gesamten RGB-Farbraum gewählt
werden.
In eine GIF-Datei können mehrere Bilder gespeichert werden, nicht nur eines! Im GIF87a-Format können
diese Bilder gleichzeitig angezeigt werden. Eine Offsetangabe pro Bild bestimmt das Pixel links/oben, wo
dieses Bild eingeblendet wird. GIF89a unterstützt Animationen, indem ein Wert in 1/100sec angegeben
wird, wann das nächste Bild dargestellt werden soll.
Das GIF-Format kennt einen interlaced Modus, in welchem die einzelnen Bildzeilen nach Art eines binären
Baums umgeordnet werden. Dies kann benutzt werden, um GIF-Bilder bei der Anzeige zunächst grob
gerastert und dann sukzessive verfeinert darzustellen.
Beispiel: Gegeben sei ein Bild von 13 Zeilen. übertragen werden zuerst die Zeilen 0 und 8. Es folgen die
Zeilen 4 und 12, danach 2,6,10 und abschliessend 1,3,5,7,9,11.
6 http://cloanto.com/users/mcb/19950127giflzw.html
KAPITEL 6. DIGITAL IMAGES
98
GIF89a unterstützt transparente Farbe. D.h. ein Eintrag der Farbtabelle wird als transparent gekennzeichnet und alle Pixel dieser Farbe erscheinen durchscheinend.
Zusätzlich ermöglicht GIF89a, dass Anwendungen spezifische Informationen im Bildformat abspeichern
(Bildbeschreibungstexte, Keywords, ...).
Eine kurze Zusammenfassung der Eigenschaften von GIF:
• LZW-Komprimierung (Patent von Unisys)
• max. 256 Farben zu je 24 Bit
• mehrere Bilder in einer Datei (Animationen)
• interlaced Bildaufbau
• Transparenz
• Texte können mitgespeichert werden
6.5.4
PNG
PNG (gesprochen ’ping’) (Portable Networks Graphics) ist ein Dateiformat, das vor allem dazu gedacht
ist, das GIF-Format wegen des LZW-Patent/Lizenzproblems zu ersetzen. Darum auch die inoffizielle
rekursive Abkürzung des Namens PNG zu “PNG’s Not GIF”. PNG wurde als einfaches Dateiformat
vom W3C spezifiziert7 , das leicht zu implementieren ist, portabel und das alle Eigenschaften von GIF
beherrscht ([ea96] bzw. [MvR96, p.700–719]).
Folgende Aufzählung zeigt Eigenschaften, die sowohl GIF (GIF89a) als auch PNG besitzen:
• Daten als Datenstrom organisiert
• verlustlose Datenkompression
• Speicherung von Bildern mit Farbtabelle mit bis zu 256 verschiedenen Farben
• progressiver Bildaufbau von interlaced Bildern
• Transparenz (Ein Test, welche Transparenzen ein Browser unterstützt, ist unter http://entropymine.
com/jason/testbed/pngtrans/ zu finden.)
• Möglichkeit benutzerdefinierte Daten zu speichern (keywords, ...)
• Hardware- und Betriebssystemunabhängig
Folgende GIF-Eigenschaften wurden bei PNG verbessert:
• keine Patente, keine Lizenzprobleme
• Schnellerer progressiver Bildaufbau
• Mehr Möglichkeiten, benutzerdefinierte Daten zu speichern
Folgende Features von PNG gibt es bei GIF überhaupt nicht:
• Speicherung von true-color Bildern mit bis zu 48 Bit pro Pixel (nicht indiziert!)
• Speicherung von grayscale Bilder mit bis zu 16 Bit pro Pixel (nicht indiziert!)
• Alpha Channel
• Gamma Indikator
7 http://www.w3.org/TR/REC-png
KAPITEL 6. DIGITAL IMAGES
99
• CRC-Prüfsumme um Fehler bei der Übertragung zu entdecken
• Standard Toolkit, um die Implementierung von PNG-Lese- und -Schreib-Routinen zu erleichtern
• Standard Set von Benchmark Bildern, um Implementationen zu testen
Folgende GIF Features wurden in PNG 1.0 nicht spezifiziert:
• Speicherung mehrerer Bilder in einer Datei (wird von MNG (Multi Image Network Graphics)8
übernommen)
• Animationen
• Zahlung einer Lizenzgebühr, wenn Software verkauft werden soll, die das PNG-Fileformat lesen
oder schreiben kann. D.h. es fällt keine Lizenzgebühr an (im Gegensatz zu GIF).
Interlacing
PNG Bilder werden typischerweise als Serie von scan-lines gespeichert (von oben nach unten). Zusätzlich können die Bilddaten aber auch in einem speziellem Interlace-Muster gespeichert werden, um eine
progressive Anzeige von niederer zu höherer Auflösung zu ermöglichen. PNG verwendet ein Schema mit
sieben Durchgängen, Adam7 genannt. PNG verwendet die ersten sechs Durchgänge, um die geraden
Zeilennummern (0,2,4,6,8,...) und den letzten, siebten, um die ungeraden Zeilen (1,3,5,7,...) darzustellen.
Die ersten sechs Durchgänge übertragen keine ganzen Zeilen, sondern immer nur bestimmte Pixel pro
Zeile. Die ersten beiden Durchgänge enthalten 1/64 der Pixel des Bildes. Die folgenden übertragen ein
1/32, 1/16, 1/8, 1/4 und der letzte schliesslich 1/2 des Bildes (GIF überträgt 1/8,1/8,1/4,1/2). Ein guter
Vergleich der beiden Interlacingverfahren ist unter http://www.libpng.org/pub/png/pngintro.html#
interlacing zu sehen.
Das Bild selbst wird zuerst in 8x8, dann in 4x8, 4x4, 2x4, 2x2, 1x2 Blöcken dargestellt. Der letzte
Durchgang füllt die ungeraden Zeilen.
Mit diesem Verfahren kann das menschliche Auge schon nach ca. 30% übertragener Daten den Inhalt des
Bildes erkennen (im Gegensatz zu GIF, wo ca 50% benötigt werden).
Durch die Tatsache, dass die Bilddaten von interlaced Bildern nicht in der richtigen geometrischen Anordnung gespeichert sind (sich aber im Allgemeinen benachbarte Pixel ähneln und damit besser komprimiert
werden können), verschlechtert sich die Kompressionsrate bei interlaced Bilden um ca. 10%.
Adam7 Interlacing benutzt untenstehende Tabelle, die über die nichtkomprimierten Bilddaten gelegt wird
(neben- und untereinander wiederholt), um festzustellen, welche Pixel in welchem Durchgang übertragen
werden müssen.
1
7
5
7
3
7
5
7
6
7
6
7
6
7
6
7
4
7
5
7
4
7
5
7
6
7
6
7
6
7
6
7
2
7
5
7
3
7
5
7
6
7
6
7
6
7
6
7
4
7
5
7
4
7
5
7
6
7
6
7
6
7
6
7
Datenkompression
PNG speichert Bilder immer komprimiert. Es verwendet eine Vorhersage von Pixeln und komprimiert
die Differenz zwischen dem Pixelwert und der Vorhersage mit einer Variation der Deflate-Komprimierungsmethode, die auch im Archivierungsprogramm pkzip verwendet wird. Diese Kompressionsmethode
ist gut dokumentiert, frei verfügbar, schnell und auf vielen Plattformen verfügbar.
8 http://www.libpng.org/pub/png/pngpic2.html
KAPITEL 6. DIGITAL IMAGES
100
Deflate ist eine Variation des LZ77-Algorithmus von Lempel/Ziv, der aber keine sortierten Hash-Tabellen
verwendet und so Patentverletzungen umgeht.
6.5.5
JFIF (JPEG)
Sowohl verlustfrei, als auch die verlustbehaftet JPEG-komprimierten Bilder werden im gleichen Dateiformat abgelegt. Dabei werden die drei Teilbilder (scans) des entsprechenden Farbmodells hintereinander
abgespeichert. Die einzelnen Blöcke sind die 8x8-Makroblöcke der JPEG-Kompression.
Für Details und Eigenschaften von Bildern, die mit JPEG komprimiert wurden, siehe Abschnitt 6.4.5.
In JPEG Bildern kann in Kombination mit dem EXIF -Format auch Metainformationen gespeichert
werden. Moderne Digitalkameras speichern in diesen Meta-Informationen z.B. die Belichtungszeit, die
Brennweite, Datum und Uhrzeit der Belichtung, etc.
Ein (unvollständiges) Beispiel von Metadaten, die aus den EXIF-Daten extrahiert werden können, zeigt
Tabelle 6.3.
EXIF-Tag
Camera make
Camera model
Date/Time
Resolution
Flash used
Focal length
CCD width
Exposure time
Aperture
Focus dist.
Metering Mode
Jpeg process
Wert
Canon
Canon DIGITAL IXUS
2002:05:11 23:06:04
1152 x 864
Yes
5.4mm (35mm equivalent: 37mm)
5.23mm
0.017 s (1/60)
f/2.8
1.02m
center weight
Baseline
Tabelle 6.3: EXIF Daten eines JPEG-Bildes einer digitalen Kamera.
6.5.6
JPEG 2000
Der JPEG2000 Standard definiert gleich mehrere Dateitypen:
• .j2k: farbenblinder JPEG 2000 Datenstrom ohne jegliche Dateiheader.
• .jp2: Kapselt einen JPEG 2000 Datenstrom und fügt Headerinformationen über das verwendete
Farbmodell und optional Informationen über Copyright etc. hinzu. Dieses Dateiformat wird vom
JPEG 2000 Standard Teil 1 definiert.
• .jpx: Fügt Erweiterungen (JPEG 2000 Standard Teil 2) hinzu. Kann in jp2-Dateien geschrieben
werden. Programme, die die Erweiterungen nicht verstehen, können diese einfach ignorieren.
• .mj2: Dieser Dateityp wird für collections von Bildern verwendet (JPEG 2000 Standard Teil 3).
Dies können z.B. Videos sein.
• .jpm: unterstützt mehrere Kompressionsarten und layering (JPEG 2000 Standard Teil 6).
6.6
Metaformate
Metaformatdateien speichern Grafiken als Funktionsaufrufe an das jeweilige Graphiksubsystem des Betriebssystems. Daher sind diese Dateiformate auch sehr eng mit einem Betriebssystem verbunden. Ein
Vorteil eines solchen Verfahrens ist, dass Metaformatgraphiken sehr schnell aufgebaut werden können, da
KAPITEL 6. DIGITAL IMAGES
101
keinerlei Berechnungen/Konvertierungen nötig sind, um das Bild aufzubauen. Der schwerwiegende Nachteil ist jedoch, dass diese Formate sehr plattformspezifisch sind und somit nur für einen eingeschränkten
Benutzerkreis verwendbar sind.
6.6.1
WMF
Windows Meta File (WMF) ist sehr eng mit MS-Windows verbunden. WMF speichert Grafiken als eine
Folge von Konstruktionsanweisungen mit den dazu gehörigen Parametern. Die Anweisungen werden unter
Windows als Funktionsaufrufe bezeichnet. Diese setzen auf das Graphics Device Interface (GDI) für die
Ausgabe auf die entsprechende Hardware auf. Das GDI enthält Bibliotheken von grafischen Objekten
wie z.B. Kreise, Rechtecke, Ellipsen, ...
6.6.2
PICT
Ein ähnliches Konzept wie WMF verfolgt PICT, das Macintosh-eigene Funktionsaufrufe für das Grafikprotokoll QuickDraw enthält.
6.7
Vektorgrafik Formate
Vektorgrafiken bestehen im Unterschied zu Rasterbildern nicht aus Pixeln, sondern aus mathematisch
exakt definierten Kurven und Linien, die als “Vektoren” bezeichnet werden.
Um solche Kurven zu definieren, sind meist nur wenige Angaben notwendig. Um z.B. eine Linie zu
definieren, müssen nur die Koordinaten des Ausgangspunktes, die Koordinaten des Zielpunktes und die
Linienstärke bekannt sein. Ebenso reichen für einen Kreis die Koordinaten des Mittelpunktes, sein Radius
und die Linienstärke als Angaben aus.
Vektorgrafiken haben folgende Vorteile gegenüber Rasterbildern:
• Sie sind beliebig skalierbar, d.h. eine Vektorgrafik kann beliebig vergrössert/verkleinert werden,
ohne dass es zu Qualitätseinbussen kommt.
• Sie benötigen im Allgemeinen weniger Speicherplatz, da wenige Angaben reichen, um bestimmte
Formen darzustellen.
• Sie sind beliebig genau, Auflösung ist kein Thema.
Vektorgrafiken sind ideal zur Speicherung von Bildern, die linienbasierte Informationen oder Elemente
enthalten oder leicht in linienbasierte Informationen zu überführen sind (z.B. Text).
Nachteile von Vektorgrafiken sind, dass
• komplexe Bilder mit pixelweise wechselnden Farben (Fotos) nur unter grossem Aufwand gespeichert
werden können.
• das Erscheinungsbild vom darstellenden Programm abhängig ist. Die optimale Ausgabequalität ist
naturgemäss nur von Vektorausgabegeräten (z.B. Plotter) erreichbar.
6.7.1
Postscript
Postscript wurde 1984 von Adobe entwickelt und ist eigentlich eine Seitenbeschreibungssprache9 . Postscript-Dateien sind reine ASCII-Text-Dateien, die den Programmcode enthalten. Eine Linie wird z.B. in
Postscript folgendermassen beschrieben (’%’ leitet einen Kommentar ein):
9 Eigentlich
ist Postscript eine vollwertige Programmiersprache, mit Schleifen, Variablen, ...
KAPITEL 6. DIGITAL IMAGES
102
% Polyline
7.500 slw
n 1900 2000 m
4500 2000 l gs col0 s gr
Wobei die Linie von den Koordinaten (1900,2000) zu dem Punkt (4500,2000) reicht und die Farbe
Null hat.
Postscript beschreibt den kompletten Aufbau einer Druck- oder Bildseite, also Text, Vektorgraphik und
eingebettete Rasterbilder.
Je nach Version unterstützt Postscript verschiedene Kompressionsalgorithmen (z.B. Postscript Level 2
unterstützt JPEG Kompression) und verschiedene Farbtiefen (1/4/8/24 Bit).
6.7.2
Portable Document Format (PDF)
PDF von Adobe basiert im wesentlichen auf Postscript (Abschnitt 6.7.1) und ist eigentlich eher ein
Dokumentenformat als ein Bildformat (Ansichtsache!). Die wesentlichen Unterschiede zu Postscript sind:
• Ablage nicht als lesbarer ASCII-Code, sondern zum Teil als komprimierter binärer Byte Code.
• Erweitertes Interface mit dem Betriebssystem (z.B. für Dateioperationen)
• Ablage von Meta-Informationen für Copyright, etc. (z.B. eingebaute Kopierschutzfunktionen)
• Hypertextkonzept (Hyperlinks im Dokument und zu anderen Dokumenten (im Web))
6.7.3
DXF
DXF ist ein Format für vektororientierte Programme und wurde von der Firma Autodesk entwickelt.
Daher stammt auch die hauptsächliche Verwendung für CAD/CAM/CIM. DXF kann im Gegensatz zu
vielen anderen Formaten auch dreidimensionale Objekte speichern. Die Anzahl der Farben ist auf 8 Bit
(256 Farben) beschränkt und unterstützt keine Kompression.
Da DXF-Dateien reine Textdateien sind, sind sie relativ leicht von Applikationen zu erzeugen und können
dann von vielen CAD-Programmen importiert werden.
6.7.4
SVG
Das neue Vektor-Grafikformat Scalable Vector Graphics (SVG) 10 wurde vom W3C (und Adobe?) entwickelt. Dieses Format soll den ersten Vektorbasierten Bild-Standard für Web-Grafiken bilden.
Einige Eigenschaften von SVG:
• Die Daten werden in einer XML-Datei gespeichert.
• 24 Bit Farbtiefe (true color ), Transparenz, Gradienten (Farbverläufe)
• typographische Features (wie Kerning, “kurvige” Texte, Ligaturen, ...)
• Rasterbilder (JPEG, GIF, ...) können eingebettet werden
• Interaktiv: es kann auf Benutzeraktionen reagiert werden (mouse-click, ...)
• Animationen
• Konform zu DOM (Document Object Model). Damit ist es möglich, ein SVG-Bild mit Hilfe von
Skriptsprachen (JavaScript, ...) zu bearbeiten.
10 http://www.adobe.com/svg
KAPITEL 6. DIGITAL IMAGES
103
Leider verstehen zur Zeit zumindest die grossen Browser (Netscape, Internet Explorer) das SVG-Format
noch nicht von selbst. Für beide gibt es für Windows-, Mac- und seit 30.11.2001 auch für LinuxPlattformen ein Plugin, damit SVG-Grafiken angezeigt werden können.
Verschiedene Programme können SVG bereits exportieren: Adobe Illustrator, CorelDraw mit SVGPlugin, Gill (Gnome Illustrator)
Unter http://www.w3.org/Graphics/SVG/SVG-Implementations finden sich verschiedene SVG-Implementierungen, u.a. verschiedene Viewer.
Folgender XML-Code beschreibt die amerikanische Flagge (zum besseren Verständnis des SVG-Codes in
Abbildung 6.13 dargestellt) mit drehenden Sternen in SVG-Syntax. Schön sieht man die Definition von
verschiedenen graphischen Elementen und deren Wiederverwendung an verschiedenen Koordinaten. Das
XML-Tag <g> dient zur Gruppierung von verschiedenen Elementen.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"
"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylabl e.dtd" >
<svg viewBox="0 0 1000 600">
<g transform="translate(10 60)">
<defs>
<rect id="red" width="900" height="40" style="fill:#dd0000"/>
<rect id="white" width="900" height="40" style="fill:white"/>
<polygon id="star" style="fill:white;fill-rule:nonzero;"
points="0,-14 8.229,11.326 -13.315,-4.326 13.315,-4.326 -8.229,11.326">
<animateTransform attributeName="transform" type="rotate"
values="0;360" dur="3s" repeatDur="indefinite" />
</polygon>
<g id="6star_row">
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
</g>
x="20"/>
x="90"/>
x="150"/>
x="210"/>
x="270"/>
x="330"/>
<g id="5star_row">
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
<use xlink:href="#star"
</g>
x="60"/>
x="120"/>
x="180"/>
x="240"/>
x="300"/>
</defs>
<use
<use
<use
<use
<use
<use
<use
<use
<use
<use
<use
<use
<use
xlink:href="#red"/>
xlink:href="#white" y="40"/>
xlink:href="#red" y="80"/>
xlink:href="#white" y="120"/>
xlink:href="#red" y="160"/>
xlink:href="#white" y="200"/>
xlink:href="#red" y="240"/>
xlink:href="#white" y="280"/>
xlink:href="#red" y="320"/>
xlink:href="#white" y="360"/>
xlink:href="#red" y="400"/>
xlink:href="#white" y="440"/>
xlink:href="#red" y="480"/>
<rect id="bluebox" width="360" height="280" style="fill:#000088"/>
<rect id="border" width="900" height="520"
style="fill:none;stroke:black;stroke-width:0.85"/>
<g transform="translate(4.5 0)">
<use xlink:href="#6star_row" y="20"/>
KAPITEL 6. DIGITAL IMAGES
<use
<use
<use
<use
<use
<use
<use
<use
</g>
</g>
</svg>
xlink:href="#5star_row"
xlink:href="#6star_row"
xlink:href="#5star_row"
xlink:href="#6star_row"
xlink:href="#5star_row"
xlink:href="#6star_row"
xlink:href="#5star_row"
xlink:href="#6star_row"
104
y="50"/>
y="80"/>
y="110"/>
y="140"/>
y="170"/>
y="200"/>
y="230"/>
y="260"/>
Abbildung 6.13: SVG Grafik ’Stars and Stripes’
Dieses Beispiel stammt von der Demo-Webseite von Adobe11 . Um die Dateien schneller übertagen zu
können, sind sie alle gezipped, sodass man den XML-Code erst nach einem gunzip<filename> (unter
Linux) oder der Behandlung mit einem entsprechenden Programm unter Windows (Winzip) zu sehen
bekommt. Die Plugins der Browser (getestet mit IE) können mit gezippten Dateien direkt umgehen.
Anwendung von SVG
Auf der Webseite von Adobe12 sind einige SVG-Beispiele zu finden (u.a. Visualisierung eines Moleküls in
der Chemical Markup Language). Ein wichtiger Bereich wird sicher die Darstellung von geographischen
Daten. Beispiele dafür finden sich unter anderen unter http://www.academy-computing.com/svgweb.
6.8
Digitale Wasserzeichen
Digitale Wasserzeichen beruhen auf Steganografie: In ansonsten unauffälligen Daten (z.B. Texte, Bilder,
Audiodaten, ...) werden zusätzliche Informationen eingebracht. Diese dienen
• der möglichst eindeutigen Identifikation des Empfängers der Daten: Tauchen diese Daten später an
anderer Stelle auf, ist eindeutig bewiesen, dass sie durch den originalen Empfänger weitergegeben
wurden (Kopierschutz ) oder gestohlen wurden (Diebstahlsschutz ).
• der eindeutigen Identifikation des Verfassers (Urheberschutz )
11 http://www.adobe.com/svg/demos/main.html
12 http://www.adobe.com/svg
KAPITEL 6. DIGITAL IMAGES
105
Die Entfernung eines digitalen Wasserzeichens aus einem Datenbestand soll grundsätzlich bemerkbar sein
- je nach Zielrichtung kann dies von partieller Verfälschung bis zur vollständigen Unbrauchbarkeit der
Daten reichen. [Hen00]
Sichtbare Wasserzeichen dienen der offenen Identifikation von Daten - etwa durch Anbringung eines
Logos. Als Beispiel kann die Senderidentifikation in heutigen Fernsehprogrammen herangezogen werden.
Bei Unsichtbaren Wasserzeichen wird ein grosser Teil der Daten geringfügig modifiziert. Beispielsweise
wird die Urheberinformationen in digitalen Photos über das gesamte Bild verteilt und ist damit unsichtbar.
Unsichtbare digitale Wasserzeichen existieren in verschiedenen Abstufungen der Robustheit. Wenig robuste können schon durch einfache Transformationen der Daten entfernt werden. Für Bilddaten sind dies
insbesondere Drehung um kleine Winkel (ca. 0.5 Grad), Glättung oder Beschneiden des Randes.
Bei Audio- oder Videodaten sind wegen der hohen Datenmengen viele robuste Verfahren anwendbar. So
sind Verfahren bekannt, bei welchen das eingebrachte digitale Wasserzeichen auch eine MP3-Codierung
“überlebt”.
Lowest Bit Coding
Bei der Digitalisierung von Multimediadaten kann eine höhere Anzahl von Bits je Sample verwendet werden, als der Qualität und dem Betrachter angemessen sind. In diesen Bits werden geheime Informationen
gespeichert.
Texture Block Coding
Bei diesem Verfahren werden Bildbereiche ausgeschnitten und an anderer Stelle wieder in das Bild eingefügt. Bei hinreichender Ähnlichkeit (grüne Wiese, blauer Himmel, etc.) kann diese Modifikation subjektiv nicht wahrgenommen werden, identische Bit-Muster können aber leicht mit Hilfe des Computers
gefunden werden.
Texture Block Coding ist robust gegenüber Veränderungen, die das ganze Bild betreffen (Drehung, Farbveränderungen, ...).
Patchwork Coding
Bei diesem Verfahren kann nur ein Bit Information in einem Datensatz untergebracht werden: Das
Wasserzeichen ist also entweder vorhanden oder nicht. Dazu wird eine Konstante C und ein geheimer
Zahlenwert S, der als Startwert eines genau definierten Pseudozufallszahlengenerators (PZG) dient. Der
PZG liefert eine möglichst unzusammenhängende Folge von Zahlen, deren Abfolge aber durch die Wahl
des Startwertes eindeutig bestimmt ist. Mit diesem Startwert S und dem PZG werden zwei Pixelkoordinaten (A und B) eines Bildes berechnet und die Helligkeit des Pixels A um den Wert C verringert, die
Helligkeit des Pixels B und den Wert C vergrössert. Dies wird etwa 10000 mal wiederholt.
Zur Überprüfung des Wasserzeichens werden nun wieder die Koordinaten der Pixelpaare mit Hilfe des
Startwertes S und des PZGs wieder berechnet und beobachtet, ob im Mittel über die 10000 Pixelpaare
die Helligkeitsdifferenz der beiden Pixel 2C ergibt. Ist das so, ist das Wasserzeichen vorhanden, wenn
nicht ergibt die mittlere Differenz Null.
Eine ausführliche (und mathematisch exaktere) Erklärung findet sich in [Hen00] oder unter http://www.
research.ibm.com/journal/sj/mit/sectiona/bender.html.
Steganografie Literatur
• Eine gute Webseite inkl. vieler Links auf Software ist StegoArchive13
13 http://www.stegoarchive.com
KAPITEL 6. DIGITAL IMAGES
106
• Eine grosse Linksammlung über digitale Wasserzeichen ist unter http://view.informatik.uni-leipzig.
de/~toelke/Watermark.html zu finden. Dort ist auch der source eines Programmes zu finden, der
Wasserzeichen in Bilder einfügen/entfernen/überprüfen kann.
• Der Watermarking Webring ist unter http://www.watermarkingworld.org/webring.html zu finden.
• Ein Artikel über aktuelle Steganographieprogramme ist in c’t 9/2001 zu finden ([Wes01]).
Kapitel 7
Digital Video
Unter Video wird jegliche Art von Bewegtbildern verstanden. Im Unterschied zur analogen Videotechnik
werden bei der digitalen Videotechnik die Videosignale einer analogen Quelle (Videokamera) digitalisiert
und in digitaler Form gespeichert. Digital Video (DV) nimmt die Bilder gleich in digitaler Form auf.
Digitale Videotechnik versucht heutzutage die analoge Technik zu verdrängen, die Verarbeitung von digitalem Videomaterial mit einem PC ist aber nicht ganz unproblematisch: Ein einzelnes Vollbild (Frame)
in voller Farbtiefe benötigt bei 800.000 Pixeln (zur Zeit die Standardauflösung von digitalen Videokameras) schon 2.4MB. Um eine realistische Bewegtbildfolge zu erhalten, sind 25 bis 30 Bilder pro Sekunde
nötig. Das führt zu einem Datenstrom von 60MB pro Sekunde! Ein abendfüllender Film (120min) würde
unkomprimiert also 432 Gigabytes an Daten produzieren! Dieses kurze Rechenbeispiel zeigt schon, dass
bei digitalem Video die Kompression sehr wichtig ist, will man diese Datenmengen mit ’Standard-PCs’
noch irgendwie bewältigen.
7.1
Video und der Mensch
Das menschliche Auge kann nur relativ langsame visuelle Reize aufnehmen. Schnell aufeinanderfolgende
Reize können nicht mehr unterschieden werden. Durch hintereinanderfolgende Projektion von Einzelbildern kann dadurch eine “Scheinbewegung” vorgetäuscht werden. Die Grenze für das Eintreten dieser
Scheinbewegung liegt bei einer Bildfolge von 16 bis 24 Bildwechseln pro Sekunde.
Der traditionelle Kinofilm basiert auf 24 Bilder pro Sekunde, was aber immer noch zu starkem Flimmern
führt. Deshalb wird durch eine Blende jedes Bild nocheinmal bzw. zweimal unterbrochen, sodass 48 bzw.
72 Lichtreize pro Sekunde entstehen.
Für sehr helle Bilder genügt eine Auflösung von 25 Bildern pro Sekunde nicht. Solche Filme flimmern
noch merklich. Daher wurde z.B. beim Fernseher das Zeilensprungverfahren (Interlacing) eingeführt: Die
Bilder werden nicht in ihrer natürlichen Reihenfolge wiedergegeben, sondern in der ersten 1/50 Sekunde
nur die ungeraden Zeilen, in der nächsten 1/50 Sekunde nur die geraden Zeilen. Dadurch werden 50
Bilder mit halber Zeilenzahl erzeugt, die ineinander geschachtelt dargestellt werden und so einigermassen
flimmerfrei wirken.
Wirklich flimmerfrei wird das Bild aber erst bei mehr als 75 Bildwechseln pro Sekunde. [Hol00]
Bewegung wird aber nicht nur von Auge erfasst, auch andere Einflussfaktoren spielen ein Rolle.
7.1.1
Wahrnehmung von Bewegung
Der wichtigste psychologische Einfluss auf die Wahrnehmung von Bewegung ist die gegenseitige Beeinflussung benachbarter Lichtsinneszellen auf der Netzhaut des menschlichen Auges. Von erheblicher
Wichtigkeit ist aber auch die Wahrnehmung von Beschleunigung mittels verschiedener Bogengänge im
Ohr. Diese Bogengänge sind mit Flüssigkeit gefüllt, die bei Beschleunigung durch ihre Masseträgheit
dafür sorgt, dass Sinneshaare im Ohr umgebogen werden.
107
KAPITEL 7. DIGITAL VIDEO
108
Der Simulation von Bewegungen in multimedialen Umgebungen ist durch die darin fehlende Beschleunigungswahrnehmung eine Grenze gesetzt. Wird das menschliche Wahrnehmungssystem raschen optischen
Bewegungswechseln ausgesetzt, ohne dass eine passende Beschleunigungswahrnehmung existiert (oder
umgekehrt), ergibt sich für die meisten Personen eine heftige Übelkeit. Beispiel: Lesen beim Autofahren,
oder der Besuch eines 3-D Kinos. Eine Vermutung für diesen Grund ist, dass das Gehirn die Entkopplung
sensorischer Inputs als erstes Zeichen für Vergiftung ansieht, und das spontane Erbrechen von Nahrung
sich als evolutionärer Vorteil erwiesen hat.
Ein weiteres Problem bei der Betrachtung von Bewegungen auf einem Bildschirm ist der Wegfall der
Akkomodation (der Anpassung der Augenlinse auf unterschiedliche Entfernungen): Hintergrund und Objekt sind scheinbar in gleicher Entfernung angeordnet. Dies ist auch ein Problem bei stereoskopischen
Aufnahmen, die meist für eine unnatürliche Entkopplung zwischen Vergenz (Schrägstellung der Blickrichtung beider Augen relativ zueinander) und Akkomodation sorgen und damit bei empfindlichen Personen
Übelkeit erregen. [Hen00]
Jegliche Aufnahme von Bewegung (ob analog oder digital) kann somit nur einen Teil der visuellen Aufnahme simulieren. Trotzdem haben bewegte Bilder einen wichtigen Platz eingenommen, den sie auch in
der digitalen Welt beanspruchen.
7.2
Analoges Video
Um die Eigenschaften von digitalem Video zu verstehen, sollte man auch einiges von analogem Video
verstanden haben.
Das Hauptproblem von analogem Video ist, dass sich die Fehler bei wiederholtem Bearbeiten immer
weiter fortpflanzen und sich so die Qualität immer mehr verschlechtert.
NOTIZ: Die folgenden Videostandards sind nur der Vollständigkeit halber angeführt und werden nur
überblicksmässig bei Prüfungen gefragt.
7.2.1
BAS und FBAS (Composite Video)
Am Ende jeder abgetasteter Zeile erfolgt ein Rücksprung auf den Anfang der nächsten Zeile, am Ende
des gesamten (Halb-)Bildes der Sprung auf den Anfang des Abtastgerätes. Enthält ein BAS-(Bild, Austastung, Synchronisation)-Signal zusätzlich noch Farbinformation, spricht man von einem FBAS-(Farbe,
Bild, Austastung, Synchronisation)-Signal.
7.2.2
Komponentenvideo (Component Video)
Grundlage dieses Videostandards ist ein Farbmodell, in dem jedes der drei Primärsignale getrennt übertragen wird. Je nach Farbmodell sind RGB, YUV oder YIQ die Primärsignale.
7.2.3
Y/C Video (Separiertes Video)
Luminanz/Color-Video ist ein Kompromiss aus FBAS und Component Video. Die beiden Farbsignale
(z.B. U und V) werden zu einem gesamten Chrominanz-Signal gemischt, das Luminanzsignal Y wird
separat übertragen.
S-VHS und Hi-8 verwendend dieses Modell.
7.2.4
PAL Video
Der im deutschen Sprachraum verwendete Fernsehstandard hat folgende Eigenschaften:
KAPITEL 7. DIGITAL VIDEO
109
• 768 Pixel pro Zeile
• 625 Zeilen pro Bild (Frame) (576 sichtbar)
• 25 Frames pro Sekunden
• Bildseitenverhältnis von 4:3
• Quadratische Pixel
• Interlaced Modus (zwei Halbbilder mit geraden/ungeraden Zeilen ergeben ein Bild)
7.2.5
NTSC Video
Der amerikanische Fernsehstandard hat folgende Eigenschaften:
• 640 Pixel pro Zeile
• 525 Rasterzeilen (480 sichtbar)
• 29.97 Frames pro Sekunden (diese seltsame Zahl resultiert aus der Tatsache, dass die Trennung von
Audio- und Farbträger genau auf 4.5 MHz eingestellt wurde)
• Bildseitenverhältnis von 4:3
• Quadratische Pixel
• Interlaced Modus (zwei Halbbilder mit geraden/ungeraden Zeilen ergeben ein Bild)
• verwendet das YIQ-Farbmodell
7.2.6
High Definition Television (HDTV)
HDTV dient als Sammelbegriff für verschiedene Formate hochauflösenden Fernsehens. Die in den verschiedenen HDTV-Standards definierten Auflösungen und Bildraten werden vermutlich durch die derzeitige Entwicklung bei digitalen Videostandards obsolet [Hen00], noch bevor sie wirklich auf den Markt
kommen.
Die Auflösungen reichen von 1920x1080 (bei einem Seitenverhältnis von 16:9) bis zu 640x480 (bei 4:3).
Die Bildraten sind zwischen 24Hz und 60Hz definiert (sowohl die ’krummen’ NTSC-Frequenzen, als auch
die ’geraden’ PAL-Frequenzen).
7.3
Digitale Videotechnik
Digitale Videotechnik wird wahrscheinlich in der nächsten Zeit die konventionelle analoge Videotechnik
ablösen, da mehrere Vorteile klar für die digitale Welt sprechen:
• Direkter Zugriff auf einzelne Bilder
• Keine Verluste beim wiederholten Bearbeiten/Schneiden
Wie schon eingangs erwähnt, ist die Datenmenge, die bei einem digitalen Video anfällt, aber sehr gross
und so ist Kompression enorm wichtig.
Für die Verarbeitung von Multimediadaten hat es sich bewährt, die dafür benötige Software in mehrere
Teile zu spalten und dazwischen Schnittstellen zu standardisieren. Die Arbeitspferde dabei sind Codecs,
die Verarbeitung, Umrechnung und das Mixen der Mediastreams übernehmen. Die einzelnen Teile sollten
in der Theorie austauschbar sein, jedoch kann man nicht bei jedem Programm alle für einen bestimmten
Codec optimalen Einstellungen vornehmen, und nicht jeder Codec kann beliebige Dateiformate schreiben.
KAPITEL 7. DIGITAL VIDEO
110
Auf dem Macintosh ist die unangefochtene Multimediaschnittstelle Apple’s Lösung QuickTime. Unter
Windows konkurrieren drei Systeme: von Microsoft das alte Video für Windows und das neuere DirectShow - und daneben plattformübergreifend Apple QuickTime[DZ01]. Für Linux gibt es leider noch keine
Standards in diese Richtung.
7.3.1
Codecs
Codec steht für Coder/Decoder und meint die Software oder Hardware, die zur Kompression/Dekompression von Multimediadaten, hauptsächlich Videodaten, verantwortlich ist. Bei lizenzpflichtigen Verfahren
sind diese beiden Teile auch manchmal getrennt: der Kompressor ist gebührenpflichtig, während der
Dekompressor frei zugänglich ist.
Codecs spielen also die Rolle von Treibern für virtuelle oder reale Geräte.
Die wichtigsten Codecs sind Cinepak, Indeo, Video-1, MS-RLE, MJPEG und Codecs nach H.261, H.263
und MPEG (siehe Abschnitt 7.3.2 und Abschnitt 7.3.3):
Cinepak Das Verfahren ist mittlerweile von Apple gekauft worden und komprimiert Videodaten, indem
wenige vollständige Bilder (Keyframes) eines Videos in eine grössere Menge von Differenzbildern (Delta
Frames) eingebunden werden. Die Farbtiefe beträgt 24 Bit und der typische Kompressionsfaktor ist etwa
7:1.
Indeo Wurde von Intel für den i750-Prozessor entwickelt, es gibt aber auch reine Softwarelösungen.
Das Kompressionsverfahren arbeitet mit Makroblöcken zu je 4x4 Pixel, ist stark verlustbehaftet und
asymetrisch, d.h. die Kompression bedarf eines höheren Rechenaufwandes als die Dekompression. Der
typische Kompressionsfaktor ist ebenfalls etwa 7:1.
Microsoft Video-1 Entwickelt von MediaVision, mittlerweile von Microsoft gekauft, arbeitet das Verfahren mit 8, 16 und 24 Bit Farbtiefe. Der Kompressionsfaktor beträgt nur etwa 2:1. Das Verfahren ist
nur unter Windows verfügbar.
Microsoft RLE Diese Microsoft Eigenentwicklung erlaubt nur 4 oder 8 Bit Farbtiefe. Der typische
Kompressionsfaktor ist noch schlechter als bei Video-1.
MJPEG Motion JPEG besteht aus hintereinandergereihten Bildern, die mit JPEG komprimiert wurden. Der Kompressionsfaktor hängt stark von der verwendeten Qualität ab und entspricht dem der JPEG
Kompression (siehe Tabelle 6.1). Ein Nachteil dieses Codecs ist, dass die Einbindung von Audio-Daten
nicht im MJPEG-Standard definiert ist.
MJPEG Videos werden unter Windows nahezu immer im AVI-Dateiformat und unter Apple im QuicktimeFormat abgelegt.
Digitale Videokameras speichern die Videodaten in einem verbesserten MJPEG-Format, das mit einer
fixen Datenrate von 3.4MByte/Sekunde arbeitet. Damit kommt man auf 204MB Daten pro Minute oder
ungefähr 12GB pro Stunde. Der Ton wird mit 16 Bit, 48KHz Stereo (oder 12 Bit, 32kHz, 2x Stereo) im
Bitstrom mitgespeichert, um Synchronisationsprobleme zu vermeiden.
7.3.2
Videokompression nach H.261 und H.263
H.261 wurde in den Jahren 1984 bis 1990 entwickelt und ermöglicht Video-Conferencing und VideoTelefonie über ISDN-Leitungen mit einer Bandbreite von 64kbit/sec oder ganzzahligen Vielfachen davon.
Entsprechend der Zielanwendung “Kommunikation” wurde spezifiziert, dass Kompression und Dekompression zusammen nicht mehr als 150ms Verzögerung bewirken dürfen.
Die Bildwechselfrequenz liegt bei 29.97 Frames/Sekunde (30000/1001). Die Auflösung ist entweder
352x288 oder 176x144 Pixel. Es treten zwei Arten von Frames auf (siehe auch Abbildung 7.1):
KAPITEL 7. DIGITAL VIDEO
111
• Intraframes (I-Frames) enthalten vollständige Bilddaten und sind nach JPEG komprimiert.
• Predicted Frames (P-Frames) werden durch Bewegungsvorhersage und Differenzbildung aus den
vorhergehenden Frames erzeugt.
I
P
P
P
I
P
P
P
Zeit
Abbildung 7.1: I-Frames und P-Frames
Bei H.263 wurden 1996 einige Teile gegenüber H.261 verbessert:
• Verringerte Genauigkeit bei der Bewegungsvorhersage
• Einige Teile des Datenstromes sind optional
• Aushandelbare Parameter zur Leistungssteigerung (z.B. kann auf eine bidirektionale Vorhersage
ähnlich MPEG umgeschaltet werden)
• Fünf verschiedene Auflösungen
• Bildnummerierung mit 8 Bit anstatt mit 5 Bit
Mit diesen Änderungen lassen sich H.263 Datenströme mit weniger als der halben Datenrate als mit
H.261 bei gleichem Inhalt übertragen.
Eine verbesserte Version von H.263 (H.245) wird vom IP-Telefonie-Standard H.323 benutzt. Mehr Details
über H.323 findet man u.a. unter http://www.packetizer.com/iptel/h323/.
H.261 Kompression
Die I-Frames werden im Prinzip nach JPEG komprimiert: Die 16x16 Makroblöcke werden in vier 8x8
Blöcke unterteilt und mit einem festen Wert für alle Koeffizienten der diskreten Cosinus-Transformation
quantisiert.
Für die P-Frames wird das aktuelle Bild ebenfalls in 16x16 Makroblöcke zerlegt. Für jeden dieser Blöcke
wird im vorhergehenden Bild derjenige Block gesucht, der am besten übereinstimmt (Best Match-Suche).
Der relative Verschiebungsvektor wird in den Ausgabestrom aufgenommen. Die Differenz der beiden
Makroblöcke wird schliesslich genau wie in der I-Frame-Codierung in das JPEG-Format gewandelt.
Tabelle 7.1 zeigt die Datenraten bei der H.261 Kompression.
7.3.3
Videokompression nach MPEG
Das MPEG-Kompressionsverfahren wurde zuerst 1992 von der Moving Pictures Expert Group vorgestellt.
Derzeit gibt es verschiedene Ausprägungen des MPEG-Standards:
KAPITEL 7. DIGITAL VIDEO
Format
CIF 352x288x30
QCIF 176x144x30
112
Datenrate unkomprimiert
36.45Mbit/sec
9.115Mbit/sec
Datenrate H.261
24xISDN = 1.5Mbit/s
6xISDN = 384kbit/s
Tabelle 7.1: Datenraten bei H.261 Kompression
MPEG-1 (1992) wurde als Standard zur Speicherung von Bildern und Musik auf Datenträgern (z.B.
CDROM) kreiert. MPEG-1 Layer 3 (mp3) ist ein Quasi-Standard für hochwertige Audiokompression.
MPEG-1 bietet eine mittlere Bandbreite ≤ 1.892Mbit/sec, davon ca. 1.25Mbit/sec Video. Der Rest wird
auf zwei Audio-Kanäle aufgeteilt.
Die Auflösung beträgt 360x288 bei 25 Frames/Sekunde (CIF Europa) bzw. 352x240x30 (CIF USA) und
unterstützt kein Interlacing. Trotzdem ist VHS-Aufzeichnung möglich.
Die VideoCD (VCD) basiert auf MPEG-1. Sollte man selbst versuchen, eine VCD herzustellen, muss
man beachten, dass das Video als MPEG-1 genau dieser Auflösung und Bildwiederholrate gespeichert
werden muss und 1.15MBit/sec nicht überschreiten darf. Audio wird auf VCDs im MPEG-1 Layer II mit
44100kHz/Stereo und fixen 224kbit/sec gespeichert.[DZ01]
MPEG-2 (1993) ist das bisher am häufigsten angewandte MPEG-Verfahren und erweitert den MPEG-1
Standard.
Primäres Ziel war es, einen Standard für digitales Fernsehen mit Datenraten zwischen 2 und 80Mbit/s
zu schaffen. In MPEG-1 war die Kodierung von “Interlaced” Video (in PAL und NTSC verwendetes
Zeilensprungverfahren) nicht möglich, MPEG-2 wurde um diese Möglichkeit erweitert. Im Zeilensprungverfahren kann das Video in Halb- oder in Vollbildern kodiert sein. Für die Umrechnung von 24 Hz Film
auf 30 Hz NTSC sorgt eine Steuervariable, die das Abspielgerät dazu veranlasst, bestimmte Bilder zu
wiederholen. Die Umrechnung von 24Hz Film auf 25Hz PAL unterbleibt, der Film wird einfach mit 25
Bildern pro Sekunde abgespielt und dadurch etwas kürzer. MPEG-2 unterstützt fünf Audiokanäle und
einen zusätzlichen Tieftonkanal.
Weitere Unterschiede zu MPEG-1 sind unter anderem:
• Best Match-Suche untersucht nicht nur Frames, sondern auch Halbbilder (Fields).
• Frame Grösse kann bis zu 16383x16383 Pixel betragen.
• Nichtlineare Makroblock-Quantisiertabelle
MPEG-2 definiert verschiedene Auflösungen (von MPEG-1 Auflösung bis zu HDTV-Auflösung) und unterstützt je nach Auflösung räumliche und/oder zeitliche Skalierbarkeit. Erstere bedeutet, dass derselbe
Datenstrom in verschiedenen Auflösungen angezeigt werden kann. Zweitere hilft, den Datenstrom auf
Veränderungen der Bandbreite anzupassen. Eine genauere Auflistung, welcher Modus was unterstützt,
ist in [Hen00, S.179] zu finden.
Die Super-VideoCD (SVCD) und die DVD verwenden MPEG-2 als Codec und bietet daher bessere
Qualität (höhere Auflösung) als VCD. Viele DVD-Player können sowohl VCDs als auch SVCDs abspielen.
MPEG-4 (1999) ist ein universeller Standard für den Aufbau von Multimedia-Applikationen bis zu
halbsynthetischen VR-Welten aus Texturen und 3D-Objekten. Er umfasst nicht nur die Kompression von
Audio- und Videodaten, sondern auch Sprites, 3D-Welten, Klang- und Sprachsynthese, Bildsynthese aus
vorgefertigten Modellen für Szene und Körper, digitales Fernsehen, mobile Multi-Media, sowie streaming
Video mit virtueller Interaktion. Für die fortgeschrittenen Teile fehlt es aber noch an passenden Encodern.
Die interne Skriptsprache ist Java-Script, die Kommunikation mit dem Player erfolgt über “MPEG-J”,
eine Java-Schnittstelle. [Lov00]
Der sehr komplexe Standard ist zur Integration von PC, TV und Telekommunikation in interaktive
Programme gedacht. Entsprechende Tools fehlen aber noch. Es sollen die Wünsche von Autoren (flexibel für viele Medien, Rechtsschutz und -verwaltung, bessere Wiederverwertbarkeit), Service-Providern
KAPITEL 7. DIGITAL VIDEO
113
(generischer QoS-Deskriptor für verschiedene Medien enthalten, vereinfacht die Transporte und der Optimierung) und Benutzern (hoher Grad an Interaktion) vereint werden. MPEG4 beschreibt:
• die Integration beliebiger Medienobjekte. Dazu zählen 2D- und 3D-Objekte, Schallquellen, Texte,
usw.1 , die in einer Baumstruktur organisiert sind und zu komplexeren Objekten zusammengefasst
werden können. Die Kompression erfolgt immer für einzelne Objekte.
• den Zusammenhang dieser Objekte zur Erzeugung einzelner Szenen.
• Multiplex- und Sprachsynchronisationsmechanismen für ein Transport und die Berücksichtigung
von QoS (Quality of Service).
• Interaktion des Benutzers mit der generierten Szene am Zielort.
In letzter Zeit ist MPEG-4 durch seine hohen Lizenzkosten in die Schlagzeilen geraten. Die Veröffentlichung von Quicktime 6 wurde lange verzögert, da Apple diese Kosten scheute und abwarten wollte, ob
ein alternativer Codec das Rennen um den Quasi-Internet-Video Standard machen würde.
MPEG-7 ist seit Dezember 2001 zu grossen Teilen fertig gestellt (6 von 7 Teilen) und hat den Titel
“Multimedia Content Description Interface”. MPEG-7 konzentriert sich hauptsächlich darauf, den Inhalt
mit Hilfe von XML zu beschreiben, also Informationen über die Informationen zur Verfügung zu stellen
um z.B. Suchen in Multimedia-Dateien zu unterstützen. Es soll auch möglich sein, mit MPEG-7 Inhalte,
die weder visuelle noch Audiodaten enthalten, zu verarbeiten.
MPEG-7 basiert auf folgenden Konzepten [?, GravesMPEG72001]
• Descriptor (D): Beschreibt Daten.
• Description Scheme (DS): Definiert die Struktur der Daten (Descriptors).
• Description Definition Language (DDL): Beschreibt die Sprache, in der Descriptors und Description
Schemes spezifiziert sind. DDL basiert auf XML.
Ein kurzes Beispiel aus [?, GravesMPEG72001]eigt die Beschreibung von Metadaten eines Videos:
<Creation>
<Title>Fawlty Towers</Title>
<Abstract>
<FreeTextAnnotation>
Communication Problems
</FreeTextAnnotation>
</Abstract>
<Creator>BBC</Creator>
</Creation>
Um eine Suche in Multimedialen Daten zu ermöglichen, muss natürlich auch der Inhalt beschrieben
werden. Folgendes Beispiel zeigt, wie eine Szene mit Hilfe von MPEG7 beschrieben wird:
<TextAnnotation>
<FreeTextAnnotation>
Basil attempts to fix the car without success.
</FreeTextAnnotation>
<StructuredAnnotation>
<Who>Basil</Who>
<WhatObject>Car</WhatObject>
<WhatAction>Fix</WhatAction>
<Where>Carpark</Where>
</StructuredAnnotation>
</TextAnnotation>
1 Lt.
[Hen00] ist MPEG-4 deshalb eher ein Einstieg in die Welt der Virtual Reality als ein Bewegtbild-Standard.
KAPITEL 7. DIGITAL VIDEO
114
Es gibt mehrere Ansätze, wie in solchen Daten gesucht werden kann. Der bekannteste ist XQuery2 , eine
Query Language des W3C, die die Suche in XML Daten (und damit auch in in MPEG7) ermöglicht.
MPEG-21 Die Arbeit an diesem Standard wurde erst Mitte des Jahres 2000 begonnen und so gibt es
noch nicht viel darüber zu berichten! MPEG-21 versucht, ein multimediales Framework zu beschreiben
und zukünftige Trends für eine Umgebung vorherzusehen, in der eine Vielzahl von Inhalten unterstützt
werden (auch nicht MPEG-Standards). Erste Ergebnisse werden erst in der näheren oder auch ferneren
Zukunft erwartet (Die Spanne liegt zwischen Ende 2001 und 2009!).
Ein Schwerpunkt liegt sicher in der Vermarktung von multimedialen Inhalten und so definiert MPEG-21
Standards zur Verteilung, Abrechnung, Übertragung, Beschreibung etc. von digital items (Daten plus
Metadaten plus Struktur, wie einzelne Daten miteinander in Verbindung stehen).
Windows Media Technologies Der Windows Media Player ist für Windows, MacOS, Solaris und
einige auf Windows CE basierende Pocket-PCs verfügbar, der Encoder nur für Windows. Bei WMA7
nannte sich der Codec für die Videokompression zwar MPEG4, es wurde aber gemutmasst, dass es sich
eher um einen reinen MPEG2-Codec mit einigen Zusätzen zur Verhinderung von Mosaiken handelt.
Inwieweit sich Microsoft hierbei an den offiziellen MPEG-4 Standard anlehnte, kann nur gemutmasst
werden.
In der zwischenzeit steckt hinter der aktuellen Windows Media Technology ein MPEG4 Codec.
DivX (für Digital Video Express) war ursprünglich eine gehackte Version des Microsoft MPEG4 V3
Codecs aus Windows Media 7 (DivX 3). Er implementiert Video in DVD-Qualität, der auf dem MPEG-4
ISO Standard für digitale Videokompression basiert und um MP3-codiertes Audio ergänzt wurde.
Der grosse Erfolg von DivX bei der Internetgemeinde resultierte in diverse Weiterentwicklungen. Folgende
DivX-Versionen sind im Moment im Umlauf:
• DivX 3.x ist (wahrscheinlich) eben dem oben erwähnten Microsoft Codec “entsprungen” und hat vor
allem den Nachteil, dass die Grösse der DivX-Dateien vor dem Codieren nur sehr schwer berechenbar
ist. Qualität und Geschwindigkeit ist nach wie vor eine der Stärken dieses Codecs.
• DivX 4 ist eine legale (Weiter- bzw. Neu-) Entwicklung der Firma DivX Networks3 . Sie ist für den
privaten Gebrauch frei und wird auch noch weiterentwickelt. DivX 4 unterstützt Variable Bitraten
(VBR) und liefert im Grossen und Ganzen (meistens) eine bessere Qualität als DivX 3.
• XviD ist eine legale Open Source Entwicklung, die aber zu DivX 3 inkompatibel ist und zur Zeit
noch täglichen Änderungen unterliegt. Trotz alledem, soll Xvid gute Qualität liefern.
• DivX 5 ist die neueste Version von DivX Networks und verwendet (optional) erstmals eine bidirektionale Vorhersage der Frames (siehe auch Abbildung 7.2).
Dieser Kurzüberblick der diversen Codecs stammt von http://www.cselt.it/mpeg/, aus [DZ01] und
von http://www.doom9.org/divx-encoding.htm
MPEG-Kompression
Alle MPEG-Standards verwenden dasselbe Kompressionsverfahren. Die Videodaten liegen in Form von
Einzelbildern (Frames) vor. Es gibt drei Typen von Frames:
• Intraframes (I-Frames) enthalten vollständige Bilddaten und sind nach JPEG komprimiert. Etwa
jeder 15. Frame ist ein I-Frame.
• Predicted Frames (P-Frames) werden durch Bewegungsvorhersage und Differenzbildung aus den
vorhergehenden Frames erzeugt. Zwischen zwei I-Frames liegen typischerweise drei P-Frames.
2 http://www.w3.org/TR/xquery
3 http://www.divx.com
KAPITEL 7. DIGITAL VIDEO
115
• Bidirectionally Predicted Frames (B-Frames) werden durch eine Bewegungsvorhersage aus dem
vorhergehenden und dem nachfolgenden I- oder P-Frame erzeugt. Zwischen zwei P-Frames liegen
typischerweise zwei bis drei B-Frames.
I
B
B
B
P
B
B
B
P
B
B
B
P
B
B
B
I
Zeit
Abbildung 7.2: Anordnung und Beziehung der Frame-Typen bei der MPEG-Kompression
Frame-Typ
I
P
B
Mittelwert
Grösse
92 kByte
32 kByte
13 kByte
26 kByte
Kompression
7:1
20:1
50:1
25:1
Tabelle 7.2: Kompressionsraten bei MPEG-Frametypen
Die Anordnung und relative Häufigkeit der einzelnen Frames hängt vom verwendeten Codec ab.
Bei MPEG werden die Frames nicht in der Reihenfolge übertragen, in der sie dargestellt werden. Für
praktische Zwecke hat sich die Darstellungsreihenfolge von Tabelle 7.3 bewährt. So kann der B-Frame
leicht aus dem schon vorher übertragenen P-Frame berechnet werden.
Darstellungsreihenfolge
Bild 1 2 3 4 5 6
Typ I B B P B B
Übertragungsreihenfolge
Bild 1 4 2 3 7 5
Typ I P B B P B
GOB
GOB
7
P
8
B
6
B
10
P
9
B
10
P
11
B
8
9
B B
GOB
13
I
12
B
13
I
11 12
B B
GOB
Tabelle 7.3: Gruppierung der Frames in MPEG (GOB = Group of Blocks) [Hen00]
I-Frame Codierung erfolgt genau wie bei H.261 (Abschnitt H.261 Kompression auf Seite 111) beschrieben, nur werden die erzeugten Daten sofort wieder decodiert, um sie für die Bewegungsvorhersage
im Speicher halten zu können.
P-Frame und B-Frame-Codierung Zwischen den I-Frames liegen zunächst P-Frames. Diese sind
in 16x16 Pixel grosse Makroblöcke eingeteilt. Für jeden dieser Blöcke wird im vorhergehenden I- oder
P-Frame in der näheren Umgebung (ca. 10 Pixel in jede Richtung) nach der grösstmöglichen Übereinstimmung gesucht. Übertragen wird schliesslich der Verschiebungsvektor aus dieser Bewegungsvorhersage
sowie ein Korrekturblock (fast identisch mit H.261, Abschnitt H.261 Kompression).
KAPITEL 7. DIGITAL VIDEO
116
Zwischen den P-Frames wiederum liegen B-Frames, bei denen die Bewegungsvorhersage sowohl aus dem
vorhergehenden als auch aus dem nachfolgenden I- oder P-Frame gewonnen wird. Die Suche nach der
besten Übereinstimmung kann auch ergeben, dass diese sich für eine Mittelung aus vorhergehendem und
nachfolgendem P- oder I-Frame ergibt. [Hen00, S.183]
Von entscheidender Bedeutung für die Qualität des Codec ist auch die Bestimmung der besten Übereinstimmung (best match). Verwendet werden die Berechnung der mittleren quadratischen Abweichung oder
der mittlere Betrag der Abweichung.
D-Frames sind eine vierte Frame-Kategorie, die ursprünglich für die Darstellung während eines schnellen Vor-/Rücklaufes gedacht waren. Diese Bilder sind sehr grob gerastert und lassen sich in etwa mit den
DC-Daten (dem Gleichanteil) von JPEG vergleichen.
7.3.4
Video-Dateiformate
Verschiedene Dateiformate können durchaus verschiedene Codecs unterstützen, sodass man keinen direkten Schluss aus dem Dateiformat auf den verwendeten Codec ziehen kann.
Audio-Video-Interleaved Format (AVI)
AVI ist von Microsoft mit Video for Windows eingeführter Standard, der auf der RIFF-Spezifikation
basiert. AVI-Dateien sind in der Regel komprimiert und verwenden meist Cinepak oder Indeo. Aber
auch DivX oder MPEG-4 kann als Codec verwendet werden.
Die Auflösung bei AVI kann grundsätzlich in vollem PAL-Format erfolgen (768x576 Pixel), typische Werte
liegen allerdings bei 320x240 bei 24 bis 30 Frames/sec.
Quicktime
Quicktime wurde ursprünglich von Apple entwickelt, wurde aber später auch auf Windows-Plattformen
portiert. Quicktime-Dateien (*.mov) enthalten sowohl Video- als auch Audio-Daten. Quicktime bietet
dem Benutzer und dem Programmierer eine Reihe von komplexen Funktionen und unterstützt auch das
Einbinden von neuen Kompressionsalgorithmen.
Die am meisten verwendeten Codecs in Quicktime-Movies sind der Indeo-Codec und der Cinepak-Codec.
Seit Quicktime Version 6 wird auch MPEG-4 unterstützt.
RealVideo
Dieses Format von Real Networks4 zeichnet sich vor allem dadurch aus, dass es streaming-fähig ist.
Diese Eigenschaft wird vor allem ausgenutzt, um Videos übers Internet zugänglich zu machen. Dabei ist
natürlich die verfügbare Bandbreite das grösste Problem.
Bei einem RealVideo-Stream teilen sich Video-Informationen und Audio-Informationen die verfügbare
Bandbreite. Die Aufteilung kann durchaus je nach Anwendung variieren. So benötigt ein Video mit
Musik mehr Anteile für Audio, als ein Video mit einem Sprecher als Audio-Spur. RealVideo verwendet
RealAudio um den Soundtrack zu codieren.
RealVideo komprimiert wie fast alle anderen Video-Codecs verlustbehaftet. Der im Moment verwendete
Codec ist eine Eigenentwicklung namens ’RealVideo 8’ und der Nachfolger des ’Realvideo G2’-Codecs.
Eine weitere Methode um die Datenmenge zu reduzieren ist, die Framerate herabzusetzen. RealVideo
kann beim Codieren die Framerate dynamisch anpassen, je nachdem wie “action-reich” eine Szene ist.
Zusätzlich sorgt die Scalable Video Technology (SVT) dafür, dass die Framerate automatisch an die
momentan verfügbare Bandbreite und CPU-Leistung angepasst wird.
4 http://www.real.com
KAPITEL 7. DIGITAL VIDEO
117
Eine weitere Technik, die RealVideo verwendet, um die Kompressionsrate zu erhöhen, ist es, die Anzahl
der verwendeten Farben zu verringern. Pixel mit ähnlichen RGB-Werten werden einfach eliminiert.
Dadurch verschwimmt das Bild und Details verschwinden.
RealVideo unterstützt verschiedene Auflösungen von 176x132 bis zu 640x480 Pixel. Je höher die Auflösung,
desto höher sind natürlich auch die Ansprüche an die Bandbreite!
Die Information dieses Abschnittes stammt von http://service.real.com/help/library/guides/production8/
htmfiles/video.htm.
Advanced Streaming Format (ASF)
ASF von Microsoft kann sowohl Audio- (siehe Abschnitt 5.2.16) als auch Video-Daten enthalten. Das
Dateiformat wird von Microsoft nicht restlos offengelegt, daher ist eine Portierung problematisch. Eine
Integration in Videobearbeitungsprogramme sieht Microsoft auch nicht sehr gerne. So existierte eine
VirtualDub5 -Version, die ASF-Dateien lesen konnte, nur kurze Zeit. WMA (Windows Media Audio)
und WMV (Windows Media Video) sind identisch zu ASF (durch Umbenennung einfach erzeugbar).
[Lov00, DZ01]
7.4
Speichermedium DVD
Die DVD (Digital Versatile Disc) beruht auf ähnlichen Prinzipien wie die Compact Disc, kann jedoch
wesentlich mehr Daten aufnehmen (bis zu 16GB). Daher eignet sie sich erstmalig als Medium für digitale
Video-Daten (MPEG-2).
Der DVD-Standard ist kein freier Standard und wird vom japanischen DVD-Forum6 kontrolliert. Jeder,
der Soft- oder Hardware für DVDs entwickeln will, muss die aktuelle Version des Standards kaufen
(zur Zeit ca. 5000$) und ein NDA (Non Disclosure Agreement) unterzeichnen, das die Weitergabe von
Informationen verbietet.
Darum sind auch nicht viele Informationen erhältlich, die DVDs betreffen.
Das Verschlüsselungsverfahren auf DVDs verwendet einen einfachen DES-ähnlichen Algorithmus, der
im August 1999 von einer Crackergruppe geknackt wurde. Nichtsdestotrotz gibt es noch keinen freien
DVD-Decoder, da jeder Verbreitungsversuch mit scharfen juridischen Attacken abgewehrt wird.
Weitere Dinge (das Wort ’Informationen’ wäre hier übertrieben) sind auf folgenden Web-Seiten zu finden:
• DVD Copy Control Association7
• OpenDVD8 versucht, Informationen für Entwickler zur Verfügung zu stellen.
• Das Linux-Video and DVD Projekt (LiViD)9 will eine gemeinsame Grundlage für Video und DVD
unter Linux entwickeln.
7.4.1
Kopierschutzmechanismen der DVD
Etwa ein Viertel der Daten auf einer DVD sind mit CSS (Content Scramble System) verschlüsselt.
Verfügt der DVD-Player über einen analogen Ausgang, so muss selbiger überdies mit einem MacrovisionKopierschutzsignal ausgestattet sein. Das System sollte in erster Linie Gelegenheitstätern die Möglichkeit
zur Duplizierung einer Video-DVD nehmen.
Das DVD-Laufwerk und der Decoder tauschen zuerst die Schlüsseldaten über ein Protokoll zur gegenseitigen Authentifizierung aus. Zum einen soll dies das Laufwerk davon abhalten, einem nicht lizenzierten
5 http://www.virtualdub.org
6 http://www.dvdforum.com
7 http://www.dvdcca.org/
8 http://opendvd.org
9 http://www.linuxvideo.org/
KAPITEL 7. DIGITAL VIDEO
118
Decoder die Schlüsseldaten mitzuteilen. Zum anderen soll sie verhindern, dass man eine gültige Authentifizierung aufzeichnet und zu einem späteren Zeitpunkt gegenüber einem echten Decoder erneut abspielt,
was ja wieder das Kopieren der DVD erlauben würde. In diese Berechnung geht ein 40 Bit langer geheimer Wert ein, ein so genanntes Shared Secret. Diesen Wert erfahren offiziell nur Lizenznehmer des
CSS-Verfahrens, also Hersteller von Decodern und Laufwerken.
Im zweiten Schritt wird nun über den sicheren Kanal der Disc Key vom Player ausgelesen. Er ist auf der
DVD selbst gespeichert, allerdings in einem nur der Firmware zugänglichen Bereich. Der Disc Key ist
seinerseits chiffriert, und zwar so, dass er sich mit einem von einigen hundert verschiedenen Schlüsseln
decodieren lässt. Jeder lizenzierte Player hat einen individuellen Schlüssel (Player Key), um den Disc
Key zu decodieren. Sollte ein solcher je an die Öffentlichkeit gelangen, so können die Filmhersteller
diesen Player bei der Produktion zukünftiger Titel gezielt sperren. Der für die eigentliche Dekodierung
benötigte Title Key steckt schliesslich in den Sektor-Headern der verschlüsselten Datensektoren. Nur der
Title Key ist erforderlich, um die Videodaten zu entschlüsseln, der ganze einleitende Aufwand soll nur
seine Geheimhaltung sichern.
Im Zuge der Bemühungen, für Linux einen DVD-Player zu schreiben, gelangte im Juli 1999 ein CodeFragment in die Öffentlichkeit, das sowohl das Authentifizierungsverfahren als auch das dazu notwendige
Shared Secret enthielt. Damit konnte man DVD-Videos samt deren Schlüssel kopieren, aber nicht abspielen. Den zweiten Teil des Algorithmus sowie einen Player Key entwendeten Hacker aus dem SoftwareDecoder XingDVD von Xing Labs und implementierten ihn samt einer komfortablen Oberfläche in DeCSS,
was zu einigem medialem Wirbel führte. Programme wie VobDec knacken die Verschlüsselung hingegen
über einen kryptografischen Angriff (durch die damalige US-Exportbeschränkung sind alle Schlüssel auf
40 Bit Länge beschränkt). Dies ist jedoch auch kein Ausweg aus der rechtlichen Zwickmühle, da das
Verfahren selbst geschützt ist. [DZ01]
7.4.2
Rechtliche Probleme
Im Spannungsfeld zwischen kommerziellen Interessen der Unternehmen, Künstlern und Schauspielern,
die auf ihr Copyright pochen und den Rechten sowie der Privatsphäre des Kunden ist das letzte Wort
noch nicht gesprochen. Scharf schiessende Rechtsabteilungen von Verwertungsgesellschaften, die gerne
auch die Rechtslage zu ihren Gunsten überziehen und auf Verunsicherung spekulieren, kämpfen zwar
gegen die fortlaufende Entwicklung auf verlorenen Posten, im Einzelfall kann dies jedoch zu kostspieligen
Streitigkeiten führen.
So führt der DVD-Region-Code schon seit längerem zu einem regelrechten Katz- und Mausspiel zwischen
Verschärfungen und Umgehungsprogrammen, die aktuellste Version ist RPC-2 mit “Regional Code Enhancement”. Sie überprüft bei der Initialisierung, ob der Player auch wirklich auf einen Regionalcode
festgelegt ist und verweigert anderenfalls die Wiedergabe. Hinzu kommt, dass der öffentliche Verkauf von
DVDs aus mit einem anderen Region-Code rechtlich nicht erlaubt ist, eine private Veräusserung hingegen
schon. [Stu01]
Der zweite juristisch umstrittene Punkt ist das Umgehen der DVD-Verschlüsselung CSS (Content Scrambling System). Prinzipiell ist das Erstellen einer Kopie für den privaten Gebrauch im Familien- und Freundeskreis trotz gegensätzlicher Angaben im Vorspann und auf der Hülle erlaubt, auch wenn man dafür
einen Kopierschutz á la Makrovision oder CSS überwinden muss. Ist die Kopiersoftware aber durch einen
Verstoss gegen das Gesetz entwickelt worden (durch rechtswidrige Dekompilierung oder Ausspionierung
von Betriebsgeheimnissen, was also beispielsweise für DeCSS zutrifft), so ist deren Gebrauch rechtswidrig.
Allerdings hängt es im Einzelfall davon ab, ob der Benutzer dies arglos oder ”im Wissen der Umstände“
tut. [Jae00]
Patentierte oder geheime Verfahren stellen auch für die Entwickler freier Software nahezu unüberwindbare
Hürden dar, was besonders bei der Entwicklung eines DVD-Players für Linux zu Streitigkeiten führte,
die bis dato noch nicht entschieden sind.
7.5
Synchronized Multimedia Integration Language (SMIL)
SMIL (Synchronized Multimedia Integration Language) (wie “smile” ausgesprochen) ist eine Entwicklung
KAPITEL 7. DIGITAL VIDEO
119
des W3C (siehe auch SMIL-Spezifikation10 bzw. SMIL Überblick11 ) in Zusammenarbeit mit u.a. RealNetworks, Microsoft, Netscape und Philips und dient dem einfachen Verfassen von multimedialen Präsentationen im Web.
Ein SMIL-Dokument beschreibt in einer einfachen Sprache, wie verschiedene Medien zu koordinieren
sind. SMIL folgt der Syntax von XML (siehe Abschnitt 4.4) bzw. HTML.
Diese Beschreibung des multimedialen Inhaltes wird von einem SMIL-Player interpretiert. Dieser regelt
nur, in welcher Weise die Media-Clips abzuspielen sind, die Spezifikation enthält jedoch keine Vorschriften
für die Formate von Multimedia-Dateien.
SMIL ist ein recht junger Standard. Dementsprechend gibt es noch kaum Software dafür (für eine
Liste der Player, die SMIL unterstützen siehe http://www.w3.org/AudioVideo/). Auch die aktuellen
Browser-Versionen unterstützen SMIL noch nicht. Günstig für die weitere Entwicklung des Standards
ist das Engagement der Firma RealNetworks. Die aktuellen Versionen ihres RealPlayers wird neben den
eigenen Real-Formaten auch SMIL-Anweisungen abspielen. [Pie98]
Ein schönes Beispiel einer Smil-Präsentation kann z.B. unter http://www.dfki.de/imedia/miau/demos/
smil_example.html gefunden werden. Hier kann man auch die Einzelteile (Text, Video, Sound) extra
downloaden und so die Zusammenhänge der verschiedenen Medien näher betrachten.
Abbildung 7.3: RealPlayer mit SMIL Unterstützung
Als Beispiel, wie verschiedene Multimedia-Daten verknüpft werden können, kann Abbildung 7.3 dienen.
Die dazugehörige SMIL-Datei sieht folgendermassen aus (Beispiel aus dem SMIL Tutorial von Webtech10 http://www.w3.org/TR/REC-smil/
11 http://www.w3.org/AudioVideo/
KAPITEL 7. DIGITAL VIDEO
120
niques12 ):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<smil>
<head>
<layout>
<root-layout height="425"
width="450"
background-color="black"/>
<region id="title"
left="50"
top="150"
width="350"
height="200"/>
<region id="full"
left="0"
top="0"
height="425"
width="450"
background-color="#602030"/>
<region id="video"
left="200"
top="200"
height="180"
width="240"
z-index="1"/>
</layout>
</head>
<body>
<seq>
<!-- This img tag displays the title screen -->
<text src="title.rt"
type="text/html"
region="title"
dur="20s"/>
<!-- This section displays the animated map with an audio soundtrack -->
<par>
<audio src="map_narration.ra"/>
<img src="map.rp"
region="full"
fill="freeze"/>
</par>
<!-- This section contains the video-annotated slideshow -->
<par>
<img src="slideshow.rp"
region="full"
fill="freeze"/>
<seq>
<video src="slide_narration_video1.rm"
region="video"/>
<audio src="slide_narration_audio1.ra"/>
<video src="slide_narration_video2.rm"
region="video"/>
</seq>
</par>
</seq>
</body>
</smil>
Das <smil> Dokument teilt sich in einen <head> und einen <body> Teil (vgl. HTML). Im <head>
steht die Beschreibung des Aussehens/Layouts und der <body> Bereich enthält die Timing-Information
und Information über den Inhalt.
Innerhalb von <seq> und <par> werden die benannten Medien automatisch (sequentiell oder parallel)
abgespielt.
SMIL unterstützt viele verschiedene Medientypen wie Text, Textstream, Bilder, Video, Audio und Animationen.
Ein wichtiges Feature ist das <switch> Tag. Damit können verschiedene Optionen eingestellt werden, von
denen der Player dann zur Laufzeit eine auswählt. So kann aus verschiedenen Medien je nach Sprache,
Bildschirmgrösse, Farbtiefe, Bandbreite, etc. ein passendes gewählt werden. Folgender Ausschnitt bietet
z.B. verschiedene Auflösungen, je nach verfügbarer Bandbreite:
12 http://www.webtechniques.com/archives/1998/09/bouthillier/
KAPITEL 7. DIGITAL VIDEO
121
1 <par>
2
<switch>
3
<img src="slideshow_hires.rp" region="full" fill="freeze"
system-bit-rate="20000"/>
4
<img src="slideshow_lowres.rp" region="full" fill="freeze"
system-bit-rate="45000"/>
5
</switch>
6
<audio src="video_narration.ra"/>
7 </par>
Ein weiteres SMIL-Tutorial, das mit SMIL erstellt wurde (kein rekursives Problem :-), ist bei “Learn
SMIL with a SMIL13 ” zu finden. Der Java-SMIL-Player SOJA14 sorgt dafür, dass die verwendeten SMIL
Beispiele direkt betrachtet werden können.
13 http://www.empirenet.com/~joseram/index.html
14 http://www.helio.org/products/smil/
Kapitel 8
Serverseitige Technologien
Dieses Kapitel wird einige Techniken vorstellen, die verwendet werden können, um Informationsserver
aufzubauen. Die ersten Abschnitte dieses Kapitels widmen sich serverseitigen Erweiterungen von WebServern, die hauptsächlich dazu verwendet werden, um Web-Seiten dynamisch zu generieren.
8.1
Dynamische Generierung von Web-Seiten
Es gibt mehrere Gründe, warum Web-Seiten dynamisch und nicht statisch sein sollen:
• Die Web-Seiten basieren auf Anfragen von Benutzern, wie z.B. Ergebnisseiten von Suchmaschinen
oder der Einkaufswagen bei einem Online-Shop.
• Die Daten ändern sich sehr oft, wie z.B. ein Wetterbericht, Schlagzeilen bei Zeitungen.
• Die Web-Seiten enthalten Daten, die aus einer Datenbank stammen (z.B. Preise und Produktbezeichnungen von Artikeln eines Geschäfts).
Es gibt zahlreiche Möglichkeiten, Webseiten auf dem Server dynamisch zu erzeugen. In den folgenden
Abschnitten werden einige vorgestellt.
Ein gemeinsames Problem aller serverseitigen Erweiterungen, die dynamisch Web-Seiten generieren, ist
meist, dass Inhalt und Layout mehr oder weniger untrennbar vereint sind. Da jedoch meist verschiedene
Personen oder Gruppen entweder das Layout erstellen oder die Funktionalität programmieren, muss schon
in der Designphase einer dynamisch erzeugten Web-Site geklärt werden, wo der Schwerpunkt liegen soll.
Sollen nur wenige Teile einer Seite dynamisch generiert werden, bieten sich eher Technologien wie ASP,
JSP oder PHP an. Besteht jedoch die Web-Site hauptsächlich aus einer (Java-)Applikation, die nebenbei
Web-Seiten zur Verfügung stellt, sind eher Servlets vorzuziehen.
Prinzipiell sind aber die meisten Problem mit jeder der vorgestellten (und auch mit vielen anderen)
Möglichkeiten lösbar. Oft entscheiden äussere Einflüsse die Entscheidung, welche Technologie verwendet
wird. Oft bestimmen zum Beispiel nicht technische Argumente die Wahl, sondern die Firmenpolitik
verlangt, dass ein Produkt der Firma XY (bzw. MS :-) eingesetzt werden muss.
8.1.1
Common Gateway Interface (CGI)
Die Mutter aller dynamischen Webseitengenerierung heisst eindeutig CGI (Common Gateway Interface).
CGI entstand zuerst aus dem Wunsch (und der Notwendigkeit), HTML-Formulare auf dem Server auszuwerten (siehe auch Abschnitt 8.1.7), die darin enthaltenen Daten irgendwo zu speichern (evtl. in einer
Datenbank) und dem Benutzer eine Antwortseite zurückzuliefern. Eine gute Seite für den Recherchestart
über CGI im Netz ist http://www.w3.org/CGI/.
122
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
123
Ein CGI-Programm läuft direkt auf dem Web-Server und erzeugt in der Regel HTML-Code, der an
den Browser des Benutzers gesendet wird. Dadurch lassen sich relativ einfach dynamische Web-Seiten
generieren.
Die Spezifikation von CGI1 sagt nur, dass CGI-Programme vom Standard-Input lesen und auf StandardOutput schreiben müssen. Dabei ist es egal, in welcher Programmiersprache das CGI-Programm geschrieben wurde. Ein gutes Einführungstutorial ist unter http://www.jmarshall.com/easy/cgi/ zu
finden.
Somit kann sogar ein Unix-Shell Skript verwendet werden. Als Beispiel dient ein Hello World CGI-Skript:
#!/bin/sh
# send http-header and a newline afterwards:
echo "Content-Type: text/html"
echo ""
# send html content:
echo "<HTML>"
echo " <HEAD>"
echo "
<TITLE>Hello World CGI</TITLE>"
echo " </HEAD>"
echo " <BODY>"
echo " Hello World ("
date "+%T, %d.%m.%Y"
echo ")"
echo " </BODY>"
echo "</HTML>"
Dieses Skript, nachdem es in ein geeignetes Verzeichnis des Web-Servers kopiert wurde (z.B: cgi-bin)
oder durch seine Extension dem Webserver verraten hat, dass es ein CGI-Programm ist (.cgi), gibt
nun auf Anfrage (natürlich je nach Datum und Uhrzeit) “Hello World (12:05:56, 18.11.2002)” aus. Hier
sieht man schön, dass es sehr einfach ist, die Ausgabe von beliebigen Programmen in einer dynamischen
Web-Seite zu verwenden.
Perl
Die Programmiersprache ☞PERL wurde von Larry Wall entwickelt und eignet sich unter anderem besonders gut für Stringmanipulationen aller Arten (Stichwort regular expressions). Daher ist es auch kein
Wunder, dass viele CGI-Programme in Perl geschrieben wurden/werden. In Perl können Parameter, Datenbankabfrageergebnisse und andere Programmausgaben einfach (wenn man die z.T. kryptische Syntax
von Perl einmal verstanden hat :-) analysiert, weiterverarbeitet und in eine HTML-Seite für die Ausgabe
weiterverarbeitet werden.
Mittlerweile existieren mehrere Perl-Bibliotheken, die speziell auf die Probleme mit CGI eingehen: z.B.
die cgi-lib2 oder die bei der Standard-Perl Distribution schon enthaltene Perl5 CGI Library CGI.pm3 .
Ein einfaches CGI-Programm in plain-Perl (ohne Zusatzbibliotheken), das neben “Hello World” auszugeben auch noch die Umgebungsvariable liest, in der die Parameter bei der HTTP-GET Methode übergeben
werden, ist folgendes:
#!/usr/bin/perl
# send http-header and a newline afterwards:
print "Content-Type: text/html\n\n";
# send html content:
print "<HTML>\n";
print " <HEAD>\n";
print "
<TITLE>Hello World CGI</TITLE>\n";
print " </HEAD>\n";
print " <BODY>\n";
print " Hello World.\n";
print " Your QUERY_STRING was ".$ENV{’QUERY_STRING’}."\n";
print " </BODY>\n";
print "</HTML>\n";
Gute Tutorials über Perl/CGI findet man unter http://www.comp.leeds.ac.uk/nik/Cgi/start.html,
bei den oben erwähnten Perl-CGI-Bibliotheken oder das CGI-Perl-Kapitel von SelfHtml4 .
1 http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
2 http://cgi-lib.berkeley.edu/
3 http://stein.cshl.org/WWW/software/CGI/
4 http://courses.iicm.edu/mmis/selfhtml80/cgiperl/index.htm
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
8.1.2
124
Parameterübergabe
Jedem serverseitigem Programm (CGI, Servlet, ...) können auch Parameter übergeben werden. Prinzipiell
können Anfragen an einen Webserver mittels zweier Request-Methoden gestellt werden:
• HTTP-GET-Methode: Erfolgt der CGI-Aufruf von einem HTML-Formular, das als Methode GET
verwendet oder werden die Parameter in der Url codiert, werden diese Parameter (Parametername und Wert) mittels der Umgebungsvariablen QUERY_STRING an das aufgerufene CGI-Programm
übergeben. Mehrere Paare [Parametername,Wert] oder mehrere Werte werden durch ’&’ getrennt,
Leerzeichen durch ’+’ (bzw. ’%20’) ersetzt. Sonderzeichen werden durch ein vorgestelltes Prozentzeichen (’%’) und einen ASCII-Hexadezimal-Wert dargestellt.
Ein Url-Aufruf könnte beispielsweise so aussehen:
http://www.google.com/search?sourceid=googlet&q=Abfrage
Damit wird eine Suchabfrage bei der Suchmaschine Google5 ausgelöst. In diesem Fall werden zwei
Paare [Parametername/Wert] übergeben: sourceid=googlet und q=Abfrage.
Der Nachteil dieser Methode ist, dass die Gesamtlänge der Parameter bzw. der Formulardaten auf
1024 Bytes beschränkt ist.
• HTTP-POST-Methode: Bei einem Formular kann als Übermittlungsmethode auch POST verwendet
werden. In diesem Fall werden alle Formularfelder mit Namen und Wertenim HTTP Header übertragen. Der zugehörige HTML-Code sieht z.B. so aus: <FORM METHOD=”POST”ACTION=”http://www.meinserver.o
Dem CGI-Programm werden diese Parameter auf der Standardeingabe (stdin) bereitgestellt. Über
die Umgebungsvariable CONTENT_LENGTH kann festgestellt werden, wieviele Zeichen gelesen werden
können. Zusätzlich werden noch eine ganze Reihe von Umgebungsvariablen gesetzt, die vom CGIProgramm ausgewertet werden können (z.B. DOCUMENT_ROOT, REMOTE_HOST, REFER_URL, REQUEST_
METHOD, ...). Eine genaue Liste von auswertbaren Variablen kann im CGI-Standard eingesehen
werden. Eine Testseite, an der man den Unterschied zwischen HTTP-GET und POST sieht, kann
unter http://www-scf.usc.edu/~csci351/Special/CGIinC/examples.html ausprobiert werden.
Andere serverseitige Erweiterungen (PHP, ASP, JSP, Servlets, . . . ) verwenden diese Übergabemethoden (HTTP-Standard) natürlich ebenso, erleichtern aber die Auswertung der Parameter durch entsprechende Funktionen bzw. Methoden. Servlets können z.B. einfach durch einen Aufruf von request.
getParameter(paramName) die Parameternamen samt ihrer Werte auslesen (siehe auch Abschnitt JavaServlets auf Seite 125).
8.1.3
Sicherheitsüberlegungen
Vom Benutzer übergebene Parameter können ein grosses Sicherheitsrisiko auf einem Web-Server darstellen
und müssen daher gut überprüft werden. Werden nämlich diese Eingaben nicht auf ihren Inhalt überprüft
und an weitere Programme als Argumente übergeben, kann es passieren, dass höchst unliebsame Dinge
passieren.
Ein einfaches Beispiel ist eine Benutzereingabe, die danach wieder auf einer HTML-Seite verwendet
werden soll. Gibt nun ein Benutzer ein HTML-Tag anstatt von reinem Text ein und diese Eingabe wird
ungeprüft wieder in eine HTML-Seite eingebaut, kann das Layout dieser Seite total verändert werden.
Beispiel (harmlos): Anstatt des Namens WolfgangAmadeusMozart wird <B>WolfgangAmadeusMozart</B>
eingegeben. Somit erscheint in einem HTML-Dokument der Name ab sofort in Fett, auch wenn das überhaupt nicht beabsichtigt wurde.
Beispiel (weniger harmlos): Es wird als Name WolfgangAmadeusMozart</BODY></HTML> eingegeben.
Ein Browser, der etwas auf den HTML-Standard hält (gibts die?), sieht nach dem Namen das Ende des
HTML-Dokuments und zeigt den Rest garnicht mehr an.
Schlimmere Auswirkungen hat eine unkontrollierte Eingabe natürlich, wenn diese in eine Kommandozeile
eingebaut wird, und ein externes Programm aufgerufen wird. So kann schon mit einem einfachen “>/
5 http://www.google.com
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
125
etc/passwd” (Umleitung der Standard-Ausgabe in die Datei /etc/passwd) diese Datei überschrieben
werden (natürlich nur, falls das CGI-Programm die entsprechenden Rechte hat). Auf alle Fälle können
evtl. Dateien verändert / gelöscht / erzeugt werden oder andere Programme unter der Benutzerkennung
gestartet werden, mit der der Web-Server bzw. das CGI-Programm läuft.
Diese Sicherheitsüberlegungen betreffen alle serverseitigen Erweiterungen, die Benutzereingaben verarbeiten, und sind nicht CGI-spezifisch!
8.1.4
Server Side Includes (SSI)
Server Side Includes6 sind heute eher ungebräuchlich (werden aber immer noch von modernen WebServern (z.B. Apache) unterstützt) und werden hier nur der Vollständigkeit halber erwähnt. Sie werden
vom Web-Server nach SSI-Kommandos geparsed und vor der Auslieferung an den Web-Client ausgeführt.
Ein SSI-Kommando wird immer in einen HTML-Kommentar verpackt. Dies erlaubt die Verwendung von
HTML-Seiten mit SSI auch von Web-Servern, die SSI nicht beherrschen:
<!--#command tag1="value1" tag2="value2" -->
Es steht nur eine relativ kleine Anzahl von Kommandos zur Verfügung:
• config: stellt verschiedene Parameter ein, die das Parsen der HTML-Seite beeinflussen können.
• include: fügt ein anderes Dokument an dieser Stelle ein.
• echo: schreibt die Werte von Variablen in die Ausgabe.
• fsize: schreibt die Grösse der angegebenen Datei in die Ausgabe.
• flastmod: schreibt das letzte Änderungsdatum.
• exec: führt ein externes Programm aus (skript oder CGI-Programm).
Die Kommunikation mit einem externen CGI-Programm erfolgt wie bei CGI über Umgebungsvariablen,
wobei bei SSI noch zusätzliche Variablen definiert wurden (siehe Webseite).
Ein etwas ausführlicheres Tutorial ist auf den Apache Seiten des Include Moduls7 zu finden.
Ein ganz guter Artikel über SSI ist in c’t 20/2001 ([Len01]) erschienen.
8.1.5
Servlets und Java Server Pages (JSP)
Eine sehr gute Einführung über JSP (Java Server Pages) und Java-Servlets von Marty Hall8 (John
Hopkins University) findet sich auf http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/ bzw.
in [Hal00].
Anmerkung: “Java Applets” sind Java Programme, die im Web-Browser beim client laufen und haben
nichts (ausser der Programmiersprache) mit Servlets oder Java Server Pages zu tun!
Java-Servlets
Servlets sind Java-Programme, die auf einem Web-Server laufen und dynamisch Web-Seiten generieren
können. Servlets sind somit die Antwort von Sun auf CGI-Programme. Es gibt aber einige Unterschiede
von Servlets gegenüber CGI-Programme:
6 http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
7 http://httpd.apache.org/docs/mod/mod_include.html
8 http://www.apl.jhu.edu/~hall/
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
126
• Effizienz: ’Normale’ CGI-Programme werden bei jedem Aufruf vom Web-Server gestartet. Dadurch
kann ein ziemlich grosser Overhead durch die oftmalige Initialisierung des Programmes entstehen.
Greift das CGI-Programm beispielsweise auf eine Datenbank zu, muss es bei jedem Start eine
Verbindung zu der Datenbank aufbauen. Oder es fordern viele Benutzer gleichzeitig eine Seite an
und so wird das CGI-Programm mehrmals gestartet. Bei Servlets behandelt eine Java-VM (Virtual
Machine) alle Anfragen und startet bei Bedarf einen neuen lightweight Java-Thread und keinen
heavyweight Betriebssystemprozess.
Mittlerweile existieren schon verschiedene Techniken, die diese Nachteile von CGI etwas verbessern
(z.B. Fast-CGI 9 ).
• Programmiersprache: Während Java-Servlets logischerweise nur in Java geschrieben werden können,
kann man ein CGI-Programm in jeder beliebigen Programmiersprache (auch in Java) schreiben.
• Mächtigkeit: Servlets können einige Dinge, die mit CGI-Programmen nur schwer oder garnicht
gelöst werden können, wie z.B. das Teilen von Daten oder Objekten zwischen mehreren Servlets.
Da die Servlet-Engine durchgehend läuft und nicht wie ein CGI-Programm immer von neuem
gestartet wird, ist es auch einfacher, Informationen von einer Anfrage zur nächsten weiterzugeben
(session-tracking oder caching von früheren Abfrageergebnissen).
• Portabilität: Da Java plattformunabhängig ist, sind natürlich auch Servlets unabhängig vom verwendeten Betriebssystem. CGI-Programme sind je nach verwendeter Programmiersprache nur mehr
oder weniger portabel (verschiedene C-Compiler, ...).
Ein Servlet ist eine ganz normale Java-Klasse, die von der abstrakten Klasse javax.servlet.http.
HttpServlet ableiten und somit u.a. eine Methode public void doGet(request, response) enthalten
muss. Diese Methode wird vom Servlet-Server aufgerufen, wenn die entsprechende Seite vom Benutzer
angefordert wird (mittels HTTP-GET-request).
Folgender Code kann als Grundlage für eigene Versuche verwendet werden:
import java.io.∗;
import javax.servlet.∗;
import javax.servlet.http.∗;
/∗∗
∗ Servlet template
∗/
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Use ”request” to read incoming HTTP headers (e.g. cookies)
// andHTMLform data (e.g. data the user entered and submitted)
// Use ”response” to specify the HTTP response line and headers
// (e.g. specifying the content type, setting cookies).
PrintWriter out = response.getWriter();
// Use ”out” to send content to browser
}
}
Für eine komplette (?) Installationsanleitung siehe Abschnitt Installation eigener Servlets auf Seite 128.
Da es zu weit führen würde, hier alle Einzelheiten und Kniffe der Servlet-Programmierung aufzuzählen,
sei hier wieder auf das Servlet-Tutorial10 verwiesen, das u.a. erklärt,
9 http://www.fastcgi.com
10 http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
127
• wie auf Eingaben von HTML-Forms reagiert werden kann (request.getParameter(paramName))
• wie HTTP-Header ausgelesen werden können (request.getHeader(headerName))
• wie Cookies verwendet werden
• wie Sessions ’geTracked’ werden
Eine vollständige Beschreibung des Servlet-APIs ist unter http://java.sun.com/products/servlet/
2.2/javadoc/index.html zu finden.
Java Server Pages (JSP)
Im Gegenzug zu Servlets, die eigene Java-Klassen sind, ist Java Server Pages eine Technologie, bei
der man statisches HTML mit dynamischen Inhalten mischen kann. Dabei wird Java-Code mit dem
ansonsten statischen HTML-Code vermischt. Bevor eine solche Seite vom Server an den Browser des
Benutzers geschickt wird, wird der darin enthaltene Code ausgeführt und der dabei entstandene HTMLCode eingefügt.
Ein kurzes Beispiel verdeutlicht dies:
<HTML>
<HEAD>
<TITLE>JSP-Hello World</TITLE>
</HEAD>
<BODY>
Static Hello World<BR>
<% out.print("Dynamic Hello World :-)<br>"); %>
</BODY>
</HTML>
Anmerkung: Die Zeilen
• <% out.print("Hello World <BR>");
%>
• <%= "Hello World <BR>" %>
• <% String hello = "Hello World <BR>"; out.print(hello); %>
• <% String hello2 = "Hello World <BR>"; %>
<%= hello2 %>
• < jsp:scriptlet > out.print("Hello World <BR>"); </ jsp:scriptlet >
• <jsp:expression> "Hello World <BR>" </jsp:expression>
sind äquivalent. <%= <java-code> %> wird intern zu <% out.print(<java-code>); %> umgesetzt. Die
zugehörigen XML-Tags heissen <jsp:expression> und < jsp:scriptlet >.
Interne Behandlung von JSP Sämtliche Java Server Pages werden vom JSP-Server beim ersten Aufruf in Java-Code umgewandelt und kompiliert. Der Source-Code unseres Hello-World-JSPs liegt z.B. im
Verzeichnis <tomcat-dir>/work/localhost_8080%2Fmmis_jsp_example und ist bis auf den etwas seltsamen Klassennamen (_0002fhello_0005fworld_0002ejsphello_0005fworld_jsp_0) durchaus lesbarer
Java-Code:
[...]
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
[...]
response.setContentType("text/html;charset=8859_1");
[...]
out.write("<HTML>\r\n <HEAD>\r\n
<TITLE>JSP-Hello World</TITLE>\r\n
[...]
}
[...]
</HEAD>\r\n
<BODY>\r\n");
Man sieht hier sehr schön, dass JSP im Prinzip genau gleich wie Servlets arbeiten und die gleichen Klassen
verwenden.
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
128
Installation Servlet/JSP Server
Um Servlets oder JSP versenden zu können, muss ein Server installiert werden/sein, der dies unterstützt.
Die Referenzimplementation dafür ist Tomcat11 aus dem Apache12 -Projekt. Tomcat kann als eigenständiger Server für JSP oder Servlets verwendet werden, oder in den Apache Web-Server integriert werden.
Eine Übersicht über vorhandene Servlet-Server ist bei eingangs erwähntem Tutorial von Marty Hall im
Kapitel “Setup”13 zu finden.
Installation Tomcat Die Installation von Tomcat geht ganz einfach von der Hand. Die aktuelle
Tomcat-Version downloaden und in einem Verzeichnis auspacken. Da die Windows Version nicht getestet
wurde, wird hier nur eine Kurzanleitung für Linux angegeben, die sich prinzipiell aber auf Windows
(*.bat-Dateien anstatt *.sh) umlegen lässt (ein kurzer User-Guide findet sich im ausgepackten TomcatVerzeichnis unter webapps/tomcat-docs (bzw. unter doc/uguide/tomcat_ug.html bei Version 3.2.1)
bzw. unter http://jakarta.apache.org/tomcat/jakarta-tomcat/src/doc/):
# installation in verzeichnis ’/foo’
cd /foo
tar xzf <path-to-tomcat-archive>/jakarta-tomcat-4.1.12.tar.gz
cd jakarta-tomcat-4.1.12
# make scripts executable (bug in 4.1.12)
chmod +x bin/*.sh
# start von tomcat (windows: use bin/startup.bat)
bin/startup.sh
# stoppen von tomcat:
bin/shutdown.sh
Nach dem Start von Tomcat kann unter http://localhost:8080 (evtl. nur unter http://<hostname>:
8080) auf den Tomcatserver zugegriffen werden. Von hier aus können auch JSP und Servlet Beispiele,
die in der Distribution enthalten sind, ausprobiert und die Dokumentation gelesen werden.
Installation eigener Java Server Pages Um eigene JSP verwenden zu können (in diesem Beispiel
im Verzeichnis <tomcat-dir>/webapps/mmis_jsp, sind folgende Schritte notwendig:
• Obiges hello_world.jsp-Beispiel im Verzeichnis <tomcat-dir>/webapps/ROOT/mmis_jsp kopieren/erstellen. Das Verzeichnis <tomcat-dir>/webapps/ROOT/ ist das root-Verzeichnis von Tomcat.
(Dieses Verzeichnis erscheint unter der URL http://localhost:8080 im Browser.)
• In einem beliebigen Browser die Seite http://localhost:8080/mmis_jsp bzw. http://localhost:
8080/mmis_jsp/hello_world.jsp aufrufen.
Installation eigener Servlets Um eigene Servlets aufrufen zu können, müssen folgende Schritte durchgeführt werden:
• Das Root Verzeichnis für Servlets ist <tomcat-dir>/webapps/ROOT/WEB-INF/classes.
• Erstellen/kopieren eines Servlets in eben diesem/dieses Verzeichnis. Als einfachstes Hello-WorldServlet kann z.B. folgendes verwendet werden (<tomcat-dir>/webapps/ROOT/WEB-INF/classes/
HelloWorld.java):
import
import
import
import
import
import
java.io.IOException;
java.io.PrintWriter;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
11 http://jakarta.apache.org/tomcat/index.html
12 http://www.apache.org
13 http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Setup.html
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
129
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
String title = "Hello World";
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <head>");
out.println("
<title>" + title + "</title>");
out.println(" </head>");
out.println(" <body>");
out.println(title);
out.println(" </body>");
out.println("</html>");
}
}
• Kompilieren des Servlets im obigen Verzeichnis. Dazu muss der CLASSPATH auf das aktuelle Verzeichnis und auf das jar-File, das die Servleterweiterungen enthält zeigen: CLASSPATH=.:<tomcat-dir>
/common/lib/servlet.jar
Unter Windows müssen die Teile des Classpaths natürlich mit ’;’ abgetrennt werden!
• evtl. (bei Tomcat 4.1.12 ganz sicher) muss im Konfigurationsfile web.xml im conf-Verzeichnis der
Eintrag
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
einkommentiert werden. (Entfernen der <!--...--> Zeichen).
Eine Alternative dazu ist das Erzeugen eines neuen Contexts in conf/server.xml, der dann auf
ein neues Verzeichnis verweist.
• Dieses Servlet ist (evtl. nach Neustart von Tomcat) unter http://localhost:8080/mmis_servlet/
servlet/HelloWorld zu erreichen.
Man beachte den servlet-Teil zwischen mmis_servlet und dem Klassennamen und dass kein
.class angehängt ist.
8.1.6
Active Server Pages (ASP)
Als Gegenstück zu Suns Java-basierter serverseitiger Erweiterung stehen Microsofts ASP (Active Server
Pages). ASP ist eine Vermischung von HTML und Visual Basic Script. Lt. einem Artikel des MSDNMagazins14 wird dieses Skript bei jedem Aufruf interpretiert und auf dem Server ausgeführt. Das
Ergebnis wird danach zum Benutzer gesendet.
Die Verwendung von ASP unterscheidet sich kaum von JSP, was allerdings auch wenig erstaunlich ist, da
ASP höchstwahrscheinlich das Vorbild für JSP war und Sun durch leichte Erlernbarkeit möglichst viele
Entwickler auf seine Seite ziehen wollte.
Folgendes Beispiel zeigt “Hello World” als ASP:
<html>
<script language="VBScript" runt="Server">
Sub HelloWorld()
Response.Write "Hello World from ASP."
End Sub
14 http://msdn.microsoft.com/msdnmag/issues/1000/atlserv/atlserv.asp
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
130
</script>
<body>
<% HelloWorld %>
</body>
</html>
Im Grunde genommen ist es eine Geschmackssache bzw. Plattformentscheidung, welche der beiden Server
Pages man einsetzen will.
8.1.7
in the beginning
Der folgende Text stammt von http://www.webhostdir.com/guides/asp/in_the_beginning.asp (daraus folgt auch die Lobeshymne auf Web Host Directory am siebten Tag):
NOTIZ: Er dient nur der allgemeinen Erheiterung und wird natürlich nicht geprüft :-))
in the beginning was the internet and the internet was bland (unless you liked text) and the
internet was boring (unless you got flamed on the newsgroups).
Thus ended the first (boring) day.
Tim Berners-Lee (God) saw the internet and thought “let there be pages, and let them be
linked and let there be colour and graphics”; and there were pages and there was colour and
there were graphics, and God saw the internet and said “now it is a web, and the web is
good”. And the people saw the web and said, “wow, we can use this even if we aren’t particle
physicists” and the people started to use the web and write their own pages (and not all of
them were students).
Thus ended the second day.
Then the people got restless, “we don’t just want static pages”, they cried; “we want dynamic
pages, we want information that changes depending on what we put into our browsers, we
want phone books”, they wailed. God heard the cries and responded with forms, and radio
buttons and text boxes and cgi so that the people would be happy, and the people smiled.
The archangel Larry Wall brought forth a perl and said “lo, tho it was not created for this
purpose, see how perl works with cgi” and the people rejoiced.
Thus ended the third day.
Then Bill Gates (The Devil/St. Paul - delete as appropriate) saw the web, and cgi, and perl
and all the people whose souls weren’t his and said unto himself “damn, I’ll have to rewrite my
book and convince people that I was for the web all along”. And Bill set his pixies to labour
long and hard and produced a browser (Internet Explorer v2), and a web server (Internet
Information Server v1) to demonstrate his conversion, and they weren’t much cop and the
people did laugh, and some of them threw stones from their Mosaic.
Thus ended the fourth day.
And Bill did wail and gnash his teeth and said to his pixies “work harder and make my
products work and then give them away”. The pixies worked and toiled and lo, produced
Internet Explorer 3 (which was still not much cop) and Internet Information Server v2 (which
was better). And then Bill looked at the web and said, “lo, on the third day the people were
rejoicing because they had cgi and perl and things that I did not provide them with; would
they not further rejoice if I was to provide for them the same, only better?” and he set his
pixies to work.
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
131
Thus ended the fifth day.
And on the sixth day, active server pages were born. And some of the people scorned, because
they always scorned Bill; and some of the people scorned because they said Bill had just reinvented what was already there and called it his own; and some people scorned because it
wasn’t cross platform (like perl) and only ran on Win95/NT machines. But some of the people
said “hey, we have NT, we have web servers, we have Access and MS SQL Server and we don’t
want to learn perl, which is for the bearded unwashed (or UNIX users as they are known).
We like Visual Basic and want to do exciting and dynamic things with our web pages”, and
they praised Bill and rejoiced.
Thus ended the sixth day
And on the seventh day, the Web Host Directory was born.
Informationen zu ASP
• Eine ganz gute Einführung in ASP ist das Tutorial von http://www.webhostdir.com/guides/asp/
oder http://www.asptutorial.info/.
• Ein Tutorial, das das Zusammenspiel von ASP mit diversen Datenbanken zeigt, ist unter http:
//asp.papiez.com/tutorials/asp101/ zu finden. Um dieses Tutorial lesen zu können, muss man
sich (kostenlos) registrieren.
8.1.8
PHP
PHP (PHP Hypertext Processor) ist eine Skriptsprache, die ebenfalls direkt in HTML-Seiten eingebettet
werden kann. Bevor diese HTML-Seite vom Server zum Benutzer gesendet wird, werden diese Befehle
vom PHP-Interpreter ausgeführt und so eine Web-Seite erzeugt, die vom Browser verstanden wird. Die
Verbindung vom Web-Server zum PHP-Interpreter kann auf verschiedene Weise gelöst werden:
• Der PHP-Interpreter wird als CGI-Modul verwendet: Diese Methode ist bei jedem Web-Server
einsetzbar, der CGI-Programme ausführen kann (praktisch alle “grossen” Web-Server können dies),
und sehr flexibel. So ist es auch möglich, den Web-Server und den PHP-Interpreter voneinander
unabhängig upzugraden.
Als CGI-Programm bringt der PHP-Interpreter jedoch einen gewissen Overhead mit sich.
• Viel effizienter ist es, den Interpreter als ein Plug-In des Web-Servers zu installieren. Dies wird
bereits für viele verschiedene Web-Server unterstützt: Apache, AOLServer, fhttpd, Internet Information Server, Netscape Server, phttpd, roxen...
• Der Interpreter kann auch als Servlet eingesetzt werden und so evtl. in Kombination mit Apaches
Jakarta/Tomcat arbeiten [K0̈0].
Es gibt mehrere syntaktische Möglichkeiten, PHP in Web-Seiten einzubauen:
• < ? ... ? >
• <?php ... ?>
• <script language=’’php’’> ... </script>
• <% ... %>
Als einfachstes PHP-Skript dient wiedereinmal ein hello_world.php:
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
132
<html>
<head>
<title>Example</title>
</head>
<body>
<?php
echo "Hi, I’m a PHP script!";
?>
</body>
</html>
Die Syntax von PHP lehnt sich an Perl, C und Java an und bietet alle bekannten Kontrollstrukturen
dieser Sprachen. PHP bietet untypisierte Variablen, d.h. obwohl es verschiedene Typen von Variablen gibt
(Ganzzahl, Fliesskomma, String, Arrays, ...) müssen sie nicht deklariert werden und Typumwandlungen
werden automatisch vorgenommen.
Variablen werden mit vorangestelltem Dollarzeichen ’$’ geschrieben. PHP-Skripte können Paramter
über HTTP-GET und POST erhalten und haben auch Zugriff auf Cookies. Beim Start werden diese
Parameter automatisch importiert und stehen als Variable zur Verfügung: Wird also ein PHP-Skript mit
der Url http://www.google.com/search?sourceid=googlet&q=Abfrage aufgerufen, stehen dem Skript
search die Variablen $client und $q zur Verfügung (Dieses Beispiel dient nur der Demonstation und
will keineswegs andeuten, dass Google mit PHP arbeitet!).
Diese Art der Variablenbelegung ist sicherheitstechnisch etwas zweifelhaft und kann natürlich ausgeschaltet werden (Stichwort gpc_order bzw. variable_order und register_globals in PHP4 auf einschlägigen Web-Seiten15 oder Manuals).
Eine ausführliche Anleitung für PHP ist das PHP-Manual16 , das sowohl die Installation von PHP, als auch
die Programmiersprache selbst beschreibt. Eine weitere gute Beschreibung ist unter www.selfphp3.com
zu finden.
Eine besondere Stärke von PHP ist die Unterstützung von vielen verschiedenen Datenbanken (u.a.
Adabas-D, mSQL, MySQL, Oracle, Postgres, Slid, Sybase/Sybase-CT, Velocis, dBase-Files, fileProDateien, ODBC, ... (Liste17 )) und die Einbindung von Datenbankabfragen in Webseiten. Es werden
aber auch ganz andere Techniken unterstützt, wie z.B. das dynamische Generieren von Bildern18 , der
Zugriff auf Mailserver (SMTP, POP3, IMAP, ...)19 und vieles mehr.
Da die freie Datenbank MySQL20 sehr oft in Verbindung mit PHP bei Web-Sites Verwendung findet, folgt
ein kurzes Beispiel, wie man mit Hilfe von PHP und einer Datenbank einen Counter für HTML-Seiten
erstellt21 . Für Details zu den php-Funktionen siehe die MySQL Seite des PHP-Manuals22 :
<?php
$db_host
$db_user
$db_pass
$db_name
$my_url
=
=
=
=
=
"was.weiss.ich.net";
"username";
"meinpasswort";
"meinedb";
"http://dies.ist.meine.url";
$db_conn = mysql_connect($db_host, $db_user, $db_pass)
or die ("\nKeine Verbindung zum Datenbank-Server!<br>\n");
mysql_select_db($db_name, $db_conn)
or die ("\nDatenbank auf Server nicht gefunden!<br>\n");
$db_result = mysql_query("SELECT * FROM counter where url = ’$my_url’", $db_conn)
or die ("\nDatenbank-Abfrage fehlgeschlagen!<br>\n");
$db_row = mysql_fetch_array($db_result);
$hits = $db_row[hits];
$hits++;
$db_result = mysql_query("UPDATE counter SET hits = ’$hits’ WHERE url = ’$my_url’", $db_conn)
or die ("\nKonnte Zählerstand in Datenbank nicht erhöhen!<br>\n");
$hits_str = sprintf("Hits von URL ’%s’: %07d", $my_url, $hits);
echo $hits_str;
@mysql_close($db_conn);
15 http://www.intermitto.net/?thema=php&seite=konfig.data
16 http://www.php.net/manual/
17 http://www.php.net/manual/en/intro-whatcando.php
18 http://www.php.net/manual/en/ref.image.php
19 http://www.php.net/manual/en/ref.imap.php
20 http://www.mysql.com
21 Abgeleitet
von der MMIS-Übung SS2001 von Juergen Haeuselhofer, Reinhard Hutter, Michael Mitter und Udo Pichl
22 http://www.php.net/manual/ref.mysql.php
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
133
?>
PHP-Tutorials sind u.a. hier zu finden:
• PHP für Anfänger23
• PHP Introductory Tutorial24
• Das PHP4 - Webserver-Programmierung für Einsteiger25 Buch (auch downloadbar).
• Datenbank, MySQL und PHP26 führt in die Grundlagen von Datenbanken, SQL und PHP ein.
• Ein Pendant zu SelfHtml ist SelfPHP27 .
• PHP/MySQL Tutorial28
NOTIZ: Tripod.de (http://www.tripod.lycos.de) bietet gratis 50MB Webspace, PHP (muss aktiviert
werden) und Zugriff auf eine MySQL Datenbank an - Optimal, um für die Übung eine PHP-Seite zu
erstellen
8.1.9
Cookies
Cookies sind Strings, die vom Web-Server per http an den Web-Browser gesendet werden und dort
gespeichert werden. Diese Cookies werden als Teil des HTTP-Headers vom Browser wieder an den Server
übertragen.
Wenn ein Server ein Cookie an einen Browser schickt, kann der Browser dieses Cookie entweder im
Cache, in seiner Cookie-Datenbank oder in einer Datei nur für dieses Cookie abspeichern. Cookies haben
normalerweise auch ein “Ablaufdatum”. Bei Cache-Cookies wird es auf “Ablaufen bei Beenden des
Browsers” gesetzt; bei Datei-Cookies kann es auf ein beliebiges Datum gesetzt werden. Zusätzlich kann
festgelegt werden, wer das Cookie lesen darf, also welcher Server. Dies wird aber auch vom Server, der
das Cookie schickt, festgelegt.
Cookies erlauben so eine Zustandsspeicherung des Dialoges zwischen Browser und Server, der Web-Surfer
hat aber kaum inhaltliche Kontrolle über die bei ihm abgelegten Daten. Kommerzielle Anbieter werten
mittlerweile Cookies aus, um Interessensprofile von Endnutzern zu erstellen.
Oft wird deshalb empfohlen, Cookies entweder auszuschalten oder höchstens nach Bestätigung (da sieht
erst einmal, wieviele Cookies übertragen werden!) zu akzeptieren. [Hen00]
8.1.10
Session Tracking
HTTP ist prinzipiell (es gibt auch die andere Variante (HTTP1.1 - Stichwort keepAlive)) ein Protokoll,
das für jeden Request eine neue TCP/IP Verbindung aufbaut. Nachdem dieser Request abgearbeitet
ist (die Datei vom Server zum Client übertragen wurde), wird die Verbindung abgebaut. Für eine neue
Anfrage muss erneut eine TCP/IP Verbindung aufgebaut werden.
Diese Tatsache erschwert das sogenannte Session Tracking, also das Verfolgen eines Benutzers über mehrere Web-Seiten hinweg. Oft ist es jedoch notwendig zu wissen, welcher Benutzer eine Seite anfordert.
Beispielsweise muss ein Online-Shop nach einmaliger Identifikation den Benutzer mitverfolgen, um so
immer den richtigen Wahrenkorb anzubieten.
Egal, welche Technik (ASP, JSP, PHP, ...) man verwendet, das allgegenwärtige HTTP-Protokoll bietet
nur begrenzte Möglichkeiten zum Session Tracking:
23 http://www.skyhome.de/php/
24 http://www.php.net/tut.php
25 http://www.galileocomputing.de/openbook/php4/
26 http://ffm.junetz.de/members/reeg/DSP/
27 http://www.selfphp.info/index.php
28 http://hotwired.lycos.com/webmonkey/programming/php/tutorials/tutorial4.html
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
134
• Der Benutzer wird über Cookies eindeutig identifiziert und bei jedem Seitenaufruf wird ein Cookie
vom Client zum Server übertragen, das dem Server mitteilt, welcher Benutzer bzw. welche Session (ein Benutzer könnte ja mehrmals ’eingeloggt’ sein) vorliegt. Der Web-Server muss nur noch
nachschlagen, welcher Cookie-Wert welcher Session entspricht und kann so leicht erkennen, dass ein
HTTP-Request zu einer bestimmten Session gehört.
Diese Möglichkeit funktioniert auch bei statischen Web-Seiten, da Cookies unabhängig von der
Web-Seite übertragen werden können.
Bei clientseitigen ausgeschalteten Cookies kann diese Technik allerdings nicht angewandt werden.
• Bei Web-Formularen können einfach sog. Hidden Fields in der HTML-Seite verborgen werden, deren
Inhalt für den Benutzer unsichtbar bleibt und trotzdem für das serverseitige Skript auswertbar ist:
<INPUT type=”HIDDEN”name=”sessionInfo”value=”username”>
So wird z.B. eine Benutzer/Session-Kennung in jedes ausgelieferte HTML-Dokument verpackt und
beim nächsten Post-Request wieder an den Server zurückgeliefert (nur bei einem Submit des Formulars, nicht bei einem normalen Link von der HTML-Seite).
Diese Methode ist unabhängig von Browsereinstellungen und sollte somit eigentlich immer funktionieren. Der Nachteil ist allerdings, dass jede ausgelieferte Seite auf einen Benutzer bzw. eine
Session zugeschnitten ist. Daher müssen Seiten dieser Art immer dynamisch erzeugt werden, und
können daher nicht gecached werden.
Ein weiterer Nachteil dieser Methode ist, dass ein verstecktes Formularfeld natürlich ein Formular
voraussetzt und daher nur eine submit Methode unterstützt (nur ein Link möglich). Eine Möglichkeit, dies zu umgehen ist folgende, die Javascript verwendet (und von Karl Svensson beigesteuert
wurde). Hier wird für jeden Link eine Javascript-Funktion aufgerufen, die das “submitten” übernimmt:
<html>
<head>
<title>Link test</title>
</head>
<script language="JavaScript">
function linkFunc(inURL)
{
Info.action = inURL;
Info.submit();
}
</script>
<body>
<form name="Info" method="get">
<input type="hidden" name="hidden1" value="Kalle">
<input type="hidden" name="hidden2" value="Svensson">
</form>
<a href="javascript:linkFunc(’pelle.htm’)">Pelles page</a>
<a href="javascript:linkFunc(’kalle.htm’)">Kalles page</a>
</body>
</html>
• Eine ähnliche Methode wird verwendet, wenn die Sessionkennung für einen HTTP-GET-Request in
die Url codiert wird, sog. URL-Rewriting (z.B. bei dem Freemailer GMX29 : http://www.gmx.net/
cgi-bin/folindex/979544435?CUSTOMERNO=1234567). In diesem Fall wird die Kundennummer
und eine Session Id in jeder Url mitübergeben. Damit jedoch diese Kundennummer an alle Nachfolgeseiten übergeben wird, muss an alle Links auf dieser Seite ?CUSTOMERNO=1234567 angehängt
werden. Dies setzt wiederum eine dynamische Seitengenerierung voraus und macht diese Seiten für
Web-Caches untauglich.
Ein guter Artikel betreffend Session-Tracking in PHP4 findet sich unter http://www.dclp-faq.de/ch/
ch-version4_session.html, in dem u.a. steht, dass PHP defaultmässig Cookies zum Session-Tracking
verwendet.
29 http://www.gmx.net
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
8.2
135
Distributed Programming
In diesem Abschnitt wird eine Auswahl an aktuellen Möglichkeiten vorgestellt, wie Applikationen über
Netzwerkgrenzen verteilt werden können. Da eine genauere Beschreibung den Raum dieses Skripts bei
weitem sprengen würde, wird nur ein kurzer Überblick ohne Anspruch auf Vollständigkeit gegeben.
8.2.1
.NET
Laut Microsoft ist .NET eine “revolutionary new platform, built on open Internet protocols and standards,
with tools and services that meld computing and communications in new way”.
Weniger euphorisch gesagt, versucht Microsoft mit .NET eine Konkurrenz zu Java Enterprise Edition
aufzubauen, indem eine Möglichkeit geschaffen wird, Applikationen zu erstellen, die
• in verschiedenen Programmiersprachen entwickelt wurden,
• auf verschiedenen Plattformen (z.Zt. nur Windows Plattformen) lauffähig sind,
• miteinander über das Internet kommunizieren können.
Kern der .NET-Plattform ist eine Laufzeitschicht (CLR (Common Language Runtime)), die für alle
Sprachen gemeinsam vorgesehen ist, und eine Art Grundgerüst für die Anwendungen darstellt. [Ric00]
Die Sprachunabhängigkeit wird durch die Verwendung einer “intermediate language” (MSIL) - also einer
Art Bytecode - erreicht. Somit kann in allen Sprachen, für die ein MSIL-compiler erhältlich ist, für .NET
entwickelt werden (Abbildung 8.1). Microsoft selbst unterstützt die Entwicklung dieser Compiler, kann
und wird jedoch aus rechtlichen (und marketingtechnischen :-) Gründen keinen Java-Compiler anbieten.
VB
C#
C++
compiler
compiler
compiler
ASM Code
IL Code
Common Language Runtime
JIT Compiler
Betriebssystem
Abbildung 8.1: Die Common Language Runtime (CLR) verarbeitet die intermediate language, die von verschiedenen Compilern erzeugt werden kann.
Das Konzept der ’intermediate language’ ist nicht wirklich neu (schon das altehrwürdige BTX hat eine
solche verwendet) und so gibt es auch viele Compiler die verschiedenste Sprachen in den Java-Bytecode
übersetzen (siehe http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html).
Weitere Infos und Links über .NET auf der Vorlesungsseite von Dr. Ralph Zeller (Microsoft’s ExUniversitätsbeauftragen): http://www.ssw.uni-linz.ac.at/Teaching/Lectures/DotNet/
C#
Als neue Sprache und direkten Konkurrenz zu Java entwickelte Microsoft C# (sprich “C sharp” - also
“Cis Dur”), die folgende Eigenschaften besitzt:
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
136
• Objekt orientiert, aber keine Mehrfachvererbung, kein Operator-Overloading. Originalzitat aus
einem MSDN-Magazin30 : “Yeah, yeah. C++ is object oriented. Right. I’ve personally known
people who have worked on multiple inheritance for a week, then retired out of frustration to North
Carolina to clean hog lago.”
• garbage collection
• einfachere Datentypen: keine verschiedenen Typen für den selben Zwecke (“a char is a char, not
a wchar t”). Keine unsigned Typen. Hier liegt aber auch ein Problem bei der Verwendung von
anderen Programmiersprachen, die sehr wohl diese Datentypen unterstützen, aber bei der Compilierung in die (mit C# gemeinsame) MSIL nicht verwendet werden dürfen. So ist ein String in
Visual Basic gleich einem String in C# gleich einem String in C (den es aber leider nicht gibt :-).
• Versionen für Libraries (“end of the DLL Hell ”).
• Aufrufe zur Windows API oder “alte” DLLs werden unterstützt. Sollten solche Aufrufe verwendet
werden, ist die Plattformunabhängigkeit natürlich obsolet.
Weitere Infos zu C#:
• http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp
• http://www.microsoft.com/PressPass/press/2000/jun00/CSharpPR.asp
• http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp
SOAP
SOAP (Simple Object Access Protocol) ermöglicht den einfachen Austausch von Informationen zwischen
Applikationen über das Netzwerk. Dies kann ein einfaches Austauschen von Nachrichten sein, oder aber
ein “remote procedure call ”, also ein Aufruf einer Funktion über Netzwerkgrenzen hinweg.
SOAP kann diese Nachrichten über HTTP versenden und umgeht somit Probleme mit Firewalls.
SOAP Nachrichten sind in XML kodiert.
Mehr Details über SOAP auf der Webseite des W3C31 oder unter http://www.iicm.edu/research/
seminars/ws_00/pacnik_strohmaier.pdf.
WebMethod
WebMethods erlauben den netzwerktransparenten Zugriff auf Methoden von CLR-Applikationen von
anderen Computern über ein Netzwerk. Dazu wird einfach ein [Webmethod] Attribut vor den Methodennamen im Sourcecode gestellt und ab sofort ist diese Methode über das Netzwerk aufrufbar (mit Hilfe
von SOAP).
[WebMethod(Description="ADO.NET WebMethod Example")]
public DataSet GetCustomersNew()
{
[....]
}
Das komplette Beispiel findet sich unter http://www.c-sharpcorner.com/database/adovsadonetwebservice.
asp.
Prinzipiell ist gegen eine solche Idee nichts einzuwenden, erleichtert es ja die Implementation von verteilten Programmen. Der grosse Nachteil32 dieser Methode ist jedoch, dass eine solche WebMethodKennzeichnung auch für andere Programmiersprachen eingeführt wurde und damit der Umfang aller
Sprachen verändert wurde. Dies ist auch einer der Gründe, warum Microsoft Java nicht unterstützen
kann, da Sun eine Änderung der Sprache Java verboten hat.
30 http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp
31 http://www.w3.org/TR/SOAP/
32 Dies
ist natürlich nur die persönliche Meinung des Autors.
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
137
ASP.NET
ASP.NET unterscheidet sich vom “normalen” ASP hauptsächlich dadurch, dass es nicht nur Visual Basic
innerhalb von ASP-Seiten erlaubt, sondern auch C# oder ähnliche.
So bindet folgender Code ein C# Programm in eine ASPX-Seite ein:
<%@page language="C#" src="aux1.cs"%>
<%assembly Name="aux2.dll" %>
Man beachte, dass kein ausführbares Programm oder eine DLL angegeben wurde, sondern direkt der
Source Code, der dann bei Bedarf (wenn der Source ein neueres Änderungsdatum als die erzeugte DLL
hat) compiliert und ausgeführt wird.
8.3
WAP/WML
8.3.1
WML
WML (Wireless Markup Language) ist die Markup Language für WAP (Wireless Application Protocol)Browser (wie HTML für Web-Browser) und wird ebenfalls via HTTP übertragen.
Damit der Web-Server WML-Dateien richtig ausliefert, muss dies in der entsprechenden Server-Konfigurationsdatei (z.B. bei Apache unter SuSE7.0-Linux in /etc/httpd/httpd/conf) oder in der .htaccessDatei des Verzeichnisses (falls der Web-Server dies unterstützt) eingetragen sein:
AddType
AddType
AddType
AddType
Addtype
text/vnd.wap.wml wml
text/vnd.wap.wmlscript wmls
application/vnd.wap.wmlc wmlc
application/vnd.wap.wmlscriptc wmlsc
image/vnd.wap.wbmp wbmp
Dies setzt die MIME-Types für die jeweiligen Dateien, sodass der WAP-Browser diese akzeptiert.
Jedes WML-Dokument ist ein gültiges XML-Dokument und muss so alle Anforderungen von XML
erfüllen. Ein WML-Dokument besteht aus mehreren Teilen:
• Deck (Stapel): Ein Deck ist am besten mit einer herkömmlichen HTML Seite vergleichbar und
besteht aus einer oder mehreren Cards (Karten). Es wird immer ein komplettes Deck auf das WAP
Gerät geladen, so dass dieses nicht zu groß sein und logisch zusammengehörige Cards enthalten
sollte.
Das Deck enthält ein <wml>-Tag am Anfang (und das abschließende </wml> am Ende), sowie die
Meta-Tags und ggf. für alle Cards gültige <do>-Elemente.
• Prolog:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
• WML-Header: Dieser kann Metainformationen enthalten, ähnelt dem HTML-<head>-Tag und
wird innerhalb des <wml>-Tags verwendet:
<head>
<meta name="keywords" content="Stichwort, Suchwort,
Schlagwort"/>
<meta name="description" content="Eine Beschreibung"/>
<meta name="author" content="Thomas Ziegler"/>
</head>
• Cards: Eine Card (Karte) ist der Teil eines Decks, mit dem der Benutzer navigiert. Er springt also
von einer <card> zur anderen - die sich entweder auf einem Deck (einer Datei) zusammen oder in
unterschiedlichen Dateien befinden.
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
138
<card id="cardid" title="Card Titel">
<p>Text auf dieser Karte</p>
</card>
• Verweise lassen sich auf mehrere Arten angeben, die bei HTML gebräuchliche (<a>) wird jedoch
auch hier akzeptiert.
<a href="http://wml.domain.de/deck.wml/#card">Gehe zu Karte</a>
• Textattribute: werden auch hier unterstützt und folgen dem HTML-Standard (<em>, <i>, <strong>,
...)
• Ein Zeilenumbruch muss in XML-konformer Weise <br/> geschrieben werden. Die Definition von
Paragraphen erfolgt wie gehabt mittels <p>. Tabellen sind ebenfalls HTML-konform und werden
mit <table>, <tr>, <td> erstellt. Da XML jedoch sehr streng auf die Syntax achtet, dürfen keine
Ende-Tags aus Faulheit weggelassen werden!
• Graphiken: Bei WML können nur Bilder im WBMP-Format (Wireless Bitmap) verwendet werden.
• Formularfelder werden auch hier unterstützt (Auswahlfelder, Eingabefelder, ...)
• Tasks lösen Aktionen auf einen Event (Card aufgerufen, Verweis angeklickt) aus.
– Mit <go> kann auf eine andere Stelle (Card oder Deck) gesprungen werden:
<go href="http://www.domain.de/deck"/>
<go href="#card"/>
– <prev/> springt zur vorherigen Stelle.
– <refresh/> lädt die Seite erneut.
– <do> behandelt Events
• Variablen sind eine leistungsfähige Erweiterung der bekannten HTML Funktionalität. Sie werden benutzt, um Statusinformationen oder Benutzereingaben kontextsensitiv von einer Card zur
nächsten oder an den Server weiterzugeben. Variablen werden mit dem Dollar-Zeichen ’$’ eingeleitet. Soll daher ein $-Zeichen im Text verwendet werden, ist $$ zu schreiben.
<p>Wert von T ist $T</p>
$(URL:unesc)
$(PATH:escape)
Stellt den Text dar und ersetzt $T mit dem Wert der Variable. Mit unesc und escape lässt sich
die Variable URL de- bzw. encodieren.
Die WML-Spezifikation33 und andere Referenzen finden sich auf http://www.wapforum.org. Eine
gute Einführung, von der auch der WML-Teil dieses Kapitels übernommen wurde findet sich unter
http://www.thozie.de/wap/wml.htm. Ein ganz gutes Tutorial ist auch unter http://www.wap-uk.
com/Developers/Tutorial.htm zu finden.
8.3.2
WAP
Um nun von einem WAP-Device zu einem Server ein WML-Dokument abfragen zu können, werden
mehrere Teile benötigt (siehe auch Abbildung 8.2):
• Das WAP-Gerät muss sich bei einem Einwahlknoten einwählen und stellt zu diesem eine TCP/IPVerbindung her. Zwischen WAP-Gerät und dem Einwahlknoten besteht eine ganz normale TCP/IPVerbindung, wie zwischen einem Computer, der sich über ein Modem ins Internet einwählt, und
dem Internetprovider, bei dem er sich einwählt.
33 http://www1.wapforum.org/tech/documents/SPEC-WML-19991104.pdf
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
139
• WAP-Gateway: Das WAP-Device spricht nun über TCP/IP mit Hilfe des Wireless Application Protocol’s mit einer sog. WAP-Gateway, einer Applikation, die die Umsetzung der Anfragen des WAPDevices auf andere Protokolle erledigt (z.B. HTTP). Die WAP-Einstellungen des WAP-Gerätes
geben an, unter welcher IP-Adresse diese WAP-Gateway erreichbar ist.
• Ein Web-Server verwaltet WML-Seiten (sog. Decks) und liefert diese auf Anfrage ganz gleich wie
HTML-Seiten per HTTP aus.
Funkverbindung
wap
PPP
(TCP/IP)
WAP−Device
Einwahl−
knoten
WAP
HTTP
TCP/IP
TCP/IP
WAP−Gateway
Web−Server
Abbildung 8.2: WAP-Einwahl und beteiligte Systeme: Ein WAP-Device wählt sich bei einem Einwahlknoten
ein und baut eine PPP-Verbindung auf. Die WAP-Gateway verwandelt das komprimierte WAP-Protokoll in
normales HTTP und requestet bei einem Web-Server die verlangten WML-Dokumente.
8.3.3
Installation einer eigenen WAP-Einwahl unter Linux
In diesem Abschnitt wird die Konfiguration eines eigenen Einwahlsystems für eine WAP-Einwahl unter
Linux beschrieben. Sie ist aus der Projektarbeit von Robert Runggatscher34 entstanden und besteht aus
mehreren Teilen:
• mgetty: Ist für die Einwahl per Modem oder wie hier per ISDN verantwortlich.
• pppd : Ermöglicht die PPP-Verbindung zum WAP-Gerät (Mobiltelefon).
• Kannel 35 setzt das WAP-Protokoll, das zwischen dem Einwahlknoten und dem WAP-Gerät gesprochen wird, auf HTTP um. Hier werden alle Daten komprimiert und zum WAP-Device übertragen.
• Der Apache Web-Server liefert die WML-Dateien per HTTP aus.
Es wird nicht garantiert, dass folgende Installationsbeschreibung fehlerlos ist und wirklich funktioniert. Es
soll jedoch zumindest ein Einblick gegeben werden, welche Teile nötig sind und wie diese zusammenspielen.
NOTIZ: Es wird sicherlich keine Installationsanleitung für irgendwas bei der Prüfung gefragt!
mgetty
Installing and configuring mgetty for ISDN providing an automatic startup for ppp. I tried this with
mgetty 1.1.21 and 1.1.22.
We made this with an isdn fritz card PCI, the driver was compiled to the kernel, it didn’t work as module
and we didn’t use the driver for the FRITZ A1 card!
• Extract package
34 mailto:rrung@iicm.edu
35 http://www.kannel.org
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
140
• make (maybe you should look at the pathes in the Makefile and change them for your needs, e.g.
CONFDIR=$(prefix)/etc/mgetty+sendfax to CONFDIR=/etc/mgetty+sendfax
• make install
• edit the configuration files in $(prefix)/etc/mgetty+sendfax/
– Add the following lines to /etc/inittab:
I0:234:respawn:/usr/local/sbin/mgetty -x 4 -s 38400 /dev/ttyI0
– Add the following lines to $(prefix)/etc/mgetty+sendfax/mgetty.config:
port ttyI0
debug 9 #(only for debugging purposes)
data-only y
port-mode 0660
modem-type data
init-chat "" AT&B512&E5666&X0S14=4S19=197&R9600 OK
issue-file $(prefix)/etc/mgetty+sendfax/foo.issue
autobauding n
– Add the following lines to $(prefix)/etc/mgetty+sendfax/dialin.config
all
(allows all numbers a dialin)
– Add the following lines to $(prefix)/etc/mgetty+sendfax/login.config
/AutoPPP/ -
root
/usr/sbin/pppd file /etc/ppp/wap.conf
The file login.config has to be owned by root.root and have the rights -rw------– Provide an empty file $(prefix)/etc/mgetty+sendfax/foo.issue (holds the welcome text)
pppd
• Install the pppd (I didn’t do that because it was already installed)
• Add the following lines to /etc/ppp/wap.conf (same file as given in the $(prefix)/etc/mgetty+
sendfax/login.config file)
vjccomp
-ac -pc
-vj
name wap
10.1.32.10:10.1.32.1
ktune
ipcp-accept-local
ipcp-accept-remote
debug
noauth
lock
asyncmap 0
netmask 255.255.255.255
nodetach
noproxyarp
lcp-echo-interval 30
lcp-echo-failure 4
idle 600
no ipx
Kannel
I made this with the Kannel (www.kannel.org) WAP-Gateway 0.12.1
• ./configure
• make
• makeinstall
KAPITEL 8. SERVERSEITIGE TECHNOLOGIEN
141
• Add the following lines to $(prefix)/kannel/conf/kannel.conf:
group = core
admin-port = 13000
admin-password = wappler
admin-allow-ip = "*.*.*.*"
#admin-deny-ip = "127.0.0.1;129.27.153.58"
#smsbox-port = 13001
wapbox-port = 13002
box-allow-ip = "*.*.*.*"
#box-allow-ip = "127.0.0.1;129.27.153.58"
wdp-interface-name = 129.27.153.58
log-file = "/usr/local/kannel/log/bearer_kannel.log"
log-level = 0
access-log = "/usr/local/kannel/log/kannel.access"
unified-prefix = "+43,0043,0"
#http-proxy-host = fiicmfw01.tu-graz.ac.at
#http-proxy-port = 3128
syslog-level = 0
group = wapbox
bearerbox-host = localhost
log-file = "$(prefix)/kannel/log/wap_kannel.log"
log-level = 0
(for debugging only)
• Running Kannel:
– change to $(prefix)/kannel/bin
– first of all you have to start the bearerbox with th following command:
./bearerbox-0.12.1 -v 1 ../conf/kannel.conf
– start the wapbox with th following command:
./wapbox-0.12.1 -v 1 ../conf/kannel.conf
– if you want to start an smsbox too you have to add a sms - group to the kannel.conf file and
then start it by entering (I didn’t tried this at all):
./smsbox-0.12.1 -v 1 ../conf/kannel.conf
Apache
Der Web-Server Apache muss so konfiguriert werden, dass er WML-Dateien richtig erkennt und den
MIME-Type richtig setzt. Siehe dazu Abschnitt 8.3.
Kapitel 9
Knowledge Management
In diesem Kapitel finden sich zwei Artikel von Prof. Hermann Maurer1 , die einen kurzen Einblick in
Knowledge Management geben sollen. Da die Artikel unverändert übernommen wurden (bis auf minimale Layoutänderungen (WinWord auf LATEX)) beziehen sich eventuelle Literaturverweise immer auf die
Referenzen, die am Ende des jeweiligen Papers angegeben sind und nicht auf die allgemeine Literaturliste
am Ende des Skriptums.
9.1
9.1.1
Die (Informatik) Welt in 100 Jahren
Wie kann irgendwer über eine so lange Zeit eine vernünftige Prognose
machen?
Diese Frage stellt sich fast zwangsweise, wenn man den Titel dieses Beitrags liest: kann jemand so naiv
sein, dass er sich an ein so unmögliches Unterfangen wagt?
Nun, ich bin nicht so einfältig zu glauben, dass man 100 Jahre in die Zukunft sehen kann. Tatsächlich
halte ich es mit Jaques Hebenstreit, der meint “Jede Vorhersage in der Informatik über mehr als 20 Jahre
kann nur als Science Fiction eingestuft werden”. Und wer sehen will, was alles schief gehen kann, der
soll bitte meinen Beitrag “Prognosen und Thesen? nicht nur zum Schmunzeln” im Informatik Spektrum
Februar 2000 nachlesen!
Warum schreibe ich dann diesen Beitrag trotzdem? Weil ich von einem bisher noch nie explizit ausgesprochenen Phänomen überzeugt bin, das tatsächlich mit sehr hoher Wahrscheinlichkeit in 100 Jahren
in voller Entfaltung sichtbar sein wird. Es wird das Leben aller Menschen und alle Regelsysteme der
Gesellschaft und der Wirtschaft völlig verändern. Bevor ich erkläre, was ich meine, muss ich im nächsten
Abschnitt aber erst die Basis dafür schaffen.
9.1.2
Die arbeitsteilige Gesellschaft
Wir Menschen sehen uns gerne als Individualisten, die ihr eigenen Ziele und Ideen verfolgen und die
also auch eine gewissen Unabhängigkeit von anderen Menschen haben und schätzen. Dieser Traum der
persönlichen Eigenständigkeit ist schön, aber entspricht in keiner Weise mehr der Welt in der wir heute
leben.
Geht man weit zurück, so war das einmal anders. Die Urmenschen lebten in kleinen Gruppen. Sie war
damals von anderen Gruppen, ja selbst von den Mitgliedern des eigenen Stammes weitgehend unabhängig.
Wurde damals ein erwachsener Mensch aus einer Gruppe verstossen, so konnte er ohne grossen Verlust
an physischer Lebensqualität weiter leben: er konnte für sich selbst jagen, sammeln, sich gegen Kälte
schützen, usw.
1 mailto:hmaurer@iicm.edu
142
KAPITEL 9. KNOWLEDGE MANAGEMENT
143
Im Laufe der Menscheitsentwicklung wurden die Wechselwirkungen zwischen den Menschen immer stärker.
Der Handel, zuerst lokal, später weltweit, schaffte höhere Lebensqualität, aber auch mehr Abhängigkeit,
mehr Spezialisierung. Die Verstädterung, später die Industrialisierung und die Globalisierung schließlich
führten zu der Situation die wir heute haben, und die uns oft nicht klar genug bewusst ist: was in der
Industrialisierung als Taylorismus, als Arbeitsspezialiserung berühmt bzw. berüchtigt wurde, das erleben
wir heute überall.
Die Menscheit ist in einem unvorstellbaren Mass arbeitsteilig geworden, wie ich mit drei Beispielen
erläutere:
Während ich dies schreibe, sitze ich in einem Haus mit vielen Einrichtungsgegenständen, die ein Heer
von speziell ausgebildeten Menschen für mich geschaffen haben: es geht ja nicht nur um die Baufirmen,
die Elektriker, die Installateure, die Möbelfirmen, usw, die unmittelbar sichtbar sind, sondern um deren
unzählige Zuliferanten und Subauftragnehmer, die selbst wieder solche haben, und die alle wieder von
Infrastruktureinrichtungen abhängig sind (Strom, Strassen, Wasser,?.).
Ich trage Kleidung, bei deren Herstellung eine Unzahl von hunderten Spezialisten beteiligt war: allein
am Plastikarmband meiner Uhr haben indirekt sicher hunderte (!) Branchen mitgewirkt: jene, die die
Maschinen zur Erdölgwinnung bauten, das Personal in der technisch-chemischen Industrie das daraus
einen Plastikrohstoff erzeugte, die industriellen Schneidereien, die das Band fertigten, die Vertriebswege,
die ohne Transportsysteme oder Buchhaltung nicht funktionieren könnten, usw. Wobei hinter so einfachen
Worten wie “Transportsystem” ja wieder unzählige ander Branchen stehen.
Ich trinke eine Tasse Kaffee ohne explizit zu realisieren, wieviele Menschen daran beteiligt waren, sowohl
an der Produktion der Tasse als auch an der Produktion dieser braunen heissen Flüsigkeit, die aus
gerösteten Bohnen gemacht wird, die aus einem anderen Teil der Welt kommen?
Wenn einer von uns heute verstossen wird und auf sich selbst gestellt in der Wildnis (wo es die gerade
noch gibt) überleben will, schafft er dies im Normalfall nicht mehr. Wenn es gelingt, dann nur mit
einem dramatisch niedrigerem Komfort. Unsere Gesellschaft ist so arbeitsteilig geworden, so verzahnt,
die Menschen sind so von einander abhängig, dass wir uns nicht mehr als Einzellebenwesen sehen können,
sondern schon viel eher analog zu Ameisen in einem Ameisenhaufen.
Anders formuliert: es gibt das Lebewesen Mensch nicht mehr, sondern das Lebewesen Menschheit: die
Menschen sind nur noch Zellen dieses Lebewesens, die bestimmte Aufgaben übernommen haben. Dieses
neue Lebewesen Menscheit hat anstelle von Muskeln Werkzeuge, Maschinen und Energieversorgungsnetze,
anstelle von Blut die globalen Transportsysteme, anstelle von Nerven die weltweiten Kommunikations-,
Medien-, Daten- und Computernetzewerke.
Noch anders formuliert: obwohl wir die materiellen Dinge in unserer Umgebung (von der Kleidung zur
Behausung, vom Transportmitel zum Essen,?) andauernd und ganz selbstverständlich benutzen, können
wir nur ganz wenige davon selbst herstellen: wir haben uns daran gewöhnt, dass wir im materiellen Bereich
vollständig auf andere Menschen angewiesen sind, und greifen auf diese Produkte anderer Menschen ohne
Bedenken jederzeit zu.
Es ist darum so wichtig, dies einmal deutlich zu verstehen, weil die nächsten hundert Jahre etwas Analoges bringen werden: die Welt wird nicht nur arbeitsteilig, sie wird auch vollständig “wissensteilig”: jeder
Mensch wird auf das Wissen anderer Menschen direkt zugreifen müssen und können, und dies als Selbstverständlichekit betrachten, ohne zu verstehen, wie dieses Wissen in den anderen Menschen entstanden
ist, und ohne in der Lage zu sein, dieses Wissen selbst zu erarbeiten. Genau wie es die meisten von
uns heute tun, wenn sie ein Auto verwenden: weder wissen sie auch nur annäherend, wie es konstruiert
wurde, noch wären sie dazu in der Lage, eines zu bauen.
So wie traditionelle Werkzeuge unserer körperlichen Fähigkeiten vervielfacht haben werden in Zukunft
“Wissenswerkzeuge” unserer geistigen Fähigkeiten dramatisch vergrössern, aber gleichzeit auch die gegenseitige Abhängigkeit!
9.1.3
Die wissensteilige Gesellschaft
Meine Hauptthese ist also, dass die Menschheit in den nächsten 100 Jahren in einem gewaltigen Ausmass
“wissenssteilig” werden wird, und dass damit einerseits anstelle des Einzellebewesen Mensch das neue
Lebewesen Menschheit noch deutlicher als heute sichtbar wird, andererseits die einzelnen Menschen fast
KAPITEL 9. KNOWLEDGE MANAGEMENT
144
wie durch ein grosses “externes Gehirn” gewaltig an mentalen Möglichkeiten gewinnen werden.
Die Weiterentwicklung der Computer bzw. der Informatik wird dabei eine wesentliche Rolle spielen:
darauf gehe ich in einem getrennten Abschnitt näher ein. Freilich sollte man die beispielhaften Aussagen
in diesem technischeren Abschnitt nur genau als solche sehen: denn ob die dort beschriebenen oder ganz
andere Alternativen in 100 Jahren zum Tragen kommen werden, dass kann wirklich niemand vorhersagen.
Meine These aber, dass die Menschheit immer wisssensteiliger wird, die in diesem zentralen Abschnitt
erläutert wird, diese Prognose wird dem Wind der Zeit eher standhalten, und ist daher auch sehr viel
ernster zu nehmen.
Rekapitulieren wir noch einmal kurz: die Menschen waren ursprünglich durchaus in der Lage, jeder für
sich zu sorgen. Erst durch Phänomene wie Handel, Urbanisierung, Industrialisierung und Globalisierung
wurden die Menschen immer mehr von den materiellen Produkten anderer abhängig, besteht heute in
den entwickelten Gesellschaften ein unglaubliche starke Abhängigkeit der Menschen voneinander aber
auch ein weltweiter Zugriff auf alle Güter: vor 50 Jahren waren Mangos, Bananen, Kiwis usw in Europa
einfach nicht erhältlich, chinsesische Restaurants eine Seltenheit, oder Handschnitzerein aus Afrika den
wenigen Fernreisenden vorbehalten.
Im Bereich “Wissen” ist ein ähnlicher aber langsamerer Prozess verfolgbar, ein Prozess der erst in den
nächsten 100 Jahren seinen wirklichen Höhepunkt erreichen wird. Der schon vorher als Beispiel herangezogene Urmensch verfügte, jeder einzelne, noch über das meiste notwendige Wissen. Er vermittelte
dieses Wissen auch nicht durch einen formalen Prozess wie “unterrichten” oder “aufschreiben”, sondern
einfach durch “vorzeigen”.
In den allmählich sich entwickelnden höheren Kulturen war aber schon bald nicht alles Wissen für alle
verfügbar. Beispielweise wussten die Priester in einigen alten Kulturen sehr viel mehr über die Astronomie als die meisten anderen damaligen Menschen, die Medizinmänner mehr über Heilkräuter als der
Durchschnitt, oder die griechischen Mathematiker mehr über Geometrie und Logik als ihre Zeitgenossen.
Das Wissen begann sich also rasch “aufzuteilen”.
Ein wesentlicher weiterer Schritt in diese Richtung war die Entstehung der Schrift, durch die das Wissen einzelner einer grossen Anzahl von Menschen in Gegenwart und Zukunft vermittelbar wurde. Der
Buchdruck, und im 20. Jahrhundert dann Bild-, Ton- und Filmedien, schließlich bis hin zu den “neuen
Medien” und den Computernetzen, allen voran WWW, trugen dazu bei, dass das wachsende Wissen der
Menscheit an immer mehr Orten, aufgeteilt in Milliarden von Bruchstücken, zu finden ist. Jeder einzelne
Mensch verfügt dabei nur über einen winzigen Bruchteil des Gesamtwissens. Zusätzlicher Wissenserwerb
war und ist nicht einfach.
Interessant dabei ist aber, und das ist das Entscheidende, dass nicht nur die Zahl der verschiedenartigst
und verstreut aufgezeichneten Wissensbruchstücke im Laufe der Zeit, immer mehr wuchs, sondern dass der
Zugang zum Wissen allmählich leichter wurde. Unterrichtseinrichtungen wie Schulen und Universitäten
trugen dazu bei, Lesen (durch die allgemeine Schulpflicht seit ca. 1800 in Europa weitverbreitet) spielte
eine grosse Rolle, aber auch der Zugang zu Büchern wurde einfacher. Musste man vor 400 Jahren vielleicht
noch hunderte Kilometer in eine grosse Klosterbibliothek reiten, mussten sich Leibnitz und Newton noch
Wochen gedulden um einen Brief vom anderern zu erhalten, entstanden im 20. Jahrhundert zunehmend
öffentliche Bibliotheken, ja sind Bücher heute vergleichsweise so billig, dass viele oft gekauft aber nicht
gelesen werden: es ist eine Kuriosität unserer Zeit, dass heute mehr Bücher gekauft werden als je zuvor
(auch pro Kopf der Bevölkerung) aber deutlich weniger gelesen wird als noch vor 40 Jahren! Medien
wie Radio, Fernsehen und seit nicht einmal 20 Jahren das Internet machen den Zugang zu Information
(Wissen?) immer einfacher. Die Möglichkeiten, über moderen Kommunikationsmethoden von Email zu
Diskussionsforen oder On-Line Expertenberatung wichtige Wissensbruchstücke zu erhalten, oder durch
E-Learning sich grössere Wissensbereiche selbst anzueignen, wachsen ständig. Wie würden heute Newton
und Leibnitz zusammen arbeiten?
Was wir bisher gesehen haben ist noch nicht einmal die Spitze des Eisberges.
Lange vor dem Jahr 2100 werden alle Menschen jederzeit und an jedem Ort auf alles Wissen der Menschheit zugreifen können, ähnlich wie wir das heute bei materiellen Gütern können. Dieser Zugriff wird mit
Geräten erfolgen, die stark mit den Menschen integriert sind, und wird sich auf Wissen beziehen das
entweder aus Datenbanken kommt oder aus Dialogen mit Experten entsteht. Das Gehirn des Einzelmenschen wird nur noch ein vergleichweise winziger Bestandteil eines gewaltigen Wissenvorrates sein, der
durch die Vernetzung aus Milliarden von Menschenhirnen und Datenbanken entsteht. So wie wir heute
KAPITEL 9. KNOWLEDGE MANAGEMENT
145
ohne zu überlegen in ein Flugzeug einsteigen um etwas Neues zu sehen, werden die Menschen dann in
ein “Wissensflugzeug” einsteigen, das Ihnen neue Erkenntnisse und Erlebnisse liefert. Lernen, etwa gar
Faktenlernen, wird etwas sein, das so veraltet ist, wie für uns Pferdefuhrwerke, die noch vor 100 Jahren
das Hauptverkehrsmittel waren. So wie wir heute Maschinen und Werkzeuge verwenden um Häuser oder
Computer zu bauen, einen Staudamm zu errichten oder Holz zu bearbeiten, werden die Menschen in
100 Jahren Werkzeuge und Maschinen haben mit denen aus Wissensgrundbausteinen neue Wissengebilde
erzeugt werden können: nicht alle Menschen werden diese Möglichkeiten ausschöpfen, genau so wie auch
heute nur ein kleiner Bruchteil bei grossen Vorhaben entscheidend mitmacht. Aber die Potenzierung des
Wissens durch das Zusammenschalten vieler “Köpfe” und von Computern wird ein unglaublich mächtiges
Lebewesen Menschheit schaffen.
Wie mächtig dieses Lebewesen sein wird mag man am besten daran erkennen, was es heute schon erreicht
hat, im Positiven wie im Negativen: es hat jeden Punkt der Welt zugänglich gemacht, es hat (bildlich
gesprochen) mit Mond- und Marssonden erstmals sozusagen ins Weltall gespuckt; es hat gewaltige Produktionskapazitäten in allen Bereichen entwickelt, sonst könnte nicht ein ganz kleiner Prozentsatz der
Europäer alle anderen mit den erforderlichen Lebensmitteln versorgen; dass unsere Wohnungen wohltemperiert sind nehmen wir inzwischen als genauso selbstverständlich hin wie dass wir uns jederzeit Kleidung
oder Essen kaufen oder irgendwohin in die Welt reisen können; andererseits hat dieses Lebewesen auch
die Umwelt schwerstens verletzt, ist jederzeit in der Lage sich chemisch, biologisch oder nuklear selbst
auszurotten, usw.
Die Wissensvernetzung wird neue Phänomene mit sich bringen, die wir genau so wenig vorhersehen
können wie irgendwer bei der Erfindung des Autos hätte prognostizieren können, dass ein guter Teil der
Wirtschaft einmal von Autos abhängen wird, dass Autos die Welt verschmutzen und das Klima ändern,
dazu führen, dass riesige Flächen zuasphaltiert werden, dass Autos mehr Menschen töten als selbst die
grössten Kriege das tun, usw. Die Menschen werden gegen die sicher auch auftretenden negativen Folgen
der Wissensvernetzung so massiv ankämpfen müssen wie wir heute für z.B. weltweiten Umweltschutz
eintreten sollten.
9.1.4
Wissensteilige Gesellschaft oder im Wissen ertrinkende Gesellschaft?
Während ich im Obigen von der Wissensvernetzung schwärme, von der Tatsache, dass Menschen in den
nächsten hundert Jahren immer direkter auf alles existierende Wissen zugreifen werden können, werden
Skeptiker entgegnen: wir versinken doch schon jetzt in einer Flut unübersehbarer Informationen; eine
weitere Vermehrung ist doch wirklich nichts Positives, sondern eine Katastrophe.
Tatsächlich wäre eine weiter Ausweitung der unkontrollierbaren Informationsflut, in der das Auffinden
gewünschter und verlässlicher Information immer schwieriger wird, nicht erstrebenswert. Nur zeichnet sich am Horizont bereits ab, dass die Informationslawine allmählich gebändigt und strukturiert
werden wird zu sinnvollen, verlässlichen und auf die Person massgeschneiderte Wissenseinheiten. Das
wird geschehen über die stärkere Verwendung von Metadaten, von intelligenten Agenten, von vertikalen Suchmaschinen (wo Fachleute Informationen gefiltert und kombiniert haben), von Gigaportalen für
die verschiedensten Anwendungsbereiche, von aktiven Dokumenten, die von sich aus antworten geben
können, uvm. Viel von den angedeuteten Aspekten beginnt man zur Zeit unter dem Begriff “Wissensmangement” zu subsumieren: erste tastende Bücher zu diesem Thema erscheinen in zunehmender Zahl,
Forschungszentren für diesen Bereich werden gegründet, wie z.B. das Grazer “KNOW-Center” unter meiner wissenschaftlichen Leitung, dessen wisenschaftlicher Direktor Dr. Klaus Tochtermann nicht zufällig
aus dem “FAW Ulm” (Forschungsinstitut für anwendungsorientierte Wissensverarbeitung) kommt.
Wissensmanagement (Knowledge- Management) geht zurück auf den Stossseufzer vieler Manager: “Wenn
meine Mitarbeiter nur wüssten, was meine Mitarbeiter wissen, dann wären wir ein viel schlagkräftigeres
Unternehmen”. Diese Herausforderung an das Knowledge Management, das gesamte Wissen in den
Köpfen einer Organisation ( “Corporate Mememory”) allen zur Verfügung zu stellen, ist im “Kleinen”
das, was durch die globale Wissensvernetzung in sehr viel grösserem Masstab die Menschheit verändern
wird. Dass diese Wissensvernetzung nicht nur ein Traum ist, zeigen die ersten Wissensmanagement
Systeme wie Hyperwave2 und ihre Module, wie die e-Learning Suite.
Die heutigen Methoden des Wissensmanagement beginnen grosse Organisationen wirtschaftlich zu stärken
2 http://www.hyperwave.de
KAPITEL 9. KNOWLEDGE MANAGEMENT
146
und ihre Zukunft abzusichern: dieser Prozess wird noch Jahrzehnte andauern, die Methoden werden sich
ständig verbessern, und allmählich aus den grossen Organisationen hinausreichen in alle Teile des Lebens
der künftigen Menschheit.
9.1.5
Technik und Technikspekulationen
Eine echte Wissensvernetzung erfordert nicht nur weitere grosse Fortschritte im Bereich Wissensmanagement, sondern ist nur möglich, wenn das Wissen jederzeit und an jedem Ort sofort und möglichst direkt
zur Verfügung steht, d.h. wenn die Verbindung zwischen dem Netz und den Menschen noch sehr viel
einfacher und natürlicher wird, als sie es heute ist.
Ich habe schon vor vielen Jahren den allgegenwärtigen Computer prognostiziert: nicht viel grösser als eine
Kreditkarte, weitaus mächtiger als die heutigen schnellsten Computer, mit hoher Übertragsgeschwindigkeit an weltweite Computernetze mit allen ihren Informationen und Diensten angehängt, in sich vereinigend die Eigenschaften eines Computers, eines Bildtelefons, eines Radio- und Fernsehgerätes, eines Videound Photapparates, eines Global Positioning Systems, einsetzbar und unverzichtbar als Zahlungsmittel,
notwendig als Führer in fremden Gegenden und Städten, unentbehrlich als Auskunfts- , Buchungs- und
Kommunikationsgerät, usw.
Die Handys, die wir noch vor 2010 sehen werden und die mit UMTS oder Weiterentwicklungen davon
hohe Geschwindigkeit beim Netzzugang ermöglichen werden, werden den beschriebenen allgegenwärtigen
Minicomputern schon nahe kommen.
Und doch sind solche Überlegungen natürlich noch sehr konservativ. Die Schirmtechnologie wird sich nicht
nur durch faltbare, rollbare, extrem leichte und dünne Farbschirme verbessern, die Schirmtechnolgie wird
überhaupt verschwinden: über einfache Brillen, die bei den Ohren Stereoton direkt auf die Gehörknochen
abgeben (wie das heute bei Hörbrillen schon gang und gebe ist) werden Bilder direkt durch die Pupille
auf die Netzhaut projiziert werden, links und rechts natürlich verschiedene, um dreidimensionale Effekte
zu erlauben.
Die Brille wird aber auch Aufnahmegerät sein, mit einem 500 fach Zoom mit dem man die dann auf dem
Mond entstehenden Gebäude in klaren Nächten sehen wird können, mit Infrarot und Lichtverstärkung für
klare Sicht bei Nacht und Nebel, mit einer Makrofunktion, damit ich z.B. den Belag auf der Zunge gleich
an meinen Arzt, der irgendwo sein mag, übermitteln kann (und dem ein Computer aus einer Datenbank
gleich ähnliche Bilder mit Diagnose und Therapievorschlägen vorlegt). Das bedeutet auch, dass alles was
ein Mensch gerade sieht auch beliebigen anderen Menschen zugänglich gemacht werden kann, ja dass
vielleicht überhaupt alles, was ein Mensch je hört oder sieht als eine Art “Supertagebuch” aufgezeichnet
werden wird, das später nach verschiedensten Kriterien durchsucht werden kann. Natürlich benötigt
das auch die Verwendung neuer Speichermedien. Die heutigen 20 Gigabyte Harddisks, die gerade noch
einen Tag und eine Nacht als Film guter Qualität aufzeichnen könnten, werden ersetzt werden durch
Speichergeräte mit einer millionenfach höheren Speicherdichte, die dann schon problemlos das ganze 150
jährige Leben von 20 Menschen aufzeichnen können. Ist das Science Fiction? Sicher nicht: in den BioNanotechnologielabors wird heute schon an Speicherdichten von 10 Terrabyte pro Quadratzentimenter
gearbeitet, auf organisch basierenden Mikrokristallen basierend. Ein kreditkartengrosser Speicher dieser Art würde dann schon 500 Terrabyte Kapazität haben, also 25.000 Mal mehr als die 20 Gigabyte
Harddisks. Und da reden wir von ca. 2020, nicht von heute in 100 Jahren!
Bei der Wissenswiedergabe und Speicherung von Ton, Sprache, Film, dreidimensionalen Szenen etc.
zeichnen sich also schon heute ganz wesentliche Umwälzungen ab. Über taktile und olfaktorische Ausgabegeräte wird geforscht: Computer werden in 100 Jahren auch auf diesem Weg mit uns kommunizieren.
Die Kommunikationsrichtung Computer- Mensch ist gut absehbar.
Die umgekehrte Richtung ist weniger offensichtlich. Natürlich werden Spracheingabe, Gestenerkennung,
Eingabe durch Informationen über einfache Fingerbewgungen, Computer die hören und sehen und das
Erlebte verarbeiten, aber auch subtilere Verfahren eine enorme Rolle spielen. Jeder der unter “Wearables”
im WWW sucht wird sich rasch überzeugen können, dass enorm viel im Enststehen ist. Aber noch ist
irgendwie abzusehen, was sich durchsetzen wird bzw. was die nächsten 100 Jahre an Eingabegeräten
noch alles bringen werden.
Insgesamt sind die Benutzerschnittstellen Mensch- Computer darum so schwer vorhersehbar, weil es nicht
klar ist, wie weit eine direkte Verbindung der menschlichen Nervenbahnen mit Computern erwünscht ist.
KAPITEL 9. KNOWLEDGE MANAGEMENT
147
Die medizinisch-technische Machbarkeit zeichnet sich am Beispiel der direkten Impulsübergabe an den
Gehörnerv bei tauben Personen ab, oder durch die gedankliche Steuerung von einfachen Bewegungen
wie Beinprothesen oder eines Computercursors: wie weit wird die Menschheit bereit sein, eine solche
vollständige Symbiose mit Computern anzunehmen. Werden dafür die nächsten 100 Jahre reichen?
Hervorragende Wissenschaftler wie Morawetz, Kurzweil oder Gershenfeld würden ein klares “Ja” sagen,
ja würden bezweifeln, ober der Mensch als ca. 75 kg schweres Lebewesen überhaupt noch sinnvoll ist,
oder eine noch viel weitergehende Verschmelzung Mensch/Machine nicht die offensichtlichere Zukunft
ist?
Klar ist, dass die Miniaturiserung von sehr mächtigen Computern mit den beschriebenen Benutzerschnittstellen und Funktionen so weit gehen wird, dass man sie z.B. einmal in das Loch in einem Zahn wird
einpflanzen können. Die Übertragung der Signale zu und von den menschlichen Sinnesorganen könnte
z.B. über die Leitfähigkeit der menschlichen Haut erfolgen, die Verbindung zu den Datennetzen drahtlos.
Die notwendige Energie wird direkt aus der Energie des menschlichen Körpers gewonnen werden: dieser erzeugt in Ruhestellung ja immerhin 75 Watt. Ein Bruchteil wird für den Betrieb der notwendigen
Elektronik genügen.
Ob es dann in 100 Jahren tatsächlich Elektronik sein wird, oder Biochips, oder was ganz anderes, sind
dann schon fast “kleine Details”. Werden dann Computer so intelligent wie Menschen sein? Auch dies ist
letztlich eine eher esoterische Frage: das Lebewesen Menschheit wird eine so starken Symbiose Mensch
mit Maschine sein, dass die Fähigkeit des ganzen Systems jedenfalls die Fähigkeit jeder Komponente weit
übersteigt.
Wieviel vom menschlichen Körper wird in 100 Jahren noch notwendig sein? Wird man biologische Ersatzteillager für nicht mehr gut funktionierende Organe oder Körperteile verwenden, oder wird fallweise
das schwache Herz durch ein künstliches, die alten Beine durch eine mechanisch-biologisch-elektronische
Variante, die sehr viel ausdauernder arbeitet, ersetzt werden? Werden wir weiterhin über zwei organische
Augen die Umwelt optisch aufnehmen, oder werden wir durch eine Unzahl von kleinen Kameras nicht
zwei Bilder sondern viele, fasst wie mit den Facettenaugen eines Insekts, in unser Gehirn pumpen wie dies
in zahlreichen Versuchen schon heute getan wird? Und wie innig ist das Gehirn oder die daraus hervorgehenden Nervenstränge mit den weltweiten Computernetzen und damit auch mit anderen menschlichen
Gehirnen verbunden?
Man kann unzählige solche Fragen stellen. Antworten darauf können nur Spekulationen sein. Ich überlasse
sie daher den Verfassern von Science Fiction Literatur. Was aber als einigermassen gesicherte These
bestehen bleibt ist umwälzend genug um es nochmals zusammen zu fassen: durch die enge Vernetzung von
Menschen und Computernetzen, und die wird sich zwangsweise in den nächsten 100 Jahren in unerhörter
Weise weiterentwickeln, entsteht einerseits ein neues Lebewesen Menschheit, wie es ein solches noch nie
gegeben hat; und wird andererseits jeder Mensch nicht nur Teil dieses Lebewesens, sondern erhält aus
seiner persönlichen Sicht heraus eine Erweiterung des eigenen Gehirns in einem gewaltigen Ausmass,
durch die direkte Kommunikation mit riesigen Wissensbeständen und anderen Menschen.
9.1.6
Wollen wir das alles?
Viele Menschen sind faustisch: sie leben in einem tieferen Sinn nur dadurch, dass sie etwas erschaffen
oder erforschen. So will ich an dieser Stelle Goethe interpretieren. Mao hat Ähnliches aber bescheidener
gesagt: wenn er von der Notwendigkeit der dauernden Revolution gesprochen hat, dann meinte er damit,
dass es für die Menschen keinen Stillstand gibt (vielleicht auch keine Fortschritt, was immer das ist),
sondern dass Menschen Veränderungen benötigen, um sich zu verwirklichen, um zufrieden zu sein. Auf
die Frage, warum man den Nordpol oder die Berge oder die Planeten “erobern” will, gibt es die klassische
Antwort: weil sie da sind.
All dies spricht dafür, dass vieles von dem was machbar ist, gemacht werden wird: nur grosse und unvorhersehbare negative Folgen können fallweise mögliche Entwicklungen bremsen, ändern oder verhindern.
Die aufgezeigte wissensteilige Gesellschaft, die Wissensvernetzung ist nicht nur machbar sondern schon im
Entstehen. Sie wird in 100 Jahren ein Faktum sein. Dass am Weg dorthin nicht nur technische Problme
zu lösen sein werden, sondern auch Richtungsänderungen erfolgen können und fallweise erfolgen müssen
um das menschliche Leben lebenswert zu erhalten, ändert das insgesamt entworfene Bild nicht wesentlich.
KAPITEL 9. KNOWLEDGE MANAGEMENT
9.1.7
148
Zum Autor
In Wien geboren, studierte Maurer Mathematik und Informatik in Österreich und Kanada. Nach einigen
Ausflügen in die Industrie wurde Maurer Professor für Informatik, zunächst in Calgary, dann Karlsruhe,
dann Graz, mit Gastprofessoren an vielen Stellen der Welt. Autor von über 500 Publikationen und 14
Büchern ist er Mitglied der Finnischen und der Europäischen Akademie der Wissenschaften. Er erhielt für
seine Arbeit zahlreiche Auszeichnungen und ist heute als Vorstand zweier Multimedia Institute in Graz,
und als wissenschaftlicher Leiter eines im Herbst 2000 gegründeten Forschungsinstituts für Knowledge
Management tätig. Er ist Mitgründer und Vorsitzender des Aufsichtsrats der Knowledge-Management
Firma Hyperwave.
9.2
Active Documents: Concept, Implementation and Applications
E. Heirich
(Massey University, Palmerston North, NZ,
E.Heinrich@massey.ac.nz
H.Maurer
(Graz University of Technology, Graz, Austria
hmaurer@iicm.edu)
Abstract: In this paper we present the notion of “active document”. The basic idea is that in the future,
users of documents in any networked system should not just be able to communicate with other users,
but also with documents. To put it differently, we believe that communication in networks should be
understood in a more general sense than it usually is. Although our notion will, at first glance, almost
look like science fiction, we will show that good approximations can indeed be implemented. We conclude
this short paper by pointing out a number of important applications of our new concept and mention
cases where it has already been successfully applied.
9.2.1
The notion of active documents
The idea behind active documents is very simple: whenever a user sees some information on the screen of
a networked computer the user can ask (typically by typing) an arbitrary question ... and the document
immediately provides the relevant answer.
Putting it this way, the notion sounds impossible to implement (how can a document answer any conceivable question?), or at least sounds like an idea out of science fiction. However, although the idea
cannot be fully implemented it is surprising how well it can be approximated in large scale distributed
networks. The reason for this is that important documents are viewed by a very large number of persons,
hence the same questions (albeit in possibly different wordings) come up over and over again. Indeed,
experimental data with one of the first users of the Hyperwave eLearning Suite [2, 5, 6] confirms that after
some 500 to 1000 users new questions come up only exceedingly rarely. Thus, the basic implementational
idea behind active documents is simple: when new documents are added to a server, questions asked are
initially answered by experts, ideally but not necessarily immediately and around the clock. All questions
and answers are recorded in a database. As a new question is asked it is checked whether this question
is semantically equivalent to an earlier one: if so, the system can provide the answer immediately. As
the number of semantically new questions decreases (and indeed approaches almost zero) the experts
become superfluous. In the very rare case that a really new question arises the system might answer
apologetically: “This is a very good question. We will forward it to our experts and you will receive an
answer by xxx the latest”.
The crux of the matter is, of course, how is it possible to determine if two questions that may be worded
quite differently are indeed semantically equivalent. How, to just present one example, can any software
recognize that the question “Please explain to me how the picture compression techniques GIF, BMP
KAPITEL 9. KNOWLEDGE MANAGEMENT
149
and JPG compare to each other” is really equivalent to “I do not understand the difference between GIF,
BMP and JPEG coding”. In the next section we show that this task, as hopeless as it might seem at
first glance, has indeed both pragmatic and systematic solutions.
9.2.2
The implementation of active documents
The heuristic approach
When a question is asked it is compared with some heuristic algorithm to find an earlier question that
seems to be similar. Similarity can be determined by using a number of techniques that can become quite
sophisticated: from comparing if different words match independently of their order ( like GIF and BMP
in our example), to the use of synonyms (like JPG and JEPG), to stemming algorithms that take care
of the flexion of words, to semantic nets, to syntactic analysis using such nets, a variety of techniques do
exist that are surprisingly powerful. A typical example is the “LIKE” operator in the well-known search
engine Verity that is able to identify with a high success rate pieces of text that are likely to have the
same meaning.
In each case, once the system has determined that the question x being asked is likely to be the same
as a question y asked earlier, the system will say “Do you mean y”. It is now up to user to decide
whether indeed the answer to this question y is what is desired or not. If not, the system may offer other
alternatives, but if none satisfies the user, the apology mentioned earlier: “This is a very good question.
We will forward it to our experts and you will receive an answer by xxx the latest” will be shown. As
time goes by (in the sense that a document is visited by more and more persons) chances that a question
is asked that is not only identical semantically but is also similar in form decreases, thus reducing the
amount of time a human expert has to help out, and hence reducing the number of times a question is
not answered immediately.
The iconic approach
Users ask questions by marking (with the cursor) some part of the screen (a formula, an abbreviation,
a picture, etc.): their question refers to information in the marked area. When a question has been
answered, some icon or highlighting shows to other users that other persons have asked questions concerning this piece of information and that experts have answered them. If another user also has a question
concerning the material at issue, one click suffices to show all questions and answers that have occurred
so far. Again, after sufficiently many users the chances are good that all questions of interest have indeed
been answered.
The iconic approach is clearly particularly easy to implement and has the advantage that semantically
equivalent questions that are formulated in different ways will not often arise. Also, the advantage of this
(and the other techniques relating to active documents) is that feedback is provided to the authors of
documents as to where users have questions. After all, this may often mean that some explanation is not
clear enough, information is missing, etc., hence allowing the improvement of the documents. The iconic
approach has been sometimes belittled by just saying that this is not more than FAQ’s, and in a way
it is, of course. However, the FAQ’s are not collected in a long unusable list but in a short list directly
where the problems occur. If that list gets too long, something is likely to be wrong with the document,
and the document should be improved.
The linguistic approach
The most satisfying approach to handle active documents would be to develop techniques that actually
prove the semantic equivalence of questions. Remember, heuristic techniques can only provide guesses
whether two questions are equivalent, they cannot prove their equivalence. Remember also that both the
heuristic and iconic approaches use the intelligence of the user to determine whether previously asked
questions are relevant or not.
To actually prove that two pieces of text are semantically equivalent one would require a complete
understanding of natural language, something still quite elusive. However, we can consider a compromise:
KAPITEL 9. KNOWLEDGE MANAGEMENT
150
rather than allowing a full natural language we restrict our attention to a simplified grammar and to a
particular domain for which an ontology (semantic network) is developed. Clearly, sufficiently restricting
syntactic possibilities and terms to be used will allow to actually prove the equivalence of pieces of text.
This approach has been investigated in the first author’s Ph.D. thesis (for somewhat different purposes
[1] ). Attempts to adjust it to the active document situation are currently been carried out [7]. At this
point in time the restriction on the wording of questions and the domain specificity are serious problems.
It seems clear that this technique will not be suitable for the nave user, yet (as we will mention in the
application section) there may well be situations when this linguistic approach is also useful.
9.2.3
Futher research
Before turning our attention to the application of active documents let us point out that the concept is
being applied successfully right now, yet there is room for much improvement. In the heuristic approach
mentioned, algorithms trying to guess the equivalence of textual pieces still can and should be improved
by incorporating both more powerful semantic networks and more syntactic analysis. Observe that the
efforts in this area are, unfortunately, also quite language dependent! In the linguistic approach there are
two somewhat contradictory aims that one still has to go after: on the one hand, the query syntax should
be as natural as possible, on the other hand domain dependence should be reduced and the construction
of the domain specific ontologies should be simplified.
However, there are also other more intrinsic problems with active documents. We have stated that
“really new” questions usually do not arise after a document has been used by some 500 to 1000 users.
This figure comes from a large eLearning experiment with a multi-national company with some 200.00
employees, but is quite unrealistic in other contexts. Typically, the WWW or Intranets also contain
information that changes over time. What we have discussed so far does not handle this situation at all.
Just consider a page about skiing in Austria. At some stage someone has asked “How much snow can I
count on” . The answer, whatever it may have been, to exactly the same question is likely to be different
as soon as a day later. It thus seems to appear that the notion of active document is only applicable to
fairly static information, and question-answer dialogues should be time-stamped so that they disappear
automatically when they are invalid. Actually, the situation is better than this: an indirect step can
alleviate the problems in some situations in a very elegant way. To be specific, the answer to the question
“How much snow can I count on” should not be “30 inches” or such but rather “Find information on
current skiing conditions under ’snow report’ “ , where ’snow report’ provides a link to another server
that has indeed up to date information on snow depth, temperatures, etc.
Another fairly deep problem is that the same question may require different answers depending on the
circumstances. Again, an example shows best what can happen. The question “Please explain ISDN”
could have as answer “ISDN stands for Integrated Services Digital Networks” and this might be sufficient
for some persons. Others might expect much more than the explanation of what the abbreviation stands
for! Future active documents should probable reply along the lines: “Do you want to know what the
abbreviation stands for (choice a), do you want a short technical explanation (choice b), or a fairly
detailed explanation (choice c)”. Clearly this is more work for the experts involved, it tends to blur the
border between simple question and answer situations and eLearning on a broader scale, but it also shows
that our initial claim that persons should be able to really communicate with documents is not that far
fetched.
Overall, the deeper one digs into applications of active documents the more does it become apparent that
in a way much of the knowledge that now goes into more clever search engines, into language analysis
and intelligent agents will also apply to active documents.
Let us conclude this section by just making sure that two further points are understood: first, active
documents are not supposed to be restricted to textual questions and textual answers: it is easy to allow
arbitrary multimedia activities as answers to questions, and it is certainly conceivable to allow questions
posed in the form of speech input or such, even if this is likely to make the recognition of semantically
equivalent questions still more complicated; secondly, we have always said that questions are originally
answered by “experts”. Surely also other users may answer questions being posed, yet somehow the level
of competence of the person answering a question should be known to users. 4 Applications of the notion
of active documents
We have encountered the notion of active documents the first time in connection with eLearning experi-
KAPITEL 9. KNOWLEDGE MANAGEMENT
151
ments [5, 2] and have found them to be very useful in this connection. Note that the “critical number” of
users of the same document (we have quoted 500 - 1000 a number of times) will usually only be reached if
the courseware at issue is offered on the WWW for a large audience, or in a substantial intranet, but will
usually not be reached when using material for e.g. teaching typical university classes. However, even in
this case, the mechanisms described eliminate many duplicate questions and are hence useful even if the
“saturation level” is never achieved.
It has become clear over time that the usefulness of active documents goes far beyond eLearning. Indeed
we would like to claim that in the future every WWW or intranet system should assure that ALL
documents are active. This helps users (who are otherwise frustrated by having to send emails when
they have questions, often not knowing whom to send them to), eases the support work for those offering
information or services, and provides valuable feed-back to the administrators of sites as to where users
have problems.
However, in addition to eLearning there are three other areas where active documents seem to be particularly useful: one is support for software, the other is in connection with help desks, and the third are
digital libraries. Let us elaborate this again by means of examples.
Suppose a company releases a new software product to a large number of (pilot) customers, with the
corresponding documentation on the WWW. In the past, support staff would always receive a stream of
questions of the type “On page x , line z from the top, in volume y of the documentation it says that
the SW should act according to w, but it does not. Can you please help?”. Support staff would then
have to consult volume y, go to page x, count to line z and examine the situation, only to find out that
this bug had been pointed out many times before, and that the development team was already in the
process of fixing the bug (or documentation). If each page of the documentation is an active document
this situation does not occur: after the problem at issue is pointed out the first time, other customers
have no need to ask the question any more, helping them and the support staff.
The situation is similar in help-desk situations when customers do not understand a manual or such.
There are two interesting additional aspects in this case, however. First, customers may ask the question
not via an active document on the WWW but by telephone. Help desk staff may, however, now use the
active document to find the answer to this question: after all the question may have been answered by a
colleague at some earlier stage. Second, in this case the linguistic approach mentioned could be handy:
the domain is limited, and the staff of the support center may well be expected to be able to translate
customer queries into queries allowed by the linguistic approach. Thus, even a help desk person not
capable of answering a question x, can translate it into x’ for the system, and the system might provide
the answer that is then communicated to the user. We have argued in a separate paper [3] that active
documents will also play a fundamental role in digital libraries in the future, since those libraries will turn
more and more from static information repositories into interactively and collaboratively used centers of
human knowledge.
9.2.4
Conclusion
In this paper we have described the new notion of “active document”. We believe that already the first
applications make it abundantly clear that this notion will play a major role in the intelligent exploitation
of information and knowledge in computer networks.
Much research and development remains to be done, yet even with what is available today in e.g. [2]
much can be achieved!
9.2.5
References
[1]Heinrich, E., Patrick, J., Kemp, E.: A Flexible Structured Language for the Coding of Human Behaviour - FSCL, Massey University Department of Information Systems Report 1 (1999)
[2]www.hyperwave.com
[3]Maurer, H: Beyond Classical digital Libraries; Proc. NIT conference, Beijing (2001), to appear.
[4]Lennon, J.: Hypermedia Systems and Applications; Springer Pub. Co., Germany (1997)
KAPITEL 9. KNOWLEDGE MANAGEMENT
[5]www.gentle-wbt.com
[6]Maurer, H.: Hyperwave - the Next Generation Web Solution; Addison Wesley Longman (1996)
[7]Maurer, H.: Hyperwave - the Next Generation Web Solution; Addison Wesley Longman (1996)
152
Kapitel 10
Prüfungsfragen
In diesem Teil werden mögliche Prüfungsfragen zur Vorlesung vorgestellt. Da der Schreiber aus eigener leidvollen Erfahrung weiss, dass Prüfungen in einer anderen als seiner Muttersprache nicht gerade
einfacher werden (wer würde schon vom französischen Enlèvement des ordures ménagères auf “garbage
collection” kommen), wurden alle Fragen so gut als möglich ins Englische übersetzt.
10.1
Internet
• Wie funktioniert das Namenschema im Internet? Was ist ein Domain Name Service?
How does the naming scheme in the internet work? What is a Domain Name Service?
[07.07.2003] [24.06.2004]
• Ist es möglich, auf einem Rechner verschiedene Server-Dienste (z.B. Mail und WWW) anzubieten?
Wie unterscheidet man bei TCP/IP zwischen verschiedenen Diensten auf einem Rechner?
Is it possible to provide different services (e.g. mail and WWW) on one server? How does TCP/IP
distinguish different services on one server?
[27.06.2001] [13.06.2003] [26.05.2004]
• Warum hat sich TCP/IP als Internet-Protokoll durchgesetzt und kein anderes Protokoll? Welche
Eigenschaft von TCP/IP macht das Internet relativ unabhängig gegen Ausfälle einzelner Knoten?
Why did TCP/IP win the race as internet-protocol (and no other protocol)? Which quality of
TCP/IP made the internet relatively independent against the breakdown of single nodes?
[31.01.2001] [28.11.2003] [28.04.2004] [11.10.2004]
• Welches Adressierungschema wird im Internet verwendet? Welcher Internet-Dienst ist zuständig
für die Umsetzung von IP-Adressen auf Namen?
Which addressing scheme is used in the internet? Which internet-service is responsible for the
translation of IP-addresses to names?
[21.03.2001] [03.10.2003] [24.11.2004]
10.2
Informationssysteme
• Sind digitale Bibliotheken eine Erfindung der letzten 10 Jahre? Welche digitalen Bibliotheken
kennen Sie und wann sind diese ungefähr entstanden?
Are digital libraries an invention of the past 10 years? Which digital libraries do you know and
approximately when were they invented?
153
KAPITEL 10. PRÜFUNGSFRAGEN
154
• Gibt es verschiedene Arten von Hyperlinks? Nennen Sie mindestens drei und erklären Sie deren
Anwendungen.
Are there different types of hyperlinks? Name at least three of them and describe their usage.
• Welche Eigenschaften machten das World-Wide-Web (WWW) so populär? Erklären Sie die drei
Wichtigsten.
Which quality made the World-Wide-Web (WWW) so popular? Describe the three most important
ones.
[02.05.2001] [03.10.2003] [23.01.2004] [12.07.2004]
• Ihre 82jährige Grossmutter hat sich kürzlich einen Computer gekauft und fragt Sie jetzt, welche
Suchmaschine (welchen Typ) Sie ihr empfehlen würden. Begründen Sie ihre Empfehlung!
Your 82year old grandmother just bought a computer and asks you, which search engine (which
type of search engine) you would recommend. Explain your recommendation!
[26.09.2001] [28.11.2003]
• Warum ist es im Internet so schwierig, Informationen zu finden?
Why is it difficult to find information in the internet?
• Wer oder was ist “Veronica”? Welche Möglichkeiten bot Veronica, die es vorher noch nicht gegeben
hat.
Who or what is “Veronica”? What previously unknown possibilities did Veronica offer to users?
• Muss sich der Ersteller von Web-Seiten selbst darum kümmern, dass seine Seiten von Suchmaschinen
indiziert werden? Erklären Sie Ihre Antwort(en).
Does the creator of web-pages himself has to worry about that his pages are indexed by search
engines? Explain your answer(s).
[21.03.2001]
• Welche Internetdienste machen schon länger Gewinne und wie machen sie dies? Ist dies positiv für
die Benutzer, oder gibt es auch Nachteile?
What kind of internet-services have been making money for some time and how do they do it? Is
this only positive for users, or are there any disadvantages?
• Welche Kategorien von Suchmaschinen gibt es? Erklären sie deren Grundprinzipien in wenigen
Sätzen.
What types of search engines are there? Explain the fundamental principles in a few sentences.
[14.11.2001] [03.06.2002] [15.01.2003] [26.05.2004]
• Was unterscheidet einen Indexsuchdiest von einem Katalogsuchdienst? Welchen davon würden Sie
Ihrer 82jährigen Grossmutter empfehlen? Warum?
What is the difference of index-based search engines and those based on a catalog? Which one
would you recommend your 82year old grandmother? Why?
[23.01.2002] [09.07.2002] [12.07.2004]
• Was ist ein Robot/Spider ? Welche Internettechnologie verwendet einen solchen? Wozu? Was ist
seine Aufgabe?
What is a robot/spider ? Which internet technology is using one of those? What for? What is his
job?
[17.04.2002] [23.01.2004]
• Welche Schwierigkeiten haben Robots/Spider beim Durchstöbern von Webseiten zu meistern? Welche Massnahmen kann der Web-Seiten-Gestalter ergreifen, um einem solchen Robot/Spider seine
Aufgabe zu erleichtern.
What problems are facing robots/spiders when they are collecting data in web-pages? What can
be done by the creator of the web-page to faciliate this task for the robot/spider?
[26.09.2001] [25.09.2002] [16.12.2002]
KAPITEL 10. PRÜFUNGSFRAGEN
155
• Erklären Sie das Prinzip von Meta-Suchmaschinen. Welche Vor- und Nachteile hat eine Suche mit
Hilfe einer solchen Meta-Suchmaschine?
Explain the principle of meta search engines. Which advantages and disadvantages does searching
with such a meta search engine have?
[13.06.2003] [24.06.2004]
• Erklären Sie das Prinzip von Agenten im Zusammenhang mit Suchmaschinen (keine Geheimdienststories bitte :-)).
Explain the principle of agents in connection with search engines (no crime stories please :-)).
• Wie funktionieren Recommendation Systeme? Wo werden sie hauptsächlich verwendet. Warum?
How does recommendation systems work? Where are they used primarily? Why?
[27.06.2001]
• Welche Möglichkeiten gibt es, Suchergebnisse von Suchmaschinen zu reihen (Ranking)? Erklären
Sie eine davon etwas genauer.
Which possibilities are there to rank the search results of search engines? Explain one of these
methods in detail.
[31.01.2001] [17.12.2001] [06.11.2002] [18.03.2003] [07.07.2003] [28.04.2004]
Bemerkung: Den ersten Teil der Frage nicht vergessen! Für die volle Punkteanzahl reicht es nicht,
z.B. PageRank zu beschreiben. Auch andere Rankingmethoden müssen zumindest erwähnt werden!
• Wie funktioniert das Ranking von Suchergebnissen bei Google? Welche Web-Seiten werden bei
Google in den Suchergebnissen höher positioniert?
How does the Google ranking algorithm work? Which Web pages get better ranking in Google
search results?
[11.10.2004]
• Warum wurde Google so eine Erfolgsgeschichte? Auf welchen grundliegenden Eigenschaften vom
Web wurde das Google Ranking basiert, um bessere Suchergebnisse zu erzielen?
Why did Google become such a great success? Which are the basic properties of the Web that the
Google ranking algorithm is based on? How Google makes use of these properties to achieve better
results ranking?
[24.11.2004]
• Was ist Google Bombing? Kann man damit bessere Positionierung von Web-Seiten in den Suchergebnissen bewirken? Wie wird dieses Problem bei anderen Suchmaschinen (Teoma) bewältigt?
What is Google Bombing? Can yopu achieve better ranking of your Web pages with Google
bombing? How do other search engines (Teoma) solve that problem?
• Welche Möglichkeiten gibt es, nach Multimediadaten (Bildern, Videos, ...) zu suchen? Welche
davon wird hauptsächlich von Suchmaschinen verwendet? Warum?
Which possibilities are there to search for multimedia data (images, videos, ...)? Which one is used
primarily by search engines? Why?
[02.05.2001]
• Der Computergenerierte Kontext (Wissensnetzwerk) des “Brockhaus Multimedial 2001” verwendet
verschiedene Kriterien, um ähnliche Artikel zu finden. Erklären Sie diese kurz.
The computergenerated context (the knowledge network) of the “Brockhaus Multimedial 2001”
uses different criteria to find matching articles. Explain them with a few sentences.
• Welches Problem ergibt sich für ein Informationssystem beim Speichern von vielen kleinen Dateien
(z.B. Bildern und ihren Thumbnails)? Wie lässt sich dieses Problem umgehen?
Which problem does an information system face when storing lots of small files (e.g. images and
their thumbnails)? How can this be circumvented?
KAPITEL 10. PRÜFUNGSFRAGEN
10.3
156
Markup Languages
• Erklären Sie kurz das Grundprinzip von Markup-Sprachen.
Explain in a few sentences the fundamental principle of markup languages.
[03.10.2003]
• Was beschreiben “Verallgemeinerte oder beschreibende Auszeichnungen (generalized or descriptive
Markups)”? Nennen Sie die Vorteile dieser Auszeichnung.
What are generalized or descriptive markups describing? Explain the advantages of this kind of
markups.
• Was definiert SGML? Was nicht?
What is SGML defining? What doesn’t it define?
• Was sind Entities in HTML/SGML? Wozu werden sie gebraucht?
What are Entities in HTML/SGML? What are they used for?
• Was legt eine Document Type Definition (DTD) fest? Wie bezeichnet man ein SGML-Dokument,
das sich an diese DTD hält?
What does a Document Type Definition (DTD) define? How do you call an SGML-document, that
conforms to this DTD?
• Welche Vorteile/Nachteile haben clientseitige Skripte (z.B. JavaScript) gegenüber Serverseitigen
(z.B. JSP, PHP, ASP, ...)?
Which advantages/disadvantages have client-side scripts (e.g. JavaScript) in comparison to server
side extensions (e.g. JSP, PHP, ASP, ...)?
• Wozu dienen Cascaded Style Sheets (CSS)? Welche Eigenschaften einer HTML-Seite können sie
beeinflussen?
What are Cascaded Style Sheets (CSS) for? Which properties of an HTML-page can they influence/change?
[21.03.2001] [13.06.2003] [11.10.2004]
• Muss zum Ändern des Layouts von HTML Seiten (z.B. Schriftgrösse von Überschriften, ...), die mit
Cascaded Style Sheets (CSS) arbeiten, der HTML-Code der Seite selbst verändert werden? Warum
bzw. warum nicht?
You wan to change the layout (e.g. fontsize of headlines, ...) of HTML-pages that are defined with
Cascaded Style Sheets (CSS). Do you have to change the HTML-code of the page itself? Why?
Why not?
[07.07.2003] [26.05.2004]
• Kann man HTML und XML direkt vergleichen? Wo liegen die Haupt-Unterschiede dieser beiden
Markup Sprachen?
Are HTML and XML direktly comparable? Where are the main differences of these two markup
languages?
[02.05.2001] [15.01.2003] [23.01.2004] [24.06.2004]
• HTML beschreibt ja mehr oder weniger den Aufbau einer Seite. Was sollte XML beschreiben?
Wozu dient diese Beschreibung?
HTML describes more or less the structure of a page. What does XML describe? What is this
description good for?
[27.06.2001] [17.04.2002] [03.10.2003]
• Beschreiben Sie die Vorteile und Nachteile von XML gegenüber HTML.
Describe the advantages and disadvantages of XML versus HTML.
[26.09.2001] [03.06.2002] [22.05.2003] [12.07.2004]
KAPITEL 10. PRÜFUNGSFRAGEN
157
• Wie unterscheidet sich die XML-Syntax von der HTML-Syntax?
Describe the differences between the syntax of HTML and XML.
[28.11.2003] [24.11.2004]
• Erstellen Sie eine (kurze) Adressliste (wie in einem Telefonbuch) in XML und beschreiben Sie an
Hand dieser die Unterschiede von XML im Vergleich zu HTML.
Create a (short) list of addresses (like in a phone book) in XML and use it to describe the differences
to XML and HTML.
[09.07.2002] [16.12.2002] [07.07.2003] [28.04.2004] [11.10.2004]
• Wozu verwendet man Attribute bei XML? Gibt es eine Regel, wann Daten in ein Attribut und wann
eher in ein eigenes Tag zu verpacken sind? Welche Vorteile/Nachteile hat man bei Verwendung von
Attributen gegenüber eigener Tags?
What are attributes used in XML for? Is there a general rule when to use an attribute and when to
use a tag for some data? Describe the advantages/disadvantages of the usage of attributes versus
the usage of tags?
[21.03.2001] [23.01.2002] [18.03.2003] [23.01.2004] [24.11.2004]
• Wozu dient eine Document Type Definition (DTD) bei einem XML-Dokument? Muss für jedes
XML-Dokument eine DTD erstellt werden?
What is the Document Type Definition (DTD) of a XML-document used for? Is it necessary to
create a DTD for every XML-document?
[26.09.2001] [17.04.2002] [28.11.2003] [24.06.2004]
• Welche Möglichkeiten gibt es bei XML festzulegen, welche Tags vorkommen dürfen und wie diese
verschachtelt werden können? Welche der beiden Möglichkeiten ist ihrer Meinung nach vorzuziehen?
Warum?
What possibilities are there to define the allowed tags of an XML-document and how these tags
can be nested? Which one (of the two) would you prefer? Why?
[14.11.2001] [25.09.2002] [22.05.2003]
• Welche Vorteile/Nachteile haben XML-Schemas gegenüber einer Document Type Definition (DTD)?
Welche Art von Definition ist mächtiger?
What are the advantages/disadvantages of XML-schemas in comparison to a Document Type Definition (DTD)? What kind of definition is more powerful?
[17.12.2001] [06.11.2002]
• Was sind Processing Instructions bei XML? Wozu werden sie benutzt?
What are Processing Instructions in XML? What are they used for?
[17.12.2001] [09.07.2002]
• Was ist die Extensible Stylesheet Language (XSL)? Wozu wird sie benutzt?
What is the Extensible Stylesheet Language (XSL)? What is it used for?
[31.01.2001] [16.12.2002]
• Welche Möglichkeiten bietet die Extensible Stylesheet Language (XSL) zur Transformation von
XML-Dokumenten?
Which possibilites does the Extensible Stylesheet Language (XSL) provide to transform XMLdocuments?
• Erklären Sie kurz die Extensible Stylesheet Language (XSL). Aus welchen Teilen besteht XSL und
wozu dienen diese?
Describe the Extensible Stylesheet Language (XSL). What parts is XSL made of and what are they
used for.
[14.11.2001] [03.06.2002] [25.09.2002] [22.05.2003] [26.05.2004]
KAPITEL 10. PRÜFUNGSFRAGEN
158
• Wozu wird XPath bei Extensible Stylesheet Language (XSL) verwendet?
What is XPath of Extensible Stylesheet Language (XSL) used for?
[12.07.2004]
• Wie kann die Kombination XML/XSL verwendet werden? Muss eine XSL-Transformation immer
auf dem Server erfolgen oder macht sie auch beim Client Sinn? Ist es im Moment sinnvoll, an einen
User Agent (Browser) XML/XSL zu senden?
How can the combination of XML/XSL be used? Must the XSL-transformation always happen on
the server? Does it make any sense to do it on client as well? Does it make any sense to send
XML/XSL to a user agent (browser) at this point of time?
[13.06.2003] [28.04.2004]
10.4
Digital Audio
• Was versteht man beim Digitalisieren (von Audiodaten) unter Aliasing? Welche andere Fehlerquellen gibt es beim Digitalisieren?
What is meant by Aliasing when digitizing audio-data? What kind of other sources of errors are
there?
[31.01.2001] [26.09.2001] [17.04.2002] [16.12.2002] [13.06.2003] [28.04.2004]
• Beschreiben Sie kurz verlustlose und verlustbehaftete Kompressionsarten für Audio-Daten. Welche
Effekte werden bei der verlustbehafteten Audiokompression ausgenützt.
Describe lossless and lossy compression-methods for audio data. Which effects are used for lossless
audioßcompression?
[03.06.2002] [06.11.2002] [22.05.2003] [23.01.2004] [24.11.2004]
• Welche grundlegenden Arten von Kompression von Audiodaten gibt es? Zählen Sie einige Beispiele
beider Arten auf und beschreiben Sie sie kurz.
Which fundamental types of compression of audio-data are there? Give some possibilities of both
types and describe them in a few sentences.
[07.07.2003]
• Ein Lied von 3 Minuten Länge wird digitalisert und dann mit MP3 komprimiert. Die Digitalisierung
erfolgt mit folgenden Werten: Stereo (2 Kanäle), 16bit Auflösung, 44kHz Sampling Rate. Die
Umwandlung ins MP3 Format geschieht mit 128kbit/sekunde (konstante Bitrate). Wie gross ist
die unkomprimierte Datei, wie gross die komprimierte (in Kilobytes. Zur Einfachheit: 1 Kilobyte
= 1000 Bytes)?
A 3 minute song is digitized and converted/compressed to mp3-format. Digitizing is done in stereo
(2 channels), 16bit resolution, 44kHz sampling rate. The mp3 compression uses 128kbit/seconds
(constant bitrate). What is the file size of the uncompressed, what of the compressed song (in
kilobytes). For simplicity use 1 kilo byte = 1000 bytes)?
[18.03.2003] [28.11.2003] [26.05.2004] [11.10.2004]
• Welche Phänomene des menschlichen Gehörs werden bei verlustbehafteten Kompressionsalgorithmen von Audiodaten ausgenutzt?
Which phenomena of the human ear are used/exploited by lossy compression algorithms of audiodata?
[21.03.2001] [17.12.2001] [09.07.2002] [15.01.2003] [24.06.2004]
• Kann man sagen, dass ein Kompressionsverfahren für Audiodaten besser ist als ein anderes? Warum? Warum nicht? Beschreiben Sie kurz, wo das eigentliche Know-How bei verlustbehafteten
Kompressionsalgorithmen für Audiodaten liegt.
KAPITEL 10. PRÜFUNGSFRAGEN
159
Is it possible to state that one compression algorithm for audio-data is better than another? Why?
Why not? Describe in a few sentences where the ’real’ know-how of lossy compression algorithms
for audio-data is.
[02.05.2001] [03.10.2003] [12.07.2004]
• Was unterscheidet MIDI von anderen Audio-Formaten? Wozu wird MIDI hauptsächlich verwendet?
What is the main difference between MIDI and other audio-formats? What is MIDI used for mainly?
[27.06.2001] [14.11.2001] [25.09.2002]
10.5
Digital Images
• Welche Eigenschaften des menschlichen Sehapparates (Auge, Signalverarbeitung Auge-Gehirn, ...)
gilt es beim Design von Informationssystemen zu beachten? Warum?
Which qualities/properties of the human visual perception (eye, signal processing eye-brain, ...)
should be kept in mind when designing information systems? Why?
• Beschreiben Sie kurz die verschiedenen Farbmodelle und deren hauptsächliche Anwendung.
Describe in a few sentences the different color models and their main usage.
[07.07.2003] [28.04.2004]
• Wieviel Speicherplatz benötigt ein digitales unkomprimiertes Rasterbild mindestens? Das Bild hat
folgende Eigenschaften: Breite = 1024 Pixel, Höhe = 768 Pixel, 8 bit Farbtiefe je Farbkanal bei
Verwendung des RGB-Farbmodells. Die Grösse ist in KiloBytes (1 kbyte = 1024 bytes) anzugeben.
Es muss zumindest eine kurze Formel angegeben werden, anhand derer der Rechengang erkennbar
ist! Wie verändert sich die Dateigrösse, wenn sowohl Höhe als auch Breite durch 2 dividiert werden?
Calculate the minimal memory consumption of a digital uncompressed raster image. The image
has the following properties: width = 1024 pixel, height = 768 pixel, 8 bit color depth per channel
(RGB color model). The size must be given in kilobytes (1 kbyte = 1024 bytes). There must be
given at least a short formula, so the way of the calculation is visible! How does the file size change,
when height and width are divided by 2?
[31.01.2001] [02.05.2001] [14.11.2001] [23.01.2002] [06.11.2002] [22.05.2003] [24.11.2004]
• Beschreiben Sie kurz das Grundprinzip der LZW-Komprimierung. Muss die Code-Tabelle (Wörterbuch) mitgespeichert werden? Warum? Warum nicht?
Describe in a few sentences the fundamental principle of the LZW-compression-algorithm. Is it
necessary to store the code-table (dictionary) as well? Why? Why not?
[21.03.2001] [06.11.2002] [03.10.2003] [26.05.2004]
• Beschreiben Sie kurz das Prinzip der Lauflängencodierung (RLE). Welche Probleme können bei
dieser Art von Kodierung enstehen? Wie können diese gelöst werden?
Describe in a few sentences the fundamental principle of the Run-Length-Encoding (RLE). What
problems might occur when using this kind of coding? How can they be solved?
[27.06.2001] [23.01.2002] [23.01.2004]
• Beschreiben Sie kurz das Prinzip der Huffman Codierung. Welche Vorteile und Nachteile hat diese
Codierung?
Describe in a few sentences the fundamental principle of Huffman-Coding. Which advantages/disadvantages does this coding has?
[31.01.2001] [17.04.2002] [15.01.2003]
• Beschreiben Sie kurz das Prinzip der verlustfreien JPEG-Kompression.
Describe in a few sentences the fundamental principle of the lossless JPEG-compression.
[14.11.2001] [18.03.2003]
KAPITEL 10. PRÜFUNGSFRAGEN
160
• Beschreiben Sie kurz das Prinzip der verlustbehafteten JPEG-Kompression (ohne Formeln). Warum
wird bei dieser Kompression das YUV (bzw. YIQ) Farbmodell verwendet? Welcher Schritt ist der
Verlustbehaftete?
Describe in a few sentences the fundamental principle of the lossy JPEG-compression (no formulas
needed). Why is the YUV (resp. YIQ) color model used in this algorithm? Which part of the
algorithm is ’lossy’ ?
[26.09.2001] [16.12.2002] [28.11.2003] [28.04.2004] [11.10.2004]
• Für welche Daten sind verlustbehaftete Kompressionsverfahren ungeeignet bzw. wann können
keine verlustbehafteten Kompressionsverfahren eingesetzt werden? Warum?
For which data are lossy compression algorithms not applicable? When can lossy compression
algorithms not be used? Why?
• Beschreiben Sie die Vor- und Nachteile der verlustbehafteten JPEG-Kompression. Für welche Bilder
(Bildtyp) eignet sich diese gut, für welche weniger gut? Warum?
Describe the advantages/disadvantages of the lossy JPEG-compression. For what images (type of
images) is it well usable, for what less usable? Why?
[23.01.2002] [17.04.2002] [18.03.2003] [24.05.2004] [24.06.2004]
• Vergleichen Sie den “alten” JPEG-Standard mit JPEG-2000. Welche Eigenschaften hat JPEG-2000
verbessert?
Compare the “old” JPEG-standard with JPEG-2000. Which qualities were improved in JPEG2000?
[03.06.2002] [09.07.2002]
• Sie möchten ein digitales Photoalbum Ihrer letzten Urlaubsreise ins Web stellen. Welches der
folgenden Graphikformate verwenden Sie: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript,
PDF. Warum? Warum nicht? Geben Sie Begründungen für jedes der obigen Dateiformate!
You want to put your digital photoalbum of your last holiday into the web. Which of the following
image formats (file formats) would you use: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript,
PDF. Why? Why not? Give arguments for each of the given file formats.
[12.07.2004]
• Sie möchten eine Linien-Graphik ins Web stellen. Welches der folgenden Graphikformate verwenden
Sie: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Warum? Warum nicht? Geben
Sie Begründungen für jedes der obigen Dateiformate!
You want to put a line-drawing into the web. Which of the following image formats (file formats)
would you use: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Why? Why not?
Give arguments for each of the given file formats.
[17.12.2001] [22.05.2003]
• Sie möchten eine Linien-Graphik (3 Farben) in ein Dokument einbinden. Das Dokumentenformat
unterstützt folgende Grafikformate: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF.
Welches davon verwenden Sie? Warum? Warum nicht? Geben Sie Begründungen für jedes der
obigen Dateiformate!
You want to put a line-drawing (3 colors) into the document. The document-format supports the
following graphic types: JPG, PNG, GIF, SVG, BMP, TIFF, WMF, Postscript, PDF. Which one
would you use? Why? Why not? Give arguments for each of the given file formats.
[03.06.2002] [15.01.2003]
• Welche Vorteile/Nachteile hat das Bildformat Portable Network Graphics (PNG) gegenüber GIF?
Which advantages/disadvantages has the file format Portable Network Graphics (PNG) in comparison to GIF?
[25.09.2002] [13.06.2003]
KAPITEL 10. PRÜFUNGSFRAGEN
161
• Erklären Sie kurz, wie beim Bildformat PNG Interlacing funktioniert. Welche Vor- und Nachteile
hat die Verwendung von Interlacing (bei PNG)?
Describe in a few sentences how interlacing works in the file format PNG? Which advantages/disadvantages has the usage of interlacing (of PNG)?
[02.05.2001] [16.12.2002]
• Welche grundlegend verschiedenen Methoden gibt es, Bilder/Graphiken zu speichern? Sind alle
unabhängig vom verwendeten Betriebssystem? Für welche Art von Bildern eignet sich die jeweilige
Methode am besten? Beschreiben Sie kurz die Vor- und Nachteile der jeweiligen Methoden.
Which fundamentally different methods are there to store images/graphics? Are they all independent of the used operating system? Which method suits which images best? Describe in a few
sentences the advantages/disadvantages of the methods.
• Welche Vor- und Nachteile hat das Vektorformat Scalable Vector Graphics (SVG) gegenüber anderen
Vektorformaten und welche gegenüber anderen Rasterbildformaten?
Which advantages/disadvantages has the vector format Scalable Vector Graphics (SVG) in comparison to other vector formats und which in comparison to other raster image formats?
[27.06.2001]
• Wozu dienen digitale Wasserzeichen und wie funktionieren sie?
What are digital watermarks used for and how do they work?
10.6
Digital Video
• Warum arbeitet das analoge Fernsehen mit 50 Halbbildern pro Sekunde? Wie kommt man auf diese
Zahl? Warum Halbbilder?
Why does the analog television work with 50 halfframes per second? Why 50? Why halfframes?
• Welche Vor- und Nachteile hat digitales Video gegenüber analogem Video?
Which advantages/disadvantages has digital video in comparison to analog video?
• Was ist ein Codec und wozu wird er bei digitalem Video verwendet?
What is a Codec and what is it used for in digital video?
[21.03.2001] [03.10.2003] [26.05.2004]
• Für welchen Zweck wurden die Videokompressionsstandards nach H.261 und H.263 entwickelt.
Welche Bedingungen wurden durch diesen Zweck gestellt?
For which purpose were the video-compression-standards H.261 and H.263 developed? Which requirements were derived from this purpose?
• Was sind Intraframes, Predicted Frames und Bidirectionally Predicted Frames und wozu dienen sie?
What are Intraframes, Predicted Frames und Bidirectionally Predicted Frames and what are they
used for?
[31.01.2001] [27.06.2001] [23.01.2002] [09.07.2002] [18.03.2003] [24.06.2004] [24.11.2004]
• Werden die Frames bei MPEG Video in der gleichen Reihenfolge übertragen, in der sie aufgenommen
wurden? Warum? Warum nicht? Erklären Sie auch kurz die verschiedenen Frame-Typen und deren
Sinn.
Are the frames of MPEG video transmitted in the same order as they are recorded? Why? Why
not? Explain in a few sentences the different frame-types and their usage.
[02.05.2001] [26.09.2001] [03.06.2002] [16.12.2002] [07.07.2003] [12.07.2004]
KAPITEL 10. PRÜFUNGSFRAGEN
162
• Welche Unterschiede/Gemeinsamkeiten haben die Videostandards Motion JPEG (MJPEG) und
MPEG2 ? Beschreiben Sie auch die Vor-/Nachteile der jeweiligen Formate.
Describe the differences and common things of the video-standards Motion JPEG (MJPEG) and
MPEG2. Give advantages/disadvantages of these formats as well.
[17.12.2001] [17.04.2002] [25.09.2002] [15.01.2003] [28.11.2003] [11.10.2004]
• Kann von einem Video-Dateiformat auf die verwendete Kompressionsmethode (Codec) geschlossen werden, oder ist es möglich, verschiedene Arten von Daten in (verschiedenen) Dateien (z.B.
Quicktime-Movie-Dateien) zu speichern?
Is it possible to determine the used compression method just by knowing the video-file format or is
it possible to store different kinds of data in (different) files (e.g. Quicktime-Movie-files)?
• Beschreiben Sie kurz die grundlegenden Eigenschaften und vor allem die Unterschiede von MPEG-2,
MPEG-4 und MPEG-7.
Give a short description of the characteristics and especially the differences of MPEG-2, MPEG-4,
and MPEG-7.
[22.05.2003]
• Wozu dient die Synchronized Multimedia Integration Language (SMIL)? Welche Möglichkeiten bietet SMIL?
What is the Synchronized Multimedia Integration Language (SMIL) used for? Which possibilities
does SMIL provide?
[31.01.2001] [14.11.2001] [06.11.2002] [23.01.2004]
10.7
Serverseitige Technologien
• Welche Vor- und Nachteile haben dynamische gegenüber statischen Webseiten?
Which advantages/disadvantages have dynamic web pages in comparison to static ones?
• Eine bestehende Applikation, die in C++ geschrieben ist, soll mit einem Webserver gekoppelt,
dynamische Webseiten generieren. Welche Technologie (serverseitige Erweiterung) wählen Sie und
warum?
An already available application (written in C++) should be coupled to a web-server to generate
dynamic web-pages. Which technology (server side extension) do you choose? Why?
• Eine bestehende Java (!) Applikation, soll mit einem Webserver gekoppelt, dynamische Webseiten
generieren. Welche Technologie (serverseitige Erweiterung) wählen Sie und warum?
An already available java (!) application should be coupled to a web-server to generate dynamic
web-pages. Which technology (server side extension) do you choose? Why?
[26.09.2001] [13.06.2003] [12.07.2004]
• Beschreiben Sie kurz das Grundprinzip und die Vor- und Nachteile von CGI.
Describe in a few sentences the fundamental principle and the advantages/disadvantages of CGI.
[27.06.2001] [09.07.2002] [07.07.2003] [26.05.2004]
• Ist es möglich, eine in Prolog/Algol68/Pascal geschriebene Anwendung als dynamischer Webseitengenerator einzusetzen? Mit Hilfe welcher Technologie (serverseitige Erweiterung) würden Sie dies
angehen? Warum?
Is it possible to use an application that is written in Prolog/Algol68/Pascal to generate dynamic
web pages? Which technology (server side extension) would you choose? Why?
• Welche Methoden gibt es bei HTTP, Parameter (Argumente, Benutzereingaben, ...) an eine serverseitige Anwendung zu übergeben? Welche Vor- und Nachteile haben diese?
Which possibilities are there in HTTP to hand over parameters (arguments, user input, ...) to a
serverside application? Which advantages/disadvantages do they have?
[14.11.2001] [23.01.2002] [06.11.2002] [15.01.2003] [03.10.2003] [24.06.2004]
KAPITEL 10. PRÜFUNGSFRAGEN
163
• Ist die Übergabe von Parametern (Argumenten, Benutzereingaben, ...) an eine serverseitige Anwendung mit irgendwelchen sicherheitsrelevanten Überlegungen gekoppelt? Auf was müssen Sie
besonders achten?
Are there any security concerns to obey when handing parameters (arguments, user input, ...) to a
serverside application? What has to be kept in mind?
• Beschreiben Sie kurz die Unterschiede und Gemeinsamkeiten von Java Servlets und Java Server
Pages (JSP). Wann entscheiden Sie sich eher für die eine, wann für die andere Technologie?
Describe the differences and common features of Java Servlets and Java Server Pages (JSP) in a
few sentences. When do you use/prefer the one or the other technology?
[02.05.2001] [18.03.2003] [28.11.2003] [24.11.2004]
• Lassen sich Active Server Pages (ASP) mit Java Server Pages (JSP) vergleichen? Beschreiben Sie
kurz die Gemeinsamkeiten bzw. Unterschiede.
Is it possible to compare Active Server Pages (ASP) with Java Server Pages (JSP)? Describe the
differences and common features in a few sentences.
[15.01.2003]
• Lassen sich Active Server Pages (ASP) mit Java Servlets vergleichen? Beschreiben Sie kurz die
Gemeinsamkeiten bzw. Unterschiede.
Is it possible to compare Active Server Pages (ASP) with Java Servlets? Describe the differences
and common features in a few sentences.
[31.01.2001] [17.12.2001] [25.09.2002]
• Lässt sich CGI mit Java Servlets vergleichen? Beschreiben Sie kurz die Gemeinsamkeiten bzw.
Unterschiede. Wann würden Sie welche Technologie einsetzen?
Is it possible to compare CGI with Java Servlets? Describe the differences and common features
in a few sentences. When would you use/prefer the one or the other technology?
[17.04.2002] [03.06.2002] [16.12.2002]
• Sie möchten eine Datenbank in eine dynamische Webseite integrieren (Abfragen und Ausgaben).
Welche server-seitige Erweiterung verwenden Sie und warum?
You want to integrate a database in a dynamic web-page (requests and results). Which serverside
extension do you use? Why?
[13.06.2003] [28.04.2004]
• Was sind Cookies? Wo werden sie gespeichert? Wozu dienen sie?
What are Cookies? Where are they stored? What are they used for?
[21.03.2001] [23.01.2002] [09.07.2002] [18.03.2003]
• HTTP ist ein Protokoll, das für jede Anfrage eine neue TCP/IP-Verbindung aufbaut bzw. aufbauen
kann. Welche Probleme resultieren daraus für Betreiber von Webservices und wie können diese
gelöst werden? Beschreiben Sie die grundlegenden Lösungsverfahren (low-level) und nicht die, die
z.B. von PHP angeboten werden (die aber auch auf den low-level Lösungen basieren).
HTTP is a protocol that establishes (may establish) a new TCP/IP connection for every request.
Which problems result in this behaviour for web-site providers and how can they be solved? Describe
the fundamental solutions (low level) and not the high-level ones provided by e.g. PHP (but that
nevertheless use the low-level methods).
[31.01.2001] [17.12.2001] [25.09.2002] [22.05.2003] [23.01.2004] [11.10.2004]
• Sie möchten WML-Dokumente für WAP-fähige Geräte anbieten. Welche Teile sind beteiligt, damit
Ihre Dokumente auf einem WAP-Gerät angezeigt werden können? Welche davon müssen Sie selbst
zur Verfügung stellen?
You want to provide WML-documents for WAP-devices. Which parts are involved so your documents can be displayed on a WAP-device? Which of those do you have to provide?
[06.11.2002]
KAPITEL 10. PRÜFUNGSFRAGEN
10.8
164
Bonus Fragen
Bonus Fragen werden bei Bedarf und Laune als Zusatzfragen eingesetzt und auch bei Bedarf und Laune
mit Punkten bewertet.
• Bonusfrage: Wie haben Sie ihre Ferien verbracht und was davon würden Sie im nächsten Jahr nicht
wieder tun. ;-)
Bonus Question: How did you spend your holidays and what activity wouldn’t you repeat during
your next year’s holidays. ;-)
• Beschreiben Sie ein alkoholhaltiges/alkoholfreies Getränk, das besonders gerne während der kalten
Jahreszeit im Freien genossen wird.
Describe a drink (with or without alcohol) that is consumed prefereably during the cold season in
the open.
[14.11.2001]
Originelle Antworten:
– (Matthias Rüther): Glühwein.... Erlauben verlängerte Aufenthalte im Freien in der Winterzeit
und haben somit hohen gesundheitlichen Nutzen
– (Klaus Eder):
<xml:document>
<winter ort="im Freien">
<Getraenk>
<Name>Tee</Name>
<Preis>25</Preis>
<Alkohol in %>5<Alkohol in %>
<Milch>ja</Milch>
</Getraenk>
</winter>
</xml:document>
– (Rene Vouri): Alkoholhaltiges Getränk: [...] Sehr beliebt bei Studenten und der KopfwehtablettenIndustrie.
Alkoholfreies Getränk: in der Südoststeiermark geächtet und nur auf dem Schwarzmark erhältlich. Bewiesene Einnahmen wird durch soziale Ächtung bis hin zum Entzug der südoststeirischen Staatsbürgerchaft bestraft.
– (Host Ortmann):
∗
∗
∗
∗
∗
Punsch, Grog oder Glühwein
alle 3 auch in alkoholfreier Form verfügbar (nicht W3C konform!)
fuer n ≥ 5 treten extreme Aliasingeffekte auf
fuer n ≥ 10 gute Kompression im auditiven Bereich (man hört nur mehr 31 )
fuer n ≥ 15 garbage collection
– [...] Jagatee (Tee: wurscht war für einer, Hauptsache viel Rum/Schnaps) [...] (Sandra Weitenthaler)
• Bonusfrage: Beschreiben Sie kurz die Unterschiede und Gemeinsamkeiten vom Weihnachtsmann
und dem Christkind. Welche “Technologie” würden Sie für Ihre Kinder verwenden? Warum? Ist
es möglich, eine Parallel-Installation durchzuführen?
Bonus Question: Describe in a few sentences the differences and common features of Santa Claus
and the Christkind. Which “technology” would you choose for your own children. Why? Is it
possible to do a parallel-installation?
[17.12.2001]
Originelle Antworten:
KAPITEL 10. PRÜFUNGSFRAGEN
165
– (Markus Schwingenschlögl): Der gewichtigeste Unterschied dürften wohl der 150kg Vorsprung
vom Weihnachtsmann sein.
ad Parallelinstallation: [...] seit Windows und Linux auf einem PC laufen ist sowieso gar nichts
mehr unmöglich!
– (Dirk Martin): Beide sind die ersten Versuche, Suchmaschinen für Kinder zu implementieren.
[...] Der Weihnachtsmann hat eine (schöne?) graphische Oberfläche bekommen.
– (Robert Aschenbrenner): Beides sind serverseitige Erweiterungen für XMS Seiten. [...] heavyweight Process Weihnachtsmann [...]. [...] das laute “HO HO HO” des Weihnachtsmannes
würde das leise Klingeln des Christkindes maskieren.
– (Willibald Krenn): wenn das Christkind mit SGML vergleichbar wäre, kann der Weihnachstmann mit HTML gleichgesetzt werden.
– (Michael Gissing): [...] Der Weihnachtsmann war früher grün, wurde aber von Coca-Cola
aus Marketing-Techniken in rot umgefärbt. [...] Christkind wird vom Weihnachtsmann aber
gemobbt, sodass am absteigenden Ast.
– (Josef Brunner): Für meine Kinder (ich hoffe, dass es meine sind) [...]
– (Joachim Reiter): [...] das Christkind ist immer früher dran, weil der Weihnachtsmann das
Reniter verpasst hat.
– (Robert Fritz): [...] CK reitet auf einem Kamel
– (Johannes Glückshofer): [...] man sieht dauernd besoffene Weihnachtsmänner, die keinen guten
Eindruck hinterlassen.
– (Stephan Wagner): Sowohl Weihnachtsmann als auch Christkind sind XMAS-Server [....].
Weihachtsmann zeichnet sich durch Plattformunabhängigkeit aus [...].
– (Klaus Stranacher): [...] Eine Abhilfe könnte in Zukunft die open-source Entwicklung “Weihnachtskind” bringen.
– (Helfried Tschemmernegg): [...] Durch das hohe Alter des Weihnachtsmannes ist mit dessen
Pensionierung in nächster Zeit zu rechnen. [...]
– (Christian Trenner): [...] fette Weihnachtsmänner quälen sich durch russverschmutzte Kamine
[...] Flugverkehr verunsichernden Fortbewegung mithilfe von Rentiergezogenen Schlitten [...]
– (Gerhard Sommer): [...] Das Christkind ist meiner Vorstellung nach ein Tannenbaum, grün,
sehr schön geschmückt und hat einen Weihnachtsstern ganz oben auf der Spitze.
– (Thomas Oberhuber): [...] das Ur-Christkind wurde im Jahre Schnee von der katholischen
Kirche entwickelt, und drei Jahre später in der RFC-CK-JS+3 veröffentlicht und empfohlen.
[...] Der Weihnachtsmann wurde von einem grossen Getränkehersteller entwickelt [...]. [...]
katholische Kirche hat nach eigenen Angaben mehr Juristen als Priester [...]
ad Parallelinstallation: unbedingt zuerst den Weihnachtsmann und erst dann das Christkind
installieren. Denn setzt sich der Weihnachtsmann aufs Christkind, isses weg!!
– (Jari Huttunen): The original versions of these “technologies” originate from Finland (Lapland). Other products are pirate versions!
• Bonusfrage: Sie stocken bei der Frage nach der Speicherplatz des digitalen Bildes aus Abschnitt 10.5.
Was tun Sie? [SCNR]
1. Meine Lösung ist 18.874.368bytes, weil ich den Unterschied zwischen Bit und Byte nicht kenne
und auch keine Ahnung habe, was das Prefix “kilo” heisst.
2. Ich rufe meinen Bruder/Schwester/Lehrer/Friseur an, der/die war schon immer besser im
Rechnen
3. Meine Lösung ist
1024∗768∗3∗8
.
1024∗8
“Kürzen” und “Einheiten” sind mir Fremdworte.
4. Was ist ein “Farbmodell”?
Bonus Question: You’re stuck at the question for the memory consumption in Abschnitt 10.5.
What are you doing? [SCNR]
1. My solution is 18.874.368bytes, because I do not know the difference between bit and byte and
I haven’t got the faintest clue, what the prefix “kilo” means.
KAPITEL 10. PRÜFUNGSFRAGEN
166
2. I call my brother/sister/teacher/hairdresser, he/she was always better in algebra.
3. My solution is 1024∗768∗3∗8
. I don’t know what “cancel” and “unit” means.
1024∗8
4. What is a “color model”?
Originelle Antworten:
– (Gunther Laure) Rechnet man das jetzt mit dem Euro immer ganz gleich?
– (Helmut Adam) (b) Rufe Prof. Mikolasch an - der wird es über irgendeine Gaussberechnung
mit mehrdimensionaler Pivotauswahl schon schaffen.
– (Harald Auer) (b) [...] Der Telefonjoker fällt mangels Handy aus. Das Saal Publikum kann
auch nicht weiter helfen: statistische Genauigkeit wegen der geringen Anzahl (Anm.: nur 8
Prüfungsteilnehmer) nicht gegeben).
– (Kevin Krammer) (b) oder (c) Ich verwende den Publikumsjoker.
– (Wolfgang Lazian) Eigentlich fehlt hier die Option 50:50 Chance und die Publikumsfrage.
Nachdem aber der Prüfungscharacter aufrecht erhalten werden soll, werde ich mal über mein
WAP-Handy meiner 82-jährige Grossmutter ein SMS schicken. Diese sitzt ja nun Tag und
Nacht vor dem Blechtrottel [...] um diverse Frage der lieben Bekanntschaft in ihre Suchmaschine einzutippen. [...] Wenn sie nichts findet, soll sie doch mal ihren Nachbarn fragen, der
Maurer heisst. Der weiss es sicher.
– (Andreas Schlemmer) Ich frage meine 82 jährige Oma, die wird die Lösung mit Hilfe eines
Suchdienstes im Internet finden.
• Bonusfrage: (diesmal rekursiv!) Welche Bonusfrage würden Sie sich selbst stellen, und wie würden
Sie diese beantworten?
Bonus Question: (recursive!) Which bonus question would you ask yourself and what would you
answer?
Originelle Antworten:
– (Guido Pinkas):
x"’
a
b
x"
x’
–
–
–
–
Wenn ich mich im Zustand a befinde und nur durch die Transition x0 (Finden einer Lösung zu
dem in a gestellten Problem) in den Zustand b gelange, wobei ich durch Transtition x00 (Finden
einer weiteren Lösung des Problems) immer noch in Zustand b bin, kann ich dann annehmen,
dass ich die Bedingungen erfüllt habe um zu Transition x000 (Finden eines Beweises für die in
Zustand b gewonnenen Lösungen) in den Zustand a zu wechseln?
Das Modell beinhaltet keinen eindeutigen Endzustand.
Q.E.D.
(Guido Pinkas): Wozu soll ich eine Antwort auf eine Frage geben, wenn ich ja weiss, dass das
Stellen dieser Frage die Beantwortung derselben inkludiert?
(Chen Feng): kompliziertes Chinesisches Schiebespiel, (Anmerkung: zu kompliziert zum Abzeichnen, sorry.)
(Marc Samuelsson): What do you do when in doubt while grading? - Simple, get better grade.
(Gerald Aigner): Was war zuerst da, das Ei oder das Huhn?
function ueberlege
{
call ueberlege
}
– (Karin Mitteregger): Was ist das hässlichste Tier der Welt und in welchem Format würden
Sie ein Bild davon abspeichern?
A: Ein Schabrackentapir und natürlich im JPG-Format bei extrem starker Kompression um
das hässliche Ding verschwinden lassen zu können.
KAPITEL 10. PRÜFUNGSFRAGEN
167
– (Andreas Klausner): War es wirklich notwendig, zur Beantwortung der Bonusfrage eine neue
Seite zu beginnen?
Nein, da sie nur der Unterhaltung dient und nur im Zweifelsfall Punkte bringt.
– (Andreas Rath): Meine Bonusfrage wäre zu fragen, welche Bonusfragen man sich selbst fragen
würde.
Die Antwort auf diese Frage würde die Frage nach der Frage der Bonusfrage sein.
– (Mario Grünwald, Leonhard Kormann, Mario Polaschegg (gleiche Frage, leicht unterschiedliche
Antwort)):
Frage: Welche Bonusfrage würden Sie sich selbst stellen, und wie würden Sie diese beantworten?
Antwort: Welche Bonusfrage würden Sie sich selbst stellen, und wie würden Sie diese beantworten?
Anmerkung: Terminiert wenn
1. Die Frage unverständlich geworden ist.
2. Die Frage anders beantwortet wird (das ist aber nicht sicher).
– (Philip Hofmair): Bonusfrage = Frage nach der Bonusfrage (Frage nach der Bonusfrage)
Ich frage mich, wieso fällt mir keine Bonusfrage ein?
• Bonusfrage: (diesmal wieder rekursiv!) Finden Sie diese Bonusfrage sinnvoll?
Bonus Question: (recursive again!) Do you find that this bonus question makes sense?
[03.06.2002]
Originelle Antworten:
– (Wolfgang Auer): Finden Sie! diese Bonusfrage sinnvoll?
– (Florian Eisl:)
Bonusfrage(a)
{
If a = "?" then
Bonusfrage(?);
Else
End:
}
Bonusfrage ("?");
– (Andreas Gautsch:) Der Sinn einer Frage liegt in der Antwort!
– (Albert Strasser:) Ich nehm die Substitutionsmethode: “Finden Sie diese Finden Sie diese
Finden Sie diese ...” Stack Overflow
– (Martin Moschitz:) Wenn ich die notwendigen Punkte für die bessere Note mit dieser Antwort
bekomme, dann JA. Wenn nicht, dann ist die Antwort NEIN, weil ich mir zumindest ein
paar Minuten Gedanken über die Frage gemacht habe, welche mir dann fürs Ausbessern der
Prüfungsfragen (um die bessere Note zu bekommen) gefehlt haben.
– (Marko Kovacic:)
∗ Finde ich diese Bonusfrage sinnvoll, so finde ich sie sinnvoll.
∗ Suche ich diese Bonusfrage sinnvoll und finde sie nicht sinnvoll, so suche ich diese Bonusfrage sinnlos und finde sie sinnlos.
– (Hanno Rasin-Streden:) Ja, diese Bonusfrage kann sinnvoll aufgefunden werden.
1. Sie ist mit ausrechendem Kontrast gedruckt.
2. Das kursiv geschriebene “Bonusfrage” erweckt Aufmerksamkeit, was das Auffinden erleichtert.
KAPITEL 10. PRÜFUNGSFRAGEN
168
3. Die Bonusfrage ist durchgehend in Deutsch gehalten.
4. Sie steht auf der Vorderseite in lesbarer Schriftgröße.
Bonusfrage, die nicht sinnvoll gefunden werden können, wären etwa solche in weißer, hebräischer 2-Punkt-Schrift auf der Rückseite der Prüfungsangabe.
– (Thomas Edlinger:) natürlich → wenn man diese Frage in Frage stellen würde, dann müßte
man das auch bei den anderen 8 machen → macht man das, müßte man das bei allen Prüfungen
tun und dann stellt sich die Frage: Ist die Prüfung sinnvoll? → Stellt man sich diese Frage
kommt man zu: Ist das Fach sinnvoll? → Ist das Studium sinnvoll? ... → Ist das Leben
sinnvoll? bzw. Hat das Leben einen Sinn? Oder Was ist der Sinn des Lebens? ...
– (Markus Flohberger:)
function sinnvoll
begin
printf("Was tua I do? Wos bringt ma des? Warum ich?");
sinnvoll;
end
– (Thomas Trattnigg:) Die Antwort kann immer nur so sinnvoll wie die Frage sein. ;-)
– (Michael Scharnreitner:) Zur Untersuchung deses Problems machen wir uns die Grundeigenschaften der menschlichen Psyche zunutze, und da explizit die HABGIER.
Wir reduzieren (verlustbehaftet, aber für den Mensch nicht nachvollziehbar) auf:
⇒ Bringt diese Frage möglicherweise Punkte?
Dieses Problem ist inklusive fertiger Lösung in der Prüfungs-Ordnungs-Lib gespeichert und
liefert
⇒ JA
als Lösung des reduzierten Problems, und somit als Lösung des gestellten Problems!
• Bonusfrage: Beschreiben Sie, was und warum Ihr Traumurlaubsziel ist und warum Sie nicht hinfahren würden.
Bonus Question: Describe your dream holiday destination and why you would not travel there.
[03.06.2002]
• Bonusfrage: Beschreiben Sie in fünf (laut)malerischen Worten eine Ihrer Lieblingstätigkeiten. Eine
Erklärung, um welche Tätigkeit es sich handelt ist nicht unbedingt notwendig :-)
Beispiel: mpffffluck glugg gluggg gluggggg ahhhhhh (Bier aufmachen und trinken).
Bonus Question: Describe in five onomatopoeic words one of your favorite activities. A description
of the activity is not compulsory :-)
Example: mpfffluck glugg gluggg glugggg ahhhhh (Open beer and drink it).
[09.07.2002]
Originelle Antworten:
– (Gerhard Zingerle): wosch wusch wich voaam iech wup wup wummp plums grrr (Jonglieren)
– (Martin Halda): hüstel sprint hooo wucht hüstel (schwitz) - Volleyball spielen (zumindest
versuchen)
– (Michael Schmid): bum rap rap tap tap (Firmentür abschließen und gehen)
– (Klaus Schauch): klick knister klick klick grgrgrgr (Fernseher einschalten, zappen, einpennen)
– (Mario Schermann): mp4fluck glu2g glu3g glu5g a6h (Tätigkeit ist lauflängenkodiert)
– (Norbert Thek): click click clikelick click click (Je nach Interpretation, Surfen oder Computerspielen - bei zweiterem gehören noch Explosion, Todesschrei und sonstige Geräusche
eingefügt.)
– (Andreas Martischnig): jajahhh jaajah ohhhh jaaaa aahhh (Wer nun an etwas schweinisches
debkt, mein Gedanke war genau der gleiche.)
KAPITEL 10. PRÜFUNGSFRAGEN
169
– (Martina Franke): schlürfschlürf knirsch raschl schnarch KRACH (Das Bett war leider vom
XXX-L*tz.)
– (Martin Mayer): pieppiep ssssssss klickklickklick summ!
– (Hans Jürgen Gammauf): mhhh schleck schmatz schleck mhhh
– (Martin Pirker): gngngngngn knaaaaarz klack-klack aaaaaaahhhhhhh ....... ssssssshhhhhhhh
(Verschlafen, zur Uni hetzen, den Tag brav in der Uni verbringen, den ganzen Tag an die
verpaßte Morgentoilette denken und die Lieblingstätigkeit:
∗
∗
∗
∗
∗
–
–
–
–
–
gerade noch zurückhalten
Tür Klo
zusperren
Erleichterung!
Nachspülen
Wenn man dringend muß dann auch können - unüberboten. OK, vielleicht wars auch ne
“Scheiß”frage.....
(Josef Zehetner): pieppieppiep iiiääkh knacks mmmmmahhhh mmmmhhhhh
(Karl Voit): drück schnurr klick schau freu! (PC einschalten, Booten (zum leichteren Verständnis ist Einlogvorgang außen vor gelassen worden), Mausklick auf Bookmark von Nerd-Clippings
(http://www.ash.de/nerdclippings/), Lesen der täglich neu erscheinenden Comics zur Hebung der Moral, falls alle Gags den Weg von der Netzhaut zum emotionalen Teil meines
Kleinhirns geschafft haben, löst das zumeist Freude oder Schmunzeln aus)
(Martin Loitzl): patsch patsch patsch patsch wuuusch (mit viel Anlauf und möglichst großer
Wasserverdrängung ins Wasser springen und dabei den Applaus/Verärgerung der umliegenden
Badegäste ernten.)
(Stephan Weinberger): schrieck gulggulpgilp klink crack schlürf (Martini-Flasche aufschrauben, einschenken, Eiswürfel, zerspringt aufgrund therm. Spannungen, do it!)
(Robert Zöhrer): shssssch ..... ssshsssch ..... ssschssch (schlafen)
• Bonusfrage: Gibt es ein Leben vor dem Tod? Nehmen Sie allgemein dazu Stellung und berücksichtigen Sie das aktuelle Wetter.
Bonus Question: Is there life before death? Discuss this topic in general and take the current
weather into consideration.
[25.09.2002]
Originelle Antworten:
– (Norbert Pramstaller): Die Frage, ob es ein Leben vor dem Tod gibt, sollte man als Katholik
mit nein beantworten. Als Katholik glaubt man aber an das Leben nach dem Tod [...]. Nur
die obige Aussage als Techniker zu beantworten ist einfach: Wenn es ein Leben nach dem
Tod gibt, muss es auch ein Leben vor dem Tod geben, also ein geschlossenes System bilden.
Kurzum: Katholizismus und Technik - ein totaler Widerspruch! [....]
– (Michael Thonhauser): Ob es ein Leben vor dem Tod gibt ist aus meiner jetzigen Situation
heraus mit ja zu beantworten. Zwar ist jetzt ein Bezug zum Wetter schwer herzustellen (vielleicht hat ja während der letzten 45 Minuten die Sonne zu scheinen begonnen=, aber trotzdem
kann ich hierzu anmerken, dass mir vor dieser Prüfung bewusst wurde, dass es ein Leben vor
dem Tod gibt (und zwar durch die Kälte und Nässe auf dem Weg hierher).
– (Christoph Rissner): Wenn man an ein Leben nach dem Tod glaubt, so ist die Gesamtzahl
der Leben nach dem Tod viel grösser als jedes Leben vor dem Tod. Daraus schliesse ich: Nein
(uabh. vom Wetter)
– (Bernhard Tatzmann): Auf Grund der anhaltenden Regenfälle der letzten Tage ist zur Zeit ein
Leben vor dem Tod nur in eingeschränkter Form möglich Zu dieser Jahreszeit beschränkt sich
dann das Leben vor dem Tod auf Internetsurfen und DVD-Schauen. Vorhanden ist es aber in
jedem Fall auch wenn man es nicht immer bemerkt, da sich die Menschen dann in ihre Häuser
zurückziehen.
Viel offensichtlicher wird es an sonnigen Herbsttagen. Dann strotzt die Stadt nur so von
“Leben vor dem Tod”.
KAPITEL 10. PRÜFUNGSFRAGEN
170
• Bonusfrage: Welche neue Prüfungsfrage sollte bei der nächsten Prüfung von Multimediale Informationsysteme gestellt werden?
Bonus Question: Which new question should be asked at the next exam of Multimedia Informationsystems?
[06.11.2002]
Originelle Antworten:
– (Helfried Tschemmernegg): (aus aktuellem Anlass): Beschreibe eine Möglichkeit, die teilweise
polaren Temperaturen in den Hörsälen i11 - i13 auf ein angenehmes Niveau zu heben (unter
Berücksichtigung extrem begrenzter finanzieller Mittel :-) bzw. beschreibe einen Workaround,
um trotz dieser Temperaturen nicht krank zu werden.
Ernsthafter: Welches Grundprinzip taucht sowohl bei verlustbehafteter Audio- als auch Bild/VideoKompression immer wieder auf (Lsg: Beschneiden des Frequenzspektrums)
– (Martin Lechner): Sie haben ein WAP fähiges Handy mit üblicher Bildschirmauflösung (200
x 100). Wozu wollen Sie ins Internet?
– (Christoph Mayr): Welche 7 Fragen möchten sie nicht beantworten um mit einer schlechten
Antwort der verbleibenden achten Frage trotzdem die volle Punktezahl zu erreichen?
– (Gerd Wurzer): Ist mir eigentlich wurscht, weil ich hoff, dass i net dabei sein werd. Oba
wennst scho frogst sprich i mi eineutig dir a lustigere Bonusfrage aus! Woswasi, sowia bilden
sie die Quersumme der aus allen Ziffern auf dem Angabeblatt bestehende Zahl.
Is gor net so wenig, I glaub 117.
– (Christoph Herbst): Bei der Beantwortung dieser Frage werde ich mich wohl zurückhalten
müssen, um nicht von meinen Komilitonen für neue Fragen verantwortlich gemacht zu werden.
Das könnte ja zur vituellen Steinigung in news.tugraz.flames führen und das versuche ich zu
vermeiden.
• Bonusfrage: Vergleichen Sie die die Flugeigenschaften von Christkind und Weihnachtsmann. Berücksichtigen Sie dabei auch die Glühweinstandln, die auf dem Weg liegen.
Bonus Question (sorry, very hard to translate this time: Vergleichen Sie die die Flugeigenschaften
von Christkind und Weihnachtsmann. Berücksichtigen Sie dabei auch die Glühweinstandln, die auf
dem Weg liegen.
[16.12.2002]
Originelle Antworten:
– (Andreas Kresitschnig): Ich glaube, dass das Christkind die besseren Flugeigenschaften hat.
∗ kleiner, beweglicher, ... ist ja noch ein Kind
∗ Kinder bekommen nur den Kinderpunsch
∗ Christkind ist für mich weiblich, und Frauen haben sowieso mehr Gefühl ⇒ auch beim
Fliegen!
∗ Ausserdem hat der Weihnachtsmann keine windschlüpfrige Kleidung! Das Christkind hat
nur ein Seidenkleid → keinen “Reibungs”Verluste in der Luft.
– (Katrin Amlacher): Unter Berücksichtigung dvon Glühweinständen, hat eindeutig der Weihnachtsmann die besseren Karten. Erstens verträgt er dank seiner Leibesfülle sehr viel des
Getränks und zweitens ist der Weihnachtsmann nicht selbst für die Navigation zuständig. Er
muss nur sicherstellen, dass seine Rentiere nichts zu trinken bekommen. Allerdings könnte
die Trefferquote der Schornsteine besorgniserregend sinken. Da das Christkind nur spärlich
bekleidet ist, ist eine zusätzliche Wärmequelle von Vorteil. Leider ist das Christkind für die
Navigation selbst verantwortlich, was Bäume, Antennen und dergleichen zum ernsthaften Problem machen.
– (Werner Rohrer): Die Flugeigenschaft beim Christkind ist auf jeden Fall besser als beim
Weihnachtsmann, bei dem sich der Wind im Bart verfängt. [...] Da ich mich nicht mehr
entsinnen kann, ob mehr Weihnachtsmänner oder Christkinder am Glühweinstand zu finden
waren, werde ich diese Erkundung sofort einholen.
KAPITEL 10. PRÜFUNGSFRAGEN
171
– (Christoph Fröschl): Aufgrund starten Treibens am 24 in den Einkaufszentren (wo auch die
Glühweinstandln sind) hat der Weihnachtsmann mit seinem überdiemensionalem Fluggerät
sicher Platz- bzw. Parkprobleme. Ich halte das Christkind sowieso für in der Evolution einen
Schritt weiter (siehe Fluggeräte, bzw. Sichtbarkeit).
– (Wolfgang Fiedler): Es müsste ja heissen “Flugeigenschaften von Christkind und Rentierschlitten”, weil der Weihnachtsmann nicht fliegen kann! (Viel zu schwer, grosser Sack (eh klar, wenn
er nur einmal im Jahr “kommt”! :), keine Flügel, ...)
• Bonusfrage: Was würde eine Schneeflocke sagen, wenn sie sprechen könnte. Beschreiben Sie im
Speziellen auch die Aussagen von Schneeflocken in Adelboden (z.T. aus Frankreich importiert)
nach dem Comeback von Hermann Maier.
Bonus Question: What would a snow flake tell you, if it could speak. Also describe the particulary
case of snow flakes in Adelboden (partially imported from France) after the comeback of Hermann
Maier (world famous Austrian skier, who had a motorcycle accident 22 months ago. In his first
reace yesterday in Adelboden he was 3 seconds behind).
[15.01.2003]
Originelle Antworten:
– (Bernhard Rettenbacher): Ihr könnt mir den Buckel runterrutschen.
– (Konrad Lanz): Dieser Tage kommen wir alle unter die Räder und jeder rutscht auf uns herum.
Aber der Hermann ist auch ohne Schnee gerutscht und trotzdem rutscht auch er auf uns herum.
Naja, französische Schneeflocke müsste man sein, da hat man dann seine Ruhe.
– (Carlos Schady): I live in Madrid so if I ever come to meed a snow flake and s/he could talk
to me, s/he would say “I’m melting!!!”.
– (Alexander Hubmann): Ich schätze mal wenig. Sie ist ja schliesslich beschäftigt, mit den
Zähnen zu klappern und zu frieren. Haben ja schliesslich wenig an, die armen Dinger. Und
wenn sie sich dann aneinander kuscheln und ihnen endlich warm wird, tauen sie im wahrsten
Sinne des Wortes auf.
– (Martin Antenreiter): Beim Schneefall: “AAAAHHHHHHH!”, in Adelboden, nachdem Hermann Maier über sie gefahren ist: “AUA, AUA, ... merde”.
– (Wolfgang Schriebl):
class Schneeflocke extends MMIS
{
public void say()
{
switch(weather_)
{
case(bombastic_freezy):
println("Schön ist es auf der Welt zu sein.");
break;
case(let_the_water_freeze):
println("Naja, gerade noch im Mass.");
break;
case(se_big_comeback_or_the_great_herminator):
println("Es kann nur einen geben. I’ll be back");
break;
}
}
}
– (Roland Pierer): “Monsieur Maier? Je ne connais pas Maier! Je prefere Luc Alphaud! Mon
Dieu, les Autrichiens sont victorieux tout les temps.”
– (Johannes Fellner): Eine Schneeflocke zur anderen: “Host in Hermann heit obi schiassn gsegn?
I glaub, der wird wieda ganz wie früha!” - “Is eh gscheida, weil den Sotz ’gemma zu dir oder
zu mir’ aus der Raiffeisen-Werbung hot eh kana mehr auskoitn”
KAPITEL 10. PRÜFUNGSFRAGEN
172
– (Stefan Achleitner): “Quelle dommage!”
– (Marco Sergio Andrade Leal Camara): From my point of view, it is very good that hte snow
flakes do not talk, because there are so many of them, if all would talk, not even our brainquality of selecting the sound would saves us from getting crazy. Besides that, they would
always complain becasue they are falling, because they are stepped over, that someone is
throwsing them, because they lost identity on the gig white, because it’s cold, because it’s hot
and they are melting.
Hermann Maier did his training in South America, where the snow flakes are speaking spanish.
Now he has a big communication problem with the french speaking snow flakes. He has to
improve his snow flake language!
– (Georg Varlamis): Flokke Götte mit erhobener Faust:
Habe nun, ach
Wolke, Himmel und leider auch SMOG
duchaus passiert mit heissem Bemühn
da lieg ich nun, ich arme Flocke,
plattgedrückt, von Hermanns Hocke...
Dialog mit Sohn Jacques:
Ich lag nun da, bei Eis und Wind
getrennt von Vater Flokkenkind
ich hatt’ mein’ Knaben wohl im Arm
er war sehr sicher, es war nicht warm.
Mein Sohn, was birgst du so bang dein Gesicht
siehst Vater du den Hermann nicht?
den Hermann Maier mit schiefem Bein?
Mein Sohn, er wirds nur einmal sein
- denn musst du, willst du zwei mal fahren
sein kleiner 30 - vom Platz, nicht Jahren!
– (Kurt Köstenbauer): Ich mag im nächsten leben eine medizinische Schraube sein.
– (Andreas Nebenführ):
Schneeflöckchen: “Asta Lavista Baby”
Herminator: “I’ll be back!”
– (Johannes Rainer): Was gehen mich Ermann Maiar an, diese dreckige Schüft, machen Werbung
für Milka Ice Schokolade, woe er doch genaus wissen, Schokolade aus Fronsee sein viel bässer.
...
• Bonusfrage: Welchen Titel könnte ein würdiges Nachfolgelied (2004) des heurigen Song-ContestLieds von Alf Poier haben?
• Bonus Question: What is missing in the Cultural Capital of Europe 2003 (Graz :-)?
[18.03.2003]
Originelle Antworten:
– (Daniel Blazej): Hansi Hinterseer singt in Pelz-Moonboots “Weil das Tier zählt”.
– (Christian Kargl): Von 2004 bis 2014 wird Ö vom Song Contest wegen Beleidigung der Grundidee ausgeschlossen.
– (Ewald Griesser): Wenn man letzter wird, braucht man sich um ein Nachfolgelied 2004 sowieso
keine Gedanken machen.
– (Florian Heuberger): “84 Jahre auf dem Buckel - surft schon fest mit Googel (!)” (Ähnlichkeiten mit Ihrer Grossmutter (die ja nicht zu altern scheint1 ), sind natürlich weder gewollt noch
zufällig.
1 obwohl
1 21 Jahre zwischen Prüfungen war sie immer 82?
KAPITEL 10. PRÜFUNGSFRAGEN
173
– (Johann Konrad): ... Es wäre mal Zeit für was typisch österreichisches! z.Bsp.: Walzer
verpackt in Techno oder Rock, oder eine neue Interpretation des Radetzkymarsches :-)
– (MIchael Ebner): Bei einem kühlen Blonden im Parkhaus ist mir ziemlich egal, was da gesungen wird :-)
– (Philipp Berglez): Titel für Alf Poier: “Stille” oder “Wer wählt mich”
– (Martin Bachler): Nächstes Jahr muss von allen Interpreten die amerikanische Bundeshymne
gesungen werden...
– (Markus Quaritsch): Wir werden mit dem heurigen Lied sicher 2004 nicht Teilnehmer sein.
Titel für den Song-Contest 2005 “Des is da ’Warum die Österreicher immer letzter werden’
Blues” so auf die Art von Hans Söllner vielleicht??
– (Christoph Thumser): Ich hab leider ein Problem, der Name “Alf Poier” sagt mir nichts, da
ich aber vermute, dass der Name aus der Schlagerszene kommt. Aber ich hab einen Freund,
mit dem ich neulich mal gefrühstückt hab, und der ist ein ziemlicher Folklore-Mensch. Und als
er dann die von meiner Mutter selbstgemachte Marmelade gekostet hat, sagte er “Do schmeckt
ma die Sun aussa!”
– (Markus Geigl): Nicht nur den Titel, sondern den ganzen Text hab ich schon im Kopf! Ein
kleiner Auszug:
Hey Du, Ti Amo!
Strophe:
Es war Sommer, die rote Sonne versank im Meer,
ich saß allein und du kamst einfach zu mir her,
wie lange hab’ echte Liebe ich vermißt!
und wie der Sommerwind hast du mich dann geküßt!
Refrain:
Hey Du, ti amo, ich liebe Dich!
Hey Du, ti amo, vergiß mich nicht!
Der Sommer mit Dir war so schön!
Warum nur, musstet Du gehn?
usw., usf.
Dieser Text unterliegt natuerlich noch strengster Geheimhaltung! Außerdem untersteht der
dem Urheberecht!
– (Daniel Gander): Ich hätte mir nicht erwartet, dass die Bonusfrage die einzige ist, die ich nicht
beantworten kann. Wie lautet denn der Titel von heuer?
– (Christian Mayrhuber): Nach dem heurigen Song Contest wird von allen teilnehmenden Staaten anerkannt, dass dieser sinnlos ist und es gibt keinen Song Contest 2004. ...
– (Gerald Eigenstuhler): “Oh du peinliches Österreich”
– (Ranub Dalkouhi): Der wohl passendste Titel ob der aktuellen Umwelt und Kriegssituation
wäre: “Weil der Mensch sich verrechnet hat!” (Hoffentlich hab ich mich nicht verrechnet :-)
– (Christian Kirchstätter): ... Wenn wir aber gewinnen wollen, dann müssen wir auf altbewährtes mit einem österreichischen Touch setzen. Udo Jürgens hat schon einmal gewonnen, eines
seiner Lieder ist “Griechischer Wein”. Treten wir mit “Wou, ist der steirische Wein gut, Wuff
Wuff” an.
– (Philipp Fürnstahl): Liedtitel “Ich muss heim, weil jetzt meine Putzfrau kommt!”
Wenig kreativ, aber wahr...
• Bonusfrage: Warum wollen gerade Sie (und sonst niemand) mit Hilfe dieser Bonusfrage Bonuspunkte bekommen?
Bonus Question: Why do you (just you and nobody else) want to get some bonus points for this
bonus question?
[22.05.2003]
Originelle Antworten:
KAPITEL 10. PRÜFUNGSFRAGEN
174
– (Hannes Wornig): 8930496
– (Heim Schwarzenbacher): Weil ich weiß, dass ich es bei Armin Assinger bei der Einstiegsfrage
nicht schaffe um damit auf den heißen Stuhl zu kommen und wenigstens dort 1 Million Euro
abzuräumen.
– (Michael Grabner): Sollte ich wirklich punkten, so möchte ich mein Punkte an Alf Poier
weitergeben.
– (Florian Fleck): Wenn es wirklich so ist, dass nur eine Person die Vorteile der Bonusfrage genießen wird, dann sollte es nicht ich sein. Ich bin glaube ich zwar schon “Prüfungsverzweifelt”,
aber es scheint mir im Raum doch noch einige andere zu geben, die noch verzweifelter als ich
sind.
Außerdem bin ich ein positiv denkender Mensch und hoffe nicht auf die Bonusfrage angewiesen
zu sein.
– (Thomas Krajacic): Warum wollen Sie, (und nur Sie) das wissen?
– (Franz Einspieler): Wenn nicht ich, wer dann?
– (Gerald Krammer): In dubio pro reo
– (Wolfgang Wagner): Nach 30min Nachdenken, bin ich zum Schluss gekommen, dass ich so sehr
einfallslos und fantasielos bin, mir keine vernünftige Antwort einfällt, und daher Bonuspunkte
eigentlich überhaupt nicht verdiene.
Also bleibt nur ein Grund, warum ich vielleicht doch 1-2 Pünktchen bekommen sollte: MITLEID
– (Bernhard Schütz):
1. Weil ich es diesmal (2ter Versuch für MMIS) zu 100% ohne Abschreiben und Schummeln
probiert habe.
2. WEil die Punkte sicher wichtig sind für eine positive Note.
3. WEil mich Günther Laure und Wolfgang Lazian (Telematiker) noch 2 Monate aufziehen,
wenn ich MMIS wieder nicht pack.
4. Weil Sowieso.
5. Warum “Thanks for the Fish”, ist das so einer, der an der Wand hängt, sich bewegt und
“don’t worry, be happy” singt?
[...]
– (Katharina Seke): Weil unter den Leuten, die hier mit mir im HSi12 sitzen und die MMIS
Prüfung schreiben, keiner soviel Angst vor der Bonusfrage hat wie ich. Da die Bonusfrage
hauptsächlich Ihrer und meiner Unterhaltung dient, kann ich es trtzdem schaffen mir das
Lachen zu verkneifen (harte Arbeit) und nicht wie verrückt am BOden herumzukugeln.
Außerdem habe ich Kaffee über genau diejenigen Seiten des Skriptums geschüttet, auf denen
MPEG2, MPEG4 und MPEG7 erklärt wurde. Das hat auch noch den Hund meiner Nachbarin
dazu bewegt, diese Zettel zu fressen. Deshalb konnte ich das nicht lernen und kann nun die
Bonuspunkte gut gebrauchen. (Und es ist sicher keiner außer mir so arm!)
– (Stefan Mendel): Weil ich auch Douglas Adams Fan bin.
– (Jürgen Bachler): Weil ich sie nicht mit Fisch bestochen hab (Wie es scheinbar andere Adressaten getan haben).
– (Helfried Traussnigg): Fallunterscheidung
1. alle anderen sind besser als ich (worst case) → offensichtlich braucht sie dann keiner
dringender als ich.
2. alle anderen sind schlechter als ich (best case)
p(x) = 0 → irrelevant
– (Reinhold Schmidt): Ich hab für die Bonusfrage eineinhalb mal so viel Zeit investiert, wie für
die richtigen Fragen.
– (Christian Ropposch): Bonuspunkte für alle!
– (Christoph Bouvier): Ich glaub ich war als erster fertig! Außerdem hat ganz bestimmt niemand
außer mir das Skriptum gelesen!
KAPITEL 10. PRÜFUNGSFRAGEN
175
– (Alexander Gütler):
1
1. ∃ Bonusfrage
1
2. ∃ Punkt für die Bewertung der Bonusfrage
3. ∀ Student ⊆ Matrikelnummer=”9231666”
⇒ #Bonuspunkte++
• Bonusfrage: (diesmal wieder rekursiv!) Bilden Sie eine inoffizielle rekursive Definition für MMIS
Abkürzung!
Bonus Question: (recursive again!) Provide an nonoffical recursive definiton for MMIS abbreviation!
Anhang A
MP3 Hörtest
Für den mp3-Hörtest wurden verschiedene Teile von Musikstücken von CD in mp3-Dateien codiert.
Ein gute Mischung aus verschiedenen Musikstilen wurde gegenüber einer akademischen Klanganalyse
bevorzugt.
Folgende Stücke wurden verwendet:
• Eric Clapton, Unplugged, “Before You Accuse Me”
• Ludwig van Beethoven, Symphonie Nr. 5, “1. AllegRo Con Brio”
• Bill Whelan, Riverdance, “Firedance” (Kastagnetten)
• Ugly Kid Joe, America’s least wanted, “Neighbor”
• Queen, Jazz, “Bicycle Race”
• Klassische Sagen des Altertums, erzählt von Michael Köhlmeier
• Oscar Peterson, Digital at Montreux, “Soft Winds”
Jedes Stück wurde als WAV-File auf die Festplatte gerippt und dann mit Hilfe von lame in verschiedene
mp3-dateien codiert. Es wurden verschiedene Bitraten, Variable Bit Rate (VBR) und verschiedene StereoVarianten (stereo, joint-stereo, force stereo) verwendet. Danach wurden sämtliche Stücke mit Hilfe des
Diskwriter Plugins des mp3-players XMMS1 ins WAV-Format konvertiert und mit WinOnCD 3.7 als
Audio-CD gebrannt.
Tabelle A.1 zeigt die daraus entstandenen Dateien und ihre Grössen.
Es wurde cdda2wav und lame (Version 3.86) verwendet. Die genaue Commandline geht aus folgendem
Text hervor:
# -----------------------------------------------------------# oscar peterson, digital in montreux, soft winds (track2)
# ripped with:
cdda2wav -D 0,3,0 -q -x -H -t 2 -d 42 -O wav oscar_peterson-soft_winds.wav
# 256kbit mp3 / joint stereo:
lame -h -p -b 256 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_256kb.mp3
# 192kbit mp3 / joint stereo:
lame -h -p -b 192 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_192kb.mp3
# 128kbit mp3 / joint stereo:
lame -h -p -b 128 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_128kb.mp3
# 64kbit mp3 / joint stereo:
lame -h -p -b 64 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_64kb.mp3
# 32kbit mp3 / joint stereo:
lame -h -p -b 32 oscar_peterson-soft_winds.wav oscar_peterson-soft_winds_32kb.mp3
# -----------------------------------------------------------# queen, jazz, bicycle race
cdda2wav -D 0,3,0 -q -x -H -t 4 -o 6505 -d 50 -O wav queen-bicycle_race.wav
1 http://www.xmms.org
176
ANHANG A. MP3 HÖRTEST
# 128kbit mp3, joint stereo
lame -h -m j -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_jointstereo.mp3
# 128kbit mp3, stereo
lame -h -m s -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_stereo.mp3
# 128kbit mp3, force stereo
lame -h -m f -p -b 128 queen-bicycle_race.wav queen-bicycle_race_128kbit_forcestereo.mp3
# 256kbit mp3, stereo
lame -h -m f -p -b 256 queen-bicycle_race.wav queen-bicycle_race_256kbit_stereo.mp3
# 256kbit mp3, joint stereo
lame -h -m f -p -b 256 queen-bicycle_race.wav queen-bicycle_race_256kbit_jointstereo.mp3
# 32kbit mp3, stereo
lame -h -m f -p -b 32 queen-bicycle_race.wav queen-bicycle_race_32kbit_stereo.mp3
# 32kbit mp3, joint stereo
lame -h -m f -p -b 32 queen-bicycle_race.wav queen-bicycle_race_32kbit_jointstereo.mp3
# -----------------------------------------------------------# beethoven, symphonie nr.5, 1.satz
cdda2wav -D 0,3,0 -q -x -H -t 1 -d 60 -O wav beethoven-symph5.wav
# 256kbit mp3
lame -h -h -p -b 256 beethoven-symph5.wav beethoven-symph5_256kbit.mp3
# 192kbit mp3
lame -h -h -p -b 192 beethoven-symph5.wav beethoven-symph5_192kbit.mp3
# 128kbit mp3
lame -h -h -p -b 128 beethoven-symph5.wav beethoven-symph5_128kbit.mp3
# 64kbit mp3
lame -h -h -p -b 64 beethoven-symph5.wav beethoven-symph5_64kbit.mp3
# vbr min 64kbit mp3
lame -v -p -b 64 beethoven-symph5.wav beethoven-symph5_64kbit_vbr.mp3
# vbr min 128kbit mp3
lame -v -p -b 128 beethoven-symph5.wav beethoven-symph5_128kbit_vbr.mp3
# -----------------------------------------------------------# riverdance, firedance (kastagnetten)
cdda2wav -D 0,3,0 -q -x -H -t 6 -o 10330 -d 52 -O wav riverdance-firedance.wav
# 256kbit mp3
lame -h -p -b 256 riverdance-firedance.wav riverdance-firedance_256kbit.mp3
# 192kbit mp3
lame -h -p -b 192 riverdance-firedance.wav riverdance-firedance_192kbit.mp3
# 128kbit mp3
lame -h -p -b 128 riverdance-firedance.wav riverdance-firedance_128kbit.mp3
# 64kbit mp3
lame -h -p -b 64 riverdance-firedance.wav riverdance-firedance_64kbit.mp3
# 32kbit mp3
lame -h -p -b 32 riverdance-firedance.wav riverdance-firedance_32kbit.mp3
# 256kbit mp3 vbr
lame -v -p -b 256 riverdance-firedance.wav riverdance-firedance_256kbit_vbr.mp3
# 192kbit mp3 vbr
lame -v -p -b 192 riverdance-firedance.wav riverdance-firedance_192kbit_vbr.mp3
# 128kbit mp3 vbr
lame -v -p -b 128 riverdance-firedance.wav riverdance-firedance_128kbit_vbr.mp3
# -----------------------------------------------------------# michael köhlmeier, klassische sagen des altertums, track 1
cdda2wav -D 0,3,0 -q -x -H -t 1 -o 875 -d 30 -O wav koehlmeier-sagen.wav
# 256kbit mp3
lame -h -p -b 256 koehlmeier-sagen.wav koehlmeier-sagen_256kbit.mp3
# 192kbit mp3
lame -h -p -b 192 koehlmeier-sagen.wav koehlmeier-sagen_192kbit.mp3
# 128kbit mp3
lame -h -p -b 128 koehlmeier-sagen.wav koehlmeier-sagen_128kbit.mp3
# 64kbit mp3
lame -h -p -b 64 koehlmeier-sagen.wav koehlmeier-sagen_64kbit.mp3
# 32kbit mp3
lame -h -p -b 32 koehlmeier-sagen.wav koehlmeier-sagen_32kbit.mp3
# 192kbit mp3 vbr
lame -v -p -b 192 koehlmeier-sagen.wav koehlmeier-sagen_192kbit_vbr.mp3
# 128kbit mp3 vbr
lame -v -p -b 128 koehlmeier-sagen.wav koehlmeier-sagen_128kbit_vbr.mp3
# 64kbit mp3 vbr
lame -v -p -b 64 koehlmeier-sagen.wav koehlmeier-sagen_64kbit_vbr.mp3
# -----------------------------------------------------------# ugly kid joe, neighbor
cdda2wav -D 0,3,0 -q -x -H -t 1 -d 42 -O wav ugly_kid_joe-neighbor.wav
# 256kbit mp3
lame -h -p -b 256 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_256kbit.mp3
# 192kbit mp3
lame -h -p -b 192 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_192kbit.mp3
# 128kbit mp3
lame -h -p -b 128 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_128kbit.mp3
# 64kbit mp3
lame -h -p -b 64 ugly_kid_joe-neighbor.wav ugly_kid_joe-neighbor_64kbit.mp3
177
ANHANG A. MP3 HÖRTEST
# -----------------------------------------------------------# eric clapton, unplugged, before you accuse me
cdda2wav -D 0,3,0 -q -x -H -t 2 -d 60 -O wav clapton-unplugged-before_you_accuse_me.wav
# 256kbit
lame -h -p -b 256 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_256kbit.mp3
# 192kbit
lame -h -p -b 192 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_192kbit.mp3
# 128kbit
lame -h -p -b 128 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_128kbit.mp3
# 64kbit
lame -h -p -b 64 clapton-unplugged-before_you_accuse_me.wav clapton-unplugged-before_you_accuse_me_64kbit.mp3
178
ANHANG A. MP3 HÖRTEST
Nr
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Titel
beethoven-symph5.wav
beethoven-symph5 128kbit.mp3
beethoven-symph5 128kbit vbr.mp3
beethoven-symph5 192kbit.mp3
beethoven-symph5 256kbit.mp3
beethoven-symph5 64kbit.mp3
beethoven-symph5 64kbit vbr.mp3
clapton-unplugged-before you accuse me.wav
clapton-unplugged-before you accuse me 128kbit.mp3
clapton-unplugged-before you accuse me 192kbit.mp3
clapton-unplugged-before you accuse me 256kbit.mp3
clapton-unplugged-before you accuse me 64kbit.mp3
koehlmeier-sagen.wav
koehlmeier-sagen 128kbit.mp3
koehlmeier-sagen 128kbit vbr.mp3
koehlmeier-sagen 192kbit.mp3
koehlmeier-sagen 192kbit vbr.mp3
koehlmeier-sagen 256kbit.mp3
koehlmeier-sagen 32kbit.mp3
koehlmeier-sagen 64kbit.mp3
koehlmeier-sagen 64kbit vbr.mp3
oscar peterson-soft winds.wav
oscar peterson-soft winds 128kb.mp3
oscar peterson-soft winds 192kb.mp3
oscar peterson-soft winds 256kb.mp3
oscar peterson-soft winds 32kb.mp3
oscar peterson-soft winds 64kb.mp3
queen-bicycle race.wav
queen-bicycle race 128kbit forcestereo.mp3
queen-bicycle race 128kbit jointstereo.mp3
queen-bicycle race 128kbit stereo.mp3
queen-bicycle race 256kbit jointstereo.mp3
queen-bicycle race 256kbit stereo.mp3
queen-bicycle race 32kbit jointstereo.mp3
queen-bicycle race 32kbit stereo.mp3
riverdance-firedance.wav
riverdance-firedance 128kbit.mp3
riverdance-firedance 128kbit vbr.mp3
riverdance-firedance 192kbit.mp3
riverdance-firedance 192kbit vbr.mp3
riverdance-firedance 256kbit.mp3
riverdance-firedance 256kbit vbr.mp3
riverdance-firedance 32kbit.mp3
riverdance-firedance 64kbit.mp3
ugly kid joe-neighbor.wav
ugly kid joe-neighbor 128kbit.mp3
ugly kid joe-neighbor 192kbit.mp3
ugly kid joe-neighbor 256kbit.mp3
ugly kid joe-neighbor 64kbit.mp3
179
Dateigrösse
10584044
960470
996725
1440705
1920940
480026
914135
10584044
960470
1440705
1920940
480026
5292044
480653
507975
720979
720213
961306
119954
240117
388568
7408844
672496
1008744
1344992
168019
336039
8820044
800391
800391
800391
1600783
1600783
199993
199993
9172844
832574
1033566
1248862
1310335
1665149
1664364
207934
416078
7408844
672496
1008744
1344992
336039
Tabelle A.1: Musikstücke und ihre Filegrössen im Vergleich zu mp3-komprimierten Dateien
Anhang B
Abkürzungsverzeichnis
ARPA . . . . . . . . Advanced Research Projects Agency
ASCII . . . . . . . . American Standard Code for Information Interchange
ASP . . . . . . . . . . Active Server Pages
see also the glossary entry for ☞CGI
CGI . . . . . . . . . . . Common Gateway Interface
CSS . . . . . . . . . . . Cascaded Style Sheet
DARPA. . . . . . . Defense Advanced Research Projects Agency
see also the glossary entry for ☞DNS
DNS . . . . . . . . . . Domain Name System
DOM . . . . . . . . . Document Object Model
(DOM)
see also the glossary entry for ☞Document Object Model
DTD . . . . . . . . . . Document Type Definition
DVD . . . . . . . . . . Digital Versatile Disc
FO . . . . . . . . . . . . Formatting Objects
FTP . . . . . . . . . . File Transfer Protocol
see also the glossary entry for ☞FTP
GPL . . . . . . . . . . General Public Licence
HTML . . . . . . . . HyperText Markup Language
see also the glossary entry for ☞HTML
HTTP . . . . . . . . HyperText Transfer Protocol
see also the glossary entry for ☞HTTP
IAB . . . . . . . . . . . Internet Architecure Board
IETF . . . . . . . . . Internet Engineering Task Force
IP . . . . . . . . . . . . . Internet Protocol
see also the glossary entry for ☞IP
ISOC . . . . . . . . . Internet Society
JSP . . . . . . . . . . . Java Server Pages
NDA . . . . . . . . . . Non Disclosure Agreement
NNTP . . . . . . . . Network News Transfer Protocol
see also the glossary entry for ☞NNTP
NSF. . . . . . . . . . . National Science Foundation
POP3 . . . . . . . . . Post Office Protocol Version 3
see also the glossary entry for ☞POP3
RFC . . . . . . . . . . Request For Comment
180
ANHANG B. ABKÜRZUNGSVERZEICHNIS
181
RLE . . . . . . . . . . Run Length Encoding
RTF . . . . . . . . . . Rich Text Format
SGML . . . . . . . . Standard Generalized Markup Language
SMIL . . . . . . . . . Synchronized Multimedia Integration Language
SMTP . . . . . . . . Simple Mail Transfer Protocol
see also the glossary entry for ☞SMTP
SOAP . . . . . . . . . Simple Object Access Protocol
see also the glossary entry for ☞SOAP
TCP . . . . . . . . . . Transmission Control Protocol
see also the glossary entry for ☞TCP
TCP/IP . . . . . . Transmission Control Protocol/Internet Protocol
VM . . . . . . . . . . . Virtual Machine
see also the glossary entry for ☞TCP/IP
see also the glossary entry for ☞Virtual Machine (VM)
WAIS . . . . . . . . . Wide Area Information Server
see also the glossary entry for ☞WAIS
WAP . . . . . . . . . . Wireless Application Protocol
WML . . . . . . . . . Wireless Markup Language
WWW . . . . . . . . World Wide Web
see also the glossary entry for ☞WWW
XML . . . . . . . . . . eXtensible Markup Language
XSL . . . . . . . . . . . eXtended Stylesheet Language
XSLT . . . . . . . . . XSL Transformations
see also the glossary entry for ☞XML
Anhang C
Glossar
C: A high-level programming language developed by Dennis Ritchie and Brian Kernighan at Bell Labs
in the mid 1970s. Although originally designed as a systems programming language, C has proved
to be a powerful and flexible language that can be used for a variety of applications, from business
programs to engineering.
C++: A high-level programming language developed by Bjarne Stroustrup at Bell Labs. C++ adds
object-oriented features to its predecessor ☞C. C++ is one of the most popular programming
language for graphical applications, such as those that run in Windows, ☞UNIX, and Macintosh
environments.
CGI: Common Gateway Interface A specification for transferring information between a World Wide
Web server and a CGI program. A CGI program is any program designed to accept and return
data that conforms to the CGI specification. The program could be written in any programming
language, including ☞C, ☞PERL, or ☞Java.
DNS: Domain Name System An Internet service that translates domain names into IP addresses.
Because domain names are alphabetic, they’re easier to remember. The Internet however, is really
based on IP addresses. Every time you use a domain name, therefore, a DNS service must translate
the name into the corresponding IP address. For example, the domain name www.example.com
might translate to 198.105.232.4.
Document Object Model (DOM): An application programming interface for HTML and XML
documents. It defines the logical structure of documents and the way a document is accessed and
manipulated. With the Document Object Model programmers can build documents, navigate their
structure, and add, modify, or delete elements and content.
FTP: File Transfer Protocol The protocol used on the Internet for sending files.
HTML: HyperText Markup Language The authoring language used to create documents on the WWW.
HTTP: HyperText Transfer Protocol The underlying protocol used by the WWW. HTTP defines how
messages are formatted and transmitted, and what actions Web servers and browsers should take in
response to various commands. For example, when you enter a URL in your browser, this actually
sends an HTTP command to the Web server directing it to fetch and transmit the requested Web
page.
IP: Internet Protocol IP specifies the format of packets, also called datagrams, and the addressing
scheme. Most networks combine IP with a higher-level protocol called TCP, which establishes a
virtual connection between a destination and a source. IP by itself is something like the postal
system. It allows you to address a package and drop it in the system, but there’s no direct link
between you and the recipient. TCP/IP, on the other hand, establishes a connection between two
hosts so that they can send messages back and forth for a period of time.
182
ANHANG C. GLOSSAR
183
Java: A high-level programming language developed by Sun Microsystems. It is an object-oriented
language similar to ☞C++, but simplified to eliminate language features that cause common programming errors. Java source code files are compiled into a format called bytecode, which can
then be executed by a Java interpreter. Compiled Java code can run on most computers because
Java interpreters and runtime environments, known as Java Virtual Machines (VMs), exist for most
operating systems, including UNIX, the Macintosh OS, and Windows.
NNTP: Network News Transfer Protocol The protocol used to post, distribute, and retrieve Usenet
messages.
parse: to analyze (a string of characters) in order to associate groups of characters with the syntactic
units of the underlying grammar.
PERL: Practical Extraction and Report Language A programming language developed by Larry Wall,
especially designed for processing text. Because of its strong text processing abilities, Perl has
become one of the most popular languages for writing CGI scripts. Perl is an interpretive language,
which makes it easy to build and test simple programs.
POP3: Post Office Protocol Version 3 A protocol used to retrieve e-mail from a mail server.
SMTP: Simple Mail Transfer Protocol A protocol for sending e-mail messages between servers
SOAP: Simple Object Access Protocol An XML/HTTP-based protocol to exchange information between computers. This may vary from the simple exchange of messages to remote procedure calls.
Used by Microsoft in .NET.
TCP: Transmission Control Protocol TCP is one of the main protocols in TCP/IP networks. Whereas
the IP protocol deals only with packets, TCP enables two hosts to establish a connection and
exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will
be delivered in the same order in which they were sent.
TCP/IP: Transmission Control Protocol/Internet Protocol
used to connect hosts on the Internet.
The suite of communications protocols
TELNET: Telnet is a service which allows logging onto a remote computer on the Internet. Telnet
provides a virtual terminal on the remote computer.
UNIX: A popular multi-user, multitasking operating systems developed at Bell Labs in the early 1970s.
Virtual Machine (VM): A self-contained operating environment that behaves as if it is a separate
computer. For example, Java applets run in a Java Virtual Machine.
WAIS: Wide Area Information Server A distributed information retrieval system.
WWW: World Wide Web A system of Internet servers that support specially formatted documents.
The documents are formatted in a language called HTML (HyperText Markup Language) that
supports links to other documents, as well as graphics, audio, and video files. This means you can
jump from one document to another simply by clicking on hot spots. Not all Internet servers are
part of the World Wide Web.
XML: eXtensible Markup Language A specification developed by the W3C1 . XML is a pared-down
version of SGML, designed especially for Web documents. It allows designers to create their own customized tags, enabling the definition, transmission, validation, and interpretation of data between
applications and between organizations.
1 http://www.w3c.org
Literaturverzeichnis
[Bau99]
Tilman Baumgärtel. Radarschirme für den Cyberspace - von Archie bis AltaVista - kurze
Geschichte der Suchmaschinen. c’t, 14:184ff, 1999.
[BBJ99]
Wilhelm Berghorn, Tobias Boskamp, and Klaus Jung. Schlanke Bilder - Der zukünftige
Bildkompressionsstandard JPEG 2000. c’t, 26, 1999.
[BBSS99] Wilhelm Berhorn, Tobias Boskamp, Steven Schönfeld, and Hans-Georg Stark. Winzig mit
Wavelets, Aktuelle Verfahren zur Bilddatenkompression. c’t, 26:186–197, 1999.
[BLFF96] T. Berners-Lee, R. Fielding, and H. Frystyk. RFC 1945: Hypertext Transfer Protocol —
HTTP/1.0, May 1996. Status: INFORMATIONAL.
[Bro00]
Brockhaus, editor. Der Brockhaus multimedial 2001 premium. Bibliographisches Institut &
F.A. Brockhaus AG, Mannheim, 2000.
[Bus45]
Vannevar Bush. As we may think. The Atlantic Monthly, 176(1):101–108, July 1945. available
online http://www.theatlantic.com/unbound/flashbks/computer/bushf.htm.
[CO99]
Matthias Carstens and Alexander Oberdörster. Frontalangriff, Internet-Audio und -Video:
Microsoft contra Apple und MP3. c’t, 10, 1999.
[CS01]
C.A. Christopoulos and A.N. Skondras. Jpeg2000 - the next generation still image compression
standard. Technical report, Ericsson Research Media Lab, April 2001. available online http:
//www.dsp.toronto.edu/~dsp/JPEG2000/.
[DZ01]
Alfred Decker and Markus Zoier. Aktuelle Digitale Videoformate. UE zur Vorlesung Multimediale Informationssysteme WS2001, 2000/2001.
[ea96]
Mark Adler et al. PNG (Portable Network Graphics) Specification. Technical report, W3C,
1996. available online http://www.w3.org/TR/REC-png.
[FGM+ 97] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, and T. Berners-Lee. RFC 2068: Hypertext
Transfer Protocol — HTTP/1.1, January 1997. Status: PROPOSED STANDARD.
[For99]
Harald Forstinger. Analyse gegenwärtiger Suchdienste und Konzepte für künftige Wissensauffindung. Master’s thesis, IICM, Graz University of Technology, June 1999. available online
http://www.iicm.edu/thesis/hforstinger.
[Hal00]
Mary Hall. Core Servlets and JavaServer Pages. Sun Microsystems Press/Prentice Hall PTR,
1st edition, 2000. see http://www.coreservlets.com or http://www.apl.jhu.edu/~hall/
java/Servlet-Tutorial/.
[Har00]
Eliotte Rusty Harold. XML Bible. IDG Books Worldwide, 2000. available online http:
//www.ibiblio.org/xml/books/bible/updates/14.html.
[Hen00]
Peter A. Henning. Taschenbuch Multimedia. Fachbuchverlag Leibzig, 2000.
[Hol00]
Andreas Holzinger. Basiswissen Multimedia, Band 1. Vogel Verlag, 2000.
[Jae00]
S. Jaeger. Legal oder illegal? Der rechtliche Status des DVD-Hackertools. c’t, 14:28, 2000.
184
LITERATURVERZEICHNIS
185
[K0̈0]
Kristian Köhntopp. Web-Baukasten - Data Driven Websites mit PHP. Linux-Magazin, 8:114–
120, 2000.
[KL86]
B. Kantor and P. Lapsley. RFC 977: Network news transfer protocol: A proposed standard for
the stream-based transmission of news, February 1986. Status: PROPOSED STANDARD.
[Küs95]
Heiner Küsters. Bilddatenkomprimierung mit JPEG und MPEG. Franzis, 1995.
[Len99]
Sven Lennartz. ch bin wichtig! - Promotion-Massnahmen für suchdienstgerechte Webseiten.
c’t, 23:180ff, 1999.
[Len01]
Sven Lennartz. Dynamsiche Seiten - Server Side Includes richtig einsetzen. c’t, 20:224–229,
2001.
[Lip97]
Thomas W. Lipp. Grafikformate. Microsoft Press, 1997.
[Lov00]
J. Lovischach. Formen mit Normen - Internet-Standards für Multimedia - nicht nur online.
c’t, 18:115, 2000.
[LZ02]
Christoph Laue and Volker Zota. Klangkompresssionen - MP3 und seine designierten Erben.
c’t, 19:102 – 109, 2002.
[M0̈2]
Henning Ml̈ler. Jäger des verlorenen Fotos - Das GNU Image Finding Tool fr̈ Linux in der
Praxis. c’t, 6:252–257, 2002.
[MR01]
Dr. Volker Markl and Frank Ramsak. Universalschlüssel - datenbankindexe in mehreren
dimensionen. c’t, 01:174–179, 2001.
[MvR96]
James D. Murray and William van Ryper. Encyclopedia of Graphics File Formats. O’Reilly
and Associates, Inc., 2nd edition, 1996.
[Nel92]
Theodor Holm Nelson. Litarary Machines 93.1. Mindful Press, 1992.
[otPC99]
Members of the Project Clever. Neue Pfade duch den Internet-Dschungel - Die zweite Generation von Web-Suchmaschinen. Spectrum der Wissenschaft, August 1999.
[Pie98]
Claudia Piemont. Ein lächeln fürs web - smil-eine sprache für multimedia-präsentationen im
web. c’t, 20, 1998.
[Pos80]
J. Postel. RFC 768: User datagram protocol, August 1980. Status: STANDARD. See also
STD0006.
[Pos81]
J. Postel. RFC 793: Transmission control protocol, September 1981. See also STD0007.
Status: STANDARD.
[PR85]
J. Postel and J. K. Reynolds. RFC 959: File transfer protocol, October 1985. Obsoletes
RFC0765. Updated by RFC2228 . Status: STANDARD.
[Ray]
Eric S. Raymond. The new hacker’s dictionary. available online http://earthspace.net/
jargon.
[Ric00]
Jeffrey Richter. Microsoft .net framework delivers the platform for an integrated, serviceoriented web. MSDN, September 2000. available online: http://msdn.microsoft.com/
msdnmag/issues/0900/Framework/Framework.asp.
[SGM86]
SGML international standard - iso8879, 1986.
[SH01]
Christiane Schulzki-Haddouti. Die suche nach Geld - Suchmaschinen: Platzierung gegen
Bares. c’t, 25:44, 2001.
[SK91]
T. J. Socolofsky and C. J. Kale. RFC 1180: TCP/IP tutorial, January 1991. Status: INFORMATIONAL.
[SMM01]
Nico Schulz, Simon McPartlin, and Uwe-Erik Martin. Bilderpresse - JPEG2000, Technik und
Hintergründe. c’t, 22:186–187, 2001.
LITERATURVERZEICHNIS
186
[Stu01]
Ch. Stuecke. DVD-Importe illegal? Der juristische Status ausländischer DVD-Videos in
Deutschland. c’t, 01:156, 2001.
[Tri01]
Andreas Trinkwalder. Flexibles Leichtgewicht - JPEG2000, Produkte und Marktchancen. c’t,
22:180–184, 2001.
[V.98]
Roth V. Content-based retrieval form digital video. Technical report, Fraunhofer Institut,
1998. available online http://www.igd.fhg.de/igd-a8/publications/OtherSubjects/98_
Content-BasedRetrievalFromDigitalVideo.html.
[vL00]
Felix von Leitner. Die Kunst des Weglassens, Grundlagen der Audio-Kompression. c’t, 03,
2000.
[Wes01]
Andreas Westfeld. Unsichtbare Botschaften - Geheime Nachrichten sicher in Bild, Text und
Ton verstecken. c’t, 09:170–181, 2001.
Index
A
B
a-Law-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70, 73
Abtastfrequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Abtastwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
AC-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Active Server Pages . . . . . . . . . . . . . . . . . . . . siehe ASP
Adam7 Interlacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
adaptive hearing threshold . . . . . . . . . . . . . . . . . . . . . 71
<address> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Adobe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101, 102
ADPCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25, 27
Akkomodation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Akustikmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67, 73
Aliweb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Alpha Kanal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84, 98
Altavista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Amplitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Anima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97, 99
Anmeldung
Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Vorlesung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Apache . . . . . . . . . . . . . . . . . 60, 63, 128, 137, 139, 141
Apple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Archie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ARPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ARPANET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
ASF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75, 117
ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 129
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Atkinson, Bill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ATRAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72, 75
Atrribut
vs. Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Mehrfachwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Wert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 72
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Augapfel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Auge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Farbsehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Auszeichnungssprache . . . . . . siehe Markup Sprache
Autodesk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
AVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116
b-trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
BAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Bernes-Lee, Tim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Bewegung, Wahrnehmung von . . . . . . . . . . . . . . . . 107
<bgcolor> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Bidirectionally Predicted Frame . . . . . . . . . . . . . . 115
Bild
digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Meta- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Raster- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Bildformat
Vektor- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
BMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 97
<body> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
<book> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
<br> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Brightness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Brockhaus Multimedial . . . . . . . . . . . . . . . . . . . . . . . . 30
Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Computergenerierter Kontext . . . . . . . . . . . . . 31
Gläserner Mensch . . . . . . . . . . . . . . . . . . . . . . . . . 32
Landkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Programming Framework . . . . . . . . . . . . . . . . . 33
Textdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Videos und Animationen . . . . . . . . . . . . . . . . . . 32
Weblinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
BTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Bush, Vannevar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
C
C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
<center> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
CERN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122, 125
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Cinepak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116
CMY . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, CMY
Cocoon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Codebaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116
Codierung
µ-Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
a-Law . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 88
Lowest Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
LZ77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
LZW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 85
Patchwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Texture Block . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
187
INDEX
Coding
predicitve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Spectral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Subband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Color Gamut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Common Gateway Interface . . . . . . . . . . . . siehe CGI
Component Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Composite Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Compuserve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Computergenerierter Kontext . . . . . . . . . . . . . . . . . . 31
CONTENT LENGTH . . . . . . . . . . . . . . . . . . . . . . . . 124
Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127, 133
Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41, 117
D
D-Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Dallermassl, Christof . . . . . . . . . . . . . . . . . . . . . . . . . . 11
DARPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Dateiformat
Bild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Deck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
<department> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Digitales Bild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
DivX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Document Object Model . . . . . . . . . . . . . . . . . . . . . . 102
Document Type Definition . . . . . . . . . . . . siehe DTD
DOCUMENT ROOT . . . . . . . . . . . . . . . . . . . . . . . . . 124
Dokumententyp
Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Dolby AC-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Dolby-Surround . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Domain Name Service . . . . . . . . . . . . . . . . . . . . . . . . . 18
DPCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
DTD
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112, 117
Kopierschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
E
EBONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Element
leeres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
vs. Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Engelbart, Douglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Entities
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
escape-codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Excite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Extensible Stylesheet Language . . . . . . . . siehe XSL
F
Farb
188
-anzahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-bereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
-modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
CMY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82
HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80, 82
Umrechnung zwischen verschiedenen . . . . 82
YCbCr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
YIQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
YUV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82
-sättigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
-tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
-tiefe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
-ton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Rasterbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Farbmodell
YIQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 89
FBAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
<firstname> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
<font> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
<form> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Fourier-Transformation . . . . . . . . . . . . . . . . . . . . . 69, 90
Fraktale Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
bidirectionally predicted . . . . . . . . . . . . . . . . . 115
D- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Intra- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114
predicted . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114
Frequenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Frequenzraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
G
G3-Fax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Gamma Korrekturk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
GET-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 85, 97, 102
GIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Gimp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Gläserner Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
GNU Image Finding Tool . . . . . . . . . . . . . . . . . . . . . . 29
Google . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27, 124, 132
Gopher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 24
GPSYCHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
H
H.261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
H.263 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Hörschwelle, adaptive . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Halbbilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
HDTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
<head> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Helligkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Helligkeitswahrnehmung . . . . . . . . . . . . . . . . . . . . . . . 79
Hi-8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Hidden Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
INDEX
HSV . . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, HSV
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 35, 37
Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Format Definiation . . . . . . . . . . . . . . . . . . . . . . . 43
Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Kommentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Mindesttags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Schrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
vs. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
<html> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19, 23
GET-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
POST-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . 133
Hue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Huffman-Codierung . . . . . . . . . . . . . . . . . 68, 73, 88, 92
Hyper-G . . . . . . . . . . . . . . . . . . . . . . . . siehe Hyperwave
Hypercard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hyperlink
Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Hypertext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Hyperwave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
I
IAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
ICCB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IETF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IICM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22, 30
<img> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Indeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110, 116
Indexsuchmaschinen . . . . . . . . . . . . . . . . . . . . . . . 25, 26
Informationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Infoseek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Interlacing . . . . . . . . . . . . . . . . . . . . . . . 97, 99, 107, 109
Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Technische Grundlagen . . . . . . . . . . . . . . . . . . . 18
Intraframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114
<invoice> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . siehe TCP/IP
IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
IRIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
ISDN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
J
j2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Java Server Pages . . . . . . . . . . . . . . . . . . . . . . siehe JSP
Java Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 125
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
JFIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89, 100
Joint Stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
jp2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
JPEG . . . . . . . . . . . . . . . . . . . . 81, 85, 89, 90, 102, 110
Bildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
189
Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Kompressionsalgorithmus . . . . . . . . . . . . . . . . . 90
Kompressionsfaktoren . . . . . . . . . . . . . . . . . . . . . 90
Progressive Encoding . . . . . . . . . . . . . . . . . . . . . 92
Verlustbehaftete Kompression . . . . . . . . . . . . . 90
Verlustfreie Kompression . . . . . . . . . . . . . . . . . . 89
JPEG2000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Bildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
jpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
jpx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 125, 127
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Interna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Jumpstation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
K
Kannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 140
Katalogsuchmaschinen . . . . . . . . . . . . . . . . . . . . . 25, 26
KMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Knowledge Management . . . . . . . . . . . . . . . . . . . . . . 142
Kommentar
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Kompression
Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
fraktale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
H.261 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
verlustbehaftet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
verlustbehaftete JPEG . . . . . . . . . . . . . . . . . . . . 90
verlustfreie JPEG . . . . . . . . . . . . . . . . . . . . . . . . . 89
Wavelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Kompressionsfaktoren
JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
L
<lastname> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Lauflängenkodierung . . . . . . . . . . . . . . . 68, 84, 92, 97
Lautstärke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Lempel, Abraham . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Leporello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
< link > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Lowest Bit Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Luftdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Lycos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
LZ77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
LZW-Codierung . . . . . . . . . . . . . . . . . . . . . . . . 68, 85, 97
M
Markup
generalized, descriptive . . . . . . . . . . . . . . . . . . . 34
Markup Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Maskierungseffekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Maurer, Hermann . . . . . . . . . . . . . . . . . . . . . . . . . . 11, 22
Memex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
<memo> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Metabildformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Metadaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Metasuchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . 25, 26
Meyrowitz, Norman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
mgetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
INDEX
Microsoft . . . . . . . . . . . . . . . . . . . . 47, 75, 110, 116, 129
MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
MILNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Minidisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
mj2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
MJPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
MNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Modell
psychoakustisches . . . . . . . . . . . . . . . . . . . . . . . . . 70
Morsecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Mozart, Wolfgang Amadeus . . . . . . . . . . . . . . . . . . . . 30
MP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70, 73
Hörtest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76, 176
MP3 Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
MPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Layer 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Layer 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Layer 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Videokompression . . . . . . . . . . . . . . . . . . . . . . . 111
Windows Media Technologies . . . . . . . . . . . . 114
MPEG-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
MPEG-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MPEG-7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
MPEG2
AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
MPEG4
AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
MSAudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
µ-Law-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
N
Namensraum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55
Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55
Nelson, Ted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
NLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
NSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
NTSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
NTSC-Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Nyquist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
O
Organisatorisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
P
<p> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35, 43
PAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81, 108
Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Patchwork Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
PCX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
<person> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 49
Photobook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Photorezeptoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124, 131
PICT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
190
PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89, 98
POP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Portable Document Format . . . . . . . . . . . . . . . . . . . 102
POST-Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Postscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
pppd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139, 140
Predicted Frame . . . . . . . . . . . . . . . . . . . . . . . . . 111, 114
Predictive Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Processing Instruction . . . . . . . . . . . . . . . . . . . . . . . . . 54
Progressive Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
psychoakustisches Modell . . . . . . . . . . . . . . . . . . . . . . 70
Q
Quantisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 73, 90, 91
QUERY STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Quickdraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . 32, 110, 116
R
Ranking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Rasterbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 101
Farbe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
RBSE Spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Realaudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Realvideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Recommendation Systems . . . . . . . . . . . . . . . . . 25, 27
REFER URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
regular expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
REMOTE HOST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Remove Sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Request for Comment (RFC) . . . . . . . . . . . . . . . . . . 20
REQUEST METHOD . . . . . . . . . . . . . . . . . . . . . . . . 124
RFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
RGB . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, RGB
RIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
RLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68, 84
Robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
RTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Run-Length-Encoding . . . . . . . . . . . . . . . . . 68, 84, 110
S
S-VHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Sättigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Samplingrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Samplingsize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Saturation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Scalable Vector Graphics . . . . . . . . . . . . . . . . . . . . . 102
Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
< script > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Sehnerv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
SelfHTML . . . . . . . . . . . . . . . . . . . . . . . . . . 38, 39, 42, 47
Servlet . . . . . . . . . . . . . . . . . . . . . . . . . siehe Java Servlet
Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . 127, 133
SGML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30, 35
Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Dokumententyp . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
INDEX
Silence Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Sinneszellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Skriptum
Änderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
SMIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Spectral Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Spider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . siehe Robots
Stäbchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Stars and Stripes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Steganographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
< style > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Ausgabemedium . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Subband Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Suche nach Multimediadaten . . . . . . . . . . . . . . . . . . 28
Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Kategorien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Reihung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26, 27
SVCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
SVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
T
TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16, 18, 133
Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Template Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Texture Block Coding . . . . . . . . . . . . . . . . . . . . . . . . 105
TGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83, 85, 89, 97
Timbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
< title > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Ton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
digitale Darstellung . . . . . . . . . . . . . . . . . . . . . . . 66
Tonhöhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Transclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
TransformCoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Transparenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Trommelfell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
TwinVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
U
Übungen
Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Unisys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
URL-Rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
V
Variable Bitrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
VBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
VCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Vektorgrafikformat . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Vergenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Veronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Verschachtelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Video
analog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
191
Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Dateiformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
ASF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
AVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Quicktime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Realvideo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Mensch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Y/C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Video-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Video:Codec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Video:Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
VideoTex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Vorlesung
Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Newsgroup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Rechtschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Unterlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Änderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
W
W3C . . . . . . . . . . . . . 47, 58, 61, 64, 98, 102, 119, 122
WAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Wandex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
WAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Wasserzeichen, digitale . . . . . . . . . . . . . . . . . . . . . . . 104
Wave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Wavelet Kompression . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Web-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
WebMethod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Welch,Terry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Wellentheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Windows Media Audio . . . . . . . . . . . . . . . . . . . . . . . . . 75
Windows Media Technologies . . . . . . . . . . . . . . . . . 114
Windows Meta File . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Wireless Application Protocol . . . . . . . . . siehe WAP
Wireless Markup Language . . . . . . . . . . . siehe WML
Wissensnetzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
WMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
WMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
WML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
<wml> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
World Wide Web . . . . . . . . . . . . . . . . . . . . siehe WWW
World Wide Web Wanderer . . . . . . . . . . . . . . . . . . . . 24
World Wide Web Worm . . . . . . . . . . . . . . . . . . . . . . . 24
WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23, 37
dynamische Generierung . . . . . . . . . . . . . . . . . 122
X
Xalan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Xanadu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
XML . . . . . . . . . . . . . . . . . . . . . . . . . 35, 37, 47, 102, 119
Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 49, 55
Processing Instruction . . . . . . . . . . . . . . . . . . . . 54
Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51, 64
INDEX
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
vs. HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
XSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Formatting Objects . . . . . . . . . . . . . . . . . . . 58, 62
Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Y
Y/C Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Yahoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
YCbCr . . . . . . . . . . . . . . . . . siehe Farbmodell, YCbCr
YIQ . . . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, YIQ
YUV . . . . . . . . . . . . . . . . . . . . . siehe Farbmodell, YUV
Z
Zapfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Zif, Jakob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
192