+ All Categories
Home > Documents > Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Date post: 06-Apr-2015
Category:
Upload: fedde-laufer
View: 107 times
Download: 0 times
Share this document with a friend
50
Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework
Transcript
Page 1: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Demolsky MarkusHiebler ThomasPindhofer Walter

XML Framework

Page 2: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Agenda History Was ist Cocoon? Sidemap Pipelines Komponenten Control Flow XSP Cocoon Forms & Binding Framework Praktisches Beispiel anhand eines Prototyp Benutzung Cocoon und zukünftige Ziele

Page 3: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

History 1998 von Stefano Mazzocchi entwickelt Designziel Klare Trennung von Inhalt und Layout 1999 - Veröffentlichung Cocoon 1.x 2001 - Veröffentlichung Cocoon 2 Einführung der Sitemap und SAX-event basierter

Pipelines Top Level Project der Apache Software Fondation

Page 4: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Was ist Cocoon? XML-Publishing System Input im Format XML und XSL Cocoon arbeitet intern ausschließlich mit XML Output in beliebiges Format und Medium Trennung von Daten, Layout und Logik

Page 5: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Benötigte Elemente Sitemap Datenquelle Layoutbeschreibung Core: Kernanwendung Cocoon: Zusatzmodule Servlet Container

Page 6: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Die Sitemap Kommandozentrale von Cocoon Zentrales Dokument in einer Cocoon-Anwendung XML-Datei (sitemap.xmap) Konfiguration von Komponenten und Aufrufe Modellierung logischer Abläufe (=Pipelines) Wird in eine Java Klasse übersetzt

Page 7: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Sitemap – Struktur 1/3

Struktur der Sitemap

Components

Resources

Views

Action-sets

Flow

Pipelines

<?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/ cocoon/sitemap/1.0"> <map:components/> <map:views/> <map:resources/> <map:action-sets/> <map:flow/> <map:pipelines/> </map:sitemap>

Page 8: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Sitemap – Struktur 2/3 <map:components/>

Registrierte Komponenten die von der Sitemap verwendet werden. Erzeugen, lesen und transformieren XML-Strukturen

<map:views/>,<map:resources/> und<map:action-set/>Gruppieren registrierte Komponenten und stellen Funktionalitäten zur Verfügung, die aus einer Pipeline verwendet werden können

Page 9: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Sitemap – Struktur 3/3 <map:flow/>

Registrierung der benötigten Flowscripts <map:pipelines/>

Wichtigster Bereich Definition von Regeln XML-Dokument wird mit Hilfe der Komponenten erzeugt, konvertiert und in ein bestimmtes Format ausgegeben

Page 10: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Sitemap - Pipelines Cocoon basiert auf dem Pipeline-Prinzip Eine Pipeline besteht aus

einem Generator (Einlesen der XML-Datei) 0-n Transformatoren (Umwandlung der XML-Datei) einem Serializer (Ausgabe der neuen Datei)

Matcher und Selectoren definieren den Ablauf

Page 11: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Sitemap – Beispieldatei<?xml version="1.0" encoding="UTF-8"?><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

<map:components> <map:generators> <map:generator name="serverpages"

src="org.apache.cocoon.generation.ServerPagesGenerator"/> </map:generators> </map:components>

<map:pipelines> <map:pipeline> <map:match pattern="index.html"> <map:generate type="serverpages" src="logic.xsp"/> <map:transform type="xslt" src="style.xsl"/> <map:serialize type="html"/> </map:match> </map:pipeline> </map:pipelines></map:sitemap>

Page 12: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Komponenten Definition der „Werkzeuge“ Vordefiniert oder selbst erstellt (Java) Gliederung der Komponenten:

Bearbeitungs-Komponenten Logik-Komponenten

Page 13: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Matcher Muster überprüfen Muster wird mit pattern übergeben Viele vordefinierte Matcher Beliebig viel, jedoch eindeutiger Name

Page 14: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Matcher - Beispiel Definition:

<map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>

Ausführung:<map:match type="wildcard" pattern="index.html">

<!– Hier könnte ihre Werbung stehen -->

<!– Platz für Anweisungen -->

</map:match >

Page 15: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Matcher - Auflistung WildCard URI matcher Regexp URI matcher Request parameter matcher Wildcard request parameter matcher Wildcard session parameter matcher

Page 16: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Selektoren Matcher mit Verzweigungen Viele vordefinierte Selektoren Verschiedene Logiken durch:

<map:when/> <map:otherwise/>

Page 17: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Selektoren - Beispiel Definition:

<map:selector name="browser" src="org.apache.cocoon.selection.BrowserSelector">

