09.03.2014 Aufrufe

Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin

Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin

Extensible Markup Language (PDF) - IT-Dienstleistungszentrum Berlin

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

è

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!