Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis HANSER
r 1 Einleitung 2 1.1 Über dieses Buch 3 1.2 Für wen ist das Buch gedacht? 4 1.3 Wie ist das Buch aufgebaut? 5 1.4 Konventionen 6 1.5 Die wichtigsten Werkzeuge 6 1.5.1 Texteditoren 7 1.5.2 XML-Editoren 9 1.5.3 Alles weitere 10 2 Erste Schritte mit XML 12 2.1 Elemente und Attribute 17 2.2 Regeln 19 2.3 Leere Elemente 21 2.4 Wurzelelement 22 2.5 Elemente vs. Attribute 22 2.6 XML betrachten 23 2.6.1 XML mit dem Microsoft Internet Explorer 23 2.6.2 XML mit Mozilla 25 2.6.3 Fehler finden und korrigieren 26 2.7 Buchstabensalat 29 2.7.1 XML 29 2.7.2 SGML 29 2.7.3 DTD 29 2.7.4 XSLundXSLT 30 2.7.5 SAX und DOM 31 3 Markup-Sprachen 34 3.1 Von der Steinzeit der Textverarbeitung 34 3.2 Digitale Repräsentation von Text 35 3.3 Die Lösung: Verkettete Listen 37 3.4 Digitale Formatierung von Text 40 3.5 Vom Druck zum Bildschirm 42 3.6 Markup 42 3.7 Von SGML zu XML 52
VIII 3.8 HTML und XML 53 3.9 Warum sollte ich XML verwenden? 57 3.9.1 Eigenschaften 57 3.9.2 Funktionen 58 4 XML-Code erstellen 62 4.1 Der Kopf eines XML-Dokumentes 62 4.2 Ausblick auf XML 1.1 64 4.3 Definition: Wohlgeformte Dokumente 66 4.4 Kommentare in XML 68 4.5 Zeichensätze und Unicode 69 4.5.1 Die ISO-Standards 70 4.5.2 UniCode und UTF-8 71 4.5.3 Ein Beispiel mit ISO-8859-1 und UTF-8 72 4.6 Aufbau eines XML-Dokumentes 77 4.6.1 Das Wurzelelement 77 4.6.2 Ordnung von Elementen 78 4.6.3 Daten- und Containerelemente 80 4.7 Namensräume 81 4.8 Processing Instructions 89 4.9 Sonderzeichen in XML 91 5 Informationsmodellierung mit XML 104 5.1 Das Ziel: Whitelabel Onlineshop 104 5.2 Ein vielarmiges System 105 5.3 Informationsmodellierung mit XML 110 5.3.1 Der Produktentwurf 111 5.3.2 Mehrprodukte 112 5.4 XML dynamisch erstellen 114 5.4.1 XML-Strings 115 5.5 XML exportieren und an den Client senden 118 5.5.1 Lokaler XML-Export mit Perl 119 5.5.2 XML-Export via HTTP 122 5.5.3 XML-Export mit PHP 125 5.5.4 XML anhand von Suchanfragen erstellen 128 5.5.5 Push und Pull Transfer 130 5.6 Quintessenz aus diesem Kapitel 131 6 Document Type Definition 134 6.1 Warum das Ganze? 134 6.2 Definition: Gültige Dokumente 138 6.3 DTDs erstellen 139 6.3.1 DTD im XML-Dokument 139 6.3.2 Elemente definieren 142 6.3.3 Mehrere Kindelemente festlegen 145
IX 6.3.4 Operatoren für Elemente 148 6.3.5 Elementgruppen und Operatoren 150 6.3.6 Elementgruppen und Konjunkturen 151 6.4 Attribute in einer DTD 153 6.4.1 Aufbau einer Attributdefinition 153 6.4.2 Attributtypen 154 6.4.3 ID, IDREF, ENTITY 155 6.4.4 Plural-Typen für Attribute 158 6.4.5 Modifikatoren für Attribute 159 6.4.6 Default-Werte für Attribute 161 6.5 Entities 163 6.5.1 Feste Entities 163 6.5.2 Eigene Entities 165 6.5.3 Parameter Entities 167 6.5.4 Externe Entities 170 6.5.5 Die Attributtypen ENTITY und ENTITIES 172 6.6 Parser und die DTD 174 6.7 Interne und externe DTDs 175 6.7.1 Öffentliche DTDs 177 6.7.2 Aufbau einer externen DTD 178 6.8 DTD und Namensräume 180 7 XML-Schema 184 7.1 Einige grundsätzliche Dinge zu XML-Schema 185 7.1.1 Wie wird XML-Schema aufgebaut? 185 7.1.2 Wie arbeitet XML-Schema? 186 7.1.3 Sind Schema-gültige Dokumente auch gültige Dokumente? 186 7.2 Aufbau eines XML-Schema-Dokumentes 187 7.2.1 Elemente definieren 188 7.2.2 Komplexe Datentypen 190 7.2.3 Attribute definieren 195 7.2.4 Eine XML-Datei mit einem Schema verknüpfen 198 8 Eine Grammatik für den Shop 200 8.1 Eine Grammatik mit der DTD 202 8.1.1 Elemente für den Shop definieren 202 8.1.2 Attribute für den Shop definieren 205 8.1.3 Die komplette DTD 206 8.1.4 Die DTD in die XML-Datei einfügen 206 8.2 Eine Grammatik mit XML-Schema 207 8.2.1 Elemente für den Shop definieren 208 8.2.2 Attribute für den Shop definieren 212 8.2.3 Die komplette Schema-Datei 213 8.2.4 Die Schema-Datei in der XML-Datei einfügen 215
X 9 Simple API for XML 218 9.1 XML-Code wird gelesen 218 9.2 Wie funktioniert die SAX-Schnittstelle? 220 9.3 Elemente, Attribute und Ereignisse 221 9.4 SAX-Ereignisse 226 9.5 Mehr über SAX 228 9.6 Entwicklung für XML mit SAX 229 10 Document Object Model 232 10.1 Wie funktioniert DOM? 233 10.2 XML mit DOM verarbeiten 237 10.2.1 Der Zugriff auf die XML-Daten 237 10.2.2 Ein paar Worte über Knoten 238 10.2.3 Knotenlisten 242 10.3 Rekursive Analyse 244 10.4 DOM Level 3 248 10.5 Programmieren mit DOM 249 11 Programmieren für XML 252 11.1 Die Werkzeuge 252 11.2 XML mit Java parsen (SAX) 261 11.2.1 Das Programm erstellen 263 11.2.2 Event-Methoden definieren 266 11.2.3 Datenbankzugriff 275 11.2.4 Die XML-Daten validieren 276 11.3 XML mit PHP parsen 278 11.3.1 XML als HTML ausgegeben 279 11.3.2 Der Parser in PHP 280 11.3.3 Event-Funktionen definieren 284 11.3.4 Fehlerbehandlung 288 11.3.5 Das komplette Skript 289 11.4 XML mit Perl parsen 292 11.4.1 Das Modul SAX::Parser 293 11.4.2 Die Event-Funktionen 293 11.4.3 Das komplette Skript 295 11.5 XML mit Java parsen (DOM) 296 11.5.1 Der DOM-Parser von Xerces 298 11.5.2 Die Daten im Speicher analysieren 302 11.5.3 Die Knoten-Methoden 305 11.5.4 Das komplette Programm 307 12 XPath 312 12.1 XPath 1.0 312 12.2 XML und wieder Bäume 313
XI 12.3 Knotenmengen 314 12.4 XPath-Ausdrücke 316 12.5 Einschränkungen mit Bedingungen 319 12.6 Funktionen für XPath 320 12.7 Resümee 322 13 XSL-Stylesheets 324 13.1 Ein paar grundsätzliche Anmerkungen 325 13.2 Die Werkzeuge 327 13.2.1 XSL-Transformations 328 13.2.2 XPath 329 13.2.3 XSL-FO 329 13.2.4 Der XSLT-Prozessor 332 13.2.5 Weitere Werkzeuge 334 13.3 Stylesheets erstellen 334 13.3.1 XSL als XML-Dokument 335 13.3.2 Das Template 336 13.3.3 Das erste Beispiel 338 13.3.4 Instruktionselemente 343 13.3.5 Mehrere Templates 346 13.3.6 Kontrollstrukturen 351 13.4 Weitere Möglichkeiten mit XSL 356 13.4.1 xsl:output 356 13.4.2 xsl:strip-space 357 13.4.3 xsl:text 357 13.4.4 xsl:element und xsl:attribute 358 14 XML mit Java transformieren 362 14.1 Die Werkzeuge 362 14.1.1 Java 362 14.1.2 Der XML-Parser Xerces 362 14.1.3 Xalan 363 14.1.4 FOP 363 14.2 Arbeiten mit Xalan 363 14.2.1 Das Stylesheet für den Shop erstellen 365 14.2.2 Xalan an der Kommandozeile starten 367 14.2.3 Weitere Parameter 369 14.3 HTML-Dateien erstellen 369 14.3.1 Die Java-Applikation erstellen 370 14.3.2 Das komplette Programm 372 14.4 Umwandlung in PDF mit formatierenden Objekten 373 14.4.1 Ein FO-Dokument erstellen 373 14.4.2 FO-Dokumente umwandeln 386 14.4.3 Ein FO-Dokument mit einem Stylesheet erstellen 387
XII 15 Anhang 392 15.1 Wichtige und interessante Webseiten 392 15.2 Lizenzen und Bestimmungen 394 15.2.1 The Apache Software License, Version 1.1 394 15.2.2 Sun Microsystems, Inc. Binary Code License Agreement 395 15.2.3 JAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK), STANDARD EDITION, VERSION 1.4.X SUPPLEMENTAL LICENSE TERMS 397 15.2.4 Microsoft Internet Explorer 6.0 400 15.2.5 W3C Intellectual Rights Notice and Legal Disclaimers 400 15.2.6 Active Perl Copyright 403 15.2.7 The PHP License, version 3.0 405 15.2.8 MOZILLA PUBLIC LICENSE Version 1.1 406 Index 413