Java und XML Kurzvortrag von Tim Steffens und Andreas Klein Cocoon 2 Inhalt - Was ist Cocoon ? - Wie funktioniert Cocoon ? - Worauf baut Cocoon auf ? - Installation - Sitemap Was ist Cocoon ? (1) • • • • • publishing framework document generator web-basierte serverseitige Anwendung liest XML, HTML etc. gibt das ganze als HTML, PDF (bzw. in jedem benötigtem XML-basiertem Format) aus Was ist Cocoon ? (2) • Trennung von Inhalt, Stil und Logik • getrennte Bearbeitung möglich • z.B. zum ändern des Layouts muß nur eine Datei geändert werden (und nicht jedes Dokument einzeln ändern) Wie funktioniert Cocoon? (1) • Generator: ließt Dateien ein (SAX) und erzeugt entsprechende Events (XMLDokumente) • Transformer: stilisiert das Dokument (z.B. mit XSLT) • Aggregator: fügt Daten zusammen • Serializer: erzeugt AusgabeStream in gewünschtem Format Wie funktioniert Cocoon? (2) • Neuerung zu Cocoon 1: Pipelining, nur möglich, da Cocoon 2 Event-basiert ist Worauf baut Cocoon auf ? (1) • Benutzt folgende Technologien • XML • XML Namespaces • XSLT • Xpath • SQL • XSP • JAVA Worauf baut Cocoon auf ? (2) • Damit Cocoon lauffähig ist benötigt es: • Webbrowser • Java Umgebung (z.B. J2SDK=JDK) • Server-Umgebung (Servlet, z.B. Jakarta Tomcat 4) Worauf baut Cocoon auf ? (3) • außerdem werden verschiedene Ausgabeformate unterstützt : • • • • • alle XML-basierten Formate, wie z.B.: HTML / XHTML mit CSS SVG (Scalable Vector Graphics) PDF etc. Installation (1) • Es wird eine funktionierende Java-Entwicklungsumgebung benötigt (z.B. J2SDK von Sun, http://java.sun.org). Umgebungsvariable JAVA_HOME setzen Unix: export JAVA_HOME=/dein/jdk/ Windows: set JAVA_HOME=c:\dein\jdk • Tomcat (am besten 4.0.1) als binary von http://jakarta.apache.org herunterladen und entpacken. Umgebungsvariable CATALINA_HOME setzen Unix: export CATALINA_HOME=/dein/tomcat/ Windows: set CATALINA_HOME=c:\dein\tomcat Installation (2) • zum testen von Tomcat: startup-Skript ausführen unter tomcat/bin und beim Browser http://localhost:8080/ eingeben • die Cocoon2-Distribution unter http://xml.apache.org runterladen und entpacken. Um das cocoon war package zu erstellen und in den servlet-container zu installieren, folgendes Datei im Cocoonverzeichnis ausführen: Unix: ./build.sh -Dinclude.webapp.libs=yes -Dinstall.war=/dein/tomcat/webapps install Win32: .\build.bat -Dinclude.webapp.libs=yes -Dinstall.war=c:\dein\tomcat\webapps install Installation (3) • Das Servlet neu starten mit dem shutdown und startup Befehl • nun ist Cocoon unter http://localhost:8080/cocoon/ verfügbar Sitemap (1) Eine Sitemap beinhaltet Konfigurations-Informationen für die Apache Cocoon engine. Beginnt mit map:sitemap und hat immer einen namespace map. Bsp.: <?xml version="1.0"?> <map:sitemap xmlns:map="http://xml.apache.org/cocoon/sitemap/1.0"> <map:components/> <map:views/> <map:resources/> <map:action-sets/> <map:pipelines/> </map:sitemap> Sitemap (2) -components Alle components haben folgende Parameter: name und src In diesem Beispiel wird ein <use-store>-Parameter spezifiziert <map:components> <map:transformer name="xslt" src="org.apache.cocoon.transformation.XSLTTransform er"> <!-- This is a parameter to the transformer component --> <use-store>true</use-store> </map:transformer> </map:components> Sitemap (3) -generators Jeder generator hat wiederum name und src. Wenn in einer pipeline (später) kein generator spezifiziert ist, wird der default-generator (hier: parser) benutzt. Generators generieren XML Inhalte durch erzeugung von SAX events und initialisieren den pipeline-Prozess. Verschiedene generator-Typen: -file generator - directory generator - XSP generator - JSP generator - Request generator - ... <map:generators default="parser"> <map:generator name="parser" src="org.apache.cocoon.generator.FileGenerator"/> <map:generator name="dir" src="MyDirGenerator"/> <map:generator name="xsp" src="org.apache.cocoon.generators.XSPGenerator"> ... </map:generator> </map:generators> Sitemap (4) -transformers Jeder transformer hat wiederum name und src. Wenn in einer pipeline (später) kein transformer spezifiziert ist, wird der default-transformer benutzt. Transformers transformieren SAX events in SAX events. Verschiedene transformer-Typen: -XSLT Transformer - Log Transformer - SQL Transformer - I18N Transformer - ... <map:transformers default="xslt"> <map:transformer name="xslt" src="org.apache.cocoon.transformation.XSLTTransformer"> <use-store>true</use-store> </map:transformer> <map:transformer name="xinclude" src="org.apache.cocoon.transformation.XIncludeTransformer"/> </map:transformers> Sitemap (5) -serializers (1) Jeder serializer hat wiederum name und src. Wenn in einer pipeline (später) kein serializer spezifiziert ist, wird der default-serializer benutzt. Serialisers verwandeln die SAX events in binäre oder character-streams. Verschiedene serializer-Typen: -HTML Serializer - FOP Serializer - Text Serializer - XML Serializer - ... <map:serializers default="html"> <map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serializer.HTMLSerializer"> <doctype-public>-//W3C//DTD HTML 4.0 Transitional//EN</doctypepublic> <doctype-system>http://www.w3.org/TR/REChtml40/loose.dtd</doctype-system> <omit-xml-declaration>true</omit-xml-declaration> <encoding>UTF-8</encoding> <indent>1</indent> </map:serializer> Sitemap (6) -serializers (2) <map:serializer name="wap" mime-type="text/vnd.wap.wml" src="org.apache.cocoon.serializer.XMLSerializer"> <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public> <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctypesystem> <encoding>UTF-8</encoding> </map:serializer> <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serializer.SVGSerializer"> <parameter name="background_color" type="color" value="#00FF00"/> </map:serializer> <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serializer.SVGSerializer"> </map:serializer> </map:serializers> Sitemap (7) -selectors Jeder selector hat wiederum name und src. Wenn in einer pipeline (später) kein selector spezifiziert ist, wird der default-selector benutzt. Selectors werten einen Boolschen Ausdruck aus. <map:selectors default="browser"> <map:selector name="load" src="org.apache.cocoon.selection.MachineLoadSelector"> ... </map:selector> <map:selector name="user" src="org.apache.cocoon.selection.AuthenticationSelector"> ... </map:selector> <map:selector name="browser" src="org.apache.cocoon.selection.BrowserSelectorFactory"> ... </map:selector> </map:selectors> Sitemap (8) -matchers Jeder matcher hat wiederum name und src. Wenn in einer pipeline (später) kein matcher spezifiziert ist, wird der default-matcher benutzt Matchers mappen Muster auf eine Resource (URI mit bestimmten Muster finden um Anfage auf Pipelines zu legen). Verschiedene matcher-Typen: -wildcard - regexp <map:matchers default="uri-wildcard"> <map:matcher name="uri-wildcard" src="org.apache.cocoon.matcher.WildcardURIMatcherFactory"> ... </map:matcher> <map:matcher name="uri-regexp" src="org.apache.cocoon.matcher.RegexpURIMatcher"> ... </map:matcher> </map:matchers> Sitemap (9) -actions Actions können Parameter zur Laufzeit verändern. <map:actions> <map:action name="add-employee" src="org.apache.cocoon.acting.DatabaseAddAction"/> <map:action name="locale" src="org.apache.cocoon.acting.LocaleAction"/> <map:action name="request" src="org.apache.cocoon.acting.RequestParamAction"/> <map:action name="form-validator" src="org.apache.cocoon.acting.FormValidatorAction"/> </map:actions> Sitemap (10) -pipelines