XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

38
XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel

Transcript of XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Page 1: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

XML Framework: Cocoon

Seminar: XML für FortgeschritteneReferent: Katrin Apel

Page 2: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Gliederung

• MotivationMotivation• Cocoon Basics• Einsatz in der Wirtschaft• Fazit• Literatur

Page 3: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Motivation

• Dynamische Generierung von Dokumenten in verschieden Formaten und für verschiedene Clients

Page 4: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Motivation

• Trennung von Content, Style, Logik und Management Funktionen

Page 5: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Gliederung

• Motivation• Cocoon BasicsCocoon Basics• Einsatz in der Wirtschaft• Fazit• Literatur

Page 6: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Cocoon Basics

• Was ist Cocoon?Was ist Cocoon?• Funktionsprinzip• Extensible Server Pages (XSP)• Sitemap

Page 7: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Was ist Cocoon?

• XML Publishing Framework• Teil des Apache Projekts• Aufsatz für Webserver / Teil einer

lokalen Applikation• Bestandteile:

– Servlets– XML-Parser– XSL-Prozessoren

Page 8: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Cocoon Basics

• Was ist Cocoon?• FunktionsprinzipFunktionsprinzip• Extensible Server Pages (XSP)• Sitemap

Page 9: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Funktionsprinzip - Basismechansimen

- Abfertigung basierend auf Matchern und Selektoren

- Generierung von XML Dokumenten durch Generatoren

- Transformation von XML Dokumenten durch Transformatoren

- Aggregation von XML Dokumenten durch Aggregatoren

- Rendering von XML durch Serializers

Page 10: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

FunktionsprinzipPipeline Processing I

Einfachstes Beispiel:- Eingabe: gespeichertes XML-Dokument- Verarbeitung: XSL Stylesheet- Ausgabe: HTML

Page 11: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

FunktionsprinzipPipeline Processing II

Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage)

durch in XML eingebettete SQL Statements

Page 12: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Eingebettete SQL Statements in XML Datei file.xml

<guest-list><sql:execute-query>

<sql:query>SELECT CONCAT(lastNAME,‘,‘,firstName) as name, ageFROM guest WHERE status=ARRIVING;</sql:query>

</sql:execute-query></guest-list>

Page 13: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Beispielausgabe des SQL Transformers:

<guest-list><row-set>

<row><name>Bush, George</name><age>56</age>

</row><row>

<name>Jackson, Michael</name><age>42</age>

</row><row>

<name>Albert Einstein</name><age>105</age>

</row></row-set>

</guest-list>

Page 14: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

FunktionsprinzipPipeline Processing III

Verbindung von statischen Daten (file.xml) und dynamisch generierten (Datenbankanfrage, Internetanfrage an Web Service)

Page 15: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Cocoon Basics

• Was ist Cocoon?• Funktionsprinzip• Extensible Server Pages (XSP)Extensible Server Pages (XSP)• Sitemap

Page 16: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Extensible Server Pages (XSP)

• XML Dokument mit integrierter Logik• Ähnlich wie Java Server Pages (JSP)• XSP-Parser interpretiert Logik-

Bestandteile und wandelt sie in Code um

• Dokument Root Element: <xsp:page>• Weitere Tags: <xsp:logic>

<xsp:expression>

Page 17: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Extensible Server Pages (XSP)

<?xml version=“1.0“ encoding=“ISO-8859-1?“><xsp:page language=“java“ xmlns:xsp=„http://apache.org/xsp“><xsp:logic>static private int counter=0;private synchronized int count() {

return counter++;}</xsp:logic><page><p>I have been requested <xsp:expr>count()</xsp:expr> times.

</p></page></xsp:page>

Page 18: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Cocoon Basics

• Was ist Cocoon?• Funktionsprinzip• Extensible Server Pages (XSP)• SitemapSitemap

Page 19: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap

• XML Datei (Sitemap DTD)• Um neue Elemente erweiterbar• Enthält Konfigurationsinformationen

– Liste von Matchern– Liste von Generatoren– Liste von Transformern– Liste von Readern– Liste von Serializern– Liste von Selektoren– Liste von Processing Pipelines mit Match

Pattern

Page 20: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap - Matcher

• Matcht URI mit einem spezifizierten Pattern, um den Request mit einer bestimmten Processing Pipeline abarbeiten zu können

• Verschieden Arten von Matchern:– Wildcard Matcher (WildcardURIMatcher)– Regexp Matcher (RegexpURIMatcher)

Page 21: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Matcher II

Einträge in die Sitemap für verschiedene Matcher:

<map:matchers default=“wildcard“><map:matcher name=“wildcard“ factory=“org.apache.cocoon.matching.WildcardURIMatcher“/><map:matcher name=“regexp“ factory=“org.apache.cocoon.matching.RegexpURIMatcher“/>

</map:matchers>

Page 22: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Matcher III

Beispiel Matcher Eintrag in einer Pipeline:

