<?xml version="1.0" encoding="ISO-8859-1"?><!--
  Copyright 1999-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.
--><!--+
    | Input Modules sample sitemap.
    | Author: Konstantin Piroumian "kpiroumian@apache.org"
    |
    | SVN $Id: sitemap.xmap 220045 2005-07-21 12:28:12Z anathaniel $
    +--><map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">

  <!-- =========================== Components ============================== -->
  <map:components>
    <map:actions>
      <!-- Action to store locale name as cookie. -->
      <map:action name="cookie-locale" src="org.apache.cocoon.acting.LocaleAction">
        <store-in-cookie>true</store-in-cookie>
      </map:action>
    </map:actions>
  </map:components>

  <!-- =========================== Resources =============================== -->
  <map:resources>
    <!-- This resource is used to create a composite page from menu and content -->
    <map:resource name="composite">
      <map:aggregate element="site">
        <map:part src="cocoon:/menu/{../1}.html"/>
        <map:part src="cocoon:/content/{../1}.xml" label="content"/>
      </map:aggregate>
      <map:transform src="site2html.xsl">
        <map:parameter name="page" value="{../0}"/>
      </map:transform>
      <map:serialize/>
    </map:resource>
  </map:resources>

  <!-- =========================== Pipelines ================================= -->
  <map:pipelines>
    <map:component-configurations>
      <global-variables>
         <!--+
             | (Re)Define global parameters, used in the input modules GlobalInputModule demo.
             +-->
         <global-sub-sitemap>This value is defined in the samples/modules/sitemap.xmap</global-sub-sitemap>
         <global-sitemap-override>This value was defined in the samples/sitemap.xmap, but was overridden by samples/modules/sitemap.xmap</global-sitemap-override>
      </global-variables>
    </map:component-configurations>

    <map:pipeline>

      <!-- Default URL matcher. Matches '/' URLs-->
      <map:match pattern="">
        <map:redirect-to uri="index.html"/>
      </map:match>

      <map:match pattern="*.html">
        <map:call resource="composite"/>
      </map:match>

      <!-- Index page content -->
      <map:match pattern="content/index.xml">
        <map:generate src="menu.xml"/>
        <map:transform src="menu2content.xsl"/>
        <map:serialize/>
      </map:match>

      <!-- Menu -->
      <map:match pattern="menu/*">
        <map:generate src="menu.xml"/>
        <map:transform src="menu2navigation.xsl">
          <map:parameter name="page" value="{1}"/>
        </map:transform>
        <map:serialize/>
      </map:match>


      <map:match pattern="content/request.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="attributeNames" value="{request:attributeNames}"/>
          <map:parameter name="authType" value="{request:authType}"/>
          <map:parameter name="characterEncoding" value="{request:characterEncoding}"/>
          <map:parameter name="cookieMap" value="{request:cookieMap}"/>
          <map:parameter name="cookies" value="{request:cookies}"/>
          <map:parameter name="contentLength" value="{request:contentLength}"/>
          <map:parameter name="contentType" value="{request:contentType}"/>
          <map:parameter name="contextPath" value="{request:contextPath}"/>
          <map:parameter name="headers" value="{request:headers}"/>
          <map:parameter name="headerNames" value="{request:headerNames}"/>
          <map:parameter name="locale" value="{request:locale}"/>
          <map:parameter name="locales" value="{request:locales}"/>
          <map:parameter name="method" value="{request:method}"/>
          <!--map:parameter name="parameter-map" value="{request:parameterMap}"/-->
          <map:parameter name="parameterNames" value="{request:parameterNames}"/>
          <map:parameter name="pathInfo" value="{request:pathInfo}"/>
          <map:parameter name="pathTranslated" value="{request:pathTranslated}"/>
          <map:parameter name="protocol" value="{request:protocol}"/>
          <map:parameter name="queryString" value="{request:queryString}"/>
          <map:parameter name="remoteAddr" value="{request:remoteAddr}"/>
          <map:parameter name="remoteHost" value="{request:remoteHost}"/>
          <map:parameter name="remoteUser" value="{request:remoteUser}"/>
          <map:parameter name="requestURI" value="{request:requestURI}"/>
          <map:parameter name="requestedSessionId" value="{request:requestedSessionId}"/>
          <map:parameter name="requestedSessionIdFromCookie" value="{request:requestedSessionIdFromCookie}"/>
          <map:parameter name="requestedSessionIdFromURL" value="{request:requestedSessionIdFromURL}"/>
          <map:parameter name="requestedSessionIdValid" value="{request:requestedSessionIdValid}"/>
          <map:parameter name="scheme" value="{request:scheme}"/>
          <map:parameter name="secure" value="{request:secure}"/>
          <map:parameter name="serverName" value="{request:serverName}"/>
          <map:parameter name="serverPort" value="{request:serverPort}"/>
          <map:parameter name="servletPath" value="{request:servletPath}"/>
          <map:parameter name="session [truncated]" value="{request:concat('org. ... .', substring(session, 36))}"/>
          <map:parameter name="sitemapURI" value="{request:sitemapURI}"/>
          <map:parameter name="userPrincipal" value="{request:userPrincipal}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Request Input Module (RequestModule)"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/baselink.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="sitemapAsBase" value="{baselink:SitemapBaseLink}"/>
          <map:parameter name="requestAsBase" value="{baselink:RequestBaseLink}"/>
        </map:generate>

        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="BaseLink Input Module (BaseLinkModule)"/>
          <map:parameter name="description" value="Returns a relative path (../,             ../../, etc) linking to either the base of the current request URI or the base             of the sitemap.             In this demonstration, the request URI is {0} (an internal request not             equivalent to what the user sees)"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="requestparam">
        <map:redirect-to uri="content/requestparam.xml?foo=foo+param&amp;bar=bar+param"/>
      </map:match>
      <map:match pattern="content/requestparam.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="foo" value="{request-param:foo}"/>
          <map:parameter name="bar" value="{request-param:bar}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Request Parameter Input Module (RequestParameterModule)"/>
          <map:parameter name="description" value="Provides access to request             parameters. Edit the URL of this page to see the request parameter             values change (parts after the '?' are request parameters) ."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/session.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="attributeNames" value="{session:attributeNames}"/>
          <map:parameter name="creationTime" value="{session:creationTime}"/>
          <map:parameter name="lastAccessedTime" value="{session:lastAccessedTime}"/>
          <map:parameter name="maxInactiveInterval" value="{session:maxInactiveInterval}"/>
          <map:parameter name="id" value="{session:id}"/>
          <map:parameter name="new" value="{session:new}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Session Input Module (SessionModule)"/>
          <map:parameter name="description" value="SessionModule provides access             to Session object properties."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/system-property.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="java.version" value="{system-property:java.version}"/>
          <map:parameter name="java.vendor" value="{system-property:java.vendor}"/>
          <map:parameter name="java.vendor.url" value="{system-property:java.vendor.url}"/>
          <map:parameter name="java.home" value="{system-property:java.home}"/>
          <map:parameter name="java.vm.specification.version" value="{system-property:java.vm.specification.version}"/>
          <map:parameter name="java.vm.specification.vendor" value="{system-property:java.vm.specification.vendor}"/>
          <map:parameter name="java.vm.specification.name" value="{system-property:java.vm.specification.name}"/>
          <map:parameter name="java.vm.version" value="{system-property:java.vm.version}"/>
          <map:parameter name="java.vm.vendor" value="{system-property:java.vm.vendor}"/>
          <map:parameter name="java.vm.name" value="{system-property:java.vm.name}"/>
          <map:parameter name="java.specification.version" value="{system-property:java.specification.version}"/>
          <map:parameter name="java.specification.vendor" value="{system-property:java.specification.vendor}"/>
          <map:parameter name="java.specification.name" value="{system-property:java.specification.name}"/>
          <map:parameter name="java.specification.name" value="{system-property:java.specification.name}"/>
          <map:parameter name="java.class.path" value="{system-property:java.class.path}"/>
          <map:parameter name="java.ext.dirs" value="{system-property:java.ext.dirs}"/>
          <map:parameter name="os.name" value="{system-property:os.name}"/>
          <map:parameter name="os.arch" value="{system-property:os.arch}"/>
          <map:parameter name="os.version" value="{system-property:os.version}"/>
          <map:parameter name="file.separator" value="{system-property:file.separator}"/>
          <map:parameter name="path.separator" value="{system-property:path.separator}"/>
          <map:parameter name="line.separator" value="{system-property:line.separator}"/>
          <map:parameter name="user.name" value="{system-property:user.name}"/>
          <map:parameter name="user.home" value="{system-property:user.home}"/>
          <map:parameter name="user.dir" value="{system-property:user.dir}"/>
          <!-- Function call -->
          <map:parameter name="users-home-base" value="{system-property:substring-before(user.home, user.name)}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="System Properties Input Module (SystemPropertiesModule)"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/xml.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="/forrestconf/@version" value="{myxml:/forrestconf/@version}"/>
          <map:parameter name="/forrestconf/skin" value="{myxml:/forrestconf/skin}"/>
          <map:parameter name="/*/base-url" value="{myxml:/*/base-url}"/>
          <!--
          <map:parameter name="slashdot-headline" value="{slashdot:/*:RDF/item[1]/title}"/>
          -->
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="XML File Input Module (XMLFileModule)"/>
          <map:parameter name="description" value="XMLFileModule uses an XML             file as a data source, with XPath expressions as the key values. In             this example, the keys identify nodes in             context://samples/modules/forrestconf.xml"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/defaults.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="skin" value="{defaults:skin}"/>
          <map:parameter name="base-url" value="{defaults:base-url}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Defaults Input Module (DefaultsModule)"/>
          <map:parameter name="description" value="DefaultsModule             contains 'default' values, hardcoded into cocoon.xconf.             It is simply a lookup table containing static values."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/chain.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="skin" value="{chain:skin}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Chaining Input module (ChainMetaModule)"/>
          <map:parameter name="description" value="ChainMetaModule             iterates through a set of modules until one returns a             non-null value for the specified key.  In this example, we             chain together request-param, request-attr, session-attr             and defaults modules.  The 'skin' value is taken from the             first that returns a non-null value, usually 'defaults'.             Try adding '?skin=myskin' to the URL, and it should             change."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/cookie.xml">
        <map:act type="cookie-locale"/>
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="locale" value="{cookie:locale}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Cookie module (CookieModule)"/>
          <map:parameter name="description" value="Returns the value             of the named HTTP cookie.             The example used LocaleAction to store the current locale name as cookie.             If the value is empty, use the browser's reload button.             (Cookies just created cannot be read out. Only when the browser presents it             on the next request, it will be available.)"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/date.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="format-in-config" value="{date:date}"/>
          <map:parameter name="format-inline" value="{date:MMM d, yyyy}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Date Input module (DateMetaModule)"/>
          <map:parameter name="description" value="Returns the current             date and time.  The format is specified in cocoon.xconf or as the             data specified in the input module reference"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/session-attr.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="fruit" value="{session-attr:fruit}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Session Attribute Input Module             (SessionAttributeModule)"/>
          <map:parameter name="description" value="SessionAttributeModule provides access             to Session attributes."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/randomnumber.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="x" value="{random:x}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Random number module (RandomNumberModule)"/>
          <map:parameter name="description" value="Returns a random number in a             user-configurable range (by default 0 to 9999999999)"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/realpath.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="/" value="{realpath:/}"/>
          <map:parameter name="/images" value="{realpath:/images}"/>
          <map:parameter name="/WEB-INF" value="{realpath:/WEB-INF}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="RealPath Module (RealPathModule)"/>
          <map:parameter name="description" value="Returns the real path of a             context-relative virtual path (if not deployed from a .war)."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/properties.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="name" value="{cocoon-properties:name}"/>
          <map:parameter name="Name" value="{cocoon-properties:Name}"/>
          <map:parameter name="fullname" value="{cocoon-properties:fullname}"/>
          <map:parameter name="version" value="{cocoon-properties:version}"/>
          <map:parameter name="released.version" value="{cocoon-properties:released.version}"/>
          <map:parameter name="year" value="{cocoon-properties:year}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Properties File Module             (PropertiesFileModule)"/>
          <map:parameter name="description" value="PropertiesFileModule provides access             to properties from a properties file. In this example the keys identify properties in             resource://org/apache/cocoon/cocoon.properties"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/url-encode.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="foo bar" value="{url-encode:foo bar}"/>
          <map:parameter name="foo/bar" value="{url-encode:foo/bar}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="URL Encoding Module (URLEncodeModule)"/>
          <map:parameter name="description" value="URLEncodeModule performs             URL encoding of the passed parameter"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/url-decode.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="foo%20bar" value="{url-decode:foo%20bar}"/>
          <map:parameter name="foo%2Fbar" value="{url-decode:foo%2Fbar}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="URL Decoding Module (URLDecodeModule)"/>
          <map:parameter name="description" value="URLDecodeModule performs             URL decoding of the passed parameter"/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/naming.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="java:comp/env/greeting" value="{naming:java:comp/env/greeting}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Naming Module (NamingInputModule)"/>
          <map:parameter name="description" value="NamingInputModule provides access             to JNDI resources. This sample does not work with built-in Jetty as it does not provide JNDI."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <map:match pattern="content/global.xml">
        <map:generate type="jx" src="properties.xml">
          <map:parameter name="global-sitemap" value="{global:global-sitemap}"/>
          <map:parameter name="global-sub-sitemap" value="{global:global-sub-sitemap}"/>
          <map:parameter name="global-sitemap-override" value="{global:global-sitemap-override}"/>
        </map:generate>
        <map:transform src="properties2html.xsl">
          <map:parameter name="title" value="Global Input Module (GlobalInputModule)"/>
          <map:parameter name="description" value="GlobalInputModule             contains 'global' values defined in the sitemap. Children sitemaps             can override values defined in the parent sitemap."/>
        </map:transform>
        <map:serialize/>
      </map:match>

      <!-- Display this sitemap source-->
      <map:match pattern="sitemap.xmap">
        <map:generate src="sitemap.xmap"/>
        <map:transform src="context://stylesheets/system/xml2html.xslt"/>
        <map:serialize/>
      </map:match>

      <map:match pattern="*.css">
        <map:read src="{1}.css" mime-type="text/css"/>
      </map:match>

      <map:match pattern="images/*.gif">
        <map:read src="images/{1}.gif" mime-type="image/gif"/>
      </map:match>

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