XML in der Praxis. Professionelles Web-Publishing mit der Extensible Markup Language, 2.Auflage GERMAN 3827316367, 9783827316363


333 43 5MB

German Pages 511

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
XML in der Praxis......Page 2
Verarbeitung der Dokumente......Page 8
Cascading Style Sheets......Page 9
Übersicht......Page 10
Wie die Daten ins Web gelangen......Page 11
Cocoon......Page 12
A.3 Logische Strukturen......Page 13
und......Page 14
Stichwortverzeichnis......Page 15
Vorwort......Page 16
Einführung......Page 20
Warum mehr weniger ist......Page 23
Warum mehr mehr ist......Page 24
Wohin die Reise geht......Page 26
Eine kurze Geschichte der Textverarbeitung......Page 32
Bestandteile eines Dokumentes......Page 33
Die neue, alte Idee: Strukturorientiert schreiben......Page 34
Die Entwicklung des Hypertextes......Page 37
Das SGML-Konzept: Generic Markup......Page 40
Dokumente versus Daten......Page 43
XML im Web......Page 46
XML bei der Verwaltung von Websites......Page 47
XML mit XSL(T)......Page 49
XML auf dem Server......Page 50
XML als Datenaustauschformat......Page 51
Dokumenttyp-Definition (DTD) und Instanzen......Page 52
Beispiel: Verarbeitung mit Cost/TCL......Page 55
Beispiel: Verarbeitung mit XSLT......Page 58
Beispiel: XML/XSLT im Internet Explorer......Page 60
Fazit......Page 62
Ein Wort zur Notation......Page 64
Dokumente......Page 65
Elemente......Page 67
Zeichen, Namen und Zeichendaten......Page 69
Kommentare......Page 71
Processing Instructions......Page 73
Wo bleibt »Multimedia«?......Page 74
Dokumenttyp-Definition (DTD)......Page 75
Elementtyp-Deklaration......Page 76
Attributlisten-Deklaration......Page 78
Möglichkeiten die DTD zu gestalten und zu gliedern......Page 80
Notation-Deklaration......Page 83
Namensräume in XML......Page 86
XPath: Adressierung von XML-Dokumentteilen......Page 90
Zu Grunde liegendes Datenmodell......Page 91
Zugriff auf den Datenbaum......Page 92
Hilfe von Operatoren......Page 96
Kernfunktionen für den Datenzugriff......Page 97
XML: Linking......Page 102
Notwendige Begriffe......Page 103
Einfache Verweise......Page 104
Erweiterte Links......Page 108
XPointer: Verweise in Dokumente hinein......Page 114
XPath-Erweiterungen in XPointer......Page 118
Überblick über Stylesheet-Sprachen......Page 122
Cascading Style Sheets......Page 125
Wertzuweisungen......Page 126
Formatierungsmodell......Page 128
CSS und XML......Page 129
Ein Beispiel: XML im Mozilla......Page 130
Document Style Semantics and Specification Language......Page 133
Flow Objects......Page 135
Verarbeitungs-Modus......Page 137
DSSSL praktisch......Page 139
Langer Marsch von DSSSL nach HTML......Page 142
Verhältnis von XSLT zu XSL......Page 146
Formatierung mit XSL......Page 147
Transformationen......Page 148
Grundsätzliches über Templates......Page 149
Struktur von XSLT-Stylesheets......Page 153
Diverse Basiselemente......Page 159
Formatierte Nummerierung......Page 164
Schleifen und bedingte Verarbeitung......Page 166
Variable und Parameter......Page 169
Zusätzliche Funktionen......Page 172
message, output......Page 174
XSLT im Internet Explorer......Page 178
Linklisten erzeugen......Page 181
Details einer Literaturgeschichte......Page 189
Sortierte Überblicksseiten......Page 190
Kalender: einzelne Tage ausgeben......Page 196
Übersicht......Page 204
Epic......Page 205
Emacs und PSGML (mit XML-Unterstützung)......Page 206
XML Spy......Page 208
XMetal......Page 209
Epic......Page 212
MarkupKit (für MS Word)......Page 213
WordPerfect Office2000......Page 215
Fazit......Page 218
Auswahl einer Mehrzweck-DTD......Page 220
Entwurf einer DTD......Page 221
Dokumentanalyse......Page 222
Tipps und Tricks......Page 226
Instanzen ohne DTD......Page 235
Zielsetzung und Randbedingungen......Page 236
Schritt 1: Die Grobstruktur......Page 237
Schritt 2: Elemente auf Zeichenebene......Page 238
Schritt 3: Die Details......Page 239
Konvertierung in HTML......Page 240
Aufbereitung für den Ausdruck......Page 242
Erfahrungen mit der zweiten Auflage......Page 244
Anwendungsbeispiel Literatur......Page 246
Vorüberlegungen......Page 248
En détail: die Autoren in der......Page 250
Wie die Daten ins Web gelangen......Page 255
Inhaltsverzeichnis generieren......Page 256
Ausgabe der Autorendaten......Page 260
DTD für die Literaturgeschichte......Page 265
DSSSL-Listing: Inhaltsverzeichnis......Page 267
DSSSL-Listing: Ausgabe eines einzelnen Autors......Page 270
Perl-Code für Ausgabe einzelner Autoren......Page 276
Aufgabenbeschreibung......Page 278
XML als Datenbasis......Page 280
Bilden von DTD-Hierachien......Page 285
Zusammentragen von verteilten XML-Fragmenten......Page 286
Fazit......Page 287
Stylesheet zur Transformation in HTML......Page 288
Die Rolle von XML......Page 294
BMEcat......Page 296
Electronic Business xml (ebXML)......Page 297
Arbeitsgruppen......Page 298
XML und EDIFACT......Page 299
XML und Apache......Page 302
Konfiguration des Servers......Page 303
CGI-Skript: xmlhandler.cgi......Page 304
Beispiel: von HTML nach HTML mit DSSSL oder XSLT......Page 309
Cocoon......Page 316
Extensible Server Pages (XSP)......Page 319
Beispiel: Formatierung in PDF mit XSL......Page 341
Beispiel: Simuliertes XLink mit Dynamic HTML/JavaScript......Page 348
Installation......Page 353
Status quo: HTML neu definiert......Page 356
Modulare Zukunft......Page 360
Transformation von XML in WML und HTML......Page 362
Erzeugen der WML-Dateien......Page 365
Erzeugen der HTML-Dateien......Page 373
XML Schema......Page 378
Programmierung mit XML-Daten......Page 380
XML und Java......Page 381
Resource Description Framework......Page 382
Die Zukunft......Page 383
A: Extensible Markup Language (XML) 1.0......Page 386
A.1 Einleitung......Page 387
A. 1. 1 Herkunft und Ziele......Page 388
A. 1. 2 Terminologie......Page 389
A.2 Dokumente......Page 390
A. 2.2 Zeichen......Page 391
A. 2. 3 Allgemeine syntaktische Konstrukte......Page 392
A. 2.4 Zeichendaten und Markup......Page 393
A. 2.6 Processing Instructions......Page 394
A. 2. 8 Prolog und Dokumenttyp-Deklaration......Page 395
A. 2. 9 Standalone-Dokumentdeklaration......Page 398
A. 2. 10 Behandlung von Leerraum......Page 399
A. 2.12 Identifikation der Sprache......Page 400
A.3 Logische Strukturen......Page 402
A. 3.1 Start-Tags, End-Tags und Leeres-Element-Tags......Page 403
A. 3. 2 Elementtyp-Deklarationen......Page 404
A. 3.3 Attributlisten-Deklaration......Page 406
A. 3.4 Bedingte Abschnitte......Page 410
A.4 Physikalische Strukturen......Page 411
A. 4.1 Zeichen- und Entity-Referenzen......Page 412
A. 4. 2 Entity-Deklarationen......Page 414
A. 4.3 Analysierte Entities......Page 416
A. 4. 4 Behandlung von Entities und Referenzen durch einen XML-Prozessor......Page 418
A. 4. 6 Vordefinierte Entities......Page 421
A. 4. 7 Notation-Deklarationen......Page 422
A. 5. 2 Benutzen von XML-Prozessoren......Page 423
A.6 Notation......Page 424
A. 7. 2 Weitere Referenzen......Page 426
A.8 Anhang B: Zeichenklassen......Page 427
A.10 Anhang D: Expansion von Entity- und Zeichenreferenzen (nicht normativ)......Page 431
A.11 Anhang E: Deterministische Inhaltsmodelle (nicht normativ)......Page 432
A.12 Anhang F: Automatische Erkennung von Zeichenkodierungen (nicht normativ)......Page 433
A.13 Anhang G: XML-Arbeitsgruppe des W3C (nicht normativ)......Page 435
B: Verknüpfen von Style Sheets mit XML-Dokumenten Version 1.0......Page 438
B.1 Die xml-stylesheet-Processing-Instruction......Page 439
B.3 Anhang B: Begründung......Page 442
C.1 XML und SGML......Page 444
C.2 XML und HTML......Page 452
D.1.1. CSS-Eigenschaften und -Werte......Page 454
D.1.2 CSS-Muster......Page 456
D.2 DSSSL: Flow Objects......Page 457
D.3 Syntax der XSLT-Elemente......Page 463
D.4 DTD-Fragment für XSLT-Stylesheets (nicht normativ)......Page 468
D.5.1 International Organization for Standardization......Page 476
D.5.3 Organization for the Advancement of Structured Information Standards......Page 477
D.5.5 ISO-639-Sprachcodes......Page 478
D.5.6 ISO-3166-Ländercodes......Page 479
D.5.7 Zeichensatz ISO-Latin-1......Page 480
D.5.8 Sonderzeichen......Page 484
D.6 XML-1.0-Regeln......Page 486
Bibliographie......Page 490
D......Page 496
E......Page 497
I......Page 498
M......Page 499
P......Page 500
S......Page 501
U......Page 503
X......Page 504
D......Page 506
I......Page 508
O......Page 509
S......Page 510
Z......Page 511
Recommend Papers

XML in der Praxis. Professionelles Web-Publishing mit der Extensible Markup Language, 2.Auflage  GERMAN 
 3827316367, 9783827316363

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Henning Behme Stefan Mintert

XML in der Praxis Professionelles Web-Publishing mit der Extensible Markup Language

An imprint of Pearson Education München • Boston • San Francisco • Harlow, England Don Mills, Ontario • Sydney • Mexico City Madrid • Amsterdam

Bitte beachten Sie: Der originalen Printversion liegt eine CD-ROM bei. In der vorliegenden elektronischen Version ist die Lieferung einer CD-ROM nicht enthalten. Alle Hinweise und alle Verweise auf die CD-ROM sind ungültig.

Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titeldatensatz für diese Publikation ist bei der Deutschen Bibliothek erhältlich.

Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar. Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig. Falls alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig auch eingetragene Warenzeichen oder sollten als solche betrachtet werden. Umwelthinweis: Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt. Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltfreundlichem und recyclingfähigem PE-Material.

10 9 8 7 6 5 4 3 2 1 03 02 01 00 ISBN 3-8273-1636-7 © 2000 by Addison-Wesley Verlag, ein Imprint der Pearson Education Deutschland GmbH, Martin-Kollar-Straße 10–12, D-81829 München/Germany Alle Rechte vorbehalten Einbandgestaltung: atelier für gestaltung, niesner & huber, Wuppertal Lektorat: Sylvia Hasselbach, [email protected] Korrektorat: Annette Lennartz, Bonn Herstellung: Elisabeth Egger, [email protected] Satz: reemers publishing services gmbh, Krefeld Druck und Verarbeitung: Schoder, Gersthofen XML-Processing: Stefan Mintert Printed in Germany

Für Kersten. H. B. Für Martin, Michaela und Ute S. M.

Nichts ist mächtiger als eine Idee, deren Zeit gekommen ist. Victor Hugo

Inhaltsverzeichnis Vorwort

17

1 Einführung

21

1.1

Warum mehr weniger ist

24

1.2

Warum mehr mehr ist

25

1.3

Wohin die Reise geht

27

2 Was sind Dokumente?

33

2.1

Eine kurze Geschichte der Textverarbeitung

33

2.2

Bestandteile eines Dokumentes

34

2.3

Die neue, alte Idee: Strukturorientiert schreiben

35

2.4

Die Entwicklung des Hypertextes

38

2.5

Textformate im Web

41

2.6

Das SGML-Konzept: Generic Markup

41

2.7

Dokumente versus Daten

44

3 XML im Web

47

3.1

XML bei der Verwaltung von Websites

48

3.2

Clientseitige XML-Interpretation

50

3.2.1

XML mit CSS

3.2.2

XML mit XSL(T)

50 50

3.3

XML auf dem Server

51

3.4

Linking-Möglichkeiten von XML

52

3.5

XML als Datenaustauschformat

52

4 XML Quick Start 4.1 4.2

Dokumenttyp-Definition (DTD) und Instanzen

53 53

Verarbeitung der Dokumente

56

4.2.1

Beispiel: Verarbeitung mit Cost/TCL

56

4.2.2

Beispiel: Verarbeitung mit XSLT

59

4.2.3

Beispiel: XML/XSLT im Internet Explorer

61

4.2.4

Fazit

63

9

Inhaltsverzeichnis

5 XML-DTDS: Die verständliche Beschreibung 5.1

Ein Wort zur Notation

65

5.2

Dokumente

66

5.3

Elemente

68

5.4

Zeichen, Namen und Zeichendaten

70

5.5

Kommentare

72

5.6

Processing Instructions

74

5.7

Wo bleibt »Multimedia«?

75

5.8

Dokumenttyp-Definition (DTD)

76

5.8.1

77

Elementtyp-Deklaration

5.8.2

Attributlisten-Deklaration

79

5.8.3

Möglichkeiten, die DTD zu gestalten und zu gliedern

81

5.8.4

Notation-Deklaration

84

6 Namensräume in XML

87

7 XPath: Adressierung von XML-Dokumentteilen

91

7.1

Zu Grunde liegendes Datenmodell

92

7.2

Zugriff auf den Datenbaum

93

7.3

Hilfe von Operatoren

97

7.4

Kernfunktionen für den Datenzugriff

98

8 XML: Linking

103

8.1

Notwendige Begriffe

8.2

XLink: einfache und erweiterte Links

105

8.2.1

Einfache Verweise

105

8.2.2

Erweiterte Links

109

8.2.3

XLink in der Praxis

8.3

9.1

104

115

XPointer: Verweise in Dokumente hinein

115

8.3.1

119

XPath-Erweiterungen in XPointer

9 Überblick über Stylesheet-Sprachen

10

65

123

Cascading Style Sheets

126

9.1.1

127

Wertzuweisungen

9.1.2

Formatierungsmodell

129

9.1.3

CSS und XML

130

9.1.4

Ein Beispiel: XML im Mozilla

131

Inhaltsverzeichnis

9.2

9.3

Document Style Semantics and Specification Language

134

9.2.1

Flow Objects

136

9.2.2

Verarbeitungs-Modus

138

9.2.3

DSSSL praktisch

140

9.2.4

Langer Marsch von DSSSL nach HTML

143

Extensible Stylesheet Language (XSLT und XSL)

147

9.3.1

Verhältnis von XSLT zu XSL

147

9.3.2

Formatierung mit XSL

148

10 XSL-Transformationen

149

10.1 Grundsätzliches über Templates

150

10.2 Ergänzungen zum Datenmodell von XPath

154

10.3 Struktur von XSLT-Stylesheets

154

10.4 Den Ergebnisbaum erzeugen

160

10.4.1

Diverse Basiselemente

160

10.4.2

Formatierte Nummerierung

165

10.4.3

Schleifen und bedingte Verarbeitung

167

10.4.4

Sortieren

170

10.4.5

Variable und Parameter

170

10.4.6

Zusätzliche Funktionen

173

10.4.7

XSLT-Erweiterungen

175

10.4.8

message, output

175

11 XSLT in Web-Anwendungen 11.1

179

XSLT im Internet Explorer

179

11.2

Linklisten erzeugen

182

11.3

Details einer Literaturgeschichte

190

11.3.1

Sortierte Überblicksseiten

191

11.3.2

Kalender: einzelne Tage ausgeben

197

12 XML-Editoren

205

12.1 Übersicht

205

12.1.1

Emacs + PSGML (mit XML-Unterstützung)

206

12.1.2

XML Notepad

206

12.1.3

XML Spy

206

12.1.4

XMetal

206

11

Inhaltsverzeichnis

12.1.5

Epic

206

12.1.6

MarkupKit (für MS Word)

207

12.1.7

WordPerfect Office2000

207

12.3 XML-Notepad

209

12.4 XML Spy

209

12.5 XMetal

210

12.6 Epic

213

12.7 MarkupKit (für MS Word)

214

12.8 WordPerfect Office2000

216

12.9 Fazit

219

13 Entwicklung einer DTD

221

13.1 Auswahl einer Mehrzweck-DTD

221

13.2 Entwurf einer DTD

222

13.2.1

Dokumentanalyse

223

13.2.2

Tipps und Tricks

227

13.3 Instanzen ohne DTD

236

14 Herstellung dieses Buches

237

14.1 Zielsetzung und Randbedingungen

237

14.2 Definition der DTD

238

14.2.1

Schritt 1: Die Grobstruktur

238

14.2.2

Schritt 2: Elemente auf Zeichenebene

239

14.2.3

Schritt 3: Die Details

240

14.3 Formatieren des Manuskriptes

241

14.3.1

Konvertierung in HTML

241

14.3.2

Aufbereitung für den Ausdruck

243

14.4 Erfahrungen mit der zweiten Auflage 15 Anwendungsbeispiel Literatur

12

207

12.2 Emacs und PSGML (mit XML-Unterstützung)

245 247

15.1 Vorüberlegungen

249

15.2 En détail: die Autoren in der DTD

251

15.3 Wie die Daten ins Web gelangen

256

15.3.1

Inhaltsverzeichnis generieren

257

15.3.2

Ausgabe der Autorendaten

261

Inhaltsverzeichnis

15.4 Vollständige Listings

266

15.4.1

DTD für die Literaturgeschichte

266

15.4.2

DSSSL-Listing: Inhaltsverzeichnis

268

15.4.3

DSSSL-Listing: Ausgabe eines einzelnen Autors

271

15.4.4

Perl-Code für Ausgabe einzelner Autoren

