1 / 50

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.

miracle
Télécharger la présentation

Demolsky Markus Hiebler Thomas Pindhofer Walter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML Framework Demolsky Markus Hiebler Thomas Pindhofer Walter

  2. 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

  3. 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

  4. 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

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

  6. 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

  7. Sitemap – Struktur 1/3

  8. 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

  9. 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

  10. 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

  11. 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>

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

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

  14. 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 >

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

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

  17. 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>

  18. Selektoren - Auflistung • BrowserSelector • CodeSelector • HostSelector • ParameterSelector • HeaderSelector • RequestSelector • SessionSelector

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

  20. 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>

  21. Actions - Auflistung • Database Actions • Sendmail Action • Session Action

  22. 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

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

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

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

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

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

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

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

  30. 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 • …

  31. 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

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

  33. 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)

  34. 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

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

  36. 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>

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

  38. 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

  39. 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

  40. 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>

  41. 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> ...

  42. 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

  43. 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)

  44. 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

  45. Funktionsweise von CForms

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

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

  48. Cocoon Prototyp 2/2 - Layers

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

  50. 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

More Related