<?xml version="1.0" encoding="UTF-8"?>
<cocoon version="2.1">

<!--+
    |  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 to be
      |   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 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 Flowscript ========================== -->

  <!--+
      |  The <flow-interpreters> element is used to describe the flowscript
      |  engines usedd by the current instance.
      |
      |  The attributes recognized by the <flow-interpreters> element are:
      |
      |    default (string value):
      |
      |       the default interpreted language assumed for <map:script>
      |       elements which do not specify a "language" attribute. If not
      |       present, the first language that's described within the
      |       <flow-interpreters> element is assumed to be the default
      |       language.
      |
      |  Within <flow-interpreters> only <component-instance> elements are
      |  recognized. The attributes recognized by this element are "name"
      |  and "class". "name" specifies the name of a scripting language,
      |  and "class" defines the Java class that implements it. See
      |  org.apache.cocoon.components.flow.Interpreter for the Cocoon
      |  interface with an scripting language interpreter.
      |
      |  A <component-instance> element contains as subelements the
      |  following elements:
      |
      |    reload-scripts (boolean value, default false):
      |
      |       whether to check if the scripts source files are
      |       modified. Checking for modification is an expensive
      |       operation, so leave it disabled in a production
      |       environment. If not present it is assumed to be "false". When
      |       "true" *all* script files are checked for modification on
      |       each function invocation done using <map:call
      |       function="...">, but not more frequent than the value of
      |       "check-time" (see below).
      |
      |    check-time (long value, default 1000):
      |
      |       time in miliseconds between the checks for the last
      |       modification date of script files.
      |
      |    debugger (boolean value, default false):
      |
      |       whether support for the JavaScript debugger should be enabled
      |       in the control flow.
      +-->
  <flow-interpreters default="JavaScript" logger="flow">
    <component-instance class="org.apache.cocoon.components.flow.javascript.JavaScriptInterpreter" name="JavaScript">
      <load-on-startup>resource://org/apache/cocoon/components/flow/javascript/system.js</load-on-startup>
      <reload-scripts>true</reload-scripts>
      <check-time>4000</check-time>
      <!--  <debugger>enabled</debugger> -->  <!-- JavaScript Debugger support -->
    </component-instance>
  </flow-interpreters>

  <!--+
      | Configuration for the continuations manager.
      |
      | This section specifies the default time-to-live of continuations
      | in miliseconds using the "time-to-live" attribute of
      | the <continuations-manager> element.
      |
      | The <expirations-check> element specifies different policies for
      | expiring continuations. Currently only the "periodic" type is
      | supported.
      +-->
  <continuations-manager logger="flow" time-to-live="3600000">
    <expirations-check type="periodic">
      <offset>180000</offset>
      <period>180000</period>
    </expirations-check>
  </continuations-manager>

<!-- =================== Sitemap Input/Output Modules ====================== -->

  <!--+
      | 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.BaseLinkModule" logger="core.modules.input" name="baselink"/>
    <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.RealPathModule" logger="core.modules.input" name="realpath"/> 
    <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.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 logger="core.modules.input" name="forrest"    class="org.apache.cocoon.components.modules.input.ChainMetaModule">
      <input-module name="request-param"/>
      <input-module name="request-attr"/>
      <input-module name="session-attr"/>
      <input-module name="defaults"/>
    </component-instance>
    <component-instance name="defaults"       class="org.apache.cocoon.components.modules.input.DefaultsMetaModule">
      <values>
        <skin>@skin@</skin>
        <menu-scheme>@menu-scheme@</menu-scheme>
        <bugtracking-url>@bugtracking-url@</bugtracking-url>
      </values>
    </component-instance>


    <component-instance
      class="org.apache.cocoon.components.modules.input.XMLFileModule"
      logger="core.modules.xml" name="skinconf"/>

    <component-instance
      class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
      logger="core.modules.mapper" name="conf">
      <input-module name="skinconf">
        <file src="skinconf.xml" reloadable="true" />
      </input-module>
      <prefix>/skinconfig/</prefix>
    </component-instance>

    <!-- For the site: scheme -->
    <component-instance
      class="org.apache.cocoon.components.modules.input.XMLFileModule"
      logger="core.modules.xml" name="linkmap"/>

    <!-- Links to URIs within the site -->
    <component-instance
      class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
      logger="core.modules.mapper" name="site"/>

    <!-- Links to external URIs, as distinct from 'site' URIs -->
    <component-instance
      class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
      logger="core.modules.mapper" name="ext"/>

</input-modules>


