24
Coccon das Web-XML-Publishing System Thomas Haller

Coccon das Web-XML-Publishing System Thomas Haller

Embed Size (px)

Citation preview

Page 1: Coccon das Web-XML-Publishing System Thomas Haller

Coccon

das Web-XML-Publishing System

Thomas Haller

Page 2: Coccon das Web-XML-Publishing System Thomas Haller

kurzer Umriss des Inhalts

● 1) Einführung– 1.1) Was ist Cocoon und was kann es?– 1.2) Installation von Cocoon

● 2) Die Sitemap– 2.1) Pipeline– 2.2) Komponenten

● Logik Komponenten● Bearbeitungs Komponenten

– 2.3) Gruppierungen● 3) Hello World – Ein Beispiel● 4) Content Logic

– 4.1) XSP– 4.2) Logicsheets

Page 3: Coccon das Web-XML-Publishing System Thomas Haller

1.1) Cocoon gehört zur Apache Group

● Wurde 1998 von Stefano Mazzocchi als Servlet zur XSL-Transformation geschrieben

● Seit 1999 ist es ein Open Source Projekt der Apache Software Foundation

● aktuelle Version 2.1.6

Page 4: Coccon das Web-XML-Publishing System Thomas Haller

1.1) Cocoon als XML-Publishing Framework

● Erzeugt aus XML-Documenten verschiedenste Ausgabeformate welche an Endgeräten versendet werden

● Meist genutzt als Dynamischer Webseiten Generator in Servlet Container

● Vollkommen in Java entwickelt

Page 5: Coccon das Web-XML-Publishing System Thomas Haller

1.1) Model Viewer Controller

● Eine strikte Trennung von Logic, Design und Layout ist möglich– ermöglicht verschiedenen Entwicklern getrennt

am selben Projekt zu arbeiten– Vereinfacht die Wartung der erstellten

Applikationen– schafft gewollte Abstationsebenen

● Komponentenbasierte Architektur garantiert ein Höchstmaß an Wiederverwendbarkeit

Page 6: Coccon das Web-XML-Publishing System Thomas Haller

1.2) Installation

● (*Wird als Source Distribution ausgeliefert*)● Herunterladen, Kompilieren (Apache Ant)● je nach Servlet-Container kopieren der war-

Datei oder des webapp-Verzeichnis in ein bestimmtes Verzeichnis der Engine und neustarten

● Weil Cocoon ein Servlet ist läuft es auf nahezu jeder Engine und jedem System.

● Meiste Verbreitung wohl mit Apache Jakarta Tomcat

Page 7: Coccon das Web-XML-Publishing System Thomas Haller

2) Sitemap - Die Komandozentrale von Cocoon

● Definiert Komponenten– Die Komponenten führen die eigentlichen

Aktionen aus● Schaltet die Komponenten hintereinander

– in Form von Pipelines● Definiert, wann Aktionsketten starten

– in Abhängigkeit von URL-Anfragen● $CATALINA_HOME/webapps/cocoon/sitemap.xmap

● (*einbinden von subsitemaps*)

Page 8: Coccon das Web-XML-Publishing System Thomas Haller

2) Das Grundgerüst der Sitemap

● fehlt zB.● <?xml version="1.0" encoding="UTF-8"?>● <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

● <map:components>● <!-- Hier werden alle Komponenten registriert (Optional) -->● </map:components>

● <map:views>● <!-- Hier werden alle Views registriert (Optional) -->● </map:views>

● <map:resources>● <!-- Hier werden alle Ressourcen registriert (Optional) -->● </map:resources>

● <map:action-sets>● <!-- Hier werden alle Action-Sets registriert (Optional) -->● </map:action-sets>

● <map:flows>● <!-- Hier werden alle Flows registriert (Optional) -->● </map:flows>

● <map:pipelines>● <!-- Hier werden alle Pipelines definiert (Pflicht) -->● </map:pipelines>

● </map:sitemap>

Page 9: Coccon das Web-XML-Publishing System Thomas Haller

2.1) Die Pipeline

Page 10: Coccon das Web-XML-Publishing System Thomas Haller

2.1) Die Pipeline

