1 / 38

XML Framework: Cocoon

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.

Download Presentation

XML Framework: Cocoon

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel

  2. Gliederung • Motivation • Cocoon Basics • Einsatz in der Wirtschaft • Fazit • Literatur

  3. Motivation • Dynamische Generierung von Dokumenten in verschieden Formaten und für verschiedene Clients

  4. Motivation • Trennung von Content, Style, Logik und Management Funktionen

  5. Gliederung • Motivation • Cocoon Basics • Einsatz in der Wirtschaft • Fazit • Literatur

  6. Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap

  7. Was ist Cocoon? • XML Publishing Framework • Teil des Apache Projekts • Aufsatz für Webserver / Teil einer lokalen Applikation • Bestandteile: • Servlets • XML-Parser • XSL-Prozessoren

  8. Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap

  9. 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

  10. FunktionsprinzipPipeline Processing I Einfachstes Beispiel: • Eingabe: gespeichertes XML-Dokument • Verarbeitung: XSL Stylesheet • Ausgabe: HTML

  11. FunktionsprinzipPipeline Processing II Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage) durch in XML eingebettete SQL Statements

  12. 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>

  13. 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>

  14. FunktionsprinzipPipeline Processing III Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage, Internetanfrage an Web Service)

  15. Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap

  16. 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>

  17. 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>

  18. Cocoon Basics • Was ist Cocoon? • Funktionsprinzip • Extensible Server Pages (XSP) • Sitemap

  19. 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

  20. 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)

  21. 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>

  22. 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>

  23. 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 • ...

  24. 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>

  25. 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>

  26. Sitemap - Transformer • Transformiert eine XML Struktur in eine andere XML Struktur • Verschiedene Arten von Transformers • XSLT Transformer • Log Transformer • SQL Transformer • ...

  27. 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>

  28. 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>

  29. Sitemap - Serializer • Gibt eine XML Eingabestruktur in einem anderem Format aus • Verschieden Arten von Serializern: • HTML Serializer • FOP Serializer (PDF) • Text Serializer • XML Serializer

  30. 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>

  31. 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>

  32. Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur

  33. 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

  34. Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur

  35. Fazit - Vorteile • Vorteile • Hohe Flexibilität • Modularität • Erweiterbarkeit • komplett Java und XML basiert • Plattformunabhängigkeit • Open Source

  36. Fazit - Nachteile • Nachteile • Einarbeitungszeit • Performanz • Verwendung von XSL • Design leidet

  37. Gliederung • Motivation • Wie funktioniert Cocoon? • Einsatz in der Wirtschaft • Fazit • Literatur

  38. 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)

More Related