xml iv: cocoon 2. the reactor pattern das reactor pattern ermöglicht demultiplexing und verteilung...

Post on 06-Apr-2015

108 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

XML IV: Cocoon 2

The Reactor PatternDas Reactor Pattern ermöglicht Demultiplexing und Verteilung von Service Requests bei ereignisgesteuerten Anwendungen.

Handleowns

dispatches*

notifies**

handle set

Reactor

handle_events()register_handler()remove_handler()

Event Handler

handle_event ()get_handle()

Concrete Event Handler A

handle_event ()get_handle()

Concrete Event Handler B

handle_event ()get_handle()

SynchronousEvent Demuxer

select ()

<<uses>>

The Reactor Pattern

: Main Program : Concrete

Event Handler

: Reactor : Synchronous

Event

Demultiplexer

register_handler()

get_handle()

handle_events()select()

handle_event()

Handle

Handles

Handles

Con. Event

HandlerEvents

service()

event

Architektur

Servlet Container

Webserver

DBwml html pdf

Serializer Transform Generator

Pyramiden Modell von Web Verträgen

Management: Pfade, Verteilung, Regeln, Organisation

Logic: dynamische Generierung

Content: Seiten Inhalt

Style: Layout

Grundkonzept Pipeline

Umleitung nach Muster

Erzeugung des XML Dokuments

Transformation

Ausgabe, Erzeugung von spez. Formaten (html, pdf, wml, usw.)

Pipeline

Architektur

Core:configuration,threading, context, caching, pipeline handling,program generation, compilation, loading and execution.

Components:generators, transformers

matchers, serializers

Action

JAVA Pro

gram

Sitemap<?xml version="1.0"?> <map:sitemap xmlns:map=

"http://apache.org/cocoon/sitemap/1.0">

<map:components/>

<map:views/>

<map:resources/>

<map:pipelines/>

<map:action-sets/>

</map:sitemap>

Sitemap II

<map:components> <map:generators/> <map:transformers/> <map:serializers/> <map:readers/> <map:selectors/> <map:matchers/> <map:actions/>

</map:components>

Action

JAVA Pro

gram

Anwendung Legi

1.) Legi Daten von Studenten in

ausgeben.

xml html legi_html.xsl

xml pdf legi_pdf.xsl

xml ps ?

xml wml legi_wml.xsl

Sitemap Legi I<?xml version="1.0"?><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <!-- =========================== Components ================================ --> <map:components> <map:generators default="file"/> <map:transformers default="xslt"/> <map:readers default="resource"/> <map:serializers default="html"/> <map:selectors default="browser"/> <map:matchers default="wildcard"/>

<map:serializer name="fo2ps" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/postscript"/> <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/pdf"/> <map:serializer name="wap" mime-type="text/vnd.wap.wml" src="org.apache.cocoon.serialization.XMLSerializer"> <doctype-public>-//WAPFORUM//DTD WML 1.1//EN</doctype-public> <doctype-system>http://www.wapforum.org/DTD/wml_1.1.xml</doctype-system> <encoding>ASCII</encoding> <omit-xml-declaration>yes</omit-xml-declaration> </map:serializer> </map:components> <!-- =========================== Pipelines ================================= -->

Sitemap Legi II… <map:match pattern="*.*.html"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_html.xsl"/> <map:serialize type="html"/> </map:match> <map:match pattern="*.*.pdf"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_pdf.xsl"/> <map:serialize type="fo2pdf"/> </map:match> <map:match pattern="*.*.ps"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_pdf.xsl"/> <map:serialize type="fo2ps"/> </map:match> <map:match pattern="*.*.wml"> <map:generate src="xml/{1}.{2}.xml"/> <map:transform src="xsl/legi_wml.xsl"/> <map:serialize type="wap"/> </map:match> …

Anwendung Portalseite

Alle Dienste einer Seite sollen aufgelistet werden.

1.) ““ welcome

2.) welcome samples.xml simple-samples2html.xsl html

3.) Sitemap für Links

samples.xml

<?xml version="1.0" encoding="iso-8859-1"?>

<samples xmlns:xlink="http://www.w3.org/1999/xlink">

<group name="Multimedia Hello World"> <sample name="HTML" href="hello.html"> This is a very simple demonstration of how to use

Cocoon. A simple XML page is transformed into an HTML page. </sample> <sample name="WML" href="hello.wml"> Now something more juicy: the exact same page is

translated into WAP WML. </sample><sample name="SVG" href="hello.svg"> Need a fancier look? No problem, SVG is your friend. </sample>…

Sitemap <map:pipeline> <map:match pattern=""> <map:redirect-to uri="welcome"/> </map:match>

<map:match pattern="welcome"> <map:generate src="docs/samples/samples.xml"/> <map:transform src="stylesheets/simple-samples2html.xsl"/> <map:serialize/> </map:match>

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

<map:match pattern="hello.wml"> <map:generate src="docs/samples/hello-page.xml"/> <map:transform src="stylesheets/page/simple-page2wml.xsl"/> <map:serialize type="wap"/> </map:match>

Browser spezifische Seite

<map:select> <map:when test="wap"> <map:transform src="stylesheets/simple-samples2wap.xsl"/> </map:when> <map:when test="netscape"> <map:transform src="stylesheets/simple-samples2netscape.xsl"/> </map:when> <map:otherwise> <map:transform src="stylesheets/simple-samples2html.xsl"/> </map:otherwise> </map:select>

eXtensible Server Pages (XSPs)

Analog zu JSP

nur Trennung von

• Code

• Logic

• Presentation

eXtensible Server Pages (XSPs)

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

XSP Bsp. II<?xml version="1.0" encoding="ISO-8859-1"?><xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:xsp-request="http://apache.org/xsp/request/2.0" xmlns:log="http://apache.org/xsp/log/2.0" xmlns:capture="http://apache.org/cocoon/capture/1.0">

<page> <log:logger name="xsp-sample" filename="xsp-sample.log"/> <log:debug>jax: start jax page</log:debug>

<title>A Simple XSP Page</title>

<content>

<capture:fragment-variable name="page_part"> <para>These 2 paragraphs were generated at the start of the XSP, and captured for insertion at the

end.</para>

<para>Brought to you by Cocoon2 at <xsp:expr>new Date()</xsp:expr>.</para> </capture:fragment-variable> <para>I was requested as the URI: <b><xsp-request:get-uri as="xml"/></b></para>

XSP Bsp. II <para>The following list was dynamically generated:</para> <ul> <xsp:logic> <![CDATA[ for (int i=0; i<3; i++) { ]]> <li> Punkt: <xsp:expr>i</xsp:expr> </li> <![CDATA[ } ]]> </xsp:logic> </ul>

<xsp-request:get-parameter-values name="name"/> <xsp-request:get-parameter-names/> <para> Header "user-agent" as String: <xsp-request:get-header name="user-agent"/> </para> <xsp:expr>page_part</xsp:expr> </content> <log:debug>Processing the end of the JAX page</log:debug> </page></xsp:page>

Links

http://carnagepro.com/samples/

http://www.snow-news.com/

http://miwis.framkom.se/cocoon/documents/livesites.html

Praktikum

1. Installation Cocoon

2. Legi mit pdf,html, wml Ausgabe

3. einfach XSP-Seite

Download Tomcat 4.0

Installieren

Ordner Struktur

Download Cocoon

Extracting cocoon.war

Apache Tomcat 4.0\webapps

Test: Start Tomcat

top related