Inhalt | 6 |
1 XML – ein Blick zurück und voraus | 12 |
1.1 Die Idee hinter XML | 12 |
1.2 Das Prinzip der Metasprachen | 15 |
1.2.1 Multimedia ist Trumpf mit SMIL | 17 |
1.2.2 Mit WML alles fürs Handy | 18 |
1.2.3 Vektorgrafiken mit SVG | 18 |
1.2.4 Silverlight | 19 |
1.3 Die Einsatzgebiete von XML | 20 |
1.3.1 AJAX | 20 |
1.3.2 Web-Services | 22 |
1.3.3 Druckindustrie | 23 |
1.3.4 Konfigurationsdateien | 24 |
1.4 XML und das semantische Web | 25 |
1.4.1 Was Semantik bringt | 25 |
1.5 XML-Editoren im Einsatz | 30 |
1.5.1 XMLSpy | 31 |
1.5.2 XMLBlueprint | 31 |
2 Die XML-Grundlagen | 34 |
2.1 Hallo, Welt zum Einstieg | 34 |
2.2 Die XML-Deklaration | 38 |
2.2.1 Den verwendeten Zeichensatz angeben | 38 |
2.2.2 Angaben zur Dokumenttypdefinition | 40 |
2.3 Elemente definieren | 41 |
2.3.1 Leere Elemente kennzeichnen | 43 |
2.3.2 Fehlerquelle verschachtelte Elemente | 43 |
2.3.3 Elemente mit Attributen detaillierter beschreiben | 45 |
2.3.4 Was ist besser: Elemente oder Attribute? | 48 |
2.3.5 Reservierte Attribute | 49 |
2.4 XML-eigene Zeichen maskieren: Entitäten | 50 |
2.5 Zeit sparen mit CDATA-Abschnitten | 53 |
2.6 Kommentare für übersichtlichen Code | 55 |
2.7 Verarbeitungsanweisungen (Processing Instructions) | 56 |
2.8 Namensräume definieren | 57 |
2.8.1 Den Standardnamensraum angeben | 59 |
2.8.2 Das Namensraumpräfix | 60 |
2.9 Das Prinzip der Wohlgeformtheit | 61 |
3 Dokumenttypen beschreiben | 66 |
3.1 Dokumenttypdefinitionen | 66 |
3.2 Die Dokumenttypdeklaration | 68 |
3.2.1 Externe DTDs verwenden | 69 |
3.2.2 Bedingte Abschnitte | 71 |
3.3 Elemente beschreiben: Elementtypdeklarationen | 72 |
3.3.1 Ein Beispiel für eine DTD | 72 |
3.3.2 Elemente, die weitere Elemente enthalten | 73 |
3.3.3 Elemente mit Zeichendaten | 73 |
3.3.4 Containerelemente verwenden | 74 |
3.3.5 Leere Elemente | 75 |
3.3.6 Inhaltsalternativen angeben | 75 |
3.3.7 Elemente mit beliebigem Inhalt | 77 |
3.3.8 Elemente mit gemischtem Inhalt | 77 |
3.3.9 Das Inhaltsmodell und die Reihenfolge | 78 |
3.3.10 Kommentare erhöhen die Übersichtlichkeit | 79 |
3.4 Attribute beschreiben: Attributlistendeklarationen | 80 |
3.4.1 Attributtypen und Vorgaberegelungen | 81 |
3.5 Auf andere Elemente verweisen | 87 |
3.6 Entitäten – Kürzel verwenden | 87 |
3.6.1 Interne Entitäten | 88 |
3.6.2 Externe Entitäten | 90 |
3.6.3 Notationen und ungeparste Entitäten | 92 |
3.6.4 Parameterentitäten einsetzen | 93 |
3.7 DTD-Tipps für die Praxis | 95 |
3.7.1 Elemente oder Attribute | 95 |
3.7.2 Parameterentitäten | 95 |
3.7.3 Mögliche Gründe für eine DTD | 96 |
3.7.4 Hier lohnen sich DTDs nicht | 96 |
4 Dokumenttypdefinition reloaded:XML Schema | 98 |
4.1 Die Idee hinter XML Schema | 98 |
4.1.1 Die Nachteile von DTDs | 101 |
4.1.2 Anforderungen an XML Schema | 102 |
4.2 Die Grundstruktur | 103 |
4.2.1 XML Schema validieren | 105 |
4.2.2 Schema und Dokument verknüpfen | 106 |
4.3 Mit Kommentaren arbeiten | 107 |
4.4 Elementnamen und Elementtypen | 107 |
4.4.1 Elementtypen | 108 |
4.4.2 Attributdefinitionen | 112 |
4.5 Datentypen | 113 |
4.5.1 Alle Datentypen in der Übersicht | 114 |
4.5.2 Von Werteräumen, lexikalischen Räumen und Facetten | 118 |
4.5.3 Ableitungen durch Einschränkungen | 119 |
4.5.4 Facetten verwenden | 120 |
4.5.5 Mit regulären Ausdrücken arbeiten | 123 |
4.6 Die Dokumentstruktur definieren | 127 |
4.6.1 Elemente deklarieren | 127 |
4.6.2 Attribute deklarieren | 128 |
4.6.3 Elementvarianten | 129 |
4.6.4 Namensräume verwenden | 130 |
4.6.5 Mit lokalen Elementen und Attributen arbeiten | 133 |
4.6.6 Globale Elemente und Attribute | 136 |
4.7 Häufigkeitsbestimmungen | 137 |
4.8 Kompositoren einsetzen | 140 |
4.8.1 xsd:all | 140 |
4.8.2 xsd:choice | 141 |
4.8.3 xsd:sequence | 141 |
4.8.4 Modellgruppen verschachteln | 141 |
4.9 Mit benannten Modellgruppen arbeiten | 142 |
4.9.1 Attributgruppen definieren | 143 |
4.10 Schlüsselelemente und deren Bezüge | 144 |
4.10.1 Die Eindeutigkeit von Elementen | 145 |
4.10.2 Auf Schlüsselelemente Bezug nehmen | 146 |
4.11 Komplexe Datentypen ableiten | 147 |
4.11.1 Komplexe Elemente erweitern | 147 |
4.11.2 Komplexe Elemente einschränken | 148 |
4.11.3 Datentypen steuern und ableiten | 149 |
4.11.4 Abstraktionen | 150 |
4.11.5 Gemischte Inhalte | 151 |
4.11.6 Leeres Inhaltsmodell | 152 |
4.12 Die Möglichkeiten der Wiederverwendbarkeit | 153 |
4.12.1 Benannte Typen | 153 |
4.12.2 Referenzen verwenden | 154 |
4.13 Schemeta inkludieren und importieren | 154 |
4.13.1 Schemata inkludieren | 154 |
4.13.2 xsd:redefine einsetzen | 155 |
4.13.3 Das xsd:import-Element verwenden | 156 |
4.14 Das Schema dem XML-Dokument zuordnen | 156 |
5 XPath, XPointer und XLink | 158 |
5.1 XPath – alles zum Adressieren | 158 |
5.1.1 Die Idee hinter XPath | 159 |
5.1.2 Mit Knoten arbeiten | 164 |
5.1.3 Achsen – die Richtung der Elementauswahl | 167 |
5.1.4 Adressierung von Knoten | 168 |
5.1.5 Der Unterschied zwischen absoluten und relativen Pfaden | 169 |
5.1.6 Verkürzte Syntaxformen verwenden | 174 |
5.1.7 Variablen einsetzen | 177 |
5.1.8 Auch Funktionen gibt es | 177 |
5.2 Neuerungen in XPath 2.0 | 182 |
5.2.1 Die Rückwärtskompatibilität zu XPath 1.0 | 183 |
5.2.2 Das erweiterte Datenmodell | 183 |
5.2.3 Kommentare | 186 |
5.2.4 Knotentests | 187 |
5.2.5 Schleifenausdrücke | 188 |
5.2.6 Bedingungen definieren | 189 |
5.2.7 Die erweiterte Funktionsbibliothek | 189 |
5.3 XPointer – mit Zeigern arbeiten | 196 |
5.3.1 URIs und Fragmentbezeichner | 196 |
5.3.2 Die XPointer-Syntax | 197 |
5.3.3 Der XPointer-Sprachschatz | 198 |
5.3.4 XPointer innerhalb von URIs | 200 |
5.3.5 XPointer innerhalb von Hyperlinks | 202 |
5.3.6 XPath-Erweiterungen in XPointer | 204 |
5.3.7 Mit Funktionen arbeiten | 205 |
5.4 XLink – Links in XML definieren | 210 |
5.4.1 Link-Typen und andere Attribute | 212 |
5.4.2 Einfache Links anlegen | 214 |
5.4.3 Erweiterte Links definieren | 215 |
5.4.4 DTDs für XLinks definieren | 219 |
5.5 XML Base – eine Linkbasis schaffen | 220 |
6 Ausgabe mit CSS | 224 |
6.1 Schnelleinstieg in CSS | 224 |
6.1.1 CSS-Maßeinheiten | 225 |
6.1.2 Mit Selektoren arbeiten | 227 |
6.1.3 Das Prinzip der Kaskade | 231 |
6.1.4 Die Spezifität ermitteln | 233 |
6.1.5 Ein Beispiel für das Vererbungsprinzip | 234 |
6.2 XML mit CSS formatieren | 236 |
6.2.1 XML-Elemente formatieren | 238 |
6.3 Die Schwächen von CSS (in Bezug auf XML) | 240 |
7 Transformation mit XSLT | 242 |
7.1 Sprachverwirrung: XSLT, XSL und XSL-FO | 242 |
7.2 Das Grundprinzip der Transformation | 244 |
7.2.1 XSLT-Prozessoren im Einsatz | 246 |
7.3 Der Einstieg in XSLT: Hallo, Welt! | 253 |
7.3.1 Das Element xsl:stylesheet | 255 |
7.3.2 Top-Level-Elemente | 256 |
7.4 Templates definieren | 258 |
7.4.1 Template-Regeln | 258 |
7.4.2 Suchmuster/Pattern einsetzen | 259 |
7.5 Der Ablauf der Transformation | 260 |
7.5.1 Alles beginnt beim Wurzelknoten | 260 |
7.5.2 Anwendung von Templates | 260 |
7.5.3 Verhalten bei Template-Konflikten | 261 |
7.5.4 Stylesheets mit nur einer Template-Regel | 262 |
7.5.5 Überschreiben von Template-Regeln | 262 |
7.5.6 Mit Modi Elemente mehrmals verarbeiten | 263 |
7.5.7 Eingebaute Template-Regeln | 264 |
7.6 Templates aufrufen | 265 |
7.7 Templates einbinden | 268 |
7.8 Stylesheets einfügen, importieren undwiederverwenden | 270 |
7.8.1 Stylesheets einfügen | 271 |
7.8.2 Stylesheets importieren | 271 |
7.8.3 Stylesheets inkludieren | 273 |
7.9 Mit XSLT arbeiten | 276 |
7.9.1 Variablen und Parameter einsetzen | 276 |
7.9.2 Variablen verwenden | 280 |
7.9.3 Bedingte Anweisungen | 287 |
7.9.4 Erweiterte Bedingungen definieren | 289 |
7.9.5 Nummerierungen | 292 |
7.9.6 Sortieren und Gruppieren | 294 |
7.9.7 Elemente und Attribute hinzufügen | 304 |
7.9.8 Mit Funktionen arbeiten | 313 |
7.9.9 HTML- und XML-Ausgaben | 318 |
7.10 Text formatiert ausgeben | 322 |
7.10.1 Hyperlinks und Grafiken | 324 |
7.11 Weitere Neuerungen in XSLT 2.0 | 326 |
7.11.1 Neue Elemente | 327 |
7.11.2 Rückwärtskompatibiliät | 332 |
8 Formatierungen mit XSL-FO | 334 |
8.1 Die Idee hinter XSL-FO | 334 |
8.1.1 Eigenschaften der Sprache | 335 |
8.1.2 Einsatzgebiete von XSL-FO | 336 |
8.1.3 Die Spezifikation des Vokabulars | 336 |
8.1.4 Der Verarbeitungsprozess | 338 |
8.1.5 Diese XSL-FO-Werkzeuge gibt es | 339 |
8.1.6 Prozessoren im Einsatz | 342 |
8.1.7 Prozessoren und die Standards | 346 |
8.2 Stylesheet-Design | 348 |
8.2.1 Seitenlayout und Bildschirmdesign | 348 |
8.2.2 Das Wurzelelement | 349 |
8.2.3 Stylesheets aufbauen | 349 |
8.2.4 Attributsätze | 351 |
8.2.5 Parameter und Variablen | 352 |
8.3 Seitenlayouts festlegen | 353 |
8.3.1 Maßeinheiten in XSL-FO | 353 |
8.3.2 Das Seitenlayout definieren | 353 |
8.3.3 Seitenfolgen-Vorlagen definieren | 356 |
8.3.4 Die Seitenfolge festlegen | 358 |
8.3.5 Druckbereiche festlegen | 363 |
8.3.6 Mit Blöcken arbeiten | 364 |
8.3.7 Mit Inline-Elementen arbeiten | 366 |
8.3.8 Schreibrichtung bestimmen | 368 |
8.3.9 Die Ausrichtung festlegen | 369 |
8.3.10 Das Farbmanagement in XSL-FO | 370 |
8.4 Typografische Gestaltung | 372 |
8.4.1 Defaults, Vererbung, Verschachtelung | 372 |
8.4.2 Seitenzahlen einfügen | 372 |
8.5 Rahmen und Ränder | 374 |
8.5.1 Außenabstände bestimmen | 374 |
8.5.2 Innenabstände | 379 |
8.5.3 Vertikale Abstände | 381 |
8.5.4 Rahmen definieren | 383 |
8.6 Schriftgestaltung | 385 |
8.6.1 Ausrichtung | 385 |
8.6.2 Mit Einrückungen arbeiten | 386 |
8.6.3 Schriftart festlegen | 387 |
8.6.4 Schriftgröße bestimmen | 388 |
8.6.5 Zeilenhöhe | 389 |
8.6.6 Unterstreichungen & Co. | 390 |
8.6.7 Horizontale Linien innerhalb von Blöcken | 391 |
8.6.8 Silbentrennung | 395 |
8.6.9 Groß- und Kleinschreibung | 395 |
8.7 Hyperlinks und Querverweise setzen | 396 |
8.8 Listen und Aufzählungen | 398 |
8.8.1 Abstände innerhalb von Listen | 400 |
8.9 Fußnoten | 402 |
8.10 Grafiken einbinden | 405 |
8.10.1 Hintergrundbilder definieren | 406 |
8.10.2 SVG einbinden | 408 |
8.11 Mit Tabellen arbeiten | 410 |
8.11.1 Zellen und Zeilen überspannen | 412 |
8.12 Das Float-Konzept | 414 |
Register | 416 |