220 likes | 411 Views
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
E N D
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 (XML-Dokumente) • Transformer: stilisiert das Dokument (z.B. mit XSLT) • Aggregator: fügt Daten zusammen • Serializer: erzeugt Ausgabe-Stream 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.XSLTTransformer"> <!-- 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</doctype-public> <doctype-system>http://www.w3.org/TR/REC-html40/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</doctype-system> <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>