1 / 36

Cocoon

Cocoon. Stefan Metzlaff 10.06.2004. Gliederung. Geschichte Was ist Cocoon? Cocoon 1 vs. Cocoon 2 Sitemap und Komponenten XSP Fazit Quellen. Geschichte. Jan. 1999 als Servlet zur Darstellung für XML Dateien von Stefano Mazzocchi

pavel
Download Presentation

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. Cocoon Stefan Metzlaff 10.06.2004 Stefan Metzlaff

  2. Gliederung • Geschichte • Was ist Cocoon? • Cocoon 1 vs. Cocoon 2 • Sitemap und Komponenten • XSP • Fazit • Quellen Stefan Metzlaff

  3. Geschichte • Jan. 1999 als Servlet zur Darstellung für XML Dateien von Stefano Mazzocchi • Nov. 2001 Freigabe von Cocoon 2 als Teil des Apache XML Projekts • z.Z. ca. 20 Kernentwicklern und unzähligen Nutzern Stefan Metzlaff

  4. Was ist Cocoon (1) • XML Publishing Framework • Dynamische Visualisierung von Daten in verschiedenen Formaten • HTML • PDF • SVG Stefan Metzlaff

  5. Was ist Cocoon (2) • Servlet innerhalb eines Applikationsserver • Trennung von Logik, Daten und Präsentation Pipeline - XML - XSL Stefan Metzlaff

  6. Cocoon 1 • basiert auf DOM • Aufbauen eines kompletten Baumes für jedes Dokument vor der Verarbeitung • schlechte Performance • hohe Speicherverbrauch • nutzt Reactor Pattern • Ablauf der einzelnen Funktionen durch Processing Instructions innerhalb der XML-Datendatei bestimmt • Schwierigkeiten mit hoch dynamischen Dokumenten Stefan Metzlaff

  7. Cocoon 2 • Verwendung von SAX • Verarbeitung der Daten als XML SAX-Stream • ermöglicht Verarbeitung sehr großer Dokumente • Sitemap Konzept • Funktionen und deren Komponenten werden in der globalen Sitemap beschrieben • Funktionen bestehen aus einer Kette von Komponenten (Pipeline) Stefan Metzlaff

  8. Pipeline • Einfache Pipeline • Besteht aus Generator, Transformer und Serializer Generator Transformer Serializer SAX SAX sample1.html sample1.xml sample1.xsl Stefan Metzlaff

  9. Sitemap (1) • XML Datei sitemap.xmap • Deklariert Komponenten • Definiert Funktionen • Zuordnung von Anfragen zu Pipelines • Erlaubt es Nichtprogrammierern Webseiten und Webapplikationen mittels XML und logischen Komponenten zu erstellen Stefan Metzlaff

  10. Sitemap (2) • Cocoon enthält viele vordefinierte Komponenten • Komponenten werden im Bausteinprinzip zu Pipelines zusammengefügt • Eigene Komponenten können ohne Modifikation von Cocoon integriert werden • Komponentenimplementierungen sind Java-Klassen Stefan Metzlaff

  11. Sitemap (3) • Direkte Komponenten • unmittelbaren Einfluss auf XML-Stream • Generator, Transformer, Serializer und Reader • Indirekte Komponenten • keinen Einfluss auf den XML-Stream • Matcher, Selector und Action Stefan Metzlaff

  12. Sitemap (4) <?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:components/> <map:views/> <map:resources/> <map:action-sets/> <map:pipelines/> </map:sitemap> <map:generators/> <map:transformers/> <map:serializers/> <map:readers/> <map:selectors/> <map:matchers/> <map:actions/> <map:match/> Stefan Metzlaff

  13. Sitemap (5) Aus MatthewLangham - Introduction To Cocoon 18.11.2003 Stefan Metzlaff

  14. Generator (1) • Erste Komponente in einer Pipeline • Erzeugt XML Stream • Nutzen Cache zur Performancesteigerung • Typen von Generatoren • Datei Generator • Verzeichnis Generator • XSP Generator • JSP Generator • ... Stefan Metzlaff

  15. Generator (2) • Deklaration von Generatoren: <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:generators> Stefan Metzlaff

  16. Generator (2) • Beispiel in der Pipeline: <map:match pattern="sample1.html"> <map:generate src="docs/samples/sample1.xml"/> <map:transform src="stylesheets/sample/sample1.xsl"/> <map:serialize type="html"/> </map:match> Generator Transformer Serializer SAX SAX sample1.html sample1.xml sample1.xsl Stefan Metzlaff

  17. Transformer (1) • Eingabe und Ausgabe ist XML Stream • Transformer verändert XML Struktur • Meist direkt nach Generator in Pipeline • Typen: • XSLT Transformer • LOG Transformer • SQL Transformer • I18N Transformer • ... Stefan Metzlaff

  18. Transformer (2) • Deklaration von Transformern: <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-db> </map:transformer> <map:transformer name="log" src="org.apache.cocoon.transformation.LogTransformer"/> ... </map:transformers> Stefan Metzlaff

  19. Transformer (3) • Beispiel in der Pipeline: <map:match pattern="sample1.html"> <map:generate src="docs/samples/sample1.xml"/> <map:transform src="stylesheets/sample/sample1.xsl"/> <map:serialize type="html"/> </map:match> Generator Transformer Serializer SAX SAX sample1.html sample1.xml sample1.xsl Stefan Metzlaff

  20. Serializer (1) • Umwandlung von XML Stream in ein anwendungsspezifisches Format • Letzte Komponente der Pipeline • Typen: • HTML Serializer • FOP Serializer • Text Serializer • XML Serializer • ... Stefan Metzlaff

  21. Serializer (2) • Deklaration von Serializern: <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:serializer name="vrml" mime-type="model/vrml" src="org.apache.cocoon.serialization.TextSerializer"/> ... </map:serializers> Stefan Metzlaff

  22. Serializer (3) • Beispiel in der Pipeline: <map:match pattern="sample1.html"> <map:generate src="docs/samples/sample1.xml"/> <map:transform src="stylesheets/sample/sample1.xsl"/> <map:serialize type="html"/> </map:match> Generator Transformer Serializer SAX SAX sample1.html sample1.xml sample1.xsl Stefan Metzlaff

  23. Reader (1) • Übermittelt Dokumente direkt, ohne XML Streams, an den Client • Start und gleichzeitig Endpunkt einer Pipeline • z.B. für Bilder, Binaries und CSS Stefan Metzlaff

  24. Reader (2) • Deklaration: <map:readers default="resource"> ... <map:reader name="image" src="org.apache.cocoon.reading.ImageReader" logger="sitemap.reader.image" pool-max="32" pool-min="1" pool-grow="4"/> ... </map:readers> • Beispiel: <map:match pattern="*.jpg"> <map:read type="image" src="resources/images/{1}.jpg" mime-type="image/jpeg"> </map:read> </map:match> Stefan Metzlaff

  25. Matcher (1) • Ordnet eine URI zu einem Pattern zu, um der Anfrage eine Pipeline zu zuordnen • Ermöglichen Verarbeitung in einer Pipeline für Gruppen von URIs • Typen: • Wildcard Matcher • Regexp Matcher • Weitere eigene Matcher möglich Stefan Metzlaff

  26. Matcher (2) • Deklaration von Matchern: <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> Stefan Metzlaff

  27. Matcher (3) • Beispiel: <map:match pattern="sample1.html"> <map:generate src="docs/samples/sample1.xml"/> <map:transform src="stylesheets/sample/sample1.xsl"/> <map:serialize type="html"/> </map:match> <map:match pattern="*.css"> <map:read mime-type="text/css" src="css/sample1.css"> </map:match> Stefan Metzlaff

  28. Selector (1) • Zur Abbildung von Basislogik innerhalb der Sitemap • Ähnlich zu Matcher • Im Gegensatz zu Matcher nicht nur ja/nein sondern Multiple-Choice Abfragen möglich • Typen: • BrowserSelector • ParameterSelector • HostSelector • ... Stefan Metzlaff

  29. Selector (2) • Deklaration von Selectoren: <map:selectors default="browser"> <map:selector name="browser" src="org.apache.cocoon.selection.BrowserSelector"> <browser name="explorer" useragent="MSIE"/> <browser name="lynx" useragent="Lynx"/> <browser name="netscape" useragent="Mozilla"/> </map:selector> <map:selector name="parameter" src="org.apache.cocoon.selection.ParameterSelector"/> </map:selectors> Stefan Metzlaff

  30. Selector (3) • Beispiel: <map:match pattern="*"> <map:generate type="serverpages" src="test/{1}.xsp"/> <map:select type="browser"> <map:when test="explorer"> ... </map:when> <map:when test="lynx"> ... </map:when> <map:when test="netscape"> ... </map:when> <map:otherwise> ... </map:otherwise> </map:select> ... </map:match> Stefan Metzlaff

  31. Action • In Sitemap definierte spezielle Java Klassen • Verändern nicht den XML Stream sondern setzen Parameter für die Pipeline • z.B. für Logins verwendet Stefan Metzlaff

  32. XSP • eXtensible Server Pages • Ermöglichen dynamische XML Erzeugung auf Generatorebene • Programmierung im XML, durch Logic-Sheets • Integration von Java Code • Nicht sehr übersichtlich • Schwierig zu debuggen Stefan Metzlaff

  33. Komplexe Pipeline sample2.html SQL XSL SOAP XSL Generator Transformer Transformer Transformer Transformer Serializer sample2.xml formatier.xsl html-out.xsl DB Stefan Metzlaff

  34. Fazit • Vorteile • Basiert auf Java und XML (plattformunabhängig) • Modular & Erweiterbar • Open Source • Nachteile • Lange Einarbeitungszeit, um alle Features nutzen zu können • Performance Stefan Metzlaff

  35. Quellen • Quellen • The Apache Cocoon Project, http://cocoon.apache.org/ • XML.COM, - Getting Started With Cocoon 2, Steve Punte • IX 3/2004: Cocoon 2.1: XML als HTML oder PDF dynamisch darstellen, S.: 48-51 • Das Apache XML Projekt, Seminarvortag von Markus Minnameier, 26.01.2001 • XML Framework: Cocoon, Seminar: XML für Fortgeschrittene, Katrin Apel • Publishing mit freier Apache-Software, COMPUTERWOCHE Nr. 06 vom 08.02.2002 • Introduction To Cocoon, Matthew Langham • Download • http://cocoon.apache.org/mirror.cgi Stefan Metzlaff

  36. Fragen ?!? Stefan Metzlaff

More Related