You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cr...@apache.org on 2005/06/23 07:36:34 UTC

svn commit: r193078 [20/65] - in /forrest/site: ./ docs_0_60/ docs_0_60/howto/ docs_0_60/howto/bugzilla-patch/ docs_0_60/howto/bugzilla-patch/my-images/ docs_0_60/howto/multi/ docs_0_60/images/ docs_0_70/ docs_0_70/howto/ docs_0_70/howto/cvs-ssh/ docs_...

Added: forrest/site/docs_0_70/howto/forrest.xmap.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/forrest.xmap.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_70/howto/forrest.xmap.html (added)
+++ forrest/site/docs_0_70/howto/forrest.xmap.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,525 @@
+<!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">
+<meta name="generator" content="">
+<title>Annotated forrest.xmap (v0.7)</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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', '../../skin/')" id="menu_1.1Title" class="menutitle">About</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../license.html">License</a>
+</div>
+<div class="menuitem">
+<a href="http://forrest.apache.org/mirrors.cgi">Download</a>
+</div>
+<div class="menuitem">
+<a href="../../who.html">Who we are</a>
+</div>
+<div class="menuitem">
+<a href="../../events.html">Events</a>
+</div>
+<div class="menuitem">
+<a href="../../flyer.html">Flyer</a>
+</div>
+<div class="menuitem">
+<a href="../../live-sites.html">Example sites</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', '../../skin/')" id="menu_1.2Title" class="menutitle">Getting Involved</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../contrib.html">Contributing</a>
+</div>
+<div class="menuitem">
+<a href="http://svn.apache.org/viewcvs.cgi/forrest/trunk/">Browse SVN</a>
+</div>
+<div class="menuitem">
+<a href="../../mail-lists.html">Mail lists</a>
+</div>
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=12310000">Bugs and Issues</a>
+</div>
+<div class="menuitem">
+<a href="../../forrest-issues.html">Release Issues</a>
+</div>
+<div class="menuitem">
+<a href="http://vmgump.apache.org/gump/public/forrest/">Gump Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../guidelines.html">Project guidelines</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', '../../skin/')" id="menu_1.3Title" class="menutitle">Proposals</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../proposal-asf-forrestbot.html">ASF Forrestbot</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', '../../skin/')" id="menu_1.4Title" class="menutitle">Related projects</div>
+<div id="menu_1.4" 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>
+<div onclick="SwitchMenu('menu_1.5', '../../skin/')" id="menu_1.5Title" class="menutitle">Tools</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../tools/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbar.html">ForrestBar</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbot.html">Forrestbot</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbot-web-interface.html">Forrestbot Webapp</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/xxe.html">XXE-Editor</a>
+</div>
+</div>
+<div id="credit">
+<hr>
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="forrest.xmap.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text> 
+	          &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>Annotated forrest.xmap</h1>
+<div id="motd-area">
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#sitemap.xmap">sitemap.xmap</a>
+<ul class="minitoc">
+<li>
+<a href="#Definition+of+File-Resolver-Resource">Definition of File-Resolver-Resource</a>
+</li>
+<li>
+<a href="#Second+Match+for+%27**.xml%27">Second Match for '**.xml'</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="sitemap.xmap"></a>
+<h2 class="underlined_10">sitemap.xmap</h2>
+<div class="section">
+<pre>
+&lt;?xml version="1.0"?&gt;
+&lt;!-- ===============================================
+Pipelines defining all Source XML types Forrest can handle.
+Converts from arbitrary formats to standard Forrest doc-v12 XML.
+
+First, determines if a simple format file exists.
+Candidates are: .html .ihtml .txt .sxw .jspwiki 
+
+Otherwise, the default *.xml handling is used.  The XML's DTD type is
+discovered using the SourceTypeAction, and an appropriate transformation
+applied.  Thus to add new XML types, just define a new &lt;sourcetype&gt;
+and an appropriate &lt;map:when&gt; handler.
+
+Generates  :  Source XML, Body HTML for *.ehtml
+Example URL:  http://localhost:8888/index.xml
+Used by    :  *.html and *.pdf pipelines in sitemap.xmap
+Uses       :  content/xdocs/**.xml
+
+$Revision: 1.8 $
+==================================================== --&gt;
+
+&lt;map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"&gt;
+  &lt;map:components&gt;
+    &lt;map:generators default="file"&gt;
+      &lt;map:generator name="html"      src="org.apache.cocoon.generation.HTMLGenerator"&gt;
+        &lt;jtidy-config&gt;WEB-INF/jtidy.properties&lt;/jtidy-config&gt;
+      &lt;/map:generator&gt;
+      &lt;map:generator name="text2xml" logger="sitemap.generator.textgenerator"
+                     src="org.apache.cocoon.generation.TextGenerator"&gt;
+       &lt;parameter name="localizable" value="true"/&gt;
+      &lt;/map:generator&gt;
+      &lt;map:generator name="exception"
+                  src="org.apache.cocoon.generation.ParseExceptionGenerator"/&gt;
+                  
+    &lt;/map:generators&gt;
+    &lt;map:serializers default="html"/&gt;
+    &lt;map:matchers default="wildcard"/&gt;
+
+    &lt;map:transformers default="xslt"&gt;
+     &lt;map:transformer name="pattern"
+                      src="org.apache.cocoon.transformation.PatternTransformer" 
+                      logger="sitemap.transformer.pattern"&gt;
+      &lt;parameter name="groups" value="true"/&gt;
+     &lt;/map:transformer&gt;
+     &lt;map:transformer name="lexer"
+                      src="org.apache.cocoon.transformation.LexicalTransformer" 
+                      logger="sitemap.transformer.lexer"&gt;
+      &lt;parameter name="localizable" value="true"/&gt;
+     &lt;/map:transformer&gt;
+     &lt;map:transformer name="parser"
+                      src="org.apache.cocoon.transformation.ParserTransformer" 
+                      logger="sitemap.transformer.parser"&gt;
+      &lt;parameter name="flatten" value="true"/&gt;
+      &lt;parameter name="recovery" value="true"/&gt;
+      &lt;parameter name="localizable" value="true"/&gt;
+     &lt;/map:transformer&gt;
+  
+     &lt;map:transformer name="extparser"
+                      src="org.apache.cocoon.transformation.ExtendedParserTransformer"
+                      logger="sitemap.transformer.extendedparser"&gt;
+     &lt;/map:transformer&gt;
+    &lt;/map:transformers&gt;
+
+    &lt;map:actions&gt;
+      &lt;map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.sourcetype.SourceTypeAction"&gt;
+        &lt;sourcetype name="document-v10"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Documentation V1.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="howto-v10"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD How-to V1.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="todo-v10"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Todo V1.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="changes-v10"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Changes V1.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="document-v11"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Documentation V1.1//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="howto-v11"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD How-to V1.1//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="todo-v11"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Todo V1.1//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="changes-v11"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Changes V1.1//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="todo-v12"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Todo V1.2//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="changes-v12"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Changes V1.2//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="howto-v12"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD How-to V1.2//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="todo-v13"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Todo V1.3//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="changes-v13"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Changes V1.3//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="howto-v13"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD How-to V1.3//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="document-v20a"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Documentation V2.0a//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="document-v20"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Documentation V2.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="todo-v20"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Todo V2.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="changes-v20"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD Changes V2.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+        &lt;sourcetype name="howto-v20"&gt;
+          &lt;document-declaration public-id="-//APACHE//DTD How-to V2.0//EN" /&gt;
+        &lt;/sourcetype&gt;
+      &lt;/map:action&gt;
+      &lt;map:action logger="sitemap.action.locale" name="locale" src="org.apache.cocoon.acting.LocaleAction"&gt;
+      &lt;/map:action&gt;
+    &lt;/map:actions&gt;
+    &lt;map:selectors default="parameter"&gt;
+    &lt;map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" /&gt;
+   &lt;map:selector logger="sitemap.selector.exception" name="exception"
+                 src="org.apache.cocoon.selection.ExceptionSelector"&gt;
+     &lt;exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/&gt;
+     &lt;exception class="java.lang.Throwable" unroll="true"/&gt;
+   &lt;/map:selector&gt;
+      &lt;map:selector logger="sitemap.selector.config" name="config" src="org.apache.cocoon.selection.SimpleSelector" /&gt;
+    &lt;/map:selectors&gt;
+  &lt;/map:components&gt;
+
+  &lt;map:resources&gt;
+    &lt;map:resource name="transform-to-document"&gt;
+      &lt;map:act type="sourcetype" src="{src}"&gt;
+        &lt;map:select type="parameter"&gt;
+          &lt;map:parameter name="parameter-selector-test" value="{sourcetype}" /&gt;
+
+          &lt;map:when test="document-v10"&gt;
+          &lt;!-- FIXME (JJP):  This should use the v12 now--&gt;
+            &lt;map:transform src="{forrest:stylesheets}/docv10todocv11.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="document-v20a"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/docv20todocv12.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="document-v20"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/docv20todocv13.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="howto-v10"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/howto2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="howto-v11"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/howto2document.xsl" /&gt;
+          &lt;/map:when&gt;
+          &lt;map:when test="howto-v12"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/howto2document.xsl" /&gt;
+          &lt;/map:when&gt;
+          &lt;map:when test="howto-v13"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/howto2document.xsl" /&gt;
+          &lt;/map:when&gt;
+          &lt;map:when test="howto-v20"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/howto2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="todo-v10"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/todo2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="todo-v11"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/todo2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="todo-v12"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/todo2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="todo-v13"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/todo2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="todo-v20"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/todo2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="changes-v10"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changesv10tochangesv11.xsl" /&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changes2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="changes-v11"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changes2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="changes-v12"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changes2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="changes-v13"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changes2document.xsl" /&gt;
+          &lt;/map:when&gt;
+
+          &lt;map:when test="changes-v20"&gt;
+            &lt;map:transform src="{forrest:stylesheets}/changes2document.xsl" /&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise /&gt;
+        &lt;/map:select&gt;
+      &lt;/map:act&gt;
+    &lt;/map:resource&gt;
+</pre>
+<a name="N10016"></a><a name="Definition+of+File-Resolver-Resource"></a>
+<h3 class="underlined_5">Definition of File-Resolver-Resource</h3>
+<pre>
+    &lt;map:resource name="file-resolver"&gt;
+      &lt;map:select type="exists"&gt;
+        &lt;map:when test="{project:content.xdocs}{uri}.ihtml"&gt;
+          &lt;map:generate src="{project:content.xdocs}{uri}.ihtml" type="html" /&gt;
+          &lt;map:transform src="{forrest:stylesheets}/html2document.xsl" /&gt;
+          &lt;map:transform type="idgen" /&gt;
+          &lt;map:serialize type="xml-document"/&gt;
+        &lt;/map:when&gt;
+        &lt;map:when test="{project:content.xdocs}{uri}.html"&gt;
+          &lt;map:generate src="{project:content.xdocs}{uri}.html" type="html" /&gt;
+          &lt;map:transform src="{forrest:stylesheets}/html2document.xsl" /&gt;
+          &lt;map:transform type="idgen" /&gt;
+          &lt;map:serialize type="xml-document"/&gt;
+        &lt;/map:when&gt;
+        &lt;map:when test="{project:content.xdocs}{uri}.txt"&gt;
+          &lt;map:match type="regexp" pattern="^(.*?)([^/]*).xml$"&gt;
+            &lt;map:generate type="text2xml" src="{project:content.xdocs}{1}{2}.txt" /&gt;
+            &lt;map:transform src="{forrest:stylesheets}/text2document.xsl"&gt;
+              &lt;map:parameter name="filename" value="{2}" /&gt;
+            &lt;/map:transform&gt;
+            &lt;map:serialize type="xml-document"/&gt;
+          &lt;/map:match&gt;
+        &lt;/map:when&gt;
+        &lt;map:otherwise&gt;
+        
+          &lt;map:select type="exists"&gt;
+             &lt;map:when test="{project:temp-dir}/input.xmap"&gt;
+               &lt;map:mount uri-prefix=""
+                          src="{project:temp-dir}/input.xmap" 
+                          check-reload="yes" 
+                          pass-through="true"/&gt;
+            &lt;/map:when&gt;
+          &lt;/map:select&gt;
+        
+          &lt;map:generate src="{project:content.xdocs}{uri}.xml" /&gt;
+          &lt;map:call resource="transform-to-document"&gt;
+            &lt;map:parameter name="src" value="{project:content.xdocs}{uri}.xml" /&gt;
+          &lt;/map:call&gt;
+          &lt;map:serialize type="xml-document"/&gt;
+        &lt;/map:otherwise&gt;
+      &lt;/map:select&gt;
+    &lt;/map:resource&gt;
+  &lt;/map:resources&gt;
+
+  &lt;map:pipelines&gt;
+    &lt;map:pipeline&gt;
+
+      &lt;!-- ============================================================ --&gt;
+      &lt;!-- INTERMEDIATE FORMATS                                         --&gt;
+      &lt;!-- ============================================================ --&gt;
+
+      &lt;map:match pattern="**body-*.html"&gt;
+        &lt;map:select type="exists"&gt;
+          &lt;map:when test="{project:content.xdocs}{1}{2}.ehtml"&gt;
+            &lt;map:generate src="{project:content.xdocs}{1}{2}.ehtml" /&gt;
+            &lt;map:transform src="{forrest:stylesheets}/html2htmlbody.xsl" /&gt;
+            &lt;map:serialize type="xml" /&gt;
+          &lt;/map:when&gt;
+        &lt;/map:select&gt;
+      &lt;/map:match&gt;
+
+      &lt;!-- ============================================================ --&gt;
+      &lt;!-- SOURCE FORMATS                                               --&gt;
+      &lt;!-- ============================================================ --&gt;
+</pre>
+<a name="N1001C"></a><a name="Second+Match+for+%27**.xml%27"></a>
+<h3 class="underlined_5">Second Match for '**.xml'</h3>
+<pre>
+      &lt;map:match pattern="**.xml"&gt;
+        &lt;map:select type="config"&gt;
+          &lt;map:parameter name="value" value="{defaults:i18n}"/&gt;
+          &lt;map:when test="true"&gt;
+          &lt;map:act type="locale"&gt;
+            &lt;map:call resource="file-resolver"&gt;
+              &lt;map:parameter name="uri" value="{../1}_{language}"/&gt;
+            &lt;/map:call&gt;
+          &lt;/map:act&gt;
+          &lt;/map:when&gt;
+          &lt;map:otherwise&gt;
+            &lt;map:call resource="file-resolver"&gt;
+              &lt;map:parameter name="uri" value="{1}"/&gt;
+            &lt;/map:call&gt;
+          &lt;/map:otherwise&gt;
+        &lt;/map:select&gt;
+      &lt;/map:match&gt;
+      
+    &lt;/map:pipeline&gt;
+  &lt;/map:pipelines&gt;
+&lt;/map:sitemap&gt;
+</pre>
+</div>
+</div>
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/docs_0_70/howto/forrest.xmap.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/docs_0_70/howto/forrest.xmap.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/forrest.xmap.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/docs_0_70/howto/forrest.xmap.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: forrest/site/docs_0_70/howto/howto-asf-mirror.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/howto-asf-mirror.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_70/howto/howto-asf-mirror.html (added)
+++ forrest/site/docs_0_70/howto/howto-asf-mirror.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,433 @@
+<!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>Generate an ASF mirrors page using interactive web form (v0.7)</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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<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');">0.70</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_70/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/views.html">Views-dev</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.14', '../../skin/')" id="menu_selected_1.1.14Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.14" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Download mirror</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-corner-images.html">CSS corner SVG</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-forrest-from-maven.html">Maven Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-buildPlugin.html">Build a Plugin</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-custom-html-source.html">Custom html source</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.10', '../../skin/')" id="menu_1.1.14.10Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.14.10" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/howto-multi.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.11', '../../skin/')" id="menu_1.1.14.11Title" class="menutitle">Views</div>
+<div id="menu_1.1.14.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-install.html">Install views</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-contracts.html">contract implementations</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15', '../../skin/')" id="menu_1.1.15Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.15" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/upgrading_07.html">Upgrading to 0.7</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.17" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.17.1', '../../skin/')" id="menu_1.1.17.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.17.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/dtd-docs.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.dtdx.html">document-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v20.dtdx.html">howto-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v20.dtdx.html">faq-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v13.dtdx.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v13.dtdx.html">howto-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v13.dtdx.html">faq-v13</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.17.2', '../../skin/')" id="menu_1.1.17.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.17.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/document-v13.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.html">document-v20</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.18" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/primer.html">Forrest Primer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/libre-intro.html">Libre</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/dreams.html">Dream list</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
+</div>
+</div>
+</div>
+<div id="credit">
+<hr>
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-asf-mirror.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text> 
+	          &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>Generate an ASF mirrors page using interactive web form</h1>
+<div class="abstract">Include html form elements
+    into a forrest-generated html page. For example, this enables building
+    automated download mirror pages for ASF project websites.
+    </div>
+<div id="motd-area">
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Intended Audience">Intended Audience</a>
+</li>
+<li>
+<a href="#Purpose">Purpose</a>
+</li>
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Steps">Steps</a>
+<ul class="minitoc">
+<li>
+<a href="#cgi">Add the mirrors.cgi as a raw file</a>
+</li>
+<li>
+<a href="#html">Add the mirrors.html to xdocs directory</a>
+</li>
+<li>
+<a href="#menu">Add a menu entry for Download</a>
+</li>
+<li>
+<a href="#link">Cause the mirrors.html to be processed as an extra file</a>
+</li>
+<li>
+<a href="#forrest">Run 'forrest' to build your site</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<ul>
+      
+<li>Any Apache project that uses Forrest to generate their website
+        will need to have a mirrors page.</li>
+      
+<li>Also anyone interested in the use of embedding html form
+        elements into a generated Forrest page.</li>
+    
+</ul>
+</div>
+<a name="N1001E"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>All Apache projects use dynamically generated download pages
+    which determine the closest mirror and provide an interactive list of
+    the current alternative mirrors.
+    This HowTo describes the procedure to generate the template page
+    that is utilised by the mirrors.cgi script.
+    </p>
+<p>The mirrors.cgi and mirrors.html are "extra" documents,
+    i.e. have no links from anywhere in the site. So we explain
+    how to process additional files.
+    </p>
+</div>
+<a name="N10029"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+      
+<li>Followed the documentation about
+      <a href="http://www.apache.org/~bodewig/mirror.html">Making your
+      downloads mirrorable</a> and
+      <a href="http://www.apache.org/dev/mirrors.html">Apache Mirroring Information</a>
+      .
+      </li>
+      
+<li>Established your ASF distribution space as described.</li>
+      
+<li>Already building your project website with Forrest.</li>
+    
+</ul>
+</div>
+<a name="N10042"></a><a name="Steps"></a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<a name="N10047"></a><a name="cgi"></a>
+<h3 class="underlined_5">Add the mirrors.cgi as a raw file</h3>
+<p>As explained in the mirrors document, there will be a two-line CGI
+      wrapper script at the top-level of your website called
+      <span class="codefrag">mirrors.cgi</span>
+</p>
+<p>Utilising the Forrest concept of raw un-processed content,
+       add the file as <span class="codefrag">src/documentation/mirrors.cgi</span>
+       (copy the Forrest project's
+        <a href="http://svn.apache.org/repos/asf/forrest/trunk/site-author/content/mirrors.cgi">mirrors.cgi</a>)
+      </p>
+<a name="N1005D"></a><a name="html"></a>
+<h3 class="underlined_5">Add the mirrors.html to xdocs directory</h3>
+<p>This file contains the html content of your mirror page, including
+        the html form elements which drive the mirror selection. It also
+        contains the specific tokens that are interpreted by the mirrors.cgi
+        script to add the list of mirrors and select the closest.
+      </p>
+<p>
+        Add the file as <span class="codefrag">src/documentation/xdocs/mirrors.html</span>
+        (Use the Forrest project's
+        <a href="http://svn.apache.org/repos/asf/forrest/trunk/site-author/content/xdocs/mirrors.html">mirrors.html</a>
+        as a template and edit it to suit.)
+      </p>
+<a name="N10071"></a><a name="menu"></a>
+<h3 class="underlined_5">Add a menu entry for Download</h3>
+<p>Add an entry to your site.xml navigation. For example ...
+      </p>
+<pre class="code">
+ &lt;about label="About"&gt;
+  &lt;index label="Index" href="index.html"/&gt;
+  &lt;license label="License" href="license.html"/&gt;
+  &lt;download label="Download" href="http://forrest.apache.org/mirrors.cgi"/&gt;
+  &lt;download_html href="mirrors.html"/&gt;&lt;!-- so the page is part of a tab --&gt;
+  ...</pre>
+<a name="N1007F"></a><a name="link"></a>
+<h3 class="underlined_5">Cause the mirrors.html to be processed as an extra file</h3>
+<p>Forrest gathers the links that are to be crawled, by reading site.xml
+        and by finding any other internal links in the actual documents.
+        There is no link to mirrors.html because it is an extra file that needs
+        to be generated and skinned, but not linked in any way.
+      </p>
+<p>The Cocoon command-line interface
+        (<a href="http://cocoon.apache.org/2.1/userdocs/offline/">CLI</a>)
+        to the rescue. Add an entry to your project's cli.xconf by copying the
+        default one from
+        <span class="codefrag">$FORREST_HOME/main/webapp/WEB-INF/cli.xconf</span> to your
+        <span class="codefrag">src/documentation/conf/</span> directory (or wherever
+        ${forrest.conf-dir} points). Add the following entry ...
+      </p>
+<pre class="code">
+&lt;uris name="mirrors" follow-links="false"&gt;
+  &lt;uri type="append" src="mirrors.html"/&gt;
+&lt;/uris&gt;</pre>
+<a name="N1009A"></a><a name="forrest"></a>
+<h3 class="underlined_5">Run 'forrest' to build your site</h3>
+<p>
+        That is all that you need to do, Forrest will take care of it from
+        there. Run the '<span class="codefrag">forrest</span>' command. The mirrors.html page
+        will be generated with the skin applied.
+      </p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+Due to Issue
+<a href="http://issues.apache.org/jira/browse/FOR-480">FOR-480</a>,
+the generated mirror.html will end up in forrest/main/site/mirrors.html
+rather than in the project's build directory.
+</div>
+</div>
+</div>
+</div>
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/docs_0_70/howto/howto-asf-mirror.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/docs_0_70/howto/howto-asf-mirror.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/howto-asf-mirror.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/docs_0_70/howto/howto-asf-mirror.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: forrest/site/docs_0_70/howto/howto-buildPlugin.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/howto-buildPlugin.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_70/howto/howto-buildPlugin.html (added)
+++ forrest/site/docs_0_70/howto/howto-buildPlugin.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,679 @@
+<!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>How to Build a Plugin (v0.7)</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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<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');">0.70</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_70/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/views.html">Views-dev</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.14', '../../skin/')" id="menu_selected_1.1.14Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.14" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-corner-images.html">CSS corner SVG</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-forrest-from-maven.html">Maven Integration</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Build a Plugin</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-custom-html-source.html">Custom html source</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.10', '../../skin/')" id="menu_1.1.14.10Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.14.10" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/howto-multi.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.11', '../../skin/')" id="menu_1.1.14.11Title" class="menutitle">Views</div>
+<div id="menu_1.1.14.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-install.html">Install views</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/howto-view-contracts.html">contract implementations</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15', '../../skin/')" id="menu_1.1.15Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.15" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/upgrading_07.html">Upgrading to 0.7</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.17" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.17.1', '../../skin/')" id="menu_1.1.17.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.17.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/dtd-docs.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.dtdx.html">document-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v20.dtdx.html">howto-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v20.dtdx.html">faq-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v13.dtdx.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v13.dtdx.html">howto-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v13.dtdx.html">faq-v13</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.17.2', '../../skin/')" id="menu_1.1.17.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.17.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/document-v13.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.html">document-v20</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.18" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_70/primer.html">Forrest Primer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/libre-intro.html">Libre</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/dreams.html">Dream list</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_70/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
+</div>
+</div>
+</div>
+<div id="credit">
+<hr>
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-buildPlugin.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+        PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text> 
+	          &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>How to Build a Plugin</h1>
+<div class="abstract">This How-To describes the steps necessary to build a plugin for 
+    Forrest. Forrest uses plugins to add new input formats, output formats
+    and to change its default behaviour. Since plugins are downloaded when
+    needed and can be hosted at any location, plugin code can be developed 
+    independently of Apache Forrest. This how-to describes each of the major
+    steps in creating a plugin and then works through some examples of 
+    plugin creation in order to illustrate the materials.</div>
+<div id="motd-area">
+        This is documentation for current version v0.7
+       (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Intended Audience">Intended Audience</a>
+</li>
+<li>
+<a href="#Purpose">Purpose</a>
+</li>
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Steps">Steps</a>
+<ul class="minitoc">
+<li>
+<a href="#typeOfPlugin">Type of Plugin</a>
+</li>
+<li>
+<a href="#ant">Make ant available on the command-line</a>
+</li>
+<li>
+<a href="#seed">Seed a New Plugin</a>
+<ul class="minitoc">
+<li>
+<a href="#edit-template">Edit the Plugin Template</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#edit-sitemap">Edit the Plugin sitemap file(s)</a>
+<ul class="minitoc">
+<li>
+<a href="#components">Components, Actions and Resources</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#resources">Create the Necessary Resource Files</a>
+</li>
+<li>
+<a href="#samples">Create Samples in the Documentation</a>
+</li>
+<li>
+<a href="#test">Testing a Plugin</a>
+</li>
+<li>
+<a href="#release">Releasing a Plugin</a>
+<ul class="minitoc">
+<li>
+<a href="#register">Register the Plugin with Apache Forrest</a>
+</li>
+<li>
+<a href="#deploy">Deploying the Plugin</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#examples">Examples</a>
+<ul class="minitoc">
+<li>
+<a href="#input">Input Plugin</a>
+</li>
+<li>
+<a href="#output">Output Plugin</a>
+</li>
+<li>
+<a href="#internal">Internal Plugin</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#extension">Further Reading</a>
+</li>
+<li>
+<a href="#summarise">Summarise the Entire Process</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10013"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<p>Users needing to add additional input formats or output formats or
+    to change the operation of the Forrest internals.</p>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">The Plugin Infrastructure is still at an early stage of design 
+    and implementation, consequently this How-To <em>may</em> be out of date
+    and/or incomplete. If you are having problems with any of the steps 
+    described, please ask for help on the developers mailing list (and then
+    provide patches for this document).</div>
+</div>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">Please make sure that you are using forrest 0.7 if you want use 
+    plugins. Forrest 0.6 will not work!!!</div>
+</div>
+</div>
+<a name="N10024"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>This How-To will illustrate how to build a plugin, publish a plugin
+    and configure a Forrest project to use their plugin.</p>
+</div>
+<a name="N1002C"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<p>Plugin developers should have:</p>
+<ul>
+      
+<li>a basic knowledge of XML, XSLT and Cocoon pipelines</li>
+      
+<li>a clear use-case for extending Forrest</li>
+      
+<li>read
+        <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastructure</a>
+      
+</li>
+      
+<li>verified with the Apache Forrest developer community that the
+      requried functionality does not already exist</li>
+    
+</ul>
+</div>
+<a name="N10047"></a><a name="Steps"></a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<p>Here is how to proceed.</p>
+<a name="N1004F"></a><a name="typeOfPlugin"></a>
+<h3 class="underlined_5">Type of Plugin</h3>
+<p>There are three types of plugin, each with a clear purpose, you
+      must first decide which 
+      <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">type of plugin</a>
+      you need to build.</p>
+<a name="N1005D"></a><a name="ant"></a>
+<h3 class="underlined_5">Make ant available on the command-line</h3>
+<p>
+        The following instructions rely heavily on
+        <a href="http://ant.apache.org/">Apache Ant</a>
+        to automate some steps in the process. Since ant
+        is distributed as part of Forrest, all you need to do
+        is add the ant executable directory to your system path. The
+        name of this directory is <span class="codefrag">tools/ant/bin</span>
+        in your Forrest program directory.
+        (Alternatively you can prefix all calls to ant in
+        the following instructions with the full path of the ant binary directory.)
+        Also clear the ANT_HOME environment variable.
+      </p>
+<p>
+        If instead you really want to use your own version of Ant,
+        then you will need to copy
+        forrest/lib/core/xml-commons-resolver.jar
+        to $ANT_HOME/lib directory, otherwise your plugins will go across
+        the network to get the DTDs on every parse.
+      </p>
+<a name="N10071"></a><a name="seed"></a>
+<h3 class="underlined_5">Seed a New Plugin</h3>
+<p>Regardless of the type of plugin you are building, the directory
+      structure is almost identical, as are most of the requried
+      configuration files. In this How-To we will assume that you are creating a 
+      plugin in the Forrest source tree. All plugins are developed in the
+      <span class="codefrag">forrest/plugins</span> directory.</p>
+<p class="instruction">Run the following set of commands:</p>
+<pre class="code">
+      cd [path_to_forrest]/plugins
+      ant seedPlugin
+      </pre>
+<p>The above ant target will ask you the name of the plugin and will
+      build a minimal plugin directory structure and configuration. You will 
+      need to customise these files to build your plugin.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Although you can name your project anything you like we do have 
+      some <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">naming 
+      conventions</a> that we recommend you follow. Plugins intended to be
+      held at forrest.apache.org must follow the naming convention.</div>
+</div>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">If you plan on building your plugin elsewhere you can copy the
+      <span class="codefrag">build.xml</span> build file to your own plugin work directory and 
+      use it there.</div>
+</div>
+<p>See 
+      <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin
+      Infrastructure</a> for more information about the plugin
+      directory structure and configuration files.</p>
+<a name="N1009C"></a><a name="edit-template"></a>
+<h4>Edit the Plugin Template</h4>
+<p>You now have a skeleton plugin project. However, it doesn't do 
+        anything useful yet. Now is a good time to edit some of the files
+        provided.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+          For plugins intended to be held at forrest.apache.org please
+          adjust the skinconf.xml etc to be in accordance with the other
+          forrest plugins. See <a href="#hosted">notes</a> below.
+        </div>
+</div>
+<p>Here are some general notes:</p>
+<a name="N100AF"></a><a name="status"></a>
+<h5>status.xml</h5>
+<p>This file is used to track changes to the plugin
+          project and to manage lists of things that still need to be done.
+          At this stage you should correct the <span class="codefrag">person</span> entry
+          near the top of the file. It is also a good idea to add a few key
+          milestones in the task list towards the bottom of the file.</p>
+<p>As you work on the plugin you should record all major changes in
+          this file so that it can then be used as a changelog for your
+          plugin.</p>
+<a name="N100BF"></a><a name="forrest-properties"></a>
+<h5>forrest.properties</h5>
+<p>This file defines many configuration parameters for Forrest. It
+          does not need to be customised in most cases. However, see
+          for more details.</p>
+<a name="N100C9"></a><a name="skinconf"></a>
+<h5>src/documentation/skinconf.xml</h5>
+<p>This configures the skin for your plugins documentation. There
+          are some items that need to be configured in here, for example, the
+          copyright information. The file is heavily commented so probably
+          best to read through it, changing what you need to.</p>
+<a name="N100D3"></a><a name="doc"></a>
+<h5>Documentation</h5>
+<p>It is also a good idea to start writing the documentation at this
+          stage. The above process created a very simple plugin documentation
+          site for you. All you have to do is add the content.</p>
+<a name="N100DD"></a><a name="hosted"></a>
+<h5>Style notes for plugins hosted at forrest.apapche.org</h5>
+<p>
+            After seeding a new plugin, copy the configuration from an
+            exisiting plugin (e.g. org.apache.forrest.plugin.input.projectInfo).
+            Copy src/documentation/skinconf.xml and 
+            src/documentation/content/xdocs/images/project-logo.gif
+          </p>
+<a name="N100E9"></a><a name="edit-sitemap"></a>
+<h3 class="underlined_5">Edit the Plugin sitemap file(s)</h3>
+<p>The plugin <span class="codefrag">xmap</span> file is a Cocoon sitemap that is mounted
+      at a strategic place in the Forrest pipeline. It is in this file
+      that you will instruct Forrest how to operate. An input plugin
+      must provide a <span class="codefrag">input.xmap</span> file, an output plugin
+      must provide a <span class="codefrag">output.xmap</span> file, whilst an internal
+      plugin provides a <span class="codefrag">internal.xmap</span> file. In addition, an
+      input plugin may provide a <span class="codefrag">resources.xmap</span> file to
+      allow the plugin to handle items such as JavaScript files.</p>
+<p>It is beyond the scope of this How-To to give details about how to 
+      build your plugins XMap. See the 
+      <a href="../../docs_0_70/sitemap-ref.html">Sitemap Reference</a> for general
+      information. See also 
+      <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastructure</a>
+      for some hints and tips on creating plugin sitemaps. In addition, as with
+      all development work on Forrest, you will find
+      the <a href="../../mail-lists.html#forrest-dev">developer mailing list</a>
+      a very good resource (check the archives before posting, please).</p>
+<a name="N10110"></a><a name="components"></a>
+<h4>Components, Actions and Resources</h4>
+<p>If your plugin uses any components (i.e. generators, transformers or
+        serializers), actions or resources they must
+        be defined in either the xmap for this plugin or one of its parents. The parents
+        of an <span class="codefrag">input.xmap</span> are <span class="codefrag">sitemap.xmap</span> and
+        <span class="codefrag">forrest.xmap</span>, whilst the parent of both 
+        <span class="codefrag">output.xmap</span> and <span class="codefrag">internal.xmap</span> are 
+        <span class="codefrag">sitemap.xmap</span>
+</p>
+<p>If you want to use the realpath where the sitemap.xmap of your plugin 
+        resides then you need to use 
+        <span class="codefrag">{forrest:plugins}/PLUGIN_NAME</span> instead of <span class="codefrag">{realpath:/}</span>.
+        </p>
+<p>See the examples below for more details.</p>
+<a name="N10138"></a><a name="resources"></a>
+<h3 class="underlined_5">Create the Necessary Resource Files</h3>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Discuss the XSL files and other such resources</div>
+</div>
+<a name="N10143"></a><a name="samples"></a>
+<h3 class="underlined_5">Create Samples in the Documentation</h3>
+<p>Plugin documentation should provide (as a minimum) an
+      index page that provides an overview and a set of samples that demonstrate
+      the functionality of the plugin. Typically these samples will be
+      provided in a <span class="codefrag">samples</span> subdirectory in the plugin 
+      documentation and will be referenced from both <span class="codefrag">site.xml</span>
+      and <span class="codefrag">tabs.xml</span> configuration files.</p>
+<p>Try to provide a sample for all the major functions of your plugin
+      and document any configuration that is available.</p>
+<a name="N10159"></a><a name="test"></a>
+<h3 class="underlined_5">Testing a Plugin</h3>
+<p>Since your documentation for the plugin illustrates all of its 
+      functionality, you can use that site for testing the plugin. However, you
+      must first deploy in your local install of Forrest. Each plugin contains
+      a buildfile that includes a <span class="codefrag">test</span> target. This target, by
+      default, builds the documentation for your plugin.</p>
+<p class="instruction">Run the command <span class="codefrag">ant test</span> in
+      the plugins directory.</p>
+<p>Of course, the build should complete without errors.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">You can also use <span class="codefrag">forrest run</span> to interactively examine
+      your documentation (point your browser at 
+      <a href="http://localhost:8888">http://localhost:8888</a>).</div>
+</div>
+<p>It is also a really good idea to build proper tests for your 
+      plugins using a suitable testing framework, for example, 
+      <a href="http://webtest.canoo.com/">WebTest</a>. We recommend that you
+      extend the <span class="codefrag">test</span> target in your plugins build file because
+      this target is also used when performing integration tests on Forrest.
+      In addition, we recommend that you use the samples in your documentation 
+      for your tests, this way you are documenting your plugin at the same time 
+      as writing your tests.</p>
+<p>Ensure that your sitemaps are robust and handle matches for files
+      in sub-directories, as well as those at the root level.</p>
+<a name="N10187"></a><a name="release"></a>
+<h3 class="underlined_5">Releasing a Plugin</h3>
+<a name="N1018D"></a><a name="register"></a>
+<h4>Register the Plugin with Apache Forrest</h4>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Describe the plugins.xml file</div>
+</div>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Describe making a request of Forrest devs for 
+        inclusion</div>
+</div>
+<a name="N1019C"></a><a name="deploy"></a>
+<h4>Deploying the Plugin</h4>
+<p>To deploy the plugin so that others can use it, it must be made 
+        available as a zip from the URL indicated in the 
+        <span class="codefrag">plugins.xml</span> file. The plugins build file provides targets 
+        to assist with this task.</p>
+<p class="instruction">To deploy a plugin simply run the command
+        <span class="codefrag">ant deploy</span> from within the plugin directory.</p>
+<p>This command will, by default, deploy to the Apache Forrest web site.
+        In order to do this you need commit access to Forrest. If you want to
+        deploy your plugin to a different location you 
+        can build the zip of your plugin with <span class="codefrag">ant dist</span>
+        and then copy the zip file from <span class="codefrag">build/dist</span> to wherever
+        you intend to host the plugin.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Running this command on any plugin will also deploy any
+        changes to the <span class="codefrag">plugins.xml</span> file. If you are deploying to
+        your own website you will have to request changes to the 
+        <span class="codefrag">plugins.xml</span> and ask the Forrest committers to publish the new
+        document.</div>
+</div>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">Running the <span class="codefrag">deploy</span> or <span class="codefrag">dist</span> targets
+        will always run the <span class="codefrag">test</span> target first. This is to ensure
+        that your only deploy working plugins. This adds a little time to
+        the deploy cycle, but we feel the peace of mind is worth it.</div>
+</div>
+<a name="N101CF"></a><a name="examples"></a>
+<h3 class="underlined_5">Examples</h3>
+<p>This section will provide some example plugins to help illustrate the
+      steps discussed above.</p>
+<a name="N101D8"></a><a name="input"></a>
+<h4>Input Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss OpenOffice.org plugin here</div>
+</div>
+<a name="N101E3"></a><a name="output"></a>
+<h4>Output Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss s5 plugin here</div>
+</div>
+<a name="N101EE"></a><a name="internal"></a>
+<h4>Internal Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss IMSManifest plugin here</div>
+</div>
+<a name="N101FA"></a><a name="extension"></a>
+<h3 class="underlined_5">Further Reading</h3>
+<ul>
+        
+<li>
+<a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastrucuture Documentation</a> for Developers</li>
+        
+<li>
+<a href="../../pluginDocs/plugins_0_80/">Plugins Documentation</a> for users</li>
+      
+</ul>
+<a name="N10210"></a><a name="summarise"></a>
+<h3 class="underlined_5">Summarise the Entire Process</h3>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">In a few sentences, remind the reader what they have just learned.
+      This helps to reinforce the main points of your How-To.</div>
+</div>
+</div>
+</div>
+<div class="clearboth">&nbsp;</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+//  --></script>
+</div>
+<div class="copyright">
+        Copyright &copy;
+         2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/docs_0_70/howto/howto-buildPlugin.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/docs_0_70/howto/howto-buildPlugin.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_70/howto/howto-buildPlugin.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/docs_0_70/howto/howto-buildPlugin.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf