<?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>2011-02-01T03:40: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.9</title>
    <id>tag:apache.org:forrest:0.9</id>
    <updated>2011-02-07T07:00: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&#x2122; software is a publishing framework that transforms
          input from various sources into a unified presentation in one or more
          output formats. The modular and extensible plug-in architecture of
          Apache Forrest is based on Apache Cocoon and the relevant industry
          standards that separate 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.9</doap:revision>
            <doap:created>2011-02-07</doap:created>
          </doap:Version>
        </doap:release>
      </doap:Project>
    </content>
  </entry>
</feed>
