<?xml version="1.0"?>
<!-- ===============================================
Default Forrest sitemap, defining the whole site.
Delegates to the other *.xmap files.  See
http://xml.apache.org/forrest/sitemap-ref.html

$Revision$
==================================================== -->


<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:components>
    <map:generators default="file">
      <map:generator name="file"      src="org.apache.cocoon.generation.FileGenerator" />
      <!--
      <map:generator name="html"      src="org.apache.cocoon.generation.HTMLGenerator">
        <jtidy-config>jtidy.properties</jtidy-config>
      </map:generator>
      <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" />
      -->
    </map:generators>

    <map:transformers default="xslt">
      <!-- Generates @id attributes from <title> strings -->
      <map:transformer name="idgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
        <element>//*[local-name() = 'section']</element>
        <id>title/text()</id>
      </map:transformer>

      <!-- Rewrites links, e.g. transforming href="site:index" to href="../index.html" -->
      <!-- See http://xml.apache.org/forrest/sitemap-ref.html#linkrewriting_impl -->
      <map:transformer name="linkrewriter" logger="sitemap.transformer.linkrewriter" src="org.apache.cocoon.transformation.LinkRewriterTransformer">
        <link-attrs>href src</link-attrs>
        <schemes>site ext</schemes>

        <input-module name="site">
          <input-module name="linkmap">
            <file src="{src}" reloadable="true" />
          </input-module>
          <prefix>/site//</prefix>
          <suffix>/@href</suffix>
        </input-module>
        <input-module name="ext">
          <input-module name="linkmap">
            <file src="{src}" reloadable="true" />
          </input-module>
          <prefix>/site/external-refs//</prefix>
          <suffix>/@href</suffix>
        </input-module>
      </map:transformer>

      <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.cocoon.transformation.XPathTransformer" />
      <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
        <transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
        <!--<transformer-factory>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>
      </map:serializer>

      <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"/>
      
      <map:serializer name="xml-document" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
        <cdata-section-elements>source</cdata-section-elements>
        <doctype-public>-//APACHE//DTD Documentation V1.2//EN</doctype-public>
        <doctype-system>document-v12.dtd</doctype-system>
      </map:serializer>

      <map:serializer name="fo2pdf" src="org.apache.cocoon.serialization.FOPSerializer" mime-type="application/pdf" />

      <!-- ========================== FOP Additions ========================== -->
      <map:serializer name="svg2pdf" mime-type="application/pdf"       src="org.apache.cocoon.serialization.SVGSerializer">
        <parameter name="transcoder" value="org.apache.fop.svg.PDFTranscoder"/>
      </map:serializer>
      <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer" />
      <!-- ======================= End FOP Additions ======================== -->

      <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
        <encoding>ISO-8859-1</encoding>
      </map:serializer>
     <!--
      <map:serializer mime-type="application/x-shockwave-flash" name="swf" src="org.apache.cocoon.serialization.SWFSerializer"/>
      <map:serializer mime-type="application/msword" name="fo2rtf" src="org.apache.cocoon.serialization.RTFSerializer"/>
      -->
    </map:serializers>

    <map:matchers default="wildcard">
      <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
      <map:matcher name="regexp" src="org.apache.cocoon.matching.RegexpURIMatcher"/>
    </map:matchers>

    <map:selectors>
      <map:selector logger="sitemap.selector.exists" name="exists" src="org.apache.cocoon.selection.ResourceExistsSelector" />
    </map:selectors>

    <map:pipes default="caching">
      <map:pipe name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
      <!--
      <map:pipe name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
      <map:pipe name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
      <map:pipe name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
      -->
    </map:pipes>
  </map:components>

  <!-- NOTE: the 'links view' is no longer used to discover a page's links.
       Instead of filterlinks.xsl, use cli.xconf include/exclude nodes to define which pages to render.
  <map:views>
    <map:view name="links" from-position="last">
      <map:transform src="resources/stylesheets/filterlinks.xsl">
        <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
      </map:transform>
      <map:serialize type="links"/>
    </map:view>
  </map:views>
  -->

  <map:resources>
    <map:resource name="skinit">
      <map: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}"/>
        <map:parameter name="obfuscate-mail-links" value="false"/>
        <!-- Can set an alternative project skinconfig here 
        <map:parameter name="config-file" value="../../../../skinconf.xml"/>
        -->
      </map:transform>

      <map:serialize/>
    </map:resource>

  </map:resources>

  <!-- =========================== Pipelines ================================= -->
  <map:pipelines>

    <map:pipeline internal-only="false">

      <!-- ============================================================ -->
      <!-- SOURCE FORMATS                                               -->
      <!--                 Raw XML sources, typically doc-v12 format    -->
      <!-- ============================================================ -->
      <!-- http://xml.apache.org/forrest/sitemap-ref.html#source_pipelines -->

      <!-- Body content -->
      <map:match pattern="**.xml">
        <map:match pattern="changes.xml">
          <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="todo.xml">
          <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="**dtdx.xml">
          <map:mount uri-prefix="" src="dtd.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="forrest-issues.xml">
          <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="**faq.xml">
          <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="community/**index.xml">
          <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="community/*/**.xml">
          <map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" />
        </map:match>

        <map:match pattern="site.xml">
          <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
        </map:match>

        <!-- Default source types -->
        <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />

      </map:match>

      <!-- Menu content -->
      <map:match pattern="abs-menulinks">
        <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
      </map:match>

      <map:match pattern="**menulinks-*">
        <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
      </map:match>

      <!-- Link maps -->
      <map:match pattern="abs-linkmap">
        <map:mount uri-prefix="" src="linkmap.xmap"/>
      </map:match>

      <map:match pattern="**linkmap-*">
        <map:match pattern="linkmap-site.*">
          <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
        </map:match>

        <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
      </map:match>

    </map:pipeline>


    <!-- ============================================================ -->
    <!-- INTERMEDIATE FORMATS                                         -->
    <!--                          Tabs, menus and body HTML.          -->
    <!--                       Called from output format pipelines    -->
    <!-- ============================================================ -->
    <!-- http://xml.apache.org/forrest/sitemap-ref.html#intermediate_pipelines -->

    <map:pipeline internal-only="false">

      <!-- External matches -->
      <!-- (HTML rendered directly from special formats) -->
      <map:match pattern="**body-faq.html">
        <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
      </map:match>

      <!-- ========================== FOP Additions ========================== -->
      <map:match pattern="body-compliance.xml">
        <map:generate type="file" src="content/xdocs/compliance.xml"/>
        <map:transform src="resources/stylesheets/compliance2html.xsl"/>
        <map:serialize type="xml"/>
      </map:match>
      <!-- ======================== End FOP Additions ======================== -->
 
      <map:match pattern="**body-*.html">
        <map:select type="exists">
          <map:when test="content/xdocs/{1}{2}.ehtml">
            <map:generate src="content/xdocs/{1}{2}.ehtml" />
            <map:transform src="resources/stylesheets/html2htmlbody.xsl" />
            <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
            <map:serialize type="xml" />
          </map:when>
        </map:select>
      </map:match>

      <!-- Default matches -->
      <!-- (HTML rendered from doc-v11 intermediate format -->
      <map:match pattern="**body-*.html">
        <map:generate src="cocoon:/{1}{2}.xml"/>
        <map:transform type="idgen"/>
        <map:transform type="xinclude"/>
        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
        <map:call resource="skinit">
          <map:parameter name="type" value="document2html"/>
          <map:parameter name="path" value="{1}{2}.html"/>
          <map:parameter name="notoc" value="false"/>
        </map:call>
      </map:match>

      <map:match pattern="**menu-*.html">
        <map:generate src="cocoon:/{1}book-{2}.html"/>
        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
        <map:call resource="skinit">
          <map:parameter name="type" value="book2menu"/>
          <map:parameter name="path" value="{1}{2}.html"/>
        </map:call>
      </map:match>

      <map:match pattern="**tab-*.html">
        <map:generate src="content/xdocs/tabs.xml" />
        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
        <map:call resource="skinit">
          <map:parameter name="type" value="tab2menu"/>
          <map:parameter name="path" value="{1}{2}.html"/>
        </map:call>
      </map:match>

      <map:match pattern="**book-*.html">
        <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
      </map:match>

    </map:pipeline>


    <map:pipeline internal-only="false">

      <!-- ============================================================ -->
      <!-- OUTPUT FORMATS                                               -->
      <!--                  Serves content directly to the user         -->
      <!-- +==========================================================+ -->
      <!-- http://xml.apache.org/forrest/sitemap-ref.html#output_pipelines -->

      <map:match type="regexp" pattern="^.+$">
        <map:select type="exists">
          <map:when test="content/{0}">
            <map:mount uri-prefix="" src="raw.xmap" check-reload="yes" />
          </map:when>
        </map:select>
      </map:match>

      <!-- ========================== FOP Additions ========================== -->

      <map:match pattern="*/svg/*.svg">
        <map:read src="content/xdocs/{1}/svg/{2}.svg" mime-type="image/svg"/>
      </map:match>
      <map:match pattern="*/svg/*.png">
        <map:generate src="content/xdocs/{1}/svg/{2}.svg"/>
        <map:serialize type="svg2png"/>
      </map:match>
      <map:match pattern="*/svg/*.pdf">
        <map:generate src="content/xdocs/{1}/svg/{2}.svg"/>
        <map:serialize type="svg2pdf"/>
      </map:match>

      <map:match pattern="fo/*.fo">
        <map:read src="content/xdocs/fo/{1}.fo" mime-type="text/xml"/>
      </map:match>
      <map:match pattern="fo/*.ent">
        <map:read src="content/xdocs/fo/{1}.ent" mime-type="text/plain"/>
      </map:match>
      <map:match pattern="fo/*.fo.pdf">
        <map:generate src="content/xdocs/fo/{1}.fo"/>
        <map:serialize type="fo2pdf"/>
      </map:match>
      <map:match pattern="**/fo/*.fo">
        <map:read src="content/xdocs/{1}/fo/{2}.fo" mime-type="text/xml"/>
      </map:match>
      <map:match pattern="**/fo/*.fo.pdf">
        <map:generate src="content/xdocs/{1}/fo/{2}.fo"/>
        <map:serialize type="fo2pdf"/>
      </map:match>
      <map:match pattern="compliance.pdf">
        <map:generate type="file" src="content/xdocs/compliance.xml"/>
        <map:transform src="resources/stylesheets/compliance2fo.xsl" label="content"/>
        <map:serialize type="fo2pdf"/>
      </map:match>

      <map:match pattern="**/faq.pdf">
        <map:generate type="file" src="content/xdocs/{1}/faq.xml"/>
        <map:transform src="resources/stylesheets/faq2document.xsl" label="content"/>
        <map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/>
        <map:serialize type="fo2pdf"/>
      </map:match>

      <!-- ======================= End FOP Additions ======================== -->
       


      <map:match pattern="*.html">
        <map:aggregate element="site">
          <map:part src="cocoon:/tab-{0}"/>
          <map:part src="cocoon:/menu-{0}"/>
          <map:part src="cocoon:/body-{0}"/>
        </map:aggregate>
        <map:call resource="skinit">
          <map:parameter name="type" value="site2xhtml"/>
          <map:parameter name="path" value="{0}"/>
        </map:call>
      </map:match>         

      <map:match pattern="**/*.html">
        <map:aggregate element="site">
          <map:part src="cocoon:/{1}/tab-{2}.html"/>
          <map:part src="cocoon:/{1}/menu-{2}.html"/>
          <map:part src="cocoon:/{1}/body-{2}.html"/>
        </map:aggregate>
        <map:call resource="skinit">
          <map:parameter name="type" value="site2xhtml"/>
          <map:parameter name="path" value="{0}"/>
        </map:call>
      </map:match>

      <map:match pattern="**faq.pdf">
        <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
      </map:match>

      <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
        <map:generate src="cocoon:/{1}{2}.xml"/>
        <!-- <map:transform type="idgen"/> -->
        <map:transform type="xinclude"/>
        <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.pdf"/>
        <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl">
          <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
          <map:parameter name="xmlbasedir" value="content/xdocs/{1}"/>
        </map:transform>
        <map:serialize type="fo2pdf"/>
      </map:match>

      <map:match pattern="**changes.rss">
        <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
      </map:match>

      <map:match pattern="profiler">
        <map:mount uri-prefix="" src="profiler.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**.js">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**.css">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**images**">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
     <map:match pattern="**favicon.ico">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
    </map:pipeline>



    <!-- ============================================================ -->
    <!-- REDIRECTS                                                    -->
    <!-- ============================================================ -->
    <map:pipeline internal-only="false">

      <map:match pattern="">
        <map:redirect-to uri="index.html" />
      </map:match>
      <map:match type="regexp" pattern="^.+/$">
          <map:redirect-to uri="index.html"/>
      </map:match>
    </map:pipeline>


  </map:pipelines>
</map:sitemap>