|
Inhaltsverzeichnis |
6 |
|
|
Vorwort |
14 |
|
|
1. Grundkonzept |
25 |
|
|
1. 1. XSLT und seine Alternativen |
25 |
|
|
1. 1. 1. Kriterien zur Bewertung |
26 |
|
|
1. 1. 2. CSS |
28 |
|
|
1. 1. 3. SAX |
30 |
|
|
1. 1. 4. DOM |
31 |
|
|
1. 1. 5. Vorteile von XSLT |
33 |
|
|
1. 2. Grundstruktur einer XML-Anwendung |
37 |
|
|
1. 2. 1. Modellierung |
37 |
|
|
1. 2. 2. Validierung |
39 |
|
|
1. 2. 3. Transformation |
40 |
|
|
1. 3. Beispiel |
43 |
|
|
1. 3. 1. Verwendete Beispieldateien |
43 |
|
|
1. 3. 2. Einfache Anwendung |
44 |
|
|
2. Vorlagentechnik |
52 |
|
|
2. 1. Arbeiten mit Vorlagen |
52 |
|
|
2. 1. 1. Erzeugen von HTML |
53 |
|
|
2. 1. 2. Element: Stylesheet und sein Inhalt |
56 |
|
|
2. 1. 3. Wertübernahme aus XML |
59 |
|
|
2. 2. Vorlagen-Typen |
63 |
|
|
2. 2. 1. Vorlagen-Regeln oder unbenannte Vorlagen |
64 |
|
|
2. 2. 2. Benannte Vorlagen |
78 |
|
|
2. 2. 3. Vorlagen-Modi |
92 |
|
|
2. 3. Attributwerte |
99 |
|
|
2. 3. 1. Attributwertvorlagen |
99 |
|
|
2. 3. 2. Attributwerte zusammensetzen |
101 |
|
|
3. Adressierung mit XPath |
105 |
|
|
3. 1. Grundlagen |
105 |
|
|
3. 1. 1. Allgemeine Konzepte |
106 |
|
|
3. 1. 2. Knotentypen |
110 |
|
|
3. 2. Lokalisierung |
118 |
|
|
3. 2. 1. Achsen |
119 |
|
|
3. 2. 2. Beispiele zur Achsen-Verwendung |
127 |
|
|
3. 2. 3. Abgekürzte Syntax |
130 |
|
|
3. 3. Knotentests |
130 |
|
|
3. 3. 1. Lokalisierungsschritte |
131 |
|
|
3. 3. 2. Arten-Test |
132 |
|
|
3. 3. 3. Prädikate |
133 |
|
|
3. 4. Funktionen in XPath |
135 |
|
|
3. 4. 1. Knotenmengenfunktionen |
136 |
|
|
3. 4. 2. String-Funktionen |
137 |
|
|
3. 4. 3. Logische Funktionen |
137 |
|
|
3. 4. 4. Numerische Funktionen |
138 |
|
|
3. 4. 5. Beispiele |
138 |
|
|
3. 5. Neuerungen in XPath 2.0 |
139 |
|
|
3. 5. 1. Kontrollstrukturen und Funktionen |
140 |
|
|
3. 5. 2. Sequenzen |
141 |
|
|
4. Kontrollstrukturen |
144 |
|
|
4. 1. Fallunterscheidungen |
144 |
|
|
4. 1. 1. Einfacher Einsatz von XPath |
144 |
|
|
4. 1. 2. Auswahl mit if |
151 |
|
|
4. 1. 3. Auswahl mit choose |
157 |
|
|
4. 1. 4. Fallunterscheidungen in XPath 2.0 |
162 |
|
|
4. 2. Wiederholungen |
166 |
|
|
4. 2. 1. Ping-Pong-Spiel |
166 |
|
|
4. 2. 2. Einsatz von for-each |
166 |
|
|
4. 2. 3. Schleifen in XPath 2.0 |
173 |
|
|
5. Sortierungen und Gruppierungen |
176 |
|
|
5. 1. Sortierungen |
176 |
|
|
5. 1. 1. Allgemeine Sortiermöglichkeiten |
176 |
|
|
5. 1. 2. Einfache Sortierung |
178 |
|
|
5. 1. 3. Mehrfache Sortierung |
181 |
|
|
5. 2. Nummerierung |
183 |
|
|
5. 2. 1. Allgemeine Möglichkeiten der Nummerierung |
183 |
|
|
5. 2. 2. Einfache Nummerierung |
185 |
|
|
5. 2. 3. Erweiterte Nummerierung |
189 |
|
|
5. 3. Gruppierungen |
192 |
|
|
5. 3. 1. Gruppierungen für XSLT 1.0 |
193 |
|
|
5. 3. 2. Gruppierungen für XSLT 2.0 |
202 |
|
|
6. Parameter und Variablen |
213 |
|
|
6. 1. Parameter |
213 |
|
|
6. 1. 1. Lokale Parameter |
216 |
|
|
6. 1. 2. Globale Parameter |
222 |
|
|
6. 2. Variablen |
226 |
|
|
6. 2. 1. Lokale Variablen |
227 |
|
|
6. 2. 2. Globale Variablen |
232 |
|
|
6. 2. 3. Temporäre Bäume |
236 |
|
|
7. Vorgaben für Ein-und Ausgabeformate |
242 |
|
|
7. 1. HTML |
242 |
|
|
7. 1. 1. CSS erzeugen |
242 |
|
|
7. 1. 2. Kommentar erzeugen |
245 |
|
|
7. 2. XML |
245 |
|
|
7. 2. 1. Strukturen erzeugen |
245 |
|
|
7. 2. 2. Besondere Knoten und Anweisungen |
250 |
|
|
7. 2. 3. Strukturen kopieren |
253 |
|
|
7. 3. Zeichenformatierungen |
258 |
|
|
7. 3. 1. Allgemeine Ausgabeoptionen |
259 |
|
|
7. 3. 2. Dezimalformat |
264 |
|
|
7. 3. 3. Zeitformatierung |
266 |
|
|
7. 4. Verarbeitung von mehreren Dokumenten |
270 |
|
|
7. 4. 1. Mehrere Dokumente laden |
270 |
|
|
7. 4. 2. Mehrere Dokumente mit XSLT 2.0 erzeugen |
274 |
|
|
8. XML und Text |
282 |
|
|
8. 1. XML |
282 |
|
|
8. 1. 1. Attributorientierte Dokumente |
282 |
|
|
8. 1. 2. XML Schema |
288 |
|
|
8. 2. Text |
305 |
|
|
8. 2. 1. SQL |
306 |
|
|
8. 2. 2. CSV-Werte |
314 |
|
|
8. 2. 3. Textausgabe |
318 |
|
|
9. Dateibasierte Auslagerung |
328 |
|
|
9. 1. XSLT-Dateien einbinden |
328 |
|
|
9. 1. 1. Einfaches Beispiel |
329 |
|
|
9. 1. 2. Prioritätsregeln |
330 |
|
|
9. 2. XSLT-Dateien importieren |
333 |
|
|
9. 2. 1. Standardfall |
333 |
|
|
9. 2. 2. Priorisierung im Importbaum |
335 |
|
|
9. 2. 3. Überschreibung umgehen |
336 |
|
|
9. 2. 4. Eingebaute Vorlagen |
341 |
|
|
9. 3. XML Schema in XSLT 2.0 |
343 |
|
|
10. Fehlersuche |
347 |
|
|
10. 1. Nachrichten |
347 |
|
|
10. 1. 1. Grundprinzip |
347 |
|
|
10. 1. 2. Sinnvolle Benutzung |
349 |
|
|
10. 2. Testfunktionen |
350 |
|
|
10. 2. 1. Verfügbare Syntax testen |
350 |
|
|
10. 2. 2. Standardverhalten |
352 |
|
|
11. Vorlagen und Strukturen |
357 |
|
|
11. 1. Vorlagentypen |
357 |
|
|
11. 1. 1. Grundlagen |
358 |
|
|
11. 1. 2. Konkrete Vorlagen |
359 |
|
|
11. 1. 3. Allgemeine Vorlagen |
363 |
|
|
11. 1. 4. Bedeutung von XPath |
371 |
|
|
11. 1. 5. Benennung |
378 |
|
|
11. 1. 6. Eltern-Kind-Strukturen |
390 |
|
|
11. 1. 7. Attribute vs. Elemente |
399 |
|
|
12. Eigene XSLT-Funktionen |
407 |
|
|
12. 1. Benannte Vorlagen in XSLT 1.0 |
407 |
|
|
12. 1. 1. Grundlagen |
407 |
|
|
12. 1. 2. Verwendung |
411 |
|
|
12. 2. Komplexer Aufbau von Vorlagen |
420 |
|
|
12. 2. 1. Variantenauswahl über Vorlagennamen |
421 |
|
|
12. 2. 2. Variantenauswahl über Parameter |
425 |
|
|
12. 2. 3. Überladen von Vorlagen |
428 |
|
|
12. 2. 4. Generische Programmierung |
435 |
|
|
12. 3. Stylesheet-Funktionen in XSLT 2.0 |
439 |
|
|
12. 3. 1. Grundlagen |
439 |
|
|
12. 3. 2. Ersatz von benannten Vorlagen |
441 |
|
|
12. 3. 3. Verkürzungen in XPath/XSLT 2.0 |
445 |
|
|
13. XML Schema |
448 |
|
|
13. 1. Verwendung |
448 |
|
|
13. 1. 1. Grundlagen |
448 |
|
|
13. 1. 2. Beispiel |
450 |
|
|
13. 2. Mögliche XML Schema-Strukturen |
452 |
|
|
13. 2. 1. Vordefinierte Datentypen |
453 |
|
|
13. 2. 2. Benutzerdefinierte Datentypen |
455 |
|
|
13. 2. 3. Komplexe Datentypen |
463 |
|
|
13. 2. 4. Globale Elemente und Attribute |
465 |
|
|
13. 3. Verwendung eingebundener Strukturen |
468 |
|
|
13. 3. 1. Datentyp-Ausdrücke |
468 |
|
|
13. 3. 2. Attribut-Tests |
472 |
|
|
14. XPath-und XQuery-Funktionen |
475 |
|
|
14. 1. Arbeiten mit Zahlen |
475 |
|
|
14. 1. 1. Berechnungen |
475 |
|
|
14. 1. 2. Aggregate |
478 |
|
|
14. 2. Arbeiten mit Zeichenketten |
480 |
|
|
14. 2. 1. Zeichenkettenwerte |
481 |
|
|
14. 2. 2. Unterzeichenketten |
484 |
|
|
14. 3. Arbeiten mit Knoten |
488 |
|
|
14. 3. 1. Knotenfunktionen |
488 |
|
|
14. 3. 2. Sequenzfunktionen |
490 |
|
|
14. 3. 3. Kardinalität von Sequenzen |
495 |
|
|
14. 4. Arbeiten mit der Zeit |
498 |
|
|
14. 4. 1. Zeitbestandteile auslesen |
498 |
|
|
14. 4. 2. Angleichung von Zeitzonen |
503 |
|
|
14. 4. 3. Berechnung von Zeitdauern |
504 |
|
|
14. 4. 4. Kontextfunktionen |
508 |
|
|
14. 4. 5. Formatierung von Zeit |
511 |
|
|
15. Einsatz von XSLT 2.0-Funktionen |
516 |
|
|
15. 1. Entitäten |
516 |
|
|
15. 1. 1. Einsatz in XML |
517 |
|
|
15. 1. 2. Einsatz in XSLT |
519 |
|
|
15. 1. 3. Funktionen für Entitäten |
522 |
|
|
15. 2. Arbeiten mit Dateien |
524 |
|
|
15. 2. 1. Statischer Dateiname |
525 |
|
|
15. 2. 2. Dynamischer Dateiname |
528 |
|
|
15. 2. 3. Array-Strukturen als Parameter übergeben |
530 |
|
|
15. 2. 4. Textdateien einlesen |
532 |
|
|
15. 3. Schlüssel und Verweise |
536 |
|
|
15. 3. 1. Einsatz von XSLT-Funktionen |
536 |
|
|
15. 3. 2. Einsatz von IDs |
541 |
|
|
16. SQL-ähnliche Abfragen von XML |
546 |
|
|
16. 1. Bedingungen |
546 |
|
|
16. 1. 1. Grundlagen |
546 |
|
|
16. 1. 2. Beispiel |
547 |
|
|
16. 1. 3. Mehrstufige Gleichheit |
549 |
|
|
16. 2. Verknüpfungen |
553 |
|
|
16. 2. 1. Innere Verknüpfung |
553 |
|
|
16. 2. 2. Äußere Verknüpfung |
558 |
|
|
16. 2. 3. Selbstverknüpfung |
562 |
|
|
16. 3. Mengen |
564 |
|
|
16. 3. 1. Mengen verarbeiten |
565 |
|
|
16. 3. 2. Mengentests |
569 |
|
|
17. Dynamisches XSLT |
574 |
|
|
17. 1. Grundlagen |
574 |
|
|
17. 1. 1. Besonderheiten von XSLT |
574 |
|
|
17. 1. 2. Besonderheiten von XML-Technologien |
576 |
|
|
17. 2. XSLT erzeugen |
584 |
|
|
17. 2. 1. Neu-Erzeugung aus XML Schema |
584 |
|
|
17. 2. 2. Allgemeiner Programmaufbau |
592 |
|
|
17. 3. XSLT zusammensetzen |
595 |
|
|
17. 3. 1. Grundlagen |
595 |
|
|
17. 3. 2. Dateien verbinden |
598 |
|
|
17. 3. 3. Datenbank-Einsatz |
606 |
|
|
18. Reguläre Ausdrücke |
619 |
|
|
18. 1. Einfache Ausdrücke |
619 |
|
|
18. 1. 1. Meta-Zeichen |
619 |
|
|
18. 1. 2. Flucht-Zeichen |
621 |
|
|
18. 1. 3. Unicode-Zeichenklassen (Kategorien) |
622 |
|
|
18. 2. XPath-Unterstützung |
625 |
|
|
18. 3. XSLT-Unterstützung |
628 |
|
|
18. 3. 1. Grundlagen |
628 |
|
|
18. 3. 2. Beispiel |
630 |
|
|
19. XQuery |
634 |
|
|
19. 1. Grundsyntax und einfache Umwandlungen |
634 |
|
|
19. 1. 1. Einführung |
634 |
|
|
19. 1. 2. FLWOR |
636 |
|
|
19. 1. 3. XML-Erzeugung |
641 |
|
|
19. 1. 4. Fallunterscheidungen |
645 |
|
|
19. 1. 5. Eigene Funktionen |
646 |
|
|
19. 2. Anwendungsfälle von XQuery |
648 |
|
|
19. 2. 1. Hierarchien und flexible Dokumente |
648 |
|
|
19. 2. 2. Sequenzen und Reihenfolgen |
652 |
|
|
19. 2. 3. Relationale Daten |
654 |
|
|
19. 2. 4. Berechnungen |
660 |
|
|
20. XSLT in Programmiersprachen |
664 |
|
|
20. 1. PHP 5 |
665 |
|
|
20. 1. 1. Übersicht über die Bibliothek |
665 |
|
|
20. 1. 2. Beispiel |
667 |
|
|
20. 2. Oracle und PL/SQL |
670 |
|
|
20. 2. 1. Übersicht über die Bibliothek |
670 |
|
|
20. 2. 2. Beispiel |
673 |
|
|
20. 3. C#.NET |
676 |
|
|
20. 3. 1. Übersicht über die Bibliothek |
676 |
|
|
20. 3. 2. Beispiel |
679 |
|
|
20. 4. MS SQL Server und T-SQL |
681 |
|
|
20. 4. 1. XSLT-Einsatz |
682 |
|
|
20. 4. 2. XQuery |
685 |
|
|
20. 5. Java und JAXP |
688 |
|
|
20. 5. 1. Übersicht über die Bibliothek |
688 |
|
|
20. 5. 2. Beispiel |
690 |
|
|
Index |
694 |
|