You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cr...@apache.org on 2006/02/09 01:26:32 UTC
svn commit: r376128 [19/34] - in /forrest/site: ./ docs_0_60/
docs_0_60/howto/ docs_0_60/howto/bugzilla-patch/ docs_0_60/howto/multi/
docs_0_70/ docs_0_70/howto/ docs_0_70/howto/cvs-ssh/ docs_0_70/howto/multi/
docs_0_80/ docs_0_80/howto/ docs_0_80/howt...
Added: forrest/site/docs_0_80/howto/howto-structurer-dsl.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-dsl.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-structurer-dsl.source.xml (added)
+++ forrest/site/docs_0_80/howto/howto-structurer-dsl.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,450 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>How to use the structurer</title>
+ <abstract> This How-To describes the usage of the structurer config domain
+ specific language to create beautiful websites in no time. </abstract>
+ <last-modified-content-date date="2005-07-17"/>
+ </header><body><section id="Intended Audience"><title>Intended Audience</title>
+ <warning> The "Dispatcher" (aka "Views") is new functionality which is
+ still in development phase. That is why it is in the "whiteboard" section
+ of the Forrest distribution. This HowTo is a good start but still needs
+ more work. </warning>
+ <p> This part of the the dispatcher is called the structurer and is
+ dedicated to webdesigner and user with some knowlegde of css. </p>
+ <note> For the moment we will use a special seed template called seed-v2.
+ We still need to fix issues of the dispatcher that it really can replace
+ old fashion skins. Like performance, standalone contracts, other testing
+ output/input formats - using POJO based processing will help solving
+ this. All this will ATM happen in the v2 seed-target till the dispatcher
+ will be realesed to the stable plugins. So make regular updates of your
+ forrest-trunk to keep track. </note>
+ <warning> The way we develop contracts will/may change with introduction
+ of java based processing rather then xsl. Please keep this in mind and
+ help updating the documentation by sending patches. TIA. ;-) </warning>
+ </section><section id="Purpose"><title>Purpose</title>
+ <p> This how-to will show you how to write a <strong>forrest:view</strong>
+ from the ground up. We will focus on html as the output format. As well
+ it will show how to add your own css implementation to the structurer.
+ </p>
+ </section><section id="Prerequisites"><title>Prerequisites</title>
+ <ul>
+ <li> You have a ready-to-go new seed-v2 (v2) based on the dispatcher like
+ described in <a href="site:howto/dispatcher/install">Install</a>. </li>
+ <li> Reading that how-to is as well a good idea to understand the used
+ directory structure in this how-to. </li>
+ <li>Installing a mozilla browser and the forrestbar helps a lot in
+ developing.</li>
+ </ul>
+ </section><section id="Steps"><title>Steps</title>
+ <note> When developing with the dispatcher we assume you are using 'forrest
+ run' and the following workflow "change files -> refresh browser"<br/>
+ Installing a mozilla browser and the forrestbar helps a lot in
+ developing. Many instructions assumes that you have the forrestbar
+ installed. </note>
+ <p> We developed<strong> the structurer</strong> to let the user decide
+ where to place elements in e.g. html pages. We started this work with the
+ <code>skinconf.xml</code> where you could configure certain elements and
+ their positions. These elements were known under certain names. It was up
+ to the skin designer to support this configuration and the elements. </p>
+ <p> The work started with grouping elements (the ones from skinconf). We
+ used css-contracts that we added as @attributes e.g. <code><div id="content-main"/>
+ </code>. That made it possible to use the same elements in different
+ skins. For the full list refer to the <a href="http://svn.apache.org/repos/asf/forrest/trunk/main/webapp/skins/leather-dev/contracts.initial.txt">
+ initial contract list </a> </p>
+ <p> Around this contracts we developed a configuration Domain Specific
+ Language - called <strong>the structurer</strong>. The
+ <strong>structurer</strong> allows us to define the order in which
+ <strong>forrest:contract</strong>s appear, and also to group them using
+ <strong>forrest:hook</strong>s. </p>
+ <p> <strong>forrest:hook</strong>s are containers that are only used for
+ layout reasons. They <strong>do not</strong> add any content nor
+ functionality to the output. They add <strong>only</strong> layout
+ information to the output. Actually e.g. a <code><forrest:hook name="layoutId"/>
+ </code> will be transformed to <code><div id="layoutId"/>
+ </code> </p>
+ <p> <strong>forrest:contract</strong>s are functionality or extra content
+ that a theme can use to display the request. Sometimes a contract
+ delivers <strong>format-specific markup</strong>, other times it delivers
+ a <strong>format-independent string</strong>. We decide different kind of
+ contracts, static one (like described in the contract howto), semi static
+ (which offer configuration parameter in the structurer) and dynamic
+ contracts (which offer semi-static configuration and/or requesting the
+ content). </p>
+ <p>Till now the processing includes firstly all raw data into the
+ structurer, then generating a dynamic xsl and last but nor least
+ response. That is heavy based on xsl processing which is quite slow. A
+ better way is that we do not include *raw* but the *transformed* (by the
+ contract) data . This way we do not have to generate a dynamic stylesheet
+ which leads to the upcoming development of standalone contracts.</p>
+ <note> The structurer is as well a configuration file for the dispatcher.
+ The new think on the dispatcher is that one can include any content
+ from any given business service by dispatching a request against it. In
+ "old fashion" skins and in v1 contracts we assumed a given data model.
+ In the dispatcher there is <strong>no</strong> given data model any
+ more. All data has to be defined in the structurer that they can be
+ dispatched. </note>
+ <section id="emptystructurer">
+ <title>Empty structurer file</title>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ </forrest:view>
+</forrest:views>
+ </source>
+ <p> <strong> The structurer</strong> is designed to be open for any
+ format that can use<strong> forrest:view</strong> as configuration
+ file. The only format we implemented is html for now. This is as well
+ true for the delivered contracts. </p>
+ </section>
+
+ <section id="firststructurer">
+ <title>Creating your first structurer</title>
+ <warning> The structurer is based on jx templates to allow simple
+ presentation logic (all code starting with "jx:"). Please refer to the
+ cocoon documentation about jx. For now we are using jx to
+ include the raw data into the presentation model and generating an
+ alias-xsl stylesheet. That is heavy on performance and we will change
+ this ASAP. Mind the warning at the start of the howto. </warning>
+ <p> In this section we will create a new structurer. We will override the
+ default structurer of the themer-plugin for the index page of the <a href="site:howto/dispatcher/install">v2</a>. For that we will create a
+ file called <code>index.fv</code> and save it in our xdocs directory.
+ This will make <strong>only</strong> the index.html page look different
+ from the rest of the project. </p>
+
+ <note>You can set a view for an individual file, a directory, or the whole site. To address multiple files in a directory call your <code>.fv</code> file <code>common.fv</code>. If Forrest doesn't find a <code>.fv</code> file with the same name as the current file it will use the common.fv file in that directory, or the first one it finds going upwards through the directory structure.
+ <code>common.fv</code> files affect all subdirectories unless they are overidden by another <code>common.fv</code> or a file-specific <code>foo.fv</code> file.
+ </note>
+
+ <p> Remember: pointing your browser to
+ <code>http://localhost:8888/ls.contracts.html</code> will show a page
+ with all contracts and themes that you can use in your project provided
+ by forrest. </p>
+ <p> Let us use the blank structurer from the earlier step and add the
+ content-main contract. In ls.contracts.html we find the information for
+ how to use the contract in our structurer. Our <code>index.fv</code>
+ should look like: </p>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ <forrest:contract name="content-main">
+ <forrest:properties contract="content-main">
+ <forrest:property name="content-main" nugget="get.body">
+ <jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </forrest:property>
+ <!-- Heading types can be clean|underlined|boxed -->
+ <forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:view>
+</forrest:views>
+ </source>
+ <p>A contract has to request the data model it want to transform. This
+ happends by defining forrest:properties which have the same name like
+ the contract. In our case we want the HTML rendered from intermediate
+ format (**.body.xml). This we are going to include via: <code><jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </code></p>
+ <p>Contracts can offer some property configuration of the outcome of
+ the transformation. In our case <code><forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>. </code></p>
+
+ <p> Lets try our new structurer by pointing to
+ <code>http://localhost:8888/index.html</code>. We will see only the
+ main content. Now let us add the section navigation to our structurer.
+ The contract usage in the structurer can be looked up in
+ ls.contracts.html. Our structurer now looks like: </p>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ <forrest:contract name="nav-main">
+ <forrest:properties contract="nav-main">
+ <forrest:property name="nav-main" nugget="get.navigation">
+ <jx:import
+ uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ <forrest:contract name="content-main">
+ <forrest:properties contract="content-main">
+ <forrest:property name="content-main" nugget="get.body">
+ <jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </forrest:property>
+ <!-- Heading types can be clean|underlined|boxed -->
+ <forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:view>
+</forrest:views>
+ </source>
+ <p> We now find the main content and the section navigation after each
+ other and in the order we placed them in the structurer, but we want it
+ next to each other (left: nav-section; right: content-main). </p>
+ </section>
+ <section id="hookstructurer">
+ <title>Hooks in the structurer</title>
+ <p> We will use now the first time a <code><forrest:hook name="layoutId"/>
+ </code>. Hooks are the styling side of the structurer. We can imitate
+ arbitrary html skeleton with their help. Before we explain how to use
+ your own css in the structurer, we will use the default css. You can
+ see in our example that we have css included. That is a default
+ fallback coming from the implementation. In this common.css we can find
+ </p>
+ <source xml:space="preserve">/* menu */
+#leftbar {
+ width: 25%;
+ float: left;
+ background: #eae8e3;
+ border: thin dashed #565248;
+}
+ </source>
+ <p> With this information we know to use <code><forrest:hook name="leftbar"/>
+ </code> and add contracts into that container. </p>
+ <p> If we want to put the nav-section contract into the left-hand side
+ position of the site we need to place the contract into that hook.
+ Like: </p>
+ <source xml:space="preserve"><forrest:hook name="leftbar">
+ <!-- Include contract here -->
+</forrest:hook>
+ </source>
+ <p> Our structurer will then look like: </p>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section">
+ <forrest:properties contract="nav-section">
+ <forrest:property name="nav-section" nugget="get.navigation">
+ <jx:import
+ uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:hook>
+ <forrest:contract name="content-main">
+ <forrest:properties contract="content-main">
+ <forrest:property name="content-main" nugget="get.body">
+ <jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </forrest:property>
+ <!-- Heading types can be clean|underlined|boxed -->
+ <forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:view>
+</forrest:views>
+ </source>
+ </section>
+ <section id="cssstructurer">
+ <title>CSS in the structurer</title>
+ <p>We now know how to place contracts and hooks in our structurer. Until
+ this stage we only used the common.css. CSS-support of the structurer
+ is as easy as placing contracts/hooks. To override the common.css
+ stylesheet we use another tag within our structurer <code><forrest:css />
+ </code>. </p>
+<!-- <p>We will now create a file in <code><![CDATA[<!-#-
+ {1} name
+ {2} extension (note we assume e.g. PATH/css/{1}.css)
+ -#->
+<location src="{project:themer}/resources/themes/{project:theme}/{2}/{1}.{2}" />]]></code>. In our case
+ we will save a file called howTo.css in v2/src/documentation/resources/themes/common/css/howTo.css containing only
+ the following css:
+ </p>-->
+ <p>You can add inline and linked css with the structurer. As soon as you
+ use forrest:css you will disable the fallback css support from
+ forrest. With this tag we tell the dispatcher that we want to override the common.css.
+ After adding the following to our index.fv the design will be different.</p>
+ <source xml:space="preserve"><forrest:css >
+/* Extra css */
+/* menu */
+#leftbar {
+ width: 25%;
+ float: left;
+ background: #CCCCFF;
+ border: thin solid #000000;
+}
+</forrest:css> </source>
+ <!--<fixme author="thorsten">from here</fixme>-->
+ <p> We just changed the border-style to 'solid', the background to
+ '#CCCCFF' and the color to '#000000'. So you see a white page where the menu is surrounded by a solid
+ border with the defined background.</p>
+ <note>
+ <code><forrest:css /></code> needs to be the direct child of
+ <code><forrest:view type="html"></code>
+ </note>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ <forrest:css >
+/* Extra css */
+/* menu */
+#leftbar {
+ width: 25%;
+ float: left;
+ background: #CCCCFF;
+ border: thin solid #000000;
+}
+ </forrest:css>
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section">
+ <forrest:properties contract="nav-section">
+ <forrest:property name="nav-section" nugget="get.navigation">
+ <jx:import
+ uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:hook>
+ <forrest:contract name="content-main">
+ <forrest:properties contract="content-main">
+ <forrest:property name="content-main" nugget="get.body">
+ <jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </forrest:property>
+ <!-- Heading types can be clean|underlined|boxed -->
+ <forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:view>
+</forrest:views>
+ </source>
+ <p>As a second example, let us change
+ as well the content-main by adding another hook <code><forrest:hook name="content"/>
+ </code> We need to add the new layout container to our inline css: </p>
+ <source xml:space="preserve">
+/* The actual content */
+#content {
+ margin-left: 25%;
+ padding: 0 20px 0 20px;
+ background: #B9D3EE;
+}</source>
+ <p> Then we have to add the 'content-main' contract to the 'content'
+ hook. The resulting structurer looks like: </p>
+ <source xml:space="preserve"><forrest:views
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+ <forrest:view type="html">
+ <forrest:css >
+/* Extra css */
+/* menu */
+#leftbar {
+ width: 25%;
+ float: left;
+ background: #CCCCFF;
+ border: thin solid #000000;
+}
+/* The actual content */
+#content {
+ margin-left: 25%;
+ padding: 0 20px 0 20px;
+ background: #B9D3EE;
+}
+ </forrest:css>
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section">
+ <forrest:properties contract="nav-section">
+ <forrest:property name="nav-section" nugget="get.navigation">
+ <jx:import
+ uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:hook>
+ <forrest:hook name="content">
+ <forrest:contract name="content-main">
+ <forrest:properties contract="content-main">
+ <forrest:property name="content-main" nugget="get.body">
+ <jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>
+ </forrest:property>
+ <!-- Heading types can be clean|underlined|boxed -->
+ <forrest:property name="content-main-conf">
+ <headings type="underlined"/>
+ </forrest:property>
+ </forrest:properties>
+ </forrest:contract>
+ </forrest:hook>
+ </forrest:view>
+</forrest:views>
+ </source>
+ <p> We are now able to place contracts into the layout container and add
+ custom css to the structurer. </p>
+ </section>
+ <section>
+ <title>Linking to an external css file</title>
+ <note>This will change for the next version of views (v3) where we use a
+ generic contract instead of the standalone element (forrest:css). </note>
+ <p>Make sure your project has the following directory structure. If it
+ doesn't you'll have to create it. "common" is the fallback for all
+ themes, if you want to override the css for a specific theme replace
+ "common" with "themeName". This is where Forrest will look for external
+ css stylesheets. </p>
+ <source xml:space="preserve">
+ $projectHome\src\documentation\resources\themes\common\css</source>
+ <p>Where $projectHome is the directory where your project exists.</p>
+ <p>Put your css stylesheets in this directory. For arguement's sake let's say
+ it's called mystyles.css</p>
+ <p>Edit your common.fv structurer (or whatever structurer (theme) you are using). This
+ will probably be some where in: </p>
+ <source xml:space="preserve">$projectHome\src\documentation\content\xdocs</source>
+ <p>or if you want to override it for the whole project in:</p>
+ <source xml:space="preserve">$projectHome\src\documentation\resources\themes\</source>
+ <p>Add the following element to the *.fv file:</p>
+ <source xml:space="preserve"><forrest:css url="styles.css" media="screen" theme="pelt"/>
+ </source>
+ <p><strong>Important!</strong> This must appear straight after the "view
+ type" element (as first child): </p>
+ <source xml:space="preserve"><forrest:view type="html"></source>
+ <source xml:space="preserve"><forrest:css url="mystyles.css" media="screen" theme="pelt"/>
+ </source>
+ <p>The attributes are: </p>
+ <ol>
+ <li>the url where the css exist (NOTE: it will be rewritten to "../themes/mystyles.css").</li>
+ <li>the media type, you can set different styles for screen and print.
+ This is really useful if you want to hide elements such as navigation
+ in the print output (#nav-section{display:none} for example).</li>
+ <li>the theme, "pelt" is the default theme (another is the "common" theme). Change this if you
+ are using your own theme.</li>
+ </ol>
+ <p>You can have as many css links as you like, and they'll appear in the
+ head of your document in same order as they are in the .fv file.</p>
+ <fixme author="thorsten"> Add more information of recent threads around
+ css in the structurer and information how you add an @import? Use e.g.
+ <a href="http://marc.theaimsgroup.com/?t=113471292700001&r=1&w=2">http://marc.theaimsgroup.com/?t=113471292700001&r=1&w=2</a>
+ </fixme>
+ </section>
+ </section><section id="Further Reading"><title>Further Reading</title>
+ <p> Congratulations you are now able to work with the structurer. From here
+ we recommend to read the following How-Tos: </p>
+ <ul>
+ <li>
+ <a href="site:howto/dispatcher/contracts">Create your own contract
+ implementation</a>
+ </li>
+ </ul>
+ </section><section id="Feedback"><title>Feedback</title>
+ <p> Please provide feedback about this document via the <a href="site:mail-lists">mailing lists</a>. </p>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/howto-structurer-dsl.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-structurer-install.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-install.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-structurer-install.source.xml (added)
+++ forrest/site/docs_0_80/howto/howto-structurer-install.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>How to install the "dispatcher"</title>
+ <abstract>
+ This How-To describes the setup of the plugins (needed to work with forrest:views and forrest:contracts) and a fresh v2 seed site.
+ </abstract>
+ <last-modified-content-date date="2005-10-04"/>
+ </header><body><section id="Intended Audience"><title>Intended Audience</title>
+
+<warning>
+The "Dispatcher" (aka "Views") is new functionality which is still in development phase. That is why it is in the
+"whiteboard" section of the Forrest distribution. This HowTo is a good start but still needs more work.
+</warning>
+ <p>
+ Developers who want to get started with "dispatcher" development and want to help testing and developing the "dispatcher".
+ </p>
+ </section><section id="Purpose"><title>Purpose</title>
+ <p>
+ Quick guide installing the "dispatcher". This is the "getting started" setup guide.
+ </p>
+ </section><section id="Prerequisites"><title>Prerequisites</title>
+ <ul>
+ <li>Need the SVN trunk version of Forrest for using the "dispatcher" because it is in an early stage.</li>
+ <li>Read <a href="site:v0.80//howto/buildPlugin">How to Build a Plugin</a>
+ especially the section about using Forrest's own Ant.</li>
+ <li>Installing a mozilla browser and the
+ <a href="site:tools/forrestbar">Forrestbar</a> helps a lot in developing.</li>
+ </ul>
+ </section><section id="Steps"><title>Steps</title>
+ <p>
+ The process of setting up the plugin should be easy. Still it has too many stages and it
+ will become easier in the future.
+ </p>
+ <section id="localBuild">
+ <title>Build the internal.structurer and the output.themer plugins</title>
+ <p>
+ The first step is to build and deploy the internal.structurer and the output.themer plugins.
+ </p>
+ <p>
+ Run the script <code>etc/structurer.sh</code> *after* you did an svn update.
+ </p>
+ <p>
+ Otherwise build and deploy them manually. Do your usual 'svn update', then ...
+ </p>
+
+ <source xml:space="preserve">
+cd whiteboard/plugins/org.apache.forrest.plugin.internal.structurer/
+$FORREST_HOME/tools/ant/bin/ant local-deploy
+cd ../org.apache.forrest.plugin.output.themer/
+$FORREST_HOME/tools/ant/bin/ant local-deploy
+ </source>
+ </section>
+ <section id="newSeed">
+ <title>Seed a new project</title>
+ <p> Go to the directory where you want to seed a new project and seed it ...
+ </p>
+ <source xml:space="preserve">cd ~/src/
+mkdir v2
+cd v2/
+forrest seed-v2 </source>
+ <note>
+ For the moment we will use a special seed template called seed-v2. We still
+ need to fix issues of the dispatcher, so that it really can replace old
+ fashion skins. Like performance, standalone contracts, other testing output/input formats - using POJO based
+ processing will help solving this. All this will happen in the v2 seed-target until the dispatcher will
+ be released to the stable plugins. So make regular updates of your forrest-trunk to keep track.
+ </note>
+ <warning>
+ The way we develop contracts will/may change with introduction of java-based processing
+ (for certain parts) rather then xsl. Please keep this in mind
+ and help updating the documentation by sending patches. TIA. ;-)
+ </warning>
+ </section>
+ <section id="forrestProperties">
+ <title>Modify forrest.properties</title>
+ <p>
+ Make sure to tell forrest to use the dispatcher plugins. Of course, if you are
+ using "seed-v2" then this is already done. If you are converting an existing site to use
+ dispatcher, then do this.
+ </p>
+ <p>
+ Edit forrest.properties to add the required plugins:
+ </p>
+ <source xml:space="preserve">
+project.required.plugins=org.apache.forrest.plugin.output.themer,org.apache.forrest.plugin.internal.structurer
+ </source>
+ </section>
+ <section id="testing">
+ <title>Test your new "dispatcher" based project</title>
+ <p>
+ Now you have finished the preparation and the setup to finally do
+ <code>'forrest run'</code> and
+ point your browser to <code>http://localhost:8888/</code> and you will see the default
+ dispatcher-based site.
+ </p>
+ </section>
+ <section id="availableContracts">
+ <title>Available contracts</title>
+ <p>
+ To start working with the dispatcher, you need to know which contracts you can use.
+ If you used the seed-v2 then the Samples tab will lead to
+ the available contracts.</p>
+ <p>
+ Forrestbar is another way to see available contracts. See the menu point "Devs"
+ (ls.contracts and/or ls.contracts.project)
+ </p><p>
+ Now point your browser to e.g. <code>http://localhost:8888/ls.contracts.html</code>
+ ... On this page you will find all contracts that you can use in your project.
+ </p>
+ </section>
+ </section><section id="Further Reading"><title>Further Reading</title>
+ <p>
+ Congratulations you are now able to work with the dispatcher.
+ From here we recommend to read the following How-To's (in this order):
+ </p>
+ <ul>
+ <li><a href="site:v0.80//howto/dispatcher/structurer">Getting started with the "structurer"</a> </li>
+ <li><a href="site:v0.80//howto/dispatcher/contracts">Create your own contract implementation</a> </li>
+ </ul>
+ </section><section id="Feedback"><title>Feedback</title>
+ <p>
+ Please provide feedback about this document via the "dev"
+ <a href="site:mail-lists">mailing list</a>.
+ </p>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/howto-structurer-install.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/index.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/index.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/index.source.xml (added)
+++ forrest/site/docs_0_80/howto/index.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2004 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://forrest.apache.org/dtd/document-v12.dtd">
+<document>
+
+ <header>
+ <title>Overview of the How-To documents</title>
+ </header>
+
+ <body>
+ <section>
+ <title>Forrest Site and Documentation</title>
+ <ul>
+ <li><link href="site:v0.80//howto/write-howto">How to write a How-To</link>
+ - Provides instructions about writing documents. Please copy this
+ file to serve as a template for your own document.
+ </li>
+ <li><link href="site:v0.80//howto/asf-mirror">Generate an ASF mirrors page using interactive web form</link>
+ - include html form elements
+ into a forrest-generated html page. For example, this enables building
+ automated download mirror pages for ASF project websites.
+ Also shows how to process "extra" documents, i.e. that have no links
+ from anywhere in the site.
+ </li>
+ </ul>
+ </section>
+
+ <section>
+ <title>Using and developing with Forrest</title>
+ <p>
+ You will soon see that there is not much distinction between
+ users and developers.
+ </p>
+ <ul>
+ <li><link href="site:v0.80//howto/forrest-dev">How to be a Forrest developer</link>
+ - Describes tips and procedures for efficiently developing with Forrest.
+ </li>
+ <li><link href="site:v0.80//howto/pdf-tab">How to create a PDF document for each tab</link>
+ - Describes the generation of a PDF document for each
+ group of documents that is defined by a tab.
+ </li>
+ <li><link href="site:v0.80//howto/editcss">How to edit Forrest's CSS in a WYSIWYG fashion</link>
+ - Describes the use of Mozilla Firebird and the free EditCSS-Plugin to
+ customize your Forrest design in a WYSIWYG-way.
+ </li>
+ <li><link href="site:v0.80//howto/corner-css">How to modify the color of generated corner images</link>
+ - Describes the use of CSS values from the skinconf.xml configuration
+ file to change the color of the corner images to be suitable for
+ your own skin colors. Advanced use explains editing the *.css too.
+ </li>
+ <li><link href="site:v0.80//howto/maven">How to run Forrest from within Maven</link>
+ - For Maven users who want to generate their project's documentation and/or website
+ using Forrest in lieu of Maven's site plugin.
+ </li>
+ <li><link href="site:v0.80//custom-html-source">How to customize processing of html source</link>
+ - When integrating legacy html documents into a Forrest-built site, additional processing
+ of the html sources might be required.
+ </li>
+ </ul>
+ </section>
+
+ <section>
+ <title>Extending Forrest</title>
+ <ul>
+ <li><link href="site:v0.80//howto/buildPlugin">How to create a Plugin for Forrest</link>
+ - Describes how to write a plugin to add new input or output document
+ formats, or to modify the default behaviour of Forrest</li>
+ </ul>
+ </section>
+ </body>
+
+</document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/index.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/multi/howto-multi.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/multi/howto-multi.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/multi/howto-multi.source.xml (added)
+++ forrest/site/docs_0_80/howto/multi/howto-multi.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>Example of a multi-page how-to</title>
+ <abstract>This is the shell of a multi-page how-to. Add your own content.
+ </abstract>
+ <last-modified-content-date date="2003-09-10"/>
+ </header><body><section id="Intended audience"><title>Intended audience</title>
+ <p>Describe the audience here.</p>
+ </section><section id="Purpose"><title>Purpose</title>
+ <p>Explain the purpose of the howto here.</p>
+ </section><section id="Prerequisites"><title>Prerequisites</title>
+ <p>Configuration requirements:</p>
+ <ul>
+ <li>This.</li>
+ <li>That.</li>
+ </ul>
+ <p>Requisite skills:</p>
+ <ul>
+ <li>These.</li>
+ <li>Those.</li>
+ </ul>
+
+ </section><section id="Various Steps"><title>Various Steps</title>
+ <p>After this brief introductory paragraph, the steps are described in
+ separate documents:</p>
+ <ul>
+ <li><link href="step1.html">Step 1: Do foo</link></li>
+ <li><link href="step2.html">Step 2: Do foobar</link></li>
+ <li><link href="step3.html">Step 3: Finish up</link></li>
+ </ul>
+ </section><section id="Real World Extension"><title>Real World Extension</title>
+ <p>Briefly describe some relevant extensions that go beyond these basics.</p>
+ </section><section id="Tips"><title>Tips</title>
+ <p>If you have a problem running the example, then you can try the
+ following tips:</p>
+ <ul>
+ <li>Tip #1</li>
+ <li>Tip #2</li>
+ </ul>
+ </section><section id="Related Resources"><title>Related Resources</title>
+ <p>Cocoon resources:</p>
+ <ul>
+ <li>For all Cocoon basics see the
+ <link href="ext:cocoon">Cocoon Web site</link>.
+ </li>
+ </ul>
+ </section><section id="Feedback"><title>Feedback</title>
+ <p>If you find any faults in this How-to or can see any improvements,
+ please contact the
+ <link href="site:mail-lists">project mail lists</link> with them.
+ </p>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/multi/howto-multi.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/multi/step1.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/multi/step1.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/multi/step1.source.xml (added)
+++ forrest/site/docs_0_80/howto/multi/step1.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>Multi-page how-to: Step 1</title>
+ <last-modified-content-date date="2003-09-10"/>
+ </header><body><section id="Step 1: Do foo"><title>Step 1: Do foo</title>
+ <section>
+ <title>First section of this step</title>
+ <p>Description here.</p>
+ </section>
+ <section>
+ <title>Second section of this step</title>
+ <p>Description here.</p>
+ <p>Source code follows ...</p>
+ <source xml:space="preserve">
+<pointy-brackets>
+ <are-allowed-in-source-CDATA-sections/>
+</pointy-brackets>
+
+ </source>
+ <p>Now we move on to <link href="step2.html">Step 2: Do foobar</link></p>
+ </section>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/multi/step1.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/multi/step2.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/multi/step2.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/multi/step2.source.xml (added)
+++ forrest/site/docs_0_80/howto/multi/step2.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>Multi-page how-to: Step 2</title>
+ <last-modified-content-date date="2003-09-10"/>
+ </header><body><section id="Step 2: Do foobar"><title>Step 2: Do foobar</title>
+ <section>
+ <title>First section of this step</title>
+ <p>Description here.</p>
+ </section>
+ <section>
+ <title>Second section of this step</title>
+ <p>Description here.</p>
+ <p>Now we move on to <link href="step3.html">Step 3: Finish up</link></p>
+ </section>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/multi/step2.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/multi/step3.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/multi/step3.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/multi/step3.source.xml (added)
+++ forrest/site/docs_0_80/howto/multi/step3.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document><header>
+ <title>Multi-page how-to: Step 3</title>
+ <last-modified-content-date date="2002-09-10"/>
+ </header><body><section id="Step 3: Finish up"><title>Step 3: Finish up</title>
+ <section>
+ <title>First section of this step</title>
+ <p>Description here.</p>
+ </section>
+ <section>
+ <title>Second section of this step</title>
+ <p>Description here.</p>
+ <p>Congratulations, you have finished. Now return to the
+ <link href="howto-multi.html">start</link>.</p>
+ </section>
+ </section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/multi/step3.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/project_sitemap.xmap.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/project_sitemap.xmap.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/project_sitemap.xmap.source.xml (added)
+++ forrest/site/docs_0_80/howto/project_sitemap.xmap.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><document><header> <!-- <meta content="HTML Tidy, see www.w3.org" name="generator"/> --> <title>sitemap.xmap in the Project Documentation Directory</title></header><body><section><title>sitemap.xmap in the Project Documentation Directory</title><pre>
+<?xml version="1.0"?>
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+ <map:pipelines>
+</pre><section><title>Example pipeline for '**custom.xml'</title><pre>
+ <map:pipeline>
+ <map:match pattern="**custom.xml">
+ <map:generate src="{project:content.xdocs}{1}custom.xml" />
+ <map:transform src="{project:resources.stylesheets}/hello2document.xsl" />
+ <map:serialize type="xml"/>
+ </map:match>
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
+</pre></section></section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/project_sitemap.xmap.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/sitemap.xmap.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/sitemap.xmap.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/sitemap.xmap.source.xml (added)
+++ forrest/site/docs_0_80/howto/sitemap.xmap.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,633 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><document><header> <!-- <meta content="HTML Tidy, see www.w3.org" name="generator"/> --> <title>Annotated core sitemap.xmap</title></header><body><section><title>sitemap.xmap</title><pre>
+<?xml version="1.0"?>
+<!-- ===============================================
+Default Forrest sitemap, defining the whole site.
+Delegates to the other *.xmap files. See
+http://forrest.apache.org/docs/sitemap-ref.html
+
+$Revision: 1.12 $
+==================================================== -->
+</pre><section><title>Start of Sitemap</title><pre>
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+ <map:components>
+ <map:generators default="file">
+ <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" />
+ <map:generator name="html"
+ src="org.apache.cocoon.generation.HTMLGenerator">
+ <jtidy-config>WEB-INF/jtidy.properties</jtidy-config>
+ </map:generator>
+ <map:generator name="exception"
+ src="org.apache.cocoon.generation.ParseExceptionGenerator"/>
+ <!--
+ <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator">
+ <jtidy-config>jtidy.properties</jtidy-config>
+ </map:generator>
+ <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" />
+ -->
+ <map:generator name="notifier" src="org.apache.cocoon.sitemap.NotifyingGenerator" />
+
+ <map:generator name="text2xml" logger="sitemap.generator.textgenerator"
+ src="org.apache.cocoon.generation.TextGenerator">
+ <parameter name="localizable" value="true"/>
+ </map:generator>
+
+ </map:generators>
+
+ <map:transformers default="xslt">
+
+ <!-- Add values to skinconf that need extra processing like the color shades -->
+ <map:transformer name="skinconf" src="org.apache.forrest.conf.SkinconfTransformer"/>
+
+ <!-- Generates @id attributes from <title> strings -->
+ <map:transformer name="idgen" src="org.apache.forrest.util.IdGeneratorTransformer">
+ <element>//*[local-name() = 'section']</element>
+ <id>title/text()</id>
+ </map:transformer>
+
+ <!-- Rewrites links, e.g. transforming href="site:index" to href="../index.html" -->
+ <!-- See http://forrest.apache.org/docs/sitemap-ref.html#linkrewriting_impl -->
+ <map:transformer name="linkrewriter" logger="sitemap.transformer.linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer">
+ <link-attrs>href src</link-attrs>
+ <schemes>site ext</schemes>
+
+ <input-module name="site">
+ <input-module name="linkmap">
+ <file src="{src}" reloadable="true" />
+ </input-module>
+ <prefix>/site//</prefix>
+ <suffix>/@href</suffix>
+ </input-module>
+ <input-module name="ext">
+ <input-module name="linkmap">
+ <file src="{src}" reloadable="true" />
+ </input-module>
+ <prefix>/site/external-refs//</prefix>
+ <suffix>/@href</suffix>
+ </input-module>
+ </map:transformer>
+
+ <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.forrest.util.XPathTransformer" />
+
+ <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ <use-deli>false</use-deli>
+ <transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
+ <!--<transformer-factory>net.sf.saxon.TransformerFactoryImpl</transformer-factory>-->
+ <!--<transformer-factory>com.icl.saxon.TransformerFactoryImpl</transformer-factory>-->
+ <!--<transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>-->
+ </map:transformer>
+
+ <map:transformer name="xsltc" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ <use-deli>false</use-deli>
+ <transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>
+ </map:transformer>
+
+ <map:transformer name="xslt-saxon"
+ pool-grow="2" pool-max="32" pool-min="8"
+ src="org.apache.cocoon.transformation.TraxTransformer">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ <xslt-processor-role>saxon</xslt-processor-role>
+ </map:transformer>
+
+ <map:transformer name="xinclude" src="org.apache.cocoon.transformation.XIncludeTransformer" logger="sitemap.transformer.xinclude" pool-grow="2" pool-max="16" pool-min="2" />
+
+ <map:transformer name="cinclude" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.transformation.CIncludeTransformer" logger="sitemap.transformer.cinclude"/>
+ <map:transformer name="pattern"
+ src="org.apache.cocoon.transformation.PatternTransformer"
+ logger="sitemap.transformer.pattern">
+ <parameter name="groups" value="true"/>
+ </map:transformer>
+ <map:transformer name="lexer"
+ src="org.apache.cocoon.transformation.LexicalTransformer"
+ logger="sitemap.transformer.lexer">
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+ <map:transformer name="parser"
+ src="org.apache.cocoon.transformation.ParserTransformer"
+ logger="sitemap.transformer.parser">
+ <parameter name="flatten" value="true"/>
+ <parameter name="recovery" value="true"/>
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+ </map:transformers>
+
+ <map:readers default="resource">
+ <map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/>
+ </map:readers>
+
+ <map:serializers default="html">
+ <map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer">
+ <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
+ <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
+ <encoding>UTF-8</encoding>
+ </map:serializer>
+
+ <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"/>
+
+ <map:serializer name="xml-document" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
+ <cdata-section-elements>source</cdata-section-elements>
+ <doctype-public>-//APACHE//DTD Documentation V1.3//EN</doctype-public>
+ <doctype-system>document-v13.dtd</doctype-system>
+ </map:serializer>
+
+ <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
+ <encoding>ISO-8859-1</encoding>
+ </map:serializer>
+
+ <map:serializer name="svgxml" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="image/svg+xml">
+ <doctype-public>-//W3C//DTD SVG 1.0//EN</doctype-public>
+ <doctype-system>http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd</doctype-system>
+ </map:serializer>
+ <map:serializer logger="sitemap.serializer.text" mime-type="text/plain" name="text" src="org.apache.cocoon.serialization.TextSerializer">
+ <encoding>UTF-8</encoding>
+ </map:serializer>
+
+ <!--
+ <map:serializer mime-type="application/x-shockwave-flash" name="swf" src="org.apache.cocoon.serialization.SWFSerializer"/>
+ <map:serializer mime-type="application/msword" name="fo2rtf" src="org.apache.cocoon.serialization.RTFSerializer"/>
+ -->
+ </map:serializers>
+
+ <map:matchers default="wildcard">
+ <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
+ <map:matcher name="regexp" src="org.apache.cocoon.matching.RegexpURIMatcher"/>
+ </map:matchers>
+
+ <map:selectors>
+ <map:selector logger="sitemap.selector.exists" name="exists" src="org.apache.forrest.sourceexists.SourceExistsSelector" />
+ <map:selector logger="sitemap.selector.exception" name="exception"
+ src="org.apache.cocoon.selection.ExceptionSelector">
+ <exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/>
+ <exception class="java.lang.Throwable" unroll="true"/>
+ </map:selector>
+ </map:selectors>
+
+ <map:pipes default="caching">
+ <map:pipe name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
+ <!--
+ <map:pipe name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
+ <map:pipe name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
+ <map:pipe name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
+ -->
+ </map:pipes>
+ </map:components>
+
+ <!-- NOTE: the 'links view' is no longer used to discover a page's links.
+ Instead of filterlinks.xsl, use cli.xconf include/exclude nodes to define which pages to render.
+ <map:views>
+ <map:view name="links" from-position="last">
+ <map:transform src="{forrest:stylesheets}/filterlinks.xsl">
+ <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
+ </map:transform>
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+ -->
+
+ <map:resources>
+ <map:resource name="skinit">
+ <map:select type="exists">
+ <map:when test="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl">
+ <map:transform src="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl">
+ <map:parameter name="notoc" value="{notoc}"/>
+ <!-- For backwards-compat with 0.2 - 0.4 skins -->
+ <map:parameter name="isfaq" value="{notoc}"/>
+ <map:parameter name="nopdf" value="{nopdf}"/>
+ <map:parameter name="path" value="{path}"/>
+ <map:parameter name="config-file" value="{project:skinconf}"/>
+ </map:transform>
+ </map:when>
+ <map:otherwise>
+ <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/html/{type}.xsl">
+ <map:parameter name="notoc" value="{notoc}"/>
+ <!-- For backwards-compat with 0.2 - 0.4 skins -->
+ <map:parameter name="isfaq" value="{notoc}"/>
+ <map:parameter name="nopdf" value="{nopdf}"/>
+ <map:parameter name="path" value="{path}"/>
+ <map:parameter name="config-file" value="{project:skinconf}"/>
+ </map:transform>
+ </map:otherwise>
+ </map:select>
+ <map:serialize/>
+ </map:resource>
+
+ </map:resources>
+</pre></section><section><title>Start of Pipelines</title><pre>
+ <!-- =========================== Pipelines ================================= -->
+ <map:pipelines>
+
+ <map:pipeline type="caching" internal-only="true">
+</pre></section><section><title>Test for First Pipeline</title><pre>
+ <map:match pattern="*.xlex">
+ <map:select type="exists">
+ <map:when test="resources/chaperon/grammars/{1}.xlex">
+ <map:read src="resources/chaperon/grammars/{1}.xlex"/>
+ </map:when>
+ <map:otherwise>
+ <map:generate type="text2xml" src="{forrest:context}/resources/chaperon/grammars/{1}.grm"/>
+ <map:transform type="lexer" src="{forrest:context}/resources/chaperon/grammars/grm.xlex"/>
+ <map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/grm.xgrm"/>
+ <map:transform src="{forrest:context}/resources/chaperon/stylesheets/text4regex.xsl"/>
+ <map:transform type="lexer" src="{forrest:context}/resources/chaperon/grammars/regex.xlex"/>
+ <map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/regex.xgrm"/>
+ <map:transform src="{forrest:context}/resources/chaperon/stylesheets/grm2xlex.xsl"/>
+ <map:serialize type="xml"/>
+ </map:otherwise>
+ </map:select>
+ </map:match>
+ </map:pipeline>
+</pre></section><section><title>Insertion Point for Project Sitemap</title><pre>
+ <!--
+ This is the user pipeline, that can answer requests instead
+ of the Forrest one, or let requests pass through.
+ To take over the rendering of a file it must match the file name and path.
+ To take over the generation of the intermediate format, it must give
+ Forrest the same filename but ending with xml, and a DTD that Forrest
+ recognizes.
+ -->
+ <map:pipeline internal-only="false">
+ <map:select type="exists">
+ <map:when test="{project:sitemap}">
+ <map:mount uri-prefix=""
+ src="{project:sitemap}"
+ check-reload="yes"
+ pass-through="true"/>
+ </map:when>
+ </map:select>
+ </map:pipeline>
+
+ <map:pipeline internal-only="false">
+ <map:select type="exists">
+ <map:when test="{project:temp-dir}/internal.xmap">
+ <map:mount uri-prefix="" src="{project:temp-dir}/internal.xmap" check-reload="yes" pass-through="true"/>
+ </map:when>
+ </map:select>
+ </map:pipeline>
+
+ <map:pipeline internal-only="false">
+ <map:match pattern="skinconf.xml">
+ <map:generate src="{project:skinconf}" />
+ <map:transform src="{forrest:stylesheets}/strip-doctype.xsl"/>
+ <map:transform src="{forrest:stylesheets}/upgrade-skinconf.xsl"/>
+ <map:select type="exists">
+ <map:when test="{project:skins-dir}{forrest:skin}/skinconf.xsl">
+ <map:transform src="{project:skins-dir}{forrest:skin}/skinconf.xsl"/>
+ </map:when>
+ </map:select>
+ <map:select type="exists">
+ <map:when test="{forrest:context}/skins/{forrest:skin}/skinconf.xsl">
+ <map:transform src="{forrest:context}/skins/{forrest:skin}/skinconf.xsl"/>
+ </map:when>
+ </map:select>
+ <map:transform src="{forrest:context}/skins/common/skinconf.xsl"/>
+ <map:transform type="skinconf"/>
+ <map:serialize type="xml" />
+ </map:match>
+
+ <!-- Add some build information, which is added to the html head -->
+ <map:match pattern="build-info">
+ <map:generate src="{project:temp-dir}/build-info.xml"/>
+ <map:serialize type="xml"/>
+ </map:match>
+ </map:pipeline>
+
+ <map:pipeline internal-only="false">
+ <!-- ============================================================ -->
+ <!-- SOURCE FORMATS -->
+ <!-- Raw XML sources, typically doc-v12 format -->
+ <!-- ============================================================ -->
+ <!-- http://forrest.apache.org/docs/sitemap-ref.html#source_pipelines -->
+</pre></section><section><title>First Match for '**.xml'</title><pre>
+ <!-- Body content -->
+ <map:match pattern="**.xml">
+
+ <map:match pattern="linkmap.xml">
+ <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="changes.xml">
+ <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="todo.xml">
+ <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**dtdx.xml">
+ <map:mount uri-prefix="" src="dtd.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="forrest-issues.xml">
+ <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**faq.xml">
+ <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="community/**index.xml">
+ <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="community/*/**.xml">
+ <map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" />
+ </map:match>
+
+ <!-- wholesite is preferred; site is here for compatibility -->
+ <map:match pattern="wholesite.xml">
+ <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="site.xml">
+ <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
+ </map:match>
+
+ <!-- Lucene index update and search -->
+ <map:match pattern="lucene-*.xml">
+ <map:mount uri-prefix="" src="search.xmap" check-reload="yes"/>
+ </map:match>
+
+ <!-- Default source types -->
+ <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
+
+ </map:match>
+
+ <!-- Menu content -->
+ <map:match pattern="abs-menulinks">
+ <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**menulinks-*">
+ <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
+ </map:match>
+
+ <!-- Link maps -->
+ <map:match pattern="abs-linkmap">
+ <map:mount uri-prefix="" src="linkmap.xmap"/>
+ </map:match>
+
+ <map:match pattern="**linkmap-*">
+ <map:match pattern="linkmap-wholesite.*">
+ <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="linkmap-site.*">
+ <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
+ </map:match>
+
+ </map:pipeline>
+
+
+ <!-- ============================================================ -->
+ <!-- INTERMEDIATE FORMATS -->
+ <!-- Tabs, menus and body HTML. -->
+ <!-- Called from output format pipelines -->
+ <!-- ============================================================ -->
+ <!-- http://forrest.apache.org/docs/sitemap-ref.html#intermediate_pipelines -->
+
+ <map:pipeline internal-only="false">
+
+ <!-- External matches -->
+ <!-- (HTML rendered directly from special formats) -->
+ <map:match pattern="**body-faq.html">
+ <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
+ </map:match>
+</pre></section><section><title>First Match for '**body-*.html'</title><pre>
+ <map:match pattern="**body-*.html">
+ <map:select type="exists">
+ <map:when test="{project:content.xdocs}{1}{2}.ehtml">
+ <map:generate src="{project:content.xdocs}{1}{2}.ehtml" />
+ <map:transform src="{forrest:stylesheets}/html2htmlbody.xsl" />
+ <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
+ <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
+ <map:serialize type="xml" />
+ </map:when>
+ </map:select>
+ </map:match>
+</pre></section><section><title>Second Match for '**body-*.html'</title><pre>
+ <!-- Default matches -->
+ <!-- (HTML rendered from doc-v11 intermediate format -->
+ <map:match pattern="**body-*.html">
+ <map:generate src="cocoon:/{1}{2}.xml"/>
+</pre></section><section><title>Returning to the '**body-*.html' Pipeline</title><pre>
+ <map:transform type="idgen"/>
+ <map:transform type="xinclude"/>
+ <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
+ <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ <map:parameter name="path" value="{1}{2}.html"/>
+ <map:parameter name="notoc" value="false"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**menu-*.html">
+ <map:generate src="cocoon:/{1}book-{2}.html"/>
+ <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
+ <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
+ <map:call resource="skinit">
+ <map:parameter name="type" value="book2menu"/>
+ <map:parameter name="path" value="{1}{2}.html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**tab-*.html">
+ <map:mount uri-prefix="" src="tabs.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**i18n-*.html">
+ <map:mount uri-prefix="" src="i18n.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**book-*.html">
+ <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
+ </map:match>
+
+ </map:pipeline>
+
+ <!-- ============================================================ -->
+ <!-- OUTPUT FORMATS -->
+ <!-- Serves content directly to the user -->
+ <!-- +==========================================================+ -->
+ <!-- http://forrest.apache.org/docs/sitemap-ref.html#output_pipelines -->
+
+ <map:pipeline internal-only="false">
+ <map:select type="exists">
+ <map:when test="{project:temp-dir}/output.xmap">
+ <map:mount uri-prefix="" src="{project:temp-dir}/output.xmap" check-reload="yes" pass-through="true"/>
+ </map:when>
+ </map:select>
+ </map:pipeline>
+
+ <map:pipeline internal-only="false">
+
+ <map:match pattern="*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/skinconf.xml"/>
+ <map:part src="cocoon:/build-info"/>
+ <map:part src="cocoon:/tab-{0}"/>
+ <map:part src="cocoon:/menu-{0}"/>
+ <map:part src="cocoon:/body-{0}"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ <map:parameter name="path" value="{0}"/>
+ </map:call>
+ </map:match>
+</pre></section><section><title>First Match for "**/*.html"</title><pre>
+ <map:match pattern="**/*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/skinconf.xml"/>
+ <map:part src="cocoon:/build-info"/>
+ <map:part src="cocoon:/{1}/tab-{2}.html"/>
+ <map:part src="cocoon:/{1}/menu-{2}.html"/>
+ <map:part src="cocoon:/{1}/body-{2}.html"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ <map:parameter name="path" value="{0}"/>
+ </map:call>
+ </map:match>
+
+ <map:match type="regexp" pattern="^.+$">
+ <map:select type="exists">
+ <map:when test="{project:content.xdocs}/{0}">
+ <map:mount uri-prefix="" src="raw.xmap" check-reload="yes" />
+ </map:when>
+ </map:select>
+ </map:match>
+
+ <!-- generate faq.fo specially -->
+ <map:match pattern="**faq.fo">
+ <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
+ </map:match>
+
+ <!-- generate .fo from .xml -->
+ <map:match type="regexp" pattern="^(.*?)([^/]*).fo$">
+ <map:select type="exists">
+ <map:when test="{project:content.xdocs}{1}{2}.fo">
+ <map:generate src="{project:content.xdocs}{1}{2}.fo"/>
+ </map:when>
+ <map:otherwise>
+ <map:aggregate element="site">
+ <map:part src="cocoon:/skinconf.xml"/>
+ <map:part src="cocoon:/{1}{2}.xml"/>
+ </map:aggregate>
+ <!-- <map:transform type="idgen"/> -->
+ <map:transform type="xinclude"/>
+ <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.fo"/>
+ <map:select type="exists">
+ <map:when test="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl">
+ <map:transform src="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:when>
+ <map:when test="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl">
+ <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:when>
+ <map:otherwise>
+ <map:transform src="{forrest:context}/skins/common/xslt/fo/document2fo.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:otherwise>
+ </map:select>
+ </map:otherwise>
+ </map:select>
+ <map:serialize type="xml"/>
+ </map:match>
+
+ <map:match type="regexp" pattern="^(.*?)([^/]*).svg$">
+ <map:generate src="cocoon:/{1}{2}.xml"/>
+ <!-- <map:transform type="idgen"/> -->
+ <map:transform type="xinclude"/>
+ <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.svg"/>
+ <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
+ <map:select type="exists">
+ <map:when test="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl">
+ <map:transform src="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:when>
+ <map:when test="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl">
+ <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:when>
+ <map:otherwise>
+ <map:transform src="{forrest:context}/skins/common/xslt/svg/document2svg.xsl">
+ <map:parameter name="imagesdir" value="{project:resources.images}/"/>
+ <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
+ </map:transform>
+ </map:otherwise>
+ </map:select>
+ <map:serialize type="svgxml"/>
+ </map:match>
+
+ <map:match pattern="**changes.rss">
+ <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="profiler">
+ <map:mount uri-prefix="" src="profiler.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**.lucene">
+ <map:mount uri-prefix="" src="search.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:select type="exists">
+ <map:when test="{project:temp-dir}/resources.xmap">
+ <map:mount uri-prefix=""
+ src="{project:temp-dir}/resources.xmap"
+ check-reload="yes"
+ pass-through="true"/>
+ </map:when>
+ </map:select>
+
+ <map:match pattern="**.js">
+ <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="**.css">
+ <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="**images**">
+ <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="**.png">
+ <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
+ </map:match>
+ <map:match pattern="**.ico">
+ <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
+ </map:match>
+ </map:pipeline>
+
+
+
+ <!-- ============================================================ -->
+ <!-- REDIRECTS -->
+ <!-- ============================================================ -->
+ <map:pipeline internal-only="false">
+
+ <map:match pattern="">
+ <map:redirect-to uri="index.html" />
+ </map:match>
+ <map:match type="regexp" pattern="^.+/$">
+ <map:redirect-to uri="index.html"/>
+ </map:match>
+ </map:pipeline>
+
+ </map:pipelines>
+</map:sitemap>
+</pre></section></section></body></document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/howto/sitemap.xmap.source.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/index.source.xml
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/index.source.xml?rev=376128&view=auto
==============================================================================
--- forrest/site/docs_0_80/index.source.xml (added)
+++ forrest/site/docs_0_80/index.source.xml Wed Feb 8 16:26:20 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1"?><!--
+ Copyright 2002-2005 The Apache Software Foundation or its licensors,
+ as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><document>
+ <header>
+ <title>Apache Forrest documentation</title>
+ </header>
+ <body>
+ <section id="project">
+ <title>Project-level documentation</title>
+ <p>
+ See the <link href="../">Apache Forrest Project</link> website for
+ the main project-level documents.
+ </p>
+ </section>
+ <section id="docs">
+ <title>Product documentation</title>
+ <p>
+ For the local docs for the version of Forrest that you are using,
+ see the menu at the left and the tabs above for
+ <link href="site:v0.80//documentation/index">Docs</link> and
+ <link href="site:v0.80//howto/overview">How-To</link> and
+ <link href="site:plugins/index">Plugins</link>.
+ </p>
+ <p>
+ See links to
+ <link href="site:versions/overview">other versions</link>
+ of documentation.
+ </p>
+ </section>
+ </body>
+</document>
\ No newline at end of file
Propchange: forrest/site/docs_0_80/index.source.xml
------------------------------------------------------------------------------
svn:eol-style = native