blob: c6902b041255626e18a09378816ea72e6b9a6ffb [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->
<!-- $Id$ -->
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<map:components>
<map:transformers default="xslt">
<map:transformer name="metaData" logger="lenya.sitemap.transformer.metaData" src="org.apache.lenya.cms.cocoon.transformation.MetaDataTransformer"/>
</map:transformers>
<map:serializers default="xhtml">
<map:serializer logger="sitemap.serializer.links" name="links" src="org.apache.lenya.cms.cocoon.serialization.LinkSerializer"/>
</map:serializers>
</map:components>
<map:views>
<map:view from-label="aggregation" name="aggregation">
<map:serialize type="xml"/>
</map:view>
<map:view from-position="last" name="links">
<map:serialize type="links" />
</map:view>
</map:views>
<!-- =========================== Resources ================================= -->
<map:resources>
<map:resource name="style-cms-page">
<map:transform type="i18n">
<map:parameter name="locale" value="{request:locale}"/>
</map:transform>
<map:transform src="fallback://lenya/xslt/util/page2xhtml.xsl">
<map:parameter name="contextprefix" value="{request:contextPath}"/>
</map:transform>
<map:transform src="context://lenya/xslt/util/strip_namespaces.xsl"/>
</map:resource>
</map:resources>
<map:pipelines>
<map:component-configurations>
<global-variables>
<cache-dir>work/cache</cache-dir>
</global-variables>
</map:component-configurations>
<!-- Blog module mounted -->
<!--
<map:pipeline>
<map:match pattern="*/news/**">
<map:mount src="../../modules/blog/sitemap.xmap" uri-prefix="news" check-reload="yes"/>
</map:match>
</map:pipeline>
-->
<!-- Introspection -->
<map:pipeline>
<map:match pattern="*/**/introspection.xml">
<map:select type="resource-exists">
<map:when test="fallback://lenya/modules/neutron/sitemap.xmap">
<map:mount uri-prefix="" src="{fallback:lenya/modules/neutron/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
</map:when>
<map:otherwise>
<map:generate src="context:/lenya/content/util/empty.xml"/>
<map:serialize type="xml"/>
</map:otherwise>
</map:select>
</map:match>
</map:pipeline>
<map:pipeline>
<map:match pattern="**">
<map:match pattern="webdav**">
<map:mount uri-prefix="" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
</map:match>
<map:select type="request-method">
<!-- many client editors like to PUT changes -->
<map:when test="PUT">
<map:mount uri-prefix="" src="{fallback:lenya/modules/webdav/sitemap.xmap}" check-reload="true" reload-method="synchron"/>
</map:when>
</map:select>
</map:match>
<map:match pattern="**/">
<map:redirect-to uri="index.html"/>
</map:match>
</map:pipeline>
<map:pipeline type="caching">
<map:match pattern="**.rss">
<map:generate src="{resource-type:format-rss}"/>
<map:serialize type="xml"/>
</map:match>
<!-- pattern="meta?docid={docid}&lang={lang}" -->
<map:match pattern="*/**.html.meta">
<map:generate type="lenyaMetaData">
<map:parameter name="pubid" value="{page-envelope:publication-id}"/>
<map:parameter name="area" value="{1}"/>
<map:parameter name="uuid" value="{page-envelope:document-uuid}"/>
<map:parameter name="lang" value="{page-envelope:document-language}"/>
</map:generate>
<map:serialize type="xml"/>
</map:match>
<map:match pattern="**meta">
<map:generate type="lenyaMetaData">
<map:parameter name="pubid" value="{request-param:pubid}"/>
<map:parameter name="area" value="{request-param:area}"/>
<map:parameter name="uuid" value="{request-param:uuid}"/>
<map:parameter name="lang" value="{request-param:lang}"/>
</map:generate>
<map:serialize type="xml"/>
</map:match>
<!-- navigation/{1:nav-element}/{2:pub-id}/{3:default-language}/{4:language}/{5:area}/{6:url} -->
<map:match pattern="navigation-element/*/*/*/*/*/**">
<map:generate src="cocoon://modules/sitetree/{1}/{2}/{3}/{4}/{5}/{6}.xml"/>
<map:serialize type="xml"/>
</map:match>
<!-- /lenyabody-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:default-language}/{6:language}/{7:url} -->
<map:match pattern="lenyabody-raw-*/*/*/*/*/*/**">
<map:aggregate element="cmsbody">
<map:part src="cocoon:/navigation-element/breadcrumb/{2}/{3}/{5}/{6}/{7}"/>
<map:part src="cocoon:/navigation-element/tabs/{2}/{3}/{5}/{6}/{7}"/>
<map:part src="cocoon:/navigation-element/menu/{2}/{3}/{5}/{6}/{7}"/>
<map:part src="cocoon:/navigation-element/search/{2}/{3}/{5}/{6}/{7}"/>
<map:part src="cocoon://modules/languageselector/text-none/flagsize-10"/>
<map:part src="{resource-type:format-xhtml}?rendertype={1}"/>
</map:aggregate>
<map:serialize type="xml"/>
</map:match>
</map:pipeline>
<!-- This is the pipeline that builds the page. It aggregates all
the navigational elements (breadcrumb, tabs, menu) with the actual
content of the document. -->
<map:pipeline type="noncaching">
<!-- /lenyabody-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:url} -->
<map:match pattern="lenyabody-*/*/*/*/**">
<map:generate src="cocoon:/lenyabody-raw-{1}/{2}/{3}/{4}/{page-envelope:default-language}/{page-envelope:document-language}/{5}"/>
<map:transform type="uuid2url"/>
<map:transform src="fallback://lenya/modules/svg/xslt/image2svg.xsl"/>
<map:select type="resource-exists">
<map:parameter name="prefix" value="fallback://"/>
<map:when test="xslt/page2xhtml-{4}.xsl">
<map:transform src="fallback://xslt/page2xhtml-{4}.xsl">
<map:parameter name="root" value="{base-url:{2}:{3}}"/>
<map:parameter name="publication-id" value="{2}"/>
<map:parameter name="area" value="{3}"/>
<map:parameter name="url" value="{5}"/>
<map:parameter name="document-path" value="{page-envelope:document-path}"/>
<map:parameter name="document-type" value="{4}"/>
<map:parameter name="language" value="{page-envelope:document-language}"/>
<map:parameter name="contextprefix" value="{request:contextPath}"/>
<map:parameter name="title" value="{dublincore:title}"/>
<map:parameter name="lastPublishedUser" value="{access-control:user-name:{workflow:lastUser.publish}}"/>
<map:parameter name="lastPublishedDate" value="{workflow:lastDate.publish}"/>
<!-- Following is a show off to explain lenya.properties.xml -->
<map:parameter name="author" value="{properties:pubs.default.author}"/>
<map:parameter name="nodeName" value="{page-envelope:document-name}"/>
</map:transform>
</map:when>
<map:otherwise>
<map:transform src="fallback://xslt/page2xhtml-xhtml.xsl">
<map:parameter name="root" value="{base-url:{2}:{3}}"/>
<map:parameter name="publication-id" value="{2}"/>
<map:parameter name="area" value="{3}"/>
<map:parameter name="url" value="{5}"/>
<map:parameter name="document-path" value="{page-envelope:document-path}"/>
<map:parameter name="document-type" value="{4}"/>
<map:parameter name="language" value="{page-envelope:document-language}"/>
<map:parameter name="contextprefix" value="{request:contextPath}"/>
<map:parameter name="title" value="{dublincore:title}"/>
<map:parameter name="lastPublishedUser" value="{access-control:user-name:{workflow:lastUser.publish}}"/>
<map:parameter name="lastPublishedDate" value="{workflow:lastDate.publish}"/>
<!-- Following is a show off to explain lenya.properties.xml -->
<map:parameter name="author" value="{properties:pubs.default.author}"/>
<map:parameter name="nodeName" value="{page-envelope:document-name}"/>
</map:transform>
</map:otherwise>
</map:select>
<!-- This is a demonstration of the generic meta data transformer
described in bug 39891.
1) define the ns: xmlns:meta="http://apache.org/lenya/meta/1.0/"
2) use it in above xsl like e.g.
<meta:value ns="http://purl.org/dc/elements/1.1/" element="date" uuid="{@uuid}"/>
Where @ns is the namespace for which you want to retrieve the @element for.
If there is more then one element registered then the transformer returns:
<value xmlns="http://apache.org/lenya/meta/1.0/" value="2005-09-11 12:44:05" element="date" />
<value xmlns="http://apache.org/lenya/meta/1.0/" value="2006-09-11 12:44:05" element="date" />
Otherwise it will return the value as characters.
-->
<map:transform type="metaData">
<map:parameter name='pubid' value='{page-envelope:publication-id}'/>
<map:parameter name='area' value='{page-envelope:area}'/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale" value="{page-envelope:document-language}"/>
</map:transform>
<map:transform type="uuid2url"/>
<map:serialize type="xml"/>
</map:match>
</map:pipeline>
<!-- This is the main entry point into the publication. This
pipeline uses the uriparametrizer to determine the doctype of this
request. It then aggregates the lenya menu (for the given area) and
the lenya body, the actual document. -->
<map:pipeline>
<map:match pattern="**.bxe.html">
<map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-url}"/>
<map:serialize type="xml"/>
</map:match>
<map:match pattern="*/**.html">
<map:act type="language-exists">
<map:act type="set-header">
<map:parameter name="Last-Modified" value="{date-iso8601-rfc822:{page-envelope:document-lastmodified}}" />
<!-- HEAD request shouldn't have all the xslt overhead -->
<map:select type="request-method">
<map:when test="HEAD">
<map:generate src="context://lenya/content/util/empty.xml" />
<map:serialize type="xhtml"/>
</map:when>
</map:select>
<map:select type="resource-exists">
<!-- Read from cache -->
<!-- If configured within Apache then mod_lenya will nevertheless read from cache -->
<map:when test="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.htmlDISABLED">
<map:read src="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.html" mime-type="text/html"/>
</map:when>
<!-- Write to cache and serialize -->
<map:otherwise>
<map:select type="parameter">
<map:parameter name="parameter-selector-test" value="{request-param:rendertype}"/>
<map:when test="edit">
<map:generate src="cocoon:/lenyabody-edit/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-url}"/>
</map:when>
<map:otherwise>
<map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-url}"/>
</map:otherwise>
</map:select>
<map:select type="browser">
<map:when test="mozilla5DISABLED">
<map:match pattern="authoring/**.html">
<map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{../../../1}/{../../../2}.xml?doctype={page-envelope:document-type}&amp;uiml=xul"/>
</map:match>
<map:serialize type="xml" mime-type="application/vnd.mozilla.xul+xml"/>
</map:when>
<map:otherwise>
<map:match pattern="authoring/**.html">
<map:transform src="cocoon://lenya-page/{page-envelope:publication-id}/{../../../1}/{../../../2}.xml?doctype={page-envelope:document-type}"/>
<!-- TODO: External Links checking should be optional on a document by document basis -->
<!-- uncomment to turn on external broken link reporting -->
<!--<map:transform src="fallback://lenya/xslt/authoring/addJavaScript.xsl">
<map:parameter name="scriptSRC" value="/modules/linkcheck/linkreporter.js"/>
</map:transform>-->
</map:match>
<map:transform src="fallback://lenya/xslt/util/strip_namespaces.xsl"/>
<!-- Write to cache for requests from live area -->
<map:select type="parameter">
<map:parameter name="parameter-selector-test" value="{../../1}"/>
<map:when test="live">
<map:transform src="fallback://lenya/xslt/authoring/edit/addSourceTags.xsl">
<map:parameter name="source" value="context:/lenya/pubs/{page-envelope:publication-id}/{global:cache-dir}/{../../1}/{../../2}.html"/>
</map:transform>
<map:transform type="write-source">
<map:parameter name="serializer" value="xhtml"/>
</map:transform>
<map:transform src="fallback://lenya/xslt/authoring/edit/removeSourceTags.xsl"/>
<map:act type="set-header">
<map:parameter name="Expires" value="{date-iso8601-rfc822:{doc-info:{page-envelope:publication-id}:{page-envelope:area}:{page-envelope:document-uuid}:{page-envelope:document-language}:expires}}"/>
</map:act>
</map:when>
<!-- Turn off caching in authoring area -->
<map:otherwise>
<map:act type="set-header">
<map:parameter name="Cache-Control" value="no-cache" />
</map:act>
</map:otherwise>
</map:select>
<map:serialize type="xhtml"/>
</map:otherwise>
</map:select>
</map:otherwise>
</map:select>
</map:act>
</map:act>
<map:select type="resource-exists">
<map:when test="lenya://lenya/pubs/{page-envelope:publication-id}/content/authoring/sitetree.xml">
<map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
<map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
<map:parameter name="documenturl" value="{2}.html"/>
<map:parameter name="path" value="{page-envelope:document-path}"/>
<map:parameter name="area" value="{1}"/>
</map:transform>
<map:call resource="style-cms-page" />
<map:serialize status-code="404" />
</map:when>
<map:otherwise>
<map:redirect-to uri="{request:requestUri}?lenya.usecase=export.importExampleContent"/>
</map:otherwise>
</map:select>
</map:match>
</map:pipeline>
<map:pipeline>
<map:match pattern="*/**.*">
<!-- TODO: http://marc.theaimsgroup.com/?l=xml-cocoon-dev&amp;m=112496255207733&amp;w=2 -->
<map:match type="regexp" pattern="(.*\.)(pdf|PDF|Pdf)$">
<map:read src="lenyadoc:/{page-envelope:document-language}/{page-envelope:document-uuid}" mime-type="application/pdf">
<map:parameter name="byte-ranges" value="false"/>
</map:read>
</map:match>
<map:act type="language-exists">
<map:read src="lenyadoc:/{page-envelope:document-language}/{page-envelope:document-uuid}"/>
</map:act>
<map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
<map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
<map:parameter name="documenturl" value="{2}.html"/>
<map:parameter name="path" value="{page-envelope:document-path}"/>
<map:parameter name="area" value="{1}"/>
</map:transform>
<map:call resource="style-cms-page" />
<map:serialize status-code="404" />
</map:match>
</map:pipeline>
</map:pipelines>
</map:sitemap>