Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
20
Vorwort
21
1 Einführung
23
1.1 Kleines Einstiegsprojekt zum Kennenlernen
23
1.1.1 Ein erstes XML-Dokument
23
1.1.2 Standardausgabe im Webbrowser
24
1.1.3 Wohlgeformtheit ist ein Muss
25
1.1.4 Gültige Dokumente per DTD oder Schema
25
1.1.5 Formatierte Datenausgabe
27
1.2 XML – universale Metasprache und Datenaustauschformat
29
1.2.1 Unabhängigkeit von Anwendungen und Plattformen
29
1.2.2 SGML → HTML → XML
30
1.2.3 Lob des Einfachen
30
1.2.4 Inhaltsbeschreibungssprache
31
1.2.5 Trennung von Inhalt und Form
31
1.2.6 Vom Dokumentformat zum allgemeinen Datenformat
32
1.2.7 Globale Sprache für den Datenaustausch
32
1.3 Übersicht über die Sprachfamilie XML
33
1.3.1 Kernspezifikationen
34
1.3.2 Ergänzende Spezifikationen
35
1.3.3 Programmierschnittstellen
35
1.3.4 XML-Anwendungen
36
1.4 XML-Editoren und Entwicklungsumgebungen
36
1.4.1 Editoren für XML
37
1.4.2 Schema- und Stylesheet-Designer
38
1.4.3 Entwicklungsumgebungen mit XML-Unterstützung
39
1.4.4 XML-Dokumente über Standardanwendungen
40
1.4.5 Parser und andere Prozessoren
41
1.5 Anwendungsbereiche
41
1.5.1 XML-Vokabulare
42
1.5.2 Datenaustausch zwischen Anwendungen
45
1.5.3 Verteilte Anwendungen und Webdienste
45
2 XML – Bausteine und Regeln
47
2.1 Aufbau eines XML-Dokuments
47
2.1.1 Entitäten und Informationseinheiten
47
2.1.2 Parsed und unparsed
48
2.1.3 Die logische Sicht auf die Daten
49
2.1.4 Der Prolog
51
2.1.5 Zeichencodierung
51
2.1.6 Standalone or not
52
2.1.7 XML-Daten – der Baum der Elemente
53
2.1.8 Start-Tags und End-Tags
54
2.1.9 Elementtypen und ihre Namen
55
2.1.10 Regeln für die Namensgebung
56
2.1.11 Elementinhalt
57
2.1.12 Korrekte Schachtelung
57
2.1.13 Attribute
58
2.2 Die Regeln der Wohlgeformtheit
59
2.3 Elemente oder Attribute?
60
2.4 Reservierte Attribute
61
2.4.1 Sprachidentifikation
61
2.4.2 Leerraumbehandlung
61
2.5 Entitäten und Verweise darauf
62
2.5.1 Eingebaute und eigene Entitäten
62
2.5.2 Zeichenentitäten
63
2.6 CDATA-Sections
63
2.7 Kommentare
64
2.8 Verarbeitungsanweisungen
65
2.9 Namensräume
65
2.9.1 Das Problem der Mehrdeutigkeit
65
2.9.2 Eindeutigkeit durch URIs
66
2.9.3 Namensraumname und Präfix
67
2.9.4 Namensraumdeklaration und QNamen
67
2.9.5 Einsatz mehrerer Namensräume
68
2.10 XML-Version 1.1
69
3 Dokumenttypen und Validierung
71
3.1 Metasprache und Markup-Vokabulare
71
3.1.1 Datenmodelle
71
3.1.2 Selbstbeschreibende Daten und Lesbarkeit
72
3.1.3 Dokumenttyp-Definition – DTD
72
3.1.4 Alternativen zu DTD
73
3.1.5 Vokabulare
73
3.2 Regeln der Gültigkeit
74
3.3 DTD oder Schema?
75
3.4 Definition eines Dokumentmodells
75
3.4.1 Interne DTD
76
3.4.2 Externe DTD
77
3.5 Deklarationen für gültige Komponenten
78
3.5.1 Vokabular und Grammatik der Informationseinheiten
78
3.5.2 Syntax der Dokumenttyp-Deklaration
79
3.5.3 Syntax der Elementtyp-Deklaration
79
3.5.4 Beispiel einer DTD für ein Kursprogramm
80
3.5.5 Inhaltsalternativen
82
3.5.6 Uneingeschränkte Inhaltsmodelle
83
3.5.7 Gemischter Inhalt
84
3.5.8 Inhaltsmodell und Reihenfolge
84
3.5.9 Kommentare
85
3.5.10 Die Hierarchie der Elemente
85
3.6 Dokumentinstanz
86
3.7 Attributlisten-Deklaration
87
3.7.1 Aufbau einer Attributliste
88
3.7.2 Attributtypen
88
3.7.3 Verwendung der Attributlisten
90
3.8 Verweis auf andere Elemente
91
3.9 Verwendung von Entitäten
91
3.9.1 Interne Entitäten
92
3.9.2 Externe Entitäten
93
3.9.3 Notationen und ungeparste Entitäten
94
3.9.4 Verwendung von Parameterentitäten
95
3.9.5 Interne Parameterentitäten
95
3.9.6 Externe Parameterentitäten
96
3.10 Formen der DTD-Deklaration
96
3.10.1 Öffentliche und private DTDs
97
3.10.2 Kombination von externen und internen DTDs
97
3.10.3 Bedingte Abschnitte in externen DTDs
98
3.10.4 Namensräume
99
3.11 Zwei DTDs in der Praxis
99
3.11.1 Die Auszeichnungssprache DocBook
99
3.11.2 Das grafische Format SVG
101
4 Inhaltsmodelle mit XML Schema
107
4.1 XML Schema – der XML-basierte Standard
107
4.1.1 Defizite von DTDs
107
4.1.2 Anforderungen an XML Schema
108
4.1.3 Die Spezifikation des W3C für XML Schema
108
4.2 Erster Entwurf eines Schemas
109
4.2.1 Verknüpfung von Schema und Dokument
112
4.2.2 Der Baum der Schema-Elemente
113
4.2.3 Elemente und Datentypen
113
4.2.4 Komplexe Typen mit und ohne Namen
114
4.2.5 Sequenzen
115
4.2.6 Vorgegebene und abgeleitete Datentypen
115
4.2.7 Wie viel wovon?
116
4.3 Genereller Aufbau eines XML-Schemas
116
4.3.1 Das Vokabular
116
4.3.2 Die Komponenten eines XML-Schemas
116
4.4 Datentypen
117
4.4.1 Komplexe Datentypen
119
4.4.2 Inhaltsmodelle und Partikel
119
4.4.3 Erweiterbarkeit durch Wildcards
119
4.4.4 Einfache Typen
120
4.4.5 Benannte oder anonyme Typen
121
4.4.6 Vorgegebene und benutzerdefinierte Datentypen
121
4.4.7 XML Schema 1.0 – Datentypen – Kurzreferenz
122
4.4.8 Werteraum, lexikalischer Raum und Facetten
126
4.4.9 Ableitung durch Einschränkung
127
4.4.10 Muster und reguläre Ausdrücke
128
4.4.11 Grenzwerte
129
4.4.12 Listen und Vereinigungen
130
4.4.13 Facetten der verschiedenen Datentypen
131
4.5 Definition der Struktur des Dokuments
133
4.5.1 Deklaration von Elementen
133
4.5.2 Attribute
135
4.5.3 Elementvarianten
135
4.5.4 Namensräume in XML Schema
136
4.5.5 Zielnamensraum
137
4.5.6 Umgang mit lokalen Elementen und Attributen
139
4.6 Häufigkeitsbestimmungen
142
4.7 Default-Werte für Elemente und Attribute
143
4.8 Kompositoren
143
4.8.1 <xsd:sequence>
144
4.8.2 <xsd:all>
144
4.8.3 <xsd:choice>
145
4.8.4 Verschachtelte Gruppen
145
4.9 Arbeit mit benannten Modellgruppen
146
4.10 Definition von Attributgruppen
147
4.11 Schlüsselelemente und Bezüge darauf
148
4.11.1 Eindeutigkeit
148
4.11.2 Bezüge auf Schlüsselelemente
150
4.12 Kommentare
152
4.13 Ableitung komplexer Datentypen
153
4.13.1 Erweiterungen komplexer Elemente
153
4.13.2 Einschränkung komplexer Elemente
154
4.13.3 Steuerung der Ableitung von Datentypen
155
4.13.4 Abstraktionen
155
4.13.5 Gemischtwaren
156
4.13.6 Leere oder Nichts
158
4.13.7 Wiederverwendbarkeit
159
4.14 Designvarianten
160
4.14.1 Babuschka-Modelle
160
4.14.2 Stufenmodelle
161
4.15 Übernahme von Schema-Definitionen
163
4.15.1 Schemas inkludieren
163
4.15.2 Schemas importieren
165
4.15.3 Zuordnung von Schemas in XML-Dokumenten
170
4.16 XML Schema 1.0 – Kurzreferenz
171
4.17 Neuerungen in XML Schema 1.1
180
4.17.1 Versicherungen
181
4.17.2 Lockerungen der Regeln für Inhaltsmodelle
182
4.17.3 Offene Modelle
183
4.17.4 Schemaweite Attribute
184
4.17.5 Anpassen von Schemas
184
4.17.6 Neue Datentypen
185
4.17.7 Einsatz bedingter Datentypen
185
5 Navigation und Verknüpfung
187
5.1 Datenauswahl mit XPath
187
5.1.1 Datenmodell und XPath-Ausdrücke
188
5.1.2 Vom Dokument zum Knotenbaum
188
5.1.3 Dokumentreihenfolge
190
5.1.4 Knotentypen
191
5.1.5 Lokalisierungspfade
192
5.1.6 Ausführliche Schreibweise
194
5.1.7 Lokalisierungsstufen und Achsen
194
5.1.8 Knotentest
198
5.1.9 Filtern mit Prädikaten
199
5.1.10 Test von XPath-Ausdrücken
199
5.1.11 XPath 1.0-Funktionen
201
5.2 XPath 2.0
205
5.2.1 Erweitertes Datenmodell
206
5.2.2 Neue Konstrukte für Ausdrücke
206
5.2.3 Neue Datentypen
207
5.2.4 Neue Operatoren
208
5.2.5 Die erweiterte Funktionenbibliothek
208
5.3 XPath 3.0 und XPath 3.1
220
5.4 Verknüpfungen mit XLink
227
5.4.1 Mehr als Anker in HTML
227
5.4.2 Beziehungen zwischen Ressourcen
228
5.4.3 Link-Typen und andere Attribute
229
5.4.4 XLink-Anwendungen
231
5.5 XBase
231
5.6 Über XPath hinaus: XPointer
232
5.6.1 URIs und Fragmentbezeichner
233
5.6.2 XPointer-Syntax
233
5.6.3 Das Schema »element()«
234
5.6.4 Das Schema »xmlns()«
235
6 Datenausgabe mit CSS
239
6.1 Cascading Stylesheets für XML
241
6.2 Arbeitsweise eines Stylesheets
241
6.3 Anlegen von Stylesheets
243
6.4 Vererben und Überschreiben
245
6.5 Selektortypen
246
6.6 Attributselektoren
247
6.7 Kontext- und Pseudoselektoren
247
6.8 Schriftauswahl und Textformatierung
249
6.8.1 Absolute Maßeinheiten
249
6.8.2 Relative Maßeinheiten
249
6.8.3 Prozentangaben
249
6.8.4 Maßangaben über Schlüsselwörter
250
6.9 Farbauswahl
250
6.10 Blöcke, Ränder, Rahmen, Füllung und Inhalt
250
6.11 Stylesheet-Kaskaden
252
6.12 Auflösung von Regelkonflikten
253
6.13 Zuordnung zu XML-Dokumenten
253
6.14 Schwächen von CSS
255
7 Umwandlungen mit XSLT
257
7.1 Sprache für Transformationen
257
7.1.1 Bedarf an Transformationen
257
7.1.2 Grundlegende Merkmale von XSLT
259
7.1.3 XSLT-Prozessoren
260
7.1.4 Die Elemente und Attribute von XSLT
260
7.1.5 Verknüpfung zwischen Stylesheet und Dokument
262
7.1.6 Das Element <stylesheet>
263
7.1.7 Top-Level-Elemente
264
7.1.8 Template-Regeln
265
7.1.9 Attributwert-Templates
266
7.1.10 Zugriff auf die Quelldaten
268
7.2 Ablauf der Transformation
268
7.2.1 Startpunkt Dokumentknoten
269
7.2.2 Anwendung von Templates
269
7.2.3 Rückgriff auf versteckte Templates
270
7.2.4 Auflösung von Template-Konflikten
271
7.3 Stylesheet mit nur einer Template-Regel
271
7.4 Eingebaute Template-Regeln
272
7.5 Designalternativen
273
7.6 Kontrolle der Knotenverarbeitung
275
7.6.1 Benannte Templates
276
7.6.2 Template-Auswahl mit XPath-Mustern
277
7.6.3 Kontext-Templates
279
7.6.4 Template-Modi
280
7.7 Datenübernahme aus der Quelldatei
281
7.8 Nummerierungen
283
7.8.1 Einfach
283
7.8.2 Mehrstufig
283
7.8.3 Zusammengesetzt
285
7.9 Verzweigungen und Wiederholungen
286
7.9.1 Bedingte Ausführung von Templates
286
7.9.2 Wahlmöglichkeiten
287
7.9.3 Schleifen
288
7.10 Sortieren und Gruppieren von Quelldaten
291
7.10.1 Sortierschlüssel
291
7.10.2 Sortierreihenfolge
293
7.11 Parameter und Variablen
294
7.11.1 Parameterübergabe
294
7.11.2 Globale Parameter
295
7.11.3 Lokale und globale Variablen
295
7.11.4 Eindeutige Namen
296
7.11.5 Typische Anwendungen von Variablen in XSLT
296
7.11.6 Rekursive Templates
301
7.12 Hinzufügen von Elementen und Attributen
303
7.12.1 Elemente aus vorhandenen Informationen erzeugen
304
7.12.2 Attributlisten
305
7.12.3 Texte und Leerräume
305
7.12.4 Kontrolle der Ausgabe
306
7.13 Zusätzliche XSLT-Funktionen
307
7.13.1 Zugriff auf mehrere Quelldokumente
307
7.13.2 Zahlenformatierung
309
7.13.3 Liste der zusätzlichen Funktionen in XSLT
310
7.14 Mehrfache Verwendung von Stylesheets
311
7.14.1 Stylesheets einfügen
311
7.14.2 Stylesheets importieren
312
7.15 Übersetzungen zwischen XML-Vokabularen
312
7.15.1 Diverse Schemas für gleiche Informationen
313
7.15.2 Angleichung durch Transformation
314
7.16 Umwandlung von XML in HTML und XHTML
315
7.16.1 Datenübernahme mit Ergänzungen
316
7.16.2 Tabellenkopf mit CSS
318
7.16.3 Aufbau einer Tabelle
318
7.16.4 Transformation in XHTML
319
7.16.5 XHTML-Module
320
7.16.6 Allgemeine Merkmale von XHTML
321
7.16.7 Aufbau eines XHTML-Dokuments
322
7.16.8 Automatische Übersetzung
323
7.17 Kurzreferenz zu XSLT 1.0
324
7.18 XSLT 2.0
333
7.18.1 Die wichtigsten Neuerungen
333
7.18.2 Neue Funktionen in XSLT 2.0
339
7.18.3 Neue Elemente in XSLT 2.0
340
7.19 XSLT 3.0
344
7.19.1 Streams
344
7.19.2 Packages
345
7.19.3 Umgang mit Maps
346
7.19.4 XML und JSON
347
7.19.5 Iterationen
348
7.19.6 Akkumulatoren
349
7.19.7 Unterstützung für XSLT 3.0?
351
7.19.8 Liste der zusätzlichen Funktionen in XSLT 3.0
351
7.19.9 Neue Elemente in XSLT 3.0
353
8 Formatierung mit XSL
361
8.1 Transformation und Formatierung
361
8.2 Formatierungsobjekte
362
8.3 Baum aus Bereichen – Areas
363
8.4 XSL-Bereichsmodell
363
8.4.1 Block-Bereiche und Inline-Bereiche
364
8.4.2 XSL und CSS
364
8.5 Testumgebung für XSL
365
8.6 Aufbau eines XSL-Stylesheets
367
8.6.1 Baum der Formatierungsobjekte
367
8.6.2 Seitenaufbau
368
8.6.3 Seitenfolgen
369
8.6.4 Einfügen von Fließtext
369
8.6.5 Blockobjekte
370
8.7 Verknüpfung mit dem Dokument und Ausgabe
372
8.8 Inline-Formatierungsobjekte
373
8.9 Ausgabe von Tabellen
374
8.9.1 Tabellenstruktur
374
8.9.2 Zellinhalte
375
8.10 Listen
377
8.11 Gesucht: visuelle Editoren
378
8.12 Übersicht über die Formatierungsobjekte von XSL
379
8.12.1 Übergeordnete Objekte
379
8.12.2 Blockformatierung
381
8.12.3 Inline-Formatierung
381
8.12.4 Tabellenformatierung
382
8.12.5 Listenformatierung
383
8.12.6 Formatierung für Verknüpfungen
384
8.12.7 Out-of-Line-Formatierung
384
8.12.8 Andere Objekte
385
9 Abfragen mit XQuery
387
9.1 Datenmodell und Verfahren
388
9.1.1 Zur Syntax
389
9.1.2 Instanzen des Datenmodells
390
9.1.3 W3C-Empfehlungen zu XQuery
392
9.2 Abfragepraxis
393
9.2.1 XQuery-Modul
393
9.2.2 Zugriff über das Web
395
9.3 FLWOR-Ausdrücke
395
9.3.1 Variablen in XQuery
399
9.3.2 Steuerung der Ausgabe
400
9.4 Fortgeschrittene Optionen
401
9.4.1 Auswertung zweier verbundener Dokumente
401
9.4.2 Kollektionen auswerten
402
9.4.3 Benutzerdefinierte Funktionen
403
9.5 Implementierungen
404
9.6 Neuerungen in XQuery 3.1
405
10 Programmierschnittstellen für XML
411
10.1 Abstrakte Schnittstellen: DOM und SAX
411
10.2 Document Object Model (DOM)
413
10.2.1 DOM Level
414
10.2.2 Objekte, Schnittstellen, Knoten und Knotentypen
415
10.2.3 Die allgemeine Node-Schnittstelle
415
10.2.4 Knotentypen und ihre Besonderheiten
417
10.2.5 Zusätzliche Schnittstellen
418
10.2.6 Zugriff über Namen
419
10.2.7 Verwandtschaften
419
10.2.8 Das Dokument als DOM-Baum
420
10.2.9 Document – die Mutter aller Knoten
422
10.2.10 Elementknoten
423
10.2.11 Textknoten
424
10.2.12 Attributknoten sind anders
424
10.2.13 Dokumentfragmente
425
10.2.14 Fehlerbehandlung
425
10.3 DOM-Implementierungen
425
10.3.1 Die MSXML-Implementierung von DOM
426
10.3.2 Erweiterungen für Laden und Speichern
426
10.3.3 Fingerübung mit DOM
426
10.3.4 Daten eines XML-Dokuments abfragen
427
10.3.5 Alternative zu DOM: Simple API for XML (SAX)
430
10.3.6 Vergesslicher Beobachter am Datenstrom
430
10.3.7 SAX2 unter Java
431
10.3.8 Der Kern der SAX-Schnittstellen
432
10.3.9 »ContentHandler«
434
10.3.10 Attribute
435
10.3.11 SAX2-Erweiterungen
436
10.3.12 Hilfsklassen
438
10.3.13 SAXParser und XMLReader
439
10.3.14 Konfigurieren des Parsers
440
10.3.15 Kleine Lagerauswertung mit SAX
443
10.3.16 Aufruf des Parsers
446
10.3.17 Fehlerbehandlung
447
10.3.18 SAX-Beispiel 1
448
10.3.19 SAX-Beispiel 2
452
10.3.20 SAX und DOM
454
10.4 Arbeit mit XML-Klassen in Visual Basic
455
10.4.1 XML-Architektur im .NET Framework
455
10.4.2 Lesen von XML-Daten
456
10.4.3 XML-Reader im Vergleich zum SAX-Reader
457
10.4.4 Arbeitsweise von »XmlReader«
458
10.4.5 XML-Dokument mit »XMLTextReader« auswerten
458
10.4.6 Lesen von XML-Fragmenten
462
10.4.7 Validierung anhand von XML-Schemas oder DTDs
463
10.4.8 Schreiben von XML-Daten
465
10.4.9 »XmlTextWriter«
470
10.4.10 XML-Serialisierung und -Deserialisierung
474
10.5 Zugriff auf XML-Daten mit »LINQ to XML«
479
10.5.1 LINQ to XML
480
10.5.2 X-Klassen
480
10.5.3 Functional Construction
481
10.5.4 XML-Literale
482
10.5.5 Schreiben und Laden von XML-Dateien
485
11 XML in Office-Anwendungen
487
11.1 XML in Microsoft Office
488
11.1.1 Der Standard Office Open XML
488
11.1.2 Open XML für Excel
489
11.1.3 Open XML für Word
493
11.2 Die Alternative OpenDocument
494
11.3 Einsatz benutzerdefinierter Schemas
498
11.3.1 Zuordnen eines Schemas
499
11.3.2 Optionen beim Öffnen von XML-Dokumenten
500
11.3.3 Daten als XML-Tabelle übernehmen
500
11.3.4 XML-Tabellenbereiche
503
11.3.5 XML-Zuordnungen
504
11.3.6 Datenaktualisierung
505
11.3.7 Öffnen als schreibgeschützte Arbeitsmappe
506
11.3.8 Verwenden von XSLT-Stylesheets
506
11.3.9 Datenquelle und Tabelle manuell verknüpfen
509
11.3.10 »XmlMap«-Objekte
512
11.3.11 Tabelle auf der Basis eines eigenen Schemas
512
11.3.12 Fehlererkennung
512
11.3.13 XML-Dokumente erzeugen
513
11.3.14 Schema-Einschränkungen
513
12 Mapping – von XML oder nach XML
515
12.1 Codegenerierung für Transformationen
515
12.1.1 Oberfläche und Dateiformate
516
12.1.2 Funktionsbibliotheken
518
12.1.3 Von Schema zu Schema
519
12.2 Datenausgabe
521
12.3 Stylesheet-Generierung
522
12.4 Eigene Funktionen
523
12.5 Mapping von Datenbankdaten
524
12.6 Mapping für Excel-Tabellen
526
12.7 EDIFACT und ANSI X12
527
12.8 Mapping zwischen JSON und XML
528
13 Publizieren mit EPUB
533
13.1 Electronic Publication
533
13.1.1 Content Documents
534
13.1.2 Paket-Format
535
13.1.3 Open Container Format
537
13.2 Tools für EPUB
539
13.3 Autorentools
541
14 HTML5 und XML
543
14.1 Unerfüllte Erwartungen
543
14.2 Die Wiederbelebung von HTML
546
14.3 Fixer oder lebendiger Standard?
547
14.4 Was ist neu?
547
14.5 DOCTYPE und Ausführungsmodus
548
14.6 HTML vs. XML
549
14.7 Aussichten
550
14.8 XML-Inhalte im Browser
550
14.8.1 Die Wiederbelebung von SVG
551
14.8.2 Dynamische Illustrationen
552
14.9 Freiwillige gesucht
557
Anhang
559
A Glossar
559
B Webressourcen
567
B.1 Webseiten für Entwickler
567
B.2 Liste von Empfehlungen des W3C
569
B.3 Liste von wichtigen Namensräumen des W3C
572
Index
575