blob: 63bb430d1d4ee73d8ac6635651c7d6bbe5669cbd [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 2002-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- ===============================================
Pipelines defining all Source XML types Forrest can handle.
Converts from arbitrary formats to standard Forrest doc-v12 XML.
First, checks if *.cwiki or *.ihtml exists, and uses them if present.
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>
<!-- FIXME (JJP): This should not be here. Should be define on sitemap -->
<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.cocoon.acting.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="document-v20a">
<document-declaration public-id="-//APACHE//DTD Documentation V2.0a//EN" />
</sourcetype>
<sourcetype name="docbook-v4.2">
<document-declaration public-id="-//OASIS//DTD DocBook XML V4.2//EN" />
</sourcetype>
<sourcetype name="docbook-v4.1.2">
<document-declaration public-id="-//OASIS//DTD DocBook XML V4.1.2//EN" />
</sourcetype>
<sourcetype name="sdocbook-v1.0">
<document-declaration public-id="-//OASIS//DTD Simplified DocBook XML V1.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="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="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="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="docbook-v4.1.2">
<map:transform src="{forrest:stylesheets}/docbook2document.xsl" />
</map:when>
<map:when test="docbook-v4.2">
<map:transform src="{forrest:stylesheets}/docbook2document.xsl" />
</map:when>
<map:when test="sdocbook-v1.0">
<map:transform src="{forrest:stylesheets}/docbook2document.xsl" />
</map:when>
<map:otherwise />
</map:select>
</map:act>
</map: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}.cwiki">
<map:match type="regexp" pattern="^(.*?)([^/]*).xml$">
<map:generate type="text2xml" src="{project:content.xdocs}{1}{2}.cwiki" />
<map:transform type="lexer" src="cocoon:/wiki.xlex"/>
<map:transform type="parser" src="cocoon:/wiki.xgrm"/>
<map:transform type="xsltc"
src="{forrest:context}/resources/chaperon/stylesheets/wiki2xdoc.xsl">
<map:parameter name="name" value="{2}" />
</map:transform>
<map:serialize type="xml-document"/>
</map:match>
</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:when test="{project:content.xdocs}{uri}.sxw">
<map:match type="regexp" pattern="^(.*?)([^/]*).xml$">
<map:generate src="{forrest:stylesheets}/aggregates/openoffice-writer.xml"/>
<map:transform src="{forrest:stylesheets}/aggregates/openoffice-writer.xsl">
<map:parameter name="src" value="{project:content.xdocs}{1}{2}.sxw"/>
</map:transform>
<map:transform type="cinclude"/>
<map:transform src="{forrest:stylesheets}/openoffice-writer2forrest.xsl">
<map:parameter name="filename" value="{2}" />
</map:transform>
<map:serialize type="xml-document"/>
</map:match>
</map:when>
<map:otherwise>
<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 -->
<!-- ============================================================ -->
<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}_{lang}"/>
</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:pipeline type="caching" internal-only="true">
<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:match pattern="*.xgrm">
<map:select type="exists">
<map:when test="resources/chaperon/grammars/{1}.xgrm">
<map:read src="resources/chaperon/grammars/{1}.xgrm"/>
</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/grm2xgrm.xsl"/>
<map:serialize type="xml"/>
</map:otherwise>
</map:select>
</map:match>
<map:match pattern="*.xegrm">
<map:select type="exists">
<map:when test="{forrest:context}/resources/chaperon/grammars/{1}.xegrm">
<map:read src="{forrest:context}/resources/chaperon/grammars/{1}.xegrm"/>
</map:when>
<map:otherwise>
<map:generate type="text2xml" src="{forrest:context}/resources/chaperon/grammars/{1}.egrm"/>
<map:transform type="extparser" src="{forrest:context}/resources/chaperon/grammars/egrm.xegrm"/>
<map:transform src="{forrest:context}/resources/chaperon/stylesheets/egrm2xegrm.xsl"/>
<map:serialize type="xml"/>
</map:otherwise>
</map:select>
</map:match>
</map:pipeline>
</map:pipelines>
</map:sitemap>