You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by je...@apache.org on 2003/03/15 07:21:52 UTC

cvs commit: xml-forrest/src/resources/conf dtd.xmap editor.xmap faq.xmap forrest.xmap issues.xmap linkmap.xmap navigation.xmap profiler.xmap redirect.xmap revisions.xmap sitemap-working.xmap static.xmap status.xmap cocoon.xconf logkit.xconf sitemap.xmap web.xml

jefft       2003/03/14 22:21:52

  Modified:    src/resources/conf cocoon.xconf logkit.xconf sitemap.xmap
                        web.xml
  Added:       src/resources/conf dtd.xmap editor.xmap faq.xmap
                        forrest.xmap issues.xmap linkmap.xmap
                        navigation.xmap profiler.xmap redirect.xmap
                        revisions.xmap sitemap-working.xmap static.xmap
                        status.xmap
  Log:
  Completely rewritten sitemap, with source formats separated into subsitemaps
  
  Revision  Changes    Path
  1.11      +336 -466  xml-forrest/src/resources/conf/cocoon.xconf
  
  Index: cocoon.xconf
  ===================================================================
  RCS file: /home/cvs/xml-forrest/src/resources/conf/cocoon.xconf,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- cocoon.xconf	8 Jan 2003 05:44:34 -0000	1.10
  +++ cocoon.xconf	15 Mar 2003 06:21:51 -0000	1.11
  @@ -1,460 +1,85 @@
   <?xml version="1.0" encoding="UTF-8"?>
  -<cocoon version="2.0">
  +<cocoon version="2.1">
   
  -<!-- ================ Apache Cocoon configuration file ================== -->
  -<!-- For full description of the components and their parameters ...
  -     - Apache Cocoon User Documentation at /userdocs/
  -     - webapp/cocoon.xconf (this file) - describes each core component
  -     - each optional component/.../*.xconf - these describe the parameters
  -     for each component and are automatically included at build-time.
  -
  -     The notes that accompany the settings below are intended to be concise.
  --->
  -
  -<!-- ===================== General Components =========================== -->
  -
  -  <xml-parser class="org.apache.avalon.excalibur.xml.JaxpParser" 
  -              logger="core.xml-parser" pool-grow="4" pool-max="32" pool-min="8">
  -
  -  <!-- Parser:
  -    The default parser used in Apache Cocoon is
  -    org.apache.avalon.excalibur.xml.JaxpParser. Apache Cocoon requires a 
  -    JAXP 1.1 parser.
  -    If you have problems because your servlet environment uses its own
  -    parser not conforming to JAXP 1.1 try using the alternative
  -    XercesParser instead of the JaxpParser. To activate the XercesParser,
  -    change the class attribute to
  -      class="org.apache.avalon.excalibur.xml.XercesParser"
  -    You will also need to add a system property to your JVM,
  -    probably on the startup of your servlet engine like this:
  -    -Dorg.apache.avalon.excalibur.xml.Parser=org.apache.avalon.excalibur.xml.XercesParser
  -
  -    Configuration for the JaxpParser (not the XercesParser!):
  -    - validate (boolean, default = false): This parameter causes the parser 
  -        to be a validating parser.
  -        XML validation is only being used for the documentation build.
  -        (If you are going to use it elsewhere, then do so with caution.)
  -        You really should have validated all of your XML documents already,
  -        according to their proper DTD or schema. Do not expect Cocoon to do it.
  -    - namespace-prefixes (boolean, default = false) : do we want
  -        namespaces declarations also as 'xmlns:' attributes ?
  -        Note : setting this to true confuses some XSL processors (e.g. Saxon).
  -    - stop-on-warning (boolean, default = true) : should the parser
  -        stop parsing if a warning occurs ?
  -    - stop-on-recoverable-error (boolean, default = true) : should the parser
  -        stop parsing if a recoverable error occurs ?
  -    - reuse-parsers (boolean, default = true) : do we want to reuse
  -        parsers or create a new parser for each parse ?
  -        Note : even if this parameter is true, parsers are not
  -        recycled in case of parsing errors : some parsers (e.g. Xerces) don't like
  -        to be reused after failure.
  -    - sax-parser-factory (string) : the name of the SAXParserFactory
  -        implementation class to be used instead of using the standard JAXP mechanism
  -        (SAXParserFactory.newInstance()). This allows to choose
  -        unambiguously the JAXP implementation to be used when several of them are
  -        available in the classpath.
  -    - document-builder-factory (string) : the name of the
  -        DocumentBuilderFactory implementation to be used (similar to
  -        sax-parser-factory for DOM).
  -  -->
  -    <parameter name="validate" value="false"/>
  -    <parameter name="namespace-prefixes" value="false"/>
  -    <parameter name="stop-on-warning" value="true"/>
  -    <parameter name="stop-on-recoverable-error" value="true"/>
  -    <parameter name="reuse-parsers" value="false"/>
  -    <!--
  -    <parameter name="sax-parser-factory" value="???"/>
  -    <parameter name="document-builder-factory" value="???"/>
  -    -->
  -  </xml-parser>
  -  
  -  <!-- ============================ STORE ============================ -->
  -  <!-- Persistent store for the cache. Two store implementations to choose
  -       from:
  -         * FilesystemStore: Simple. Dependable. Thorougly tested.
  -         * JispFilesystemStore: Scalable. New kid on the block.
  -           
  -       Common configuration parameters:
  -         use-cache-directory: Indicates that cache directory specified in
  -                              web.xml should be used.
  -         use-work-directory: Indicates that work directory specified in
  -                             web.xml should be used.
  -         directory: Specifies directory to use. Absolute or relative to the
  -                    work directory.
  -  -->
  -
  -  <persistent-store class="org.apache.cocoon.components.store.JispFilesystemStore"
  -                    logger="core.store.persistent">
  -    <parameter name="use-cache-directory" value="true"/>
  -    <parameter name="datafile" value="cocoon-cache.dat"/>
  -    <parameter name="indexfile" value="cocoon-cache.idx"/>
  -    <parameter name="order" value="1701"/>
  -  </persistent-store>
  -
  -  <!-- Memory Storing: -->
  -  <transient-store logger="core.store.transient">
  -     <!-- Indicates how many objects will be hold in the cache.
  -     When the number of maxobjects has been reached. The last object in the 
  -     cache will be thrown out. -->
  -     <parameter name="maxobjects" value="100"/>
  -
  -     <!-- Turns the swapping of the objects into persistent cache on
  -          and off. -->
  -     <parameter name="use-persistent-cache" value="true"/>
  -  </transient-store>
  -
  -  <!-- Store Janitor:
  -    Be careful with the heapsize and freememory parameters. Wrong values can
  -    cause high cpu usage. Example configuration:
  -    Jvm settings: 
  -       -Xmx200000000
  -    store-janitor settings:
  -       <parameter name="freememory" value="5000000"/>
  -       <parameter name="heapsize" value="150000000"/>
  -  
  -    It is recommended to have heapsize equal to -Xmx, especially
  -    on Sun's JVM which are unable to shrink its heap once it grows above minimum. 
  -    Freememory should be greater than amount of memory necessary for normal 
  -    application operation.
  -  -->
  -  <store-janitor logger="core.store.janitor">
  -     <!-- How much free memory shall be available in the jvm -->                 
  -     <parameter name="freememory" value="1000000"/>
  -     <!-- Indicates the limit of the jvm memory consumption. The default max 
  -     heapsize for Sun's JVM is 64Mb -->
  -     <parameter name="heapsize" value="67108864"/>
  -     <!-- How often shall the cleanup thread check memory -->
  -     <parameter name="cleanupthreadinterval" value="10"/>
  -     <!-- Indicates the thread priority of the cleanup thread -->
  -     <parameter name="threadpriority" value="5"/>
  -     <!-- How much percent of the elements of each registered Store shall
  -     be removed when low on memory. Default 10% -->
  -     <parameter name="percent_to_free" value="10"/>
  -  </store-janitor>
  -  <!-- ============================ STORE END ========================= -->
  -
  -  <!-- XSLT Processor:
  -    For Xalan: Turn 'incremental-processing' to true if you want a continous output 
  -    (if set to false the transformer delivers SAX events after all transformations has been done). 
  -  -->
  -  <xslt-processor logger="core.xslt-processor">
  -     <parameter name="use-store" value="false"/> 
  -     <parameter name="incremental-processing" value="true"/>
  -  </xslt-processor>
  -
  -  <!-- Xpath Processor:
  -  -->
  -  <xpath-processor class="org.apache.avalon.excalibur.xml.xpath.XPathProcessorImpl" logger="core.xpath-processor"/>
  -
  -  <!-- URL Factory:
  -    The url factory adds special url protocols to the system, they are then
  -    available inside Cocoon, e.g. as a source argument for one of the sitemap
  -    components.
  -    THIS COMPONENT IS DEPRECATED AND SHOULD NOT BE USED ANYMORE 
  -  -->
  -  <url-factory logger="core.url-factory">
  -    <!-- Allows access to resources available from the ClassLoader,
  -         using getResource() method. -->
  -    <protocol class="org.apache.cocoon.components.url.ResourceURLFactory" name="resource"/>
  -    <!-- Allows access to resources available from the servlet context,
  -         using getResource() method. -->
  -    <protocol class="org.apache.cocoon.components.url.ContextURLFactory" name="context"/>
  -    <!-- Add here protocol factories for your own protocols -->
  -  </url-factory>
  -
  -  <!-- Source Handler:
  -    The source handler adds special url protocols to the system, they are
  -    then available inside Cocoon, e.g. as a source argument for one of the
  -    sitemap components.
  -    THIS COMPONENT IS DEPRECATED AND SHOULD NOT BE USED ANYMORE 
  -  -->
  -  <source-handler logger="core.source-handler">
  -    <!-- file protocol : this is a WriteableSource -->
  -    <protocol class="org.apache.cocoon.components.source.FileSourceFactory" name="file"/>
  -
  -  
  -
  -
  -</source-handler>
  -
  -  <!-- Source Factories
  -       Each source factory adds a special uri protocol to the system.
  -       This will replace the source-handler and url-factory components.
  -  -->
  -  <source-factories>
  -      <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
  -      <component-instance class="org.apache.cocoon.components.source.impl.ContextSourceFactory" name="context"/>
  -      <component-instance class="org.apache.cocoon.components.source.impl.SitemapSourceFactory" name="cocoon"/>
  -      <!-- file protocol : this is a WriteableSource -->
  -      <component-instance class="org.apache.cocoon.components.source.impl.FileSourceFactory" name="file"/>
  -  
  -
  -
  -
  -</source-factories>
  -
  -  <!-- The XMLizer converts different mime-types to XML -->
  -  <xmlizer>
  -      <component-instance class="org.apache.excalibur.xmlizer.impl.TextXMLizer" name="text/xml"/>
  -      <component-instance class="org.apache.excalibur.xmlizer.impl.HTMLXMLizer" name="text/html"/>
  -  </xmlizer>
  -
  -  <!-- Program Generator:
  -    The ProgamGenerator builds programs from a XML document written in a
  -    MarkupLanguage.
  -       auto-reload:
  -       root-package: persistent code repository.
  -       preload:
  -  -->
  -  <program-generator logger="core.program-generator">
  -    <parameter name="auto-reload" value="true"/>
  -    <parameter name="root-package" value="org.apache.cocoon.www"/>
  -    <parameter name="preload" value="true"/>
  -  </program-generator>
  -
  -  <!-- Programming Languages: -->
  -  <programming-languages>
  -    <java-language logger="core.language.java" name="java">
  -      <!-- Specifies which formatter to use to format source code.
  -           This parameter is optional. 
  -           It is commented out because of bug #5689: Java "code-formatter" incorrectly formats double values
  -      <parameter name="code-formatter" value="org.apache.cocoon.components.language.programming.java.JstyleFormatter"/>
  -      -->
  -      <!-- A singleton-like implementation of a ClassLoader -->
  -      <parameter name="class-loader" value="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"/>
  -    
  -      <!-- Compiler parameter specifies which class to use to compile Java.
  -           Possible variants are:
  -             Javac. Requires javac.jar (included with JDK as lib/toools.jar).
  -             Pizza. Requires pizza.jar (included with Cocoon distribution).
  -             Jikes. Requires IBM jikes compiler to be present in the PATH  -->
  -      <parameter name="compiler" value="org.apache.cocoon.components.language.programming.java.Javac"/>
  -</java-language>
  -
  -</programming-languages>
  -
  -  <!-- Class loader:
  -    A singleton-like implementation of a ClassLoader.
  -  -->
  -  <classloader class="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl" logger="core.classloader"/>
  -  
  -  <!-- Markup Languages:
  -    This section defines several builtin logicsheets. A logicsheet is an XML
  -    filter used to translate user-defined, dynamic markup into equivalent
  -    code embedding directives for a given markup language.
  -  -->
  -  <markup-languages>
  -    <xsp-language logger="core.markup.xsp" name="xsp">
  -      <parameter name="prefix" value="xsp"/>
  -      <parameter name="uri" value="http://apache.org/xsp"/>
  -
  -      <target-language name="java">
  -        <!-- Defines the XSP Core logicsheet for the Java language -->
  -        <parameter name="core-logicsheet" value="resource://org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl"/>
  -        
  -        <!-- The Request logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
  -             around standard request operations -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xsp-request"/>
  -          <parameter name="uri" value="http://apache.org/xsp/request/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/request.xsl"/>
  -        </builtin-logicsheet>
  -       
  -        <!-- The Response logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
  -             around standard response operations -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xsp-response"/>
  -          <parameter name="uri" value="http://apache.org/xsp/response/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/response.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <!-- The Session logicsheet (taglib) is an XSP logicsheet that wraps XML tags around 
  -             standard session operations. Specifically, the Session logicsheet provides an 
  -             XML interface to most methods of the HttpSession object (see the Java Servlet API 
  -             Specification, version 2.2 ) for more information. -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xsp-session"/>
  -          <parameter name="uri" value="http://apache.org/xsp/session/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/session.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <!-- The Cookie logicsheet (taglib) is an XSP logicsheet that wraps XML tags 
  -             around standard cookie operations -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xsp-cookie"/>
  -          <parameter name="uri" value="http://apache.org/xsp/cookie/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/cookie.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <!-- The ESQL logicsheet is an XSP logicsheet that performs sql queries and 
  -             serializes their results as XML. This allows you to work with data from a 
  -             wide variety of different sources when using Apache Cocoon. -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="esql"/>
  -          <parameter name="uri" value="http://apache.org/cocoon/SQL/v2"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/esql.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="log"/>
  -          <parameter name="uri" value="http://apache.org/xsp/log/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/log.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="util"/>
  -          <parameter name="uri" value="http://apache.org/xsp/util/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/util.xsl"/>
  -        </builtin-logicsheet>
  -        
  -        <!-- The xsp-formval taglib serves as interface to retrieve validation results 
  -             from a request attribute -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xsp-formval"/>
  -          <parameter name="uri" value="http://apache.org/xsp/form-validator/2.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/form-validator.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <!-- The sel taglib allows to put multiple pages / view into
  -             one xsp. While in general it is good style to put
  -             different views into different xsp because they're more
  -             easily maintained, this is a useful feature with
  -             e.g. with long forms that are broken into parts -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="sel"/>
  -          <parameter name="uri" value="http://apache.org/xsp/sel/1.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/sel.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="action"/>
  -          <parameter name="uri" value="http://apache.org/cocoon/action/1.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/action.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <!-- The capture taglib is for capturing parts of the XSP-generated XML as
  -             XML fragments or DOM nodes -->
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="capture"/>
  -          <parameter name="uri" value="http://apache.org/cocoon/capture/1.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/capture.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="xscript"/>
  -          <parameter name="uri" value="http://apache.org/xsp/xscript/1.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/xscript.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="soap"/>
  -          <parameter name="uri" value="http://apache.org/xsp/soap/3.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/soap.xsl"/>
  -        </builtin-logicsheet>
  -
  -        <builtin-logicsheet>
  -          <parameter name="prefix" value="jpath"/>
  -          <parameter name="uri" value="http://apache.org/xsp/jpath/1.0"/>
  -          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/jpath.xsl"/>
  -        </builtin-logicsheet>
  -
  -      </target-language>
  -    
  -</xsp-language>
  -
  -  </markup-languages>
  -
  -  <!-- Compiling xml to byte streams.
  -    The xml-serializer "compiles" xml sax events into a byte stream
  -    and the xml-deserializer does the same vice versa.
  -    Make sure, that if you change one of these components, that you
  -    may have to change the other one as well, as they might have
  -    a dependency.
  -  -->
  -  <xml-serializer class="org.apache.cocoon.components.sax.XMLByteStreamCompiler" logger="core.xml-serializer" pool-grow="4" pool-max="32" pool-min="8"/>
  -
  -  <xml-deserializer class="org.apache.cocoon.components.sax.XMLByteStreamInterpreter" logger="core.xml-deserializer" pool-grow="4" pool-max="32" pool-min="8"/>
  -
  -
  -<!-- ======================== The sitemap  ============================== -->
  -
  -  <!--
  -    New implementation of the sitemap. It is interpreted, so load times are super-fast,
  -    and request processing is slightly faster than with the compiled engine thanks to
  -    the HotSpot VM.
  -
  -    Reloading of the sitemap:
  -    The check-reload attribute determines if the sitemap is reloaded on change.
  -    Set to "no", the sitemap is generated once at startup.
  -    Set to "yes", the sitemap is regenerated if it changes.
  -
  -    For development environment, set the check-reload to yes.
  -    For production environment, it is advisable to set the check-reload to no.
  -  -->
  +<!--+
  +    |  This is the Apache Cocoon configuration file. This is the place
  +    |  where you configure the components that Cocoon uses internally (stuff
  +    |  like the cache) or handles to the pipeline components
  +    |  (stuff like XML parsers or XSLT processors).
  +    +-->
  +
  +<!-- =========================== Sitemap =============================== -->
  +
  +  <!--+
  +      | New implementation of the sitemap. It is interpreted, so load times are super-fast,
  +      | and request processing is slightly faster than with the compiled engine thanks to
  +      | the HotSpot VM.
  +      |
  +      | Reloading of the sitemap:
  +      |   The check-reload attribute determines if the sitemap is reloaded on change.
  +      |   Set to "no", the sitemap is generated once at startup.
  +      |   Set to "yes", the sitemap is regenerated if it changes.
  +      |
  +      | For development environment, set the check-reload to yes.
  +      | For production environment, it is advisable to set the check-reload to no.
  +      +-->
     <sitemap check-reload="yes" config="resource://org/apache/cocoon/components/treeprocessor/treeprocessor-builtins.xml" file="context://sitemap.xmap" logger="sitemap"/>
   
   
  +<!-- =================== Sitemap Input/Output Modules ====================== -->
   
  -
  -
  -  <!-- Entity resolution catalogs: *********************************************
  -    catalog:
  -    The default catalog is distributed at /WEB-INF/entities/catalog
  -    This is the contextual pathname for Cocoon resources.
  -    You can override this path, if necessary, using the "catalog" parameter.
  -   <parameter name="catalog" value="/WEB-INF/entities/catalog"/>
  -    However, it is probably desirable to leave this default catalog config
  -    and declare your own local catalogs, which are loaded in addition to
  -    the system catalog.
  -
  -    There are various ways to do local configuration (see "Entity Catalogs"
  -    documentation). One way is via the CatalogManager.properties file.
  -    As an additional method, you can specify the "local-catalog" parameter here.
  -
  -    local-catalog:
  -    The full filesystem pathname to a single local catalog file.
  -   <parameter name="local-catalog" value="/usr/local/sgml/mycatalog"/>
  -
  -    verbosity:
  -    The level of messages for status/debug (messages go to standard output)
  -    The following messages are provided ...
  -     0 = none
  -     1 = ? (... not sure yet)
  -     2 = 1+, Loading catalog, Resolved public, Resolved system
  -     3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
  -     10 = 3+, List all catalog entries when loading a catalog
  -    (Cocoon also logs the "Resolved public" messages.) 
  -    TODO: determine all messages at each level
  -   <parameter name="verbosity" value="2"/>
  -
  -  ************************************************************************** -->
  -  <entity-resolver class="org.apache.cocoon.components.resolver.ResolverImpl" logger="core.resolver">
  -   <parameter name="catalog" value="/resources/schema/catalog"/>
  -   <parameter name="local-catalog" value="@local-catalog@"/>
  -   <parameter name="verbosity" value="@catalog-verbosity@"/>
  -  </entity-resolver>
  -
  -  <!-- =============== Sitemap In/Out/Database Modules ==================== -->
  -   
  -   <input-modules logger="core.modules.input">
  -      <component-instance name="global"           class="org.apache.cocoon.components.modules.input.GlobalInputModule"/>
  -      <component-instance name="request"        	class="org.apache.cocoon.components.modules.input.RequestModule"/>
  -      <component-instance name="session"         	class="org.apache.cocoon.components.modules.input.SessionModule"/>
  -      <component-instance name="request-param"   	class="org.apache.cocoon.components.modules.input.RequestParameterModule"/>
  -      <component-instance name="request-attr" 	  class="org.apache.cocoon.components.modules.input.RequestAttributeModule"/>
  -      <component-instance name="request-header"  	class="org.apache.cocoon.components.modules.input.HeaderAttributeModule"/>
  -      <component-instance name="session-attr"   	class="org.apache.cocoon.components.modules.input.SessionAttributeModule"/>
  -      <component-instance name="system-property" 	class="org.apache.cocoon.components.modules.input.SystemPropertyModule"/>
  -      <component-instance name="constant"  		    class="org.apache.cocoon.components.modules.input.StringConstantModule"/>
  -      <component-instance name="random"    		    class="org.apache.cocoon.components.modules.input.RandomNumberModule"/>
  -      <component-instance name="digest"         	class="org.apache.cocoon.components.modules.input.DigestMetaModule"/>
  -      <component-instance name="date"           	class="org.apache.cocoon.components.modules.input.DateInputModule"/>
  -      <component-instance name="nullinput"      	class="org.apache.cocoon.components.modules.input.NullInputModule"/>
  -      <component-instance name="xmlmeta"        	class="org.apache.cocoon.components.modules.input.XMLMetaModule"/>
  -      <component-instance name="mapmeta"          class="org.apache.cocoon.components.modules.input.MapMetaModule"/>
  -      <component-instance name="defaults"       class="org.apache.cocoon.components.modules.input.DefaultsMetaModule">
  +  <!--+
  +      | InputModules are a replacement to reading values directly
  +      | e.g. from request parameters. By using this abstraction and
  +      | indirection, other components can be more generic and changes
  +      | to the application logic are easier.
  +      |
  +      | A number of components already use InputModules: the sitemap processor, 
  +      | flow, some matchers, the linkrewriting transformer, database actions
  +      | and more.
  +	  |
  +      | For example the sitemap processor allows to obtain a value
  +      | named "foo" from an the InputModule for request parameters by
  +      | writing {request-param:foo} wherever a sitemap variable is
  +      | allowed. 
  +	  |
  +      | Some InputModules need the help of other InputModules to
  +      | obtain values and only apply a function to the obtained value
  +      | or change the name of the attribute. These modules usually
  +      | carry "Meta" in their name. An example is the ChainMetaModule
  +      | which tries several other modules in turn until a non-null
  +      | value is obtained or all modules are tied.
  +	  |
  +      | For details and optional configuration parameters refer to the
  +      | accompanying javadocs.
  +      +-->
  +  <input-modules>
  +    <component-instance class="org.apache.cocoon.components.modules.input.GlobalInputModule" logger="core.modules.input" name="global"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.RequestModule" logger="core.modules.input" name="request"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.SessionModule" logger="core.modules.input" name="session"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.RequestParameterModule" logger="core.modules.input" name="request-param"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.RawRequestParameterModule" logger="core.modules.input" name="raw-request-param"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.RequestAttributeModule" logger="core.modules.input" name="request-attr"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.HeaderAttributeModule" logger="core.modules.input" name="request-header"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.SessionAttributeModule" logger="core.modules.input" name="session-attr"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.SystemPropertyModule" logger="core.modules.input" name="system-property"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.StringConstantModule" logger="core.modules.input" name="constant"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.RandomNumberModule" logger="core.modules.input" name="random"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.DigestMetaModule" logger="core.modules.input" name="digest"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.DateInputModule" logger="core.modules.input" name="date">
  +      <!-- <format>EEE, d MMM yyyy HH:mm:ss Z</format> -->
  +      <!--Eg: Mon, 28 Oct 2002 03:08:49 +1100 -->
  +    </component-instance>
  +    <component-instance class="org.apache.cocoon.components.modules.input.NullInputModule" logger="core.modules.input" name="nullinput"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.XMLMetaModule" logger="core.modules.input" name="xmlmeta"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.MapMetaModule" logger="core.modules.input" name="mapmeta"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.DateMetaInputModule" logger="core.modules.input" name="datemeta"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.XMLFormInput" logger="core.modules.input" name="xmlform"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.JXPathMetaModule" logger="core.modules.input" name="jxpath"/>
  +    <component-instance class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule" logger="core.modules.input" name="simplemap"/>
  +       <component-instance name="defaults"       class="org.apache.cocoon.components.modules.input.DefaultsMetaModule">
           <values>
  -          <skin>@skin@</skin>
  +          <skin>forrest-site</skin>
             <base-url>/forrest</base-url>
           </values>
         </component-instance>
  @@ -494,29 +119,274 @@
         </component-instance>
   
   
  -      <!--
  -      For backwards-compat: interpret {context:context} as
  -      {request:contextPath}
  -      -->
  -      <component-instance
  -        class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
  -        logger="core.modules.mapper" name="context">
  -        <input-module name="request"/>
  -        <suffix>Path</suffix>
  -      </component-instance>
  +</input-modules>
   
  -   </input-modules>
   
  -   <output-modules>
  -      <component-instance logger="core.modules.output" name="request-attr" class="org.apache.cocoon.components.modules.output.RequestAttributeOutputModule"/>
  -      <component-instance logger="core.modules.output" name="session-attr"   class="org.apache.cocoon.components.modules.output.SessionAttributeOutputModule"/>
  -   </output-modules>
  +<!-- ================================= XML ================================ -->
   
  +  <!--+
  +      | XML Parser
  +      |
  +      | The default parser used in Apache Cocoon is
  +      | org.apache.excalibur.xml.impl.JaxpParser. Apache Cocoon requires a
  +      | JAXP 1.1 parser.
  +      | If you have problems because your servlet environment uses its own
  +      | parser not conforming to JAXP 1.1 try using the alternative
  +      | XercesParser instead of the JaxpParser. To activate the XercesParser,
  +      | change the class attribute to
  +      |   class="org.apache.excalibur.xml.impl.XercesParser"
  +      | You will also need to add a system property to your JVM,
  +      | probably on the startup of your servlet engine like this:
  +      | -Dorg.apache.excalibur.xml.sax.SAXParser=org.apache.excalibur.xml.impl.XercesParser
  +      |
  +      | Configuration for the JaxpParser (not the XercesParser!):
  +      | - validate (boolean, default = false): This parameter causes the parser
  +      |     to be a validating parser.
  +      |     XML validation is only being used for the documentation build.
  +      |     (If you are going to use it elsewhere, then do so with caution.)
  +      |     You really should have validated all of your XML documents already,
  +      |     according to their proper DTD or schema. Do not expect Cocoon to do it.
  +      | - namespace-prefixes (boolean, default = false) : do we want
  +      |     namespaces declarations also as 'xmlns:' attributes ?
  +      |     Note : setting this to true confuses some XSL processors (e.g. Saxon).
  +      | - stop-on-warning (boolean, default = true) : should the parser
  +      |     stop parsing if a warning occurs ?
  +      | - stop-on-recoverable-error (boolean, default = true) : should the parser
  +      |     stop parsing if a recoverable error occurs ?
  +      | - reuse-parsers (boolean, default = true) : do we want to reuse
  +      |     parsers or create a new parser for each parse ?
  +      |     Note : even if this parameter is true, parsers are not
  +      |     recycled in case of parsing errors : some parsers (e.g. Xerces) don't like
  +      |     to be reused after failure.
  +      | - sax-parser-factory (string) : the name of the SAXParserFactory
  +      |     implementation class to be used instead of using the standard JAXP mechanism
  +      |     (SAXParserFactory.newInstance()). This allows to choose
  +      |     unambiguously the JAXP implementation to be used when several of them are
  +      |     available in the classpath.
  +      | - document-builder-factory (string) : the name of the
  +      |     DocumentBuilderFactory implementation to be used (similar to
  +      |     sax-parser-factory for DOM).
  +      +-->
  +  
  +  <!-- HSQLDB Server for samples:
  +    Comment this section out if you don't care about the samples.
  +        port   : number      port where the server is listening
  +        silent : true/false  display all queries
  +        trace  : true/false  display JDBC trace messages
  +        -->
  +        <!--
  +  <hsqldb-server class="org.apache.cocoon.components.hsqldb.ServerImpl" logger="core.hsqldb-server" pool-max="1" pool-min="1">
  +     <parameter name="port" value="9002"/>
  +     <parameter name="silent" value="true"/>
  +     <parameter name="trace" value="false"/>
  +   </hsqldb-server>
  +   -->
   
  -</cocoon>
  +<xml-parser class="org.apache.excalibur.xml.impl.JaxpParser" logger="core.xml-parser" pool-grow="4" pool-max="32" pool-min="8">
  +    <parameter name="validate" value="false"/>
  +    <parameter name="namespace-prefixes" value="false"/>
  +    <parameter name="stop-on-warning" value="true"/>
  +    <parameter name="stop-on-recoverable-error" value="true"/>
  +    <parameter name="reuse-parsers" value="false"/>
  +    <!--parameter name="sax-parser-factory" value="???"/-->
  +    <!--parameter name="document-builder-factory" value="???"/-->
  +  </xml-parser>
  +
  +  <!--+
  +      | Entity resolution catalogs
  +      |
  +      | The default catalog is distributed at /WEB-INF/entities/catalog
  +      | This is the contextual pathname for Cocoon resources.
  +      | You can override this path, if necessary, using the "catalog" parameter:
  +      |
  +      |    <parameter name="catalog" value="/WEB-INF/entities/catalog"/>
  +      |
  +      | However, it is probably desirable to leave this default catalog config
  +      | and declare your own local catalogs, which are loaded in addition to
  +      | the system catalog.
  +      |
  +      | There are various ways to do local configuration (see "Entity Catalogs"
  +      | documentation). One way is via the CatalogManager.properties file.
  +      | As an additional method, you can specify the "local-catalog" parameter here.
  +      |
  +      | local-catalog:
  +      |   The full filesystem pathname to a single local catalog file.
  +      |
  +      |  <parameter name="local-catalog" value="/usr/local/sgml/mycatalog"/>
  +      |
  +      | verbosity:
  +      | The level of messages for status/debug (messages go to standard output)
  +      | The following messages are provided ...
  +      |  0 = none
  +      |  1 = ? (... not sure yet)
  +      |  2 = 1+, Loading catalog, Resolved public, Resolved system
  +      |  3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
  +      |  10 = 3+, List all catalog entries when loading a catalog
  +      |    (Cocoon also logs the "Resolved public" messages.)
  +      |
  +      |     <parameter name="verbosity" value="2"/>
  +      +-->
  +  <entity-resolver class="org.apache.cocoon.components.resolver.ResolverImpl" logger="core.resolver">
  +    <parameter name="catalog" value="/resources/schema/catalog"/>
  +    <parameter name="local-catalog" value="/home/jeff/apache/xml/xml-forrest/src/documentation/resources/schema/catalog"/>
  +    <parameter name="verbosity" value="1"/>
  +  </entity-resolver>
  +
  +  <!--+
  +      | XSLT Processor
  +      |
  +      | 'incremental-processing' (only works with Xalan) allows the XSLT
  +      | processor to start the output of the transformation as soon as possible.
  +      | if set to false, the transforer waits until the end of the
  +      | transformation to deliver the output.
  +      +-->
  +  <xslt-processor logger="core.xslt-processor">
  +     <parameter name="use-store" value="false"/>
  +     <parameter name="incremental-processing" value="true"/>
  +  </xslt-processor>
  +
  +  <!-- Xpath Processor: -->
  +  <xpath-processor class="org.apache.excalibur.xml.xpath.XPathProcessorImpl" logger="core.xpath-processor"/>
  +
  +  <!-- The XMLizers converts different mime-types to XML -->
  +  <xmlizer>
  +      <parser mime-type="text/html"  role="org.apache.excalibur.xml.sax.SAXParser/HTML"/>
  +      <parser mime-type="text/xml"   role="org.apache.excalibur.xml.sax.SAXParser"/>
  +      <parser mime-type="text/plain" role="org.apache.excalibur.xml.sax.SAXParser/Text"/>
  +</xmlizer>
  +
  +<!-- ============================ Object Stores =========================== -->
  +
  +  <!--+
  +      | Transient Store: holds objects that don't have to survive shutdown
  +      +-->
  +  <transient-store logger="core.store.transient">
  +
  +     <!--+
  +         | Indicates how many objects will be hold in the cache.
  +         | When the number of maxobjects has been reached. The last object in the
  +         | cache will be thrown out.
  +         +-->
  +     <parameter name="maxobjects" value="100"/>
  +
  +     <!-- Turns the swapping of the objects into persistent cache on and off. -->
  +     <parameter name="use-persistent-cache" value="true"/>
  +  </transient-store>
  +
  +  <!--+
  +      | Persistent Store: holds objects that have to survive shutdown.
  +      | WARNING: FilesystemStore is broken. Cocoon uses JispFilesystemStore instead.
  +      |
  +      | Common configuration parameters:
  +      |  use-cache-directory: Indicates that cache directory specified in
  +      |                       web.xml should be used.
  +      |  use-work-directory: Indicates that work directory specified in
  +      |                      web.xml should be used.
  +      |  directory: Specifies directory to use. Absolute or relative to the
  +      |             work directory.
  +      |
  +      | JispFilesystemStore configuration parameters:
  +      |  datafile: Name of the store file to use. Defaults to cocoon.dat
  +      |  indexfile: Name of the index file to use. Defaults to cocoon.idx
  +      |  order: FIXME: put description here.
  +      +-->
  +  <persistent-store class="org.apache.cocoon.components.store.JispFilesystemStore"
  +                    logger="core.store.persistent">
  +    <parameter name="use-cache-directory" value="true"/>
  +    <parameter name="order" value="2701"/>
  +  </persistent-store>
  +
  +  <!--+
  +      | Store Janitor: the store garbage collector and memory usage controller.
  +      |
  +      | Be careful with the heapsize and freememory parameters. Wrong values can
  +      | cause high cpu usage. Example configuration:
  +      | Jvm settings:
  +      |    -Xmx200000000
  +      | store-janitor settings:
  +      |    <parameter name="freememory" value="5000000"/>
  +      |    <parameter name="heapsize" value="150000000"/>
  +      |
  +      | It is recommended to have heapsize equal to -Xmx, especially
  +      | on Sun's JVM which are unable to shrink its heap once it grows above minimum.
  +      | Freememory should be greater than amount of memory necessary for normal
  +      | application operation.
  +      +-->
  +  <store-janitor logger="core.store.janitor">
  +     <!-- How much free memory shall be available in the jvm -->
  +     <parameter name="freememory" value="1000000"/>
  +     <!-- Indicates the limit of the jvm memory consumption. The default max heapsize for Sun's JVM is 64Mb -->
  +     <parameter name="heapsize" value="67108864"/>
  +     <!-- How often shall the cleanup thread check memory -->
  +     <parameter name="cleanupthreadinterval" value="10"/>
  +     <!-- Indicates the thread priority of the cleanup thread -->
  +     <parameter name="threadpriority" value="5"/>
  +     <!-- How much percent of the elements of each registered Store shall be removed when low on memory. Default 10% -->
  +     <parameter name="percent_to_free" value="10"/>
  +  </store-janitor>
  +
  +<!-- ========================= Protocol Handlers =========================== -->
  +
  +  <!--+
  +      | Source Factories
  +      |
  +      | Each source factory adds a special uri protocol to the system.
  +      +-->
  +  <source-factories>
  +    <component-instance class="org.apache.excalibur.source.impl.ResourceSourceFactory" name="resource"/>
  +    <component-instance class="org.apache.cocoon.components.source.impl.ContextSourceFactory" name="context"/>
  +    <component-instance class="org.apache.cocoon.components.source.impl.SitemapSourceFactory" name="cocoon"/>
  +    <component-instance class="org.apache.cocoon.components.source.impl.FileSourceFactory" name="file"/>
  +    <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
  +  </source-factories>
   
   
  +<!-- ====================== System Components =========================== -->
  +
  +  <!--+
  +      | The core classloader implementation
  +      +-->
  +  <classloader class="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl" logger="core.classloader"/>
   
  +  <!--+
  +      | XML compiler/decompiler
  +      |
  +      | these components are used to process SAX events and produce a binary
  +      | representation that is much more compact and efficient for
  +      | subsequent parsing. These are used by the cache system to save
  +      | the intermediate results of the pipeline stages reducing the overhead
  +      | of xml parsing/serialization.
  +      +-->
  +  <xml-serializer class="org.apache.cocoon.components.sax.XMLByteStreamCompiler" logger="core.xml-serializer" pool-grow="4" pool-max="32" pool-min="8"/>
  +  <xml-deserializer class="org.apache.cocoon.components.sax.XMLByteStreamInterpreter" logger="core.xml-deserializer" pool-grow="4" pool-max="32" pool-min="8"/>
   
  +  <!--+
  +      | The Monitor keeps track on changes to a Resource.
  +      +-->
  +  <monitor logger="core.monitor">
  +    <thread frequency="10000" priority="5"/>
  +  </monitor>
  +
  +  <!--+
  +      | The Cache Manager is a component that can be used to cache content.
  +      | It is currently used by the cinclude transformer
  +      +-->
  +  <component class="org.apache.cocoon.transformation.helpers.DefaultIncludeCacheManager" role="org.apache.cocoon.transformation.helpers.IncludeCacheManager">
  +    <!-- Set the preemptive-loader-url to a pipeline inside Cocoon that contains the
  +         preemptive loader action. The URL must be absolute! 
  +    <parameter name="preemptive-loader-url" 
  +               value="http://localhost:8080/cocoon/samples/cinclude/loader"/>
  +    -->
  + </component>
   
   
  +  <!-- Profiler:
  +    The profiler facilitates the gathering of statistics about timings of
  +    different steps of pipelines. Profiler consists of several components:
  +     profiling pipeline and profiler generator
  +    which are used to generate the profile report. You need to enable all of
  +    these components to use profiler.
  +    -->
  +  <profiler results="10"/>
  +
  +</cocoon>
  
  
  
  1.5       +60 -13    xml-forrest/src/resources/conf/logkit.xconf
  
  Index: logkit.xconf
  ===================================================================
  RCS file: /home/cvs/xml-forrest/src/resources/conf/logkit.xconf,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- logkit.xconf	5 Feb 2003 09:39:20 -0000	1.4
  +++ logkit.xconf	15 Mar 2003 06:21:52 -0000	1.5
  @@ -34,13 +34,21 @@
   
       <cocoon id="sitemap">
         <filename>${context-root}/WEB-INF/logs/sitemap.log</filename>
  -     
  +
         <format type="cocoon">
           %7.7{priority} %{time}   [%{category}] (%{uri}) %{thread}/%{class:short}: %{message}\n%{throwable}
         </format>
         <append>false</append>
       </cocoon>
   
  +    <cocoon id="linkrewriter">
  +      <filename>${context-root}/WEB-INF/logs/linkrewriter.log</filename>
  +      <format type="cocoon">
  +        %7.7{priority} [%{category}] (%{uri}) %{thread}/%{class:short}: %{message}\n%{throwable}
  +      </format>
  +      <append>false</append>
  +    </cocoon>
  +
       <cocoon id="access">
         <filename>${context-root}/WEB-INF/logs/access.log</filename>
         <format type="cocoon">
  @@ -48,7 +56,7 @@
         </format>
         <append>false</append>
       </cocoon>
  -   
  +
       <!-- The logger for the flow layer -->
       <cocoon id="flow">
         <filename>${context-root}/WEB-INF/logs/flow.log</filename>
  @@ -58,6 +66,15 @@
         <append>false</append>
       </cocoon>
   
  +    <!-- The logger for the xmlform components -->
  +    <cocoon id="xmlform">
  +      <filename>${context-root}/WEB-INF/logs/xmlform.log</filename>
  +      <format type="cocoon">
  +        %7.7{priority} %{time}   [%{category}] (%{uri}) %{thread}/%{class:short}: %{message}\n%{throwable}
  +      </format>
  +      <append>false</append>
  +    </cocoon>
  +
       <!--
         This log file gets only messages with log level ERROR and below.
       -->
  @@ -83,32 +100,51 @@
         When defining subcategory manually, it is required to specify log
         targets, because they are not inherited in this case.
       -->
  -    <category name="core" log-level="ERROR">
  +    <category name="core" log-level="WARN">
         <!-- Startup component manager logger -->
  -      <category name="startup" log-level="DEBUG">
  +      <category name="startup" log-level="WARN">
  +        <log-target id-ref="core"/>
  +        <log-target id-ref="error"/>
  +      </category>
  +
  +      <category name="roles" log-level="WARN">
           <log-target id-ref="core"/>
           <log-target id-ref="error"/>
         </category>
   
  -      <category name="roles" log-level="ERROR">
  +      <category name="instrument" log-level="WARN">
  +        <category name="values" log-level="WARN">
  +          <log-target id-ref="core"/>
  +          <log-target id-ref="error"/>
  +        </category>
           <log-target id-ref="core"/>
           <log-target id-ref="error"/>
         </category>
   
         <!-- Cocoon component manager logger -->
  -      <category name="manager" log-level="ERROR">
  +      <category name="manager" log-level="WARN">
           <log-target id-ref="core"/>
           <log-target id-ref="error"/>
         </category>
   
         <!-- Cocoon cache and stores logger -->
  -      <category name="store" log-level="ERROR">
  +      <category name="store" log-level="WARN">
           <log-target id-ref="core"/>
           <log-target id-ref="error"/>
         </category>
   
         <!-- Cocoon source repository logger -->
  -      <category name="repositories" log-level="ERROR">
  +      <category name="repositories" log-level="WARN">
  +        <log-target id-ref="core"/>
  +        <log-target id-ref="error"/>
  +      </category>
  +
  +      <!-- Cocoon store logger -->
  +      <category name="store" log-level="WARN">
  +        <category name="janitor" log-level="INFO">
  +          <log-target id-ref="core"/>
  +          <log-target id-ref="error"/>
  +        </category>
           <log-target id-ref="core"/>
           <log-target id-ref="error"/>
         </category>
  @@ -117,19 +153,30 @@
         <log-target id-ref="error"/>
       </category>
   
  -    <category name="sitemap" log-level="ERROR">
  -      <log-target id-ref="sitemap"/>
  +    <category name="sitemap" log-level="WARN">
  +      <category name="linkrewriter" log-level="INFO">
  +        <log-target id-ref="linkrewriter"/>
  +        <log-target id-ref="sitemap"/>
  +        <log-target id-ref="error"/>
  +      </category>
  +       <log-target id-ref="sitemap"/>
         <log-target id-ref="error"/>
       </category>
   
  -    <category name="access" log-level="ERROR">
  +    <category name="access" log-level="WARN">
         <log-target id-ref="access"/>
         <log-target id-ref="error"/>
  -    </category> 
  +    </category>
   
  -    <category name="flow" log-level="ERROR">
  +    <category name="flow" log-level="WARN">
         <log-target id-ref="flow"/>
         <log-target id-ref="error"/>
       </category>
  +
  +    <category name="xmlform" log-level="WARN">
  +      <log-target id-ref="xmlform"/>
  +      <log-target id-ref="error"/>
  +    </category>
  +
     </categories>
   </logkit>
  
  
  
  1.72      +320 -828  xml-forrest/src/resources/conf/sitemap.xmap
  
  Index: sitemap.xmap
  ===================================================================
  RCS file: /home/cvs/xml-forrest/src/resources/conf/sitemap.xmap,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- sitemap.xmap	2 Mar 2003 16:18:08 -0000	1.71
  +++ sitemap.xmap	15 Mar 2003 06:21:52 -0000	1.72
  @@ -1,832 +1,324 @@
   <?xml version="1.0"?>
   <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  -<!-- =========================== Components ================================ -->
  -   <map:components>
  -      <map:generators default="file">
  -         <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content" />
  -         
  -         <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content" />
  -
  -         <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content" />
  -
  -         <map:generator name="libre" src="org.apache.forrest.yer.use.cocoon.HierarchyGenerator" label="content" />
  -
  -         <map:generator name="nekodtd" src="org.apache.forrest.components.generator.XNIConfigurableFileGenerator" label="content" />
  -
  -         <map:generator name="textparser" src="org.apache.cocoon.generation.TextParserGenerator" label="content" />
  -
  -<!-- FIXME: Change this once better view handling is implemented -->
  -         <map:generator name="file-nolabel" src="org.apache.cocoon.generation.FileGenerator" />
  -      </map:generators>
  -
  -      <map:transformers default="xslt">
  -         <map:transformer name="idgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
  -            <element>//*[local-name() = 'section']</element>
  -            <id>title/text()</id>
  -         </map:transformer>
  -
  -         <map:transformer name="linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer">
  -            <input-module name="linkmap" src="{src}" reloadable="true" />
  -            <input-module name="site">
  -               <input-module name="linkmap" src="{src}" reloadable="true" />
  -               <prefix>/site//</prefix>
  -               <suffix>/@href</suffix>
  -            </input-module>
  -         </map:transformer>
  -
  -         <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.cocoon.transformation.XPathTransformer" />
  -
  -         <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xsltc" 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>com.icl.saxon.TransformerFactoryImpl</transformer-factory -->
  -<!-- transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory -->
  -         </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: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>ISO-8859-1</encoding>
  -         </map:serializer>
  -
  -         <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
  -            <encoding>ISO-8859-1</encoding>
  -         </map:serializer>
  -
  -         <map:serializer name="rss091" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
  -            <doctype-public>-//Netscape Communications//DTD RSS 0.91//EN</doctype-public>
  -            <doctype-system>http://my.netscape.com/publish/formats/rss-0.91.dtd</doctype-system>
  -            <encoding>ISO-8859-1</encoding>
  -         </map:serializer>
  -
  -         <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/pdf" />
  -
  -         <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
  -            <encoding>ISO-8859-1</encoding>
  -         </map:serializer>
  -
  -         <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
  -            <parameter name="quality" type="float" value="1.0" />
  -         </map:serializer>
  -
  -         <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer" />
  -      </map:serializers>
  -
  -      <map:matchers default="wildcard">
  -         <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher" />
  -      </map:matchers>
  -
  -<!--
  -  <map:selectors default="skin-parameter">
  -    <map:selector name="request-parameter" logger="sitemap.selector.request-parameter"
  -                 src="org.apache.cocoon.selection.RequestParameterSelector">
  -      <parameter-name>skin</parameter-name>
  -    </map:selector>
  -    <map:selector name="style-parameter" logger="sitemap.selector.request-parameter"
  -                 src="org.apache.cocoon.selection.RequestParameterSelector">
  -      <parameter-name>style</parameter-name>
  -    </map:selector>
  -
  -  </map:selectors>
  --->
  -      <map:actions>
  -<!-- <map:action logger="sitemap.action.request" name="request" src="org.apache.cocoon.acting.RequestParamAction"/> -->
  -         <map:action logger="sitemap.action.resource-exists" name="resource-exists" src="org.apache.cocoon.acting.ResourceExistsAction" />
  -
  -         <map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.components.sourcetype.SourceTypeAction">
  -            <sourcetype name="document-v11">
  -               <document-declaration public-id="-//APACHE//DTD Documentation V1.1//EN" />
  -            </sourcetype>
  -
  -            <sourcetype name="howto-v10">
  -               <document-declaration public-id="-//APACHE//DTD How-to V1.0//EN" />
  -            </sourcetype>
  -
  -            <sourcetype name="docbook-v4.2">
  -               <document-declaration public-id="-//OASIS//DTD DocBook XML V4.2//EN" />
  -            </sourcetype>
  -
  -            <sourcetype name="sdocbook-v1.0">
  -               <document-declaration public-id="-//OASIS//DTD Simplified DocBook XML V1.0//EN" />
  -            </sourcetype>
  -         </map:action>
  -      </map:actions>
  -
  -      <map:selectors>
  -         <map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" />
  -      </map:selectors>
  -
  -<!--
  -     The different pipeline implementations
  -     @todo use map:pipe and map:pipes with next cocoon CVS update
  -  -->
  -      <map:pipelines default="caching">
  -         <map:pipeline name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline" />
  -         <map:pipeline name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline" />
  -
  -<!-- The following two can be used for profiling:
  -     <map:pipeline name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
  -     <map:pipeline name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
  -     -->
  -      </map:pipelines>
  -   </map:components>
  -
  -<!-- =========================== Views =================================== -->
  -   <map:views>
  -      <map:view name="content" from-label="content">
  -         <map:serialize type="xml" />
  -      </map:view>
  -
  -      <map:view name="pretty-content" from-label="content">
  -         <map:transform src="library/xslt/simple-xml2html.xsl" />
  -         <map:serialize type="html" />
  -      </map:view>
  -
  -      <map:view name="links" from-position="last">
  -         <map:transform src="library/xslt/filterlinks.xsl" />
  -         <map:serialize type="links" />
  -      </map:view>
  -   </map:views>
  -
  -   <map:resources>
  -      <map:resource name="skinit">
  -         <map:transform src="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}" />
  -<!-- Can set an alternative project skinconfig here 
  -             <map:parameter name="config-file" value="../../../../skinconf.xml"/>
  -             -->
  -         </map:transform>
  -
  -         <map:serialize />
  -      </map:resource>
  -
  -      <map:resource name="book">
  -         <map:act type="resource-exists">
  -<!-- If a hand-created book.xml exists, use it -->
  -            <map:parameter name="url" value="content/xdocs/{dir}book.xml" />
  -            <map:generate src="content/xdocs/{../dir}book.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/{../dir}linkmap" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="book2menu" />
  -               <map:parameter name="path" value="{../path}" />
  -            </map:call>
  -         </map:act>
  -
  -<!-- If no book.xml, generate it from the linkmap. -->
  -         <map:generate src="cocoon:/{dir}linkmap/{dir}" />
  -<!-- The above generates the subset of the linkmap relevant to our
  -              directory. -->
  -         <map:transform src="library/xslt/site2book.xsl" />
  -         <map:call resource="skinit">
  -            <map:parameter name="type" value="book2menu" />
  -            <map:parameter name="path" value="{path}" />
  -         </map:call>
  -      </map:resource>
  -
  -      <map:resource name="skin-read">
  -         <map:read src="skins/{forrest:skin}/{path}" mime-type="{mime-type}" />
  -      </map:resource>
  -
  -<!-- Checks the document type of the resource passed in the "src" parameter
  -       and converts it to document if necessary -->
  -      <map:resource name="transform-to-document">
  -         <map:transform type="xinclude" />
  -         <map:transform type="linkrewriter" src="{linkmap}" />
  -         <map:act type="sourcetype" src="{src}">
  -            <map:select type="parameter">
  -               <map:parameter name="parameter-selector-test" value="{sourcetype}" />
  -
  -               <map:when test="howto-v10">
  -                  <map:transform src="library/xslt/howto2document.xsl" label="content" />
  -               </map:when>
  -
  -               <map:when test="docbook-v4.2">
  -                  <map:transform src="library/xslt/docbook2document.xsl" label="content" />
  -               </map:when>
  -
  -               <map:when test="sdocbook-v1.0">
  -                  <map:transform src="library/xslt/docbook2document.xsl" label="content" />
  -               </map:when>
  -
  -               <map:otherwise />
  -            </map:select>
  -         </map:act>
  -         <map:transform type="idgen" />
  -      </map:resource>
  -   </map:resources>
  -
  -<!-- =========================== Pipelines ================================= -->
  -   <map:pipelines>
  -<!-- Utility Pipeline that creates the grammer for the Chaperon Wiki -->
  -      <map:pipeline internal-only="true">
  -<!-- IMPORTANT! This pipeline sould be cachable -->
  -         <map:match pattern="chaperon/*.grm">
  -            <map:generate type="textparser" src="chaperon/{1}.rgrm">
  -               <map:parameter name="grammar" value="chaperon/grammars/rgrm.grm" />
  -            </map:generate>
  -            <map:transform src="chaperon/stylesheets/rgrm2grm.xsl" />
  -            <map:serialize type="xml" />
  -         </map:match>
  -      </map:pipeline>
  -
  -<!-- Pipeline that manages the internal URI space
  -       For the external URI space manager, see the next pipeline. 
  -       Set it to internal-only="true" in production environment -->
  -      <map:pipeline internal-only="false">
  -         <map:match pattern="**tab-**.xml">
  -            <map:generate src="content/xdocs/tabs.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="tab2menu" />
  -               <map:parameter name="path" value="{2}" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="**book-**/*.xml">
  -            <map:call resource="book">
  -               <map:parameter name="dir" value="{2}/" />
  -               <map:parameter name="path" value="{2}/{3}.xml" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="**book-**.xml">
  -            <map:call resource="book">
  -               <map:parameter name="dir" value="" />
  -               <map:parameter name="path" value="{2}.xml" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="body-todo.xml">
  -            <map:generate type="file-nolabel" src="status.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -            <map:transform src="library/xslt/todo2document.xsl" label="content" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="/todo.xml" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="body-forrest-issues.xml">
  -            <map:generate type="file-nolabel" src="http://issues.cocoondev.org/jira/secure/IssueNavigator.jspa?pid=10000&amp;resolutionIds=-1&amp;view=rss&amp;reset=true" />
  -            <map:transform src="library/xslt/rssissues2document.xsl" label="content" />
  -            <map:transform type="idgen" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="nopdf" value="true" />
  -               <map:parameter name="path" value="/forrest-issues.xml" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="body-changes.xml">
  -            <map:generate type="file-nolabel" src="status.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -            <map:transform src="library/xslt/changes2document.xsl" label="content" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="/changes.xml" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="body-**/faq.xml">
  -            <map:generate type="file-nolabel" src="content/xdocs/{1}/faq.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/{1}/linkmap" />
  -            <map:transform src="library/xslt/faq2document.xsl" label="content" />
  -            <map:call resource="skinit">
  -              <map:parameter name="type" value="document2html" />
  -              <map:parameter name="path" value="{1}/faq.xml" />
  -              <map:parameter name="notoc" value="true" />
  -            </map:call>
  -         </map:match>
  -
  -         <map:match pattern="body-faq.xml">
  -            <map:generate type="file-nolabel" src="content/xdocs/faq.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -            <map:transform src="library/xslt/faq2document.xsl" label="content" />
  -            <map:call resource="skinit">
  -              <map:parameter name="type" value="document2html" />
  -              <map:parameter name="path" value="faq.xml" />
  -              <map:parameter name="notoc" value="true" />
  -            </map:call>
  -         </map:match>
  -
  -<!-- index pages for contribution categories -->
  -         <map:match pattern="body-community/*/index.xml">
  -            <map:generate src="content/xdocs/community/{1}/index.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/community/{1}/linkmap" />
  -            <map:transform type="idgen" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="community/{1}/index" />
  -            </map:call>
  -         </map:match>
  -
  -<!-- no special transformation, yet, for revision pages -->
  -         <map:match pattern="body-community**revision-*.xml">
  -            <map:generate src="content/xdocs/community{1}revision-{2}.xml" />
  -            <map:transform type="linkrewriter" src="cocoon:/community/{1}/linkmap" />
  -            <map:transform type="idgen" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="community/{1}/revision-{2}" />
  -            </map:call>
  -         </map:match>
  -
  -<!-- all contribution docs -->
  -         <map:match pattern="body-community/*/*/**.xml">
  -            <map:aggregate element="all">
  -               <map:part src="content/xdocs/community/{1}/{2}/{3}.xml" />
  -               <map:part src="cocoon:/revisions-community/{1}/{2}/{3}" />
  -            </map:aggregate>
  -            <map:transform type="linkrewriter" src="cocoon:/community/{1}/{2}/linkmap" />
  -            <map:transform type="idgen" />
  -            <map:transform src="library/xslt/{1}2document.xsl" label="content" />
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="community/{1}/{2}/{3}.xml" />
  -            </map:call>
  -         </map:match>
  -
  -<!-- revisions only implemented for community pages -->
  -         <map:match pattern="revisions-community/*/*/**">
  -            <map:generate type="directory" src="content/xdocs/community/{1}/{2}">
  -               <map:parameter name="dateFormat" value="yyyy-MM-dd hh:mm" />
  -            </map:generate>
  -            <map:transform src="library/xslt/directory2revisions.xsl" label="content">
  -               <map:parameter name="use-request-parameters" value="true" />
  -               <map:parameter name="page" value="{3}" />
  -            </map:transform>
  -            <map:serialize type="xml" />
  -         </map:match>
  -
  -<!-- HTML DTD Documentation generation pipeline, makes use of NekoDTD tool -->
  -         <map:match pattern="body-**.dtdx.xml">
  -            <map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd">
  -               <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
  -            </map:generate>
  -            <map:transform src="library/xslt/dtdx2flat.xsl" />
  -            <map:transform src="library/xslt/flat2document.xsl" />
  -            <map:transform type="idgen" />
  -            <map:call resource="skinit">
  -              <map:parameter name="type" value="document2html" />
  -              <map:parameter name="isfaq" value="true" />
  -              <map:parameter name="notoc" value="true" />
  -              <map:parameter name="path" value="{1}.dtdx.xml" />
  -            </map:call>
  -         </map:match>
  -
  -
  -       
  -<!-- Generates body HTML for files in subdirs -->
  -         <map:match pattern="body-**/*.xml">
  -<!-- if the file is present as ihtml, convert to doc-v11... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}/{2}.ihtml" />
  -               <map:generate src="content/xdocs/{../1}/{../2}.ihtml" type="html" />
  -               <map:transform src="library/xslt/html2document.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/{../1}/linkmap" />
  -               <map:transform type="idgen" />
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="document2html" />
  -                  <map:parameter name="path" value="{../1}/{../2}.xml" />
  -               </map:call>
  -            </map:act>
  -
  -<!-- if the file is present as html, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}/{2}.ehtml" />
  -               <map:generate src="content/xdocs/{../1}/{../2}.ehtml" />
  -               <map:transform src="library/xslt/html2htmlbody.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/{../1}/linkmap" />
  -               <map:serialize type="xml" />
  -            </map:act>
  -
  -<!-- if the file is present as .cwiki, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}/{2}.cwiki" />
  -               <map:generate src="content/xdocs/{../1}/{../2}.cwiki" type="textparser">
  -                  <map:parameter name="grammar" value="chaperon/grammars/wiki.grm" />
  -
  -                  <map:parameter name="includeignorabletokens" value="true" />
  -               </map:generate>
  -               <map:transform src="library/xslt/wiki2htmlpage.xsl" />
  -               <map:transform src="library/xslt/wiki2html.xsl" />
  -               <map:transform src="library/xslt/html2document.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/{../1}/linkmap" />
  -               <map:transform type="idgen" />
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="document2html" />
  -                  <map:parameter name="path" value="{../1}/{../2}.xml" />
  -               </map:call>
  -            </map:act>
  -
  -            <map:generate src="content/xdocs/{1}/{2}.xml" />
  -            <map:call resource="transform-to-document">
  -               <map:parameter name="src" value="content/xdocs/{1}/{2}.xml" />
  -               <map:parameter name="linkmap" value="cocoon:/{1}/linkmap" />
  -            </map:call>
  -            
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="{1}/{2}.xml" />
  -            </map:call>
  -         </map:match>
  -
  -<!-- Generates body HTML for root-level files -->
  -         <map:match pattern="body-**.xml">
  -<!-- if the file is present as ihtml, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}.ihtml" />
  -               <map:generate src="content/xdocs/{../1}.ihtml" type="html" />
  -               <map:transform src="library/xslt/html2document.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -               <map:transform type="idgen" />
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="document2html" />
  -                  <map:parameter name="path" value="{../1}.xml" />
  -               </map:call>
  -            </map:act>
  -
  -
  -          
  -<!-- if the file is present as html, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}.ehtml" />
  -               <map:generate src="content/xdocs/{../1}.ehtml" />
  -               <map:transform src="library/xslt/html2htmlbody.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -               <map:serialize type="xml" />
  -            </map:act>
  -
  -<!-- if the file is present as .cwiki, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/xdocs/{1}.cwiki" />
  -
  -               <map:generate src="content/xdocs/{../1}.cwiki" type="textparser">
  -                  <map:parameter name="grammar" value="chaperon/grammars/wiki.grm" />
  -                  <map:parameter name="includeignorabletokens" value="true" />
  -               </map:generate>
  -               <map:transform src="library/xslt/wiki2htmlpage.xsl" />
  -               <map:transform src="library/xslt/wiki2html.xsl" />
  -               <map:transform src="library/xslt/html2document.xsl" />
  -               <map:transform type="linkrewriter" src="cocoon:/linkmap" />
  -               <map:transform type="idgen" />
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="document2html" />
  -                  <map:parameter name="path" value="{../1}.xml" />
  -               </map:call>
  -            </map:act>
  -
  -            <map:generate src="content/xdocs/{1}.xml" />
  -            <map:call resource="transform-to-document">
  -               <map:parameter name="src" value="content/xdocs/{1}.xml" />
  -               <map:parameter name="linkmap" value="cocoon:/linkmap" />
  -            </map:call>
  -
  -            <map:call resource="skinit">
  -               <map:parameter name="type" value="document2html" />
  -               <map:parameter name="path" value="{1}.xml" />
  -            </map:call>
  -         </map:match>
  -      </map:pipeline>
  -
  -      <map:pipeline>
  -         <map:match pattern="abs-linkmap">
  -            <map:generate src="content/xdocs/site.xml" />
  -            <map:transform src="library/xslt/absolutize-linkmap.xsl" />
  -            <map:serialize type="xml" />
  -         </map:match>
  -
  -         <map:match pattern="abs-linkmap/**">
  -            <map:generate src="cocoon:/abs-linkmap" />
  -            <map:transform type="xpath">
  -               <map:parameter name="include" value="//*[@href='{1}']" />
  -            </map:transform>
  -            <map:serialize type="xml" />
  -         </map:match>
  -
  -         <map:match pattern="**linkmap">
  -            <map:generate src="cocoon:/abs-linkmap" />
  -            <map:transform src="library/xslt/relativize-linkmap.xsl">
  -               <map:parameter name="path" value="{0}" />
  -            </map:transform>
  -            <map:serialize type="xml" />
  -         </map:match>
  -
  -<!-- This derivation of '**linkmap' is used when generating book.xml from a
  -   site.xml.  The /** suffix identifies a @href prefix which all nodes in the
  -   returned subtree must have. -->
  -         <map:match pattern="**linkmap/**">
  -            <map:generate src="cocoon:/abs-linkmap/{2}" />
  -            <map:transform src="library/xslt/relativize-linkmap.xsl">
  -               <map:parameter name="path" value="{1}linkmap" />
  -            </map:transform>
  -            <map:serialize type="xml" />
  -         </map:match>
  -      </map:pipeline>
  -
  -      <map:pipeline internal-only="false">
  -<!-- ======================    editor    ============================== -->
  -         <map:match pattern="edit**">
  -            <map:mount uri-prefix="edit" src="editor.xmap" check-reload="yes" />
  -         </map:match>
  -
  -<!-- ==================   External URI-space    ========================= -->
  -         <map:match pattern="">
  -            <map:redirect-to uri="{request:contextPath}/index.html" />
  -         </map:match>
  -
  -              
  -         <map:match pattern="**">
  -         
  -<!-- Generates printerfriendly HTML from the body (link rewriting) -->
  -<!-- NKB disabled temporarily till errors are fixed
  -         <map:match pattern="printer-friendly/**.html">
  -            <map:generate src="cocoon://body-{1}.xml"/>
  -            <map:serialize/>
  -         </map:match>
  -         
  -         <map:match pattern="**/printer-friendly/*.html">
  -            <map:generate src="cocoon://body-{1}/{2}.xml"/>
  -            <map:serialize/>
  -         </map:match>
  --->         
  -<!-- Generates source HTML from the body (link rewriting) -->
  -<!-- NKB disabled temporarily till errors are fixed
  -         <map:match pattern="doc-source/**.html">
  -            <map:generate src="content/xdocs/{1}.xml"/>
  -            <map:serialize type="xml"/>
  -         </map:match>
  -         
  -         <map:match pattern="**/doc-source/*.html">
  -            <map:generate src="content/xdocs/{1}/{2}.xml"/>
  -            <map:serialize type="xml"/>
  -         </map:match>
  ---> 
  -             
  -<!-- if the file is present verbatim as content, give that to the user... -->
  -            <map:act type="resource-exists">
  -               <map:parameter name="url" value="content/{1}" />
  -               <map:match pattern="**.html">
  -<!--
  -        Use this instead if you don't want JTidy to clean up your HTML
  -        <map:read src="content/{0}" mime-type="text/html"/>
  +  <!-- =========================== Components ================================ -->
  +  <map:components>
  +    <map:generators default="file">
  +      <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content" />
  +      <!--
  +      <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content" />
  +      <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content" />
  +      <map:generator name="libre" src="org.apache.forrest.yer.use.cocoon.HierarchyGenerator" label="content" />
  +      <map:generator name="textparser" src="org.apache.cocoon.generation.TextParserGenerator" label="content" />
  +      -->
  +    </map:generators>
  +
  +    <map:transformers default="xslt">
  +      <map:transformer name="idgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
  +        <element>//*[local-name() = 'section']</element>
  +        <id>title/text()</id>
  +      </map:transformer>
  +
  +      <map:transformer name="linkrewriter" logger="sitemap.transformer.linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer">
  +        <input-module name="linkmap">
  +          <file src="{src}" reloadable="false" />
  +        </input-module>
  +        <input-module name="site">
  +          <input-module name="linkmap">
  +            <file src="{src}" reloadable="false" />
  +          </input-module>
  +          <prefix>/site//</prefix>
  +          <suffix>/@href</suffix>
  +        </input-module>
  +      </map:transformer>
  +
  +      <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.cocoon.transformation.XPathTransformer" />
  +
  +      <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xsltc" 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>com.icl.saxon.TransformerFactoryImpl</transformer-factory>-->
  +        <!--<transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>-->
  +      </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 logger="sitemap.transformer.lexer" name="lexer" src="org.apache.cocoon.transformation.LexicalTransformer"/>
  +      <map:transformer logger="sitemap.transformer.lexer" name="parser" src="org.apache.cocoon.transformation.ParserTransformer"/>
  +      <map:transformer logger="sitemap.transformer.lexer" name="pattern" src="org.apache.cocoon.transformation.PatternTransformer"/>
  +    </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>ISO-8859-1</encoding>
  +      </map:serializer>
  +
  +      <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
  +        <encoding>ISO-8859-1</encoding>
  +      </map:serializer>
  +
  +      <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/pdf" />
  +
  +      <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
  +        <encoding>ISO-8859-1</encoding>
  +      </map:serializer>
  +
  +      <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
  +        <parameter name="quality" type="float" value="1.0"/>
  +      </map:serializer>
  +
  +      <map:serializer mime-type="image/png" name="svg2png" src="org.apache.cocoon.serialization.SVGSerializer"/>
  +      <!--
  +      <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:actions>
  +      <!-- <map:action logger="sitemap.action.request" name="request" src="org.apache.cocoon.acting.RequestParamAction"/> -->
  +      <map:action logger="sitemap.action.resource-exists" name="resource-exists" src="org.apache.cocoon.acting.ResourceExistsAction"/>
  +
  +    </map:actions>
  +
  +    <!--
  +    The different pipeline implementations
  +    @todo use map:pipe and map:pipes with next cocoon CVS update
  +    -->
  +    <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>
  +
  +  <!-- =========================== Views =================================== -->
  +  <map:views>
  +    <map:view name="content" from-label="content">
  +      <map:serialize type="xml" />
  +    </map:view>
  +
  +    <map:view name="links" from-position="last">
  +      <map:transform src="library/xslt/filterlinks.xsl"/>
  +      <map:serialize type="links"/>
  +    </map:view>
  +  </map:views>
  +
  +  <map:resources>
  +    <map:resource name="skinit">
  +      <map:transform src="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}"/>
  +        <!-- Can set an alternative project skinconfig here 
  +        <map:parameter name="config-file" value="../../../../skinconf.xml"/>
           -->
  -                  <map:generate type="html" src="content/{1}.html" />
  -                  <map:serialize type="html" />
  -               </map:match>
  -
  -               <map:match pattern="**.xml">
  -                  <map:generate type="file" src="content/{1}.xml" />
  -                  <map:serialize type="xml" />
  -               </map:match>
  -
  -               <map:match pattern="skin/**.css">
  -                  <map:read src="content/{1}.css" mime-type="text/css" />
  -               </map:match>
  -
  -               <map:match pattern="**.js">
  -                  <map:read src="content/{1}.js" mime-type="application/javascript" />
  -               </map:match>
  -
  -               <map:match pattern="**.gif">
  -                  <map:read src="content/{1}.gif" mime-type="image/gif" />
  -               </map:match>
  -
  -               <map:match pattern="**.png">
  -                  <map:read src="content/{1}.png" mime-type="image/png" />
  -               </map:match>
  -
  -               <map:match pattern="**.jpg">
  -                  <map:read src="content/{1}.jpg" mime-type="image/jpeg" />
  -               </map:match>
  -
  -               <map:match pattern="**.jpeg">
  -                  <map:read src="content/{1}.jpeg" mime-type="image/jpeg" />
  -               </map:match>
  -
  -               <map:match pattern="**.pdf">
  -                  <map:read src="content/{1}.pdf" mime-type="application/pdf" />
  -               </map:match>
  -
  -               <map:match pattern="**.swf">
  -                  <map:read src="content/{1}.swf" mime-type="application/x-shockwave-flash" />
  -               </map:match>
  -
  -               <map:match pattern="**">
  -                  <map:read src="content/{1}" mime-type="application/unknown" />
  -               </map:match>
  -            </map:act>
  -
  -           
  -<!-- ... otherwise try to generate it using these rules.  -->
  -            <map:match pattern="apachestats">
  -               <map:generate type="html" src="http://www.apache.org/~rubys/stats/xml.apache.org/">
  -                  <map:parameter name="xpath" value="/html/body//a[contains(@href,'.xml')]" />
  -               </map:generate>
  -
  -               <map:serialize type="xml" />
  -            </map:match>
  -
  -            <map:match pattern="*.html">
  -               <map:aggregate element="site">
  -                  <map:part src="cocoon:/book-{1}.xml" />
  -                  <map:part src="cocoon:/tab-{1}.xml" />
  -                  <map:part src="cocoon:/body-{1}.xml" label="content" />
  -               </map:aggregate>
  -
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="site2xhtml" />
  -                  <map:parameter name="path" value="{0}" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="**/*.html">
  -               <map:aggregate element="site">
  -                  <map:part src="cocoon:/{1}/book-{1}/{2}.xml" />
  -
  -                  <map:part src="cocoon:/{1}/tab-{1}/{2}.xml" />
  -
  -                  <map:part src="cocoon:/body-{1}/{2}.xml" label="content" />
  -               </map:aggregate>
  -
  -               <map:call resource="skinit">
  -                  <map:parameter name="type" value="site2xhtml" />
  -                  <map:parameter name="path" value="{0}" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="*.dtdx.pdf">
  -               <map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd">
  -                  <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
  -               </map:generate>
  -               <map:transform src="library/xslt/dtdx2flat.xsl" />
  -               <map:transform src="library/xslt/flat2document.xsl" />
  -               <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -            <map:match pattern="**/*.dtdx.pdf">
  -               <map:generate type="nekodtd" src="resources/schema/dtd/{2}.dtd">
  -                  <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
  -               </map:generate>
  -               <map:transform src="library/xslt/dtdx2flat.xsl" />
  -               <map:transform src="library/xslt/flat2document.xsl" />
  -               <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -            <map:match pattern="changes.pdf">
  -               <map:generate type="file-nolabel" src="status.xml" />
  -               <map:transform src="library/xslt/changes2document.xsl" label="content" />
  -               <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -            <map:match pattern="changes.rss">
  -               <map:generate type="file-nolabel" src="status.xml" />
  -               <map:transform src="library/xslt/changes2rss.xsl" label="content" />
  -               <map:serialize type="rss091" />
  -            </map:match>
  -
  -            <map:match pattern="todo.pdf">
  -               <map:generate type="file-nolabel" src="status.xml" />
  -               <map:transform src="library/xslt/todo2document.xsl" label="content" />
  -               <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -            <map:match pattern="faq.pdf">
  -               <map:generate type="file-nolabel" src="content/xdocs/faq.xml" />
  -               <map:transform src="library/xslt/faq2document.xsl" label="content" />
  -               <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -            <map:match pattern="**.pdf">
  -               <map:generate src="content/xdocs/{1}.xml" />
  -               <map:call resource="transform-to-document">
  -                  <map:parameter name="src" value="content/xdocs/{1}.xml" />
  -                  <map:parameter name="linkmap" value="cocoon:/linkmap" />
  -               </map:call>
  -               <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl" />
  -               <map:serialize type="fo2pdf" />
  -            </map:match>
  -
  -<!-- ================  Directory redirects   =========================== -->
  -<!-- Redirect any request for a directory to the directory's index.html file  -->
  -            <map:match pattern="**/">
  -               <map:redirect-to uri="{request:contextPath}/{1}/index.html" />
  -            </map:match>
  -
  -<!-- ================  Libre   =========================== -->
  -            <map:match pattern="libre">
  -               <map:generate type="libre" src="content/xdocs">
  -                  <map:parameter name="depth" value="-1" />
  -               </map:generate>
  -
  -               <map:serialize type="xml" />
  -            </map:match>
  -
  -<!-- ================  Static  =========================== -->
  -            <map:match pattern="skin/**.js">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="scripts/{1}.js" />
  -                  <map:parameter name="mime-type" value="application/javascript" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="**/skin/**.js">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="scripts/{2}.js" />
  -                  <map:parameter name="mime-type" value="application/javascript" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="**.js">
  -               <map:read src="resources/scripts/{1}.js" mime-type="application/javascript" />
  -            </map:match>
  -
  -            <map:match pattern="skin/**.css">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="css/{1}.css" />
  -                  <map:parameter name="mime-type" value="text/css" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="**/skin/**.css">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="css/{2}.css" />
  -                  <map:parameter name="mime-type" value="text/css" />
  -               </map:call>
  -            </map:match>
  -
  -            <map:match pattern="**.css">
  -               <map:read src="resources/css/{1}.css" mime-type="text/css" />
  -            </map:match>
  -
  -            <map:match pattern="skin/images/**.*">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="images/{1}.{2}" />
  -                  <map:parameter name="mime-type" value="image/{2}" />
  -               </map:call>
  -            </map:match>
  -
  -<!-- WARNING: You are strongly advised not to make use of this target, as it
  -   leads to browsers having to cache multiple copies of the images, one per
  -   directory. See the forrest-site skin XSLTs for an example of how to make
  -   all image references use the 'skin/images/**.*' rule above -->
  -            <map:match pattern="**/skin/images/**.*">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="images/{2}.{3}" />
  -                  <map:parameter name="mime-type" value="image/{3}" />
  -               </map:call>
  -            </map:match>
  -
  -<!-- DS: handles images local to a contributor directory -->
  -            <map:match pattern="**my-images/**.*">
  -               <map:read src="content/xdocs/{1}my-images/{2}.{3}" mime-type="image/{3}" />
  -            </map:match>
  -
  -            <map:match pattern="images/**.png">
  -               <map:act type="resource-exists">
  -                  <map:parameter name="url" value="resources/images/{1}.svg" />
  -                  <map:generate src="resources/images/{../1}.svg" />
  -                  <map:serialize type="svg2png" />
  -               </map:act>
  -
  -               <map:read src="resources/images/{1}.png" mime-type="image/png" />
  -            </map:match>
  -
  -            <map:match pattern="images/**.*">
  -               <map:read src="resources/images/{1}.{2}" mime-type="image/{2}" />
  -            </map:match>
  -
  -<!-- WARNING: See above: this target should not be made use of -->
  -            <map:match pattern="**/images/**.*">
  -               <map:read src="resources/images/{2}.{3}" mime-type="image/{3}" />
  -            </map:match>
  -
  -            <map:match pattern="**favicon.ico">
  -               <map:call resource="skin-read">
  -                  <map:parameter name="path" value="images/favicon.ico" />
  -                  <map:parameter name="mime-type" value="image/x-ico" />
  -               </map:call>
  -            </map:match>
  -         </map:match>
  -      </map:pipeline>
  -   </map:pipelines>
  -</map:sitemap>
  +      </map:transform>
  +
  +      <map:serialize/>
  +    </map:resource>
  +
  +    <!-- Checks the document type of the resource passed in the "src" parameter
  +    and converts it to document if necessary -->
  +  </map:resources>
  +
  +  <!-- =========================== Pipelines ================================= -->
  +  <map:pipelines>
  +
  +    <map:pipeline internal-only="false">
  +
  +      <!-- ============================================================ -->
  +      <!-- OUTPUT FORMATS                                               -->
  +      <!-- ============================================================ -->
  +      <!--
  +      <map:match pattern="dombug/*">
  +        <map:mount check-reload="yes" src="dombug/" uri-prefix="dombug"/>
  +      </map:match>
  +      -->
  +
  +      <map:match pattern="test">
  +        <map:generate src="content/xdocs/tabs.xml"/>
  +        <map:transform type="linkrewriter" src="cocoon:/community/linkmap">
  +          <map:parameter name="schemes" value="site ext"/>
  +        </map:transform>
  +        <map:serialize type="xml"/>
  +      </map:match>
  +
  +      <map:match pattern="*.html">
  +        <map:aggregate element="site">
  +          <map:part src="cocoon:/tab-{1}.xml"/>
  +          <map:part src="cocoon:/menu-{1}.xml"/>
  +          <map:part src="cocoon:/body-{1}.xml"/>
  +        </map:aggregate>
  +        <map:call resource="skinit">
  +          <map:parameter name="type" value="site2xhtml"/>
  +          <map:parameter name="path" value="{0}"/>
  +        </map:call>
  +      </map:match>         
  +
  +      <map:match pattern="**/*.html">
  +        <map:aggregate element="site">
  +          <map:part src="cocoon:/{1}/tab-{2}.xml"/>
  +          <map:part src="cocoon:/{1}/menu-{2}.xml"/>
  +          <map:part src="cocoon:/{1}/body-{2}.xml"/>
  +        </map:aggregate>
  +        <map:call resource="skinit">
  +          <map:parameter name="type" value="site2xhtml"/>
  +          <map:parameter name="path" value="{0}"/>
  +        </map:call>
  +      </map:match>
  +
  +      <map:match pattern="*.pdf">
  +        <map:generate src="cocoon:/{1}.xml"/>
  +        <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
  +        <map:serialize type="fo2pdf"/>
  +      </map:match>
  +
  +      <map:match pattern="**/*.pdf">
  +        <map:generate src="cocoon:/{1}/{2}.xml"/>
  +        <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
  +        <map:serialize type="fo2pdf"/>
  +      </map:match>
  +
  +    </map:pipeline>
  +
  +    <!-- ============================================================ -->
  +    <!-- INTERMEDIATE FORMATS                                         -->
  +    <!-- ============================================================ -->
  +    <map:pipeline internal-only="false">
  +  
  +      <map:match pattern="**body-*.xml">
  +        <map:generate src="cocoon:/{1}{2}.xml"/>
  +        <map:transform type="xinclude"/>
  +        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap">
  +          <map:parameter name="schemes" value="site ext"/>
  +        </map:transform>
  +        <map:call resource="skinit">
  +          <map:parameter name="type" value="document2html"/>
  +          <map:parameter name="path" value="/{1}{2}.xml"/>
  +          <map:parameter name="notoc" value="true"/>
  +        </map:call>
  +      </map:match>
  +
  +      <map:match pattern="**menu-*.xml">
  +        <map:generate src="cocoon:/{1}book.xml"/>
  +        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap">
  +          <map:parameter name="schemes" value="site ext"/>
  +        </map:transform>
  +        <map:call resource="skinit">
  +          <map:parameter name="type" value="book2menu"/>
  +          <map:parameter name="path" value="/{1}{2}.xml"/>
  +          <map:parameter name="notoc" value="true"/>
  +        </map:call>
  +      </map:match>
  +
  +      <map:match pattern="**tab-*.xml">
  +        <map:generate src="cocoon:/{1}tab.xml" />
  +        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap">
  +          <map:parameter name="schemes" value="site ext"/>
  +        </map:transform>
  +        <map:call resource="skinit">
  +          <map:parameter name="type" value="tab2menu"/>
  +          <map:parameter name="path" value="{1}{2}"/>
  +        </map:call>
  +      </map:match>
  +    </map:pipeline>
  +
  +    <!-- ============================================================ -->
  +    <!-- SOURCE FORMATS                                               -->
  +    <!-- ============================================================ -->
  +
  +    <map:pipeline internal-only="false">
  +      <map:match pattern="**book.xml">
  +        <map:mount uri-prefix="" src="navigation.xmap" check-reload="yes" />
  +      </map:match>
  +      <map:match pattern="**tab.xml">
  +        <map:mount uri-prefix="" src="navigation.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="**changes.rss">
  +        <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="**linkmap**">
  +        <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="community/*/**">
  +        <map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**issues.xml">
  +        <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="howto**.xml">
  +        <map:mount uri-prefix="" src="howto.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**faq**">
  +        <map:mount uri-prefix="" src="faq.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="**.js">
  +        <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**.css">
  +        <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**images**">
  +        <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**favicon.ico">
  +        <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="">
  +        <map:mount uri-prefix="" src="redirect.xmap" check-reload="yes" />
  +      </map:match>
  +
  +      <map:match pattern="**/">
  +        <map:mount uri-prefix="" src="redirect.xmap" check-reload="yes" />
  +      </map:match>
  +
  +
  +       <map:match pattern="**">
  +        <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
  +      </map:match>
   
  +    </map:pipeline>
  +
  +  </map:pipelines>
  +</map:sitemap>
  
  
  
  1.3       +181 -46   xml-forrest/src/resources/conf/web.xml
  
  Index: web.xml
  ===================================================================
  RCS file: /home/cvs/xml-forrest/src/resources/conf/web.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- web.xml	3 Feb 2003 08:16:31 -0000	1.2
  +++ web.xml	15 Mar 2003 06:21:52 -0000	1.3
  @@ -1,10 +1,8 @@
   <?xml version="1.0" encoding="ISO-8859-1"?>
   
  -<!--
  -  This is the web-app configurations that allow Cocoon to work under
  -  Apache Tomcat. Please, follow the installation section of the
  -  documentation for more information about installing Cocoon on Tomcat
  --->
  +<!--+
  +    | This is the Cocoon web-app configurations file
  +    +-->
   
   <!DOCTYPE web-app
       PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  @@ -14,20 +12,33 @@
     <display-name>Forrest</display-name>
     <description>Webapp generated by Forrest</description>
     <servlet>
  -    <servlet-name>Cocoon2</servlet-name>
  -    <display-name>Cocoon2</display-name>
  -    <description>The main Cocoon2 servlet</description>
  +    <servlet-name>Cocoon</servlet-name>
  +    <display-name>Cocoon</display-name>
  +    <description>Cocoon</description>
   
       <!--
  -      In cases you're facing class loader problems you can alternatively
  -      use the following servlet-class instead of the normal one
  +      The regular servlet class (trusts the servlet container classloader)
  +      -->
  +    <servlet-class>org.apache.cocoon.servlet.CocoonServlet</servlet-class>
   
  +    <!--
  +      In cases you're facing class loading problems, you can alternatively
  +      use the following servlet-class instead of the above one
  +      
         <servlet-class>org.apache.cocoon.servlet.ParanoidCocoonServlet</servlet-class>
  -
       -->
  -    <servlet-class>org.apache.cocoon.servlet.CocoonServlet</servlet-class>
   
       <!--
  +      This parameter tells cocoon to set the thread's context classloader to
  +      its own classloader. If you experience strange classloader issues,
  +      try setting this parameter to "true" or using ParanoidCocoonServlet.
  +    -->
  +    <init-param>
  +      <param-name>init-classloader</param-name>
  +      <param-value>false</param-value>
  +    </init-param>
  +    
  +    <!--
         This parameter points to the main configuration file for Cocoon.
         Note that the path is specified in absolute notation but it will be
         resolved relative to the servlets webapp context path
  @@ -38,17 +49,6 @@
       </init-param>
   
       <!--
  -      This parameter tells cocoon to load all the required libraries into
  -      it's own classloader instead of trusting the Servlet Vendor's
  -      classloader.  If you experience strange classloader issues,
  -      try setting this parameter to "true".
  -    -->
  -    <init-param>
  -      <param-name>init-classloader</param-name>
  -      <param-value>false</param-value>
  -    </init-param>
  -
  -    <!--
         This parameter indicates the configuration file of the LogKit management
       -->
       <init-param>
  @@ -116,9 +116,18 @@
           <!-- For IBM WebSphere:
           com.ibm.servlet.classloader.Handler -->
   
  -        <!-- For Database Driver: 
  -        org.hsqldb.jdbcDriver-->
  +        <!-- For Database Driver: -->
  +        org.hsqldb.jdbcDriver
  +
  +        <!-- For PostgeSQL Database: 
  +             org.postgresql.Driver -->
   
  +        <!-- For Oracle Database:
  +             oracle.jdbc.driver.OracleDriver -->
  +
  +        <!-- ODBC 
  +             sun.jdbc.odbc.JdbcOdbcDriver -->
  + 
           <!-- For parent ComponentManager sample:
           org.apache.cocoon.samples.parentcm.Configurator
           -->
  @@ -126,38 +135,74 @@
       </init-param>
   
       <!--
  -      This parameter allows to specify where Cocoon should put files
  -      which are uploaded by the upload.xsp sample. The path specified
  -      is always relative to the context path of the servlet.
  +      This parameter allows to specify where Cocoon should put uploaded files.
  +      The path specified can be either absolute or relative to the context 
  +      path of the servlet. On windows platform, absolute directory must start
  +      with volume: C:\Path\To\Upload\Directory
  +
         The default directory is "upload-dir" in the work-directory
   
       <init-param>
         <param-name>upload-directory</param-name>
  -      <param-value>/WEB-INF/work/upload-dir</param-value>
  +      <param-value>WEB-INF/work/upload-dir</param-value>
       </init-param>
       -->
   
       <!--
  -      This parameter allows to specify where Cocoon should put files
  -      which are cached by the storing class. The path specified
  -      is always relative to the context path of the servlet.
  +      Causes all files in multipart requests to be saved to upload-dir.
  +      Default is true.  Unsupported values will be interpreted as false.
  +    -->
  +    <init-param>
  +      <param-name>autosave-uploads</param-name>
  +      <param-value>false</param-value>
  +    </init-param>
  +
  +    <!--
  +      Specify handling of name conflicts when saving uploaded files
  +      to disk.  Acceptable values are deny, allow, rename (default).
  +      Files are renamed x_filename where x is an integer value incremented
  +      to make the new filename unique.
  +    -->
  +    <init-param>
  +      <param-name>overwrite-uploads</param-name>
  +      <param-value>rename</param-value>
  +    </init-param>
  +    
  +    <!--
  +      Specify maximum allowed size of the upload. Defaults to 10 Mb.
  +
  +    <init-param>
  +      <param-name>upload-max-size</param-name>
  +      <param-value>10000000</param-value>
  +    </init-param>    
  +    -->
  +
  +    <!--
  +      This parameter allows to specify where Cocoon should create its page
  +      and other objects cache. The path specified can be either absolute or
  +      relative to the context path of the servlet. On windows platform,
  +      absolute directory must start with volume: C:\Path\To\Cache\Directory
  +      
         The default directory is "cache-dir" in the work-directory
   
       <init-param>
         <param-name>cache-directory</param-name>
  -      <param-value>/WEB-INF/work/cache-dir</param-value>
  +      <param-value>WEB-INF/work/cache-dir</param-value>
       </init-param>
       -->
   
       <!--
         This parameter allows to specify where Cocoon should put it's
  -      working files. The path specified is always relative to the
  -      context path of the Cocoon servlet.
  -      Usually it is obtained from the servlet engine.
  +      working files. The path specified is either absolute or relative
  +      to the context path of the Cocoon servlet.  On windows platform,
  +      absolute directory must start with volume: C:\Path\To\Work\Directory
  +
  +      The default directory is "cocoon-files" directory in the servlet
  +      context's temp directory (context property javax.servlet.context.tempdir).
   
       <init-param>
         <param-name>work-directory</param-name>
  -      <param-value>/WEB-INF/work</param-value>
  +      <param-value>WEB-INF/work</param-value>
       </init-param>
       -->
   
  @@ -181,7 +226,7 @@
         String as a parameter. That String will be equal to the text after the
         '/'.
   
  -      Cocoon honors the Loggable and Initializable interfaces for this class,
  +      Cocoon honors the LogEnabled and Initializable interfaces for this class,
         if it implements them.
   
         If you uncomment the following lines the parent CM is set to the Parent CM sample, which will look up
  @@ -194,9 +239,12 @@
       -->
   
       <!--
  -      This parameter allows you to select the request factory. Possible choices are as follows:
  -          - org.apache.cocoon.components.request.MultipartRequestFactoryImpl
  -          - org.apache.cocoon.components.request.MaybeUploadRequestFactoryImpl
  +      This parameter allows you to select the request factory. Possible
  +      choices are as follows:
  +        - org.apache.cocoon.components.request.MultipartRequestFactoryImpl
  +          This is the default factory.
  +        - org.apache.cocoon.components.request.SimpleRequestFactoryImpl
  +          This factory does not allow uploads.
       -->
       <init-param>
         <param-name>request-factory</param-name>
  @@ -207,12 +255,61 @@
         If you set this parameter to 'true' or 'yes', Cocoon will add processing
         time to the end of each response. Value 'hide' adds processing time as an HTML
         comment. By default, processing time is not added (corresponds to value 'no').
  -    -->
  +
       <init-param>
         <param-name>show-time</param-name>
         <param-value>hide</param-value>
       </init-param>
  +    -->
  +
  +    <!--
  +       If true or not set, this class will try to catch and handle all Cocoon exceptions.
  +       If false, it will rethrow them to the servlet container.
  +    -->
  +    <init-param>
  +      <param-name>manage-exceptions</param-name>
  +      <param-value>true</param-value>
  +    </init-param>
  +    
  +    <!--
  +       If true, Avalon Excalibur instrumentation will be enabled on all Instrumentable
  +       components with Cocoon and your Cocoon application.
  +
  +    <init-param>
  +      <param-name>enable-instrumentation</param-name>
  +      <param-value>true</param-value>
  +    </init-param>
  +    -->
  +
  +    <!--
  +       This defines the location of the instrument manager configuration, only used
  +       if the init-param enable-instrumentation is enabled.
  +
  +    <init-param>
  +      <param-name>instrumentation-config</param-name>
  +      <param-value>/WEB-INF/instrumentation.xconf</param-value>
  +    </init-param>    
  +    -->
  +
  +    <!--
  +      Set encoding used by the container. If not set the ISO-8859-1 encoding will be assumed.
  +    -->
  +    <!--
  +    <init-param>
  +      <param-name>container-encoding</param-name>
  +      <param-value>utf-8</param-value>
  +    </init-param>
  +    -->
   
  +    <!--
  +      Set form encoding. This will be the character set used to decode request parameters 
  +    -->
  +    <!--
  +    <init-param>
  +      <param-name>form-encoding</param-name>
  +      <param-value>utf-8</param-value>
  +    </init-param>
  +    -->
   
       <!--
         This parameter allows you to startup Cocoon2 immediately after startup
  @@ -221,6 +318,8 @@
       <load-on-startup>1</load-on-startup>
     </servlet>
   
  +  <!-- URL space mappings ============================================= -->
  +
     <!--
       Cocoon handles all the URL space assigned to the webapp using its sitemap.
       It is recommended to leave it unchanged. Under some circumstances though
  @@ -228,31 +327,67 @@
       to change this parameter.
     -->
     <servlet-mapping>
  -    <servlet-name>Cocoon2</servlet-name>
  +    <servlet-name>Cocoon</servlet-name>
       <url-pattern>/</url-pattern>
     </servlet-mapping>
  +  
     <!--
       Some servlet engines (Tomcat) have defaults which are not overriden
       by '/' mapping, but must be overriden explicitly.
     -->
     <servlet-mapping>
  -    <servlet-name>Cocoon2</servlet-name>
  +    <servlet-name>Cocoon</servlet-name>
       <url-pattern>*.jsp</url-pattern>
  +  
     </servlet-mapping>
     <!--
       Some servlet engines (WebLogic) have defaults which are not overriden
       by '/' mapping, but must be overriden explicitly.
     -->
     <servlet-mapping>
  -    <servlet-name>Cocoon2</servlet-name>
  +    <servlet-name>Cocoon</servlet-name>
       <url-pattern>*.html</url-pattern>
     </servlet-mapping>
  +
  +  <!-- various MIME type mappings ====================================== -->
     
     <mime-mapping>
       <extension>css</extension>
       <mime-type>text/css</mime-type>
     </mime-mapping>
  - 
  +
  +  <mime-mapping>
  +    <extension>xml</extension>
  +    <mime-type>text/xml</mime-type>
  +  </mime-mapping>
  +
  +  <mime-mapping>
  +    <extension>xsl</extension>
  +    <mime-type>text/xml</mime-type>
  +  </mime-mapping>
  +
  +  <mime-mapping>
  +    <extension>xconf</extension>
  +    <mime-type>text/xml</mime-type>
  +  </mime-mapping>
  +
  +  <mime-mapping>
  +    <extension>xmap</extension>
  +    <mime-type>text/xml</mime-type>
  +  </mime-mapping>
  +
  +  <mime-mapping>
  +    <extension>ent</extension>
  +    <mime-type>text/plain</mime-type>
  +  </mime-mapping>
  +
  +  <mime-mapping>
  +    <extension>grm</extension>
  +    <mime-type>text/plain</mime-type>
  +  </mime-mapping>
  +
  +
  +
     <mime-mapping>
       <extension>swf</extension>
       <mime-type>application/x-shockwave-flash</mime-type>
  
  
  
  1.1                  xml-forrest/src/resources/conf/dtd.xmap
  
  Index: dtd.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file">
        <map:generator name="nekodtd" src="org.apache.forrest.components.generator.XNIConfigurableFileGenerator" label="content" />
      </map:generators>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="**.dtdx.xml">
          <map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd">
            <map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" />
          </map:generate>
          <map:transform src="library/xslt/dtdx2flat.xsl" />
          <map:transform src="library/xslt/flat2document.xsl" />
          <map:transform type="idgen" />
          <map:serialize type="xml"/>
          <!--
          <map:call resource="skinit">
            <map:parameter name="type" value="document2html" />
            <map:parameter name="isfaq" value="true" />
            <map:parameter name="notoc" value="true" />
            <map:parameter name="path" value="{1}.dtdx.xml" />
          </map:call>
          -->
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/editor.xmap
  
  Index: editor.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file">
        <map:generator label="content,data" logger="sitemap.generator.textparser" name="textparser" src="org.apache.cocoon.generation.TextParserGenerator"/>
        <map:generator label="content,data" name="stream" src="org.apache.cocoon.generation.StreamGenerator"/>
        <map:generator label="data" logger="sitemap.generator.extractor" name="extractor" src="org.apache.cocoon.generation.FragmentExtractorGenerator"/>
        <map:generator label="content,data" name="html" src="org.apache.cocoon.generation.HTMLGenerator"/>
        <map:generator label="content,data" logger="sitemap.generator.directory" name="directory" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.generation.DirectoryGenerator"/>
        <map:generator label="data" logger="sitemap.generator.request" name="request" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.generation.RequestGenerator"/>
        <map:generator label="content,data" logger="sitemap.generator.serverpages" name="serverpages" pool-grow="2" pool-max="32" pool-min="4" src="org.apache.cocoon.generation.ServerPagesGenerator"/>
        <map:generator label="data" logger="sitemap.generator.xpathdirectory" name="xpathdirectory" pool-grow="2" pool-max="32" src="org.apache.cocoon.generation.XPathDirectoryGenerator"/>    
      </map:generators>
      <map:serializers default="html">
   
        <map:serializer logger="sitemap.serializer.inks" name="links" src="org.apache.cocoon.serialization.LinkSerializer"/>
        <map:serializer logger="sitemap.serializer.xml" mime-type="text/xml" name="xml" src="org.apache.cocoon.serialization.XMLSerializer"/>
        <map:serializer logger="sitemap.serializer.text" mime-type="text/text" name="text" src="org.apache.cocoon.serialization.TextSerializer"/>
     
      </map:serializers>
      <map:transformers default="xslt">
  
        <map:transformer logger="sitemap.transformer.xinclude" name="xinclude" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.transformation.XIncludeTransformer"/>
        <map:transformer logger="sitemap.transformer.cinclude" name="cinclude" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.transformation.CIncludeTransformer"/>
        <map:transformer logger="sitemap.transformer.extractor" name="extractor" src="org.apache.cocoon.transformation.FragmentExtractorTransformer"/>
        <map:transformer logger="sitemap.transformer.filter" name="filter" src="org.apache.cocoon.transformation.FilterTransformer"/>
  
        <map:transformer logger="sitemap.transformer.encodeURL" name="encodeURL" src="org.apache.cocoon.transformation.EncodeURLTransformer"/>
        <map:transformer logger="sitemap.transformer.write-source" name="write-source" src="org.apache.cocoon.transformation.SourceWritingTransformer"/>
        <map:transformer logger="sitemap.transformer.textparser" name="textparser" src="org.apache.cocoon.transformation.TextFragmentParserTransformer"/>
      
      </map:transformers>
  
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      
    <map:pipes/>
        
    </map:components>
  
    <map:views>
      <map:view name="content" from-label="content">
        <map:serialize type="xml"/>
      </map:view> 
      <map:view name="agg" from-label="agg">
        <map:serialize type="xml"/>
      </map:view> 
      <map:view name="source" from-label="source">
        <map:serialize type="xml"/>
      </map:view> 
    </map:views>
  
    <map:pipelines>
    
     <map:pipeline internal-only="true">
  
     <!-- IMPORTANT! This pipeline sould be cachable -->
     <map:match pattern="*.grm">
      <map:generate type="textparser" src="chaperon/{1}.rgrm">
       <map:parameter name="grammar" value="chaperon/grammars/rgrm.grm"/>
      </map:generate>
  
      <map:transform src="chaperon/stylesheets/rgrm2grm.xsl"/>
      <map:serialize type="xml"/>
     </map:match>
    </map:pipeline>
  
  
    <map:pipeline internal-only="false"><!-- true -->
      <!-- 
  
      Generation pipelines to collect and format the appropriate content based on the requested behaviour and sub-editor
  
      -->
  
      <!-- 
      Directory Listing
  
      Uses the XPathDirectoryGenerator to extract the 'title' of each document
      This one removes any filename from the path, (which is a PIA to do in XSL!)
      Enforces using 'docs' folder of the main project as the root. 
      -->
      <map:match pattern="dir/**">
        <map:generate type="xpathdirectory" src="content/xdocs/{1}/#/document/header/title"/>           
        <map:transform src="editor/stylesheets/dir2skin.xsl"/>
        <map:transform src="editor/stylesheets/skin.xsl"/>
        <map:serialize type="html"/>              
      </map:match>
  
      <!-- 
      New
  
      Start a new document from a template
      -->
      <map:match pattern="new(*)/**">
        <map:generate src="editor/docs/template.xml"/>  <!-- get a template -->
        <map:transform src="editor/stylesheets/file2editor.xsl"/>
        <map:transform src="editor/stylesheets/skin.xsl"/>
        <map:serialize type="html"/>                
      </map:match>
  
  
      <!-- 
      Put
  
      Create a Document out of a Request
      save it if ther are no validation errors
      -->
      <map:match pattern="put">
        <map:generate type="request"/>
        <map:transform src="editor/stylesheets/editor2writer.xsl">
          <map:parameter name="base" value="content/xdocs/"/>
        </map:transform>
        <map:transform type="write-source">
            <map:parameter name="serializer" value="text"/>   
        </map:transform>          
        <map:transform src="editor/stylesheets/writeresult2skin.xsl"/>
        <map:transform src="editor/stylesheets/skin.xsl"/>                        
        <map:serialize type="html"/>
  
      </map:match>
  
      <!-- 
      Pre
  
      Create a Preview Document out of a Request
      validate it
      -->
      <map:match pattern="pre(bravo)">
        <map:generate type="request"/>
        <map:transform src="editor/stylesheets/request2editor.xsl"/>
        <map:transform type="textparser">
          <map:parameter name="grammar" value="chaperon/grammars/wiki.grm"/>
        </map:transform>  
        <map:transform src="library/xslt/wiki2html.xsl"/>
        <map:transform src="editor/stylesheets/skin.xsl"/>
        <map:serialize type="html"/>
      </map:match>
  
  
      <map:match pattern="see(bravo)**.xml">
        <map:redirect-to uri="../../{1}.html"/>
      </map:match>
  
  
      <map:match pattern="get(bravo)/**">
        <map:generate src="content/xdocs/{1}"/>
        <map:transform src="editor/stylesheets/file2editor.xsl"/>
        <map:transform src="editor/stylesheets/skin.xsl"/>
        <map:serialize type="html"/>                
      </map:match>
  
    </map:pipeline>
  
  
    <map:pipeline>  
  
      <map:match pattern="**.html">
        <map:generate type="html" src="editor/docs/{1}.html"/>
        <map:serialize type="html"/>
      </map:match>
  
      <!-- the default page -->
      <map:match pattern="">
        <map:redirect-to uri="edit/editor.html"/> 
      </map:match>
  
      <map:match pattern="/">
        <map:redirect-to uri="edit/editor.html"/> 
      </map:match>
  
  
      <map:match pattern="**/*.gif">
        <map:read src="editor/images/{2}.gif" mime-type="image/gif"/>
      </map:match>
  
      <map:match pattern="**style">
        <map:read mime-type="text/css" src="editor/docs/slash-edit.css"/>
      </map:match>
  
  
      <!-- generic error handlers -->
      <map:handle-errors>
        <map:transform src="editor/stylesheets/error/error2html.xsl"/>
        <map:serialize status-code="500"/>
      </map:handle-errors>
  
      <map:handle-errors type="404">
        <map:transform src="editor/stylesheets/error/error2html.xsl"/>
        <map:serialize/>
      </map:handle-errors>
  
    </map:pipeline>
  
  </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/faq.xmap
  
  Index: faq.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="**/faq.xml">
          <map:generate type="file" src="content/xdocs/{1}/faq.xml" />
          <map:transform src="library/xslt/faq2document.xsl" label="content" />
          <map:serialize type="xml"/>
        </map:match>
  
        <map:match pattern="faq.xml">
          <map:generate type="file" src="content/xdocs/faq.xml" />
          <map:transform src="library/xslt/faq2document.xsl" label="content" />
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/forrest.xmap
  
  Index: forrest.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file">
        <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content" />
        <!--
        <map:generator name="textparser" src="org.apache.cocoon.generation.TextParserGenerator" label="content" />
        -->
      </map:generators>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:actions>
        <map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.components.sourcetype.SourceTypeAction">
          <sourcetype name="document-v11">
            <document-declaration public-id="-//APACHE//DTD Documentation V1.1//EN" />
          </sourcetype>
          <sourcetype name="howto-v10">
            <document-declaration public-id="-//APACHE//DTD How-to V1.0//EN" />
          </sourcetype>
          <sourcetype name="docbook-v4.2">
            <document-declaration public-id="-//OASIS//DTD DocBook XML V4.2//EN" />
          </sourcetype>
          <sourcetype name="sdocbook-v1.0">
            <document-declaration public-id="-//OASIS//DTD Simplified DocBook XML V1.0//EN" />
          </sourcetype>
        </map:action>
      </map:actions>
      <map:selectors default="parameter">
        <map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" />
      </map:selectors>
      <map:pipes/>
    </map:components>
  
    <map:resources>
      <map:resource name="transform-to-document">
        <map:act type="sourcetype" src="{src}">
          <map:select type="parameter">
            <map:parameter name="parameter-selector-test" value="{sourcetype}" />
  
            <map:when test="howto-v10">
              <map:transform src="library/xslt/howto2document.xsl" label="content" />
            </map:when>
  
            <map:when test="docbook-v4.2">
              <map:transform src="library/xslt/docbook2document.xsl" label="content" />
            </map:when>
  
            <map:when test="sdocbook-v1.0">
              <map:transform src="library/xslt/docbook2document.xsl" label="content" />
            </map:when>
  
            <map:otherwise />
          </map:select>
        </map:act>
        <map:transform type="idgen" />
      </map:resource>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="**.xml">
  
          <map:act type="resource-exists">
            <map:parameter name="url" value="content/xdocs/{1}.ihtml" />
            <map:generate src="content/xdocs/{../1}.ihtml" type="html" />
            <map:transform src="library/xslt/html2document.xsl" />
            <map:transform type="idgen" />
            <map:serialize type="xml"/>
          </map:act>
  
          <map:act type="resource-exists">
            <map:parameter name="url" value="content/xdocs/{1}.ehtml" />
            <map:generate src="content/xdocs/{../1}.ehtml" />
            <map:transform src="library/xslt/html2htmlbody.xsl" />
            <map:serialize type="xml" />
          </map:act>
  
          <!--
          <map:act type="resource-exists">
            <map:parameter name="url" value="content/xdocs/{1}.cwiki" />
            <map:generate src="content/xdocs/{../1}.cwiki" type="textparser">
              <map:parameter name="grammar" value="chaperon/grammars/wiki.grm" />
              <map:parameter name="includeignorabletokens" value="true" />
            </map:generate>
            <map:transform src="library/xslt/wiki2htmlpage.xsl" />
            <map:transform src="library/xslt/wiki2html.xsl" />
            <map:transform src="library/xslt/html2document.xsl" />
            <map:transform type="idgen" />
            <map:serialize type="xml"/>
          </map:act>
          -->
  
          <map:generate src="content/xdocs/{1}.xml" />
          <map:call resource="transform-to-document">
            <map:parameter name="src" value="content/xdocs/{1}.xml" />
          </map:call>
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/issues.xmap
  
  Index: issues.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="forrest-issues.xml">
          <map:generate type="file" src="http://issues.cocoondev.org/jira/secure/IssueNavigator.jspa?pid=10000&amp;resolutionIds=-1&amp;view=rss&amp;reset=true" />
          <map:transform src="library/xslt/rssissues2document.xsl" label="content" />
          <map:transform type="idgen" />
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  
  1.1                  xml-forrest/src/resources/conf/linkmap.xmap
  
  Index: linkmap.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
        <map:match pattern="abs-linkmap">
          <map:generate src="content/xdocs/site.xml" />
          <map:transform src="library/xslt/absolutize-linkmap.xsl" />
          <map:serialize type="xml" />
        </map:match>
  
        <map:match pattern="abs-linkmap/**">
          <map:generate src="cocoon:/abs-linkmap" />
           <map:transform type="xpath">
            <map:parameter name="include" value="//*[@href='{1}']" />
          </map:transform>
          <map:serialize type="xml" />
        </map:match>
  
        <map:match pattern="**linkmap">
          <map:generate src="cocoon:/abs-linkmap" />
          <map:transform src="library/xslt/relativize-linkmap.xsl">
            <map:parameter name="path" value="{0}" />
          </map:transform>
          <map:serialize type="xml" />
        </map:match>
  
        <!-- This derivation of '**linkmap' is used when generating book.xml from a
        site.xml.  The /** suffix identifies a @href prefix which all nodes in the
        returned subtree must have. -->
        <map:match pattern="**linkmap/**">
          <map:generate src="cocoon:/abs-linkmap/{2}" />
          <map:transform src="library/xslt/relativize-linkmap.xsl">
            <map:parameter name="path" value="{1}linkmap" />
          </map:transform>
          <map:serialize type="xml" />
        </map:match>
      </map:pipeline>
    </map:pipelines>
  
  </map:sitemap>
  
  
  
  
  1.1                  xml-forrest/src/resources/conf/navigation.xmap
  
  Index: navigation.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
  
      <map:resource name="book">
        <map:act type="resource-exists">
          <!-- If a hand-created book.xml exists, use it -->
          <map:parameter name="url" value="content/xdocs/{dir}book.xml" />
          <map:generate src="content/xdocs/{../dir}book.xml" />
          <map:serialize type="xml"/>
        </map:act>
  
        <!-- If no book.xml, generate it from the linkmap. -->
        <map:generate src="cocoon://{dir}linkmap/{dir}" />
        <!-- The above generates the subset of the linkmap relevant to our directory. -->
        <map:transform src="library/xslt/site2book.xsl" />
        <map:serialize type="xml"/>
      </map:resource>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="**/book.xml">
          <map:call resource="book">
            <map:parameter name="dir" value="{1}/" />
          </map:call>
        </map:match>
  
        <map:match pattern="book.xml">
          <map:call resource="book">
            <map:parameter name="dir" value="" />
          </map:call>
        </map:match>
  
        <map:match pattern="**/tab.xml">
          <map:generate src="content/xdocs/tabs.xml" />
          <map:serialize type="xml"/>
        </map:match>
  
        <map:match pattern="tab.xml">
          <map:generate src="content/xdocs/tabs.xml" />
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
  
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/profiler.xmap
  
  Index: profiler.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file">
        <map:generator name="profiler" src="org.apache.cocoon.generation.ProfilerGenerator"/>
      </map:generators>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="profiler">
          <map:generate type="profiler"/>
          <map:transform src="library/xslt/profile2page.xsl">
            <map:parameter name="use-request-parameters" value="true"/>
          </map:transform>
          <map:transform src="library/xslt/page2html.xsl"/>
          <map:serialize/>
        </map:match>
  
      </map:pipeline>
  
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/redirect.xmap
  
  Index: redirect.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="">
          <map:redirect-to uri="{request:contextPath}/index.html" />
        </map:match>
        <map:match pattern="**/">
          <map:redirect-to uri="{request:contextPath}/{1}/index.html"/>
        </map:match>
  
      </map:pipeline>
  
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/revisions.xmap
  
  Index: revisions.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file">
        <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content" />
      </map:generators>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="community/*/index.xml">
          <map:generate src="content/xdocs/community/{1}/index.xml" />
          <map:transform type="idgen" />
          <map:serialize type="xml"/>
        </map:match>
  
        <map:match pattern="community**revision-*.xml">
          <map:generate src="content/xdocs/community{1}revision-{2}.xml" />
          <map:transform type="idgen" />
          <map:serialize type="xml"/>
        </map:match>
  
        <map:match pattern="community/*/*/revisions-**">
          <map:generate type="directory" src="content/xdocs/community/{1}/{2}">
            <map:parameter name="dateFormat" value="yyyy-MM-dd hh:mm" />
          </map:generate>
          <map:transform src="library/xslt/directory2revisions.xsl" label="content">
            <map:parameter name="use-request-parameters" value="true" />
            <map:parameter name="page" value="{3}" />
          </map:transform>
          <map:serialize type="xml" />
        </map:match>
  
        <map:match pattern="community/*/*/**.xml">
          <map:aggregate element="all">
            <map:part src="content/xdocs/community/{1}/{2}/{3}.xml" />
            <map:part src="cocoon:/community/{1}/{2}/revisions-{3}" />
          </map:aggregate>
          <map:transform src="library/xslt/{1}2document.xsl" label="content" />
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/sitemap-working.xmap
  
  Index: sitemap-working.xmap
  ===================================================================
  <?xml version="1.0"?>
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <!-- =========================== Components ================================ -->
    <map:components>
      <map:generators default="file">
        <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content" />
        <!--
        <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content" />
        <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content" />
        <map:generator name="libre" src="org.apache.forrest.yer.use.cocoon.HierarchyGenerator" label="content" />
        <map:generator name="textparser" src="org.apache.cocoon.generation.TextParserGenerator" label="content" />
        <map:generator name="profiler" src="org.apache.cocoon.generation.ProfilerGenerator"/>
        -->
      </map:generators>
  
      <map:transformers default="xslt">
        <map:transformer name="idgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
          <element>//*[local-name() = 'section']</element>
          <id>title/text()</id>
        </map:transformer>
  
        <map:transformer name="linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer">
          <input-module name="linkmap" src="{src}" reloadable="true" />
          <input-module name="site">
            <input-module name="linkmap" src="{src}" reloadable="true" />
            <prefix>/site//</prefix>
            <suffix>/@href</suffix>
          </input-module>
        </map:transformer>
  
        <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.cocoon.transformation.XPathTransformer" />
  
        <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xsltc" 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>com.icl.saxon.TransformerFactoryImpl</transformer-factory>-->
          <!--<transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>-->
        </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 logger="sitemap.transformer.lexer" name="lexer" src="org.apache.cocoon.transformation.LexicalTransformer"/>
        <map:transformer logger="sitemap.transformer.lexer" name="parser" src="org.apache.cocoon.transformation.ParserTransformer"/>
        <map:transformer logger="sitemap.transformer.lexer" name="pattern" src="org.apache.cocoon.transformation.PatternTransformer"/>
      </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>ISO-8859-1</encoding>
        </map:serializer>
  
        <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
          <encoding>ISO-8859-1</encoding>
        </map:serializer>
  
        <map:serializer name="rss091" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
          <doctype-public>-//Netscape Communications//DTD RSS 0.91//EN</doctype-public>
          <doctype-system>http://my.netscape.com/publish/formats/rss-0.91.dtd</doctype-system>
          <encoding>ISO-8859-1</encoding>
        </map:serializer>
  
        <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/pdf" />
  
        <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
          <encoding>ISO-8859-1</encoding>
        </map:serializer>
  
        <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
          <parameter name="quality" type="float" value="1.0"/>
        </map:serializer>
  
        <map:serializer mime-type="image/png" name="svg2png" src="org.apache.cocoon.serialization.SVGSerializer"/>
        <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:serializer mime-type="application/pdf" name="itext2pdf" src="org.apache.cocoon.serialization.iTextSerializer"/>
        <map:serializer mime-type="application/vnd.ms-excel" name="xls" src="org.apache.cocoon.serialization.HSSFSerializer"/>
      </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:actions>
        <!-- <map:action logger="sitemap.action.request" name="request" src="org.apache.cocoon.acting.RequestParamAction"/> -->
        <map:action logger="sitemap.action.resource-exists" name="resource-exists" src="org.apache.cocoon.acting.ResourceExistsAction"/>
  
      </map:actions>
  
      <!--
      The different pipeline implementations
      @todo use map:pipe and map:pipes with next cocoon CVS update
      -->
      <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"/>
  
        <!-- The following two can be used for profiling:
        <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>
  
    <!-- =========================== Views =================================== -->
    <map:views>
      <map:view name="content" from-label="content">
        <map:serialize type="xml" />
      </map:view>
  
      <map:view name="links" from-position="last">
        <map:transform src="library/xslt/filterlinks.xsl"/>
        <map:serialize type="links"/>
      </map:view>
    </map:views>
  
    <map:resources>
      <map:resource name="skinit">
        <map:transform src="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}"/>
          <!-- Can set an alternative project skinconfig here 
          <map:parameter name="config-file" value="../../../../skinconf.xml"/>
          -->
        </map:transform>
  
        <map:serialize/>
      </map:resource>
  
      <!-- Checks the document type of the resource passed in the "src" parameter
      and converts it to document if necessary -->
    </map:resources>
  
    <!-- =========================== Pipelines ================================= -->
    <map:pipelines>
  
      <map:pipeline internal-only="false">
  
        <!-- ============================================================ -->
        <!-- OUTPUT FORMATS                                               -->
        <!-- ============================================================ -->
        <!--
        <map:match pattern="dombug/*">
          <map:mount check-reload="yes" src="dombug/" uri-prefix="dombug"/>
        </map:match>
        -->
  
  
        <!--
        <map:match pattern="profiler">
          <map:generate type="profiler"/>
          <map:serialize type="xml"/>
        </map:match>
        -->
  
        <map:match pattern="*.html">
          <map:aggregate element="site">
            <map:part src="cocoon:/tab-{1}.xml"/>
            <map:part src="cocoon:/menu-{1}.xml"/>
            <map:part src="cocoon:/body-{1}.xml"/>
          </map:aggregate>
          <map:call resource="skinit">
            <map:parameter name="type" value="site2xhtml"/>
            <map:parameter name="path" value="{0}"/>
          </map:call>
        </map:match>         
  
        <map:match pattern="**/*.html">
          <map:aggregate element="site">
            <map:part src="cocoon:/{1}/tab-{2}.xml"/>
            <map:part src="cocoon:/{1}/menu-{2}.xml"/>
            <map:part src="cocoon:/{1}/body-{2}.xml"/>
          </map:aggregate>
          <map:call resource="skinit">
            <map:parameter name="type" value="site2xhtml"/>
            <map:parameter name="path" value="{0}"/>
          </map:call>
        </map:match>
  
        <map:match pattern="*.pdf">
          <map:generate src="cocoon:/{1}.xml"/>
          <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
          <map:serialize type="fo2pdf"/>
        </map:match>
  
        <map:match pattern="**/*.pdf">
          <map:generate src="cocoon:/{1}/{2}.xml"/>
          <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
          <map:serialize type="fo2pdf"/>
        </map:match>
  
      </map:pipeline>
  
      <!-- ============================================================ -->
      <!-- INTERMEDIATE FORMATS                                         -->
      <!-- ============================================================ -->
      <map:pipeline internal-only="false">
  
        <map:match pattern="**body-*.xml">
          <map:generate src="cocoon:/{1}{2}.xml"/>
          <map:transform type="xinclude"/>
          <map:transform type="linkrewriter" src="cocoon:/{1}linkmap">
            <map:parameter name="schemes" value="site ext"/>
          </map:transform>
          <map:call resource="skinit">
            <map:parameter name="type" value="document2html"/>
            <map:parameter name="path" value="/{1}{2}.xml"/>
            <map:parameter name="notoc" value="true"/>
          </map:call>
        </map:match>
  
        <map:match pattern="**menu-*.xml">
          <map:generate src="cocoon:/{1}book.xml"/>
          <map:transform type="linkrewriter" src="cocoon:/{1}linkmap" />
          <map:call resource="skinit">
            <map:parameter name="type" value="book2menu"/>
            <map:parameter name="path" value="/{1}{2}.xml"/>
            <map:parameter name="notoc" value="true"/>
          </map:call>
        </map:match>
  
        <map:match pattern="**tab-*.xml">
          <map:generate src="cocoon:/{1}tab.xml" />
          <map:transform type="linkrewriter" src="cocoon:/{1}linkmap" />
          <map:call resource="skinit">
            <map:parameter name="type" value="tab2menu"/>
            <map:parameter name="path" value="{1}{2}"/>
          </map:call>
        </map:match>
      </map:pipeline>
  
      <!-- ============================================================ -->
      <!-- SOURCE FORMATS                                               -->
      <!-- ============================================================ -->
  
      <map:pipeline internal-only="false">
        <map:match pattern="**book.xml">
          <map:mount uri-prefix="" src="navigation.xmap" check-reload="yes" />
        </map:match>
        <map:match pattern="**tab.xml">
          <map:mount uri-prefix="" src="navigation.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="**linkmap**">
          <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="community/*/**">
          <map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**issues.xml">
          <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="howto**.xml">
          <map:mount uri-prefix="" src="howto.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**faq**">
          <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**.js">
          <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**.css">
          <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**images**">
          <map:mount uri-prefix="" src="static.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="">
          <map:mount uri-prefix="" src="redirect.xmap" check-reload="yes" />
        </map:match>
  
        <map:match pattern="**/">
          <map:mount uri-prefix="" src="redirect.xmap" check-reload="yes" />
        </map:match>
  
  
         <map:match pattern="**">
          <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
        </map:match>
  
      </map:pipeline>
  
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/static.xmap
  
  Index: static.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html"/>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
      <map:resource name="skin-read">
        <map:read src="skins/{forrest:skin}/{path}" mime-type="{mime-type}" />
      </map:resource>
    </map:resources>
  
    <map:pipelines>
  
      <map:pipeline>
        <map:match pattern="skin/**.js">
          <map:call resource="skin-read">
            <map:parameter name="path" value="scripts/{1}.js" />
            <map:parameter name="mime-type" value="application/javascript" />
          </map:call>
        </map:match>
  
        <map:match pattern="**/skin/**.js">
          <map:call resource="skin-read">
            <map:parameter name="path" value="scripts/{2}.js" />
            <map:parameter name="mime-type" value="application/javascript" />
          </map:call>
        </map:match>
  
        <map:match pattern="**.js">
          <map:read src="resources/scripts/{1}.js" mime-type="application/javascript" />
        </map:match>
  
        <map:match pattern="skin/**.css">
          <map:call resource="skin-read">
            <map:parameter name="path" value="css/{1}.css" />
            <map:parameter name="mime-type" value="text/css" />
          </map:call>
        </map:match>
  
        <map:match pattern="**/skin/**.css">
          <map:call resource="skin-read">
            <map:parameter name="path" value="css/{2}.css" />
            <map:parameter name="mime-type" value="text/css" />
          </map:call>
        </map:match>
  
        <map:match pattern="**.css">
          <map:read src="resources/css/{1}.css" mime-type="text/css" />
        </map:match>
  
        <map:match pattern="skin/images/**.*">
          <map:call resource="skin-read">
            <map:parameter name="path" value="images/{1}.{2}" />
            <map:parameter name="mime-type" value="image/{2}" />
          </map:call>
        </map:match>
  
        <!-- DS: handles images local to a contributor directory -->
        <map:match pattern="**my-images/**.*">
          <map:read src="content/xdocs/{1}my-images/{2}.{3}" mime-type="image/{3}" />
        </map:match>
  
        <map:match pattern="images/**.png">
          <map:act type="resource-exists">
            <map:parameter name="url" value="resources/images/{1}.svg" />
            <map:generate src="resources/images/{../1}.svg" />
            <map:serialize type="svg2png" />
          </map:act>
  
          <map:read src="resources/images/{1}.png" mime-type="image/png" />
        </map:match>
  
        <map:match pattern="images/**.*">
          <map:read src="resources/images/{1}.{2}" mime-type="image/{2}" />
        </map:match>
  
        <!-- deprecated -->
        <map:match pattern="**my-images/**.*">
          <map:read src="content/xdocs/{1}my-images/{2}.{3}" mime-type="image/{3}" />
        </map:match>
  
  
        <map:match pattern="**favicon.ico">
          <map:call resource="skin-read">
            <map:parameter name="path" value="images/favicon.ico" />
            <map:parameter name="mime-type" value="image/x-ico" />
          </map:call>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>
  
  
  
  1.1                  xml-forrest/src/resources/conf/status.xmap
  
  Index: status.xmap
  ===================================================================
  <?xml version="1.0"?>
  
  <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
    <map:components>
      <map:generators default="file"/>
      <map:serializers default="html">
        <map:serializer name="rss091" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
          <doctype-public>-//Netscape Communications//DTD RSS 0.91//EN</doctype-public>
          <doctype-system>http://my.netscape.com/publish/formats/rss-0.91.dtd</doctype-system>
          <encoding>ISO-8859-1</encoding>
        </map:serializer>
      </map:serializers>
      <map:transformers default="xslt"/>
      <map:readers default="resource"/>
      <map:matchers default="wildcard"/>
      <map:selectors default="browser"/>
      <map:pipes/>
    </map:components>
  
    <map:resources>
    </map:resources>
  
    <map:pipelines>
      <map:pipeline>
  
        <map:match pattern="changes.xml">
          <map:generate type="file" src="status.xml" />
          <map:transform src="library/xslt/changes2document.xsl" label="content" />
          <map:serialize type="xml"/>
        </map:match>
  
        <map:match pattern="changes.rss">
          <map:generate src="status.xml" />
          <map:transform src="library/xslt/changes2rss.xsl" label="content" />
          <map:serialize type="rss091" />
        </map:match>
  
        <map:match pattern="todo.xml">
          <map:generate type="file" src="status.xml" />
          <map:transform src="library/xslt/todo2document.xsl" label="content" />
          <map:serialize type="xml"/>
        </map:match>
  
      </map:pipeline>
    </map:pipelines>
  </map:sitemap>