Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell Beispiele
Was ist cocoon? Cocoon is a powerful framework for XML web publishing which brings a whole new world of abstraction and ease to consolidated web site creation and management based on the XML paradigm and related technologies.
Was ist cocoon? XML publishing framework Verwendet XML und XSLT Separation of Concerns, d. h. Trennung von Inhalt, Logik und Darstellung Datenquellen: Filesysteme, RDBMS, LDAP, native XML Datenbanken, und Netzwerkbasierte Quellen Content Ausgabe in HTML, WML, PDF, SVG, RTF, ...
Was ist cocoon? Cocoon ist als Servlet implementiert Als Teil des Apache XML Projekts integriert cocoon unter anderem Xerces - XML Parser Xalan - XSLT Prozessor FOP – XSL Print Formatter Batik - Scalable Vector Graphics (SVG) Toolkit …
Was ist cocoon? Cocoon ist extrem erweiterbar. Nahezu alles ist als Komponente realisiert. Leicht können eigene Module geschrieben werden, die mit existierenden Komponenten zusammenarbeiten. Cocoon basiert auf vielen anderen Apache Projekten: Ant, Avalon, Xerces, Xalan, FOP, Batik, Velocity, Regexp. Modularität birgt aber auch Gefahren der Inkompatibilität!
SoC – Separation of Concerns pyramid of contracts Klare Trennung der verschiedenen Arbeitsbereiche in einem Entwicklungsteam Management: Inhalt, Abläufe, Aufbau Content: redaktioneller Teil aller Inhalte Logic: Integration der dynamischen Inhalte Style: Präsentation, look & feel, Grafik Austausch nach bestimmten Regeln möglich, die vom Management gesteuert werden
SoC – Separation of Concerns Beispiel <page> <content> <para>Today is <dynamic:today/> </para> </content> </page> <dynamic:today/> regelt die ‚Logik – Inhalt‘ Beziehung
SoC – Separation of Concerns Content: XML Files, RDBMS, LDAP, native XML Datenbanken, Netzwerkbasierte Quellen, Streams Style: XSL Files Logic: in XSL Files als XSP instructions ... <xsp:logic> // Java Code, SQL, ... String msg = "Hello, world!"; </xsp:logic> ... XSP kann auch in Logicsheets oder in Taglibs definiert und dann in XSL Files als Komponente wiederverwendet werden
Pipeline Request nach Muster verarbeiten XML Source generieren Transformation nach XSL-Vorgaben Evtl. Weitere XML Quellen aggregieren Ausgabe in ein bestimmtes Format request Generator Transformer stylesheet Aggregator Serializer
Cocoon intern
Sitemap Die Sitemap entält Konfigurationsinformationen für die Cocoon engine Matchers für URI Patterns Selectors Unterscheidungen im Pipeline-Ablauf Generators XML Sources einlesen Transformers XML Transformationen Serializers Ausgabeformat definieren Die Sitemap wird zu einer ausführbaren Klasse kompiliert
Sitemap - Matcher <map:match pattern="vortrag/**"> <map:mount check-reload="yes"src="vortrag/" uri-prefix="vortrag"/> </map:match> In der main-Sitemap können weitere Sitemaps für Unterprogramme „gemountet“ werden Baumstruktur der Sitemaps für einfachere Wartung
Sitemap – processing pipeline <map:match pattern="hello.html"> <map:generate src="hello-page.xml"/> <map:transform src="simple-page2html.xsl"/> <map:serialize type="html"/> </map:match> URI pattern hello.html erkennen Aus der Source hello-page.xml xml auslesen Nach den Regeln des XSL stylesheets Transformieren Als html Ausgabe serialisieren
Sitemap – Selector <map:match pattern="autoselect"> <map:generate src="hello-page.xml"/> <map:select> <map:when test="wap"> <map:transform src="simple-page2wml.xsl"/> </map:when> <map:when test="explorer"> <map:transform src="simple-page2html.xsl"/> ...
Quellen Cocoon Homepage: http://xml.apache.org/cocoon/index.html Apache XML Project: http://xml.apache.org Cocoon howtos: http://www.cocooncenter.org Cocoon tips: http://www.galatea.com/flashguides/cocoon-tips-2.xml