Demolsky Markus Hiebler Thomas Pindhofer Walter

Slides:



Advertisements
Ähnliche Präsentationen
interaktiver Web Service Workflows
Advertisements

Allgemeines Name: Ursprünglich: „Personal Home Page Tools“
Martin Köllner XMLCompany XML-Datenbanken Xindice als Datenquelle einer Website im Zusammenspiel mit Cocoon und authentic TM.
Druck / Ausgaben unter LSF
eXist Open Source Native XML Database
Java 2 Enterprise Edition (J2EE)
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Daniel Höfler Markus Thurner XMLApplicationPlatform Siemens OpenStage 60/80.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
DOM (Document Object Model)
Web 3.0 – Programmierung – Semantic Web / CIDOC CRM
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Information und Technik Nordrhein-Westfalen Das personalisierte Portal Düsseldorf, Das personalisierte Portal.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Speicherung von XML- Dokumenten als Large Objects.
Einführung XML XML Einführung Andreas Leicht.
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
EXtensible Server Pages von Belrhiti El mostafa. Inhalt Was ist XSP ? Wichtige XSP Tags Erstellungsmöglichkeiten Die Basis der XSP.
Projekt Web Engineering
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
NetUSE Web Application Framework Kai Voigt NetUSE AG 28. Februar 2003.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
© data2type 2005, 1 Publishing mit XML Einsatz von XSL für das multimediale, automatisierte Publishing.
Tobias Högel & Dennis Böck,
1 Grundlagen und Anwendung der Extensible Markup Language (XML ) Peter Buxmann Institut für Wirtschaftsinformatik Johann Wolfgang Goethe-Universität Frankfurt.
COCOON. Cocoon ist in erster Linie ein XML-Publishing System. eine oder mehreren XML-Dokument(en) & dem zugehörigen XSL- Dokument(en) ein beliebiges.
Systementwicklungsprojekt:
YouTube5 .0 Projektpräsentation
SEP Halgurt Mustafa Ali Can Önder Marius Morawski Matthias Seidl Themen: Integration von RDQL und OWQL innerhalb des Apache Cocoon Frameworks Semantische.
Coccon das Web-XML-Publishing System Thomas Haller.
Einführung Servlets/JSPs
Martin Köllner XMLCompany Cocoon XMLCompany Apache Cocoon Web Publishing Framework.
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Java für Fortgeschrittene
Sesame Florian Mayrhuber
XML-Serverpages Vortrag im Rahmen des Seminars XML-Technologien Tobias Faessler.
XSL und XSLT1 eXstensible Stylesheet Language und eXstensible Stylesheet Language Transformation.
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
XML IV: Cocoon 2.
VU Semistrukturierte Daten 1
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Oliver Spritzendorfer Thomas Fekete
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
XML (Extensible Markup Language)
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Einführung in PHP 5.
Web 2.0 & AJAX (A)sysnchrones (J)avaScript (A)nd (X)ML
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne XML One 2000.
Drucken mit XSL-FO DaimlerChrysler  Drucken von Webseiten
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
W W W - World Wide Web. Das World Wide Web kommt aus dem Englischen und bedeutet ‚Weltweites Netz‘ ist ein über das Internet abrufbares Hypertext-System.
Bern University of Applied Sciences Engineering and Information Technology Documentation generator for XML-based description standards Ausgangslage: Die.
1 Wolfgang Wiese, Regionales RechenZentrum Erlangen WCMS 3. August 2000 Wolfgang Wiese RRZE / Lehrstuhl für Informatik VII
JQuery: New Wave Javascript Seite 1 jQuery: New Wave Javascript Jörn Zaefferer TIMETOACT Software & Consulting GmbHT: Im Mediapark 2F:
Java und XML Kurzvortrag von Tim Steffens und Andreas Klein Cocoon 2.
Stefan Metzlaff1 Cocoon Stefan Metzlaff
XSLT I Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Manfred Thaller Referentin: Elisabeth Chang.
© WZL/Fraunhofer IPT Entwicklung einer Profilbörse für Konfigurationen von Smartphones Vortrag der Seminararbeit von Patrick Posor Aachen, den
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
 Präsentation transkript:

Demolsky Markus Hiebler Thomas Pindhofer Walter XML Framework Demolsky Markus Hiebler Thomas Pindhofer Walter

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

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

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

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

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

Sitemap – Struktur 1/3

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

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

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

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>

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

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

Matcher - Beispiel Definition: Ausführung: <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 >

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

Selektoren Matcher mit Verzweigungen Viele vordefinierte Selektoren Verschiedene Logiken durch: <map:when/> <map:otherwise/>

Selektoren - Beispiel Definition: Ausführung: <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>

Selektoren - Auflistung BrowserSelector CodeSelector HostSelector ParameterSelector HeaderSelector RequestSelector SessionSelector

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}"/>

Actions - Beispiel <map:act type="myAction"> 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>

Actions - Auflistung Database Actions Sendmail Action Session Action

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

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"/>

Generatoren - Auflistung Default: File Generator Core: Director Generator MP3directory Generator Request Generator ... Optional: HTML Generator PHP Generator …

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

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"/>

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

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

Serializer - Beispiel Definition: Ausführung: <map:serializers> <map:serializer name="html" mime-type="text/html„ src="org.apache.cocoon.serialization.HTMLSerializer"/> </map:serializers> Ausführung: <map:serialize type="html" />

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 …

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

Reader - Beispiel Definition: Ausführung: <map:read type="resource" <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"/>

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)

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

Control Flow – Beispiel 1/3 Implementierung eines einfachen Taschenrechners Komponenten: Sitemap.xmap calculatorController.js benötigten Html-Dateien

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>

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()}); }

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

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

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>

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>

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

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)

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

Funktionsweise von CForms

Binding Framework Arbeitet mit verschiedenen Objekten - JavaBeans - XML-Dokumente - JavaScript Objekte Ermöglicht durch JXPath

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

Cocoon Prototyp 2/2 - Layers

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!!!

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