<map:pipeline> <map:match pattern="date.html"> <map:generate type="file" src="content/Hello_World.xml"/> <map:transform type=”xslt” src=”style/xml2html.xsl”> <map:serialize type="html"/> </map:match></map:pipeline>

Page 11: Coccon das Web-XML-Publishing System Thomas Haller

2.2) Komponenten

● Hier werden alle “Werkzeuge”, welche später verwendet werden eindeutig, angegeben

Page 12: Coccon das Web-XML-Publishing System Thomas Haller

2.2) Logikkomponenten: Matcher, Selektoren, Aktionen

(*eintrag in <components> von allen*)

<map:pipelines> <map:pipeline> <map:match type="wildcard" pattern="**/*.html"> <map:select type="browser"> <map:when test="netscape"> <!-- Rumpf mit Anweisungen für Netscape --> </map:when> <map:otherwise> <map:act type="myAction"> <!-- Wird nur ausgeführt, wenn eine Java-Map zurück geliefert wird --> </map:act> </map:otherwise> </map:select> </map:match > </map:pipeline></map:pipelines>

Page 13: Coccon das Web-XML-Publishing System Thomas Haller

2.2) Bearbeitungskompenenten

– Zwischen den Bearbeitungkomponenten werden SAX-Events durchgereicht und bearbeitet.

Page 14: Coccon das Web-XML-Publishing System Thomas Haller

2.2) Bearbeitungskompenenten

<map:generate /><map:transform /><map:serialize /><map:reader />

Page 15: Coccon das Web-XML-Publishing System Thomas Haller

2.3) Gruppierungen

● Komponenten werden unter einem eindeutigen Namen zusammengefasst

● Steigert die Übersichtlichkeit<map:resources><map:views><map:action-sets>

Page 16: Coccon das Web-XML-Publishing System Thomas Haller

Beispiel

● fehlt: Grosses Beispiel einer Sitemap

Page 17: Coccon das Web-XML-Publishing System Thomas Haller

3.1) Ein erstes Beispiel“Hello World”

● Erzeugen einer statischen Seite● Basisverzeichnis $CATALINA_HOME/webapps/cocoon● Dateien

– Inhalt: ./hello_world/content/hello_world.xml

– Layout: ./hello_world/style/xml2html.xsl./hello_world/style/xml2pdf.xsl...

– Sitemap ./hello_world/sitemap.xmap● http://localhost:8080/cocoon/hello_world/index.html

Page 18: Coccon das Web-XML-Publishing System Thomas Haller

XML-Beispiel

● fehlt● xmldatei, xsldatei, sitemap

Page 19: Coccon das Web-XML-Publishing System Thomas Haller

4.1) Content Logic - XSP

● eXtensible Server Page● von Cocoon-Gemeinde entwickelt● lange Zeit bevorzugtes Mittel um Logik zu

integrieren.Wird in künftigen Versionen zugunsten von Control Flow aus dem Core entfernt

Page 20: Coccon das Web-XML-Publishing System Thomas Haller

4.1) XSP-Tags

● Alle xsp-Tags müssen zum Namensraum http://apache.org/xsp gehören

● Tagliste– <xsp:page>– <xsp:structure>– <xsp:include>– <xsp:logic>– <xsp:content>– <xsp:expr>– <xsp:element>– <xsp:attribute>– <xsp:pi>– <xsp:comment>

Page 21: Coccon das Web-XML-Publishing System Thomas Haller

XSP-Beispiel

● fehlt: ● xsp-datei, style, sitemap

Page 22: Coccon das Web-XML-Publishing System Thomas Haller

4.2) XSP Logicsheets

● Logik in ein Logicsheet um sie vom Inhalt zu trennen– Erstellen des Logicsheet– Registrieren in Cocoon

● Anhand eines Namensraums werden Tags im “Content-Document” mit jenem im Logicsheet assoziert

● (anmerkung*xsp wird kompiliert und im speicher gehalten)

Page 23: Coccon das Web-XML-Publishing System Thomas Haller

logicsheet

● neue xsp● logicsheet xsl● eintrag in cocoon.xconf

Page 24: Coccon das Web-XML-Publishing System Thomas Haller

Ende

bei Fragen bitte fragen