apache > forrest
 
Font size:      

Annotated core sitemap.xmap

This is documentation for current version v0.7 (More)

sitemap.xmap

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

$Revision: 1.12 $
==================================================== -->

Start of Sitemap

<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:components>
    <map:generators default="file">
      <map:generator name="file"      src="org.apache.cocoon.generation.FileGenerator" />
      <map:generator name="html"
                     src="org.apache.cocoon.generation.HTMLGenerator">
        <jtidy-config>WEB-INF/jtidy.properties</jtidy-config>
      </map:generator>
      <map:generator name="exception"
                  src="org.apache.cocoon.generation.ParseExceptionGenerator"/>
      <!--
      <map:generator name="html"      src="org.apache.cocoon.generation.HTMLGenerator">
        <jtidy-config>jtidy.properties</jtidy-config>
      </map:generator>
      <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" />
      -->
      <map:generator name="notifier" src="org.apache.cocoon.sitemap.NotifyingGenerator" />
      
      <map:generator name="text2xml" logger="sitemap.generator.textgenerator"
                     src="org.apache.cocoon.generation.TextGenerator">
       <parameter name="localizable" value="true"/>
      </map:generator>

    </map:generators>

    <map:transformers default="xslt">

      <!-- Add values to skinconf that need extra processing like the color shades -->
      <map:transformer name="skinconf" src="org.apache.forrest.conf.SkinconfTransformer"/>
              
      <!-- Generates @id attributes from <title> strings -->
      <map:transformer name="idgen" src="org.apache.forrest.util.IdGeneratorTransformer">
        <element>//*[local-name() = 'section']</element>
        <id>title/text()</id>
      </map:transformer>

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

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

      <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.forrest.util.XPathTransformer" />
      
      <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
        <transformer-factory>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
        <!--<transformer-factory>net.sf.saxon.TransformerFactoryImpl</transformer-factory>-->
        <!--<transformer-factory>com.icl.saxon.TransformerFactoryImpl</transformer-factory>-->
        <!--<transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>-->
      </map:transformer>
      
      <map:transformer name="xsltc" src="org.apache.cocoon.transformation.TraxTransformer" logger="sitemap.transformer.xslt" pool-max="32" pool-min="8" pool-grow="2">
        <use-request-parameters>false</use-request-parameters>
        <use-browser-capabilities-db>false</use-browser-capabilities-db>
        <use-deli>false</use-deli>
        <transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>
      </map:transformer>

      <map:transformer name="xslt-saxon"
         pool-grow="2" pool-max="32" pool-min="8"
         src="org.apache.cocoon.transformation.TraxTransformer">
       <use-request-parameters>false</use-request-parameters>
       <use-browser-capabilities-db>false</use-browser-capabilities-db>
       <xslt-processor-role>saxon</xslt-processor-role>
     </map:transformer>
      
      <map:transformer name="xinclude" src="org.apache.cocoon.transformation.XIncludeTransformer" logger="sitemap.transformer.xinclude" pool-grow="2" pool-max="16" pool-min="2" />

      <map:transformer name="cinclude" pool-grow="2" pool-max="16" pool-min="2" src="org.apache.cocoon.transformation.CIncludeTransformer" logger="sitemap.transformer.cinclude"/>
   <map:transformer name="pattern"
                    src="org.apache.cocoon.transformation.PatternTransformer" 
                    logger="sitemap.transformer.pattern">
    <parameter name="groups" value="true"/>
   </map:transformer>
   <map:transformer name="lexer"
                    src="org.apache.cocoon.transformation.LexicalTransformer" 
                    logger="sitemap.transformer.lexer">
    <parameter name="localizable" value="true"/>
   </map:transformer>
   <map:transformer name="parser"
                    src="org.apache.cocoon.transformation.ParserTransformer" 
                    logger="sitemap.transformer.parser">
    <parameter name="flatten" value="true"/>
    <parameter name="recovery" value="true"/>
    <parameter name="localizable" value="true"/>
   </map:transformer>
    </map:transformers>

    <map:readers default="resource">
      <map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/>
    </map:readers>

    <map:serializers default="html">
      <map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer">
        <doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public>
        <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
        <encoding>UTF-8</encoding>
      </map:serializer>

      <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"/>

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

      <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
        <encoding>ISO-8859-1</encoding>
      </map:serializer>
      
      <map:serializer name="svgxml" src="org.apache.cocoon.serialization.XMLSerializer" mime-type="image/svg+xml">
        <doctype-public>-//W3C//DTD SVG 1.0//EN</doctype-public>
        <doctype-system>http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd</doctype-system>
      </map:serializer>
      <map:serializer logger="sitemap.serializer.text" mime-type="text/plain" name="text" src="org.apache.cocoon.serialization.TextSerializer">
        <encoding>UTF-8</encoding>
      </map:serializer>
      
     <!--
      <map:serializer mime-type="application/x-shockwave-flash" name="swf" src="org.apache.cocoon.serialization.SWFSerializer"/>
      <map:serializer mime-type="application/msword" name="fo2rtf" src="org.apache.cocoon.serialization.RTFSerializer"/>
      -->
    </map:serializers>

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

    <map:selectors>
      <map:selector logger="sitemap.selector.exists" name="exists" src="org.apache.forrest.sourceexists.SourceExistsSelector" />
   <map:selector logger="sitemap.selector.exception" name="exception"
                 src="org.apache.cocoon.selection.ExceptionSelector">
     <exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/>
     <exception class="java.lang.Throwable" unroll="true"/>
   </map:selector>
    </map:selectors>

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

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

  <map:resources>
    <map:resource name="skinit">
        <map:select type="exists">
          <map:when test="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl">
            <map:transform src="{project:skins-dir}{forrest:skin}/xslt/html/{type}.xsl">
              <map:parameter name="notoc" value="{notoc}"/>
              <!-- For backwards-compat with 0.2 - 0.4 skins -->
              <map:parameter name="isfaq" value="{notoc}"/>
              <map:parameter name="nopdf" value="{nopdf}"/>
              <map:parameter name="path" value="{path}"/>
              <map:parameter name="config-file" value="{project:skinconf}"/>
            </map:transform>
          </map:when>
          <map:otherwise>
            <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/html/{type}.xsl">
              <map:parameter name="notoc" value="{notoc}"/>
              <!-- For backwards-compat with 0.2 - 0.4 skins -->
              <map:parameter name="isfaq" value="{notoc}"/>
              <map:parameter name="nopdf" value="{nopdf}"/>
              <map:parameter name="path" value="{path}"/>
              <map:parameter name="config-file" value="{project:skinconf}"/>
            </map:transform>
          </map:otherwise>
        </map:select>
      <map:serialize/>
    </map:resource>

  </map:resources>

