<?xml version="1.0" encoding="UTF-8"?>
<!-- DOAP file for Apache Forrest -->
<!--
  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.
-->
<feed 
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:doap="http://usefulinc.com/ns/doap#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/" 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:asfext="http://projects.apache.org/ns/asfext#"
>
  <title type="text">Apache Forrest</title>
  <author>
    <name>Apache Forrest</name>
    <uri>http://forrest.apache.org</uri>
  </author>
  <updated>2007-04-10T23:06:00Z</updated>
  <id>tag:apache.org:forrest</id><link 
    rel="alternate" 
    type="text/html" 
    hreflang="en" 
    href="http://forrest.apache.org"/>
  <entry>
    <title>Apache Forrest 0.8</title>
    <id>tag:apache.org:forrest:0.8</id>
    <updated>2007-04-10T23:06:00Z</updated>
    <content type="application/rdf+xml">
      <doap:Project>
        <doap:name>Apache Forrest</doap:name>
        <doap:homepage rdf:resource="http://forrest.apache.org"/>
        <asfext:pmc rdf:resource="http://forrest.apache.org" />
        <doap:created>2005-06-23</doap:created>
        <doap:shortdesc xml:lang="en">
          Aggregated multi-channel documentation framework, separation of concerns.
        </doap:shortdesc>
        <doap:description xml:lang="en">
          Apache Forrest is a publishing framework that transforms input from various
          sources into a unified presentation in one or more output formats. The
          modular and extensible plugin architecture is based on Apache Cocoon and
          relevant standards, which separates presentation from content. Forrest can
          generate static documents, or be used as a dynamic server, or be deployed by
          its automated facility.
        </doap:description>
        <doap:programming-language xml:lang="en">Java</doap:programming-language>
        <doap:category rdf:resource="http://projects.apache.org/category/build-management"/>
        <doap:category rdf:resource="http://projects.apache.org/category/database"/>
        <doap:category rdf:resource="http://projects.apache.org/category/graphics"/>
        <doap:category rdf:resource="http://projects.apache.org/category/http"/>
        <doap:category rdf:resource="http://projects.apache.org/category/network-client"/>
        <doap:category rdf:resource="http://projects.apache.org/category/network-server"/>
        <doap:category rdf:resource="http://projects.apache.org/category/web-framework"/>
        <doap:category rdf:resource="http://projects.apache.org/category/xml"/>
        <doap:license rdf:resource="http://forrest.apache.org/license.html"/>
        <doap:download-page
          rdf:resource="http://forrest.apache.org/mirrors.cgi"/>
        <doap:bug-database
          rdf:resource="http://forrest.apache.org/issues.html"/>
        <doap:mailing-list
          rdf:resource="http://forrest.apache.org/mail-lists.html"/>
        <doap:repository>
          <doap:SVNRepository>
            <doap:browse rdf:resource="http://svn.apache.org/viewvc/forrest/"/>
            <doap:location rdf:resource="http://svn.apache.org/repos/asf/forrest/trunk/"/>
          </doap:SVNRepository>
        </doap:repository>
        <doap:maintainer>
          <foaf:Person>
            <foaf:name>The Apache Forrest Project</foaf:name>
            <foaf:homepage rdf:resource="http://forrest.apache.org/who.html"/>
            <foaf:mbox rdf:resource="mailto:dev@forrest.apache.org"/>
          </foaf:Person>
        </doap:maintainer>
        <doap:release>
          <doap:Version>
            <doap:name>Latest stable release</doap:name>
            <doap:revision>0.8</doap:revision>
            <doap:created>2007-04-16</doap:created>
          </doap:Version>
        </doap:release>
      </doap:Project>
    </content>
  </entry>
</feed>
