XSLT, XPath und XQuery von Marco Skulschus | ISBN 9783939701187

XSLT, XPath und XQuery

von Marco Skulschus, Jan Kozik und Marcus Wiederstein
Mitwirkende
Autor / AutorinMarco Skulschus
Autor / AutorinJan Kozik
Autor / AutorinMarcus Wiederstein
Buchcover XSLT, XPath und XQuery | Marco Skulschus | EAN 9783939701187 | ISBN 3-939701-18-1 | ISBN 978-3-939701-18-7

XSLT, XPath und XQuery

von Marco Skulschus, Jan Kozik und Marcus Wiederstein
Mitwirkende
Autor / AutorinMarco Skulschus
Autor / AutorinJan Kozik
Autor / AutorinMarcus Wiederstein
XSLT (eXtensible Stylesheet Language for Transformations) ist eine W3C-Syntax, die speziell für die Transformation von XML-Dokumenten geschaffen wurde. Mit XSLT können XML-Dokumente in Formate wie HTML, Text und andere XML-Formate transformiert werden. Diese Technologie lässt sich in (fast) allen Programmiersprachen und in vielen Datenbanken nutzen und stellt die beste Möglichkeit dar, aus mehreren Anwendungen heraus die gleiche XML-Transformation aufzurufen. XPath setzt man als in XSLT eingebettete Pfadbeschreibungssprache für Lokalisierung, Filterung und Bearbeitung von XML-Knoten ein. XQuery teilt sich mit XPath die Funktionsbibliothek und bietet als „SQL für XML“ die Möglichkeit, im Rahmen einer Abfrage komplexe Ausgabeströme in XML anzugeben und stellt so eine verkürzte Technik für XSLT und XPath dar. Dieses Buch führt Einsteiger durch die genannten Umwandlungstechniken. Die Autoren setzen dabei langjährig genutzte Beispieldaten einer fiktiven Firma ein, stellen die wesentlichen Spezifikationsabschnitte vor und bieten wichtige Syntaxabschnitte in lernförderlichen Schema-Zeichnungen.
Als die Nützlichkeit des Werkzeugs XML erkannt wurde, drohten der Einsatz und die Ver-wendung des Begriffes vielleicht sogar inflationär zu werden. Alle möglichen Produkte mussten eine so genannte 'XML-Fähigkeit' aufweisen, die meistens daraus bestand, dass XML-Dateien irgendwie farblich markiert angezeigt wurden oder Daten neben CSV auch in einem XML-Format dargestellt wurden. Neu zu entwickelnde Software benötigte eben-falls eine solche XML-Fähigkeit, die dann allerdings oft unter dem nicht weniger geheim-nisvollen Begriff einer 'XML-Schnittstelle' in diversen Papieren zur Projektplanung ihren Niederschlag fand. Ob dies notwendigerweise der Verbreitung von XML und der Erkennt-nis, welche Vorzüge und nutzbaren Eigenschaften der Einsatz von XML bietet, Vorschub leistete, war lange Zeit nicht klar.
Themen:
XSLT 1.0: Vorlagen/Templates, Kontrollanweisungen, Variablen und Parameter, Sortierungen und Gruppierungen, Ausgaben in HTML, Text/CSV und XML XSLT 2.0: Stylesheet-Funktionen, dynamisches XSLT, 2.0-Besonderheiten, Integration von XML Schema, strukturgetriebene Verarbeitung, reguläre Ausdrücke, SQL-ähnliche Abfragen XPath 1.0: Grundlagen, Knoten lokalisieren und filtern, Funktionsbibliothek XPath 2.0: Kontrollanweisungen, 2.0-Besonderheiten und –Funktionen XQuery 1.0: Abfragen und Umwandlung als Ersatz von XSLT/XPath Integration: Einsatz in. NET, Java, PHP und Datenbanken (Oracle PL/SQL, MS SQL Server T-SQL)
Das erste Kapitel stellt die Funktionsweise und den Einsatzbereich von XSLT dar. Es geht darauf ein, welche verschiedenen Alternativen zu XSLT existieren und zeigt, in welchen Fällen XSLT die bessere Wahl ist. Das zweite Kapitel führt in die verschiedenen Vorlagenarten von XSLT ein. Da XSLT eine vorlagengetriebene Sprache ist, in denen die einzelnen Umwandlungsregeln in xsl: template-Elementen angegeben werden, kann man hier vier verschiedene Arten unterscheiden, die der Reihe nach mit Beispiel vorgestellt werden. Dies umfasst die Vorlagen-Regeln, wobei passende Umwandlungsangaben anhand eines XPath-Ausdrucks ausgewählt werden, die benannten Vorlagen, welche direkt über ihren Namen aufgerufen werden können und mit denen man wiederkehrende Routinen erstellen kann, Attributwervorlagen für die Erzeugung von Attributwerten im Ausgabestrom und schließlich Vorlagenmodi, mit denen man für das gleiche XPath-Muster verschiedene Vorlagen-Regeln erstellen kann. Das dritte Kapitel führt dann umfassend in die XPath-Syntax ein. Mit Hilfe dieser so genannten Pfadbeschreibungssprache ist es überhaupt erst möglich, Knoten zu filtern und im Dokument zu lokalisieren. Man unterscheidet hierbei relative und absolute Ausdrücke, die in Fallunterscheidungen, bei der Formulierung von Vorlagen-Regeln sowie der Zuweisung von Werten für Parametern und Variablen zum Einsatz kommen. XPath besitzt eine Basis-Syntax, die entlang von Achsen im XML-Eingabestrom Knoten lokalisieren kann, und eine Funktionsbibliothek, die in diesem Kapitel für Version 1.0 vorgestellt wird. Das vierte Kapitel stellt die Möglichkeiten dar, in XSLT Kontrollanweisungen für Fallunterscheidungen und Schleifen zu verwenden. Das Kapitel beginnt mit einer Darstellung, wie XPath für die Knotenauswahl und Filterung verwendet werden kann. Danach zeigt es die beiden Elemente für Kontrollstrukturen xsl: if und xsl: choose sowie die Anweisung xsl: for-each für Wiederholungen. Das fünfte Kapitel stellt die Elemente für Sortierungen, Nummerierungen und Gruppierungen in den Vordergrund. Mit dem xsl: sort-Element kann man einstufig und mehrstufig in einer ermittelten Knotenmenge sortieren und die einzelnen Knoten in dieser Sortierung verarbeiten. Für die Nummerierung kommt das xsl: number-Element zum Einsatz, in dem nahezu beliebige Optionen für das Zahlenformat bereitstehen. Gruppierungen erklärt das Kapitel schließlich sowohl für die Version 1.0 mit Hilfe der hier gängigen Methoden und für die Version 2.0 mit dem xsl: for-each-group-Element, dessen Einstellungen die Möglichkeiten, die die 1.0-Techniken bieten, noch weit übersteigen. Das sechste Kapitel zeigt, wie man in XSLT Variablen und Parameter verwenden kann, um Werte im Rahmen einer Transformation zwischenzuspeichern oder Werte an Vorlagen zu übergeben. Mit dem Element xsl: variable lassen sich globale und temporäre Werte speichern. Das Element xsl: param hingegen erlaubt, bei der lokalen Verwendung Vorlagen zu parametrisieren, während ein globaler Einsatz einen so genannten Stylesheet-Parameter festlegt, mit dem man Werte aus der aufrufenden Umgebung an die Transformation übergeben kann. Das siebte Kapitel behandelt eine Reihe von speziellen Ausgabeanweisungen, mit denen für unterschiedliche Formatierungen und spezielle Einsatzbereiche Vorgaben für den Ausgabestrom getroffen werden können. Manchmal stellen diese Techniken Vereinfachungen von aus Basisfunktionalitäten zusammengesetzten Kombinationen dar. Man lernt hier, wie man mehrere XML-Dateien gleichzeitig verarbeiten und erzeugen kann, oder wie Formatierungsanweisungen global vorgegeben werden können. Das achte Kapitel verlässt den Bereich der HTML-Erzeugung und konzentriert sich dagegen auf die Besonderheiten, die bei der Generierung von XML und Text zu beachten sind. In Beispielen wird hier gezeigt, wie man aus XML Schema dynamisch HTML-Formulare erstellt, XML-Strukturen ändert oder aus XML Text-Dateien wie bspw. CSV erzeugt. Dabei setzt man eine Reihe von anderen Techniken wie Variablen und Parametern aus früheren Kapiteln wieder ein. Das neunte Kapitel erklärt die Elemente, mit denen Stylesheets in Module zerlegt und dann wieder zusammen gesetzt werden können. Hier sind in XSLT zwei Elemente mit feinen Unterschieden verfügbar. Für den so genannten Import verwendet man xsl: import, für die Einbindung xsl: include. Sie unterscheiden sich in ihrem Verhalten, wie sie lokale Vorlagen überschreiben. Das zehnte Kapitel zeigt in verschiedenen Beispielen, wie man effektiv Fehler suchen und Nachrichten während der Transformation ausgeben kann. Das elfte Kapitel diskutiert Möglichkeiten und Bedingungen, XML-Dateien anhand ihrer Struktur und nicht anhand der Namen von Elementen und Attributen zu verarbeiten. Dies schärft den Blick, besonders dynamische und wiederverwendbare Algorithmen in XSLT zu entwickeln. Das zwölfte Kapitel ergänzt die verschiedenen Vorlagentechniken aus XSLT 1.0 um eine Neuerung in XSLT 2.0, die es erlaub, Stylesheet-Funktionen zu erstellen. Sie können in XPath-Ausdrücken für die Durchführung von Berechnungen oder Ausgaben zum Einsatz kommen und verkürzen die Snytax im Vergleich zu benannten Vorlagen erheblich. Diese Kapitel stellt die 1.0-Vorgehensweise, die benannte Vorlagen einsetzte, mit der 2.0-Technik über xsl: function gegenüber. Das dreizehnte Kapitel bindet zusätzlich die XML Schema-Datei ein, welche die umzuwandelnde XML-Datei beschreibt. Durch diese neue 2.0-Technik ist es möglich, eigene in XML Schema erstellte Datenypen zu testen oder abzufragen und dabei eine Reihe von XPath 2.0-Operatoren zu verwenden. So kann man Umwandlungen einrichten, die struktur- und datentypgetrieben sind. Das vierzehnte Kapitel arbeitet die Funktionsbibliothek von XPath 2.0 mit thematisch sortierten Beispielen durch, um so die vielen neuen nützlichen Funktionen und Vereinfachungen gegebenüber der Vorgängerversion zu zeigen. Das fünfzehnte Kapitel arbeitet gleichermaßen eine Funktionsbibliothek durch, wobei dies in diesem Fall die in XSLT vorhandenen Funktionen sind, um Entitäten aus DTDs oder Textdateien zu verarbeiten oder Schlüssel zu erzeugen und abzufragen. Das sechzehnte Kapitel behandelt XML-Dateien, die Daten enthält, welche wie in eine relationalen Datenbank aufgebaut sind und daher über entsprechende Abfragetechniken in XSLT oder XPath wieder zusammengeführt werden müssen. In einer Reihe von Beispielen lernt man, wie man innere, äußere und selbstbezügliche Verknüpfungen sowie Mengenuntersuchungen auf solchermaßen aus einer DB abgerufenen Strukturen durchführt. Das siebzehnte Kapitel diskutiert fortgeschrittene Techniken und Möglichkeiten, wie man XSLT dynamisch aus XML Schema oder aufgrund von Annahmen erzeugen oder aus mehreren XSLT-Dateien zusammensetzen kann. Als weitere Möglichkeit geht es darauf ein, wie man eine Datenbank einsetzen kann, um XSLT, XML Schema und XML in Spalten zu speichern und dann bei Bedarf zusammenzusetzen. Das achtzehnte Kapitel zeigt eine neue 2.0-Möglichkeit, in XSLT und XPath reguläre Ausdrücke zu verwenden, um Daten auszuwerten und bedingte Umwandlungen einzurichten. Das neunzehnte Kapitel geht auf eine alternative Syntax ein, mit der XPath und XSLT vermieden und abfrageähliche Transformationen in XQuery, dem SQL für XML, umgesetzt werden können. Das Kapitel umfasst thematisch dabei die Darstellung der Syntax zur Abfrage, die Verwendung von Funktionen, die Formulierung von Variablen und ihre Auswertung sowie die verschiedenen Möglichkeiten, wie man das Ausgabeformat strukturieren kann. Das zwanzigste Kapitel schließlich erklärt, wie man die verschiedenen XSLT-, XPath- und XQuery-Techniken in den Programmiersprachen Java,. NET, PHP sowie in den Datenbanken Oracle mit PL/SQL und in Microsoft SQL Server mit T-SQL nutzen kann. Dies umfasst die Aufgaben, eine Transformation durchzuführen, Parameter an das Stylesheet zu übergeben oder externe Funktionen/Methoden der Sprache in XSLT aufzurufen sowie Abfragen durchzuführen.
1 XSLT-Grundkonzept 1.1 XSLT und seine Alternativen 1.1.1 Kriterien zur Bewertung 1.1.2 CSS 1.1.3 SAX 1.1.4 DOM 1.1.5 Vorteile von XSLT 1.2 Grundstruktur einer XML-Anwendung 1.2.1 Modellierung 1.2.2 Validierung 1.2.3 Transformation 1.3 Beispiel 1.3.1 Verwendete Beispieldateien 1.3.2 Einfache Anwendung
2 Vorlagen 2.1 Arbeiten mit Vorlagen 2.1.1 Erzeugen von HTML 2.1.2 Element: Stylesheet und sein Inhalt 2.1.3 Wertübernahme aus XML 2.2 Vorlagen-Typen 2.2.1 Vorlagen-Automatik 2.2.2 Benannte Vorlagen 2.2.3 Vorlagen-Modi 2.3 Attributwerte 2.3.1 Attributwertvorlagen 2.3.2 Attributwerte zusammensetzen
3 XPath 3.1 Grundlagen 3.1.1 Allgemeine Konzepte 3.1.2 Knotentypen 3.2 Lokalisierung 3.2.1 Achsen 3.2.2 Beispiele zur Achsen-Verwendung 3.2.3 Abgekürzte Syntax 3.3 Knotentests 3.3.1 Lokalisierungsschritte 3.3.2 Arten-Test 3.3.3 Prädikate 3.4 Funktionen in XPath 3.4.1 Knotenmengenfunktionen 3.4.2 String-Funktionen 3.4.3 Logische Funktionen 3.4.4 Numerische Funktionen 3.4.5 Beispiele 3.5 Neuerungen in XPath 2.0 3.5.1 Kontrollstrukturen und Funktionen 3.5.2 Sequenzen
4 Kontrollstrukturen 4.1 Fallunterscheidungen 4.1.1 Einfacher Einsatz von XPath 4.1.2 Auswahl mit if 4.1.3 Auswahl mit choose 4.1.4 Fallunterscheidungen in XPath 2.0 4.2 Wiederholungen 4.2.1 Ping-Pong-Spiel 4.2.2 Einsatz von for-each 4.2.3 Schleifen in XPath 2.0
5 Sortierung, Nummerierung, Gruppierung 5.1 Sortierungen 5.1.1 Allgemeine Sortiermöglichkeiten 5.1.2 Einfache Sortierung 5.1.3 Mehrfache Sortierung 5.2 Nummerierung 5.2.1 Allgemeine Möglichkeiten der Nummerierung 5.2.2 Einfache Nummerierung 5.2.3 Erweiterte Nummerierung 5.3 Gruppierungen 5.3.1 Gruppierungen für XSLT 1.0 5.3.2 Gruppierungen für XSLT 2.0
6 Parameter und Variablen 6.1 Parameter 6.1.1 Lokale Parameter 6.1.2 Globale Parameter 6.2 Variablen 6.2.1 Lokale Variablen 6.2.2 Globale Variablen 6.2.3 Temporäre Bäume
7 Vorgaben für Ein- und Ausgabeformate 7.1 HTML 7.1.1 CSS erzeugen 7.1.2 Kommentar erzeugen 7.2 XML 7.2.1 Strukturen erzeugen 7.2.2 Besondere Knoten und Anweisungen 7.2.3 Strukturen kopieren. 7.3 Zeichenformatierungen 7.3.1 Allgemeine Ausgabeoptionen 7.3.2 Dezimalformat 7.3.3 Zeitformatierung 7.4 Verarbeitung von mehreren Dokumenten 7.4.1 Mehrere Dokumente laden 7.4.2 Mehrere Dokumente mit XSLT 2.0 erzeugen
8 XML- und Text-Ausgabe 8.1 XML 8.1.1 Attributorientierte Dokumente 8.1.2 XML Schema 8.2 Text 8.2.1 SQL 8.2.2 CSV-Werte 8.2.3 Textausgabe
9 Dateibasierte Auslagerung 9.1 XSLT-Dateien einbinden 9.1.1 Einfaches Beispiel 9.1.2 Prioritätsregeln 9.2 XSLT-Dateien importieren 9.2.1 Standardfall 9.2.2 Priorisierung im Importbaum 9.2.3 Überschreibung umgehen 9.2.4 Eingebaute Vorlagen 9.3 XML Schema in XSLT 2.0
10 Fehlersuche 10.1 Nachrichten 10.1.1 Grundprinzip 10.1.2 Sinnvolle Benutzung 10.2 Testfunktionen 10.2.1 Verfügbare Syntax testen 10.2.2 Standardverhalten 11 Vorlagen und Strukturen 11.1 Vorlagentypen 11.1.1 Grundlagen 11.1.2 Konkrete Vorlagen 11.1.3 Allgemeine Vorlagen 11.1.4 Bedeutung von XPath 11.2 Voraussetzungen auf Strukturseite 11.2.2 Benennung 11.2.3 Eltern-Kind-Strukturen 11.2.4 Attribute vs. Elemente
12 Eigene XSLT-Funktionen 12.1 Benannte Vorlagen in XSLT 1.0 12.1.1 Grundlagen 12.1.2 Verwendung 12.2 Komplexer Aufbau von Vorlagen 12.2.1 Variantenauswahl über Vorlagennamen. 12.2.2 Variantenauswahl über Parameter 12.2.3 Überladen von Vorlagen 12.2.4 Generische Programmierung 12.3 Stylesheet-Funktionen in XSLT 2.0 12.3.1 Grundlagen 12.3.2 Ersatz von benannten Vorlagen 12.3.3 Verkürzungen in XPath/XSLT 2.0
13 XML Schema-Einsatz 13.1 Verwendung 13.1.1 Grundlagen 13.1.2 Beispiel 13.2 Mögliche XML Schema-Strukturen 13.2.1 Vordefinierte Datentypen 13.2.2 Benutzerdefinierte Datentypen 13.2.3 Komplexe Datentypen 13.2.4 Globale Elemente und Attribute 13.3 Verwendung eingebundener Strukturen 13.3.1 Datentyp-Ausdrücke 13.3.2 Attribut-Tests
14 XPath- und XQuery-Funktionen 14.1 Arbeiten mit Zahlen 14.1.1 Berechnungen 14.1.2 Aggregate 14.2 Arbeiten mit Zeichenketten 14.2.1 Zeichenkettenwerte 14.2.2 Unterzeichenketten 14.3 Arbeiten mit Knoten 14.3.1 Knotenfunktionen 14.3.2 Sequenzfunktionen 14.3.3 Kardinalität von Sequenzen 14.4 Arbeiten mit der Zeit 14.4.1 Zeitbestandteile auslesen 14.4.2 Angleichung von Zeitzonen 14.4.3 Berechnung von Zeitdauern 14.4.4 Kontextfunktionen 14.4.5 Formatierung von Zeit
15 XSLT 2.0-Funktionen 15.1 Entitäten 15.1.1 Einsatz in XML 15.1.2 Einsatz in XSLT 15.1.3 Funktionen für Entitäten 15.2 Arbeiten mit Dateien 15.2.1 Statischer Dateiname 15.2.2 Dynamischer Dateiname 15.2.3 Array-Strukturen als Parameter übergeben 15.2.4 Textdateien einlesen 15.3 Schlüssel und Verweise 15.3.1 Einsatz von XSLT-Funktionen 15.3.2 Einsatz von IDs
16 SQL-ähnliche Abfragen mit XSLT 16.1 Bedingungen 16.1.1 Grundlagen 16.1.2 Beispiel 16.1.3 Mehrstufige Gleichheit 16.2 Verknüpfungen 16.2.1 Innere Verknüpfung 16.2.2 Äußere Verknüpfung 16.2.3 Selbstverknüpfung 16.3 Mengen 16.3.1 Mengen verarbeiten 16.3.2 Mengentests
17 Dynamisches XSLT 17.1 Grundlagen 17.1.1 Besonderheiten von XSLT 17.1.2 Besonderheiten von XML-Technologien 17.2 XSLT erzeugen 17.2.1 Neu-Erzeugung aus XML Schema 17.2.2 Allgemeiner Programmaufbau 17.3 XSLT zusammensetzen 17.3.1 Grundlagen 17.3.2 Dateien verbinden 17.3.3 Datenbank-Einsatz
18 Reguläre Ausdrücke 18.1 Einfache Ausdrücke 18.1.1 Meta-Zeichen 18.1.2 Flucht-Zeichen 18.1.3 Unicode-Zeichenklassen (Kategorien) 18.2 XPath-Unterstützung 18.3 XSLT-Unterstützung 18.3.1 Grundlagen 18.3.2 Beispiel
19 XQuery 19.1 Grundsyntax und einfache Umwandlungen 19.1.1 Einführung 19.1.2 FLOWR 19.1.3 XML-Erzeugung 19.1.4 Fallunterscheidungen 19.1.5 Eigene Funktionen 19.2 Anwendungsfälle von XQuery 19.2.1 Hierarchien und flexible Dokumente 19.2.2 Sequenzen und Reihenfolgen 19.2.3 Relationale Daten 19.2.4 Berechnungen
20 XSLT in Programmiersprachen 20.1 PHP 5 20.1.1 Vorhandene Syntax 20.1.2 Beispiel 20.2 Oracle 10g/9i und PL/SQL 20.2.1 Vorhandene Syntax 20.2.2 Beispiel 20.3 C#. NET 20.3.1 Vorhandene Syntax 20.3.2 Beispiel 20.4 MS SQL Server 2005 und T-SQL 20.4.1 XSLT-Einsatz 20.4.2 XQuery
Ebenfalls erhältlich: XSL-FO, 978-3-939701-17-0