277

16 Verteilte Softwareverwaltung mit XML

279

16.1 Aufgabenbeschreibung

279

16.2 XML als Datenbasis

281

16.3 Bilden von DTD-Hierarchien

286

16.4 Zusammentragen von verteilten XML-Fragmenten

287

16.5 Fazit

288

16.6 Stylesheet zur Transformation in HTML

289

17 E-Commerce mit XML 17.1 B2B-E-Commerce 17.1.1

Die Rolle von XML

17.1.2

Technische Aspekte

295 295 295 297

17.2 BMEcat

297

17.3 Electronic Business xml (ebXML)

298

17.3.1

Arbeitsgruppen

299

17.3.2

Zeitplan des Projekts

300

17.4 XML und EDIFACT 18 XML und Apache 18.1 XML-Transformation per CGI

300 303 304

18.1.1

Konfiguration des Servers

18.1.2

CGI-Skript: xmlhandler.cgi

305

18.1.3

Beispiel: von HTML nach HTML mit DSSSL oder XSLT

310

18.2 Cocoon

304

317

18.2.1

Extensible Server Pages (XSP)

320

18.2.2

Beispiel: Formatierung in PDF mit XSL

342

18.2.3

Beispiel: Simuliertes XLink mit Dynamic HTML/JavaScript

349

18.2.4

Installation

354

13

Inhaltsverzeichnis

19 XHTML: Neues HTML 4 – erweiterbar

357

19.1 Status quo: HTML neu definiert

357

19.2 Modulare Zukunft

361

20 Transformation von XML in WML und HTML 20.1 Erzeugen der WML-Dateien

366

20.2 Erzeugen der HTML-Dateien

374

21 Ausblick

379

21.1 XML Schema

379

21.2 Programmierung mit XML-Daten

381

21.3 XML und Java

382

21.4 Resource Description Framework

383

21.5 Die Zukunft

384

A Extensible Markup Language (XML) 1.0 A.1

A.2

A.3

14

363

387

Einleitung

388

A.1.1

Herkunft und Ziele

389

A.1.2

Terminologie

390

Dokumente

391

A.2.1

Wohlgeformte XML-Dokumente

392

A.2.2

Zeichen

392

A.2.3

Allgemeine syntaktische Konstrukte

393

A.2.4

Zeichendaten und Markup

394

A.2.5

Kommentare

395

A.2.6

Processing Instructions

395

A.2.7

CDATA-Abschnitte

396

A.2.8

Prolog und Dokumenttyp-Deklaration

396

A.2.9

Standalone-Dokumentdeklaration

399

A.2.10

Behandlung von Leerraum

400

A.2.11

Behandlung des Zeilenendes

401

A.2.12

Identifikation der Sprache

401

Logische Strukturen

403

A.3.1

Start-Tags, End-Tags und Leeres-Element-Tags

404

A.3.2

Elementtyp-Deklarationen

405

A.3.3

Attributlisten-Deklaration

407

A.3.4

Bedingte Abschnitte

411

Inhaltsverzeichnis

A.4

Physikalische Strukturen

412

A.4.1

413

A.4.2

Entity-Deklarationen

415

A.4.3

Analysierte Entities

417

A.4.4

Behandlung von Entities und Referenzen durch einen 419 XML-Prozessor

A.4.5

Konstruktion des Ersetzungstextes von internen Entities

422

Vordefinierte Entities

422

A.4.6

A.5

Zeichen- und Entity-Referenzen

A.4.7

Notation-Deklarationen

423

A.4.8

Dokument-Entity

424

Konformität

424

A.5.1

Validierende und nicht-validierende Prozessoren

424

A.5.2

Benutzen von XML-Prozessoren

424

A.6

Notation

425

A.7

Anhang A: Referenzen

427

A.7.1

Normative Referenzen

427

A.7.2

Weitere Referenzen

427

A.8

Anhang B: Zeichenklassen

428

A.9

Anhang C: XML und SGML (nicht normativ)

432

A.10 Anhang D: Expansion von Entity- und Zeichenreferenzen (nicht normativ)

432

A.11 Anhang E: Deterministische Inhaltsmodelle (nicht normativ)

433

A.12 Anhang F: Automatische Erkennung von Zeichenkodierungen (nicht normativ) 434 A.13 Anhang G: XML-Arbeitsgruppe des W3C (nicht normativ)

436

B Verknüpfen von Style Sheets mit XML-Dokumenten Version 1.0

439

B.1

Die xml-stylesheet-Processing-Instruction

440

B.2

Anhang A: Referenzen

443

B.3

Anhang B: Begründung

443

C Verhältnis von XML zu SGML und HTML

445

C.1

XML und SGML

445

C.2

XML und HTML

453

15

Inhaltsverzeichnis

D Übersichten D.1

Cascading Style Sheets

455

D.1.1

CSS-Eigenschaften und -Werte

455

D.1.2

CSS-Muster

457

D.2

DSSSL: Flow Objects

458

D.3

Syntax der XSLT-Elemente

464

D.4

DTD-Fragment für XSLT-Stylesheets (nicht normativ)

469

D.5

Relevante Spezifikationen und Organisationen

477

D.5.1

International Organization for Standardization

477

D.5.2

World Wide Web Consortium

478

D.5.3

Organization for the Advancement of Structured Information Standards

478

Internet Society und Internet Engineering Task Force

479

D.5.4

D.6

16

455

D.5.5

ISO-639-Sprachcodes

479

D.5.6

ISO-3166-Ländercodes

480

D.5.7

Zeichensatz ISO-Latin-1

481

D.5.8

Sonderzeichen

XML-1.0-Regeln

485 487

Bibliographie

491

Glossar

497

Stichwortverzeichnis

507

Vorwort Dass diese Zeilen mit »Vorwort« überschrieben sind, ist aus Sicht der Autoren unzutreffend. Denn tatsächlich haben wir das »Vorwort« nicht vor Beginn unserer Arbeit geschrieben, sondern nach deren Beendigung. Zugegeben, die Überschrift »Nachwort« hätte wohl eine gewisse Verwunderung bei Ihnen, der Leserin, dem Leser, ausgelöst. Nicht nur bei der Wahl dieser Überschrift haben wir uns nach Ihnen gerichtet; wir haben versucht, das Buch auf Ihre Bedürfnisse auszurichten. Wie schwierig das ist, werden Sie hoffentlich nicht feststellen – sonst wäre es uns wohl nicht gut gelungen. Aber zum Glück gibt es ja das Vor/Nachwort. Hier können wir einige Worte darüber verlieren, was in welchem Kapitel steht; und vielleicht hilft es Ihnen dabei, herauszufinden, an welcher Stelle Sie mit der Lektüre beginnen. Denn obwohl »der Kunde König ist«, mussten doch wir eine Reihenfolge festlegen. XML ist es,

wofür Sie und wir uns entschieden haben. Wir haben es aus Spaß und Interesse an der Sache getan, was waren Ihre Gründe? – Wenn Sie es noch nicht genau wissen, dann wird Ihnen vielleicht das erste Kapitel eine Antwort geben. Dort finden Sie auch die Gründe, warum das Web eine neue Sprache braucht. Dass vieles davon gar nicht so neu ist, zeigt das zweite Kapitel. Neben den Wurzeln von Hypertext und XML geht es dort auch um die Frage, woraus (Text-)Dokumente eigentlich bestehen. In Kapitel 3 betrachten wir die Anwendung von XML im Web von einer etwas höheren Warte, um Ihnen einen Überblick zu geben. Das folgende Kapitel 4 wird dann konkret. Falls Sie noch niemals mit SGML oder XML gearbeitet haben, zeigt Ihnen unser Schnelleinstieg, wie XML praktisch aussehen kann. Wer eine vorsichtige Annäherung an ein komplexes Thema als langatmiges Gerede empfindet, sollte den Sprung in's kalte Wasser wagen und dort beginnen. Es schließt sich die Beschreibung der XML-Syntax (die so genannten DTDs) an. Wir haben versucht, diesen auf den ersten Blick schwierigen Teil möglichst einfach zu erklären; genannt haben wir es »Die verständliche Beschreibung«. Einen der spannendsten Aspekte von XML enthält das Kapitel 8: die gegenüber HTML erweiterten HyperlinkFeatures. Leider beherrscht dies noch kein Web-Browser. Die Verarbeitung von XML, zum Beispiel die Formatierung, ist ein wichtiger Punkt, dem gleich mehrere Kapitel gewidmet sind. Den Anfang macht unser Stilkapitel 9. Dort erfahren Sie einiges zu CSS, DSSSL und natürlich XSL(T). Wie man mit XMLDTDs Daten strukturiert, klärt das Kapitel 13. Seit dem Frühjahr 1998, als wir die erste Auflage abschlossen, ist XML noch mehr zum Hype-Thema geworden, als es damals war. Gleichzeitig haben aber auch zunehmend Webmaster und Firmen die Einsatzmöglichkeiten von XML erkannt und versucht umzusetzen. Dies vor allem in einem Bereich,

17

Vorwort

der ursprünglich nicht im Vordergrund des Interesses derer stand, die XML als »SGML for the Web« propagierten: als Datenaustauschformat im Geschäftsleben. Mehr dazu in Kapitel 17. Gleichzeitig haben die am World Wide Web Consortium Beteiligten die zum XML-Umfeld gehörenden Standards weiter »vorangetrieben«: die Spezifikation für die Formatierung von XML-Dokumenten ist ebenso wenig verabschiedet wie die beiden zum Linking (XLink und XPointer). Aber andere sind in der Zwischenzeit fertig geworden, darunter mit XPath und XSLT zwei für die Verarbeitung von XML-Dokumenten zentrale W3C-Empfehlungen. Zeitlich parallel dazu haben Einzelpersonen, Gruppen und Firmen Software entwickelt, die die Verarbeitung von XML unterstützt. Parser existieren u.a. in Java und C++, mehrere XSLT-Implementierungen sind frei verfügbar, und Bemühungen wie die Java-API für XML bei Sun sowie das Projekt der Apache-Gruppe sprechen eine deutliche Sprache, was die Bedeutung von XML angeht. Natürlich hatte diese Entwicklung Konsequenzen für diese zweite Auflage. Wir haben einerseits den neuen Standards Kapitel eingeräumt (7, 10), andererseits aber auch den Bereich der Anwendung deutlich erweitert (16, 12, 19). Schließlich haben wir mehr an Beispielen aufgenommen (11, 20). Einschränkend muss hier leider gesagt werden, dass auch diese Auflage nicht das sämtliche möglichen XML-Themen abdeckende Buch ist. Es muss noch Platz für andere sein... Mehrere Anhänge sollen das Nachschlagen erleichtern und Zusatzinformationen bieten. An erster Stelle ist die deutsche Übersetzung der Syntax-Spezifikation zu nennen, die denjenigen, die solch technische Texte lieber in deutscher Sprache lesen, den Zugang erleichtern soll. Und natürlich finden Sie dort ein Register und ein Glossar mit den wichtigsten Begriffen. Die Icons in diesem Buch Als Teil der net.com-Reihe besitzt dieses Buch de-

ren typische Gestaltung. Dazu gehören auch einige Icons, die Ihnen den Umgang mit dem Text erleichtern sollen. Folgende Icons sind vorhanden: Beispiele Kein Praxisbuch könnte ohne Beispiele auskommen. Deshalb

wird Ihnen dieses Icon besonders häufig begegnen.

Hinweise Mit diesem Symbol möchten wir Sie auf Textstellen hinweisen, die

Ihre besondere Aufmerksamkeit verdienen.

Tipps und Tricks XML ist nicht schwer. Dennoch kann es nicht schaden, prak-

tische Tipps zu bekommen.

18

Vorsicht! Auch XML hat einige Tücken. Mit diesem Symbol warnen wir Sie

rechtzeitig. Aktuelle Informationen Es ist unvermeidlich: Die Halbwertszeit von Com-

puterliteratur ist geringer als bei den meisten anderen Themen. Über aktuelle Entwicklungen sollten Sie sich im Web informieren. Wir versuchen, Sie dabei mit relevanten Links zu unterstützen. Besuchen Sie uns im Web unter der Adresse http://www.mintert.com/xml/. Außerdem sprechen beide Autoren häufig als Gastreferenten bei Konferenzen und Kongressen über neue Trends und Techniken. Auch darüber finden Sie im Web Informationen. Die CD-ROM zum Buch Da sich CDs in kürzerer Zeit produzieren lassen als

Bücher, haben wir die CD zum Zeitpunkt, zu dem wir dieses Vorwort schreiben, noch nicht vorliegen. Aus diesem Grund steht noch nicht ganz genau fest, was die CD enthalten wird. In jedem Fall werden wir Beispiele und freie Software zur Verfügung stellen. Des weiteren versuchen wir, Testversionen von kommerziellen Produkten zu bekommen. Ob und welche Sie auf der CD finden, hängt davon ab, wie die Hersteller uns unterstützen. Eine genaue Inhaltsangabe und gegebenenfalls aktuelle Informationen finden Sie auf der CD selbst. Danksagung Für das mühevolle Korrekturlesen der Erstauflage bedanken wir uns bei Kersten Auel, Stefan Borggraefe, Rainer Stoll und Jens Thiemann. Für die Bugfixes zum Apache-Kapitel der aktuellen Auflage danken wir Kerstin Göker. Die Menschen bei Addison-Wesley, allen voran unsere Lektorin Sylvia Hasselbach, haben mit ihrer Unterstützung dafür gesorgt, dass das Buch entstanden ist. Ein Wort des Dankes gebührt auch all den Lesern beider Geschlechter, die die erste Auflage nicht nur gelesen, sondern uns auch über darin leider enthaltene Fehler informiert haben, sodass sie hoffentlich in dieser Ausgabe nicht mehr enthalten sind. Es muss noch Platz für andere sein...

Zum Schluss ein persönlicher Dank der beiden Autoren: Vor allem möchte ich Kersten Auel danken, die es mir mit Rat, Tat und Geduld möglich gemacht hat, dieses Buch mitzuschreiben. Und schließlich wäre dieses Projekt nicht realistisch gewesen, hätte ich nicht hauptberuflich in der iX-Redaktion von vornherein mit diesem Themenbereich zu tun gehabt.

Henning Behme Ich danke allen Menschen, die mich während der letzten Wochen unterstützt haben: meiner Familie und meinen Freunden. In besonderer Weise gilt dies für Martin & Michaela Koch und Ute Haupt. Abschließend für meine einzige wahre Droge: Thanks always to Jackson Browne for The Music.

Stefan Mintert Hannover/Dortmund, März 2000

19

1

Einführung

In here, thi trik is thinkin rite. Thas all u 1/2 2 do. U 1/2 2 think rite. U 1/2 2 b dairing & koshis, u 1/2 2 b ver sensibil & totily mad. Moast ov ol u 1/2 2 b cluvir, u 1/2 2 b ingenius. U 1/2 2 b abil 2 use whatevir is aroun u, & thass whot it reely cums doun 2; [...] so iss up 2 u reely what yoos u make ov it aftir that; iss ol about injinooty [...]1

Iain M. Banks So schwer verständlich wie dieses Motto, das einem britischen ScienceFiction-Roman2 entnommen ist, auf den ersten Blick wirkt, wird sich die Lektüre dieses Buches – hoffentlich – nicht gestalten. Denn wer dieses Buch liest, weiß aller Wahrscheinlichkeit nach zumindest, was die Hypertext Markup Language ist beziehungsweise wofür das Kürzel HTML steht. Im günstigen Fall haben potenzielle Leserinnen3 schon einmal selbst Hand an eine HTML-Datei gelegt, entweder mit einem WYSIWYG-Werkzeug oder gar im Quelltext. Letzteres wäre insofern eine ideale Voraussetzung, als dieses Buch naturgemäß viele Beispiele enthält, die in keinem WYSIWYG-Editor zu sehen sind, da es sich um Quelltexte handelt. Viele davon sind mit etwas HTML-Kenntnissen lesbar. Selbst die Beschreibungen von Dokumentstrukturen, die Dokumenttyp-Definitionen (DTD), mit denen man sich in HTML nie herumschlagen muss, sind so leicht verdaulich wie handelsübliche Prosa4. In jedem Fall wollen wir lieber eine Erläuterung zu viel als eine zu wenig vorsehen. Und das fängt bei den drei Buchstaben XML an. Die Extensible Markup Language, wie diese neue Sprache bei aufgelöstem Akronym heißt, ist nicht als Ersatz für HTML gedacht – das zur Beruhigung aller, die die Web-Auszeichnungssprache gerade gelernt haben. Sie ist mehr als HTML, weil sie erlaubt, etwas zu tun, das man bislang im Web nur mit zusätzlichen Werkzeugen – und in geringem Umfang – tun konnte: beliebige

XML:

erweiterbare Auszeichnungssprache

1. Diese Sprache ist nicht wirklich übersetzbar, aber wenigstens ein Versuch in einem Deutsch, das dem Original nacheifert, muss sein: Hia drin is der Trik: richtich denkn. Das alles, wassu machn muss. Dumus richtich denkn. Mus waagemuutich un voorsichtich sein, mus seer sänsibel und völich verük sein. Vor allem mussu klewwa sein – und ährfinnungsreich. Du mus als nuzn könn, was um dich rum soda ist, das eintlich als; [...] is dein Bier, wassu damit anfengs; als nua Finnungsgeiß [...] 2. Er heißt Feersum Endjinn, stammt aus dem Jahre 1994 und enthält auch Passagen in »normalem« Englisch. 3. Dass es sich auch um männliche Vertreter dieser Gattung handeln darf, versteht sich von selbst. 4. Hier sei dahingestellt, ob die DTD-Prosa eher Trivialliteratur oder THOMAS MANNs Zauberberg entspricht; letzteres wäre natürlich mehr als anmaßend.

21

1 Einführung