<!-- ================================= XML ================================ -->

  <!--+
      | Source Factories
      |
      | Each source factory adds a special uri schemes 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"/>
    <!-- the "*" protocol handles all uri schemes that are not explicitely specified. This includes all
         JDK standard protocols, with special handling of the "file:" protocol which is modifiable
         (can be written to) and traversable (directory structures can be crawled). -->
    <component-instance class="org.apache.excalibur.source.impl.URLSourceFactory" name="*"/>
  </source-factories>
  <!--+
      | 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 logger="core.resolver">
    <parameter name="catalog" value="resources/schema/catalog.xcat"/>
    <parameter name="local-catalog" value="@local-catalog@"/>
    <parameter name="verbosity" value="@catalog-verbosity@"/>
  </entity-resolver>

  <!--+
      | 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) do not 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).
      +-->
  <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="???"/-->
    <!-- drop-dtd-comments: causes all comment events originating from DTD
         comments to be dropped right after parsing -->
    <parameter name="drop-dtd-comments" value="true"/>
  </xml-parser>


  <!--+
      | 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.
      | WARNING: * if you enable incremental-processing, you should be aware of
      |            the following bug:
      |            http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13186
      |          * incremental-processing creates an additional, non-pooled thread.
      |          * using incremental-processing does not save memory, the input
      |            tree will still be build completely.
      |          * incremental processing is a 'static' thing in Xalan: if you
      |            enable it on one xslt-processor, enable it on all.
      +-->
  <xslt-processor logger="core.xslt-processor">
     <parameter name="use-store" value="true"/>
     <parameter name="incremental-processing" value="false"/>
  </xslt-processor>

  <!--+
      | XSLT Processor using xsltc from Xalan
      | For Interpreted Xalan use:
      | <transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
      +-->
  <component class="org.apache.excalibur.xml.xslt.XSLTProcessorImpl" logger="core.xslt-processor" role="org.apache.excalibur.xml.xslt.XSLTProcessor/xsltc">
     <parameter name="use-store" value="false"/>
     <parameter name="transformer-factory" value="org.apache.xalan.xsltc.trax.TransformerFactoryImpl"/>
  </component>
  
  <!--+
      | Xalan XSLT Processor
      +-->
  <component class="org.apache.excalibur.xml.xslt.XSLTProcessorImpl" logger="core.xslt-processor" role="org.apache.excalibur.xml.xslt.XSLTProcessor/xalan">
     <parameter name="use-store" value="false"/>
     <parameter name="incremental-processing" value="false"/>
     <parameter name="transformer-factory" value="org.apache.xalan.processor.TransformerFactoryImpl"/>
  </component>

  <!--+
      | Saxon XSLT Processor
      | For old (6.5.2) Saxon use:
      |  <parameter name="transformer-factory" value="com.icl.saxon.TransformerFactoryImpl"/>
      | For new (7.x?) Saxon use:
      |  <parameter name="transformer-factory" value="net.sf.saxon.TransformerFactoryImpl"/>
  <component logger="core.xslt-processor"
             role="org.apache.excalibur.xml.xslt.XSLTProcessor/saxon"
             class="org.apache.excalibur.xml.xslt.XSLTProcessorImpl">
     <parameter name="use-store" value="false"/>
     <parameter name="transformer-factory" value="com.icl.saxon.TransformerFactoryImpl"/>
  </component>
  +-->

  <!-- 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/xml" role="org.apache.excalibur.xml.sax.SAXParser"/>
  <!--..... Start configuration from 'tidy' -->


      <parser mime-type="text/html" role="org.apache.excalibur.xml.sax.SAXParser/HTML"/>

<!--..... End configuration from 'tidy' -->
</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 swapping of the objects into persistent cache on and off. -->
     <parameter name="use-persistent-cache" value="false"/>
  </transient-store>

  <!--+
      | Persistent Store: holds objects that have to survive shutdown.
      | WARNING: FilesystemStore is broken. Cocoon uses DefaultStore based
      | on the Avalon Excalibur JispStore 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.
      |
      | DefaultStore 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.impl.DefaultStore" 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 =========================== -->


<!-- ================ Internationalization Catalogs =================== -->

  <!--+
      | I18n Bundle Factory
      |
      | BundleFactory loads Bundles with i18n resources for the given locale.
      | Bundles are loaded from the 'catalogue_location'. Bundle base name is
      | 'catalogue_name' value.
      | If 'cache-at-startup' is true then BundleFactory preloads bundles.
      +-->
  <i18n-bundles logger="core.i18n-bundles">
    <catalogue-name>messages</catalogue-name>
    <catalogue-location>i18n/translations</catalogue-location>
    <cache-at-startup>true</cache-at-startup>
  </i18n-bundles>

<!-- ================ XSP (eXtensible Server Pages) ===================== -->

  <!--+
      | Program Generator
      |
      | The ProgamGenerator builds programs from a XML document written in a
      | MarkupLanguage.
      |
      |    auto-reload: whether the system should check if the source was
      |                 modified and reload of consequence.
      |    root-package: the java package to use for the generated classes
      |    preload: whether the system should preload the necessary components
      +-->
  <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 for the XSP pages
      +-->
  <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"/>

      <!--+
          | Specifies which Java compiler to use. Possible variants are:
          |
          |  - Javac: the java compiler that comes with JDK
          |  - Pizza: the Pizza java compiler
          |  - Jikes: the Jikes java compiler
          |  - EclipseJavaCompiler: the Eclipse JTD java compiler
          |
          | NOTE: the Eclipse JTD is the only java compiler that is capable
          |       of imports classes thru the context classloader. All other
          |       compilers import classes from the JVM classpath and might
          |       normally result in ClassNotFound problems at compilation
          |       time. It is *HIGHLY* suggested that you use this compiler
          |       or you might experience problems in some servlet containers.
          +-->
      <!--parameter name="compiler" value="org.apache.cocoon.components.language.programming.java.Javac"/-->
      <!--parameter name="compiler" value="org.apache.cocoon.components.language.programming.java.Pizza"/-->
      <!--parameter name="compiler" value="org.apache.cocoon.components.language.programming.java.Jikes"/-->
      <parameter name="compiler" value="org.apache.cocoon.components.language.programming.java.EclipseJavaCompiler"/>

    </java-language>

    <!-- Interpreted JavaScript language -->
    <js-language logger="core.language.js" name="js"/>
  </programming-languages>

  <!--+
      | Logisheets
      |
      | This section defines the XSP logicsheets. A logicsheet is a special
      | XSLT stylesheet used to translate user-defined dynamic markup into
      | equivalent XSP markup that embeds directives for a given markup
      | language.
      |
      | Logicsheets are the XSP equivalent of taglibs. For info about
      | the tags included in the default taglibs, please, refer to the
      | documentation.
      +-->
  <markup-languages>
    <xsp-language logger="core.markup.xsp" name="xsp">
      <parameter name="prefix" value="xsp"/>
      <parameter name="uri" value="http://apache.org/xsp"/>

      <!--+
          | Properties for the java language
          +-->
      <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: access request parameters -->
        <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: access response parameters -->
        <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: manages and access the session -->
        <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: manages and access cookies  -->
        <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 Log logicsheet: access the cocoon logs from an xsp page  -->
        <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>

        <!-- The Utility 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>

        <!-- The Action 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>

        <!-- The XScript 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>

        <!-- The SOAP 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>

        <!-- The JPath 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>

        <!-- The input logicsheet allows easy access to InputModules -->
        <builtin-logicsheet>
          <parameter name="prefix" value="input"/>
          <parameter name="uri" value="http://apache.org/cocoon/xsp/input/1.0"/>
          <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/input.xsl"/>
        </builtin-logicsheet>
      </target-language>

      <!--+
          | Properties for the javascript language
          +-->
      <target-language name="js">
        <parameter name="core-logicsheet" value="resource://org/apache/cocoon/components/language/markup/xsp/javascript/xsp.xsl"/>

        <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/javascript/request.xsl"/>
        </builtin-logicsheet>

        <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/javascript/response.xsl"/>
        </builtin-logicsheet>

        <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/javascript/session.xsl"/>
        </builtin-logicsheet>
      </target-language>
    </xsp-language>
  </markup-languages>

  <!-- Xscript -->
  <xscript logger="core.xscript">
    <parameter name="xscript:copy-of" value="resource://org/apache/cocoon/components/xscript/xslt/copy-of.xsl"/>
    <parameter name="xscript:value-of" value="resource://org/apache/cocoon/components/xscript/xslt/value-of.xsl"/>
  </xscript>

<!-- ====================== 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"/>
<!--..... End configuration from 'profiler' -->
<!--..... Start configuration from 'deprecated' -->


  <!--+
      | 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"/>
  </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"/>
    <!-- Allows access to resources available from the servlet context, using getResource() method. -->
    <protocol class="org.apache.cocoon.components.source.ContextSourceFactory" name="context"/>
  </source-handler>
  
<!--..... End configuration from 'deprecated' -->
</cocoon>
