Einführung in die XML-Technologien XPath, XSLT und XQuery/XSLT

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

Autoren
* Gino Napierala ([mailto:s3ginapi@stud.hs-zigr.de s3ginapi@stud.hs-zigr.de])
* Martin Kubasch ([mailto:s3makuba@stud.hs-zigr.de s3makuba@stud.hs-zigr.de])




== Einleitung ==

XSLT(Extensible Stylesheet Language Transformation) gehört zur Familie der XSL-Sprachen . Es wurde Entwickelt zur Transformation von XML-Quelldokumenten in andere Dokumenttypen wie beispielsweiße XML, HTML oder einfache Textdokumente. 

[[Bild:S3makuba_Xslt.jpg]]

== Grundlegende Merkmale und Aufbau von XSLT- Dokumenten ==

== XSLT Prozessoren und XSL Stylesheets ==


=== Aufbau und Funktionsweise von XSLT Prozessoren ===



Zur Formatierung eines XML-Dokuments, mittels eines XSL-Stylesheets, wird ein XSLT-Prozessor benötigt.
Bei diesem Vorgang werden die Template-Regeln (innerhalb des Stylesheets) auf das Eingabedokument angewendet um so ein neues Ausgabedokument zu erzeugen.
Für die Transformation benötigt der XSLT Prozessor sowohl ein XML Dokument als auch ein Stylesheet Dokument welche als Dateien eingelesen werden, aber nicht direkt in dieser Form weiterbearbeitet werden. Erst durch die Umwandlung der Dokumente in Baumrepräsentationen mit hilfe einen XML Parsers ( DOM oder eigener Datenstruktur) ist der XSLT Prozessor in der Lage weiterzuarbeiten. Als Ausgabe wird ein Ergebnisbaum (resulttree) erzeugt . Durch die darauf folgende serialisierung kann das gewünschte Textdokument(XML, HTML, Plaintext,  XSL-FO Designstruktur, etc.) erzeugt werden.



[[Bild:S3makuba_Xml2xml.jpg|450px]]

=== XSLT Prozessoren ===

XSLT Prozessoren haben viele Anwedungsmöglichkeiten, dabei wirde es wohl am häufigsten in Webbrowsern genutzt.
Ein Grund dafür ist die starke Verbreitung des Microsoft Internet Explorers welcher einen integrieten XSLT Prozessor besitzt.
Aber auch in der Entwicklung eigener Programme werden sehr häufig vorhandene XSLT Prozessoren genutzt.
Auf drei dieser Prozessoren ( SAXON , Xalan , MSXML ) soll hier genauer eingegangen werden.


'''Xalan''' 


Bei dem XSLT-Prozessor von Xalan handelt es sich um einen Open Source-Prozessor der im Rahmen des Apache XML Projektes3 entstanden ist.
Dieser implimentiert sowohl die XPath 1.0 als auch die XSLT 1.0 Spezifikation des W3C vollständig. 
Da jedoch die dritte Spezifikation ( XSL Formatting Objects) nicht enthalten ist , muss in diesen fällen auf andere Prozessoren zurückgegriffen werden. 
Xalan wird unterschieden zwischen den Versionen Java- (Xalan-J) und C++- (Xalan-C++)und nutzt für diese Versionen den XML Parser Xerces4.

Seit der Xalan Version 2.5 gibt es zwei Möglichkeiten der Verwendung des Prozessors.
Zum einen kann er als normaler interpretierender XSLT Prozessor (Xalan Interpretive Processor) genutzt werden. Bei der zweiten Variante arbeitet der XSLT-Prozessor mit vorkompilierten Stylesheet (Xalan Compiled Processor) .
 



Beide Arten von Prozessoren arbeiten intern mit einer eigenen Baumrepräsentation – dem Document Table Model DTM. DTM wurde extra auf die XSLT und XPath Implementierungen zugeschnitten und ist dadurch effizienter in der Verarbeitung als beispielsweise das allgemeine Document Object Model DOM. Ein Hauptunterschied zwischen DOM und DTM liegt darin, dass das DTM Modell ein read-only Model ist, im Gegensatz zu DOM, bei dem man die Möglichkeit hat, Knoten neu zu erzeugen, oder Daten in das Modell zu schreiben
Der Xalan Compiled Processor XSLTC ist eine weitere Besonderheit der neuen Xalan Versionen [Sun-02]. Er bietet die komfortable Möglichkeit, XSL Stylesheets in Java Bytecode zu kompilieren (Translets) und diese Translets auf XML Dokumente anzuwenden. Der Vorteil ist klar ersichtlich: es ist nun möglich, nur einmal ein XSL Stylesheet zu verarbeiten und dann mehrfach auf XML Dokumente anzuwenden. Je mehr XML Dokumente mit dem gleichen Stylesheet formatiert werden sollen, desto mehr lohnt sich die Anwendung von XSLTC.
Die Kompilierung eines Stylesheets kann auch auf Kommandozeilenebene erfolgen und man nutzt danach nur noch das fertige Translet in seiner Applikation. Das folgende Beispiel


'''SAXON'''

'''MSXML'''

== Transformationsprozess ==

== Template-Regeln und Konfliktlösung ==

== Programmierung mit XSLT ==

== Dokumenttransformation in XML, HTML und XHTML ==