apache > forrest
 
Font size:      

Annotated forrest.xmap

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

sitemap.xmap

<?xml version="1.0"?>
<!-- ===============================================
Pipelines defining all Source XML types Forrest can handle.
Converts from arbitrary formats to standard Forrest doc-v12 XML.

First, determines if a simple format file exists.
Candidates are: .html .ihtml .txt .sxw .jspwiki 

Otherwise, the default *.xml handling is used.  The XML's DTD type is
discovered using the SourceTypeAction, and an appropriate transformation
applied.  Thus to add new XML types, just define a new <sourcetype>
and an appropriate <map:when> handler.

Generates  :  Source XML, Body HTML for *.ehtml
Example URL:  http://localhost:8888/index.xml
Used by    :  *.html and *.pdf pipelines in sitemap.xmap
Uses       :  content/xdocs/**.xml

$Revision: 1.8 $
==================================================== -->

<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">
        <jtidy-config>WEB-INF/jtidy.properties</jtidy-config>
      </map:generator>
      <map:generator name="text2xml" logger="sitemap.generator.textgenerator"
                     src="org.apache.cocoon.generation.TextGenerator">
       <parameter name="localizable" value="true"/>
      </map:generator>
      <map:generator name="exception"
                  src="org.apache.cocoon.generation.ParseExceptionGenerator"/>
                  
    </map:generators>
    <map:serializers default="html"/>
    <map:matchers default="wildcard"/>

    <map:transformers default="xslt">
     <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:transformer name="extparser"
                      src="org.apache.cocoon.transformation.ExtendedParserTransformer"
                      logger="sitemap.transformer.extendedparser">
     </map:transformer>
    </map:transformers>

    <map:actions>
      <map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.sourcetype.SourceTypeAction">
        <sourcetype name="document-v10">
          <document-declaration public-id="-//APACHE//DTD Documentation V1.0//EN" />
        </sourcetype>
        <sourcetype name="howto-v10">
          <document-declaration public-id="-//APACHE//DTD How-to V1.0//EN" />
        </sourcetype>
        <sourcetype name="todo-v10">
          <document-declaration public-id="-//APACHE//DTD Todo V1.0//EN" />
        </sourcetype>
        <sourcetype name="changes-v10">
          <document-declaration public-id="-//APACHE//DTD Changes V1.0//EN" />
        </sourcetype>
        <sourcetype name="document-v11">
          <document-declaration public-id="-//APACHE//DTD Documentation V1.1//EN" />
        </sourcetype>
        <sourcetype name="howto-v11">
          <document-declaration public-id="-//APACHE//DTD How-to V1.1//EN" />
        </sourcetype>
        <sourcetype name="todo-v11">
          <document-declaration public-id="-//APACHE//DTD Todo V1.1//EN" />
        </sourcetype>
        <sourcetype name="changes-v11">
          <document-declaration public-id="-//APACHE//DTD Changes V1.1//EN" />
        </sourcetype>
        <sourcetype name="todo-v12">
          <document-declaration public-id="-//APACHE//DTD Todo V1.2//EN" />
        </sourcetype>
        <sourcetype name="changes-v12">
          <document-declaration public-id="-//APACHE//DTD Changes V1.2//EN" />
        </sourcetype>
        <sourcetype name="howto-v12">
          <document-declaration public-id="-//APACHE//DTD How-to V1.2//EN" />
        </sourcetype>
        <sourcetype name="todo-v13">
          <document-declaration public-id="-//APACHE//DTD Todo V1.3//EN" />
        </sourcetype>
        <sourcetype name="changes-v13">
          <document-declaration public-id="-//APACHE//DTD Changes V1.3//EN" />
        </sourcetype>
        <sourcetype name="howto-v13">
          <document-declaration public-id="-//APACHE//DTD How-to V1.3//EN" />
        </sourcetype>
        <sourcetype name="document-v20a">
          <document-declaration public-id="-//APACHE//DTD Documentation V2.0a//EN" />
        </sourcetype>
        <sourcetype name="document-v20">
          <document-declaration public-id="-//APACHE//DTD Documentation V2.0//EN" />
        </sourcetype>
        <sourcetype name="todo-v20">
          <document-declaration public-id="-//APACHE//DTD Todo V2.0//EN" />
        </sourcetype>
        <sourcetype name="changes-v20">
          <document-declaration public-id="-//APACHE//DTD Changes V2.0//EN" />
        </sourcetype>
        <sourcetype name="howto-v20">
          <document-declaration public-id="-//APACHE//DTD How-to V2.0//EN" />
        </sourcetype>
      </map:action>
      <map:action logger="sitemap.action.locale" name="locale" src="org.apache.cocoon.acting.LocaleAction">
      </map:action>
    </map:actions>
    <map:selectors default="parameter">
    <map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" />
   <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:selector logger="sitemap.selector.config" name="config" src="org.apache.cocoon.selection.SimpleSelector" />
    </map:selectors>
  </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="document-v10">
          <!-- FIXME (JJP):  This should use the v12 now-->
            <map:transform src="{forrest:stylesheets}/docv10todocv11.xsl" />
          </map:when>

          <map:when test="document-v20a">
            <map:transform src="{forrest:stylesheets}/docv20todocv12.xsl" />
          </map:when>

          <map:when test="document-v20">
            <map:transform src="{forrest:stylesheets}/docv20todocv13.xsl" />
          </map:when>

          <map:when test="howto-v10">
            <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
          </map:when>

          <map:when test="howto-v11">
            <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
          </map:when>
          <map:when test="howto-v12">
            <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
          </map:when>
          <map:when test="howto-v13">
            <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
          </map:when>
          <map:when test="howto-v20">
            <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
          </map:when>

          <map:when test="todo-v10">
            <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
          </map:when>

          <map:when test="todo-v11">
            <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
          </map:when>

          <map:when test="todo-v12">
            <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
          </map:when>

          <map:when test="todo-v13">
            <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
          </map:when>

          <map:when test="todo-v20">
            <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
          </map:when>

          <map:when test="changes-v10">
            <map:transform src="{forrest:stylesheets}/changesv10tochangesv11.xsl" />
            <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
          </map:when>

          <map:when test="changes-v11">
            <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
          </map:when>

          <map:when test="changes-v12">
            <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
          </map:when>

          <map:when test="changes-v13">
            <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
          </map:when>

          <map:when test="changes-v20">
            <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
          </map:when>
          <map:otherwise />
        </map:select>
      </map:act>
    </map:resource>

Definition of File-Resolver-Resource

    <map:resource name="file-resolver">
      <map:select type="exists">
        <map:when test="{project:content.xdocs}{uri}.ihtml">
          <map:generate src="{project:content.xdocs}{uri}.ihtml" type="html" />
          <map:transform src="{forrest:stylesheets}/html2document.xsl" />
          <map:transform type="idgen" />
          <map:serialize type="xml-document"/>
        </map:when>
        <map:when test="{project:content.xdocs}{uri}.html">
          <map:generate src="{project:content.xdocs}{uri}.html" type="html" />
          <map:transform src="{forrest:stylesheets}/html2document.xsl" />
          <map:transform type="idgen" />
          <map:serialize type="xml-document"/>
        </map:when>
        <map:when test="{project:content.xdocs}{uri}.txt">
          <map:match type="regexp" pattern="^(.*?)([^/]*).xml$">
            <map:generate type="text2xml" src="{project:content.xdocs}{1}{2}.txt" />
            <map:transform src="{forrest:stylesheets}/text2document.xsl">
              <map:parameter name="filename" value="{2}" />
            </map:transform>
            <map:serialize type="xml-document"/>
          </map:match>
        </map:when>
        <map:otherwise>
        
          <map:select type="exists">
             <map:when test="{project:temp-dir}/input.xmap">
               <map:mount uri-prefix=""
                          src="{project:temp-dir}/input.xmap" 
                          check-reload="yes" 
                          pass-through="true"/>
            </map:when>
          </map:select>
        
          <map:generate src="{project:content.xdocs}{uri}.xml" />
          <map:call resource="transform-to-document">
            <map:parameter name="src" value="{project:content.xdocs}{uri}.xml" />
          </map:call>
          <map:serialize type="xml-document"/>
        </map:otherwise>
      </map:select>
    </map:resource>
  </map:resources>

  <map:pipelines>
    <map:pipeline>

      <!-- ============================================================ -->
      <!-- INTERMEDIATE FORMATS                                         -->
      <!-- ============================================================ -->

      <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:serialize type="xml" />
          </map:when>
        </map:select>
      </map:match>

      <!-- ============================================================ -->
      <!-- SOURCE FORMATS                                               -->
      <!-- ============================================================ -->

Second Match for '**.xml'

      <map:match pattern="**.xml">
        <map:select type="config">
          <map:parameter name="value" value="{defaults:i18n}"/>
          <map:when test="true">
          <map:act type="locale">
            <map:call resource="file-resolver">
              <map:parameter name="uri" value="{../1}_{language}"/>
            </map:call>
          </map:act>
          </map:when>
          <map:otherwise>
            <map:call resource="file-resolver">
              <map:parameter name="uri" value="{1}"/>
            </map:call>
          </map:otherwise>
        </map:select>
      </map:match>
      
    </map:pipeline>
  </map:pipelines>
</map:sitemap>