XML Framework: Cocoon

Download Report

Transcript XML Framework: Cocoon

XML Framework: Cocoon
Seminar: XML für Fortgeschrittene
Referent: Katrin Apel
Gliederung
•
•
•
•
•
Motivation
Cocoon Basics
Einsatz in der Wirtschaft
Fazit
Literatur
Motivation
• Dynamische Generierung von
Dokumenten in verschieden Formaten
und für verschiedene Clients
Motivation
• Trennung von Content, Style, Logik und
Management Funktionen
Gliederung
•
•
•
•
•
Motivation
Cocoon Basics
Einsatz in der Wirtschaft
Fazit
Literatur
Cocoon Basics
•
•
•
•
Was ist Cocoon?
Funktionsprinzip
Extensible Server Pages (XSP)
Sitemap
Was ist Cocoon?
• XML Publishing Framework
• Teil des Apache Projekts
• Aufsatz für Webserver / Teil einer
lokalen Applikation
• Bestandteile:
– Servlets
– XML-Parser
– XSL-Prozessoren
Cocoon Basics
•
•
•
•
Was ist Cocoon?
Funktionsprinzip
Extensible Server Pages (XSP)
Sitemap
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
Funktionsprinzip
Pipeline Processing I
Einfachstes Beispiel:
- Eingabe: gespeichertes XML-Dokument
- Verarbeitung: XSL Stylesheet
- Ausgabe: HTML
Funktionsprinzip
Pipeline Processing II
Verbindung von statischen Daten
(file.xml) und dynamisch generierten
(Datenbankanfrage)
durch in XML eingebettete SQL
Statements
Eingebettete SQL Statements in XML Datei file.xml
<guest-list>
<sql:execute-query>
<sql:query>
SELECT CONCAT(lastNAME,‘,‘,firstName) as name, age
FROM guest WHERE status=ARRIVING;
</sql:query>
</sql:execute-query>
</guest-list>
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>
Funktionsprinzip
Pipeline Processing III
Verbindung von statischen Daten
(file.xml) und dynamisch generierten
(Datenbankanfrage, Internetanfrage an
Web Service)
Cocoon Basics
•
•
•
•
Was ist Cocoon?
Funktionsprinzip
Extensible Server Pages (XSP)
Sitemap
Extensible Server Pages
(XSP)
• XML Dokument mit integrierter Logik
• Ähnlich wie Java Server Pages (JSP)
• XSP-Parser interpretiert LogikBestandteile und wandelt sie in Code
um
• Dokument Root Element: <xsp:page>
• Weitere Tags: <xsp:logic>
<xsp:expression>
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>
Cocoon Basics
•
•
•
•
Was ist Cocoon?
Funktionsprinzip
Extensible Server Pages (XSP)
Sitemap
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
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)
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.WildcardURIMatche
r“/>
<map:matcher name=“regexp“
factory=“org.apache.cocoon.matching.RegexpURIMatcher“
/>
</map:matchers>
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>
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
...
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:generator
name=“directory“
src=“org.apache.cocoon.generation.DirectoryGenerator“
label=“content“/>
<map:generator
name=“serverpages“
src=“org.apache.cocoon.generation.ServerPagesGenerator“
label=“content“/>
<map:generator name=“request“
src=“org.apache.cocoon.generation.RequestGenerator“/>
...
</map:generators>
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/simplepage2html.xsl“/>
<map:serialize type=“html“/>
</map:match>
Sitemap - Transformer
• Transformiert eine XML Struktur in eine
andere XML Struktur
• Verschiedene Arten von Transformers
– XSLT Transformer
– Log Transformer
– SQL Transformer
– ...
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-browsercapabilities>
</map:transformer>
<map:transformer name=“log“
src=“org.apache.cocoon.transformation.LogTransformer“/>
...
</map:transformer>
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/simplepage2html.xsl“/>
<map:serialize type=“html“/>
</map:match>
Sitemap - Serializer
• Gibt eine XML Eingabestruktur in einem
anderem Format aus
• Verschieden Arten von Serializern:
– HTML Serializer
– FOP Serializer (PDF)
– Text Serializer
– XML Serializer
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>
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/simplepage2html.xsl“/>
<map:serialize type=“html“/>
</map:match>
Gliederung
•
•
•
•
•
Motivation
Wie funktioniert Cocoon?
Einsatz in der Wirtschaft
Fazit
Literatur
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
Gliederung
•
•
•
•
•
Motivation
Wie funktioniert Cocoon?
Einsatz in der Wirtschaft
Fazit
Literatur
Fazit - Vorteile
• Vorteile
– Hohe Flexibilität
– Modularität
– Erweiterbarkeit
- komplett Java und XML basiert
- Plattformunabhängigkeit
– Open Source
Fazit - Nachteile
• Nachteile
– Einarbeitungszeit
– Performanz
– Verwendung von XSL
– Design leidet
Gliederung
•
•
•
•
•
Motivation
Wie funktioniert Cocoon?
Einsatz in der Wirtschaft
Fazit
Literatur
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)