<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8-dev">
<meta name="Forrest-skin-name" content="pelt">
<title>Apache Forrest: documentation framework</title>
<link type="text/css" href="skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
<link type="text/css" href="skin/profile.css" rel="stylesheet">
<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://forrest.apache.org/">forrest</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache-forrest.png" title="The Apache Software Foundation"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="images/project-logo.gif" title="Apache Forrest"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
                    <input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li class="current">
<a class="selected" href="index.html">Welcome</a>
</li>
<li>
<a class="unselected" href="contrib.html">Developers</a>
</li>
<li>
<a class="unselected" href="versions/index.html">Versioned Docs</a>
</li>
<li>
<a class="unselected" href="pluginDocs/index.html">Plugins</a>
</li>
<li>
<a class="unselected" href="tools/index.html">Tools</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs"></div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">

             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">About</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="index.html" title="Welcome and introduction">About Forrest</a>
</div>
<div class="menuitem">
<a href="linkmap.html" title="Table of Contents for all Forrest documentation">Documentation ToC</a>
</div>
<div class="menuitem">
<a href="http://forrest.apache.org/mirrors.cgi" title="Download a release from your nearest mirror or get the latest from SVN">Download</a>
</div>
<div class="menuitem">
<a href="mail-lists.html" title="Discussion mail lists are the heart of the project: dev, user, svn">Mail lists and discussion</a>
</div>
<div class="menuitem">
<a href="license.html" title="Notes and FAQs about the licensing">License</a>
</div>
<div class="menuitem">
<a href="forrest-contract.html" title="What each party can expect">Our contract</a>
</div>
<div class="menuitem">
<a href="compliance.html" title="Declare the status of HTML, WAI, CSS compliance">Standards compliance</a>
</div>
<div class="menuitem">
<a href="forrest-issues.html" title="List of currently open issues">Open issues</a>
</div>
<div class="menuitem">
<a href="who.html" title="Explain who is involved">Who we are</a>
</div>
<div class="menupage">
<div class="menupagetitle">Flyer</div>
</div>
<div class="menuitem">
<a href="live-sites.html" title="Some sites created using Apache Forrest technology">Example sites</a>
</div>
<div class="menuitem">
<a href="thanks.html" title="Acknowledgment to those who have become involved">Thanks</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Related projects</div>
<div id="menu_1.2" class="menuitemgroup">
<div class="menuitem">
<a href="http://gump.apache.org/">Apache Gump</a>
</div>
<div class="menuitem">
<a href="http://cocoon.apache.org/">Apache Cocoon</a>
</div>
<div class="menuitem">
<a href="http://lenya.apache.org/">Apache Lenya</a>
</div>
<div class="menuitem">
<a href="http://xml.apache.org/">Apache XML</a>
</div>
<div class="menuitem">
<a href="http://projects.apache.org/">projects.apache.org</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2">
<a href="http://apachecon.com/2007/EU/"><img border="0" title="ApacheCon Europe 2007" alt="ApacheCon Europe 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-europe-125x125.png" style="width: 125px;height: 125px;"></a><a href="http://people.apache.org/calendar.html#200711"><img border="0" title="ApacheCon US 2007" alt="ApacheCon US 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-usa-125x125.png" style="width: 125px;height: 125px;"></a>
</div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="flyer.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<div class="trail">Font size: 
	          &nbsp;<input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">      
	          &nbsp;<input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
	          &nbsp;<input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
</div>
<h1>Apache Forrest: documentation framework</h1>
    
<p>
      Apache Forrest (<a href="http://forrest.apache.org/">forrest.apache.org</a>) 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.
    </p>
    
<p>
      By <strong>separating content from presentation</strong>, providing
      <strong>content templates</strong> and <strong>pre-written skins</strong>,
      Forrest is unequalled at enabling content producers to get their message
      out fast. This separation of concerns makes Forrest excellent to publish
      <strong>project documentation</strong> (notably software projects),
      <strong>intranets</strong>, and <strong>home pages</strong>.
    </p>
    
<p>
      Forrest is built on one of the world's leading XML application frameworks,
      <a href="http://cocoon.apache.org/2.1/">Apache Cocoon</a>, which provides advanced users with
      extremely powerful publishing capabilities.
    </p>
    
<ul>
      
<li>Multiple task-specific source XML formats can be used
          (<a href="howto-howto.html">How-To</a>,
        <a href="docs_0_80/faq.html">
        <acronym title="Frequently Asked Questions">FAQ</acronym></a>,
        <a href="docs_0_70/changes.html">changelogs</a> and
        <a href="todo.html">todo lists</a> supported natively).
        Source formats include: Apache xdocs xml format, plain html
        documents, some Wiki formats, a subset of DocBook, ...
      </li>
      
<li>Multiple output formats supported, for example HTML and PDF (using
        <a href="http://xmlgraphics.apache.org/fop/">Apache FOP</a>).
      </li>
      
<li>SVG to PNG rendering (using <a href="http://xmlgraphics.apache.org/batik/">Apache
        Batik</a>). Simply drop the SVG in the appropriate directory
        and it will be rendered as PNG.</li>
      
<li>
        Transparent inclusion and aggregation of external content, like
        <a href="docs_0_70/changes.rss">RSS feeds</a>.
      </li>
      
<li>
        Anything else possible with the
        <a href="http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html">Cocoon sitemap</a>.  Using database
        queries, <a href="http://people.apache.org/~vgritsenko/stats/">charting</a>, web services
        integration; the possibilities are constantly growing as Cocoon grows.
        See the <a href="http://cocoon.apache.org/2.1/features.html">Cocoon Features</a> list
        for the full suite of capabilities.
      </li>
      
<li>
        Based on Java, Forrest is platform-independent, making for a
        documentation system that is just as portable as the XML data it
        processes.
      </li>
      
<li>
        Your development team does not need Java experience, or even XML
        skills, to use Forrest. The framework lets you concentrate on
        content and design.
      </li>
    
</ul>
    
<p>
      Unique amongst comparable documentation tools, Forrest generates sites
      that can run both <strong>interactively</strong> as a dynamic web
      application, or as statically rendered pages. Running as a webapp has a
      major advantage during development: content can be written, and then the
      rendered output viewed almost instantly in a web browser. This
      <a href="docs_0_70/your-project.html#webapp">webapp technique</a> enables the
      edit/review cycle to be faster than command-line transformation tools.
    </p>
  
</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2002-2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
