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 -&gt; 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>&lt;div id="content-main"/&gt;
+       </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>&lt;forrest:hook name="layoutId"/&gt;
+      </code> will be transformed to <code>&lt;div id="layoutId"/&gt; 
+      </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">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </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">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:contract name="content-main"&gt;
+    &lt;forrest:properties contract="content-main"&gt;
+      &lt;forrest:property name="content-main" nugget="get.body"&gt;
+        &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+      &lt;/forrest:property&gt;
+      &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+      &lt;forrest:property name="content-main-conf"&gt;
+        &lt;headings type="underlined"/&gt;
+      &lt;/forrest:property&gt;
+    &lt;/forrest:properties&gt;
+  &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </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>&lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+         </code></p>
+          <p>Contracts can offer some property configuration of the outcome of 
+            the transformation. In our case <code>&lt;forrest:property name="content-main-conf"&gt;
+        &lt;headings type="underlined"/&gt;
+      &lt;/forrest:property&gt;. </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">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:contract name="nav-main"&gt;
+      &lt;forrest:properties contract="nav-main"&gt;
+        &lt;forrest:property name="nav-main" nugget="get.navigation"&gt;
+          &lt;jx:import 
+            uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </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>&lt;forrest:hook name="layoutId"/&gt;
+         </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>&lt;forrest:hook name="leftbar"/&gt;
+        </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">&lt;forrest:hook name="leftbar"&gt;
+  &lt;!-- Include contract here --&gt;
+&lt;/forrest:hook&gt;
+      </source>
+      <p> Our structurer will then look like: </p>
+      <source xml:space="preserve">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;   
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </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>&lt;forrest:css /&gt;
+        </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">&lt;forrest:css &gt;
+/* Extra css */
+/* menu */
+#leftbar {
+  width: 25%;
+  float: left;
+  background: #CCCCFF;
+  border: thin solid #000000;
+}
+&lt;/forrest:css&gt; </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>&lt;forrest:css /&gt;</code> needs to be the direct child of 
+        <code>&lt;forrest:view type="html"&gt;</code>
+      </note>
+      <source xml:space="preserve">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:css &gt;
+/* Extra css */
+/* menu */
+#leftbar {
+  width: 25%;
+  float: left;
+  background: #CCCCFF;
+  border: thin solid #000000;
+}
+    &lt;/forrest:css&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;   
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </source>
+      <p>As a second example, let us change 
+        as well the content-main by adding another hook <code>&lt;forrest:hook name="content"/&gt;
+        </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">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:css &gt;
+/* 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;
+}
+    &lt;/forrest:css&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;
+    &lt;forrest:hook name="content"&gt;
+      &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </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">&lt;forrest:css url="styles.css" media="screen" theme="pelt"/&gt;
+        </source>
+      <p><strong>Important!</strong> This must appear straight after the "view 
+        type" element (as first child): </p>
+      <source xml:space="preserve">&lt;forrest:view type="html"&gt;</source>
+      <source xml:space="preserve">&lt;forrest:css url="mystyles.css" media="screen" theme="pelt"/&gt;
+        </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&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=113471292700001&amp;r=1&amp;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">
+&lt;pointy-brackets&gt;
+  &lt;are-allowed-in-source-CDATA-sections/&gt;
+&lt;/pointy-brackets&gt;
+
+      </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>
+&lt;?xml version="1.0"?&gt;
+&lt;map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"&gt;
+ &lt;map:pipelines&gt;
+</pre><section><title>Example pipeline for '**custom.xml'</title><pre>
+  &lt;map:pipeline&gt;
+   &lt;map:match pattern="**custom.xml"&gt;
+    &lt;map:generate src="{project:content.xdocs}{1}custom.xml" /&gt;
+    &lt;map:transform src="{project:resources.stylesheets}/hello2document.xsl" /&gt;
+    &lt;map:serialize type="xml"/&gt;
+   &lt;/map:match&gt;
+  &lt;/map:pipeline&gt;
+ &lt;/map:pipelines&gt;
+&lt;/map:sitemap&gt;
+</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>
+&lt;?xml version="1.0"?&gt;
+&lt;!-- ===============================================
+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 $
+==================================================== --&gt;
+</pre><section><title>Start of Sitemap</title><pre>
+&lt;map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"&gt;
+  &lt;map:components&gt;
+    &lt;map:generators default="file"&gt;
+      &lt;map:generator name="file"      src="org.apache.cocoon.generation.FileGenerator" /&gt;
+      &lt;map:generator name="html"
+                     src="org.apache.cocoon.generation.HTMLGenerator"&gt;
+        &lt;jtidy-config&gt;WEB-INF/jtidy.properties&lt;/jtidy-config&gt;
+      &lt;/map:generator&gt;
+      &lt;map:generator name="exception"
+                  src="org.apache.cocoon.generation.ParseExceptionGenerator"/&gt;
+      &lt;!--
+      &lt;map:generator name="html"      src="org.apache.cocoon.generation.HTMLGenerator"&gt;
+        &lt;jtidy-config&gt;jtidy.properties&lt;/jtidy-config&gt;
+      &lt;/map:generator&gt;
+      &lt;map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" /&gt;
+      --&gt;
+      &lt;map:generator name="notifier" src="org.apache.cocoon.sitemap.NotifyingGenerator" /&gt;
+      
+      &lt;map:generator name="text2xml" logger="sitemap.generator.textgenerator"
+                     src="org.apache.cocoon.generation.TextGenerator"&gt;
+       &lt;parameter name="localizable" value="true"/&gt;
+      &lt;/map:generator&gt;
+
+    &lt;/map:generators&gt;
+
+    &lt;map:transformers default="xslt"&gt;
+
+      &lt;!-- Add values to skinconf that need extra processing like the color shades --&gt;
+      &lt;map:transformer name="skinconf" src="org.apache.forrest.conf.SkinconfTransformer"/&gt;
+              
+      &lt;!-- Generates @id attributes from &lt;title&gt; strings --&gt;
+      &lt;map:transformer name="idgen" src="org.apache.forrest.util.IdGeneratorTransformer"&gt;
+        &lt;element&gt;//*[local-name() = 'section']&lt;/element&gt;
+        &lt;id&gt;title/text()&lt;/id&gt;
+      &lt;/map:transformer&gt;
+
+      &lt;!-- Rewrites links, e.g. transforming href="site:index" to href="../index.html" --&gt;
+      &lt;!-- See http://forrest.apache.org/docs/sitemap-ref.html#linkrewriting_impl --&gt;
+      &lt;map:transformer name="linkrewriter" logger="sitemap.transformer.linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer"&gt;
+        &lt;link-attrs&gt;href src&lt;/link-attrs&gt;
+        &lt;schemes&gt;site ext&lt;/schemes&gt;
+
+        &lt;input-module name="site"&gt;
+          &lt;input-module name="linkmap"&gt;
+            &lt;file src="{src}" reloadable="true" /&gt;
+          &lt;/input-module&gt;
+          &lt;prefix&gt;/site//&lt;/prefix&gt;
+          &lt;suffix&gt;/@href&lt;/suffix&gt;
+        &lt;/input-module&gt;
+        &lt;input-module name="ext"&gt;
+          &lt;input-module name="linkmap"&gt;
+            &lt;file src="{src}" reloadable="true" /&gt;
+          &lt;/input-module&gt;
+          &lt;prefix&gt;/site/external-refs//&lt;/prefix&gt;
+          &lt;suffix&gt;/@href&lt;/suffix&gt;
+        &lt;/input-module&gt;
+      &lt;/map:transformer&gt;
+
+      &lt;map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.forrest.util.XPathTransformer" /&gt;
+      
+      &lt;map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2"&gt;
+        &lt;use-request-parameters&gt;false&lt;/use-request-parameters&gt;
+        &lt;use-browser-capabilities-db&gt;false&lt;/use-browser-capabilities-db&gt;
+        &lt;use-deli&gt;false&lt;/use-deli&gt;
+        &lt;transformer-factory&gt;org.apache.xalan.processor.TransformerFactoryImpl&lt;/transformer-factory&gt;
+        &lt;!--&lt;transformer-factory&gt;net.sf.saxon.TransformerFactoryImpl&lt;/transformer-factory&gt;--&gt;
+        &lt;!--&lt;transformer-factory&gt;com.icl.saxon.TransformerFactoryImpl&lt;/transformer-factory&gt;--&gt;
+        &lt;!--&lt;transformer-factory&gt;org.apache.xalan.xsltc.trax.TransformerFactoryImpl&lt;/transformer-factory&gt;--&gt;
+      &lt;/map:transformer&gt;
+      
+      &lt;map:transformer name="xsltc" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2"&gt;
+        &lt;use-request-parameters&gt;false&lt;/use-request-parameters&gt;
+        &lt;use-browser-capabilities-db&gt;false&lt;/use-browser-capabilities-db&gt;
+        &lt;use-deli&gt;false&lt;/use-deli&gt;
+        &lt;transformer-factory&gt;org.apache.xalan.xsltc.trax.TransformerFactoryImpl&lt;/transformer-factory&gt;
+      &lt;/map:transformer&gt;
+
+      &lt;map:transformer name="xslt-saxon"
+         pool-grow="2" pool-max="32" pool-min="8"
+         src="org.apache.cocoon.transformation.TraxTransformer"&gt;
+       &lt;use-request-parameters&gt;false&lt;/use-request-parameters&gt;
+       &lt;use-browser-capabilities-db&gt;false&lt;/use-browser-capabilities-db&gt;
+       &lt;xslt-processor-role&gt;saxon&lt;/xslt-processor-role&gt;
+     &lt;/map:transformer&gt;
+      
+      &lt;map:transformer name="xinclude" src="org.apache.cocoon.transformation.XIncludeTransformer" logger="sitemap.transformer.xinclude" pool-grow="2" pool-max="16" pool-min="2" /&gt;
+
+      &lt;map:transformer name="cinclude" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.transformation.CIncludeTransformer" logger="sitemap.transformer.cinclude"/&gt;
+   &lt;map:transformer name="pattern"
+                    src="org.apache.cocoon.transformation.PatternTransformer" 
+                    logger="sitemap.transformer.pattern"&gt;
+    &lt;parameter name="groups" value="true"/&gt;
+   &lt;/map:transformer&gt;
+   &lt;map:transformer name="lexer"
+                    src="org.apache.cocoon.transformation.LexicalTransformer" 
+                    logger="sitemap.transformer.lexer"&gt;
+    &lt;parameter name="localizable" value="true"/&gt;
+   &lt;/map:transformer&gt;
+   &lt;map:transformer name="parser"
+                    src="org.apache.cocoon.transformation.ParserTransformer" 
+                    logger="sitemap.transformer.parser"&gt;
+    &lt;parameter name="flatten" value="true"/&gt;
+    &lt;parameter name="recovery" value="true"/&gt;
+    &lt;parameter name="localizable" value="true"/&gt;
+   &lt;/map:transformer&gt;
+    &lt;/map:transformers&gt;
+
+    &lt;map:readers default="resource"&gt;
+      &lt;map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/&gt;
+    &lt;/map:readers&gt;
+
+    &lt;map:serializers default="html"&gt;
+      &lt;map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer"&gt;
+        &lt;doctype-public&gt;-//W3C//DTD HTML 4.01 Transitional//EN&lt;/doctype-public&gt;
+        &lt;doctype-system&gt;http://www.w3.org/TR/html4/loose.dtd&lt;/doctype-system&gt;
+        &lt;encoding&gt;UTF-8&lt;/encoding&gt;
+      &lt;/map:serializer&gt;
+
+      &lt;map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"/&gt;
+
+      &lt;map:serializer name="xml-document" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"&gt;
+        &lt;cdata-section-elements&gt;source&lt;/cdata-section-elements&gt;
+        &lt;doctype-public&gt;-//APACHE//DTD Documentation V1.3//EN&lt;/doctype-public&gt;
+        &lt;doctype-system&gt;document-v13.dtd&lt;/doctype-system&gt;
+      &lt;/map:serializer&gt;
+
+      &lt;map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer"&gt;
+        &lt;encoding&gt;ISO-8859-1&lt;/encoding&gt;
+      &lt;/map:serializer&gt;
+      
+      &lt;map:serializer name="svgxml" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="image/svg+xml"&gt;
+        &lt;doctype-public&gt;-//W3C//DTD SVG 1.0//EN&lt;/doctype-public&gt;
+        &lt;doctype-system&gt;http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd&lt;/doctype-system&gt;
+      &lt;/map:serializer&gt;
+      &lt;map:serializer logger="sitemap.serializer.text" mime-type="text/plain" name="text" src="org.apache.cocoon.serialization.TextSerializer"&gt;
+        &lt;encoding&gt;UTF-8&lt;/encoding&gt;
+      &lt;/map:serializer&gt;
+      
+     &lt;!--
+      &lt;map:serializer mime-type="application/x-shockwave-flash" name="swf" src="org.apache.cocoon.serialization.SWFSerializer"/&gt;
+      &lt;map:serializer mime-type="application/msword" name="fo2rtf" src="org.apache.cocoon.serialization.RTFSerializer"/&gt;
+      --&gt;
+    &lt;/map:serializers&gt;
+
+    &lt;map:matchers default="wildcard"&gt;
+      &lt;map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/&gt;
+      &lt;map:matcher name="regexp" src="org.apache.cocoon.matching.RegexpURIMatcher"/&gt;
+    &lt;/map:matchers&gt;
+
+    &lt;map:selectors&gt;
+      &lt;map:selector logger="sitemap.selector.exists" name="exists" src="org.apache.forrest.sourceexists.SourceExistsSelector" /&gt;
+   &lt;map:selector logger="sitemap.selector.exception" name="exception"
+                 src="org.apache.cocoon.selection.ExceptionSelector"&gt;
+     &lt;exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/&gt;
+     &lt;exception class="java.lang.Throwable" unroll="true"/&gt;
+   &lt;/map:selector&gt;
+    &lt;/map:selectors&gt;
+
+    &lt;map:pipes default="caching"&gt;
+      &lt;map:pipe name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/&gt;
+      &lt;!--
+      &lt;map:pipe name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/&gt;
+      &lt;map:pipe name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/&gt;
+      &lt;map:pipe name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/&gt;
+      --&gt;
+    &lt;/map:pipes&gt;
+  &lt;/map:components&gt;
+
+  &lt;!-- 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.
+  &lt;map:views&gt;
+    &lt;map:view name="links" from-position="last"&gt;
+      &lt;map:transform src="{forrest:stylesheets}/filterlinks.xsl"&gt;
+        &lt;map:parameter name="ctxbasedir" value="{realpath:.}/"/&gt;
+      &lt;/map:transform&gt;
+      &lt;map:serialize type="links"/&gt;
+    &lt;/map:view&gt;
+  &lt;/map:views&gt;
+  --&gt;
+
+  &lt;map:resources&gt;
+    &lt;map:resource name="skinit"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl"&gt;
+            &lt;map:transform src="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl"&gt;
+              &lt;map:parameter name="notoc" value="{notoc}"/&gt;
+              &lt;!-- For backwards-compat with 0.2 - 0.4 skins --&gt;
+              &lt;map:parameter name="isfaq" value="{notoc}"/&gt;
+              &lt;map:parameter name="nopdf" value="{nopdf}"/&gt;
+              &lt;map:parameter name="path" value="{path}"/&gt;
+              &lt;map:parameter name="config-file" value="{project:skinconf}"/&gt;
+            &lt;/map:transform&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise&gt;
+            &lt;map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/html/{type}.xsl"&gt;
+              &lt;map:parameter name="notoc" value="{notoc}"/&gt;
+              &lt;!-- For backwards-compat with 0.2 - 0.4 skins --&gt;
+              &lt;map:parameter name="isfaq" value="{notoc}"/&gt;
+              &lt;map:parameter name="nopdf" value="{nopdf}"/&gt;
+              &lt;map:parameter name="path" value="{path}"/&gt;
+              &lt;map:parameter name="config-file" value="{project:skinconf}"/&gt;
+            &lt;/map:transform&gt;
+          &lt;/map:otherwise&gt;
+        &lt;/map:select&gt;
+      &lt;map:serialize/&gt;
+    &lt;/map:resource&gt;
+
+  &lt;/map:resources&gt;
+</pre></section><section><title>Start of Pipelines</title><pre>
+  &lt;!-- =========================== Pipelines ================================= --&gt;
+  &lt;map:pipelines&gt;
+
+  &lt;map:pipeline type="caching" internal-only="true"&gt;
+</pre></section><section><title>Test for First Pipeline</title><pre>
+      &lt;map:match pattern="*.xlex"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="resources/chaperon/grammars/{1}.xlex"&gt;
+            &lt;map:read src="resources/chaperon/grammars/{1}.xlex"/&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise&gt;
+            &lt;map:generate  type="text2xml"   src="{forrest:context}/resources/chaperon/grammars/{1}.grm"/&gt;
+            &lt;map:transform type="lexer"  src="{forrest:context}/resources/chaperon/grammars/grm.xlex"/&gt;
+            &lt;map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/grm.xgrm"/&gt;
+            &lt;map:transform               src="{forrest:context}/resources/chaperon/stylesheets/text4regex.xsl"/&gt;
+            &lt;map:transform type="lexer"  src="{forrest:context}/resources/chaperon/grammars/regex.xlex"/&gt;
+            &lt;map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/regex.xgrm"/&gt;
+            &lt;map:transform               src="{forrest:context}/resources/chaperon/stylesheets/grm2xlex.xsl"/&gt;
+            &lt;map:serialize type="xml"/&gt;
+          &lt;/map:otherwise&gt;
+        &lt;/map:select&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;
+</pre></section><section><title>Insertion Point for Project Sitemap</title><pre>
+      &lt;!--
+         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.
+      --&gt;
+      &lt;map:pipeline internal-only="false"&gt;
+           &lt;map:select type="exists"&gt;
+             &lt;map:when test="{project:sitemap}"&gt;
+               &lt;map:mount uri-prefix=""
+                          src="{project:sitemap}" 
+                          check-reload="yes" 
+                          pass-through="true"/&gt;
+             &lt;/map:when&gt;
+           &lt;/map:select&gt;
+      &lt;/map:pipeline&gt;
+      
+      &lt;map:pipeline internal-only="false"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:temp-dir}/internal.xmap"&gt;
+            &lt;map:mount uri-prefix="" src="{project:temp-dir}/internal.xmap" check-reload="yes" pass-through="true"/&gt;
+          &lt;/map:when&gt;
+        &lt;/map:select&gt;
+      &lt;/map:pipeline&gt;
+      
+      &lt;map:pipeline internal-only="false"&gt;
+         &lt;map:match pattern="skinconf.xml"&gt;
+           &lt;map:generate src="{project:skinconf}" /&gt;
+           &lt;map:transform src="{forrest:stylesheets}/strip-doctype.xsl"/&gt;
+           &lt;map:transform src="{forrest:stylesheets}/upgrade-skinconf.xsl"/&gt;
+           &lt;map:select type="exists"&gt;
+             &lt;map:when test="{project:skins-dir}{forrest:skin}/skinconf.xsl"&gt;
+               &lt;map:transform src="{project:skins-dir}{forrest:skin}/skinconf.xsl"/&gt;
+             &lt;/map:when&gt;
+           &lt;/map:select&gt;
+           &lt;map:select type="exists"&gt;
+             &lt;map:when test="{forrest:context}/skins/{forrest:skin}/skinconf.xsl"&gt;
+               &lt;map:transform src="{forrest:context}/skins/{forrest:skin}/skinconf.xsl"/&gt;
+             &lt;/map:when&gt;
+           &lt;/map:select&gt;
+           &lt;map:transform src="{forrest:context}/skins/common/skinconf.xsl"/&gt;
+           &lt;map:transform type="skinconf"/&gt;
+           &lt;map:serialize type="xml" /&gt;
+         &lt;/map:match&gt;
+
+         &lt;!-- Add some build information, which is added to the html head --&gt;
+         &lt;map:match pattern="build-info"&gt;
+           &lt;map:generate src="{project:temp-dir}/build-info.xml"/&gt;
+           &lt;map:serialize type="xml"/&gt;
+         &lt;/map:match&gt;
+       &lt;/map:pipeline&gt;
+       
+    &lt;map:pipeline internal-only="false"&gt;
+      &lt;!-- ============================================================ --&gt;
+      &lt;!-- SOURCE FORMATS                                               --&gt;
+      &lt;!--                 Raw XML sources, typically doc-v12 format    --&gt;
+      &lt;!-- ============================================================ --&gt;
+      &lt;!-- http://forrest.apache.org/docs/sitemap-ref.html#source_pipelines --&gt;
+</pre></section><section><title>First Match for '**.xml'</title><pre>
+      &lt;!-- Body content --&gt;
+      &lt;map:match pattern="**.xml"&gt;
+     
+        &lt;map:match pattern="linkmap.xml"&gt;
+          &lt;map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+              
+        &lt;map:match pattern="changes.xml"&gt;
+          &lt;map:mount uri-prefix="" src="status.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="todo.xml"&gt;
+          &lt;map:mount uri-prefix="" src="status.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="**dtdx.xml"&gt;
+          &lt;map:mount uri-prefix="" src="dtd.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="forrest-issues.xml"&gt;
+          &lt;map:mount uri-prefix="" src="issues.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="**faq.xml"&gt;
+          &lt;map:mount uri-prefix="" src="faq.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="community/**index.xml"&gt;
+          &lt;map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:match pattern="community/*/**.xml"&gt;
+          &lt;map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;!-- wholesite is preferred; site is here for compatibility --&gt;
+        &lt;map:match pattern="wholesite.xml"&gt;
+          &lt;map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+        &lt;map:match pattern="site.xml"&gt;
+          &lt;map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;!-- Lucene index update and search --&gt;
+        &lt;map:match pattern="lucene-*.xml"&gt;
+          &lt;map:mount uri-prefix="" src="search.xmap" check-reload="yes"/&gt;
+        &lt;/map:match&gt;
+
+        &lt;!-- Default source types --&gt;
+        &lt;map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" /&gt;
+
+      &lt;/map:match&gt;
+
+      &lt;!-- Menu content --&gt;
+      &lt;map:match pattern="abs-menulinks"&gt;
+        &lt;map:mount uri-prefix="" src="menu.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**menulinks-*"&gt;
+        &lt;map:mount uri-prefix="" src="menu.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;!-- Link maps --&gt;
+      &lt;map:match pattern="abs-linkmap"&gt;
+        &lt;map:mount uri-prefix="" src="linkmap.xmap"/&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**linkmap-*"&gt;
+        &lt;map:match pattern="linkmap-wholesite.*"&gt;
+          &lt;map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+        &lt;map:match pattern="linkmap-site.*"&gt;
+          &lt;map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" /&gt;
+        &lt;/map:match&gt;
+
+        &lt;map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+    &lt;/map:pipeline&gt;
+
+
+    &lt;!-- ============================================================ --&gt;
+    &lt;!-- INTERMEDIATE FORMATS                                         --&gt;
+    &lt;!--                          Tabs, menus and body HTML.          --&gt;
+    &lt;!--                       Called from output format pipelines    --&gt;
+    &lt;!-- ============================================================ --&gt;
+    &lt;!-- http://forrest.apache.org/docs/sitemap-ref.html#intermediate_pipelines --&gt;
+
+    &lt;map:pipeline internal-only="false"&gt;
+
+      &lt;!-- External matches --&gt;
+      &lt;!-- (HTML rendered directly from special formats) --&gt;
+      &lt;map:match pattern="**body-faq.html"&gt;
+        &lt;map:mount uri-prefix="" src="faq.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+</pre></section><section><title>First Match for '**body-*.html'</title><pre>
+      &lt;map:match pattern="**body-*.html"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:content.xdocs}{1}{2}.ehtml"&gt;
+            &lt;map:generate src="{project:content.xdocs}{1}{2}.ehtml" /&gt;
+            &lt;map:transform src="{forrest:stylesheets}/html2htmlbody.xsl" /&gt;
+            &lt;map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/&gt;
+            &lt;map:transform src="resources/stylesheets/declare-broken-site-links.xsl" /&gt;
+            &lt;map:serialize type="xml" /&gt;
+          &lt;/map:when&gt;
+        &lt;/map:select&gt;
+      &lt;/map:match&gt;
+</pre></section><section><title>Second Match for '**body-*.html'</title><pre>
+      &lt;!-- Default matches --&gt;
+      &lt;!-- (HTML rendered from doc-v11 intermediate format --&gt;
+      &lt;map:match pattern="**body-*.html"&gt;
+        &lt;map:generate src="cocoon:/{1}{2}.xml"/&gt;
+</pre></section><section><title>Returning to the '**body-*.html' Pipeline</title><pre>
+        &lt;map:transform type="idgen"/&gt;
+        &lt;map:transform type="xinclude"/&gt;
+        &lt;map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/&gt;
+        &lt;map:transform src="resources/stylesheets/declare-broken-site-links.xsl" /&gt;
+        &lt;map:call resource="skinit"&gt;
+          &lt;map:parameter name="type" value="document2html"/&gt;
+          &lt;map:parameter name="path" value="{1}{2}.html"/&gt;
+          &lt;map:parameter name="notoc" value="false"/&gt;
+        &lt;/map:call&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**menu-*.html"&gt;
+        &lt;map:generate src="cocoon:/{1}book-{2}.html"/&gt;
+        &lt;map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/&gt;
+        &lt;map:transform src="resources/stylesheets/declare-broken-site-links.xsl" /&gt;
+        &lt;map:call resource="skinit"&gt;
+          &lt;map:parameter name="type" value="book2menu"/&gt;
+          &lt;map:parameter name="path" value="{1}{2}.html"/&gt;
+        &lt;/map:call&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**tab-*.html"&gt;
+        &lt;map:mount uri-prefix="" src="tabs.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+      
+      &lt;map:match pattern="**i18n-*.html"&gt;
+        &lt;map:mount uri-prefix="" src="i18n.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**book-*.html"&gt;
+        &lt;map:mount uri-prefix="" src="menu.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+    &lt;/map:pipeline&gt;
+
+    &lt;!-- ============================================================ --&gt;
+    &lt;!-- OUTPUT FORMATS                                               --&gt;
+    &lt;!--                  Serves content directly to the user         --&gt;
+    &lt;!-- +==========================================================+ --&gt;
+    &lt;!-- http://forrest.apache.org/docs/sitemap-ref.html#output_pipelines --&gt;
+
+    &lt;map:pipeline internal-only="false"&gt;
+      &lt;map:select type="exists"&gt;
+        &lt;map:when test="{project:temp-dir}/output.xmap"&gt;
+          &lt;map:mount uri-prefix="" src="{project:temp-dir}/output.xmap" check-reload="yes" pass-through="true"/&gt;
+        &lt;/map:when&gt;
+      &lt;/map:select&gt;
+    &lt;/map:pipeline&gt;
+
+    &lt;map:pipeline internal-only="false"&gt;
+
+      &lt;map:match pattern="*.html"&gt;
+        &lt;map:aggregate element="site"&gt;
+          &lt;map:part src="cocoon:/skinconf.xml"/&gt;
+          &lt;map:part src="cocoon:/build-info"/&gt;
+          &lt;map:part src="cocoon:/tab-{0}"/&gt;
+          &lt;map:part src="cocoon:/menu-{0}"/&gt;
+          &lt;map:part src="cocoon:/body-{0}"/&gt;
+        &lt;/map:aggregate&gt;
+        &lt;map:call resource="skinit"&gt;
+          &lt;map:parameter name="type" value="site2xhtml"/&gt;
+          &lt;map:parameter name="path" value="{0}"/&gt;
+        &lt;/map:call&gt;
+      &lt;/map:match&gt;
+</pre></section><section><title>First Match for "**/*.html"</title><pre>
+  &lt;map:match pattern="**/*.html"&gt;
+    &lt;map:aggregate element="site"&gt;
+      &lt;map:part src="cocoon:/skinconf.xml"/&gt;
+      &lt;map:part src="cocoon:/build-info"/&gt;
+      &lt;map:part src="cocoon:/{1}/tab-{2}.html"/&gt;
+      &lt;map:part src="cocoon:/{1}/menu-{2}.html"/&gt;
+      &lt;map:part src="cocoon:/{1}/body-{2}.html"/&gt;
+    &lt;/map:aggregate&gt;
+    &lt;map:call resource="skinit"&gt;
+      &lt;map:parameter name="type" value="site2xhtml"/&gt;
+      &lt;map:parameter name="path" value="{0}"/&gt;
+    &lt;/map:call&gt;
+  &lt;/map:match&gt;
+
+      &lt;map:match type="regexp" pattern="^.+$"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:content.xdocs}/{0}"&gt;
+            &lt;map:mount uri-prefix="" src="raw.xmap" check-reload="yes" /&gt;
+          &lt;/map:when&gt;
+        &lt;/map:select&gt;
+      &lt;/map:match&gt;
+
+      &lt;!-- generate faq.fo specially  --&gt;
+      &lt;map:match pattern="**faq.fo"&gt;
+        &lt;map:mount uri-prefix="" src="faq.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;!-- generate .fo from .xml  --&gt;
+      &lt;map:match type="regexp" pattern="^(.*?)([^/]*).fo$"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:content.xdocs}{1}{2}.fo"&gt;
+            &lt;map:generate src="{project:content.xdocs}{1}{2}.fo"/&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise&gt;
+            &lt;map:aggregate element="site"&gt;
+              &lt;map:part src="cocoon:/skinconf.xml"/&gt;
+              &lt;map:part src="cocoon:/{1}{2}.xml"/&gt;
+            &lt;/map:aggregate&gt;
+            &lt;!-- &lt;map:transform type="idgen"/&gt; --&gt;
+            &lt;map:transform type="xinclude"/&gt;
+            &lt;map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.fo"/&gt;
+            &lt;map:select type="exists"&gt;
+              &lt;map:when test="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl"&gt;
+                &lt;map:transform src="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl"&gt;
+                  &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+                  &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+                &lt;/map:transform&gt;
+              &lt;/map:when&gt;
+              &lt;map:when test="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl"&gt;
+                &lt;map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl"&gt;
+                  &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+                  &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+                &lt;/map:transform&gt;
+              &lt;/map:when&gt;
+              &lt;map:otherwise&gt;
+                &lt;map:transform src="{forrest:context}/skins/common/xslt/fo/document2fo.xsl"&gt;
+                  &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+                  &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+                &lt;/map:transform&gt;
+              &lt;/map:otherwise&gt;
+            &lt;/map:select&gt;
+        &lt;/map:otherwise&gt;
+      &lt;/map:select&gt;
+        &lt;map:serialize type="xml"/&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match type="regexp" pattern="^(.*?)([^/]*).svg$"&gt;
+        &lt;map:generate src="cocoon:/{1}{2}.xml"/&gt;
+        &lt;!-- &lt;map:transform type="idgen"/&gt; --&gt;
+        &lt;map:transform type="xinclude"/&gt;
+        &lt;map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.svg"/&gt;
+        &lt;map:transform src="resources/stylesheets/declare-broken-site-links.xsl" /&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl"&gt;
+            &lt;map:transform src="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl"&gt;
+              &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+              &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+            &lt;/map:transform&gt;
+          &lt;/map:when&gt;
+          &lt;map:when test="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl"&gt;
+            &lt;map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl"&gt;
+              &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+              &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+            &lt;/map:transform&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise&gt;
+            &lt;map:transform src="{forrest:context}/skins/common/xslt/svg/document2svg.xsl"&gt;
+              &lt;map:parameter name="imagesdir" value="{project:resources.images}/"/&gt;
+              &lt;map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/&gt;
+            &lt;/map:transform&gt;
+          &lt;/map:otherwise&gt;
+        &lt;/map:select&gt;
+        &lt;map:serialize type="svgxml"/&gt;
+      &lt;/map:match&gt;
+      
+      &lt;map:match pattern="**changes.rss"&gt;
+        &lt;map:mount uri-prefix="" src="status.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="profiler"&gt;
+        &lt;map:mount uri-prefix="" src="profiler.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:match pattern="**.lucene"&gt;
+        &lt;map:mount uri-prefix="" src="search.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+
+      &lt;map:select type="exists"&gt;
+         &lt;map:when test="{project:temp-dir}/resources.xmap"&gt;
+           &lt;map:mount uri-prefix=""
+                      src="{project:temp-dir}/resources.xmap" 
+                      check-reload="yes" 
+                      pass-through="true"/&gt;
+        &lt;/map:when&gt;
+      &lt;/map:select&gt;
+      
+      &lt;map:match pattern="**.js"&gt;
+        &lt;map:mount uri-prefix="" src="resources.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+      &lt;map:match pattern="**.css"&gt;
+        &lt;map:mount uri-prefix="" src="resources.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+      &lt;map:match pattern="**images**"&gt;
+        &lt;map:mount uri-prefix="" src="resources.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+      &lt;map:match pattern="**.png"&gt;
+        &lt;map:mount uri-prefix="" src="resources.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+     &lt;map:match pattern="**.ico"&gt;
+        &lt;map:mount uri-prefix="" src="resources.xmap" check-reload="yes" /&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;
+
+
+
+    &lt;!-- ============================================================ --&gt;
+    &lt;!-- REDIRECTS                                                    --&gt;
+    &lt;!-- ============================================================ --&gt;
+    &lt;map:pipeline internal-only="false"&gt;
+
+      &lt;map:match pattern=""&gt;
+        &lt;map:redirect-to uri="index.html" /&gt;
+      &lt;/map:match&gt;
+      &lt;map:match type="regexp" pattern="^.+/$"&gt;
+          &lt;map:redirect-to uri="index.html"/&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;
+
+  &lt;/map:pipelines&gt;
+&lt;/map:sitemap&gt;
+</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