giacomo 01/11/25 23:15:13
Modified: documentation/xdocs/userdocs/concepts Tag: cocoon_20_branch
sitemap.xml
documentation/xdocs/userdocs/generators Tag:
cocoon_20_branch book.xml generators.xml
Added: documentation/xdocs/userdocs/generators Tag:
cocoon_20_branch error-generator.xml
Log:
Added Error Generator
Submitted by: Bernhard Huber <[EMAIL PROTECTED]>
Revision Changes Path
No revision
No revision
1.1.2.5 +321 -0 xml-cocoon2/documentation/xdocs/userdocs/concepts/sitemap.xml
Index: sitemap.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/documentation/xdocs/userdocs/concepts/sitemap.xml,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- sitemap.xml 2001/11/19 11:59:19 1.1.2.4
+++ sitemap.xml 2001/11/26 07:15:12 1.1.2.5
@@ -8,6 +8,7 @@
<person name="Giacomo Pati" email="[EMAIL PROTECTED]"/>
<person name="Stefano Mazzocchi" email="[EMAIL PROTECTED]"/>
<person name="Carsten Ziegeler" email="[EMAIL PROTECTED]"/>
+ <person name="Bernhard Huber" email="[EMAIL PROTECTED]"/>
</authors>
</header>
@@ -447,6 +448,326 @@
</s1>
<s1 title="Pipelines">
+ <s2 title="Introduction">
+ <p>
+ Cocoon relies on the pipeline model: an XML document is pushed through a
pipeline,
+ that exists in several transformation steps of your document.
+ Every pipeline begins with a generator, continues with zero or more
transformers,
+ and ends with a serializer. Beside this normal processing each pipeline
+ may define its own error handling, too.
+ </p>
+ <p>
+ Beside using the various components, you can use matchers, and selectors to
choose a
+ specific pipeline processing. Aggregation allows you to build a hierarchy of
pipelines.
+ </p>
+ <p>
+ Using views allows you to define exit points in a pipeline.
+ </p>
+ </s2>
+ <s2 title="Define a Pipeline">
+ <p>
+ Defining a pipeline is simple.
+ Just write a <code>map:pipeline</code> element inside the
+ <code>map:pipelines</code> element.
+ </p>
+ <fixme author="Bernhard Huber">
+ Explain optional attribute <code>internal-only</code>
+ </fixme>
+
+ </s2>
+ <s2 title="Pipeline Elements">
+ <p>
+ Having defined a pipeline you can use following sidemap elements:
+ </p>
+ <table>
+ <tr><th>Element</th><th>Description</th></tr>
+ <tr><td>map:match</td><td>Selects pipeline processing depending on
matching</td></tr>
+ <tr><td>map:select, map:when, map:otherwise</td><td>Selects pipeline
processing depending on selecting</td></tr>
+ <tr><td>map:mount</td><td>Mounts a sub sitemap</td></tr>
+ <tr><td>map:redirect-to</td><td>Redirects to a another pipeline</td></tr>
+ <tr><td>map:parameter</td><td>Defines additional parameters for the sitemap
components</td></tr>
+ <tr><td>map:act</td><td>Peform action processing</td></tr>
+ <tr><td>map:generate</td><td>Defines the generation step</td></tr>
+ <tr><td>map:aggregate, map:part</td><td>Defines an alternate generation step
by mergine pipelines</td></tr>
+ <tr><td>map:transform</td><td>Defines zero or more transformation
steps</td></tr>
+ <tr><td>map:serialize</td><td>Defines the final serialization step</td></tr>
+ <tr><td>map:handle-errors</td><td>Handles processing errors</td></tr>
+ </table>
+ <p>
+ The usage of these sitemap elements is explained in the following sections in
more detail.
+ </p>
+ </s2>
+
+ <s2 title="Matching">
+ <p>
+ These powerful sitemap components allow Cocoon to associate a pure "virtual"
URI space
+ to a given set of instructions that describe how to generate,
+ transform and present the requested resource(s) to the client.
+ </p>
+ <p>See also
+ <link href="matchers_selectors.html">Implementing Matchers And
Selectors</link>
+ </p>
+ </s2>
+
+ <s2 title="Selecting And Testing">
+ <p>
+ Selectors in Apache Cocoon have a role similar to matchers while being more
flexible.
+ Like matchers they are designed to test something against a part of the
+ environment (the request URI, headers, cookies and so on), but unlike matchers
they
+ can be active decision driving components.
+ A matcher allows only for simple "yes/no" decisions: the match can be
succesful or not,
+ if it is the pipeline is executed, if not it's simply ignored.
+ Selectors go a step further allowing for more complex use cases,
+ where there is need for a decision to be made according to a multiple chance
scenario.
+ In short you can think of matchers as an "if" statement, while selectors have
+ all the power of an "if-else if-else" or "switch-case" construct.
+ The selector syntax is similar will be familiar to people
+ using the XSLT <code><![CDATA[<xsl:test> statement]]></code>.
+ </p>
+ <p>See also
+ <link href="matchers_selectors.html">Implementing Matchers And
Selectors</link>
+ </p>
+ </s2>
+
+ <s2 title="Acting">
+ <p>
+ Apache Cocoon has a rich set of tools for publishing web documents,
+ and while XSP and Generators provide alot of functionality, they still mix
content
+ and logic to a certain degree. The Action was created to fill that gap.
+ Because the Cocoon Sitemap provides a mechanism to select the pipeline at run
time,
+ we surmised that sometimes we need to adjust the pipeline based on runtime
parameters,
+ or even the contents of the Request parameter.
+ Without the use of Actions this would make the sitemap almost
incomprehensible.
+ </p>
+ <p>See also
+ <link href="actions.html">Creating And Using Actions</link>
+ </p>
+ </s2>
+ <s2 title="Generating">
+ <p>
+ A generator is the starting point of an xml pipeline.
+ It generates XML content as SAX events and initialize the pipeline
processing.
+ </p>
+ <p>
+ See also
+ <link href="../generators/generators.html">
+ Generators in Cocoon.
+ </link>
+ </p>
+ </s2>
+ <s2 title="Aggregating">
+ <p>
+ Beside defining one generator which produces xml content you can define an
aggregator.
+ An aggregator has one more parts defining the sources of xml content.
+ The parts of an aggregator are merged being the xml content of the aggregator.
+ The name of the parent element of all merged-in parts is defines by the
attribute
+ element in side the aggregate element.
+ </p>
+ <p>
+ You can define an aggregator in places where you define a generator. Defining
an aggregator
+ is simple. The example belows defines an aggregate, the merged in parts will
become children
+ of element <code>the-aggreated-content</code>.
+ </p>
+ <source><![CDATA[
+<map:aggregate element="the-aggreated-content">
+ <!-- define your map:parts here -->
+</map:aggregate>
+ ]]></source>
+ <p>
+ Defining an aggregator implicits defining the parts building up the content of
+ an aggregate.
+ </p>
+ <p>
+ Define parts inside of an aggregate. You can define as source of a part a URL.
+ The following list of examples summarizes some useful part sources:
+ </p>
+ <ul>
+ <li>
+ Use <code>http://foo/bar</code> to merge in xml content via http protocol,
+ received from machine foo.
+ </li>
+ <li>
+ Use <code>context://servlet-context-path/foo/bar</code> to merge in xml
content
+ from the servlet context.
+ </li>
+ <li>
+ Use <code>cocoon:/current-sitmap-pipeline/foo/bar</code> to merge in xml
content
+ from the current sitemap.
+ The appropriate pipeline is selected matching
<code>current-sitemap-pipeline</code>.
+ </li>
+ <li>
+ Use <code>cocoon://root-sitmap-pipeline/foo/bar</code> to merge in xml content
+ from the root sitemap.
+ The appropriate pipeline is selected matching
<code>root-sitemap-pipeline</code>.
+ </li>
+ <li>
+ Use <code>resource://class-path-context/foo/bar</code> to merge in xml content
+ from the classpath.
+ </li>
+ <li>
+ Use <code>jar:http://www.foo.com/bar/jar.jar!/foo/bar</code> to merge in xml
content
+ coming from a jar via http connection.
+ </li>
+ <li>
+ Use <code>file://foo/bar</code> to merge in xml content from the filesystem.
+ </li>
+ <li>
+ Depending on your setup you may use
+ <code>nfs:</code>, <code>jndi:</code> protocols, too.
+ </li>
+ </ul>
+ <p>
+ Defining a part element of an aggregate is simple.
+ A part element specifies by its src attribute the source of the xml content.
+ </p>
+ <p>
+ The following example is taken from the documentation sitemap.
+ The xml content of pipelines matching <code>book-*.xml</code>, and
<code>body-*.xml</code>
+ is aggregated having root element site.
+ </p>
+ <source><![CDATA[
+<map:match pattern="*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/book-{1}.xml"/>
+ <map:part src="cocoon:/body-{1}.xml"/>
+ </map:aggregate>
+ ...
+ ]]></source>
+ <p>
+ The aggregated xml content may look like this:
+ </p>
+ <source><![CDATA[
+<site>
+ <menu>
+ <!-- content of book xml -->
+ ...
+ </menu>
+ <document>
+ <!-- content of body xml -->
+ ...
+ </document>
+</site>
+ ]]></source>
+ </s2>
+ <s2 title="Transforming">
+ <p>
+ A transformer is the central point in the pipeline.
+ It transform SAX events in SAX events.
+ </p>
+ <p>
+ See also
+ <link href="../transformers/transformers.html">
+ Transformers in Cocoon.
+ </link>
+ </p>
+ </s2>
+ <s2 title="Serializing">
+ <p>
+ A serializer is the end point of an xml pipeline.
+ It transform SAX events in binary or char streams for final client
consumption.
+ </p>
+ <p>
+ See also
+ <link href="../serializers/serializers.html">
+ Serializers in Cocoon.
+ </link>
+ </p>
+ </s2>
+ <s2 title="Handling Errors">
+ <p>
+ Each pipeline may define its error handling.
+ A error handler is specialized pipeline having a pre-configures generator.
+ Each error handler uses the generator named <code>!error-notifier!</code>.
+ Thus you do not define a generator inside the error handler.
+ Beside this issue you configure the error handler like a pipeline.
+ Thus you can choose your transformer, and serializer, and
+ all other features of pipeline processing.
+ </p>
+ <p>
+ You may define the error handler as last element of a pipeline.
+ A error handler may have a type attribute describing which error
+ is handled. By default an error handler handles status code 500.
+ </p>
+ <p>
+ The following example defines an error handler, transforming the content
+ of the error content by the xslt, and i18n transformer,
+ and finally serializing html.
+ </p>
+ <source><![CDATA[
+<map:pipeline>
+...
+ <map:error-handler type="500">
+ <map:transform type="xslt" src="error2html"/>
+ <map:transform type="i18n"/>
+ <map:serialize/>
+ </map:error-handler>
+</map:pipeline>
+ ]]></source>
+ </s2>
+
+ <s2 title="Viewing">
+ <p>
+ Basically, views let you specify exit points of your pipelines
+ that are taken whenever a particular view is requested.
+ The processing continues with the definitions in the requested view.
+ The advantage over selectors that could achieve the same is, that these
+ exit points are not necessarily declared for each pipeline individually,
+ but once per sitemap.
+ </p>
+ </s2>
+ <s2 title="Redirecting">
+ <p>
+ Redirecting forwards the the request. You may forward a request to another
+ pipeline, or externally sending an redirect response to the client.
+ The behaviour is controlled by using the approriate attributes of
+ the element <code>redirect-to</code>.
+ The following list describes the attributes of the element
<code>redirect-to</code>:
+ </p>
+ <ul>
+ <li>
+ The attribute <code>resource</code> specifies the resource name of the
+ target to redirect to. An optional <code>target</code> attribute
+ let you specify a parameter named <code>target</code> passed to the targetted
resource.
+ </li>
+ <li>
+ The attribute <code>uri</code> defines the target of redirect.
+ The target is sent as redirect response to the client.
+ The optional attribute <code>session</code> specifies, if the redirect
+ should happen inside of a session or not. Setting <code>session</code> to
+ <code>yes</code>, or <code>true</code> will persist a session across
+ the redirect response. Use enable the session option if you use http session
+ within your web application.
+ </li>
+ </ul>
+ <p>
+ The following example redirects to a sitemap resource:
+ </p>
+ <source><![CDATA[
+<map:resources>
+ <map:resource name="resource-1">
+ <map:generate src="resources/{target}.xml">
+ ...
+</map:resource>
+<map:pipeline>
+ <map:match pattern="forward-to">
+ <map:redirect-to resource="resource-1" target="target-1"/>
+ ...
+</map:pipeline>
+ ]]></source>
+ <p>
+ The following example redirects to a welcome page:
+ </p>
+ <source><![CDATA[
+<map:pipeline>
+ <map:match pattern="">
+ <map:redirect-to uri="welcome"/>
+ </map:match>
+ <map:match pattern="welcome">
+ ...
+</map:pipeline>
+ ]]></source>
+ </s2>
+
<s2 title="Mounting sitemaps">
<s3 title="Introduction">
<p>
No revision
No revision
1.3.2.3 +1 -0 xml-cocoon2/documentation/xdocs/userdocs/generators/book.xml
Index: book.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/documentation/xdocs/userdocs/generators/book.xml,v
retrieving revision 1.3.2.2
retrieving revision 1.3.2.3
diff -u -r1.3.2.2 -r1.3.2.3
--- book.xml 2001/10/25 07:43:51 1.3.2.2
+++ book.xml 2001/11/26 07:15:12 1.3.2.3
@@ -27,6 +27,7 @@
<menu-item label="Request Generator" href="request-generator.html"/>
<menu-item label="Status Generator" href="status-generator.html"/>
<menu-item label="Stream Generator" href="stream-generator.html"/>
+ <menu-item label="Error Generator" href="error-generator.html"/>
</menu>
<menu label="Optional">
<menu-item label="Php Generator" href="php-generator.html"/>
1.3.2.4 +1 -0
xml-cocoon2/documentation/xdocs/userdocs/generators/generators.xml
Index: generators.xml
===================================================================
RCS file:
/home/cvs/xml-cocoon2/documentation/xdocs/userdocs/generators/generators.xml,v
retrieving revision 1.3.2.3
retrieving revision 1.3.2.4
diff -u -r1.3.2.3 -r1.3.2.4
--- generators.xml 2001/10/25 14:49:03 1.3.2.3
+++ generators.xml 2001/11/26 07:15:12 1.3.2.4
@@ -38,6 +38,7 @@
<li><link href="status-generator.html">Status
Generator</link></li>
<li><link href="stream-generator.html">Stream
Generator</link></li>
<li><link href="php-generator.html">Php
Generator</link> (optional)</li>
+ <li><link href="error-generator.html">Error
Generator</link> (optional)</li>
</ul>
</s1>
</body>
No revision
No revision
1.1.2.1 +0 -0
xml-cocoon2/documentation/xdocs/userdocs/generators/error-generator.xml
Index: error-generator.xml
===================================================================
RCS file:
/home/cvs/xml-cocoon2/documentation/xdocs/userdocs/generators/error-generator.xml,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]