Elemente verwenden5. In der Objektorientierung hieße das Äquivalent abstrakte Datentypen (selbst geschaffene, wie Person et cetera, im Gegensatz zu den vorgegebenen, wie »int« oder »char«), und diese beliebigen Elemente werden sich als roter Faden durch das gesamte Buch ziehen. Um an dieser Stelle noch nicht allzu tief in XML einzudringen, sei nur ein winziges Beispiel angeführt: In HTML gibt es die – und nur die – in der HTMLDTD vorgesehenen Elemente wie H1 oder BLOCKQUOTE. In XML dagegen kann sich jede(r) beliebig viele eigene Elemente definieren: von REZEPT über URLAUBSERINNERUNG bis hin zu STRASSE, etwa in einem privaten Adressbuch. So enthielte eine Beschreibung der Struktur (d.i. die oben genannte Dokumenttyp-Definition) für ein Adressbuch wahrscheinlich außer einem Element wie ADRESSBUCH (das das gesamte Dokument einschließt, wie das Element HTML in Web-Dokumenten) weitere Elemente wie VORWAHL, TELNR und PLZ, die innerhalb einer ADRESSE6 hierarchisch geschachtelt wären (und sein müssen). Grenzen von HTML

ist mittlerweile eine recht komplizierte Sprache geworden. Version 4 [RAGG98] beinhaltet wesentlich mehr, als TIM BERNERS-LEE sich Ende der achtziger, Anfang der neunziger Jahre hätte träumen lassen. Dennoch hat HTML gewisse Grenzen. Da ist zum einen der eingeschränkte Vorrat an Elementtypen (von HTML selbst bis zu P und EM), zum anderen besteht die Gefahr, dass der vielbeschworene Standard allmählich auseinander driftet. Dem war natürlich etwas entgegenzusetzen. Womit wir bei XML sind – und ob respektive wie dieser neue Standard dieses Auseinandertreiben verhindern kann. HTML

Hinter fremden Dingen kann sich Spaß verbergen. Das oben zitierte Motto steht hier unter anderem dafür – und natürlich hat es inhaltlich mit dem zu tun, was in diesem und den nächsten Kapiteln folgt. Denn angemessenes (Nach-)Denken (»thinkin rite«) kann bei beliebig tief strukturierten Dokumenten – um die geht es schließlich – nicht verkehrt sein; vor allem dann, wenn sie (auf unterschiedliche Weise) beim Leser beziehungsweise Surfer ankommen sollen. Um das Motto noch ein wenig zu strapazieren: Ein Dokument bedeutet das, was diejenigen, die es verfassen (und diejenigen, die es rezipieren), darin lesen wollen beziehungsweise können. Erfindungsreichtum (»injinooty«) ist gefragt. Das hat mit dem Thema dieses Buches insofern viel zu tun, als die Extensible Markup Language (XML) andere Fähigkeiten erfordert als die bisherige Sprache des Web (HTML). Neben dem reinen Markup kommen eine formale Beschreibung der Dokumentstruktur sowie Formatvorgaben für die 5. Gemeint ist hier, dass einige Werkzeuge dem festen Satz an HTML-Elementen neue hinzufügen, die vor der Ausgabe an den Browser ein Programm wandeln beziehungsweise bearbeiten. Als Beispiel sei das Element gtext genannt, das nur der Web-Server Roxen kennt und der so markierten Text als grafische Zeichen ausgibt. 6. ADRESSBUCH wäre hier gewissermaßen die Bezeichnung für die Art des Dokuments, wohingegen die einzelnen Adressen dessen Inhalt bilden. Genauer: Ein Adressbuch enthält beliebig viele Adressen, diese wiederum Namen und Straßenbezeichnungen et cetera.

22

Ausgabe im Web und anderswo hinzu. Formatvorgaben kennen Sie vielleicht über die Cascading Style Sheets (CSS) in HTML. In Kleinbetrieben etwa dürfte die Strukturbeschreibung des Dokuments (eine Dokumenttyp-Definition) entweder jemand außer Haus erledigen, oder der bisherige HTML-Autor muss anfangen, sich damit zu beschäftigen, wie man derlei zu Wege bringt. In Kapitel 13 ist dazu Einführendes zu lesen. Bevor es ins Detail geht, soll ein Schaubild den Zusammenhang, in dem sich das Folgende bewegt, deutlich machen. Abbildung 1.1 zeigt, dass auf der linken Seite SGML, XML und HTML in eine Reihe gehören.

formatiert

Abbildung 1.1: Zusammenhang von SGML, XML, HTML, CSS und DSSSL

DSSSL

HTML

SGML

formatiert

definiert XML

CSS

XHTML

beeinflusst

Metasprachen

& transformiert

formatiert & transformiert

XSL XSLT

Auszeichnungssprachen Formatierungs- und Transformationssprachen

ist eine Teilmenge von SGML. Für beide gilt, dass DSSSL-Stylesheets auf sie anwendbar sind. XML-Daten lassen sich allerdings auch in Verbindung mit CSS, Level 2, anzeigen. HTML schließlich ist eine SGML-Anwendung, eine Dokumenttyp-Definition. Mit ein paar Veränderungen hat das World Wide Web Consortium (W3C) Anfang 2000 HTML als eine Anwendung von XML umgesetzt. Das heißt, das Konsortium hat HTML in XML (statt SGML) neu definiert. Nur für HTML waren ursprünglich die Cascading Style Sheets gedacht, die sich jetzt auch auf XHTML anwenden lassen. XML

XSL schließlich soll die Stilsprache für XML werden; sie entspricht von den Funktionen her der Online-Variante von DSSSL – beziehungsweise die Tools, die XSL »sprechen«, werden diese Eigenschaften dem Anwender zur Verfügung stellen. Dabei handelt es sich erstens um die Formatierobjekte (XSL-FO), die aus XML-Dokumenten zum Beispiel Adobes Portable Document Format (PDF) erzeugen, und zweitens die Transformationen (XSLT), die es ermöglichen, XML-Dokumente von einer Struktur in eine andere zu wandeln (beispielsweise ein Adresssbuch in HTML).

23

1 Einführung

1.1

Warum mehr weniger ist

Schon HTML kann kompliziert sein

Schön, dass es HTML gibt – nur sieht selbst diese Sprache für Anfänger gelegentlich ähnlich rätselhaft aus wie das anfängliche Motto; vor allem dann, wenn der Web-Meister sich mit Tabellen, unsichtbaren GIFs und herstellereigenen Zusätzen ausgetobt hat. Allerdings: Ganz so kompliziert, wie das Motto beim ersten Lesen vielleicht gewirkt hat, ist diese einfache Auszeichnungssprache namens Hypertext Markup Language nicht – nicht einmal dann, wenn man die oben erwähnten Cascading Style Sheets als Sprachergänzung zur Formatierung von Dokumenten hinzunimmt. Denn es handelt sich insgesamt um circa 70 Elementtypen – oft ungenau Tags genannt7 –, die eine Basisstruktur von Texten (Überschriften, Absatz, Zitate, Listen, Tabellen) abbilden. Darüber hinaus enthält HTML Anweisungen für Stilarten (Betonung) – bis hin zu solchen, die festlegen sollen, ob ein Wort (oder mehrere) kursiv oder fett gedruckt zu sein habe. Vom Blinken, das Netscape leider eingeführt hat, soll hier nicht die Rede sein.

Trennung von Markup und Formatierung

Eigentlich waren schon diese auf das Display bezogenen Elemente (I und B) eine Abweichung von der reinen Lehre des strukturierten Markup. Aber sie waren nichts gegen das, was danach kam. Was wiederum damit zu tun hatte, dass nach dem ersten Internet-Boom (1994) die Anwender – diejenigen, die WWW-Dokumente erstellen wollten – mehr an Gestaltungsmöglichkeiten suchten; und sie bekamen sie: Tabellen, blinkende Strings... Was bleibt, ist die Tatsache, dass HTML in den letzten Jahren eine stürmische Entwicklung genommen hat – getragen von Erweiterungen, wie sie im Wesentlichen Netscape (durch Frames, die HTML ergänzende Scriptsprache JavaScript sowie Layers) und Microsoft (VB-Integration und Dynamic HTML) eingeführt haben. Datenbankanbindungen über Perl sowie kommerzielle (Zusatz-)Produkte von DBMS-Anbietern runden das Wirrwar ab. Soweit es denn als Wirrwar empfunden wird. Nicht zu vergessen die oben angedeutete Erweiterung der HTML-Elemente durch Software, die die Web-Dokumente durchgeht (parsing) und nach einer bestimmten Markierung sucht (und daraufhin Aktionen durchführt).

Gefahr der Aufsplittung des Web durch proprietäre Erweiterungen

Mehr ist in diesem Zusammenhang tatsächlich weniger, weil die fortlaufende Ergänzung einer Sprache durch von Industrie und Autoren gewünschte oder von Herstellern erahnte Tools und Elemente schnell ins Web-Chaos führen könnte. Der Versuch, die eigenen Datenbankinhalte ins Web zu bringen, ist schon heute davon abhängig, mit welchem DBMS man arbeitet, denn dessen (proprietäre) Web-Lösung wird man nutzen müssen, wenn man sich nicht auf die Möglichkeiten von Perl oder anderen Programmiersprachen beschränkt beziehungsweise konzentriert.

7. Elementtypen sind die aus HTML bekannten P und H3. Sie haben, wenn man HTML »richtig« schreibt, jeweils ein Start- (

) und ein End-Tag (

). In der SGML-DTD für HTML ist für eine Reihe von Elementen vorgesehen, dass man ihr End-Tag oder gar beide einfach weglassen kann (Tag-Minimization). Damit ist es in XML vorbei: OMITTAG=NO

24

Warum mehr mehr ist

All dies heißt, dass die Gefahr bestand (und ansatzweise immer noch besteht), dass das World Wide Web auseinanderdriftet. Dem woll(t)en viele entgegenwirken. In den Worten von Jim Cape, aus einem Posting in der Newsgruppe »comp.infosystems.www.authoring.html« (übersetzt nach dem Zitat in [CONN97A]): »Sie [XML, d. A.] wurde entwickelt, um ein für alle Mal die von Microsoft und Netscape propagierten Tag-Suppenkriege zu beenden.« Der Erfolg des Web und seiner Sprache wurde von denjenigen, die ihn erst möglich gemacht hatten, sowohl mit Interesse als auch mit Neid verfolgt. Gemeint ist hier natürlich die SGML-Gemeinde. Natürlich deshalb, weil HTML eine Anwendung der Standard Generalized Markup Language ist: eine Dokumenttyp-Definition8. In ihr hat ursprünglich Tim Berners-Lee vom CERN, dem spätestens seitdem weltberühmten Hochenergie-Physik-Institut in der Schweiz, festgeschrieben, welche Elemente die Hypertext Markup Language ausmachen, das heißt, mit welchen ich meine Texte auszeichnen kann.

1.2

Warum mehr mehr ist

Schade, dass es nur HTML gibt9. Denn was könnte man nicht alles mit Dokumenten im World Wide Web anstellen, wenn die Grenzen von HTML (=feststehender Satz an Elementen) nicht für alle Dokumente gälten. Wobei hiermit gemeint ist, dass man sich eben nicht eigene Elemente definieren kann. Die Zeit, in der es »nur« HTML gab, ist zwar vorbei; das allein klärt aber nicht die Frage, was man mit Dokumenten im Web machen kann. Schließlich hat eine Reihe von Firmen mit den bisherigen Mitteln (vor XML) auch schon vieles gemacht, wovon »normale« HTML-Autoren nur träumen (Softwareverteilung, E-Commerce etc.). Diese Möglichkeiten haben weder die SGML-Anhänger noch das World Wide Web Consortium (meist W3C genannt) ruhen lassen. Eine Arbeitsgruppe hat sich jetzt fast drei Jahre lang damit beschäftigt, wie man das Problem der nicht vorhandenen Erweiterbarkeit von HTML beseitigen kann. 1996 war es soweit, dass ein erster Vorschlag zur Extensible Markup Language (XML) vorgestellt wurde; übrigens im Rahmen einer SGML-Veranstaltung. Ein gutes Vierteljahr später (April 1997) war XML neben dem eigentlichen Hauptthema – Erreichbarkeit/Verwendbarkeit (accessability) von Web-Dokumenten –

XML: SGML

fürs Web

8. Auch heute noch, da die Definition von HTML in XML unter dem Namen XHTML fertig ist, basiert das Web nach wie vor auf der SGML-Version von HTML, weil sie in den Browsern implementiert ist. 9. Wenn hier gelegentlich der Eindruck entsteht, dass HTML »schlecht« sei, dann stimmt das, wenn auch nur insofern, als jetzt, da wir uns an das Web gewöhnt haben, die Nachteile einer festen DTD ins Auge springen. Ohne Tim Berners-Lees Arbeit aber würden wir heute wahrscheinlich nicht über etwas besseres als HTML diskutieren können. Schon deshalb gebührt ihm Dank.

25

1 Einführung

dasjenige Thema, über das auf der World Wide Web Conference 1997 am meisten diskutiert wurde. Aus Sicht der SGML-Anhänger war es mit XML endlich soweit, dass SGML indirekt ins Web kam. Die Erweiterbarkeit (Englisch: extensibility) von Auszeichnungssprachen für Dokumente, die im World Wide Web zur Veröffentlichung kommen sollen, ist der wichtigste Aspekt dieses Buches. Alle noch so technischen Abschnitte sind immer nur die Voraussetzung dafür, dass es in XML darum geht, Beschreibungen für eigene Dokumente zu entwickeln. Nur am Rande – siehe Kapitel 19 – soll es um die erweiterbare Version von HTML (XHTML) gehen. Vielmehr wird es sich um davon unabhängige Dokumentstrukturen handeln. Um das Motto dieses Kapitels zum vorletzten Mal aufzugreifen: Die Beteiligten der genannten Arbeitsgruppe mussten sowohl wagemutig (daring) als auch vorsichtig (cautious) bei ihrem Vorhaben sein. Auf der einen Seite musste schnell etwas geschehen, damit das Web sich nicht innerhalb eines Jahres in zueinander inkompatiblen Teil-Webs entwickelt, auf der anderen ging es darum, das für das Web viel zu komplizierte SGML zu vereinfachen. Dazu mussten Aspekte über Bord geworfen werden, von denen sich mancher ungern trennte. Dennoch war das notwendig, denn nur so war es möglich, innerhalb kurzer Zeit einen Kompromiss zu finden, mit dem alle zufrieden sein konnten. Der Erfolg, den XML nun schon seit zwei Jahren hat, ist an Anwendungen ablesbar, die im Laufe dieser Zeit entstanden sind. Auch die Aktivitäten, die Tools betreffen, sowie beim W3C eingereichte weitere Vorschläge sind Belege dafür. Mittlerweile hat man fast das Gefühl, dass im Web und in der Softwareentwicklung nichts mehr ohne XML geht. Im Vergleich zu HTML bietet XML deshalb mehr Möglichkeiten, weil es eine Metasprache ist. HTML ist, wie oben erwähnt, eine Strukturbeschreibung für Web-Dokumente. XML hingegen ist als Teilmenge von SGML eine Sprache, in der sich wiederum beliebig viele Sprachen wie HTML definieren lassen. XML ist SGML für das Web; aber nicht nur. »Eigentlich reicht HTML doch völlig aus«, könnte der eine oder die andere sagen respektive fragen, was denn an XML besser sei. Ohne den vielen Details, die in späteren Kapiteln folgen, vorzugreifen, lässt sich dazu einiges sagen. XML-Dokumente kann man – beispielsweise über Stylesheets10 – verändern. Um das klassische Beispiel eines Buches (das Buch selbst) zu benutzen: Aus einem Dokument lässt sich ein Inhaltsverzeichnis generieren, das entweder am Anfang steht oder eigenständig ist. Etwas allgemeiner: Aus einem einzigen XML-Dokument kann ich im Prinzip fast beliebig viele WebDokumente machen, etwa eine konkrete Adresse aus einem Adressbuch heraussuchen. Und natürlich ist es möglich, aus XML-Quellen HTML-Dateien zu erzeugen, die ein gemeiner Browser anzeigen kann. Dabei gehen zwar Informationen verloren, aber immerhin bewirkt eine solche Konvertierung generelle Verfügbarkeit. 10. Gemeint sind hier nicht die erwähnten CSS, sondern eine »neue« Sprache, die unter anderem funktionale Elemente enthält und es dadurch erlaubt, den Inhalt von Dokumenten zu bearbeiten, bevor ein Browser sie anzeigt. Siehe dazu vor allem Kapitel 9.

26

Wohin die Reise geht

Ähnlich wie HTML lassen sich XML-Daten »on the fly« aus Datenbankbeständen erzeugen. Allerdings eignet sich diese Auszeichnungssprache besser zur Speicherung in Datenbanken – vor allem in objektorientierten, die eine komplexe Elementstruktur leichter abbilden können als relationale. Die Elemente in XML-Dokumenten müssen strikt ineinander geschachtelt sein. Daher kann man sie als Einheiten (Objekte) betrachten, die sich – samt ihrer Struktur – in einem objektorientierten Datenbanksystem abbilden lassen. Mit HTML-Daten ist das ebenfalls möglich, allerdings entfällt durch die feste Menge an Elementen die Freiheit, eigene Datenstrukturen vorschreiben zu können. Für XML aus Datenbanksystemen gilt natürlich noch mehr, was im vorigen Absatz steht: Datenbankbestände auf unterschiedliche Art und Weise auszugeben, versteht sich fast von selbst. »Wiederverwendbarkeit« ist das dazugehörige Schlagwort. Mittlerweile sind die ersten Produkte auf dem Markt, die als XML-Server bezeichnet werden.

XML und ODBMS: Dokumente aus Datenbankbeständen generieren

Hat sich jemand in XML ein kleines Adressbuch geschaffen, heißt Wiederverwendbarkeit in diesem Maßstab, dass aus den (einmal vorhandenen) Daten Übersichten, Teilansichten und einzelne Adressen als Web-Dokumente werden können; etwas, das mit HTML ohne Datenbankanbindung nicht geht. Mit Dokumenten, die statt in HTML in XML verfasst oder aus Datenbeständen generiert sind, lässt sich auch deshalb viel mehr machen, weil in den Elementnamen und selbst definierten Attributen beziehungsweise deren Werten Information über die eigentlichen Daten enthalten ist. Auf diese so genannten Metadaten kann man ebenfalls zugreifen. Insofern ist mehr wirklich mehr.

Metadaten in den Elementnamen

Schließlich ist da noch der Traum vieler, die XML propagieren: mit XML ein einheitliches (universelles) Datenformat zu besitzen, das sowohl maschinenlesbar als auch für menschliche Augen verständlich ist11. Und: Eine solche Sprache ist auch eine, die Menschen schreiben können.

