Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin
Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin
Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
ç An dieser Stelle kommt Cocoon von<br />
ASF ins Spiel, der einige fertige Lösungen<br />
für dieses Problem enthält Das<br />
Cocoon-Design definiert drei Schritte<br />
der Datenverarbeitung in einer XMLbasierten<br />
Web-Anwendung: Holen der<br />
XML-Daten, die XML-Datentransformation<br />
und das Umwandeln in<br />
ein Zielformat (Abbildung 8) Diese<br />
Abfolge wird eine Verarbeitungs-Pipeline<br />
genannt<br />
XML-Daten<br />
holen<br />
Cocoon<br />
XML-Daten<br />
transformieren<br />
Abbildung 8: Allgemeines<br />
Funktionsprinzip von Cocoon<br />
Cocoon selbst ist ein Java-Servlet und<br />
nutzt die bereits erwähnten Java-Bibliotheken<br />
Xerces, Xalan und FOP Für das<br />
Holen der Daten stellt Cocoon mehrere<br />
Möglichkeiten zur Verfügung Im einfachsten<br />
Fall können statische XML-<br />
Dateien die Datenquelle sein Ein Web-<br />
Server kann so konfiguriert werden, dass<br />
alle Anfragen nach XML-Dokumenten<br />
von Cocoon bearbeitet werden Es können<br />
aber auch dynamisch aus Datenbanken<br />
erzeugte Daten sein Für spezifischere<br />
Probleme ermöglicht Cocoon<br />
die Erstellung eigener Module für das<br />
Holen oder dynamische Erzeugen der<br />
Daten Diese können in Java oder in<br />
einer speziellen XML-basierten Sprache<br />
XSP geschrieben werden (Abbildung 9)<br />
Hier bietet sich der Vergleich mit den<br />
Servlets und JSP-Seiten an (so), denn<br />
die beiden Technologien haben deutliche<br />
Parallelen<br />
Der entscheidende Unterschied ist, dass<br />
die Cocoon-Module, genannt Producer,<br />
XML und nicht HTML erzeugen Dasselbe<br />
gilt für die XSP-Seiten Anders als<br />
XML ist HTML nicht zur Weiterverarbeitung,<br />
sondern nur zu einer sofortigen<br />
Präsentation geeignet Das wäre<br />
hier zunächst nur hinderlich XSP-Seiten<br />
enthalten folglich den statischen Teil<br />
der Seite als XML, während der dynamische<br />
Teil mit Hilfe von Java erzeugt wird<br />
(vgl JSP)<br />
2<br />
XML-Daten ins<br />
Zielformat<br />
umwandeln<br />
Resultat<br />
im Zielformat<br />
<br />
<br />
<br />
It is new java.util.Date().toString()<br />
<br />
Abbildung 9: Einfache XSP-Seite<br />
Für die Transformation von XML-Daten gibt es ebenfalls mehrere Möglichkeiten,<br />
wobei ein XSLT-Processor am häufigsten genutzt sein wird Dieser wird mit Hilfe<br />
von XSLT-Stylesheets konfiguriert und bietet daher eine für die meisten Anwendungen<br />
hinreichende Flexibilität Sollte das nicht ausreichen, können in Java eigene<br />
Prozessoren entwickelt werden In Cocoon können Prozessoren in der<br />
Transformationsstufe kaskadiert werden Jeder Prozessor akzeptiert und erzeugt<br />
XML So kann die Ausgabe eines Prozessors einem anderen zugeführt werden Mit<br />
dem ersten Prozessor können zB die Daten gefiltert werden, mit dem zweiten<br />
umsortiert und mit dem dritten schließlich die Formatierungsinformation hinzugefügt<br />
werden Diese Kaskade kann auch nach der Fertigstellung einer Anwendung<br />
angepasst werden, um neuen Anforderungen gerecht zu werden<br />
Die Umwandlung in ein Zielformat ist ebenfalls konfigurierbar (Es ist zu beachten,<br />
dass in der Cocoon-Terminologie dieser Schritt Formatierung genannt wird In<br />
diesem Text ist mit der Formatierung das Verschmelzen der Informationen aus dem<br />
Stylesheet mit den Daten gemeint) Neben der trivialen Möglichkeit, aus XHTML<br />
HTML zu erzeugen, können die XML-Daten auch unverändert gelassen werden oder<br />
es kann reiner Text ohne Markierungen erzeugt werden Doch auch in diesen Fällen<br />
ist der Schritt wichtig, denn der Browser muss hieraus die Information bekommen,<br />
welche Art von Daten folgen werden, um sie richtig darzustellen Eine anspruchsvollere<br />
Umwandlung ist die Umwandlung aus XSL (Formatting Objects) in ein anderes<br />
Textformat: Das Zielformat kann dabei PostScript oder PCL – geeignet zum<br />
Ausdrucken -, <strong>PDF</strong> – geeignet zur Darstellung im Adobe Acrobat -, RTF – geeignet<br />
zur Weiterverarbeitung in Microsoft Word – oder reiner Text sein Falls die<br />
angebotenen Möglichkeiten nicht ausreichen, können auch hier eigene Module in<br />
Java entwickelt werden<br />
Um eine hohe Geschwindigkeit zu erreichen, werden in der Verarbeitungs-Pipeline<br />
die Resultate zwischengespeichert Eine erneute Verarbeitung ist nur dann nötig,<br />
wenn sich die Daten an der Quelle ändern<br />
Für die Lösung des oben beschriebenen Problems muss Cocoon, wie in Abbildung<br />
10 dargestellt, konfiguriert werden<br />
1/02 2 12<br />
XML<br />
XHTML<br />
Apache Cocoon-<br />
Framework<br />
Web/Servlet-<br />
Server<br />
HTML<br />
XML-<br />
Dokument<br />
XSLT-<br />
Processor<br />
HTML-<br />
Formatter<br />
XSLT-<br />
Stylesheet<br />
Web-<br />
Browser<br />
Abbildung 10: Cocoon-Konfiguration für die serverseitige Umwandlung von XML<br />
nach HTML<br />
Um aus dem XML-Dokument nun nicht mehr HTML, sondern zB <strong>PDF</strong> zu<br />
erzeugen, muss lediglich das Stylesheet ersetzt werden und statt<br />
è