| <?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}&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&m=112496255207733&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> |