1.3

Wohin die Reise geht

Otto Web-Normalverbrauchers Homepage wird auf lange Sicht in HTML geschrieben sein. So äußerten sich die Experten noch im April 1997; und sie dürften Recht behalten. Für eine Homepage oder zwei, drei Seiten für Freunde und Verwandte lohnt sich der Aufwand, XML zu lernen, nicht12. Deswegen richtet sich dieses Buch eher an diejenigen, die HTML kennen und bislang schon intensiv damit gearbeitet haben oder planen, das demnächst zu tun.

11. Nein, damit ist nicht gemeint, alle proprietären Datenformate (Textverarbeitungen, Datenbanken) abzuschaffen – obwohl das auch nicht schlecht wäre. 12. In Form von XHTML werden es Webautoren mittelfristig auf jeden Fall mit einer XMLAnwendung zu tun bekommen.

27

1 Einführung

Manchem dürfte XML, vor allem wenn es um die Erstellung der eingangs genannten DTDs geht, wie die scheinbare Unlesbarkeit des Mottos vorkommen. In beiden Fällen gilt: Iss up 2 u reely whot yoos u make ov it aftir that; iss ol about injinooty. Im Ernst: XML ist keine Auszeichnungssprache wie HTML. Als Teilmenge von SGML13 ist es eben eine Spezifikation für die Schaffung beliebig vieler Auszeichnungssprachen. Einige Beispiele solcher Sprachen kommen in diesem Buch vor, und sie sind einfacher nachzuvollziehen als die allseits bekannte Web-Sprache. Sich Sprachen auszudenken, macht bereits kleinen Kindern Spaß. Und trotz des ernsten Hintergrunds – schließlich lernt man komplexe Dinge nicht zum Spaß – glauben wir, dass XML gerade durch sein »X« (die Erweiterbarkeit) Spaß machen kann und wird. Dahin zu gelangen, erfordert Lesearbeit. Das vorliegende Buch soll nicht nur die Grundlage dafür bieten; es soll selbstverständlich auch als Nachschlagewerk dienen und zum Schmökern in den Beispielen einladen. Das eine oder andere hier verwendete Beispiel lässt sich online nachvollziehen. An entsprechender Stelle findet sich jeweils ein Hinweis. Wer mit XML arbeiten will, dem14 stehen sowohl kostenlose als auch kommerziell vertriebene Produkte zur Verfügung (siehe Kapitel 12). Unter http:// www.heise.de/ix/raven/Web/xml/ finden Sie eine – sicherlich unvollständige – Liste frei erhältlicher Software. Es handelt sich um Editoren und Parser sowie Tools für die Erstellung und Verarbeitung von Stylesheets beziehungsweise das Generieren von Daten (HTML, RTF). Natürlich dürfen hier die zehn Aussagen nicht fehlen, die in der Syntaxbeschreibung von XML umreißen, worum es den Entwicklern der Sprache geht und ging: 1. XML soll sich im Internet auf einfache Weise nutzen lassen. 2. XML soll ein breites Spektrum von Anwendungen unterstützen. 3. XML soll zu SGML kompatibel sein. 4. Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten. 5. Die Anzahl optionaler Merkmale in XML soll minimal sein, idealerweise Null. 6. XML-Dokumente sollten für Menschen lesbar und angemessen verständlich sein. 7. Der XML-Entwurf sollte zügig abgefasst werden.

13. Den Fachmann wird's zwar nerven, aber gerade in diesem Kapitel kann man nicht oft genug darauf hinweisen. 14. Ja, auch der ... ;-)

28

Wohin die Reise geht

8. Der Entwurf von XML soll formal und präzise sein. 9. XML-Dokumente sollen leicht zu erstellen sein. 10. Knappheit von XML-Markup ist von minimaler Bedeutung. Die meisten dieser Design-Ziele hängen zusammen, etwa das zweite und dritte: weil SGML eben eine Vielfalt von Anwendungen unterstützt. Nur das letzte Ziel bringt Sie vielleicht zum Schmunzeln. Knappheit in der Auszeichnung (»terseness in markup«) ist deshalb nicht erstrebenswert, weil Maschinen nun einmal Mengendaten gut verarbeiten können. Es soll sich »zwar« um für Menschen lesbare Dokumente handeln, aber für Rechner, die letztlich die Verarbeitung erledigen sollen, ist es völlig unerheblich, wie ausführlich (oder umständlich) die Quelltexte sind. Ein kleines Code-Beispiel (das einzige in diesem Kapitel) zeigt, was gemeint ist:

Meier Heinz

1938 10 29



Trotz der Kürze des Ausschnitts machen die wenigen Zeilen hoffentlich deutlich, dass sich hier eine fast beliebige Tiefe der Struktur erreichen ließe, denn Produktgruppen kann man in einer Art Übergruppe zusammenfassen, die selbst wiederum nur eine Untergruppe von etas anderem ist. Wichtig ist, dass man auf diese Weise eine lange Liste von Referenzen aufbauen kann. Tritt der unwahrscheinliche Fall ein, dass eine Firma ihre Web-Adresse ändert, greift die Webmistress auf die Link-Datei zu und ändert die Referenz. Einmal. Bei den ständigen Änderungen, denen Web-Adressen unterworfen sind, kann das tatsächlich helfen; vor allem aber vermeidet es, falsche Schreibweisen in langen URLs3.

Web-Verwaltung mit Hilfe von XML

Ein solches Vorgehen setzt voraus, dass die Webseiten, auf denen solche Informationen verwendet werden, entweder in HTML gewandelt auf dem Webserver landen oder mit einem Werkzeug wie Cocoon (siehe dazu das Kapitel 18) bearbeitet werden. Bei der Verwaltung von Websites ist der Unterschied zwischen Intranet und Internet nur dann von Bedeutung, wenn intern beispielsweise ein SGML-/ XML-fähiger Browser zum Einsatz kommt4, der Nicht-HTML-Daten nutzt. Selbst unabhängig von der Website lassen sich Einsatzmöglichkeiten denken, die zwar mit Hilfe von SGML schon »immer« vorhanden waren, die aber durch XML ins Bewusstsein von mehr Menschen rücken werden. SoftwareVerwaltung in einem heterogenen Netz etwa kann durchaus mit XML erfolgen (siehe Kapitel 16). Microsofts Channel-Lösung, das Pushing von Webseiten, gehört ebenfalls in diesen Zusammenhang. 3. Auf die Unterscheidung zwischen URL (Uniform Resource Locator) und URI (Universal Resource Identifier) sei hier verzichtet. Es gibt einen Unterschied zwischen beiden, aber der ist für die Betrachtung an dieser Stelle nicht relevant. 4. Der Unterschied wird in ein paar Jahren vielleicht nicht mehr relevant sein, was XML angeht.

49

3 XML im Web

3.2

Clientseitige XML-Interpretation

Statische und dynamisch erzeugte XML-Instanzen lassen sich ebenso wie HTML-Daten verschicken. Die Frage ist, wie die Browser XML darstellen.

3.2.1

XML mit CSS

XML in einem handelsüblichen Browser anzuzeigen, hat Microsoft durch den

hauseigenen Web-Browser Internet Explorer in der Version 5 dadurch gelöst, dass der IE ein XML-Dokument in HTML gewandelt anzeigt, es sich aber um XML handelt, wie die sogenannte »Location«-Zeile zeigt, auf der datei.xml zu sehen ist. Das heißt, ein Dokument mit einer vom Web-Autor selbst gewählten Struktur (und ebensolchen Elementnamen) wird von einem IE-internen XSLT-»Prozessor« mit Hilfe eines Stylesheets »on the fly« gewandelt. Eine DTD ist hierfür nicht erforderlich (siehe Kapitel 11). Die Lösung, nur die XML-Instanz zu schreiben oder zu generieren, hat den Vorteil, dass auch diejenigen, die sich mit dem DTD-Schreiben nicht anfreunden wollen oder können, XML »machen« können. Alles, was nötig ist, ist die oben genannte Wohlgeformtheit, das heißt ein ordentlich strukturiertes Markup, geschlossene Elemente et cetera – ohne DTD. Werkzeuge, die unbedingt die DTD lesen wollen, kann man zwar in solchen Fällen nicht nutzen, aber für einfach strukturierte Dokumente wird CSS reichen. Alles, was Web-Autoren, die von dieser Möglichkeit Gebrauch machen wollen, benötigen, sind das ordentlich ausgezeichnete Ausgangsdokument und ein Stylesheet (Näheres siehe in Kapitel 9).

3.2.2

XML

mit XSL(T)

Bis auf zugegebenermaßen viele Ausnahmen wird eine HTML-Webseite im Quelltext – möglicherweise gemeinsam (wenn auch nicht ganz zeitgleich) mit Bildmaterial und Musik – vom HTTP-Server an den Browser geschickt, der das Material nach den Vorgaben der Datei darstellt. Hinzukommen kann die Übertragung eines Cascading Stylesheets oder auch eines Applets; Videos auf keinen Fall vergessen... Mit XML-Dokumenten und XSL(T)Stylesheets ist das noch nicht möglich, weil die entsprechenden Clients fehlen beziehungsweise nicht weit genug verbreitet sind. Insofern entfällt zumindest für die nächsten Monate die Option, einfach XML-Quellen samt XSL(T)-Stylesheets ins Web zu stellen und darauf zu hoffen, dass die SurferMassen über die eigenen Seiten hereinbrechen5. 5. Der Explorer 5 kann es schon ansatzweise; Netscapes RAMANATHAN GUHA hat schon Ende März 1998 auf der XML98 in Seattle darüber gesprochen, wie Navigator 5 XML unterstützen soll Auf die Realisierung warten wir jetzt immer noch. Immerhin gibt es auf http://www.mozilla.org/ vielversprechende Vorversionen.

50

XML

auf dem Server

In dieser Hinsicht bleibt also ein bisschen Warten. Dennoch hier ein paar Details dazu, was in diesem Fall geschieht. Ein XML-Dokument enthält im Wesentlichen ausgezeichnete Daten. Außerdem sollte das Quelldokument für die Darstellung im Browser eine so genannte Processing Instruction (PI, deutsch etwa: Verarbeitungsanweisung) enthalten, die festlegt, welches Stylesheet hier zum Tragen kommen muss. Es definiert, welche Teile des Dokuments wie darzustellen sind – und welche nicht.

Warten auf »richtige« XML-Browser

"; Date termin = new Date(); termin = df.parse(terminS); long tage = (termin.getTime() - jetzt.getTime()) / 1000 / 60 / 60 / 24;

tage Tagen



type="xsp" type="xslt" href="notiz2html.xslt" type="text/xsl"

java.util.Date java.text.DateFormat



Wir beginnen die Erklärung mit dem Wurzel-Element notiz, dessen Verarbeitung mit xsl:template match="notiz" eingeleitet wird. Die drei anschließenden Zeilen erzeugen in der Ausgabe Processing Instructions, die Cocoon anweisen, das Resultat dieser Transformation nacheinander mit dem XSP-Prozessor (Schritt 2) und anschließend mit dem XSLT-Prozessor zu behandeln (Schritt 3). Letzterer soll dabei notiz2html.xslt verwenden. In Schritt 1 wird die XSP-Seite generiert, die dann von Cocoon ausgeführt wird. Dies passiert implizit und ist nicht zu erkennen. Natürlich wollten wir Ihnen einen Blick hinter die Kulissen gestatten und haben dazu diesen ersten Schritt manuell

334

Cocoon

ausgeführt. Dazu ist lediglich ein Aufruf der XSLT-Maschine Xalan notwendig. Die Kommandozeile und das Ergebnis von Schritt 1 sehen Sie im nächsten Listing. sm@brown{442}: java org.apache.xalan.xslt.Process -in notiz2.xml -xsl notiz-xsp.xslt -out schritt1.xml ========= Parsing file:/home/sm/cocoon/dokumente/demo/notiz-xsp.xslt ========== Parse of file:/home/sm/cocoon/dokumente/demo/notiz-xsp.xslt took 1252 milliseconds ========= Parsing notiz2.xml ========== Parse of notiz2.xml took 110 milliseconds encoding not supported: UTF8, using Java 8859_1 ============================= Transforming... transform took 136 milliseconds XSLProcessor: done

sm@brown{443}: more schritt1.xml



java.util.Date java.text.DateFormat

Termine Weihnachtsmann 24.12.2000 Date jetzt = new Date(); DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT,Locale.GERMANY); String terminS = "24.12.2000"; Date termin = new Date(); termin = df.parse(terminS); long tage = (termin.getTime() - jetzt.getTime()) / 1000 / 60 / 60 / 24; tage Tagen Nicht vergessen: Geschenke austeilen

335

18

XML

und Apache

...

sm@brown{444}: which more more: aliased to /usr/bin/cat

Bemerkenswert ist hierbei die Zeile String terminS = "24.12.2000". Im ursprünglichen Stylesheet stand dort String terminS = "". Der Ausdruck xsl:value-of wurde also von der XSLTMaschine ausgewertet. Beachten Sie insbesondere die ungewöhnlich erscheinende Verschachtelung von Anführungszeichen. Bei diesem Zwischenergebnis handelt es sich also nun um eine xsp:pageSeite, die wieder eine notiz-Instanz generiert. Cocoon extrahiert aus der obigen XSP-Datei eine kompilierbare Java-Datei. Diese Java-Datei wird dann übersetzt und das Compilat als .class-File auf der Festplatte abgelegt. Das Java-Listing sieht wie folgt aus: package _home._sm._cocoon._dokumente._demo; import import import import import import

java.io.*; java.util.*; org.w3c.dom.*; org.xml.sax.*; javax.servlet.*; javax.servlet.http.*;

import org.apache.cocoon.parser.*; import org.apache.cocoon.producer.*; import org.apache.cocoon.framework.*; import org.apache.cocoon.processor.xsp.*; import org.apache.cocoon.processor.xsp.library.*; /* User Imports */ import java.util.Date; import java.text.DateFormat;

public class _notiz2 extends XSPPage { /* User Class Declarations */

public void populateDocument( HttpServletRequest request, HttpServletResponse response, Document document ) throws Exception {

336

Cocoon // Node stack logic variables Node xspParentNode = null; Node xspCurrentNode = document; Stack xspNodeStack = new Stack(); // Make session object readily available HttpSession session = request.getSession(true);

document.appendChild( document.createProcessingInstruction( "cocoon-process", "type=\"xslt\"" ) ); document.appendChild( document.createProcessingInstruction( "xml-stylesheet", " href=\"notiz2html.xslt\" type=\"text/xsl\"" ) ); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("notiz"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("\n ") ); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("titel"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("Termine") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n ") );

337

18

XML

und Apache

xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("autor"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("Weihnachtsmann") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n ") ); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("datum"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("24.12.2000") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("restzeit"); xspParentNode.appendChild(xspCurrentNode);

Date jetzt = new Date(); DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT,Locale.GERMANY); String terminS = "24.12.2000"; Date termin = new Date(); termin = df.parse(terminS); long tage = (termin.getTime() - jetzt.getTime()) / 1000 / 60 / 60 / 24; xspCurrentNode.appendChild( xspExpr(tage, document) );

338

Cocoon xspCurrentNode.appendChild( document.createTextNode(" Tagen") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n ") ); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("absatz"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("Nicht vergessen:\n );

")

xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode); xspCurrentNode = document.createElement("wichtig"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode("Geschenke austeilen") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n ") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n ") ); xspParentNode = xspCurrentNode; xspNodeStack.push(xspParentNode);

339

18

XML

und Apache

xspCurrentNode = document.createElement("absatz"); xspParentNode.appendChild(xspCurrentNode);

xspCurrentNode.appendChild( document.createTextNode(" );

... ")

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); xspCurrentNode.appendChild( document.createTextNode("\n") );

((Element) xspCurrentNode).normalize(); xspCurrentNode = (Node) xspNodeStack.pop(); } }

Hieran ist abzulesen, dass nach und nach die neue Notiz-Instanz durch document.createElement() und document.createTextNode() zusammengebaut wird. An der entscheidenden Stelle werden die Java-Anweisungen aus der XSP-Seite ausgeführt und das Ergebnis in das neue Dokument eingefügt. Nach diesem Schritt 2 liegt wieder eine Notiz vor, die ein neues Element namens restzeit enthält; darin steht die berechnete Anzahl der Tage. Das jetzt arbeitende Stylesheet notiz2html.xslt transformiert in Schritt 3 die Daten abschließend in die nachfolgende HTML-Form. Die Browser-Darstellungen im Navigator und Explorer sind in Abbildung 18.8 und Abbildung 18.9 zu sehen.

Notiz
Termine
vonWeihnachtsmann
für den24.12.2000
in306 Tagen

Nicht vergessen: Geschenke austeilen

...

Copyright © 2000 Stefan Mintert.
XML in der Praxis




type="text/xslfo"





343

18

XML

und Apache









Copyright © 2000 Stefan Mintert. Dieses Beispiel stammt aus der zweiten Auflage von »XML in der Praxis«. http://www.mintert.com/xml/













für den





345

18

XML

und Apache











Aus dem XSLT-Stylesheet kann man fast unmittelbar die spätere XSL-FOAusgabe ablesen. Wichtige globale Festlegungen sind die Seitenmaße (page-height="15cm" und page-width="21cm") sowie die Schriftgröße (font-size="14pt" und line-height="18pt"). Sie werden bei Behandlung des Wurzelelements (xsl:template match="notiz") ausgegeben. Der Textinhalt wird getrennt in Titel (xsl:apply-templates select="titel") und sonstigen Elementen (xsl:apply-templates select="autor|datum|absatz") verarbeitet. Auch die Templates für die Kindelemente von notiz sind einfach zu verstehen. Der Titel wird groß, fett und zentriert gesetzt (font-size="24pt", font-weight="bold", text-align="centered"). Für die anderen Elemente wird jeweils eine eigene Tabellenzeile erzeugt. Was die XSLT-Maschine daraus macht, ist im nächsten Listing zu sehen. sm@brown{558}: java org.apache.xalan.xslt.Process -in notiz3.xml -xsl notiz2fo.xslt -out notiz3.fo ===== Parsing file:/home/sm/cocoon/dokumente/demo/notiz2fo.xslt ====== Parse of file:/home/sm/cocoon/dokumente/demo/notiz2fo.xslt took 790 milliseconds