Start of Pipelines

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

  <map:pipeline type="caching" internal-only="true">

Test for First Pipeline

      <map:match pattern="*.xlex">
        <map:select type="exists">
          <map:when test="resources/chaperon/grammars/{1}.xlex">
            <map:read src="resources/chaperon/grammars/{1}.xlex"/>
          </map:when>
          <map:otherwise>
            <map:generate  type="text2xml"   src="{forrest:context}/resources/chaperon/grammars/{1}.grm"/>
            <map:transform type="lexer"  src="{forrest:context}/resources/chaperon/grammars/grm.xlex"/>
            <map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/grm.xgrm"/>
            <map:transform               src="{forrest:context}/resources/chaperon/stylesheets/text4regex.xsl"/>
            <map:transform type="lexer"  src="{forrest:context}/resources/chaperon/grammars/regex.xlex"/>
            <map:transform type="parser" src="{forrest:context}/resources/chaperon/grammars/regex.xgrm"/>
            <map:transform               src="{forrest:context}/resources/chaperon/stylesheets/grm2xlex.xsl"/>
            <map:serialize type="xml"/>
          </map:otherwise>
        </map:select>
      </map:match>
    </map:pipeline>

Insertion Point for Project Sitemap

      <!--
         This is the user pipeline, that can answer requests instead
         of the Forrest one, or let requests pass through.
         To take over the rendering of a file it must match the file name and path.
         To take over the generation of the intermediate format, it must give
         Forrest the same filename but ending with xml, and a DTD that Forrest
         recognizes.
      -->
      <map:pipeline internal-only="false">
           <map:select type="exists">
             <map:when test="{project:sitemap}">
               <map:mount uri-prefix=""
                          src="{project:sitemap}" 
                          check-reload="yes" 
                          pass-through="true"/>
             </map:when>
           </map:select>
      </map:pipeline>
      
      <map:pipeline internal-only="false">
        <map:select type="exists">
          <map:when test="{project:temp-dir}/internal.xmap">
            <map:mount uri-prefix="" src="{project:temp-dir}/internal.xmap" check-reload="yes" pass-through="true"/>
          </map:when>
        </map:select>
      </map:pipeline>
      
      <map:pipeline internal-only="false">
         <map:match pattern="skinconf.xml">
           <map:generate src="{project:skinconf}" />
           <map:transform src="{forrest:stylesheets}/strip-doctype.xsl"/>
           <map:transform src="{forrest:stylesheets}/upgrade-skinconf.xsl"/>
           <map:select type="exists">
             <map:when test="{project:skins-dir}{forrest:skin}/skinconf.xsl">
               <map:transform src="{project:skins-dir}{forrest:skin}/skinconf.xsl"/>
             </map:when>
           </map:select>
           <map:select type="exists">
             <map:when test="{forrest:context}/skins/{forrest:skin}/skinconf.xsl">
               <map:transform src="{forrest:context}/skins/{forrest:skin}/skinconf.xsl"/>
             </map:when>
           </map:select>
           <map:transform src="{forrest:context}/skins/common/skinconf.xsl"/>
           <map:transform type="skinconf"/>
           <map:serialize type="xml" />
         </map:match>

         <!-- Add some build information, which is added to the html head -->
         <map:match pattern="build-info">
           <map:generate src="{project:temp-dir}/build-info.xml"/>
           <map:serialize type="xml"/>
         </map:match>
       </map:pipeline>
       
    <map:pipeline internal-only="false">
      <!-- ============================================================ -->
      <!-- SOURCE FORMATS                                               -->
      <!--                 Raw XML sources, typically doc-v12 format    -->
      <!-- ============================================================ -->
      <!-- http://forrest.apache.org/docs/sitemap-ref.html#source_pipelines -->

