Slide 1

Werbung
Ü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
Herunterladen