346

Cocoon

========= Parsing notiz3.xml ========== Parse of notiz3.xml took 108 milliseconds encoding not supported: UTF8, using Java 8859_1 ============================= Transforming... transform took 53 milliseconds XSLProcessor: done

sm@brown{559}: cat notiz3.fo

TerminevonWeihnachtsmannfür den24.12.2000Nicht vergessen: Geschenke austeilen

...

Copyright © 2000 Stefan Mintert. Dieses Beispiel stammt aus der zweiten Auflage von »XML in der Praxis«. http://www.mintert.com/xml/

Abgesehen von der unleserlichen Formatierung ist doch zu erkennen, dass es sich um die gewünschte Ausgabe handelt. Zu beachten ist die Verarbeitungsanweisung cocoon-format type="text/xslfo", die die Formatierung veranlasst. Noch einmal sei betont, dass der Autor mit dieser Datei gar nicht in Berührung kommt. Wir haben hier wieder einen Blick hinter die Kulissen geworfen. Der Web-Surfer bekommt schließlich die formatierte Fassung als PDF-Datei übermittelt. Dessen Darstellung im Acrobat Reader zeigt Abbildung 18.10. Abbildung 18.10: Darstellung des PDF-Dokuments, das direkt aus XML erzeugt wurde

348

Cocoon

18.2.3

Beispiel: Simuliertes XLink mit Dynamic HTML/ JavaScript

Im XLink-Kapitel haben wir Ihnen noch ein praktisches Beispiel versprochen, das wir jetzt nachholen werden. So schön die neuen Linking-Möglichkeiten auf dem Papier auch sind, sie sind eben genau das: nicht mehr als Text. Ohne Unterstützung der Browser kann man XLink/XPointer noch nicht verwenden. – Wenn da nicht Cocoon wäre und uns mit XSLT erlauben würde eine serverseitige Vorverarbeitung durchzuführen. Das Ziel des folgenden Beispiels ist folgendes: Ein XML-Dokument mit einem XLink soll in ein HTML-Dokument transformiert werden, das den Browser dazu bringt, sich genau so zu verhalten wie ein XLink-fähiger Browser. Dies wird dadurch möglich, dass man Browser in gewissem Maße programmieren kann, nämlich mit JavaScript. Wir beginnen mit dem Ausgangsdokument:



Beispiel: Ein XLink-Feature mit JavaScript realisiert

Beispiel: Ein XLink-Feature mit JavaScript realisiert

Dies ist ein Beispiel für einen

Erweiterten Link



. Es handelt sich um einen multidirektionalen Inline-Link. Nach dem Anklicken der lokalen Resource (die markierte Textstelle) öffnet sich ein Auswahlfenster, das die alternativen Linkziele (entfernte

349

18

XML

und Apache

Ressourcen) zeigt. Nach dem Anklicken eines Linkziels schließt sich das Auswahlfenster von selbst.

Dieses Dokument ist ein XML-Dokument, das den Link gemäß XLink-Entwurf enthält. Es wird automatisch mit Hilfe eines XSLT-Stylesheets in HTML/JavaScript gewandelt.



© 2000 Stefan Mintert, »XML in der Praxis«

Was auf den ersten Blick nach HTML aussieht, ist es in Wirklichkeit nicht. Wir haben hier nur einige Elemente aus HTML übernommen. Zusätzlich ist dort aber auch ein Element namens erweitert zu finden. Dieses Element und seine Kindelemente sind XLink-Elemente des im Attribut type jeweils angegebenen Typs. Eigentlich sollte erweitert mit dem Attribut xmlns:xlink="http://www.w3.org/1999/xlink" versehen werden. Alle Attribute der Kindelemente sollten dann mit xlink: eingeleitet werden. Allerdings gab es noch Probleme mit der Namespace-Verarbeitung im XSLTStylesheet, so dass wir hier eine verkürzte Form zeigen. Die prinzipielle Vorgehensweise ändert sich dadurch nicht, auch wenn die Datei hier nicht standard-konform ist. Abbildung 18.11: Das XLink-Beispiel im Navigator: Der Link ist zu erkennen, seine Funktion noch nicht

350

Cocoon

Wir haben dem Link die Rolle »1-zu-n« zugewiesen, um anzuzeigen, dass hier von einer lokalen Ressource (role="quelle") zu beliebig vielen entfernten Ressourcen (role="ziel") verzweigt wird. Es liegt hier also ein multidirektionaler Inline-Link vor. Bevor wir zur Verarbeitung kommen, schauen wir uns zunächst das Verhalten im Web-Browser an. In Abbildung 18.11 ist der Text im Navigator zu sehen. Die Location-Zeile verrät, dass hinter der Seite XML steckt. Es ist zu erkennen, dass der Link in der für HTML üblichen Weise hervorgehoben ist. Nach dem Anklicken (Abbildung 18.12) zeigt sich erst, dass der Link kein einfacher ist. Anstatt eine neue Webseite zu laden, öffnet sich ein kleines Auswahlfenster mit mehreren Zielen – ein multidirektionaler Link. Hier kann der Surfer nun sein gewünschtes Ziel (dokument1.html oder dokument2.html) anklicken; das kleine Fenster verschwindet und das neue Dokument erscheint im ursprünglichen Fenster . Abbildung 18.12: Der erweiterte Link nach dem Anklicken: Ein Auswahlfenster zeigt alle Linkalternativen an

Dieses Verhalten ist eine von vielen Möglichkeiten zur Darstellung eines erweiterten Links. Schauen wir uns nun an, wie die technische Umsetzung aussieht. Das oben gezeigte XML-Dokument benutzt das Stylesheet xlink.xslt. Darin steckt die ganze Magie, wie dem Listing zu entnehmen ist:

351

18

XML

und Apache





352

Cocoon







..., und man verweist auf diesen Absatz mit .... In XHTML müssen Autoren statt name dafür das Attribut id verwenden, weil jeder Verweis auf einen Dokumentbestandteil auf ein Attribut vom Typ ID zeigt – und das ist id. Vorhandene Dokumente kann man darauf »einstellen«, indem man überall dort, wo name="hier" steht, zusätzlich id="hier" vorsieht.

Verweise über das Attribut id vornehmen (statt name)

19.2 Modulare Zukunft Version 1.0 von XHTML ist nur ein Anfang. Mit der nächsten Version (1.1) will das W3C einen Schritt weiter gehen und XHTML in Module aufteilen. Außerdem sollen einige Elemente, von denen das Konsortium schon jetzt abrät (es nennt sie »deprecated«), künftig nicht mehr enthalten sein. Es handelt sich dabei um diejenigen, die die Darstellung eines Dokuments betreffen – und die soll ja im Sinne der Trennung von Inhalt und Form ein Stylesheet bestimmen. Zu den in der Zukunft nicht mehr unterstützten Elementen gehören deswegen font, center und strike. Beispiele für entfallende Attribute sind align und bgcolor. Damit werden viele existierende HTML-Seiten nicht mehr zum aktuellen Standard kompatibel sein, aber die Browser dürften das alte HTML noch eine Weile unterstützen. Die vollständige Liste der vorgesehenen Änderungen enthält der Entwurf für XHTML 1.1 (siehe [W3C00A]). XHTML 1.1 wird aus einer Reihe von Modulen bestehen, aus denen Autoren die für sie passenden zusammenstellen können. Der Entwurf »Modularization for XHTML« listet sie und die in ihnen möglichen Elemente auf. Im Einzelnen auf die im März 2000 vorhandenen Entwürfe einzugehen, ist nicht sinnvoll, weil sie zu schnell ihre Aktualität verlieren. Hier sei lediglich auf die zum jetzigen Zeitpunkt geplante Fertigstellung einzelner Standards verwiesen, wie sie das W3C veröffentlicht hat.

Zukunft: XHTMLModule noch nicht verabschiedet

361

19

XHTML:

Neues

HTML

4 – erweiterbar

Spezifikation

geplante Fertigstellung

XHTML-Modularisierung

April 2000

XHTML 1.1

Juni 2000

XHTML

2.0

Februar 2001

Zu dem letztgenannten Entwurf, der suggeriert, dass das Konsortium längst über Version 1.1 hinaus denkt, liegt noch kein Entwurf vor, den die Öffentlichkeit einsehen kann. Dies gilt auch für diejenigen, die sich mit Neuerungen im Bereich der Event-Behandlung und der Formulare befassen. Noch im Jahre 2000 sollen beide verabschiedet werden. Mit Verzögerungen darf man rechnen.

362

20

Transformation von XML in WML und HTML

Persönliche mobile Kommunikations-Endgeräte werden verwendet, die mit einer Bandbreiten-Informationsrate von mehr als 10 Mb/s arbeiten und die Multimedia-Dienstleistungen empfangen können.1

Delphi' 98 Bislang ist es bei XSLT beziehungsweise den Transformationen (fast) immer um das Ergebnis HTML gegangen. In diesem Kapitel soll es außerdem um ein anderes Zielformat gehen: die Wireless Markup Language (WML), in der Dokumente abgefaßt sein müssen, die von einem Handy oder Personal Digital Assistant (PDA) abgerufen werden können. Solche Daten kann man auf einem »normalen« Webserver wie dem Apache bereithalten; er muss lediglich ein paar neue MIME-Typen kennen, das heißt, die Datei mime.types im Konfigurationsverzeichnis des Apache muss die folgenden Zeilen beinhalten, damit der Server die WML-Daten ausliefern kann: text/vnd.wap.wml wml application/vnd.wap.wmlc wmlc text/vnd.wap.wmlscript wmls application/vnd.wap.wmlscriptc wmlsc

Das s in den Endungen steht für Scripts, das c für eine kompilierte Datei. Für den Apache bedeutet dies, dass er wie gewohnt die Daten über HTTP ausliefert; erst das WAP-Gateway nimmt den Protokollwechsel vor. WML ist anders als HTML. Aber es ist wie dessen Neudefinition (siehe Kapitel

19) eine XML-Anwendung. Das heißt unter anderem, wer WML schreibt oder, wie in diesem Fall, generiert, muss die üblichen XML-Vorgaben beachten: ordentliches Schachteln et cetera. Wer nicht selbst schreibt, sondern WML aus XML generiert, muss sich darüber keine Gedanken machen, weil XSLT und Tools wie XT und Saxon falsches Schachteln anmahnen. WML-Dokumente haben einen Dokumenttyp, dessen offizielle Definition auf dem Server des WAP-Forums liegt2.

1. Diese These aus der Delphi-Studie 1998 wird nach Meinung der Befragten bis ca. 2005/ 2006 Realität werden. 2. Möglicherweise ändert sich das irgendwann, denn das WAP-Forum und das W3C arbeiten gemeinsam an einer neuen Version von WML. Die Beteiligten beim W3C stellen sich das WML der Zukunft als eine Teilmenge des kürzlich verabschiedeten XHTML vor.

363

20 Transformation von XML in

WML

und

HTML

Ausgangspunkt für die Beschäftigung mit WML beziehungsweise WAP war die Tatsache, dass einer der Autoren innerhalb der iX-Redaktion für die CeBIT 2000 eine WML-Demonstration vorbereitet hat, bei der XML eine tragende Rolle spielte.3 Natürlich sollte die CeBIT-Demonstration kein Selbstzweck sein, sondern eine tatsächliche Anwendungsmöglichkeit darstellen. Dazu sollten die Daten, die anlässlich eines kleinen Sonderheftes schon vorhanden waren, sowohl in HTML als auch in WML gewandelt online zur Verfügung stehen. Es handelte sich um eine Liste von Ausstellern zu bestimmten Themen, wie Application Server, Bluetooth oder Java, die man über das Web oder über das Handy leichter finden können sollte. Basis für die Online-Dateien waren zwei Relationen in einer Datenbank: eine, in der die Firmen stehen, und eine, die die CeBIT-Daten beinhaltete. Man hätte sicherlich direkt aus dem DBMS über eine Reihe Reports HTML und WML erzeugen könen, aber wie dieses Kapitel zeigen wird, ist die Lösung, auf XML aufzubauen, variabler. Dies aus zwei Gründen: erstens, weil sich aus dem Zwischenformat XML viele Zielformate erzeugen lassen; und zweitens ermöglicht es ein Programm wie Saxon, beliebig viele Dateien über ein einziges Stylesheet zu generieren. Dementsprechend ging es zunächst darum, eine XML-Basisdatei zu generieren, aus der über XSLT unterschiedliche Sichten erzeugt werden sollten. WML-Dateien

dürfen nicht allzu groß sein, damit der Speicher eines Handys nicht überlastet wird. Es war also von vornherein darauf zu achten, die resultierenden Dateien möglichst klein zu halten. Wir gingen nach Gesprächen mit Experten davon aus, dass es auf keinen Fall mehr als 3000 Zeichen sein dürfen.

Jede WML-Einheit ist ein Deck (englisch für einen Kartenstapel). Inkonsequenterweise heißt das Top-Level-Element aber nicht deck, sondern wml. Konsequenterweise heißen die einzelnen Karten card. Innerhalb dieser ist eine HTML nicht unähnliche Syntax vorgesehen, wie das Ergebnis der Transformation zeigt4. Damit Sie einen Einblick bekommen, wie solch eine WMLDatei aussieht, wollen wir Ihnen ein Listing in dieser Auszeichnungssprache nicht länger vorenthalten. Die hier wiedergegebene Datei wap4.wml ist eine von circa 100, die mit dem später folgenden XSLT-Stylesheet erzeugt wird:

3. An dieser Stelle sei Jürgen Seeger, dem iX-Chefredakteur, gedankt, weil er nicht nur die Genehmigung dazu gegeben hat, die Quellen hier zu verwenden, sondern auch wesentlichen Anteil am Fortschritt und Debugging des XSLT-Codes hatte. 4. Vorgezogen ist das Listing an dieser Stelle, weil wir das Stylesheet noch gar nicht behandelt haben :-)

364





Comma Soft AG
Halle 4, Stand A61
Produkt: helpLINE W@PDesk - WAP-Anbindung fuer CallCenter und Hotlines









Eingeschlossen vom Element CeBIT folgen verschiedene Produktgruppen (von appsrv wie Application Server bis wbt wie Windows Based Terminals), darin befinden sich die Firmeneinträge. Um sicherzustellen, dass tatsächlich nicht mehr als 3000 Zeichen in einer Datei landen, hat bereits der DB-Report jede dieser Produktgruppen in Fünferblocks aufgeteilt5. Anstatt wie hier (siehe die folgende DTD) Elementnamen wie appsrv, datam (für Data Mining) oder linux für die Produktgruppen zu verwenden, hätte es gereicht, »ein« Element productgroup mit dem entsprechenden Attribut zu benutzen. Dass das nicht geschehen ist, lag größtenteils daran, dass es sich als nicht trivial erwies, kleine Gruppen (mit jeweils fünf Einträgen) ohne group zu verarbeiten. Nur durch die Saxon-Erweiterungen war das in den Griff zu bekommen. Eine möglichst kurz gehaltene Dokumentstruktur sieht etwa so aus:

wml







369

20 Transformation von XML in

WML

und

HTML











370

Erzeugen der WML-Dateien






Halle

, Stand


Produkt:





prev Prev

#





prev Prev



.wml#

5





html









http://







377

20 Transformation von XML in

WML

und

HTML

Halle

, Stand

(Produkt:

)



'

Kommentare

Ein Beispiel für einen Kommentar:









464

Syntax der

XSLT-Elemente









465

D Übersichten









466

Syntax der

XSLT-Elemente















D.4

DTD-Fragment

für (nicht normativ)

XSLT-Stylesheets

Die folgende Liste entspricht Anhang C der XSLT-Spezifikation, dem die hier übersetzten folgenden Absätze vorangestellt sind. Notiz: Dieses DTD-Fragment ist nicht normativ, weil XML-1.0-DTDs die XMLNamensräume nicht unterstützen und deshalb die erlaubte Struktur eines XSLTStylesheets nicht korrekt beschreiben können. Das folgende Entity lässt sich benutzen, eine DTD für XSLT-Stylesheets zu konstruieren, die Instanzen einer bestimmten Ergebnis-DTD konstruieren. Vor dem Referenzieren des Entity muss die Stylesheet-DTD ein ParameterEntity namens result-elements definieren, das die erlaubten Ergebnis-Elementtypen auflistet. Beispielsweise:

Solche Elemente sollten so deklariert sein, dass sie xsl:use-attribute-sets und xsl:extension-element-prefixes haben. Das folgende Entity deklariert die result-element-atts-Parameter zu diesem Zweck. Der Inhalt, den XSLT für Ergebniselemente erlaubt, ist derselbe, den es für XSLT-Elemente erlaubt, die in dem folgenden Entity mit einem Inhaltsmodell von %template; deklariert sind. Die DTD darf ein restriktiveres Inhaltsmodell als %template; nutzen, um die Beschränkungen der Ergebnis-DTD zu berücksichtigen. Die DTD darf das Parameter-Entitiy non-xsl-top-level definieren, um weitere Top-Level-Elemente außer dem XSLT-Namensraum zu erlauben. Der Gebrauch des xsl:-Präfix in dieser DTD impliziert nicht, dass XSLT-Stylesheets dieses Präfix nutzen müssen. Jedes in dieser DTD deklarierte Element kann Attribute haben, die mit xmlns: anfangen oder xmlns gleichen – über die Attribute, die in dieser DTD deklariert sind, hinaus.













474

DTD-Fragment

für XSLT-Stylesheets (nicht normativ)













475

D Übersichten











476

Relevante Spezifikationen und Organisationen

D.5

Relevante Spezifikationen und Organisationen

Dieser Abschnitt nennt eine Reihe wichtiger Standards und enthält Informationen über sie oder verrät, wo Informationen zu finden sind. Grundsätzlich sind die XML Cover Pages eine gute Link- und Informationssammlung. Sie sind im Web unter der Adresse http://www.oasis-open.org/cover/ zu finden. Da die Sammlung dort aber sehr umfangreich ist, haben wir im Folgenden eine Vorauswahl für Sie getroffen.

D.5.1

International Organization for Standardization