First Match for '**.xml'

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

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

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

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

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

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

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

        <!-- wholesite is preferred; site is here for compatibility -->
        <map:match pattern="wholesite.xml">
          <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
        </map:match>
        <map:match pattern="site.xml">
          <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
        </map:match>

        <!-- Lucene index update and search -->
        <map:match pattern="lucene-*.xml">
          <map:mount uri-prefix="" src="search.xmap" check-reload="yes"/>
        </map:match>

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

      </map:match>

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

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

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

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

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

    </map:pipeline>


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

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

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

First Match for '**body-*.html'

      <map:match pattern="**body-*.html">
        <map:select type="exists">
          <map:when test="{project:content.xdocs}{1}{2}.ehtml">
            <map:generate src="{project:content.xdocs}{1}{2}.ehtml" />
            <map:transform src="{forrest:stylesheets}/html2htmlbody.xsl" />
            <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
            <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
            <map:serialize type="xml" />
          </map:when>
        </map:select>
      </map:match>

Second Match for '**body-*.html'

      <!-- Default matches -->
      <!-- (HTML rendered from doc-v11 intermediate format -->
      <map:match pattern="**body-*.html">
        <map:generate src="cocoon:/{1}{2}.xml"/>

Returning to the '**body-*.html' Pipeline

        <map:transform type="idgen"/>
        <map:transform type="xinclude"/>
        <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
        <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
        <map:call resource="skinit">
          <map:parameter name="type" value="document2html"/>
          <map:parameter name="path" value="{1}{2}.html"/>
          <map:parameter name="notoc" value="false"/>
        </map:call>
      </map:match>

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

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

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

    </map:pipeline>

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

    <map:pipeline internal-only="false">
      <map:select type="exists">
        <map:when test="{project:temp-dir}/output.xmap">
          <map:mount uri-prefix="" src="{project:temp-dir}/output.xmap" check-reload="yes" pass-through="true"/>
        </map:when>
      </map:select>
    </map:pipeline>

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

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

First Match for "**/*.html"

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

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

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

      <!-- generate .fo from .xml  -->
      <map:match type="regexp" pattern="^(.*?)([^/]*).fo$">
        <map:select type="exists">
          <map:when test="{project:content.xdocs}{1}{2}.fo">
            <map:generate src="{project:content.xdocs}{1}{2}.fo"/>
          </map:when>
          <map:otherwise>
            <map:aggregate element="site">
              <map:part src="cocoon:/skinconf.xml"/>
              <map:part src="cocoon:/{1}{2}.xml"/>
            </map:aggregate>
            <!-- <map:transform type="idgen"/> -->
            <map:transform type="xinclude"/>
            <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.fo"/>
            <map:select type="exists">
              <map:when test="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl">
                <map:transform src="{project:skins-dir}{forrest:skin}/xslt/fo/document2fo.xsl">
                  <map:parameter name="imagesdir" value="{project:resources.images}/"/>
                  <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
                </map:transform>
              </map:when>
              <map:when test="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl">
                <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/fo/document2fo.xsl">
                  <map:parameter name="imagesdir" value="{project:resources.images}/"/>
                  <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
                </map:transform>
              </map:when>
              <map:otherwise>
                <map:transform src="{forrest:context}/skins/common/xslt/fo/document2fo.xsl">
                  <map:parameter name="imagesdir" value="{project:resources.images}/"/>
                  <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
                </map:transform>
              </map:otherwise>
            </map:select>
        </map:otherwise>
      </map:select>
        <map:serialize type="xml"/>
      </map:match>

      <map:match type="regexp" pattern="^(.*?)([^/]*).svg$">
        <map:generate src="cocoon:/{1}{2}.xml"/>
        <!-- <map:transform type="idgen"/> -->
        <map:transform type="xinclude"/>
        <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.svg"/>
        <map:transform src="resources/stylesheets/declare-broken-site-links.xsl" />
        <map:select type="exists">
          <map:when test="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl">
            <map:transform src="{project:skins-dir}{forrest:skin}/xslt/svg/document2svg.xsl">
              <map:parameter name="imagesdir" value="{project:resources.images}/"/>
              <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
            </map:transform>
          </map:when>
          <map:when test="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl">
            <map:transform src="{forrest:context}/skins/{forrest:skin}/xslt/svg/document2svg.xsl">
              <map:parameter name="imagesdir" value="{project:resources.images}/"/>
              <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
            </map:transform>
          </map:when>
          <map:otherwise>
            <map:transform src="{forrest:context}/skins/common/xslt/svg/document2svg.xsl">
              <map:parameter name="imagesdir" value="{project:resources.images}/"/>
              <map:parameter name="xmlbasedir" value="{project:content.xdocs}{1}"/>
            </map:transform>
          </map:otherwise>
        </map:select>
        <map:serialize type="svgxml"/>
      </map:match>
      
      <map:match pattern="**changes.rss">
        <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
      </map:match>

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

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

      <map:select type="exists">
         <map:when test="{project:temp-dir}/resources.xmap">
           <map:mount uri-prefix=""
                      src="{project:temp-dir}/resources.xmap" 
                      check-reload="yes" 
                      pass-through="true"/>
        </map:when>
      </map:select>
      
      <map:match pattern="**.js">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**.css">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**images**">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
      <map:match pattern="**.png">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
     <map:match pattern="**.ico">
        <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
      </map:match>
    </map:pipeline>



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

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

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