Die XML-Bibel
Übersetzung der 1.Auflage von Reinhard Engel
Übersetzung der 2. Auflage der XML-Bibel
von Uwe Thiemann und Rüdiger Dieterle
Einleitung 19 Danksagung 25 Installation der CD-ROM 27
Teil 1 Einführung in XML 29
Kapitell: XML aus der Vogelperspektive 31 Was ist XML? . . 31 XML ist eine Meta-Auszeichnungssprache 31 XML beschreibt Struktur und Semantik, keine Formatierung . 32 Warum sind Entwickler von XML so angetan? 33 Entwurf domänenspezifischer Auszeichnungssprachen 34 Selbst beschreibende Daten 34 Datenaustausch zwischen Anwendungen 35 Strukturierte und integrierte Daten ' • • 36 Das Leben eines XML-Dokumentes 36 Editoren 36 Parser und Prozessoren . 37 Browser und andere Anwendungen 37 Zusammenfassung des Prozesses 37 Verwandte Techniken 38 Hypertext Markup Language (HTML) 38 Cascading Stylesheets 39 Extensible Style Language 39 URLs und. URIs 40 XLinks und XPointer 41 Der Unicode-Zeichensatz ' 42 Wie die Techniken zusammenpassen 42 Zusammenfassung 42
Kapitel 2: Eine Einführung in XML-Anwendungen 45
XML-Anwendungen 45
Chemical Markup Language . 46
Mathematical Markup Language (MathML) 47
Channel Definition Format 50
Klassische Literatur 51
,- Synchroriized Multimedia Integration Language 53 HTML+TIME 53 Open Software Description (OSD) 55 Skalierbare Vektorgrafik 55 Vektor Markup Language (VML) 57 MusicML 58 VoiceXML 60 Open Financial Exchange 62 Extensible Forms Description Language 65 HR-XML 67 Ressource Description Framework 70
XML für XML 72
XSL 72 XLinks 73 Schemata 73XML-Anwendungen hinter den Kulissen 74
Microsoft Office 2000 75 What's Related von Netscape 75 Zusammenfassung 78Kapitel 3: Ihr erstes XML-Dokument 79
Hello XML 79
Ein einfaches XML-Dokument erstellen 80 Die XML-Datei speichern 80 Die XML-Datei in einen Webbrowser laden 81Das einfache XML-Dokument analysieren 82 XML-Tags Bedeutungen zuweisen 83 Ein Stylesheet für ein XML-Dokument schreiben 83 Ein Stylesheet mit einem XML-Dokument verbinden 84 Zusammenfassung 85
Kapitel 4: Daten strukturieren 87
Die Daten analysieren 87
Batters . 88 Pitcher 90 Organisation der XML-Daten 91Die Daten in XML umwandeln 92
Der Beginn des Dokuments: XML-Deklaration und Root-Element 92 Liga-, Divisions- und Team-Daten in XML umwandeln 94 Spieler-Daten in XML umwandeln 96 Spieler-Statistiken in XML umwandeln 96 Das XML-Dokument wieder zusammenfügen 98 Die Vorteile des XML-Formats 107 Ein Stylesheet für die Anzeige des D o k u m e n t s erstellen 108 Verbindung zu einem Stylesheet herstellen 109 Dem Root-Element Stilregeln zuweisen 111 Titel mit Stilregeln verbinden 112Den Spielern und Statistikelementen Stilregeln zuweisen 116 Das fertige Stylesheet 117 Zusammenfassung 121
Kapitel 5: Attribute, leere Tags und XSL 123 Attribute 123 Attribute im Gegensatz zu Elementen 129
Strukturierte Metadaten 129 Meta-Metadaten 132 Ihre Metadaten sind die Daten einer anderen Person 133 Elemente sind erweiterungsfähiger 133 Passende Gelegenheiten für den Einsatz von Attributen 134
Leere Elemente und leere Element-Tags 135 XSL 136
XSL-Stylesheet-Vorlagen 137 Der Body des Dokuments 138 Der Titel 140 Ligen, Divisionen und Teams 142 Spieler 146 Die Trennung von Pitchern und Battern 149
Elementinhalte und das select-Attribut 154 CSS oder XSL? 160 Zusammenfassung 161 Kapitel 6: Wohlgeformte XML-Dokumente 163 Regeln der Wohlgeformtheit 164 XML-Dokumente 165
Die XML-Deklaration 165 Ein Dokument muss genau ein Root-Element besitzen, das alle
anderen Elemente vollständig enthält. ' 166
Text in XML 166 Elemente und Tags 167
Elementnamen 167 Jeder Start-Tag muss einen entsprechenden End-Tag haben 168 Leerelement-Tags 169 Elemente dürfen verschachtelt sein, sich aber nicht überlappen 170
Attribute 171
Attributwerte 172
Entitätsreferenzen 173 Kommentare . 174 Anweisungen 176 CDATA-Abschnitte 177 'Wohlgeformter HTML-Code 178
Regeln für HTML 179 Werkzeuge 187 Zusammenfassung 189
Kapitel 7: Fremdsprachen und nicht-lateinische Sprachen 191 Nicht-lateinische Schriftsprachen im Web 192 Skripten, Zeichensätze, Schriftarten und Glyphen 195
Ein Zeichensatz für das Skript 196 Eine Schriftart für den Zeichensatz 196 Eine Eingabemethode für den Zeichensatz 197 Betriebssystem und Anwendungssoftware 199
Überkommene Zeichensätze 200
Der ASCII-Zeichensatz 200 Die ISO-Zeichensätze 202 Der MacRoman-Zeichensatz 205 Der Windows-ANSI-Zeichensatz 206
Der Unicode-Zeichensatz 207
Unicode-Kodierungen 211 Unicode 3.1 211
Wie Sie XML in Unicode schreiben 211
Umwandlung in und aus Unicode 212 Zeichen mit Zeichenreferenzen in XML-Dateien einfügen 213 Wie Sie XML in anderen Zeichensätzen schreiben 213 Zusammenfassung 215
Teil 2 Dokumenttyp-Definition 217
Kapitel 8: DTDs und Gültigkeit 219 Dokumenttyp-Definitionen 219 Elementdeklarationen 220 DTD-Dateien 221 Dokumenttyp-Deklarationen 222 Interne DTDs 223 Interne und externe DTD-Untermengen 224 Öffentliche DTDs 225 DTDs und Stylesheets 226 Gültigkeitsüberprüfung anhand einer DTD 227 Gültigkeitsüberprüfung mit Befehlszeilen-Tools 228 Webbasierende Gültigkeitsüberprüfung 229 Zusammenfassung 231
Kapitel 9: Elementdeklarationen 233
Analysieren des Dokuments 234
Das Inhaltsmodell ANY 239
Das Inhaltsmodell #PCDATA 239
Untergeordnete Elemente 242
Folgen 243
Ein oder mehrere untergeordnete Elemente 244
Keine oder mehrere untergeordnete Elemente 245
Kein oder ein untergeordnetes Element 245 Gruppieren mit Klammern 248 Wahlmöglichkeiten (Choices) 250 Gemischter Inhalt 251 Leere Elemente 252 Kommentare in DTDs 254 Zusammenfassung • 259
Kapitel 10: Entitätsdeklarationen 261
Was ist eine Entität? 261 Interne allgemeine Entitäten 262 Eine interne allgemeine Entitätsreferenz definieren 263 Allgemeine Entitätsreferenzen in der DTD benutzen 265 Vordefinierte allgemeine Entitätsreferenzen 266 Externe allgemeine Entitäten 267 Textdeklarationen 269 Nicht überprüfende Parser 270 Interne Parameter-Entitäten 270 Externe Parameter-Entitäten 272 Ein Dokument aus Komponenten zusammensetzen 278 Zusammenfassung 288
Kapitel 11: Attributdeklarationen 289
Was ist ein Attribut? 289 Attribute in DTDs deklarieren 290 Mehrere Attribute deklarieren 291 Vorgabewerte für Attribute spezifizieren 292
#REQUIRED 292
#IMPLIED 293
#FIXED 293 Attributtypen 294 Der Attributtyp CDATA 294 Der Attributtyp NMTOKEN 294 Der Attributtyp NMTOKENS 295 Der Attributtyp Enumerated 295 Der Attributtyp ID 296 Der Attributtyp IDREF 297 Der Attributtyp IDREFS 297 Der Attributtyp ENTITY 298 Der Attributtyp ENTITIES 298 Der Attributtyp NOTATION 299 Vordefmierte Attribute 300 xml: space • 300 xml:lang 301
; Deklarieren von xml:lang 306 Eine D T D für attributbasierte Baseball-Statistiken 306
9
SEASON-Attribute in der DTD deklarieren 308 LEAGUE- und DIVISION-Attribute in der DTD deklarieren 308 TEAM-Attribute in der DTD deklarieren 308 PLAYER-Attribute in der DTD deklarieren 309 Die komplette DTD für das Baseball-Statistik-Beispiel 311
Zusammenfassung 313 Kapitel 12: Nicht geparste Entitäten,
Notationen und Nicht-XML-Daten 315 Notationen , 315 Ungeparste Entitäten 318
Ungeparste Entitäten deklarieren 319 Ungeparste Entitäten einbetten 319 Mehrere ungeparste Entitäten einbetten 322
Verarbeitungsanweisungen 322 Bedingte Abschnitte in DTDs 325 Zusammenfassung 326
Kapitel 13: Namensräume 327 Die Bedeutung der Namensräume 328 Die Namensraumsyntax 329
Namensräume mit xmlns-Attributen definieren 331 Mehrere Namensräume 334 Attribute 338 Standardnamensräume 339
Namensräume und Gültigkeit 343 Zusammenfassung 345
Teil 3 Stil-Sprachen 347
Kapitel 14: CSS Stylesheets 349 Was sind Cascading Style Sheets? 350
Stylesheets mit Dokumenten verbinden : 350 CSS1 im Vergleich mit CSS2 ' 353 CSS3 354
Kommentare in CSS 354 Elemente auswählen 355
Der Universalselektor 357 Selektoren gruppieren 357 Hierarchie-Selektoren 358 Selektoren für Abkömmlinge 358 Selektoren für aneinander grenzende gleichgeordnete Elemente 359 Attributselektoren 360 ID-Selektoren 360 Pseudo-Elemente 361
10
Pseudo-Klassen 362
Vererbung 364 Kaskaden 366 Verschiedene Regeln für verschiedene Medien 367 Stylesheets importieren 368 Stylesheet-Zeichensätze . 369 Zusammenfassung 369 Kapitel 15: CSS-Layouts 371 CSS-Einheiten ' 372
Längenwerte 372 Absolute Längeneinheiten . 373 Relative Längeneinheiten 373 Längeneinheiten als Prozentsätze 374 URL-Werte 374 Farbwerte 375 Schlüsselwort-Werte 378 Zeichenfolgen 378
Die Display-Eigenschaft 379
Eingebettete Elemente 383 Blockelemente ' 383 None 384 Compact- und Run-in-Werte 385 Marker 385 Tabellen 385 Listeneinträge 386 Die list-style-image-Eigenschaft 388
Boxeneigenschaften 389
Randeigenschaften 390 Rahmeneigenschaften 392 Die outline-style-Eigenschaft , 395 Fülleigenschaften 397
Größen 397
Die Eigenschaften width und height 398 Die Eigenschaften min-width und min-height 400 Die Eigenschaften max-width und max-height 401 Die Eigenschaft overflow 401 Clipping 401
Positionierung 403
Die Eigenschaft position 403 Elemente mit der z-index-Eigenschaft übereinander anordnen 406 Die Eigenschaft float ' 406 Die Eigenschaft clear 407
Seiten formatieren 408
@page • 408 Die Eigenschaft size 409 Die Eigenschaft margin 409 Die Eigenschaft mark 410
11
Die Eigenschaft page 410 Seitenumbrüche steuern 410 Witwen und Waisen 411
Zusammenfassung 412 Kapitel 16: CSS-Textstile 413 Schrifteigenschaften 414
Auswahl der Schriftfamilie 414 Auswahl des Schriftstils 415 Kleine Kapitälchen 416 Die Schriftbreite bestimmen 417 Die Schriftgröße bestimmen 418 Die font-Eigenschaft als Kurzform 423 D i e color-Eigenschaft 4 2 4 T e x t e i g e n s c h a f t e n 425 Textabstand 425 Die letter-spacing-Eigenschaft 426 Die text-decoration-Eigenschaft 427 Die vertical-align-Eigenschaft 428 Die text-transform-Eigenschaft 429 Die text-align-Eigenschaft 429 Die text-indent-Eigenschaft 430 Die text-shadow-Eigenschaft 430 Die line-height-Eigenschaft 431 Die white-space-Eigenschaft 433
Hintergrundeigenschaften 435
Die background-color-Eigenschaft 435 Die background-image-Eigenschaft 435 Die background-repeat-Eigenschaft 437 Die background-attachment-Eigenschaft 439 Die background-position-Eigenschaft 440 Die background-Kurzeigenschaft 443
Sichtbarkeit 444 Cursor 445 Die content-Eigenschaft 446
Anführungszeichen 447 Attribute 448 URIs 448 Zähler 448
Akustische Stylesheets 452
Die speak-Eigenschaft 453 Die volume-Eigenschaft 453 Die Pauseneigenschaften 453 Die cue-Eigenschaften 454 Die play-during-Eigenschaft 454 Eigenschaften für das räumliche Hören 454 Merkmale der Stimme 455
12
Sprecheigenschaften 457 Zusammenfassung 458
Kapitel 17: XSL-Transformationen 459
Was ist XSL? 459 Überblick über XSL-Transformationen 461 Bäume 461 XSL-Stylesheet-Dokumente 464 Wo erfolgt die XML-Transformation? 465 Wie Sie Xalan verwenden 466 Die direkte Anzeige von XML-Dateien mit XSL-Stylesheets 468 XSL-Vorlagen 470 Das xsl:apply-templates-Element 471 Das select-Attribut 473 Den Wert eines Knotens mit xsl:value-of berechnen 473 Mehrere Elemente mit xsl:for-each verarbeiten 475 Muster für die Zuordnung von Knoten 476 Den Root-Knoten auswählen 476 Elementnamen auswählen 477 Platzhalter 479 Children mit / zuordnen und auswählen 480 Abkömmlinge mit // zuordnen und auswählen 481 Mit der ID zuordnen und auswählen 481 Attribute mit @ zuordnen und auswählen •• . ; • 482 Kommentare mit comment() zuordnen und auswählen 484 Verarbeitungsanweisungen mit processing-instruction() zuordnen und auswählen 485 Textknoten mit text() zuordnen und auswählen 485 Mit dem Oder-Operator | arbeiten 486 Testen mit [ ] 487 XPath-Ausdrücke zur Auswahl von Knoten 489 Knotenachsen 489 Ausdruckstypen 495 Standardvorlagenregeln 503 Die Standardregel für Elemente 504 Die Standardregel für Textknoten und Attribute 504 Die Standardregel für Verarbeitungsanweisungen und Kommentare 504 Implikationen der Standardregeln 505 Die einzubindende Ausgabe bestimmen 505 Attributwertvorlagen benutzen 505 Elemente mit xsl:element in die Ausgabe einfügen 507 Attribute mit xsl:attribute in die Ausgabe einfügen 508 Attributmengen definieren 509 Verarbeitungsanweisungen mit xsl:processing-instruction erstellen 510 Kommentare mit xslxomment generieren 510 Text mit xsl:text generieren 511 Den Kontextknoten mit xslxopy kopieren 512 Knoten mit xls:number nummerieren 513
13
Standardzahlen 514 Zahlen in Zeichenfolgen umwandeln 518 Ausgabeelemente sortieren ' 519 Modi 522 Konstanten mit xshvariable definieren 524 Benannte Vorlagen 525 Parameter an Vorlagen übergeben 526 Leerzeichen entfernen und beibehalten 527 Entscheidungen treffen 528 xsl:if 528 xslxhoose 529 Mehrere Stylesheets zusammenführen 530 Stylesheets mit xsHmport importieren 530 Stylesheets mit xsbinclude einbinden 530 Stylesheets mit xsl:stylesheet einbetten 531 Ausgabemethoden 532 xsl:output 533 XML-Deklarationen 533 Dokumenttyp-Deklarationen 534 Einrückungen 535 CDATA-Bereiche 535 Medientypen 536 Zusammenfassung 536
Kapitel 18: XSL-Formatierungsobjekte 539 Formatierungsobjekte und ihre Eigenschaften 539 Formatierungseigenschaften 542 Transformation in Formatierungsobjekte 546 FOP verwenden 547 Seiten-Layout 549 Das Root-Element 549 Einfache Seiten-Master 550 Seitensequenzen 552 Seitensequenz-Master 558 Inhalt 561 Block-Level-Formatierungsobjekte 562 Inline-Formatierungsobjekte 562 Tabellen-Formatierungsobjekte 563 Out-of-line-Formatierungsobjekte 563 Führungslinien und Regeln 563 Grafiken 566 fo:external-graphic 566 fo:instream-foreign-object 568 Grafikeigenschaften 570 Verknüpfungen 571 Listen 572 Tabellen 575 Iniines 580
14
Fußnoten 581 Floats 581 Formatierungseigenschaften 582 Die id-Eigenschaft 582 Die language-Eigenschaft • 583 Absatzeigenschaften 583 Zeicheneigenschaften . 585 Satzeigenschaften 587 Area-Eigenschaften 589 Akustische Eigenschaften 595 Zusammenfassung 596
Teil 4 Unterstützende Verfahren 599
Kapitel 19: XLinks 601
XLinks im Vergleich zu Links bei H T M L 601 Verlinkende Elemente 602 XLink-Attribute in Document Type Definitions deklarieren 604 Beschreibungen der externen Ressource 605 Das Attribut xlink:show 606 Das Attribut xlink:actuate 608 Erweiterte Links 609 Die Syntax bei erweiterten Links 610 Bögen 613 Out-of-line-Links 618 Zusammenfassung 623
Kapitel 20: XPointer 625
Warum sollte man XPointer verwenden? 626 Beispiele für XPointer 627 ' Ein konkretes Beispiel 628 Standortpfade, Schritte und Sets 631 Der Wurzelknoten 632 Achsen 633 Die child-Achse 634 Die descendant-Achse 634 Die descendant-or-self-Achse 634 Die parent-Achse 635 Die self-Achse 635 Die ancestor-Achse 635 Die ancestor-or-self-Achse 635 Die preceding-Achse 635 Die following-Achse 636 Die preceding-sibling-Achse 636 Die following-sibling-Achse 636
15
Die attribute-Achse 636 Die namespace-Achse 637 Knotentests 637 Prädikate 639 Funktionen, die Knotensets zurückgeben 641 id() 641 hereO 642 origin() 643 Punkte 643 Bereiche 644 Bereichsfunktionen 645 String-Bereiche 645 Child-Sequenzen 647 Zusammenfassung ' 647
Kapitel 2 1 : RDF 649 WasistRDF? . . 649 RDF-Aussagen 650 Grundlegende RDF-Syntax 651
Das Root-Element , 652 Das Description-Element 652 Namensräume 652 Mehrere Eigenschaften und Aussagen 654 Ressourcenwert-Eigenschaften 655 XML-Werteigenschaften ' • 658
Abgekürzte RDF-Syntax 658 Container 659
Der Bag-Container .- 659 Der Seq-Container ,. 662 Der Alt-Container 662 Aussagen über Container • 663 Aussagen über Container-Mitglieder 666 Aussagen über implizite Bag-Elemente . 668
RDF-Schemata , 669 Zusammenfassung 670
Teil 5 XML-Anwendungen 671
Kapitel 22: XHTML 673 Warum sollte man HTML validieren? 673 Der Übergang zu XHTML 675
Das Dokument wird in wohlgeformtes XML verwandelt . 678 Das Dokument wird gültig gemacht 684 Die Strict-DTD . 692 Die Frameset-DTD 706 HTML-Tidy 706
16
Was ist neu an XHTML?
Zeichenreferenzen
Anwenderdefinierte Entity-Referenzen werden in einer DTD festgelegt Encoding-Deklarationen
Das xmlrlang-Attribut CDATA-Abschnitte Zusammenfassung
Kapitel 23: Schemata
Was ist verkehrt an DTDs?
Was ist ein Schema?
Die XML-Schemasprache des W3C Hello-Schemata
Das greeting-Schema
Das Dokument mit dem Schema validieren Komplexe Typen
minOccurs und maxOccurs Der Elementinhalt
Inhaltsmodelle gemeinsam verwenden Anonyme Typen
Gemischter Inhalt Gruppierungen
Die xsd:all-Gruppe Auswahlen Sequenzen Einfache Typen
Numerische Datentypen Zeitdatentypen
XML-Datentypen String-Datentypen Verschiedene Datentypen Derived-Typen
Reguläre Ausdrücke
Das xsd:simpleType-Element Leere Elemente
Attribute Namensräume
Schemata für Standard-Namensräume Mehrere Namensräume, mehrere Schemata Anmerkungen
Zusammenfassung
Kapitel 24: Eine neue XML-Applikation entwerfen
Organisation der Daten Die Elemente auflisten
Die fundamentalen Elemente ermitteln
Beziehungen zwischen den Elementen herstellen Die Personen-DTD
710
710 714 717 717 718721
723
723 725 727 727
728 729731
733 735 737738
740741
742 743 745745
747 748 749 750 751751
751 755 757 757761
761 765767 768
771
771
773 774 776778
17
Die Familien-DTD 783 Die Quell-DTD 785 Die Familienstammbaum-DTD 786 Ein Stylesheet für Familienstammbäume 795 Zusammenfassung 803 Stichwortverzeichnis 805
18