Ü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 • Request nach Muster verarbeiten Generator • XML Source generieren • Transformation nach XSLVorgaben Transformer • Evtl. Weitere XML Quellen aggregieren Aggregator • Ausgabe in ein bestimmtes Format Serializer stylesheet 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/" uriprefix="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