<browser name="explorer" useragent="MSIE"/> <browser name="netscape" useragent="Mozilla"/>

</map:selector>

Ausführung:<map:select type="browser">

<map:when test="netscape"> <!-- Anweisungen für Netscape -->

</map:when> <map:otherwise>

<!-- Anweisungen für alle anderen Browser--> </map:otherwise>

</map:select>

Page 18: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Selektoren - Auflistung BrowserSelector CodeSelector HostSelector ParameterSelector HeaderSelector RequestSelector SessionSelector

Page 19: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Actions Ausgeführter Java-Code Klassen befolgen gewisse Richtlinien Beliebig komplexer Code möglich Zugriff auf Request- oder Session-Attribute Action Parameterzugriff:

<map:read src="{filename}"/>

Page 20: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Actions - Beispiel Definition:

<map:actions>

<map:action name="myAction" src="foo.bar.MyAction"/>

</map:actions>

Ausführung:

<map:act type="myAction">

<!-- Nur ausgeführt, wenn eine Java-Map zurück geliefert wird -->

</map:act>

Page 21: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Actions - Auflistung Database Actions Sendmail Action Session Action

Page 22: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Generatoren Dient zum Einlesen von Daten Beliebige Daten in SAX-Stream verwandeln

XML – Dateien Daten über HTTP Daten von Festplatte

Nicht-XML-Strukturen werden bestmöglich „umgewandelt“ weitergegeben

Page 23: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Generatoren - Beispiel Definition:

<map:generators> <map:generator name="file"

src="org.apache.cocoon.generation.FileGenerator"/> </map:generators>

Ausführung:

<map:generate type="file" src="document.xml"/>

Page 24: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Generatoren - Auflistung Default:

File Generator Core:

Director Generator MP3directory Generator Request Generator ...

Optional: HTML Generator PHP Generator …

Page 25: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Transformatoren Umwandlung SAX-Stream in einen anderen SAX-Stream Gesteuert über XSLTs

Page 26: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Transformatoren - Beispiel Definition: <map:transformers>

<map:transformator name="xsl"

src="org.apache.cocoon.transformation.TraxTransformer"/>

</map:transformers>

Ausführung: <map:transform type="xsl" src="document2html.xsl"/>

Page 27: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Transformatoren - Auflistung XSLT Transformer (Default transformer) Fragment Extractor Transformer I18n Transformer Log Transformer SQL Transformer Filter Transformer Read DOM Session Transformer …

Page 28: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Serializer Umwandeln des Streams Output hat binäres oder textuelles Format Steht immer am Ende einer Pipeline Meist letzter Schritt

Page 29: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Serializer - Beispiel Definition: <map:serializers>

<map:serializer name="html" mime-type="text/html„ src="org.apache.cocoon.serialization.HTMLSerializer"/>

</map:serializers>

Ausführung: <map:serialize type="html" />

Page 30: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Serializer - Auflistung HTML Serializer (The default serializer) XHTML Serializer XML Serializer Text Serializer HSSF (XLS) Serializer (optional) PDF Serializer (optional) PS Serializer (optional) PCL Serializer (optional) WAP/WML Serializer SVG Serializer SVG/XML Serializer …

Page 31: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Reader Lesen und Ausgeben von Daten Kombination von Generatoren und Serializern Kein Umweg über Transformatoren Keine Umwandlung in SAX-Stream zB.: Bilder oder reiner Text

Page 32: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Reader - Beispiel Definition: <map:readers>

<map:reader name="resource"

src="org.apache.cocoon.reading.ResourceReader"/>

</map:readers>

Ausführung: <map:read type="resource"

src="resources/irgendeinbild.jpg"

mime-type="image/jpg"/>

Page 33: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Reader - Auflistung AxisRPC Reader (Optional: Axis block) Database Reader (Optional: Database block) Directory ZIP Archiver (Scratchpad) Image Reader JSP Reader (Optional: JSP block) Resource Reader (The default reader)

Page 34: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Control Flow Bestimmt die Logik von Cocoon Definiert Ablauf der Webanwendung Hält Eingaben für die Dauer der Anwendung persistent Verwendet Javascript als Sprache

Page 35: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Control Flow – Beispiel 1/3 Implementierung eines einfachen

Taschenrechners Komponenten:

Sitemap.xmap calculatorController.js benötigten Html-Dateien

Page 36: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Control Flow – Beispiel 2/3 Sitemap.xmap

<map:flow language=”javascript”><map:script src=”calculatorController.js”/>

</map:flow>

<map:pipelines><map:pipeline>

