Coccon das Web-XML-Publishing System Thomas Haller.
-
Upload
dierk-blender -
Category
Documents
-
view
112 -
download
3
Embed Size (px)
Transcript of Coccon das Web-XML-Publishing System Thomas Haller.

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

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

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

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

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

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*)

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>

2.1) Die Pipeline

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>

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

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>

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

2.2) Bearbeitungskompenenten
<map:generate /><map:transform /><map:serialize /><map:reader />

2.3) Gruppierungen
● Komponenten werden unter einem eindeutigen Namen zusammengefasst
● Steigert die Übersichtlichkeit<map:resources><map:views><map:action-sets>

Beispiel
● fehlt: Grosses Beispiel einer Sitemap

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

XML-Beispiel
● fehlt● xmldatei, xsldatei, sitemap

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

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>

XSP-Beispiel
● fehlt: ● xsp-datei, style, sitemap

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)

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

Ende
bei Fragen bitte fragen