Die Internationale Organisation für Standardisierung (ISO), mit Sitz in Genf, ist natürlich ebenfalls im Web vertreten: http://www.iso.ch/. Deutsches Mitglied der ISO ist das Deutsche Institut für Normung e.V. (DIN, http://www.din.de/). Die österreichische Vertretung ist das Österreichische Normungsinstitut (ON, http:// www.on-norm.at/) und die Schweiz wird durch die Schweizerische NormenVereinigung (SNV, http://www.snv.ch/) vertreten. Im technischen Bereich muss neben der ISO unbedingt die 40 Jahre früher gegründete International Electrotechnical Commission (IEC, http://www.iec.ch/) erwähnt werden. Aufgrund der Zusammenarbeit tragen viele Normen das Präfix ISO/IEC. SGML (ISO 8879) Informationen über SGML, dem Vorfahren von XML, sind auf den XML Cover Pages sowie in [GOLD97] zu finden. Von Interesse ist auch die »International SGML/XML Users' Group«: http://www.isgmlug.org/ DSSSL (ISO/IEC 10179) Gute Texte über die Formatierungssprache für SGML sowie die beste Implementierung gibt es bei James Clark (http://www.jclark.com/dsssl/).

HyTime (ISO/IEC 10744) Den Einstieg in die Hypermedia/Time-based Structuring Language findet man am besten auf der »HyTime Users' Group Home Page« http://www. hytime.org/. HyTime hat viele Grundlagen für die Linking-Spezifikationen für XML geschaffen. Topic Maps (ISO/IEC 13250) Die 2000 verabschiedete Norm Topic Maps dient zur thematischen Gruppierung von Informationsobjekten (dies könnten zum Beispiel Webseiten sein) und zum Beschreiben der zwischen ihnen bestehenden Relationen. Informationen darüber haben wir über die HyTime-Seite gefunden. Eine Entwurfsfassung der Norm ist zur Zeit unter http://www.ornl.gov/sgml/sc34/document/ 0058.htm zu finden. ISO/IEC 10646-1 Zu dieser Norm gehören »Universal Multiple-Octet Coded Character Set (UCS)«, »Transformation Format for 16 planes of group 00 (UTF-16)« sowie »UCS Transformation Format 8 (UTF-8)«. Es handelt sich dabei um die für XML

477

D Übersichten

zugrunde gelegte Zeichenkodierung. Für den praktischen Einsatz ist die »offizielle Implementierung« namens Unicode wichtig (Zitat von der UnicodeSite). Informationen sind unter http://www.unicode.org/ zu finden. Die im Februar 2000 veröffentlichte Version 3.0 von Unicode ist mit der Second Edition von ISO/IEC 10646-1 abgeglichen. HyperText Markup Language (HTML, ISO/IEC 15445:2000) Diese Variante von HTML 4 wird üblicherweise als ISO-HTML bezeichnet. Eine Beschreibung der beiden Herausgeber, DAVID M. ABRAHAMSON und ROGER PRICE, ist unter http://purl.org/NET/ISO+IEC.15445/Users-Guide.html zu finden. ECMAScript

language specification (ISO/IEC 16262:1998) Die von der ECMA (European association for standardizing information and communication systems) genormte Variante von JavaScript, genannt ECMAScript, ist auch von der ISO anerkannt worden. Der Text kann kostenlos von der ECMA angefordert werden (http://www.ecma.ch/).

D.5.2

World Wide Web Consortium

Über das World Wide Web Consortium (W3C) muss man wohl keine großen Worte mehr verlieren. Bei den Mitgliedern des Ende 1994 gegründeten Konsortiums handelt es sich um Firmen und Organisationen aus der ganzen Welt – aus Deutschland sind es derzeit (März 2000) circa zwanzig, darunter Siemens und SAP –, die sich meistens aus kommerziellen Gründen für die Weiterentwicklung des World Wide Web interessieren. Das W3C gibt die maßgeblichen technischen Spezifikationen heraus. Diese Texte sind im Web unter http://www.w3.org/tr/ zu finden. Da fast jedes der dort zu findenden Dokumente in der einen oder anderen Weise mit XML zu tun hat, verzichten wir hier auf eine Auflistung. Informationen über das deutsche W3C-Büro gibt es unter http://www.w3.org/ Consortium/Offices/Germany/. In Österreich und der Schweiz gibt es bislang keine Niederlassung.

D.5.3

Organization for the Advancement of Structured Information Standards

ist eine Organisation, die sich der Verbreitung von offenen Standards wie XML verschrieben hat. Im Gegensatz zum W3C gibt sie selbst keine technischen Spezifiaktionen heraus. Außerdem ist die Mitgliedschaft nicht auf Firmen beschränkt, sondern steht auch Einzelpersonen offen. OASIS gilt als weniger abhängig von Firmeninteressen.

OASIS

Die OASIS-Homepage findet man unter http://www.oasis-open.org/. OASIS betreibt auch das Portal XML.org unter der gleichnamigen Adresse http:// xml.org/.

478

Relevante Spezifikationen und Organisationen

D.5.4

Internet Society und Internet Engineering Task Force

Die Internet Society (ISOC) kümmert sich um die offene Weiterentwicklung des Internet. Eine wichtige Rolle nimmt die mit ihr assoziierte Internet Engineering Task Force (IETF) ein. Die wichtigsten Veröffentlichungen der IETF sind die Requests for Comments (RFC), die zum Beispiel die Standards für alle Internet-Protokolle beschreiben. Die offiziellen Websites sind: http://www.isoc.org/ , http://www.ietf.org/, http://www.rfc-editor.org/ Für das Web wichtige RFCs sind unter anderen: HTTP/1.1 (RFC 2616) und HTTP Authentication (RFC 2617).

D.5.5

ISO-639-Sprachcodes

Es folgt eine Auswahl von Ländercodes gemäß ISO 639. Diese Codes werden zum Beispiel im Attribut xml:lang verwendet, um die Sprache des Inhalts zu kennzeichnen. Beispiel: de. In der XML-Spezifikation in diesem Buch sind genaue Informationen zur Identifikation der Sprache in Abschnitt A.2.12 zu finden. Code

Sprache

ar

Arabisch

bg

Bulgarisch

ch

Chinesisch

cs

Tschechisch

da

Dänisch

de

Deutsch

en

Englisch

es

Spanisch

fi

Finnisch

fr

Französisch

gr

Griechisch

hr

Kroatisch

hu

Ungarisch

is

Isländisch

it

Italienisch

ja

Japanisch

la

Lateinisch

nl

Holländisch

no

Norwegisch

479

D Übersichten

Code

Sprache

pl

Polnisch

pt

Portugiesisch

ro

Rumänisch

ru

Russisch

sv

Schwedisch

tr

Türkisch

D.5.6

ISO-3166-Ländercodes

Es folgt eine Auswahl von Ländercodes gemäß ISO 3166. Diese Codes werden zum Beispiel im Attribut xml:lang verwendet, um nationale Ausprägungen der Sprache zu kennzeichnen. Beispiel: de-CH. Die in der Tabelle aufgelisteten Ländernamen sind die offiziellen englischen Kurzbezeichnungen. Dahinter ist gegebenenfalls der deutsche Name zu finden. In der XML-Spezifikation in diesem Buch sind genaue Informationen zur Identifikation der Sprache in Abschnitt A.2.12 zu finden.

480

Land

Code

Australia (Australien)

AU

Österreich (Austria)

AT

Belgien (Belgium)

BE

Bulgaria (Bulgarien)

BG

Canada (Kanada)

CA

China

CN

Croatia (Kroatien)

HR

Cyprus (Zypern)

CY

Czech Republic (Tschechische Republik)

CZ

Denmark (Dänemark)

DK

Finland (Finnland)

FI

France (Frankreich)

FR

Germany (Deutschland)

DE

Greece (Griechenland)

GR

Hungary (Ungarn)

HU

Iceland (Island)

IS

India (Indien)

IN

Ireland (Irland)

IE

Israel

IL

Relevante Spezifikationen und Organisationen

Land

Code

Italy (Italien)

IT

Japan

JP

Liechtenstein

LI

Luxembourg

LU

Netherlands (Niederlande)

NL

Norway (Norwegen)

NO

Poland (Polen)

PL

Portugal

PT

Romania (Rumänien)

RO

Russian Federation (Russische Föderation)

RU

Slovakia (Slowakei)

SK

Spain (Spanien)

ES

Sweden (Schweden)

SE

Switzerland (Schweiz)

CH

Turkey (Türkei)

TR

United Kingdom (Vereinigtes Königreich)

GB

United States (Vereinigte Staaten)

US

Yugoslavia (Jugoslawien)

YU

D.5.7

Zeichensatz ISO-Latin-1

Das folgende Listing zeigt eine Übersicht des Zeichensatzes ISO-Latin-1. Bei der Übersicht handelt es sich um die Deklaration der Character Entities für XHTML 1.0. Die Zeichen können in dieser Form deklariert und etwa als Ä benutzt werden. Alternativ kann man die Zeichen auch direkt eintippen, also etwa als »Ä«. Dann ist es notwendig, dass die XML-Deklaration den Vermerk encoding="ISO-8859-1" trägt. Voraussetzung ist natürlich, dass die Zeichen dann tatsächlich als ISO-Latin-1 kodiert werden, dass zum Beispiel das »Ä« im Zeichensatz an der (dezimalen) Position 196 steht.

481

D Übersichten "¢"> "¤"> "¦"> "¨"> "ª"> "¬"> "®"> "°"> "²"> "´"> "¶"> "¸"> "º"> "¼"> "¾"> "À"> "Ü"> "Þ"> "à"> "â"> "ä"> "æ"> "è"> "ê"> "ì"> "î"> "ð"> "ò"> "ô">

Relevante Spezifikationen und Organisationen "ø"> "ú"> "ü"> "þ">

Sonderzeichen

Es folgt eine Auflisting der für XHTML 1.0 deklarierten Sonderzeichen. Darunter befindet sich auch das Euro-Zeichen.



485

D Übersichten



em space, U+2003 ISOpub --> thin space, U+2009 ISOpub --> zero width non-joiner, U+200C NEW RFC 2070 --> '

[16]

PI

::=

'' Char*)))? '?>'

[17]

PITarget

::=

Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

[18]

CDSect

::=

CDStart CData CDEnd

[19]

CDStart

::=

'' Char*))

[21]

CDEnd

::=

']]>'

[22]

prolog

::=

XMLDecl? Misc* (doctypedecl Misc*)?

[23]

XMLDecl

::=

''

[24]

VersionInfo

::=

S 'version' Eq (' VersionNum ' | " VersionNum ")

[25]

Eq

::=

S? '=' S?

[26]

VersionNum

::=

([a-zA-Z0-9_.:] | '-')+

487

D Übersichten

488

[27]

Misc

::=

Comment | PI | S

[28]

doctypedecl

::=

''

[29]

markupdecl

::=

elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment

[30]

extSubset

::=

TextDecl? extSubsetDecl

[31]

extSubsetDecl

::=

( markupdecl | conditionalSect | PEReference | S )*

[32]

SDDecl

::=

S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))

[33]

LanguageID

::=

Langcode ('-' Subcode)*

[34]

Langcode

::=

ISO639Code | IanaCode | UserCode

[35]

ISO639Code

::=

([a-z] | [A-Z]) ([a-z] | [A-Z])

[36]

IanaCode

::=

('i' | 'I') '-' ([a-z] | [A-Z])+

[37]

UserCode

::=

('x' | 'X') '-' ([a-z] | [A-Z])+

[38]

Subcode

::=

([a-z] | [A-Z])+

[39]

element

::=

EmptyElemTag | STag content ETag

[40]

STag

::=

''

[41]

Attribute

::=

Name Eq AttValue

[42]

ETag

::=

''

[43]

content

::=

(element | CharData | Reference | CDSect | PI | Comment)*

[44]

EmptyElemTag

::=

''

[45]

elementdecl

::=

''

[46]

contentspec

::=

'EMPTY' | 'ANY' | Mixed | children

[47]

children

::=

(choice | seq) ('?' | '*' | '+')?

[48]

cp

::=

(Name | choice | seq) ('?' | '*' | '+')?

[49]

choice

::=

'(' S? cp ( S? '|' S? cp )* S? ')'

[50]

seq

::=

'(' S? cp ( S? ',' S? cp )* S? ')'

[51]

Mixed

::=

'(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#PCDATA' S? ')'

[52]

AttlistDecl

::=

''

[53]

AttDef

::=

S Name S AttType S DefaultDecl

[54]

AttType

::=

StringType | TokenizedType | EnumeratedType

[55]

StringType

::=

'CDATA'

[56]

TokenizedType

::=

'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS'

XML-1.0-Regeln

[57]

EnumeratedType

::=

NotationType | Enumeration

[58]

NotationType

::=

'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'

[59]

Enumeration

::=

'(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'

[60]

DefaultDecl

::=

'#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)

[61]

conditionalSect

::=

includeSect | ignoreSect

[62]

includeSect

::=

''

[63]

ignoreSect

::=

''

[64]

ignoreSectContents

::=

Ignore ('' Ignore)*

[65]

Ignore

::=

Char* - (Char* ('') Char*)

[66]

CharRef

::=

'&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'

[67]

Reference

::=

EntityRef | CharRef

[68]

EntityRef

::=

'&' Name ';'

[69]

PEReference

::=

'%' Name ';'

[70]

EntityDecl

::=

GEDecl | PEDecl

[71]

GEDecl

::=

''

[72]

PEDecl

::=

''

[73]

EntityDef

::=

EntityValue | (ExternalID NDataDecl?)

[74]

PEDef

::=

EntityValue | ExternalID

[75]

ExternalID

::=

'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral

[76]

NDataDecl

::=

S 'NDATA' S Name

[77]

TextDecl

::=

''

[78]

extParsedEnt

::=

TextDecl? content

[79]

extPE

::=

TextDecl? extSubsetDecl

[80]

EncodingDecl

::=

S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )

[81]

EncName

::=

[A-Za-z] ([A-Za-z0-9._]| '-')*

[82]

NotationDecl

::=

''

[83]

PublicID

::=

'PUBLIC' S PubidLiteral

489

Bibliographie [ABEL91]

Abelson, Harold; Gerald Jay Sussman; Julie Sussman: Struktur und Interpretation von Computerprogrammen. Berlin u.a., Springer 1991

[BEHM98A]

Behme, Henning: Mauerwerk en détail. In: iX, 1/1998, http://www.heise.de/ix/artikel/1998/01/116/

[BEHM98B]

Behme, Henning: Daten verpflichten. In: iX, 5/1998, Seite 138, http://www.heise.de/ix/artikel/1998/03/138/

[BEMI98A]

Behme, Henning; Stefan Mintert: Klammern gehört zum Handwerk. In iX, 3/1998, Seite 156, http://www.heise.de/ix/artikel/ 1998/03/156/

[BERN96A]

Berners-Lee, Tim: The Myth of Names and Addresses. 1996, http://www.w3.org/DesignIssues/NameMyth.html

[BERN97A]

Berners-Lee, Tim: Metadata Architecture. 1997, http:// www.w3.org/DesignIssues/Metadata

[BERN97B]

Berners-Lee, Tim: Filtering and Censorship. 1997, http:// www.w3.org/DesignIssues/Filtering.html

[BERN99]

Berners-Lee, Tim; Mark Fischetti: Weaving the Web. San Francisco, HarperSanFrancisco 1999

[BING96]

Bingham, Harvey: DSSSL Syntac Summary Index. 1996, http:// www.tiac.net/users/bingham/dssslsyn/index.htm

[BOSA96]

Bosak, Jon: DSSSL Online Application Profile. 1996, http://sunsite.unc.edu/pub/sun-info/standards/dsssl/dssslo/do960816.htm

[BOSA97A]

Bosak, Jon: XML, Java, and the future of the Web. 1997, http:// sunsite.unc.edu/pub/sun-info/standards/xml/why/xmlapps.htm

[BOSA97B]

Bosak, Jon: XML Part 3: Style [NOT YET] Version 1.0. 1997, http://sunsite.unc.edu/pub/sun-info/standards/dsssl/xs/ xs970522.ps.zip

[BOSA97C]

Bosak, Jon: Extensible Style Sheet Language (XSL) Version 0.2. 1997, http://sunsite.unc.edu/pub/sun-info/standards/xsl/0.2/xsl19971010.ps.zip

[BOSA99]

Bosak, Jon: XML Overview. 1999, http://www.ebxml.org/documents/contributions/ebXML_19991117_bosak/sld00000.htm

[BUSH45]

Bush, Vannevar: As We May Think. In The Atlantic Monthly, 7/1945, http://www.isg.sfu.ca/~duchier/misc/vbush/

[CHAH97]

Chahuneau, François: Beyond the SGML DTD. 1997, http://www.sil.org/sgml/chahuneauXML.html

491

Bibliographie

492

[CLARK97]

Clark, James: Comparison of SGML and XML. 1997, http://www.w3.org/TR/NOTE-sgml-xml-971215

[CLARK98]

Clark, James: Associating stylesheets with XML documents. 1998, http://www.w3.org/TR/NOTE-xml-stylesheet

[CLARK99]

Clark, James: XML Namespaces. 1999, http://www.jclark.com/ xmlns.htm

[CONN97]

Connolly, Dan: XML: Principles, Tools and Techniques. Sebastopol/CA, O'Reilly 1997

[CONN97A]

Connolly, Dan; Rohit Khare; Adam Rifkin: The Evolution of Web Documents. In: [CONN97]

[CULS97]

Culshaw, Stuart; Michael Leventhal; Murray Maloney: XML and CSS. In: [CONN97]

[DEME97]

Denning, Peter J.; Robert M. Metcalfe: Beyond Calculation. New York, Copernicus (Springer) 1997

[DEDU94]

DeRose, Stephen; David G. Durand: Making Hypermedia Work. Kluwer Academic Press 1994

[DIJK97]

Dijkstra, Edsger W.: The Tide, Not the Waves. In [DEME97]

[ENGE62]

Engelbart, Douglas C.: Augmenting Human Intellect. 1962, http://www.histech.rwth-aachen.de/www/quellen/engelbart/ ahi62index.html

[GERM97]

Germán, Daniel M.: An Introduction to DSSSL. 1997, http://csg.uwaterloo.ca/~dmg/dsssl/tutorial/tutorial.html

[GOLD90]

Goldfarb, Charles F.: The SGML Handbook. Oxford University Press 1990

[GOLD97]

Goldfarb, Charles F.: The SGML History Niche. 1997, http://www.sgmlsource.com/history/index.htm