<map:match pattern=”calculator/index.html”><map:call function=”calculator”/></map:call>

</map:match></map:pipeline>

</map:pipelines>

Page 37: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Control Flow – Beispiel 3/3 calculatorController.js

function calculator() {var a,b,operator;cocoon.sendPageAndWait(”getA.html”);a=cocoon.request.get(”a”);cocoon.sendPageAndWait(”getB.html”);b=cocoon.request.get(”b”);cocoon.sendPageAndWait(”getOperator.html”);operator=cocoon.request.get(”op”);try {

if(operator==”plus”) cocoon.sendPage(”result.html”,{result: a + b });else cocoon.sendPage(”result.html”,{result: a − b }) ;

}catch(exception) { cocoon.sendPage(”error.html”,{message: ”Operation failed: ” +

exception.toString()}); }}

Page 38: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Control Flow - Continuations Zustand eines Programms wird festgehalten Beispiel sendPageAndWait()

Programm hält an Wartet bis es Informationen bekommt Submit im HTML-Formular lässt das Programm

fortsetzen

Page 39: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

XSP – Extensible Server Page

Bettet Logik in ein XML-Dokument ein XSP Dokument wird durch XSP Parser

interpretiert Sprachenunabhängig, meist aber Java Control Flow löst XSP immer mehr ab

Page 40: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

XSP – Beispiel 1/2 HelloWorld.xsp

<?xml version="1.0" encoding="ISO-8859-1"?><xsp:page language="java" xmlns:xsp="http://apache.org/xsp">

<xsp:logic>private String S = “Hello World“;private String add() { return S;

}</xsp:logic><page>

<title>Überraschung, Hello World</title><content>

Typisch, <xsp:expr>add()</xsp:expr></content>

</page>

</xsp:page>

Page 41: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

XSP – Beispiel 2/2 Sitemap.xmap

<map:generators> <map:generator name="serverpages"

src="org.apache.cocoon.generation.ServerPagesGenerator"/></map:generators>...<map:pipeline> <map:match pattern=„HelloWorld"> <map:generate type="serverpages"

src=„HelloWorld.xsp" /> <map:serialize type="xml" /> </map:match></map:pipeline>...

Page 42: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Cocoon Forms (CForms) Basis für interaktive Web-Applikationen Zur Zeit noch in Beta Version Data Binding, Validation, Datentypen AJAX Support Trennung von Datenmodell und Formmodell

2 Bestandteile Form Model Form Template

Page 43: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

CForms – Form Model Beschreibung der Struktur der Form

(Form-Definition) KEINE Präsentationsdaten Besteht aus einer Menge von Widgets Widget ist ein Objekt:

- Kann seinen Zustand aus dem Request lesen- Kann sich selbst validieren- Besitzt XML-Repräsentation (zB.: Textfeld)

Page 44: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

CForms – Form Template Definiert die Präsentation Legt fest wo die einzelnen Widgets der Form-

Definition platziert werden Zusammenführung mit dem Form Model im

Forms Template Transformer

Page 45: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Funktionsweise von CForms

Page 46: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Binding Framework Arbeitet mit verschiedenen Objekten

- JavaBeans- XML-Dokumente- JavaScript Objekte

Ermöglicht durch JXPath

public class Product { private Integer id; private String name; private long sellPrice; private long purchasePrice; private ProductGroup group;

/** * GET AND SET methods */

<?xml version="1.0"?><fb:context xmlns:fb="http://apache.org/cocoon/forms/1.0#binding" path="/" > <!-- MAPPING VON JAVA BEAN ZU DEFINITION --> <fb:value id="name" path="name"/> <fb:value id="purchaseprice" path="purchasePrice"/> <fb:value id="sellprice" path="sellPrice"/></fb:context>

Page 47: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Cocoon Prototyp 1/2 Produktmanagement Anlage und Bearbeitung von Produkten Demonstriert die Basis-Konzepte von Cocoon

Page 48: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Cocoon Prototyp 2/2 - Layers

Page 49: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Benutzen von Cocoon: Mit kleinen Problemen beginnen Bestehende Blocks durchsuchen XML (XSLT, XPath,..) lernen Verwende Caching (guter Support von Cocoon) Für längere Projekte verwenden Logik von den pipelines und XSLTs fernhalten Trennung von Design und Content!!!

Page 50: Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework.

Zukunft von Cocoon Kleiner Kern mit vielen performanten „Blocks“ Einfacher für simple Aufgaben Steigern Performance Erleichterung Einstieg Modularität verstärken Verstärkter Einbau von AJAX


Recommended