380 likes | 503 Views
XML Framework: Cocoon. Seminar: XML für Fortgeschrittene Referent: Katrin Apel. Gliederung. Motivation Cocoon Basics Einsatz in der Wirtschaft Fazit Literatur. Motivation. Dynamische Generierung von Dokumenten in verschieden Formaten und für verschiedene Clients. Motivation.
E N D
XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Gliederung • Motivation • Cocoon Basics • Einsatz in der Wirtschaft • Fazit • Literatur
Motivation • Dynamische Generierung von Dokumenten in verschieden Formaten und für verschiedene Clients
Motivation • Trennung von Content, Style, Logik und Management Funktionen
Gliederung • Motivation • Cocoon Basics • Einsatz in der Wirtschaft • Fazit • Literatur
Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap
Was ist Cocoon? • XML Publishing Framework • Teil des Apache Projekts • Aufsatz für Webserver / Teil einer lokalen Applikation • Bestandteile: • Servlets • XML-Parser • XSL-Prozessoren
Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap
Funktionsprinzip - Basismechansimen • Abfertigung basierend auf Matchern und Selektoren • Generierung von XML Dokumenten durch Generatoren • Transformation von XML Dokumenten durch Transformatoren • Aggregation von XML Dokumenten durch Aggregatoren • Rendering von XML durch Serializers
FunktionsprinzipPipeline Processing I Einfachstes Beispiel: • Eingabe: gespeichertes XML-Dokument • Verarbeitung: XSL Stylesheet • Ausgabe: HTML
FunktionsprinzipPipeline Processing II Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage) durch in XML eingebettete SQL Statements
Eingebettete SQL Statements in XML Datei file.xml <guest-list> <sql:execute-query> <sql:query> SELECT CONCAT(lastNAME,‘,‘,firstName) as name, age FROM guest WHERE status=ARRIVING; </sql:query> </sql:execute-query> </guest-list>
Beispielausgabe des SQL Transformers: <guest-list> <row-set> <row> <name>Bush, George</name> <age>56</age> </row> <row> <name>Jackson, Michael</name> <age>42</age> </row> <row> <name>Albert Einstein</name> <age>105</age> </row> </row-set> </guest-list>
FunktionsprinzipPipeline Processing III Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage, Internetanfrage an Web Service)
Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap
Extensible Server Pages (XSP) • XML Dokument mit integrierter Logik • Ähnlich wie Java Server Pages (JSP) • XSP-Parser interpretiert Logik-Bestandteile und wandelt sie in Code um • Dokument Root Element: <xsp:page> • Weitere Tags: <xsp:logic><xsp:expression>
Extensible Server Pages (XSP) <?xml version=“1.0“ encoding=“ISO-8859-1?“> <xsp:page language=“java“ xmlns:xsp=„http://apache.org/xsp“> <xsp:logic> static private int counter=0; private synchronized int count() { return counter++; } </xsp:logic> <page> <p>I have been requested <xsp:expr>count()</xsp:expr> times. </p> </page> </xsp:page>
Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap
Sitemap • XML Datei (Sitemap DTD) • Um neue Elemente erweiterbar • Enthält Konfigurationsinformationen • Liste von Matchern • Liste von Generatoren • Liste von Transformern • Liste von Readern • Liste von Serializern • Liste von Selektoren • Liste von Processing Pipelines mit Match Pattern
Sitemap - Matcher • Matcht URI mit einem spezifizierten Pattern, um den Request mit einer bestimmten Processing Pipeline abarbeiten zu können • Verschieden Arten von Matchern: • Wildcard Matcher (WildcardURIMatcher) • Regexp Matcher (RegexpURIMatcher)
Sitemap – Matcher II Einträge in die Sitemap für verschiedene Matcher: <map:matchers default=“wildcard“> <map:matcher name=“wildcard“ factory=“org.apache.cocoon.matching.WildcardURIMatcher“/> <map:matcher name=“regexp“ factory=“org.apache.cocoon.matching.RegexpURIMatcher“/> </map:matchers>
Sitemap – Matcher III Beispiel Matcher Eintrag in einer Pipeline: <map:match pattern=“jsp/*“> <map:generate type=“jsp“ src=“/docs/samples/jsp/{1}.jsp“/> ... </map:match> <map:match pattern=“hello.pdf“> ... </map:match>
Sitemap - Generatoren • Generiert eine XML Struktur aus einer Eingabequelle (Datei, Verzeichnis, Stream,..) • Verschiedene Arten von Generators • Datei Generator • Verzeichnis Generator • XSP Generator • JSP Generator • Request Generator • ...
Sitemap – Generatoren II Einträge in der Sitemap für verschiedene Generator <map:generators default=“file“> <map:generator name=“file“ src=“org.apache.cocoon.generation.FileGenerator“ label=“content“/> <map:generator name=“directory“ src=“org.apache.cocoon.generation.DirectoryGenerator“ label=“content“/> <map:generator name=“serverpages“ src=“org.apache.cocoon.generation.ServerPagesGenerator“ label=“content“/> <map:generator name=“request“ src=“org.apache.cocoon.generation.RequestGenerator“/> ... </map:generators>
Sitemap – Generators III Beispiel Generator Eintrag in einer Pipeline: <map:match pattern=“hello.html“> <map:generate src=“docs/samples/hello-page.xml“/> <map:transform src=“stylesheets/page/simple-page2html.xsl“/> <map:serialize type=“html“/> </map:match>
Sitemap - Transformer • Transformiert eine XML Struktur in eine andere XML Struktur • Verschiedene Arten von Transformers • XSLT Transformer • Log Transformer • SQL Transformer • ...
Sitemap – Transformer II Einträge in der Sitemap für verschiedene Transformer <map:transformers default=“xslt> <map:transformer name=“xslt“ src=“org.apache.cocoon.transformation.TraxTransformer“> <use-request-parameters>false</use-request-parameters> <use-browser-capabilities-db>false</use-browser- capabilities> </map:transformer> <map:transformer name=“log“ src=“org.apache.cocoon.transformation.LogTransformer“/> ... </map:transformer>
Sitemap – Transformer III Beispiel Transformer Eintrag in einer Pipeline: <map:match pattern=“hello.html“ <map:generate src=“docs/samples/hello-page.xml“/> <map:transform src=“stylesheets/page/simple-page2html.xsl“/> <map:serialize type=“html“/> </map:match>
Sitemap - Serializer • Gibt eine XML Eingabestruktur in einem anderem Format aus • Verschieden Arten von Serializern: • HTML Serializer • FOP Serializer (PDF) • Text Serializer • XML Serializer
Sitemap – Serializer II Einträge in der Sitemap für verschieden Serializer <map:serializers default=“html“> <map:serializer name=“xml“ mime-type=“text/xml“ src=“org.apache.cocoon.serialization.XMLSerializer“/> <map:serializer name=“html“ mime-type=“text/html“ src=“org.apache.cocoon.serialization.HTMLSerializer“/> <map:serializer name=“fo2pdf“ mime-type=“application/pdf“ src=“org.apache.cocoon.serialization.FOPSerializer“/> ... </map:serializers>
Sitemap – Serializer III Beispiel Serializer Eintrag in einer Pipeline: <map:match pattern=“hello.html“> <map:generate src=“docs/samples/hello-page.xml“/> <map:transform src=“stylesheets/page/simple-page2html.xsl“/> <map:serialize type=“html“/> </map:match>
Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur
Einsatz in der Wirtschaft • Einige Beispiele: • Reporting System für die Deutsche Bank • Internetabfrage der Medizindatenbank von Novartis • Enterprise Portal der NASA • Diverse Webportale anderer Firmen und Gruppen
Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur
Fazit - Vorteile • Vorteile • Hohe Flexibilität • Modularität • Erweiterbarkeit • komplett Java und XML basiert • Plattformunabhängigkeit • Open Source
Fazit - Nachteile • Nachteile • Einarbeitungszeit • Performanz • Verwendung von XSL • Design leidet
Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur
Literatur • Cocoon Homepage • http://cocoon.apache.org • Cocoon Tutorial • http://www.logabit.com/cocoontutorial.php • http://wiki.cocoondev.org/downloads/Cocoon.pdf • Artikel bei XML.com • http://www.xml.com/pub/a/2002/07/10/cocoon2.html • http://www.xml.com/pub/a/2002/07/24/xmlportal.html • Java & XML (O‘Reilly)