<map:match pattern=“jsp/*“><map:generate type=“jsp“ src=“/docs/samples/jsp/{1}.jsp“/>...

</map:match><map:match pattern=“hello.pdf“>

...</map:match>

Page 23: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap - Generatoren

• Generiert eine XML Struktur aus einer Eingabequelle (Datei, Verzeichnis, Stream,..)

• Verschiedene Arten von Generators– Datei Generator– Verzeichnis Generator– XSP Generator– JSP Generator– Request Generator– ...

Page 24: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Generatoren II

Einträge in der Sitemap für verschiedene Generator

<map:generators default=“file“><map:generator

name=“file“src=“org.apache.cocoon.generation.FileGenerator“label=“content“/>

<map:generatorname=“directory“src=“org.apache.cocoon.generation.DirectoryGenerator“label=“content“/>

<map:generatorname=“serverpages“src=“org.apache.cocoon.generation.ServerPagesGenerator“label=“content“/>

<map:generator name=“request“src=“org.apache.cocoon.generation.RequestGenerator“/>

...</map:generators>

Page 25: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Generators III

Beispiel Generator Eintrag in einer Pipeline:

<map:match pattern=“hello.html“><map:generate src=“docs/samples/hello-page.xml“/><map:transform src=“stylesheets/page/simple-page2html.xsl“/><map:serialize type=“html“/>

</map:match>

Page 26: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap - Transformer

• Transformiert eine XML Struktur in eine andere XML Struktur

• Verschiedene Arten von Transformers– XSLT Transformer– Log Transformer– SQL Transformer– ...

Page 27: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Transformer II

Einträge in der Sitemap für verschiedene Transformer

<map:transformers default=“xslt><map:transformer name=“xslt“ src=“org.apache.cocoon.transformation.TraxTransformer“>

<use-request-parameters>false</use-request-parameters><use-browser-capabilities-db>false</use-browser-

capabilities></map:transformer><map:transformer name=“log“ src=“org.apache.cocoon.transformation.LogTransformer“/>...

</map:transformer>

Page 28: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Transformer III

Beispiel Transformer Eintrag in einer Pipeline:

<map:match pattern=“hello.html“<map:generate src=“docs/samples/hello-page.xml“/><map:transform src=“stylesheets/page/simple-page2html.xsl“/><map:serialize type=“html“/>

</map:match>

Page 29: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap - Serializer

• Gibt eine XML Eingabestruktur in einem anderem Format aus

• Verschieden Arten von Serializern:– HTML Serializer– FOP Serializer (PDF)– Text Serializer– XML Serializer

Page 30: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Serializer II

Einträge in der Sitemap für verschieden Serializer

<map:serializers default=“html“><map:serializer name=“xml“

mime-type=“text/xml“src=“org.apache.cocoon.serialization.XMLSerializer“/>

<map:serializer name=“html“mime-type=“text/html“

src=“org.apache.cocoon.serialization.HTMLSerializer“/><map:serializer name=“fo2pdf“

mime-type=“application/pdf“src=“org.apache.cocoon.serialization.FOPSerializer“/>

...</map:serializers>

Page 31: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Sitemap – Serializer III

Beispiel Serializer Eintrag in einer Pipeline:

<map:match pattern=“hello.html“><map:generate src=“docs/samples/hello-page.xml“/><map:transform src=“stylesheets/page/simple-page2html.xsl“/><map:serialize type=“html“/>

</map:match>

Page 32: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Gliederung

• Motivation• Wie funktioniert Cocoon?• Einsatz in der WirtschaftEinsatz in der Wirtschaft• Fazit• Literatur

Page 33: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Einsatz in der Wirtschaft

• Einige Beispiele:– Reporting System für die Deutsche

Bank– Internetabfrage der

Medizindatenbank von Novartis– Enterprise Portal der NASA– Diverse Webportale anderer Firmen

und Gruppen

Page 34: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Gliederung

• Motivation• Wie funktioniert Cocoon?• Einsatz in der Wirtschaft• FazitFazit• Literatur

Page 35: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Fazit - Vorteile

• Vorteile– Hohe Flexibilität– Modularität– Erweiterbarkeit- komplett Java und XML basiert- Plattformunabhängigkeit– Open Source

Page 36: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Fazit - Nachteile

• Nachteile– Einarbeitungszeit– Performanz– Verwendung von XSL– Design leidet

Page 37: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Gliederung

• Motivation• Wie funktioniert Cocoon?• Einsatz in der Wirtschaft• Fazit• LiteraturLiteratur

Page 38: XML Framework: Cocoon Seminar: XML für Fortgeschrittene Referent: Katrin Apel.

Literatur

• Cocoon Homepage– http://cocoon.apache.org

• Cocoon Tutorial– http://www.logabit.com/cocoontutorial.php– http://wiki.cocoondev.org/downloads/

Cocoon.pdf

• Artikel bei XML.com– http://www.xml.com/pub/a/2002/07/10/cocoon2.html– http://www.xml.com/pub/a/2002/07/24/xmlportal.html

• Java & XML (O‘Reilly)