Aufgrund einer technischen Störung sind wir derzeit telefonisch nicht erreichbar. Wir arbeiten bereits an der Behebung. Vielen Dank für Ihr Verständnis.
E-Book, Deutsch, 583 Seiten
Reihe: Rheinwerk Computing
Vonhoegen XML
10. Auflage 2023
ISBN: 978-3-8362-9590-1
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Einstieg, Praxis, Referenz
E-Book, Deutsch, 583 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-9590-1
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
»Eine XML-Referenz, die so gut wie nichts vermissen lässt.« – c’t
Ob Sie XML in der Software- und Webentwicklung einsetzen, im E-Publishing oder im Office-Bereich: Dieses Buch liefert Ihnen fundiertes Wissen, um erfolgreich XML-Lösungen für Ihre Einsatzzwecke zu programmieren. Zahlreiche Praxisbeispiele helfen Ihnen, das Gelernte richtig anzuwenden. Auch als Nachschlagewerk geeignet. Kompetent und stets praxisorientiert werden alle wichtigen Themen rund um XML behandelt: Validierung mit DTD und XML Schema, Navigation mit XPath und Transformation mit XSLT, Formatierung mit CSS und XSL, Zugriff auf XML-Dokumente über die Programmier-Schnittstellen DOM und SAX, Mapping, die Office-Dokumentformate ODF und OOXML, HTML5 und elektronisches Publizieren mit EPUB.
Das Buch im E-Book-Only-Format eignet sich sowohl für Einsteiger als auch für Entwickler, die eine zuverlässige Referenz suchen.
Aus dem Inhalt:
- Grundlagen der XML-Programmierung
- Dokumenttypen und Validierung
- Inhaltsmodelle mit XML Schema
- Navigation mit XPath
- Formatierung mit CSS & XSL
- Transformationen mit XSLT
- Abfragen mit XQuery
- Parsen mit DOM & SAX
- XML und .NET Framework: Visual Basic, LINQ to XML
- XML in Office-Anwendungen
- Mapping von oder nach XML
- Publizieren mit EPUB
- HTML5 und XHTML
Autoren/Hrsg.
Weitere Infos & Material
Materialien zum Buch ... 20
Vorwort ... 21
1. Einführung ... 23
1.1 ... Kleines Einstiegsprojekt zum Kennenlernen ... 23
1.2 ... XML -- universale Metasprache und Datenaustauschformat ... 29
1.3 ... Übersicht über die Sprachfamilie XML ... 33
1.4 ... XML-Editoren und Entwicklungsumgebungen ... 36
1.5 ... Anwendungsbereiche ... 41
2. XML -- Bausteine und Regeln ... 47
2.1 ... Aufbau eines XML-Dokuments ... 47
2.2 ... Die Regeln der Wohlgeformtheit ... 59
2.3 ... Elemente oder Attribute? ... 60
2.4 ... Reservierte Attribute ... 61
2.5 ... Entitäten und Verweise darauf ... 62
2.6 ... CDATA-Sections ... 63
2.7 ... Kommentare ... 64
2.8 ... Verarbeitungsanweisungen ... 65
2.9 ... Namensräume ... 65
2.10 ... XML-Version 1.1 ... 69
3. Dokumenttypen und Validierung ... 71
3.1 ... Metasprache und Markup-Vokabulare ... 71
3.2 ... Regeln der Gültigkeit ... 74
3.3 ... DTD oder Schema? ... 75
3.4 ... Definition eines Dokumentmodells ... 75
3.5 ... Deklarationen für gültige Komponenten ... 78
3.6 ... Dokumentinstanz ... 86
3.7 ... Attributlisten-Deklaration ... 87
3.8 ... Verweis auf andere Elemente ... 91
3.9 ... Verwendung von Entitäten ... 91
3.10 ... Formen der DTD-Deklaration ... 96
3.11 ... Zwei DTDs in der Praxis ... 99
4. Inhaltsmodelle mit XML Schema ... 107
4.1 ... XML Schema -- der XML-basierte Standard ... 107
4.2 ... Erster Entwurf eines Schemas ... 109
4.3 ... Genereller Aufbau eines XML-Schemas ... 116
4.4 ... Datentypen ... 117
4.5 ... Definition der Struktur des Dokuments ... 133
4.6 ... Häufigkeitsbestimmungen ... 142
4.7 ... Default-Werte für Elemente und Attribute ... 143
4.8 ... Kompositoren ... 143
4.9 ... Arbeit mit benannten Modellgruppen ... 146
4.10 ... Definition von Attributgruppen ... 147
4.11 ... Schlüsselelemente und Bezüge darauf ... 148
4.12 ... Kommentare ... 152
4.13 ... Ableitung komplexer Datentypen ... 153
4.14 ... Designvarianten ... 160
4.15 ... Übernahme von Schema-Definitionen ... 163
4.16 ... XML Schema 1.0 -- Kurzreferenz ... 171
4.17 ... Neuerungen in XML Schema 1.1 ... 180
5. Navigation und Verknüpfung ... 187
5.1 ... Datenauswahl mit XPath ... 187
5.2 ... XPath 2.0 ... 205
5.3 ... XPath 3.0 und XPath 3.1 ... 220
5.4 ... Verknüpfungen mit XLink ... 227
5.5 ... XBase ... 231
5.6 ... Über XPath hinaus: XPointer ... 232
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.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.2 ... Ablauf der Transformation ... 268
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.7 ... Datenübernahme aus der Quelldatei ... 281
7.8 ... Nummerierungen ... 283
7.9 ... Verzweigungen und Wiederholungen ... 286
7.10 ... Sortieren und Gruppieren von Quelldaten ... 291
7.11 ... Parameter und Variablen ... 294
7.12 ... Hinzufügen von Elementen und Attributen ... 303
7.13 ... Zusätzliche XSLT-Funktionen ... 307
7.14 ... Mehrfache Verwendung von Stylesheets ... 311
7.15 ... Übersetzungen zwischen XML-Vokabularen ... 312
7.16 ... Umwandlung von XML in HTML und XHTML ... 315
7.17 ... Kurzreferenz zu XSLT 1.0 ... 324
7.18 ... XSLT 2.0 ... 333
7.19 ... XSLT 3.0 ... 344
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.5 ... Testumgebung für XSL ... 365
8.6 ... Aufbau eines XSL-Stylesheets ... 367
8.7 ... Verknüpfung mit dem Dokument und Ausgabe ... 372
8.8 ... Inline-Formatierungsobjekte ... 373
8.9 ... Ausgabe von Tabellen ... 374
8.10 ... Listen ... 377
8.11 ... Gesucht: visuelle Editoren ... 378
8.12 ... Übersicht über die Formatierungsobjekte von XSL ... 379
9. Abfragen mit XQuery ... 387
9.1 ... Datenmodell und Verfahren ... 388
9.2 ... Abfragepraxis ... 393
9.3 ... FLWOR-Ausdrücke ... 395
9.4 ... Fortgeschrittene Optionen ... 401
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.3 ... DOM-Implementierungen ... 425
10.4 ... Arbeit mit XML-Klassen in Visual Basic ... 455
10.5 ... Zugriff auf XML-Daten mit »LINQ to XML« ... 479
11. XML in Office-Anwendungen ... 487
11.1 ... XML in Microsoft Office ... 488
11.2 ... Die Alternative OpenDocument ... 494
11.3 ... Einsatz benutzerdefinierter Schemas ... 498
12. Mapping -- von XML oder nach XML ... 515
12.1 ... Codegenerierung für Transformationen ... 515
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.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.9 ... Freiwillige gesucht ... 557
Anhang ... 559
A ... Glossar ... 559
B ... Webressourcen ... 567
Index ... 575
1 Einführung
Vor Babel: »Alle Welt hatte nur eine Sprache und dieselben Laute.« (Genesis 11,1)
Damit Sie gleich wissen, wovon in diesem Buch die Rede ist, spielen wir zunächst ein kleines Beispiel durch. Die Daten einiger Buchprojekte werden in einer Liste zusammengestellt, um sie auf einer Seite im Web zu veröffentlichen.
1.1 Kleines Einstiegsprojekt zum Kennenlernen
Der übliche Weg zu einer solchen Liste wäre vielleicht eine Datentabelle, die in einer Datenbankanwendung oder einem Kalkulationsprogramm realisiert wird. Sie würden sich einige Gedanken darüber machen, welche Feldnamen in der Kopfzeile dieser Tabelle auftauchen müssten, und später die einzelnen Datensätze unter dieser Kopfzeile eintragen.
1.1.1 Ein erstes XML-Dokument
Um das Problem mit den Mitteln von XML anzugehen, ist ein XML-Dokument erforderlich. Eine erste Lösung könnte in einer einfachen Variante so aussehen:
name="Samsung Galaxy Tab">
Helmut Vonhoegen
Vierfarben
name="XML">
Helmut Vonhoegen
Rheinwerk
Listing 1.1 projektdaten.xml
Es wird sofort sichtbar, was bei XML-Dokumenten anders ist: Während Sie bei jedem Tabellenfeld nur über die Feldbezeichnung in der Kopfzeile erfahren, welche Information in dem einzelnen Feld enthalten ist, bringt in dem XML-Dokument jede Informationseinheit das Etikett mit der Beschreibung der Information gleich mit.
1.1.2 Standardausgabe im Webbrowser
Wenn Sie einen aktuellen Webbrowser verwenden, bei dem ein spezieller Prozessor, ein Parser für XML-Dokumente, integriert ist, lassen sich die XML-Daten darin ansehen. Gut geeignet dafür sind beispielsweise Firefox oder der Internet Explorer. Letzterer gibt das kleine XML-Dokument aus, das direkt vom lokalen Laufwerk geöffnet werden kann, wie in Abbildung 1.1 zu sehen ist.
Abbildung 1.1 Wiedergabe einer XML-Datei im Edge-Browser
Der Edge-Browser verwendet zur Darstellung der Daten ein eingebautes Stylesheet. Die Darstellung entspricht ziemlich genau dem Quelltext, bis auf die vom Browser gewählte Hervorhebung der darin enthaltenen Textdaten und der teilweise vorgesetzten kleinen Dreiecke.
Diese Dreiecke sind Gliederungssymbole, mit deren Hilfe Sie Gruppen von Daten aus- oder einblenden können. Abbildung 1.2 zeigt zum Beispiel nur noch die Projektnamen.
Das erste auffällige Merkmal an einem XML-Dokument ist, dass zu jeder einzelnen Information, die darin enthalten ist, an Ort und Stelle immer auch eine Benennung dieser Information beigefügt ist. Wenn XML als Datenformat gesehen wird, handelt es sich also um ein selbstbeschreibendes Format.
Abbildung 1.2 Reduzierte Wiedergabe derselben XML-Datei
1.1.3 Wohlgeformtheit ist ein Muss
Aktuelle Webbrowser reagieren ziemlich streng, wenn auch nur eine dieser Beschreibungen in den spitzen Klammern, die Tags genannt werden, vergessen wird oder sich ein Schreibfehler dabei einschleicht.
Abbildung 1.3 Reaktion des ChromeEdge-Browsers auf ein fehlendes End-Tag
In diesem Fall erkennt der im Browser integrierte XML-Parser, dass das XML-Dokument einen Formfehler hat – also nicht wohlgeformt ist, wie es im XML-Jargon heißt –, und bricht die Verarbeitung mit einer entsprechenden Fehlermeldung ab. Während der Webbrowser bei einer HTML-Seite allerlei Ungenauigkeiten durchgehen lässt und die Seite in der Regel trotzdem anzeigt, herrscht also bei XML ein strengeres Regime, in der guten Absicht, Webanwendungen wenigstens in der Zukunft in einen solideren Zustand zu befördern.
1.1.4 Gültige Dokumente per DTD oder Schema
Die bloße formale Prüfung auf Wohlgeformtheit kann noch durch eine Prüfung auf Gültigkeit ergänzt werden. Dabei geht es um die Frage, ob das Dokument auch alle geforderten Informationen enthält, und zwar in der richtigen Reihenfolge. Ein Projekt in unserem Beispiel kann zwar mehr als einen Autor haben, aber kein Projekt kommt ohne Autor aus. Um die Elemente und Attribute und ihre Reihenfolge für ein Dokument genau festzulegen, kann dem XML-Dokument ein entsprechendes Datenmodell zugeordnet werden, an dem seine Gültigkeit dann zu messen ist.
Mit dem Werkzeug, das wir im Verlauf dieses Buches noch häufiger verwenden werden – XMLSpy von Altova –, können Sie ein solches Datenmodell auch nachträglich aus einem schon vorliegenden XML-Dokument erzeugen. Dabei gibt es hauptsächlich zwei Möglichkeiten: Sie können eine DTD – eine Dokumenttyp-Definition – oder ein XML-Schema erzeugen. Die Rolle dieser beiden Datenmodelle wird ausführlich in Kapitel 3, »Dokumenttypen und Validierung«, behandelt. Eine DTD für unser Beispiel wird in Abbildung 1.4 dargestellt.
Abbildung 1.4 Eine DTD für die Projektdaten
Das gleiche Datenmodell in Form eines XML-Schemas zeigt Abbildung 1.5.
Abbildung 1.5 Das XML-Schema, das der DTD entspricht
XMLSpy gibt dieses Datenmodell grafisch in einer entsprechenden Baumstruktur aus (siehe Abbildung 1.6). Der Modelldesigner kann sein Modell auch gleich in dieser grafischen Form entwerfen. Das erleichtert es, den Überblick über die Hierarchie der Informationseinheiten zu behalten, die er konstruiert.
Die Gültigkeit eines Dokuments kann in XMLSpy immer sofort geprüft werden, weil ein validierender Parser integriert ist. Webbrowser ignorieren dagegen normalerweise die Frage der Gültigkeit, zeigen also auch ungültige Dokumente so lange an, wie sie wohlgeformt sind.
Abbildung 1.6 Das XML Schema als Diagramm in XMLSpy
1.1.5 Formatierte Datenausgabe
Die Ausgabe von XML-Daten im Webbrowser wie in Abbildung 1.1 ist natürlich nur ein Provisorium. Der wesentliche Unterschied zwischen einer XML- und einer HTML-Datei ist, dass das XML-Dokument eine reine Datensammlung ist, die zunächst noch keinerlei Hinweis darauf enthält, wie die Daten etwa in einem Browser zu präsentieren sind. Die Darstellung in Abbildung 1.1 kommt auch in dieser Form nur dadurch zustande, dass der Edge-Browser ein paar minimale Formatierungen vorgibt, etwa um die Tag-Namen farbig hervorzuheben. Andere Browser verhalten sich ähnlich.
Um die Daten in einer brauchbaren Form auszugeben, kann dem XML-Dokument ein Stylesheet beigegeben werden, entweder in Form von CSS-Stylesheets, wie sie auch für die Formatierung von HTML-Seiten verwendet werden, oder mit Stylesheets, die in der XML-Sprache XSLT oder XSL geschrieben sind.
Ein solches XSLT-Stylesheet könnte in diesem Fall beispielsweise so aussehen:
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
match="/">
select="buchprojekte"/>
match="buchprojekte">
Aktuelle Buchprojekte:
select="projekt"/>
...