[GMS94]

Goossens, Michel; Frank Mittelbach; Alexander Samarin: The LaTeX Companion. Reading/MA, Addison-Wesley 1994

[GROS97]

Grosso, Paul: XSL – a proposed stylesheet for XML. 1997, http://www.arbortext.com/xslwp.html

[HOFM94]

Hofmeyer, Jörg: Layoutbeschreibungen: Ein Vergleich zwischen FOSI und DSSSL. In SGML in der Praxis, April/1994

[ISO92]

Hypermedia/Time-based Structuring Language (HyTime), ISO/ IEC 10744:1992. 1992, http://www.ornl.gov/sgml/wg8/hytime/ is10744r.html

[ISO96A]

Goldfarb, Charles F.: TC for Extended Naming Rules. 1996, http://www.sgmlsource.com/8879rev/n1896rev.htm

[ISO96B]

Document Style Semantics and Specification Language, ISO/IEC 10179:1996. 1996, ftp://ftp.ornl.gov/sgml/wg8/dsssl

[ISO97]

Goldfarb, Charles F.: ISO 8879 TC2. 1997, http://www.sgmlsource.com/8879rev/n1955.htm

[LAND92]

Landow, George P.: Vannevar Bush and the Memex. 1992, http://muse.jhu.edu/press/books/landow/memex.html

[LIBO97]

Lie, Håkon Wium; Bert Bos: Cascading Style Sheets. Bonn, Addison-Wesley 1997

[LIGH97]

Light, Richard: Presenting XML. Indianapolis, IN, sams.net 1997

[MACH97]

Macherius, Ingo: Revolution der Experten. In iX, 6/1997, Seite 106, http://www.heise.de/ix/artikel/1997/06/106/

[MALE96]

Maler, Eve; Jeanne L. Andaloussi: Developing SGML DTDs. Upper Saddle River/NJ, Prentice-Hall 1996

[MADE97]

Maden, Chris: Converting SGML to Tagged MIF with Jade. 1997, http://www.oreilly.com/people/staff/crism/dsssl/sgml2mif.html

[MEGG98]

Megginson, David: Structuring XML Documents. Upper Saddle River, NJ, Prentice-Hall 1998

[MICR98]

XSL Tutorial. 1998, http://www.microsoft.com/xml/xsl/tutorial/ tutorial.htm

[MINT95]

Mintert, Stefan: Leise Revolution. In iX, 7/1995, Seite 126

[MINT97]

Mintert, Stefan: Auszeichnungssprachen im WWW. Universität Dortmund 1997

[MINT97A]

Mintert, Stefan: Der Weg der Tugend. In iX, 3/1997, Seite 130, http://www.heise.de/ix/artikel/1997/03/130/

[MINT97B]

Mintert, Stefan: JavaScript 1.2. Bonn, Addison Wesley 1997

[MIBE98]

Mintert, Stefan; Henning Behme: Vorsicht, Markup. In iX, 6/ 1998

[MTN99]

Maruyama, Hiroshi; Kent Tamura; Naohito Uramoto: XML and Java: Developing Web Applications. Reading/MA, AddisonWesley 1999

[MUEN97]

Münz, Stefan: Hypertext v 1.2. 1997, http://www.teamone.de/ hypertext/

[NELS93]

Nelson, Theodor Holm: Literary Machines 93.1. Sausalito/CA, Mindful Press 1993

[NELS96]

Nelson, Theodor: Xanadu and OSMIC. 1996, http:// www.sfc.keio.ac.jp/~ted/xanadu.and.osmic.html

[NELS97]

Nelson, Theodor: Embedded markup considered harmful. In [CONN97]

[PORL93]

Peek, Jerry; Tim O'Reilly; Mike Loukides: UNIX Power Tools. Sebastopol/NY, O'Reilly & Associates/Random House 1993

[PEPP98]

Pepper, Steve: The Whirlwind Guide to SGML & XML Tools and Vendors. 1998, http://www.infotek.no/sgmltool/guide.htm

[PRES97]

Prescod, Paul: Introduction to DSSSL. 1997, http://itrc.uwaterloo.ca/~papresco/dsssl/tutorial.html

493

Bibliographie

494

[RAGG97]

Raggett, Dave; Jenny Lam; Ian Alexander: HTML 3.2. Bonn, Addison-Wesley 1997

[RAGG98]

Raggett, Dave; Jenny Lam; Ian Alexander; Michael Kmiec: HTML 4. Bonn, Addison-Wesley 1998

[RUBI96]

Rubinksy, Yuri; Murray Maloney: SGML on the Web. Upper Saddle River/NJ, Prentice-Hall 1996

[SPBU94]

Sperberg-McQueen, Chris M.; Lou Burnard: Guidelines for Electronic Text Encoding and Interchange. Chicago, 1994

[STLA98]

St. Laurent, Simon: XML A Primer. Foster City/CA, MIS Press 1998

[STRO99]

Strom, David: Microsoft's XML is More Than Just Standards. 1999, http://www.webreview.com/wr/pub/1999/04/02/edge/ index.html

[THOM97]

Thompson, Henry S.: An Introduction to XSL. 1997, http:// www.ltg.ed.ac.uk/~ht/swindon.html

[W3C96A]

Cascading Style Sheets, level 1. 1996, http://www.w3.org/TR/ REC-CSS1

[W3C97A]

CSS2 Specification Release. 1997, http://www.w3.org/TR/WDCSS2/

[W3C97B]

Berners-Lee, Tim: W3C Data Formats. 1997, http://www.w3.org/ TR/NOTE-rdfarch

[W3C97C]

Guha, Ramanathan V.; Tim Bray: Meta Content Framework Using XML. 1997, http://www.w3.org/TR/NOTE-MCF-XML970624/

[W3C97D]

Resource Description Framework. 1997, http://www.w3.org/ RDF/Overview.html

[W3C97E]

Adler, Sharon; Anders Berglund; James Clark; Istvan Cseri; Paul Grosso; Jonathan Marsh; Gavin Nicol; Jean Paoli; David Schach; Henry Thompson; Chris Wilson: A Proposal for XSL. 1997, http://www.w3.org/TR/NOTE-XSL.html

[W3C97F]

Lassila, Ora; Ralph R. Swick: Resource Description Framework (RDF) Model and Syntax. 1997, http://www.w3.org/Metadata/ RDF/Group/WD-rdf-syntax

[W3C97G]

Byrne, Steve: Document Object Model (Core) Level 1. 1997, http://www.w3.org/WD-DOM/level-one-core

[W3C97H]

Nicol, Gavin; Mike Champion: Document Object Model (XML) Level 1. 1997, http://www.w3.org/TR/WD-DOM/level-one-xml

[W3C98A]

Design Issues. 1998, http://www.w3.org/DesignIssues/ Overview.html

[W3C98B]

Web Architecture: Extensible languages. 1998, http://www.w3.org/DesignIssues/Extensible.html

[W3C98C]

Layman, Andrew; Edward Jung; Eve Maler; Henry S. Thompson; Jean Paoli; John Tigue; Norbert H. Mikula; Steve DeRose: XMLData. 1998, http://www.w3.org/TR/1998/NOTE-XML-data

[W3C98D]

Bray, Tim; Jean Paoli; C. M. Sperberg-McQueen: Extensible Markup Language (XML) 1.0. 1998, http://www.w3.org/TR/REC-xml

[W3C98E]

Maler, Eve; Steve DeRose: XML Linking Language (XLink). 1998, http://www.w3.org/TR/1998/WD-xlink-19980303

[W3C98F]

Maler, Eve; Steve DeRose: XML Pointer Language (XPointer). 1998, http://www.w3.org/TR/1998/WD-xptr-19980303

[W3C98G]

Maler, Eve; Steve DeRose: XML Linking Language (XLink) Design Principles. 1998, http://www.w3.org/TR/1998/NOTE-xlinkprinciples

[W3C98H]

Bray, Tim; Dave Hollander; Andrew Layman: Namespaces in XML. 1998, http://www.w3.org/TR/1998/WD-xml-names

[W3C98I]

Brickley, Dan; Ramanathan V. Guha; Andrew Layman: Resource Description Framework (RDF) Schemas. 1998, http://www.w3.org/TR/1998/WD-rdf-schema-19980409

[W3C99A]

Clark, James: XSL Transformations (XSLT) Version 1.0. , http://www.w3.org/TR/xslt

[W3C99B]

Clark, James; Steve DeRose: XML Path Language (XPath)., http://www.w3.org/TR/xpath

[W3C99C]

Maler, Eve; Steve DeRose; Ron Daniel jr.: XML Pointer Language (XPointer). 1999, http://www.w3.org/TR/xptr

[W3C00A]

Altheim, Murray; Shane McCarron: XHTML 1.1 – Module-based XHTML. 2000, http://www.w3.org/TR/xhtml11

[W3C00B]

Altheim, Murray; Frank Boumphrey; Sam Dooley; Shane McCarron; Ted Wugofski: Modularization of XHTML. 2000, http://www.w3.org/TR/xhtml-modularization

[W3C00C]

Pemberton, Steven: XHTML 1.0: The Extensible HyperText Markup Language. 2000, http://www.w3.org/TR/xhtml1

[W3C00D]

Maler, Eve; Steve DeRose; David Orchard; Ben Trafford: XML Linking Language (XLink). 2000, http://www.w3.org/TR/xlink

[WHIT98]

Whitehead, E. J.; M. Makoto: The text/xml Media Type. 1998, ftp://ftp.ietf.org/internet-drafts/draft-whiteheadmime-xml-02.txt

[WOLF95]

Wolf, Gary: The Curse of Xanadu. In Wired, 6/1995, http://www.hotwired.com/wired/3.06/features/xanadu.html

[XANA97]

Xanadu FAQ. 1997, http://www.xanadu.com.au/xanadu/ faq.html

495

Glossar A Attribut Innerhalb von »Start-Tags« können Elementen Attribut-Wert-Paare zugeordnet werden, die etwa Informationen über deren Inhalt enthalten, beispielsweise .

C CALS

»Computer-Aided Acquisition and Logistics Support«: Standard des USVerteidigungsministeriums für elektronischen Datenaustausch. Cascading Style Sheets (CSS) Siehe »CSS« CDATA-Abschnitt

Ein Abschnitt innerhalb eines XML-Dokuments, in dem kein Markup erkannt wird. CDATA-Abschnitte erlauben daher die direkte Eingabe solcher Zeichen wie & und .... In diesem Fall lautet der GI »joe«. GML

»Generalized Markup Language«: Vorläufer von SGML, Ende der sechziger Jahre von Charles Goldfarb, Edward Mosher und Raymond Lorie und anderen bei der IBM entwickelt.

H HyTime »Hypermedia/Time-based Structuring Language«: Multimedia- und LinkErweiterungen für SGML, festgelegt als ISO-Standard 10744-92.

I Inline-Link Link-Element, das selbst die Quelle enthält, beispielsweise das A-Element in HTML über das href-Attribut.

499

Glossar

Instanz Siehe »XML-Instanz«

J Jade »James' DSSSL Engine«: von JAMES CLARK entwickelte DSSSL-Implementierung. Jade wandelt/formatiert SGML/XML-Daten mit Hilfe von Stylesheets. Siehe http://www.jclark.com/jade. JavaScript Einfache Script-Sprache, die von Netscape zunächst unter dem Namen »LiveScript« entwickelt wurde, um als Zusatz von HTML die Beschränkungen der statischen Hypertext Markup Language zu durchbrechen. JavaScript ist die im Web am häufigsten verwendete Skript-Sprache, die in ihrer standardisierten Form ECMAScript auch in »XSL« eingegangen ist.

K Konstruktionsregel In XSL Vorgabe für die Verarbeitung von Elementen; sie besteht aus einem Muster und einer auf dieses Muster folgenden Aktion.

M Markup Auszeichnungen innerhalb eines Dokumentes werden im Englischen als »Markup« bezeichnet. Für den Begriff »Markup Language« wird auch »Tagging Language« verwendet. Letzteres ist die englische Übersetzung von »Auszeichnungssprache«. MCF

Meta Content Framework: ursprünglich von Apple stammender Entwurf für die Beschreibung von Metadaten, den Netscape aufgenommen hatte. Mittlerweile ist RDF die diesbezügliche Entwicklung beim W3C. Memex Vannevar Bushs fiktives Hypertext-System, das er in seinem 1945 erschienenen Artikel »As we may think« beschrieben hat. Mixed Content Gemischter Inhalt: wenn ein Element außer Zeichendaten auch Kindelemente enthalten darf. In diesem Fall müssen in der Reihe der optionalen Elemente als erstes die Zeichendaten stehen, beispielsweise .

500

Muster Siehe »Pattern«

N Namensraum Bereich, in dem Elementtypen definiert sind (DTD). Es ist in XML möglich, auf einen Namensraum außerhalb des eigenen zuzugreifen, indem man ihn mit einem Attribut einbindet. Ein Entwurf dafür ist unterSiehe http://www.w3.org/TR/!!!xml-names zu finden. Namespace Siehe »Namensraum« nicht-validierender Prozessor XML-Parser,

der nur die Dokumentinstanz, nicht aber die möglicherweise darin referenzierte DTD liest. Er prüft die Instanz auf »Wohlgeformtheit« (siehe auch »validierender Prozessor« und »Wohlgeformtheit«).

O OASIS

»Organization for the Advancement of Structured Information Standards«: US-amerikanische Organisation, die wichtig für die Entwicklung von SGML und XML war und ist. OASIS arbeitet beispielsweise zusammen mit UN/CEFACT an der Entwicklung von ebXML. Out-of-line-Link Link-Element, das die Quelle(n) von referenzierten Objekten nicht selbst enthält.

P Parameter-Entity Entity, die im Gegensatz zur »externen Entity« nur in einer DTD vorkommen darf. Sie wird mit einem Prozentzeichen eingeleitet und referenziert. Ein Beispiel für die Benutzung ist die Einbindung von Zeichensatzdateien: . Parser Programm oder Programmkomponente zur Überprüfung eines XML-Dokuments. Es gibt ihn als validierende (siehe dort) oder nicht-validierenden Prozessor (siehe dort). Neben der reinen Prüfung stellt ein Parser als Teil einer Applikation die Grundlage für weitere Funktionen zur Verfügung. In einem Editor kann er zum Beispiel die Grundlage für eine Eingabehilfe durch An-

501

Glossar

zeigen der gültigen Elemente sein. Bei einer weiteren Verarbeitung, zum Beispiel durch einen XSLT-Prozessor, bereitet der Parser die Daten in der Regel so auf, dass über eine API wie DOM oder SAX auf die Daten zugegriffen werden kann. Pattern In XSLT ein Muster, das die Transformation von XML-Daten in einem Template auslöst. match="//abschnitt" bewirkt die Verarbeitung aller Elemente abschnitt im Dokument, unabhängig davon, wo sie in der Elementhierarchie stehen. PI

Processing Instructions sind Anweisungen für ein Programm (Anwendung), das ein XML-Dokument verarbeitet. PIs nehmen in XML folgende Gestalt an: . PIs sind in eingeschlossen und besitzen einen Namen (hier magnum). Alles weitere bleibt der Anwendung überlassen. Processing Instruction Siehe »PI« Prolog Anfang des XML-Dokuments; er enthält »Processing Instructions« und die »Dokumenttyp-Deklaration«. Public Identifier String, der in einer DOCTYPE-Direktive (Dokumenttyp-Deklaration) eine öffentlich zugängliche DTD oder Entities bezeichnet. Beispiel: PUBLIC "-//W3C// ENTITIES Full Latin 1//EN//HTML". Ihm folgt der Name, unter dem die Quelle erreichbar ist. Handelt es sich um eine lokale DTD, benutzt man den »System Identifier«, auf den der Name der lokalen Datei folgt: .

R RDF

»Resource Description Framework«: vom W3C entwickelte Sprache für den Austausch maschinenlesbarer Beschreibungen von Web-Ressourcen.

S SAX

»Simple API for XML«: von Dave Megginson entwickelte, ereignis-gesteuerte Schnittstelle für den Zugriff auf XML-Daten. Siehe http://www.megginson.com/ SAX/

502

Schablone Siehe »Template« Scheme Programmiersprache: ein Lisp-Dialekt. »DSSSL« wiederum, die Stilsprache für SGML, ist ein Scheme-Dialekt. SGML

Standard Generalized Markup Language: komplexe Metasprache zur Generierung von Auszeichnungssprachen, die seit 1986 standardisiert ist. Ziel war es unter anderem, die Unabhängigkeit der Auszeichnung von der Ausgabe zu gewährleisten. SGML

Document Interchange Format (SDIF)

[GOLD90] definiert es folgendermaßen: »Eine Datenstruktur, die es ermöglicht, ein Hauptdokument mit seinen zugehörigen Dokumenten, die jeweils in mehreren Entities gespeichert sein können, zum Zwecke des Datenaustauschs zu einem einzigen Datenstrom in einer Weise zu kombinieren, die den Empfänger in die Lage versetzt, die einzelnen Entities zu rekonstruieren.« Einfach ausgedrückt: SDIF ist ein Transportformat für Dokumente, Instanzen, Entities usw. Die Definition ist in ISO 9069 in ASN.1-Form zu finden. SMIL

»Synchronized Multimedia Integration Language«: XML-Anwendung zur Beschreibung multimedialer Inhalte. SOSOFO

Specification of a Sequence of Flow Objects: wörtlich »Beschreibung einer Folge von fließenden Objekten«, aber das fördert das Verständnis wenig. Es handelt sich bei den SOSOFOs um meist nicht-leere Folgen von Objekten, wie DSSSL oder XSL sie bei der Verarbeitung von XML/SGML-Dokumenten erzeugen. literal ist ein Beispiel, maket ist ein weiteres. Das leere SOSOFO gibt es natürlich auch: empty-sosofo. Start-Tag Erster Teil der Kennzeichnung eines nicht-leeren Elements; es besteht aus und dem Elementnamen zuzüglich möglicher Attribute, zum Beispiel . Stilregel In XSL Definiton einer Stilvorgabe für bestimmte Elemente; kann auch unabhängig von Elementen als »named style rule« benutzt werden. Stylesheet Datei, die Formatierungsanweisungen für Dokumente enthält. CSS (siehe dort) ist die Stilsprache für HTML. DSSSL ist für SGML vorgesehen, und mit XSL existiert ein Entwurf für XML. Was DSSSL und XSL angeht, leisten die Sprachen

