<?xml version="1.0"?>
<!--
  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$ -->

<page:page
  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
  xmlns="http://www.w3.org/1999/xhtml"
  >
  <page:body>
    <h2>Apache Lenya @lenya.version@ (Revision: @lenya.revision@)</h2>
    <p>
      This software consists of voluntary contributions made by many individuals
      on behalf of the <br /><a href="http://www.apache.org/">Apache Software Foundation</a>.
    </p>
    <p>
      Apache Lenya includes software developed by the 
      <a href="http://www.apache.org/">Apache Software Foundation</a>, 
      <a href="http://w3c.org">W3C</a>, and 
      <a href="http://sf.net/projects/websphinx">WebSPHINX</a>.
    </p>
    <p>
      Copyright (C) 2006 The Apache Software Foundation. All rights reserved.
    </p>
    <form id="form-about-back">
      <p>
        <input type="button" value="Back" onClick="history.go(-1)" name="input-back" i18n:attr="value"/>
      </p>
    </form>		
  </page:body>
</page:page>