503

mehr als eine Formatierung: Sie erlauben es, auf den Strukturbaum von Dokumenten Einfluss zu nehmen und mit Funktionen Elemente zu verändern. SVG

»Scalable Vector Graphics«: Sprache für die Beschreibung zweidimensionaler Vektor- und Vektor-/Rastergrafik als XML-Anwendung.

T Tag Teil der Kennzeichnung eines Elements; der in »« oder »/>« (Ende) eingeschlossene Name des Elements, zum Beipiel und . TEI

»Text Encoding Initiative«: Projekt, innerhalb dessen Richtlinien für die Auszeichnung aller möglichen Textarten entwickelt worden sind, einschließlich Tabellen, Grafiken und Hypertextlinks (siehe http://www.uic.edu/orgs/tei/). Template In XSLT eine »Schablone« für die Abarbeitung von Elementen; abhängig von Mustern (Pattern) wird möglicherweise in weitere Templates verzweigt. Traversieren Zugriff auf Ressourcen, auf einen oder mehrere Links.

U UN/CEFACT

»United Nations Centre for the Facilitation of Procedures and Practises for Administration, Commerce and Transport«: UNOragnisation, die zusammen mit OASIS die Entwicklung von ebXML betreibt. UN/EDIFACT

»United Nations Electronic Data Interchange For Administration, Commerce and Transport«: Standard für den elektronischen Austausch von Geschäftsdaten.

V validierender Prozessor XML-Parser, der außer der Dokumentinstanz auch die dort referenzierte DTD liest und das Dokument daraufhin prüft, ob es ihr in allen Punkten entspricht. Ein Dokument, das diese Bedingung erfüllt, ist ein gültiges (siehe auch »Wohlgeformtheit«).

W W3 C

»World Wide Web Consortium«: Ende 1994 gegründete Organisation, die es sich zur Aufgabe gemacht hat, die Standards für das Web zu entwickeln. Zu den Mitgliedern zählen hauptsächlich Firmen, die selbst an der Entwicklung beteiligt sind (Microsoft, Netscape, IBM, IBM, Oracle, Sun und viele andere). Ursprünglich am MIT angesiedelt, verteilt das W3C sich mittlerweile auf drei Standorte; neben dem MIT (Cambridge, MA) sind das INRIA (Frankreich) und die Keyo-Universität (Tokyo). Ein deutsches Büro befindet sich seit 1998 bei der GMD. WML

»Wireless Markup Language«: verkürzt ausgedrückt das HTML für Handys. Es handelt sich um eine XML-basierte Auszeichnungssprache, die an HTML angelehnt ist und ähnlich der Websprache über eine Scriptingsprache verfügt (WMLScript). Wohlgeformtheit Nicht zu jedem XML-Dokument muss eine DTD vorhanden sein. Ohne eine solche DTD nennt man eine XML-Instanz »wohlgeformt«, wenn alle Elemente ordentlich geschachtelt und mit Start- und End-Tags versehen sind (siehe auch »validierender Prozessor«). World Wide Web Consortium Siehe »W3C«

X Xanadu Ted Nelsons legendäres Hypertext-System, das nie vollendet wurde. Die Idee ist noch lebendig: http://www.xanadu.net/ XHTML

»Extensible Hypertext Markup Language«: die Neudefinition von HTML in (statt wie früher in SGML). Das W3C hat Version 1.0 Anfang 2000 verabschiedet.

XML

505

Glossar

XML

Wie bitte? Das wissen Sie nicht? – Also dann: Gehe zu Seite 1, gehe direkt dorthin, blättere nicht ziellos in diesem Buch, beginne zu lesen, bis Du wieder hier bist. – Jetzt alles klar? XML-Deklaration

»Processing Instruction« zu Anfang der XML-Instanz, in der neben der Version zum Beispiel auch der Zeichensatz stehen kann: . XML-Instanz

Im Gegensatz zu einer Datei verstehen wir unter einer Instanz ein logisches XML-Dokument. Dieses kann sich aus beliebig vielen Dateien zusammensetzen. XPointer Erweiterte Link-Möglichkeiten, die sich darauf beziehen, Elemente in Dokumenten nach ihrem Ort in der Dokumenthierarchie zu referenzieren. XSL

»Extensible Stylesheet Language«: beim W3C von verschiedenen Firmen und Einzelpersonen eingereichter Vorschlag für die Stil-Sprache zu XML. Der eigentliche Formatier-Teil (XSL-FO) befindet sich noch auf dem Weg zur Spezifikation, ist derzeit (März 2000) noch im Entwurfsstadium. Die Transformationssprache XSLT dagegen ist seit November 1999 verabschiedet. Informationen finden Sie unter http://www.w3.org/Style/XSL/. XSL-FO

Übliche Bezeichnung für (den Formatierteil von) XSL, der nicht nur der Darstellung von XML-Dokumenten im Web dienen soll, sondern auch in Formate wie PDF formatiert. XSLT XSL-Transformationen dienen dazu, XML-Dokumente in HTML, WML oder andere Sprahen zu wandeln.

506

Stichwortverzeichnis ! 3B2 245 A Abrahamson, David M. 478 Abstrakte Datentypen 22 Adams, Douglas 38 Adept 213 Adler, Sharon 37 Allgemeine Entities 413 Analysiertes Entity 412 Definition 412 Andreesen, Marc 41 Anwendung 389 ANY 79 Apache 73 Apache XML Project 317 application/xml 436 Attribute 69 versus Elemente 228 attribute nodes 93 Attributknoten 93 Attributlisten-Deklarationen 407 Attribut-Name 404 Attribut-Spezifikation 404 Attribut-Wert 404 Aufzählungs-Attributtypen 409 Aufzählungstyp 80 Augment 38 Aural style sheets 44 Ausgabe für verschiedene Browser 318 Author/Editor 211 awk 170 AWLINET 238 B Bedingte Abschnitte 411 Bedingter Abschnitt 83 Behälterknoten 120 Benutzeroptional 390 Berners-Lee, Tim 22, 41, 150 Blockelemente 148

BME 297 Bosak, Jon 41, 126, 155, 382, 389 Bruchstück des Ergebnisbaums 171 Buchstaben 428 Bundesverband Materialwirtschaft, Einkauf und Logistik e. V. 297 Bush, Vannevar 38 C Carlisle, David 382 Carroll, Lewis 91 Cascading Style Sheets 23, 123, 149, 211 Cascading Style Sheets Level 2 44 case sensitive 77 CDATA-Abschnitt 71, 396 character 392 Character Entity 70 character node 120 Charakteristik 136 Clark, James 41, 88, 98, 141, 150, 368, 500 Cocoon 317 comment nodes 93 Connolly, Dan 389 container node 120 Content Negotiation 51 context 93 context node 93 Copenhagen SGML Tool 56 copy-attributes 268 Core Expression Language 140 core function library 98 Core Query Language 140 Cost 2 56 Cover Pages 477 Cover, Robin 248 CSS2 44 D darf 390 Datenaustauschformat 44, 288 Datenformat 44 Datentypen 297, 380

507

Stichwortverzeichnis

Davis, William 37 Definition 393 Allgemeine Entities 413 analysiertes Entity 412 Anwendung 389 Attributlisten-Deklarationen 407 Attribut-Name 404 Attribut-Spezifikation 404 Attribut-Wert 404 Aufzählungs-Attributtypen 409 Bedingte Abschnitte 411 benutzeroptional 390 CDATA-Abschnitte 396 character 392 darf 390 Dokument-Element 392 Dokument-Entity 412, 424 Element 403 Element-Inhalt 406 Elementtyp-Deklaration 405 End-Tag 404 Entities 412 Entity-Referenz 413 Ersetzungstext 422 externes Entity 416 Fehler 390 Flow Object 136 Flow Object Tree 136 gemischter Inhalt 407 gültig 397 Gültigkeitsbeschränkung 391 Inhalt 404 internes Entity 415 Kind 392 Kommentare 395 Kompatibilität 391 Kritischer Fehler 390 leer 405 Leeres-Element-Tag 405 Leerraum 393 literaler Entity-Wert 422 Markup 394 Markup-Deklaration 397 Modularisierung von XHTML 357 Modus DSSSL 138 Name 393 nicht-analysiertes Entity 412 Nmtoken 393 Notation 423

508

Notation-Deklaration 423 Parameter-Entity-Referenzen 413 passen 391 Processing Instructions 395 Public-Identifier 416 qualifizierender Name 88 Start-Tag 404 System-Identifier 416 Text 392 Text-Deklaration 417 Typ 404 Validierende Prozessoren 424 Vater 392 Vorgabe 410 wohlgeformt 392 Wohlgeformtheitsbeschränkung 391 Wurzel 392 XML Path Language 91 xml space 400 XML-Deklaration 396 XML-Dokument 391 XML-Prozessor 389 Zeichen 392 Zeichendaten 394 Zeichenreferenz 413 Zusammenarbeit 391 Deklaration CSS 127 Desktop-Publishing 34 Deutsches Institut für Normung 477 DIN 477 DocBook 48 Document Object Model 381 Document Style Semantics and Specification Language 123–124 Dokument 67 Dokument-Element 392 Dokument-Entity 412, 424 Dokumenttyp 53 Dokumenttyp-Definition 21, 397 Dokumenttyp-Deklaration 67 DOM 381 DSSSL 123 DSSSL-O 126 DTD 397 Fragmente 233 DTD-Builder 78 DTP 34 Dublin Core 383 Dynamic HTML 24

Stichwortverzeichnis

E EBNF 425 ebXML 298 ECMAScript 478 E-Commerce 288 EDD 244 EDI 296 EDIFACT 300 editorial structure tags 35 Eigenschaft, CSS 127 Einzeilige Elemente 148 Electronic Business XML 298 Electronic Data Interchange 296 Element 403 fehlerhaft 69 leeres Element 70 versus Attribute 228 Element Definition Document 244 element nodes 93 Element-Inhalt 406 Elementknoten 93 Elementtyp-Deklaration 77, 405 Elementtypen 124 Benennung 227 Emacs 207, 248 E-Mail 54 EMPTY 79 End-Tag 30, 69, 404 Engelbart, Douglas 38 Entities 412 Entity-Referenz 71, 413 Epic 213 Ersetzungstext 412, 422 Erweiterbarkeit 26 Erweiterte Backus-Naur-Form 425 Erweiterte Namen 92 Erweiterungen 428 European association for standardizing information and communication systems 478 Euro-Zeichen 485 expanded-name 92 expat 257 expression 93 Expression Language 135 Extensible Markup Language 21 Extensible Server Pages 320 Extensible Style Language 256 Extensible Stylesheet Language 123, 126, 149 Externe Dtd 76

Externe Link-menge 114 Externes Entity 82, 416 F Fehler 390 Flow Object 136, 257 Flow Object Classes 135 Flow Object Tree 136 FO2PDF 245 Fop 318, 342 Formatierungsobjekte 148 Formatted Output Specification Instance 214 Formatvorlagen 42, 215 FOSI 214 FrameMaker, SGML-Import 243 Frames 24 G gemischter Inhalt 79, 407 GenCode 37 generic coding 35 generic identifier 403 generic markup 35 GI 403 Goldfarb, Charles 37 Grundzeichen 428 Gültig 397 Gültigkeit 67 Gültigkeitsbeschränkung 391 Guha, Ramanathan 50 H Hotmetal 211 HTTP Authentication 479 HTTP/1.1 479 Hypermedia/Time-based Structuring Language 40, 103, 477 Hypertext 38–39 Hypertext Markup Language 21, 25 HyTime 40, 103 I Ideografische Zeichen 428 IEC 477 IETF 479 Information zur (visuellen) Darstellung 34 Inhalt 34, 69, 77, 404, 412 Inside & Out 238 Instant Saxon 179 International Electrotechnical Commission 477

509

Stichwortverzeichnis

Internationale Organisation für Standardisierung 477 Interne Dtd 76 Internes Entity 415 Internet Engineering Task Force 479 Internet Explorer 61 Internet Society 479 ISO 477 ISOC 479 ISO-HTML 478 J Jade 141, 241, 249, 500 MIF-Ausgabe 243 RTF-Ausgabe 243 JavaScript 24, 349, 478 K Kay, Michael 98, 179, 368 Kind 392 Klein-/Großschreibung 77 KMU 298 Knotenpunkt 120 Kommentar 72, 395 Missbrauch 73 Kommentarknoten 93 Kompatibilität 391 Konstruktionsregel 135 Kritischer Fehler 390 L LaTeX 42 Layers 24 Leer 405 Leeres Element 70 Leeres-Element-Tag 405 Leerraum 393 Lie, Håkon 41 Link-Base 114 Lisp 143 Literaler Entity-Wert 422 Logische Information 35 Lorie, Raymond 37 Lynx 319 M Maden, Chris 243 Maler, Eve 253 Maloney, Murray 47 Mann, Thomas 21

510

Markup 22, 394 markup 35 Markup-Deklaration 397 MarkupKit 215 Mason, James 37 MathML 436 Mazzocchi, Stefano 317 Megginson, Dave 382 Megginson, David 169 Mehrzweck-DTD 221 Memex 38 Metadaten 27, 43 Microsoft Internet Explorer 319 MIF 243 MIME-Typ 436 Modularisierung von XHTML 357 Modulbasierte XHTML 357 Modus DSSSL 138 Mosaic 41 Mosher, Edward 37 Mozilla 125 N Name 77, 393, 412 Namen case sensitive 77 Klein-/Großschreibung 77 Namensraumknoten 93 namespace nodes 93 National Center for Supercomputing Applications 73 NCSA 73 Nelson, Ted 39 Netscape Navigator 319 Nicht-analysiertes Entity 412 Nmtoken 393 node point 120 Nokia WAP Toolkit Browser 319 Notation 76, 412, 423 Notation-Deklaration 84, 423 nsgmls 57, 208 O OASIS 478 Oder-Operator 78 Österreichisches Normungsinstitut 477 ON 477 Opera 319

Stichwortverzeichnis

P Parameter Entity Reference 81 Parameter-Entity-Referenzen 413 Parsed Character Data 54, 78, 252 Passen 391 patterns 150 PCDATA 54, 78 PEReference 81 Perl 24, 170, 262 Price, Roger 478 Processing Instruction 51, 74, 395 processing instruction nodes 93 Programm Adept 213 Author/Editor 211 awk 170 Cocoon 317 copy-attributes 268 DocBook 48 Emacs 207 Epic 213 expat 257 FO2PDF 245 Fop 318, 342 Hotmetal 211 Inside & Out 238 Instant Saxon 179 Internet Explorer 61 Jade 141, 241, 249, 500 Lisp 143 Lynx 319 MarkupKit 215 Microsoft Internet Explorer 319 Mozilla 125 Netscape Navigator 319 Nokia WAP Toolkit Browser 319 nsgmls 57, 208 Opera 319 Perl 170, 262 PSGML 207, 248 Roxen 22 Saxon 98, 150, 162, 171, 179, 364, 367 Scheme 142 sed 170 tetex 283 Word 214 Xalan 318 Xerces 318 XML Spy 209 XML-Notepad 209

XSP-Prozessor 319 XT 60, 318, 368 xt 98 Prolog 67 PSGML 207, 248 Public Identifier 82, 416 Q QName 88, 170 Qualifizierender Name 88 Definition 88 QuarkXPress 245 R Raggett, Dave 41 RDF 383 Recommendation 150 RenderX 245 Request for Comments 479 Resource Description Framework 383 result tree fragment 171 RFC 479 Rice, Stanley 35 root nodes 92 Roxen 22 Rubinsky, Yuri 47 S SAX 382 Saxon 98, 150, 162, 171, 179, 364, 367 Scharpf, Norman 37 Scheme 135, 142 Schützen 422 Schweizerische Normen-Vereinigung 477 sed 170 Selektor CSS 127 Semantic Web 383 Sequenz-Operator 77 Server Side Includes 73 SGML Editorial Review Board 389 Siegel, David 124 Simple API for XML 382 SNV 477 Softquad 211 Sonderzeichen, deutsche 70 Specification of a Sequence of a Flow Object 141 Specification of a Sequence of Flow Objects 257 Staflin, Lennart 207 Standalone-Dokumentdeklaration 399 Standard Document Query Language 135

511

Stichwortverzeichnis

Standard Generalized Markup Language 25 Start-Tag 30, 69, 404 Stil, DSSSL 137 Stilsprache 135 Struktur 35 style language 135 Style Sheet 124 System-Identifier 416 T Tags 24 TCL 56 template rules 150 templates 154 tetex 283 Text 392 Text Encoding Initiative 103 text nodes 93 text/xml 436 Text-Deklaration 417 Textknoten 93 Tool Command Language 56 Topic Maps 477 Transcopyright 40 Transformation Language 135, 257 Transformationssprache 135 Transpublishing 40 Traven, B. 252 Tunnicliffe, William 35 Typ 404 U Umlaute eingeben 70 UN/EDIFACT 299 Unicode 478 V Validierende Prozessoren 424 Vater 392 Verarbeitungsanweisungs-Knoten 93 Vorgabe 410 W W3C 478 Wert, CSS 127 What you see is what you get 34 Wireless Markup Language 363

512

Wohlgeformt 67, 392 wohlgeformt 392 Wohlgeformtheitsbeschränkung 391 Wolf, Gary 39 Word 42, 214 World Wide Web 25 World Wide Web Conference 26 World Wide Web Consortium 149, 478 Wurzel 392 Wurzelelement 68 Wurzelknoten 92 WYSIWYG 34 X Xalan 318 Xanadu 39 Xerces 318 XLink 103 xml 400 lang 401 space 400 XML Cover Pages 477 XML Path Language 91 XML Schema 380 XML Spy 209 XML.org 478 XML-Deklaration 67, 396 XML-Dokument 391 XML-Notepad 209 XML-Prozessor 389 XMosaic 41 XPath 91 XPointer 103 XSL 123 XSLT-Stylesheet 59 XSP-Prozessor 319 XT 60, 318, 368 xt 98 Z Zeichen 392 Zeichendaten 394 Zeichenknoten 120 Zeichenreferenz 70, 413 Ziffern 428 Zusammenarbeit 391