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 [10/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_60/sitemap-ref.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/sitemap-ref.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_60/sitemap-ref.html (added)
+++ forrest/site/docs_0_60/sitemap-ref.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,1144 @@
+<!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>Forrest Sitemap Reference (v0.6)</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> > <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">
+ <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">
+
+
+ </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.60</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs_0_60/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/upgrading_06.html">Upgrading to 0.6</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14', '../skin/')" id="menu_1.1.14Title" class="menutitle">How-To</div>
+<div id="menu_1.1.14" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Single Page</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.3', '../skin/')" id="menu_1.1.14.3Title" class="menutitle">Multi-Page</div>
+<div id="menu_1.1.14.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/howto-multi.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/bugzilla-patch/howto-bugzilla-patch.html">With Images</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15', '../skin/')" id="menu_selected_1.1.15Title" class="menutitle" style="background-image: url('../skin/images/chapter_open.gif');">Advanced Topics</div>
+<div id="menu_selected_1.1.15" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs_0_60/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Sitemap Reference</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../skin/')" id="menu_1.1.16Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.16.1', '../skin/')" id="menu_1.1.16.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.16.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.16.2', '../skin/')" id="menu_1.1.16.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.16.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>
+<div id="credit">
+<hr>
+ This is documentation for past version v0.6
+ (<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="sitemap-ref.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>Forrest Sitemap Reference</h1>
+<div id="motd-area">
+ This is documentation for past version v0.6
+ (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#getting_started">Getting started</a>
+</li>
+<li>
+<a href="#overview">Sitemap Overview</a>
+</li>
+<li>
+<a href="#source_pipelines">Source pipelines (**.xml)</a>
+<ul class="minitoc">
+<li>
+<a href="#forrest_xmap">forrest.xmap</a>
+</li>
+<li>
+<a href="#other_source">Other source pipelines</a>
+<ul class="minitoc">
+<li>
+<a href="#late_binding_pipelines">Late-binding pipelines</a>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<a href="#output_pipelines">Output pipelines</a>
+<ul class="minitoc">
+<li>
+<a href="#pdf">PDF output</a>
+</li>
+<li>
+<a href="#html">HTML output</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#intermediate_pipelines">Intermediate pipelines</a>
+<ul class="minitoc">
+<li>
+<a href="#body_pipeline">Page body</a>
+</li>
+<li>
+<a href="#menu_pipeline">Page menu</a>
+</li>
+<li>
+<a href="#tab_pipeline">Page tabs</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#menu_xml_generation">Menu XML generation</a>
+</li>
+<li>
+<a href="#linkrewriting_impl">Link rewriting</a>
+<ul class="minitoc">
+<li>
+<a href="#input_modules">Cocoon foundations: Input Modules</a>
+</li>
+<li>
+<a href="#implement_rewriting">Implementing "site:" rewriting</a>
+<ul class="minitoc">
+<li>
+<a href="#cocoon_xconf">cocoon.xconf</a>
+</li>
+<li>
+<a href="#sitemap">sitemap.xmap</a>
+</li>
+<li>
+<a href="#dynamic_linkmap">Dynamically generating a linkmap</a>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+<p>
+ Technically, Forrest can be thought of as a
+ <a href="http://cocoon.apache.org/2.1/">Cocoon</a> distribution that has been stripped down
+ and optimized for people with simple site publishing needs. Central to
+ Cocoon, and hence Forrest, is the <strong>sitemap</strong>. The sitemap
+ defines the site's URI space (what pages are available), and how each page
+ is constructed. Understanding the sitemap is the key to understanding
+ Forrest.
+ </p>
+
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+ We advise you to spend time to understand the Apache Cocoon sitemap.
+ See <a href="http://cocoon.apache.org/2.1/userdocs/concepts/sitemap.html">Cocoon sitemap</a>
+ and <a href="http://cocoon.apache.org/2.1/userdocs/concepts/">Cocoon concepts</a>
+ and related component documentation.
+ The Forrest sitemap is broken into multiple files. The main one is
+ <strong>sitemap.xmap</strong> which delegates to others.
+ </div>
+</div>
+
+<p>
+ This document provides an overview of the special sitemap which
+ is used at the core of Apache Forrest.
+ </p>
+
+
+<a name="N10028"></a><a name="getting_started"></a>
+<h2 class="underlined_10">Getting started</h2>
+<div class="section">
+<p>
+ Forrest's sitemap comprises the $FORREST_HOME/context/*.xmap files.
+ </p>
+<p>
+ You can add pre-processing sitemaps to your project
+ <span class="codefrag">src/documentation</span> directory (or wherever
+ <span class="codefrag">${project.sitemap-dir}</span> points to). Any match that
+ is not handled, passes through to be handled by the default Forrest
+ sitemaps - obviously extremely powerful. The capability is described
+ in
+ "<a href="../docs_0_60/project-sitemap.html">Using project sitemaps</a>".
+ </p>
+<p>
+ Another way to experiment with the sitemap is to do '<span class="codefrag">forrest
+ run</span>' on a Forrest-using site. Changes to the core
+ <span class="codefrag">*.xmap</span> files will now be immediately visible
+ at <span class="codefrag">>http://localhost:8888/</span>
+
+</p>
+</div>
+
+
+<a name="N1004B"></a><a name="overview"></a>
+<h2 class="underlined_10">Sitemap Overview</h2>
+<div class="section">
+<p>
+ Forrest's sitemap is divided both physically and logically. The most
+ obvious is the physical separation. There are a number of separate
+ *.xmap files, each defining pipelines for a functional area. Each *.xmap
+ file has its purpose documented in comments at the top. Here is a brief
+ overview of the files, in order of importance.
+ </p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tr>
+
+<th colspan="1" rowspan="1"><strong>sitemap.xmap</strong></th>
+ <td colspan="1" rowspan="1">Primary sitemap file, which delegates responsibility for serving
+ certain URIs to the others (technically called sub-sitemaps). More
+ about the structure of this file later.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">forrest.xmap</th>
+ <td colspan="1" rowspan="1">Sitemap defining Source pipelines, which generate the body section
+ of Forrest pages. All pipelines here deliver XML in Forrest's
+ intermediate "document-v13" format, regardless of originating source
+ or format.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">menu.xmap</th>
+ <td colspan="1" rowspan="1">Pipelines defining the XML that becomes the menu.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">linkmap.xmap</th>
+ <td colspan="1" rowspan="1">Defines a mapping from abstract ("site:index") to physical
+ ("../index.html") links for the current page. See
+ <a href="../docs_0_60/linking.html">Menus and Linking</a> for a conceptual
+ overview, and the <a href="#linkrewriting_impl">Link
+ rewriting</a> section for technical details.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">resources.xmap</th>
+ <td colspan="1" rowspan="1">Serves "resource" files (images, CSS, Javascript).</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">raw.xmap</th>
+ <td colspan="1" rowspan="1">Serves files located in <span class="codefrag">src/documentation/content/</span>
+ that are not to be modified by Forrest.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">aggregate.xmap</th>
+ <td colspan="1" rowspan="1">Generates a single page (HTML or PDF) containing all the content
+ for the site.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">faq.xmap</th>
+ <td colspan="1" rowspan="1">Processes FAQ documents.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">status.xmap</th>
+ <td colspan="1" rowspan="1">Generates <a href="../docs_0_60/changes.html">changes</a> and
+ <a href="../docs_0_60/todo.html">todo</a> pages from a single
+ <span class="codefrag">status.xml</span> in the project root.
+ </td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">issues.xmap</th>
+ <td colspan="1" rowspan="1">Generates a page of content from an RSS feed. Used in Forrest to
+ generate a "current issues" list from JIRA.</td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">revisions.xmap</th>
+ <td colspan="1" rowspan="1">
+ Support for HOWTO documents that want "revisions". Revisions are
+ XML snippets containing comments on the main XML file. The main
+ pipeline here automatically appends a page's revisions to the
+ bottom.
+ </td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">dtd.xmap</th>
+ <td colspan="1" rowspan="1">A Source pipeline that generates XML from a DTD, using Andy
+ Clark's
+ <a href="http://www.apache.org/~andyc/neko/doc/dtd/index.html">DTD
+ Parser</a>. Useful for documenting DTD-based XML schemas, such
+ as <a href="../docs_0_80/../dtdx/dtd-docs.html">Forrest's own DTDs</a>.
+ </td>
+
+</tr>
+
+<tr>
+
+<th colspan="1" rowspan="1">profiler.xmap</th>
+ <td colspan="1" rowspan="1">Defines the "profiler" pipeline. allowing pipelines to be benchmarked.</td>
+
+</tr>
+
+</table>
+</div>
+
+
+
+
+<a name="N10122"></a><a name="source_pipelines"></a>
+<h2 class="underlined_10">Source pipelines (**.xml)</h2>
+<div class="section">
+<p>
+ Most *.xmap files (forrest, aggregate, faq, status, issues, revisions,
+ dtd) define Source pipelines. Source pipelines define the content
+ (body) XML for site pages. The input XML format can be any format
+ (document-v13, Docbook, RSS, FAQ, Howto) and from any source (local or
+ remote). The output format is always Forrest's intermediate "document-v13"
+ format.
+ </p>
+<p>
+ Source pipelines always have a "<span class="codefrag">.xml</span>" extension. Thus,
+ <a href="../index.xml">index.xml</a> gives you the XML source for the
+ index page. Likewise, <a href="../docs_0_60/faq.html">faq.xml</a> gives you XML
+ for the FAQ (transformed from FAQ syntax), and
+ <a href="../changes.xml">changes.xml</a> returns XML from the status.xml file.
+ Take any page, and replace its extension (<span class="codefrag">.html</span> or
+ <span class="codefrag">.pdf</span>) with <span class="codefrag">.xml</span> and you'll have the Source
+ XML.
+ </p>
+<p>
+ This is quite powerful, because we now have an abstraction layer, or
+ "virtual filesystem", on which the rest of Forrest's sitemap can build.
+ Subsequent layers don't need to care whether the XML was obtained
+ locally or remotely, or from what format. Wikis, RSS, FAQs and Docbook
+ files are all processed identically from here on.
+ </p>
+<pre class="code">
+ (subsequent Forrest pipelines)
+ |
+--------+------------------------^------------------------------------------
+ | STANDARD FORREST FORMAT (current document-v13)
+ +-----^-------^--------^------------^------^-----^-----^------^-----
+SOURCE | | | | | | | |
+FORMATS doc-v11 doc-v13 doc-v20 ... Docbook FAQ Howto Wiki RSS ??
+(*.xml)
+ (in forrest.xmap, faq.xmap, etc)
+ </pre>
+<a name="N1014D"></a><a name="forrest_xmap"></a>
+<h3 class="underlined_5">forrest.xmap</h3>
+<p>
+ Most of the usual Source pipelines are defined in
+ <span class="codefrag">forrest.xmap</span> which is the default (fallback) handler for
+ <span class="codefrag">**.xml</span> pages. The forrest.xmap uses the
+ <a href="../docs_0_60/cap.html">SourceTypeAction</a> to determine the type of XML
+ it is processing, and converts it to document-v13 if necessary.
+ </p>
+<p>For instance, say we are rendering <a href="../docs_0_60/howto/howto-howto.html">a
+ Howto document</a> called "howto-howto.xml". It contains this DOCTYPE
+ declaration:</p>
+<pre class="code">
+<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V1.3//EN"
+ "http://forrest.apache.org/dtd/howto-v13.dtd"></pre>
+<p>The SourceTypeAction sees this, and applies this transform to get it
+ to document-v13:</p>
+<pre class="code">
+ <map:when test="howto-v13">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+ </pre>
+<a name="N10175"></a><a name="other_source"></a>
+<h3 class="underlined_5">Other source pipelines</h3>
+<p>As mentioned above, all non-core Source pipelines are distributed in
+ independent <span class="codefrag">*.xmap</span> files. There is a block of
+ <span class="codefrag">sitemap.xmap</span> which simply delegates certain requests to
+ these subsitemaps:</p>
+<pre class="code">
+ <!-- Body content -->
+ <map:match pattern="**.xml">
+ <map:match pattern="changes.xml">
+ <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="todo.xml">
+ <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**dtdx.xml">
+ <map:mount uri-prefix="" src="dtd.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="forrest-issues.xml">
+ <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="**faq.xml">
+ <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
+ </map:match>
+
+ <map:match pattern="site.xml">
+ <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
+ </map:match>
+ ....
+ ....</pre>
+<a name="N10188"></a><a name="late_binding_pipelines"></a>
+<h4>Late-binding pipelines</h4>
+<p>
+ One point of interest here is that the sub-sitemap is often not
+ specific about which URLs it handles, and relies on the caller (the
+ section listed above) to only pass relevant requests to it. We term
+ this "binding a URL" to a pipeline.</p>
+<p>For instance, the main pipeline in <span class="codefrag">faq.xmap</span> matches
+ <span class="codefrag">**.xml</span>, but only <span class="codefrag">**faq.xml</span> requests are
+ sent to it.</p>
+<p>This "late binding" is useful, because the whole URL space is
+ managed in <span class="codefrag">sitemap.xmap</span> and not spread over lots of
+ *.xmap files. For instance, say you wish all <span class="codefrag">*.xml</span>
+ inside a "<span class="codefrag">faq/</span>" directory to be processed as FAQs. Just
+ override <span class="codefrag">sitemap.xmap</span> and redefine the relevant source
+ matcher:</p>
+<pre class="code">
+ <map:match pattern="**faq.xml">
+ <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
+ </map:match></pre>
+</div>
+
+
+<a name="N101B3"></a><a name="output_pipelines"></a>
+<h2 class="underlined_10">Output pipelines</h2>
+<div class="section">
+<p>
+ To recap, we now have a <span class="codefrag">*.xml</span> pipeline defined for each
+ page in the site, emitting standardized XML. These pipeline definitions
+ are located in various *.xmap files, notably forrest.xmap
+ </p>
+<p>
+ We now wish to render the XML from these pipelines to output formats
+ like HTML and PDF.
+ </p>
+<a name="N101C2"></a><a name="pdf"></a>
+<h3 class="underlined_5">PDF output</h3>
+<p>
+ Easiest case first; PDFs don't require menus or headers, so we can
+ simply transform our intermediate format into XSL:FO, and from there
+ to PDF. This is done by the following matcher in
+ <span class="codefrag">sitemap.xmap</span> ...
+ </p>
+<pre class="code">
+1 <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
+2 <map:generate src="cocoon:/{1}{2}.xml"/>
+3 <map:transform type="xinclude"/>
+4 <map:transform type="<a href="#linkrewriting_impl">linkrewriter</a>" src="cocoon://{1}linkmap-{2}.pdf"/>
+5 <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl">
+6 <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
+7 <map:parameter name="xmlbasedir" value="content/xdocs/{1}"/>
+8 </map:transform>
+9 <map:serialize type="fo2pdf"/>
+10 </map:match>
+ </pre>
+<ol>
+
+<li>The first line uses a matching regexp to break the URL into
+ directory <span class="codefrag">(.*?)</span> and filename
+ <span class="codefrag">([^/]*)</span> parts.</li>
+
+<li>We then generate XML from a <a href="#source_pipelines">Source
+ pipeline</a>, with the URL <span class="codefrag">cocoon:/{1}{2}.xml</span>
+</li>
+
+<li>We then expand any XInclude statements..</li>
+
+<li>and <a href="#linkrewriting_impl">rewrite links</a>..</li>
+
+<li>and finally apply the document2fo.xsl stylesheet, to generate
+ XSL:FO XML.</li>
+
+</ol>
+<p>Lastly, we generate a PDF using the fo2pdf serializer.</p>
+<a name="N101FC"></a><a name="html"></a>
+<h3 class="underlined_5">HTML output</h3>
+<p>Generating HTML pages is more complicated, because we have to merge
+ the page body with a menu and tabs, and then add a header and footer.
+ Here is the <span class="codefrag">*.html</span> matcher in
+ <span class="codefrag">sitemap.xmap</span> ...</p>
+<pre class="code">
+ <map:match pattern="*.html">
+ <map:aggregate element="site">
+ <map:part src="<a href="#tab_pipeline">cocoon:/tab-{0}</a>"/>
+ <map:part src="<a href="#menu_pipeline">cocoon:/menu-{0}</a>"/>
+ <map:part src="<a href="#body_pipeline">cocoon:/body-{0}</a>"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ <map:parameter name="path" value="{0}"/>
+ </map:call>
+ </map:match>
+ </pre>
+<p>
+ So <a href="../index.html">index.html</a> is formed from
+ aggregating <a href="../body-index.html">body-index.html</a> and
+ <a href="../menu-index.html">menu-index.html</a> and
+ <a href="../tab-index.html">tab-index.html</a> and then applying the
+ <span class="codefrag">site2xhtml.xsl</span> stylesheet to the result.
+ </p>
+<p>
+ There is a nearly identical matcher for HTML files in subdirectories:
+ </p>
+<pre class="code">
+ <map:match pattern="**/*.html">
+ <map:aggregate element="site">
+ <map:part src="<a href="#tab_pipeline">cocoon:/{1}/tab-{2}.html</a>"/>
+ <map:part src="<a href="#menu_pipeline">cocoon:/{1}/menu-{2}.html</a>"/>
+ <map:part src="<a href="#body_pipeline">cocoon:/{1}/body-{2}.html</a>"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type"
+ value="site2xhtml"/>
+ <map:parameter name="path"
+ value="{0}"/>
+ </map:call>
+ </map:match>
+ </pre>
+</div>
+
+<a name="N10246"></a><a name="intermediate_pipelines"></a>
+<h2 class="underlined_10">Intermediate pipelines</h2>
+<div class="section">
+<a name="N1024C"></a><a name="body_pipeline"></a>
+<h3 class="underlined_5">Page body</h3>
+<p>Here is the matcher which generates the page body:</p>
+<pre class="code">
+1 <map:match pattern="**body-*.html">
+2 <map:generate src="cocoon:/{1}{2}.xml"/>
+3 <map:transform type="idgen"/>
+4 <map:transform type="xinclude"/>
+5 <map:transform type="<a href="#linkrewriting_impl">linkrewriter</a>" src="cocoon:/{1}linkmap-{2}.html"/>
+6 <map:call resource="skinit">
+7 <map:parameter name="type" value="document2html"/>
+8 <map:parameter name="path" value="{1}{2}.html"/>
+9 <map:parameter name="notoc" value="false"/>
+10 </map:call>
+11 </map:match>
+ </pre>
+<ol>
+
+<li>In our matcher pattern, {1} will be the directory (if any) and {2}
+ will be the filename.</li>
+
+<li>First, we obtain XML content from a source pipeline</li>
+
+<li>
+
+<p>We then apply a custom-written
+ <span class="codefrag">IdGeneratorTransformer</span>, which ensures that every
+ <section> has an "id" attribute if one is not supplied, by generating one from the
+ <title> if necessary. For example, <idgen> will
+ transform:</p>
+
+<pre class="code">
+ <section>
+ <title>How to boil eggs</title>
+ ...
+ </pre>
+
+<p>into:</p>
+
+<pre class="code">
+ <section id="How+to+boil+eggs">
+ <title>How to boil eggs</title>
+ ...
+ </pre>
+
+<p>Later, the <span class="codefrag">document2html.xsl</span> stylesheet will create
+ an <a name> element for every section, allowing this section to
+ be referred to as <span class="codefrag">index.html#How+to+boil+eggs</span>.</p>
+
+</li>
+
+<li>We then expand XInclude elements.</li>
+
+<li>and <a href="#linkrewriting_impl">rewrite links</a>..</li>
+
+<li>and then finally apply the stylesheet that generates a fragment of
+ HTML (minus the outer elements like
+ <html> and <body>) suitable for merging with the menu and tabs.</li>
+
+</ol>
+<a name="N10291"></a><a name="menu_pipeline"></a>
+<h3 class="underlined_5">Page menu</h3>
+<p>In the <span class="codefrag">sitemap.xmap</span> file, the matcher generating HTML for the menu is:</p>
+<pre class="code">
+ <map:match pattern="**menu-*.html">
+ <map:generate src="cocoon:/{1}book-{2}.html"/>
+ <map:transform type="<a href="#linkrewriting_impl">linkrewriter</a>" src="cocoon:/{1}linkmap-{2}.html"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="book2menu"/>
+ <map:parameter name="path" value="{1}{2}.html"/>
+ </map:call>
+ </map:match>
+ </pre>
+<p>We get XML from a "book" pipeline,
+ <a href="#linkrewriting_impl">rewrite links</a>, and apply the
+ <span class="codefrag">book2menu.xsl</span> stylesheet to generate HTML.</p>
+<p>How the menu XML is actually generated (the *book-*.html pipeline) is
+ sufficiently complex to require a
+ <a href="#menu_xml_generation">section of its own</a>.</p>
+<a name="N102B7"></a><a name="tab_pipeline"></a>
+<h3 class="underlined_5">Page tabs</h3>
+<p>Tab generation is quite tame compared to menus:</p>
+<pre class="code">
+ <map:match pattern="**tab-*.html">
+ <map:generate src="content/xdocs/tabs.xml" />
+ <map:transform type="<a href="#linkrewriting_impl">linkrewriter</a>" src="cocoon:/{1}linkmap-{2}.html"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="tab2menu"/>
+ <map:parameter name="path" value="{1}{2}.html"/>
+ </map:call>
+ </map:match>
+ </pre>
+<p>All the smarts are in the <span class="codefrag">tab2menu.xsl</span> stylesheet, which
+ needs to choose the correct tab based on the current path. Currently,
+ a "longest matching path" algorithm is implemented. See the
+ <span class="codefrag">tab2menu.xsl</span> stylesheet for details.</p>
+</div>
+
+
+<a name="N102D3"></a><a name="menu_xml_generation"></a>
+<h2 class="underlined_10">Menu XML generation</h2>
+<div class="section">
+<p>The "book" pipeline is defined in <span class="codefrag">sitemap.xmap</span>as:</p>
+<pre class="code">
+ <map:match pattern="**book-*.html">
+ <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
+ </map:match>
+ </pre>
+<p>Meaning that it is defined in the <span class="codefrag">menu.xmap</span> file. In there we find
+ the real definition, which is quite complicated, because there are three
+ supported menu systems (see <a href="../docs_0_60/linking.html">menus and
+ linking</a>). We will not go through the sitemap itself
+ (menu.xmap), but will instead describe the logical steps involved:</p>
+<ol>
+
+<li>Take site.xml and expand hrefs so that they are all
+ root-relative.</li>
+
+<li>
+<p>Depending on the <span class="codefrag">forrest.menu-scheme</span> property, we
+ now apply one of the two algorithms for choosing a set of menu links
+ (described in <a href="../docs_0_60/linking.html#menu_generation">menu
+ generation</a>):</p>
+
+<ul>
+
+<li>
+
+<p>
+ For "@tab" menu generation, we first ensure each site.xml node
+ has a tab attribute (inherited from a parent if necessary), and
+ then pass through nodes whose tab attribute matches that of the
+ "current" node.
+ </p>
+
+<p>
+ For example, say our current page's path is
+ <span class="codefrag">community/howto/index.html</span>. In
+ <span class="codefrag">site.xml</span> we look for the node with this
+ "<span class="codefrag">href</span>" and discover its "<span class="codefrag">tab</span>" attribute
+ value is "<span class="codefrag">howtos</span>". We then prune the
+ <span class="codefrag">site.xml</span>-derived content to contain only nodes with
+ <span class="codefrag">tab="howtos"</span>.
+ </p>
+
+<p>
+ All this is done with XSLT, so the sitemap snippet does not
+ reveal this complexity:
+ </p>
+
+<pre class="code">
+<map:transform src="resources/stylesheets/site2site-normalizetabs.xsl" />
+<map:transform src="resources/stylesheets/site2site-selectnode.xsl">
+ <map:parameter name="path" value="{1}{2}"/>
+</map:transform>
+ </pre>
+
+</li>
+
+<li>
+
+<p>For "directory" menu generation, we simply use an
+ <span class="codefrag">XPathTransformer</span> to include only pages in the
+ current page's directory, or below:</p>
+
+<pre class="code">
+<map:transform type="xpath">
+ <map:parameter name="include" value="//*[@href='{1}']" />
+</map:transform>
+ </pre>
+
+<p>
+ Here, the "<span class="codefrag">{1}</span>" is the directory part of the current
+ page. So if our current page is
+ <span class="codefrag">community/howto/index.html</span> then "<span class="codefrag">{1}</span>" will
+ be <span class="codefrag">community/howto/</span> and the transformer will
+ include all nodes in that directory.
+ </p>
+
+</li>
+
+</ul>
+
+<p>We now have a <span class="codefrag">site.xml</span> subset relevant to our current
+ page.</p>
+
+</li>
+
+<li>The "<span class="codefrag">href</span>" nodes in this are then made relative to the
+ current page.</li>
+
+<li>The XML is then transformed into a legacy "<span class="codefrag">book.xml</span>"
+ format, for compatibility with existing stylesheets, and this XML
+ format is returned (hence the name of the matcher:
+ <span class="codefrag">**book-*.html</span>).</li>
+
+</ol>
+</div>
+
+
+<a name="N10359"></a><a name="linkrewriting_impl"></a>
+<h2 class="underlined_10">Link rewriting</h2>
+<div class="section">
+<p>In numerous places in <span class="codefrag">sitemap.xmap</span> you will see the
+ "linkrewriter" transformer in action. For example:</p>
+<pre class="code"><map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/></pre>
+<p>This statement is Cocoon's linking system in action. A full
+ description is provided in <a href="../docs_0_60/linking.html">Menus and
+ Linking</a>. Here we describe the implementation of linking.</p>
+<a name="N10370"></a><a name="input_modules"></a>
+<h3 class="underlined_5">Cocoon foundations: Input Modules</h3>
+<p>
+ The implementation of <span class="codefrag">site:</span> linking is heavily based on
+ Cocoon <a href="http://cocoon.apache.org/2.1/userdocs/concepts/modules.html">Input Modules</a>, a
+ little-known but quite powerful aspect of Cocoon. Input Modules are
+ generic Components which simply allow you to look up a value with a
+ key. The value is generally dynamically generated, or obtained by
+ querying an underlying data source.
+ </p>
+<p>
+ In particular, Cocoon contains an <span class="codefrag">XMLFileModule</span>, which
+ lets one look up the value of an XML node, by interpreting the key as
+ an XPath expression. Cocoon also has a
+ <span class="codefrag">SimpleMappingMetaModule</span>, which allows the key to be
+ rewritten before it is used to look up a value.
+ </p>
+<p>
+ The idea for putting these together to rewrite "<span class="codefrag">site:</span>"
+ links was described in <a href="http://marc.theaimsgroup.com/?t=103992708800001&r=1&w=2">this
+ thread</a>. The idea is to write a Cocoon Transformer that
+ triggers on encountering <link
+ href="<span class="codefrag">scheme:address</span>">, and interprets the
+ <span class="codefrag">scheme:address</span> internal URI as
+ <span class="codefrag">inputmodule:key</span>. The transformer then uses the named
+ InputModule to look up the key value. The <span class="codefrag">scheme:address</span>
+ URI is then rewritten with the found value. This transformer was
+ implemented as
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15611">LinkRewriterTransformer</a>,
+ currently distributed as a "block" in Cocoon 2.1
+ </p>
+<a name="N103A4"></a><a name="implement_rewriting"></a>
+<h3 class="underlined_5">Implementing "site:" rewriting</h3>
+<p>
+ Using the above components, "<span class="codefrag">site:</span>" URI rewriting is
+ accomplished as follows.
+ </p>
+<a name="N103B3"></a><a name="cocoon_xconf"></a>
+<h4>cocoon.xconf</h4>
+<p>First, we declare all the input modules we will be needing:</p>
+<pre class="code">
+<!-- For the site: scheme -->
+<component-instance
+ class="org.apache.cocoon.components.modules.input.XMLFileModule"
+ logger="core.modules.xml" name="linkmap"/>
+
+<!-- Links to URIs within the site -->
+<component-instance
+ class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
+ logger="core.modules.mapper" name="site"/>
+
+<!-- Links to external URIs, as distinct from 'site' URIs -->
+<component-instance
+ class="org.apache.cocoon.components.modules.input.SimpleMappingMetaModule"
+ logger="core.modules.mapper" name="ext"/>
+</pre>
+<ul>
+
+<li>
+<strong>linkmap</strong> will provide access to the contents of
+ <span class="codefrag">site.xml</span>; for example, <span class="codefrag">linkmap:/site/about/index/@href</span>
+ would return the value "index.html".</li>
+
+<li>
+<strong>site</strong> provides a "mask" over
+ <strong>linkmap</strong> such that <span class="codefrag">site:index</span> expands
+ to <span class="codefrag">linkmap:/site//index/@href</span>
+
+</li>
+
+<li>
+<strong>ext</strong> provides another "mask" over
+ <strong>linkmap</strong>, such that <span class="codefrag">ext:ant</span> would
+ expand to <span class="codefrag">linkmap:/site/external-refs//ant/@href</span>
+
+</li>
+
+</ul>
+<p>However at the moment, we have only declared the input modules.
+ They will be configured in <span class="codefrag">sitemap.xmap</span> as described in
+ the next section.</p>
+<a name="N103F1"></a><a name="sitemap"></a>
+<h4>sitemap.xmap</h4>
+<p>
+ Now in the sitemap, we define the LinkRewriterTransformer, and
+ insert it into any pipelines which deal with user-editable XML
+ content:
+ </p>
+<pre class="code">
+....
+<!-- Rewrites links, e.g. transforming
+ href="site:index" to href="../index.html"
+-->
+<map:transformer name="linkrewriter"
+ logger="sitemap.transformer.linkrewriter"
+ src="org.apache.cocoon.transformation.LinkRewriterTransformer">
+ <link-attrs>href src</link-attrs>
+ <schemes>site ext</schemes>
+
+ <input-module name="site">
+ <input-module name="linkmap">
+ <file src="{src}" reloadable="false" />
+ </input-module>
+ <prefix>/site//</prefix>
+ <suffix>/@href</suffix>
+ </input-module>
+ <input-module name="ext">
+ <input-module name="linkmap">
+ <file src="{src}" reloadable="false" />
+ </input-module>
+ <prefix>/site/external-refs//</prefix>
+ <suffix>/@href</suffix>
+ </input-module>
+</map:transformer>
+....
+....
+<map:match pattern="**body-*.html">
+ <map:generate src="cocoon:/{1}{2}.xml"/>
+ <map:transform type="idgen"/>
+ <map:transform type="xinclude"/>
+ <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
+ ...
+</map:match></pre>
+<p>As you can see, our three input modules are configured as part of
+ the LinkRewriterTransformer's configuration.</p>
+<ul>
+
+<li>
+
+<p>Most deeply nested, we have:</p>
+
+<pre class="code">
+ <input-module name="linkmap">
+ <file src="{src}" reloadable="false" />
+ </input-module></pre>
+
+<p>The "<span class="codefrag">{src}</span>" text is expanded to the value of the
+ "<span class="codefrag">src</span>" attribute in the "<span class="codefrag">linkrewriter</span>"
+ instance, namely "<span class="codefrag">cocoon:/{1}linkmap-{2}.html</span>"
+ Thus the <span class="codefrag">linkmap</span> module reads dynamically
+ generated XML specific to the current request.</p>
+
+</li>
+
+<li>
+
+<p>One level out, we configure the "<span class="codefrag">site</span>" and
+ "<span class="codefrag">ext</span>" input modules, to map onto our dynamically
+ configured "<span class="codefrag">linkmap</span>" module.</p>
+
+</li>
+
+<li>
+
+<p>Then at the outermost level, we configure the
+ "<span class="codefrag">linkrewriter</span>" transformer. First we tell it which
+ attributes to consider rewriting:</p>
+
+<pre class="code">
+ <link-attrs>href src</link-attrs>
+ <schemes>site ext</schemes></pre>
+
+<p>So, "<span class="codefrag">href</span>" and "<span class="codefrag">src</span>" attributes starting
+ with "<span class="codefrag">site:</span>" or "<span class="codefrag">ext:</span>" are rewritten.</p>
+
+
+<p>By nesting the "<span class="codefrag">site</span>" and "<span class="codefrag">ext</span>" input
+ modules in the "<span class="codefrag">linkrewriter</span>" configuration, we tell
+ "<span class="codefrag">linkrewriter</span>" to use these two input modules when
+ rewriting links.</p>
+
+</li>
+
+</ul>
+<p>
+ The end result is that, for example, the source XML for the
+ <span class="codefrag">community/body-index.html</span> page has its links rewritten
+ by an XMLFileModule reading XML from
+ <span class="codefrag">cocoon:/community/linkmap-index.html</span>
+
+</p>
+<a name="N10464"></a><a name="dynamic_linkmap"></a>
+<h4>Dynamically generating a linkmap</h4>
+<p>
+ Why do we need this "linkmap" pipeline generating dynamic XML from
+ <span class="codefrag">site.xml</span>, instead of just using <span class="codefrag">site.xml</span> directly? The reasons are described
+ in <a href="http://marc.theaimsgroup.com/?l=forrest-dev&m=103444028129281&w=2">the linkmap RT</a>: we need to
+ concatenate @hrefs and add dot-dots to the paths, depending on which
+ directory the linkee is in. This is done with the following
+ pipelines in <span class="codefrag">linkmap.xmap</span> ...
+ </p>
+<pre class="code">
+<!-- site.xml with @href's appended to be context-relative. -->
+<map:match pattern="abs-linkmap">
+ <map:generate src="content/xdocs/site.xml" />
+ <map:transform src="resources/stylesheets/absolutize-linkmap.xsl" />
+ <map:serialize type="xml" />
+</map:match>
+
+<!-- Linkmap for regular pages -->
+<map:match pattern="**linkmap-*">
+ <map:generate src="cocoon://abs-linkmap" />
+ <map:transform src="resources/stylesheets/relativize-linkmap.xsl">
+ <map:parameter name="path" value="{1}{2}" />
+ <map:parameter name="site-root" value="{conf:project-url}" />
+ </map:transform>
+ <map:serialize type="xml" />
+</map:match>
+ </pre>
+<p>You can try these URIs out directly on a live Forrest to see what
+ is going on (for example, Forrest's own
+ <a href="../abs-linkmap">abs-linkmap</a>).
+ </p>
+</div>
+
+</div>
+<div class="clearboth"> </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 ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_60/sitemap-ref.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_60/sitemap-ref.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/sitemap-ref.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_60/sitemap-ref.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_60/skin-package.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/skin-package.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_60/skin-package.html (added)
+++ forrest/site/docs_0_60/skin-package.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,295 @@
+<!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>Skin packaging, provision, and use (v0.6)</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> > <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">
+ <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">
+
+
+ </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.60</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs_0_60/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/upgrading_06.html">Upgrading to 0.6</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skins.html">Default Skins</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Skin Packages</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14', '../skin/')" id="menu_1.1.14Title" class="menutitle">How-To</div>
+<div id="menu_1.1.14" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Single Page</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.3', '../skin/')" id="menu_1.1.14.3Title" class="menutitle">Multi-Page</div>
+<div id="menu_1.1.14.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/howto-multi.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/bugzilla-patch/howto-bugzilla-patch.html">With Images</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-pdf-tab.html">Create tab PDF</a>
+</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_60/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../skin/')" id="menu_1.1.16Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.16.1', '../skin/')" id="menu_1.1.16.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.16.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.16.2', '../skin/')" id="menu_1.1.16.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.16.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>
+<div id="credit">
+<hr>
+ This is documentation for past version v0.6
+ (<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="skin-package.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>Skin packaging, provision, and use</h1>
+<h3>Automated distributed skin packages</h3>
+<div id="motd-area">
+ This is documentation for past version v0.6
+ (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#overview">Overview</a>
+</li>
+<li>
+<a href="#notes">Notes</a>
+</li>
+</ul>
+</div>
+
+<a name="N10010"></a><a name="overview"></a>
+<h2 class="underlined_10">Overview</h2>
+<div class="section">
+<p>
+Skins are standard zip archives with a *.zip extension.
+This enables them to be unpacked and installed automatically.
+ </p>
+<p>
+To publish a skin:
+ </p>
+<pre class="code">
+1 - forrest package-skin
+The skin package will be made in the skin dir, next to the custom skin.
+2 - place the file in a directory on a web server
+3 - ask forrest-dev to add the url and the skin name to the list of skins
+</pre>
+<p>
+To use a custom skin with automatic download:
+ </p>
+<pre class="code">
+1 - set the skin property in forrest.properties to the name of the skin
+2 - forrest install-skin
+3 - forrest
+</pre>
+<p>
+Currently there are two test skins: "testskin" and "testskin2"
+ </p>
+<p>
+To see the names of the remote skins:
+ </p>
+<pre class="code">forrest available-skins</pre>
+</div>
+
+
+<a name="N10032"></a><a name="notes"></a>
+<h2 class="underlined_10">Notes</h2>
+<div class="section">
+<p>
+The skin will get blown away by the next 'build clean' in forrest.
+But that is okay because it is so quick to go get another copy. Also it
+may be preferable to get a fresh copy. If the user wanted to keep
+the skin and perhaps enhance it, then they can copy it to their project.
+ </p>
+</div>
+
+</div>
+<div class="clearboth"> </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 ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_60/skin-package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_60/skin-package.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/skin-package.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_60/skin-package.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_60/skins.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/skins.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_60/skins.html (added)
+++ forrest/site/docs_0_60/skins.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,354 @@
+<!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>Default skins (v0.6)</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> > <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">
+ <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">
+
+
+ </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.60</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs_0_60/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/upgrading_06.html">Upgrading to 0.6</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/searching.html">Searching</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Default Skins</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14', '../skin/')" id="menu_1.1.14Title" class="menutitle">How-To</div>
+<div id="menu_1.1.14" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Single Page</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.3', '../skin/')" id="menu_1.1.14.3Title" class="menutitle">Multi-Page</div>
+<div id="menu_1.1.14.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/howto-multi.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/bugzilla-patch/howto-bugzilla-patch.html">With Images</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-pdf-tab.html">Create tab PDF</a>
+</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_60/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../skin/')" id="menu_1.1.16Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.16.1', '../skin/')" id="menu_1.1.16.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.16.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.16.2', '../skin/')" id="menu_1.1.16.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.16.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>
+<div id="credit">
+<hr>
+ This is documentation for past version v0.6
+ (<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="skins.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>Default skins</h1>
+<div id="motd-area">
+ This is documentation for past version v0.6
+ (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#introduction">Introduction</a>
+</li>
+<li>
+<a href="#names">Convention for choosing skin names</a>
+</li>
+<li>
+<a href="#skins">Skin descriptions</a>
+<ul class="minitoc">
+<li>
+<a href="#pelt">pelt</a>
+</li>
+<li>
+<a href="#leather-dev">leather-dev</a>
+</li>
+<li>
+<a href="#tigris">tigris</a>
+</li>
+<li>
+<a href="#plain-dev">plain-dev</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#old">Old and deprecated skins</a>
+<ul class="minitoc">
+<li>
+<a href="#forrest-site">forrest-site</a>
+</li>
+<li>
+<a href="#krysalis-site">krysalis-site</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+
+<a name="N1000D"></a><a name="introduction"></a>
+<h2 class="underlined_10">Introduction</h2>
+<div class="section">
+<p>
+ Forrest supplies a collection of default skins which are configurable
+ and so should meet the needs of most projects. The aim is to provide
+ many capabilities so that extra skins are not needed.
+ </p>
+</div>
+
+
+<a name="N10017"></a><a name="names"></a>
+<h2 class="underlined_10">Convention for choosing skin names</h2>
+<div class="section">
+<p>
+ The skin names are based on playing with the word "skin". See our
+ technique for
+ <a href="http://svn.apache.org/repos/asf/forrest/trunk/src/core/context/skins/new-skin-names.txt">choosing skin names</a>.
+ A name with "-dev" extension signifies that it is under development.
+ There is no concept of versions of default skins.
+ New skins have new names.
+ </p>
+</div>
+
+
+<a name="N10025"></a><a name="skins"></a>
+<h2 class="underlined_10">Skin descriptions</h2>
+<div class="section">
+<a name="N1002B"></a><a name="pelt"></a>
+<h3 class="underlined_5">pelt</h3>
+<p>
+ Uses CSS "div" and no HTML tables.
+ During its earlier development, this skin used to be called "css-style-dev".
+ </p>
+<a name="N10035"></a><a name="leather-dev"></a>
+<h3 class="underlined_5">leather-dev</h3>
+<p>
+ This is the evolution of the "pelt" skin, to have naming
+ conventions for css elements. It is still in development.
+ </p>
+<a name="N1003F"></a><a name="tigris"></a>
+<h3 class="underlined_5">tigris</h3>
+<p>
+ This skin is based on version 1.1 of the
+ <a href="http://style.tigris.org/">style.tigris.org</a> project.
+ (It deliberately contravenes our skin naming convention.)
+ </p>
+<a name="N1004D"></a><a name="plain-dev"></a>
+<h3 class="underlined_5">plain-dev</h3>
+<p>
+ This is a very minimal skin to produce plain HTML documents.
+ Such capability might be useful to generate a collection of
+ documents for some off-line product's user help system.
+ </p>
+</div>
+
+
+<a name="N10058"></a><a name="old"></a>
+<h2 class="underlined_10">Old and deprecated skins</h2>
+<div class="section">
+<p>
+ The following skins are retained for a little while longer, but are
+ deprecated, so please move to one of the other skins.
+ </p>
+<a name="N10061"></a><a name="forrest-site"></a>
+<h3 class="underlined_5">forrest-site</h3>
+<p>
+ This is the old skin that we have been dragging around since early
+ days. Uses HTML tables.
+ </p>
+<a name="N1006B"></a><a name="krysalis-site"></a>
+<h3 class="underlined_5">krysalis-site</h3>
+<p>
+ Uses HTML tables.
+ </p>
+</div>
+
+</div>
+<div class="clearboth"> </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 ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_60/skins.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_60/skins.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/skins.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_60/skins.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_60/todo.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_60/todo.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_60/todo.html (added)
+++ forrest/site/docs_0_60/todo.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,401 @@
+<!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>Todo List (v0.6)</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> > <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">
+ <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">
+
+
+ </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.60</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../docs_0_60/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/changes.html">Changes</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Todo</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/upgrading_06.html">Upgrading to 0.6</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14', '../skin/')" id="menu_1.1.14Title" class="menutitle">How-To</div>
+<div id="menu_1.1.14" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Single Page</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.14.3', '../skin/')" id="menu_1.1.14.3Title" class="menutitle">Multi-Page</div>
+<div id="menu_1.1.14.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/howto-multi.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/bugzilla-patch/howto-bugzilla-patch.html">With Images</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/howto/howto-pdf-tab.html">Create tab PDF</a>
+</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_60/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../docs_0_60/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../skin/')" id="menu_1.1.16Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.16.1', '../skin/')" id="menu_1.1.16.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.16.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.16.2', '../skin/')" id="menu_1.1.16.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.16.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>
+<div id="credit">
+<hr>
+ This is documentation for past version v0.6
+ (<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="todo.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>Todo List</h1>
+<div id="motd-area">
+ This is documentation for past version v0.6
+ (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#high">high</a>
+</li>
+<li>
+<a href="#medium">medium</a>
+</li>
+<li>
+<a href="#low">low</a>
+</li>
+</ul>
+</div>
+
+<a name="N10008"></a><a name="high"></a>
+<h2 class="underlined_10">high</h2>
+<div class="section">
+<ul>
+<li>
+<strong>[code]</strong>
+
+ Please see our Jira
+ <a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=12310000">issue tracker</a> for tasks to be done.
+ Note that the Todo list below is old. We need someone to move those
+ tasks over to the issue tracker.
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Rework the menu generation system to make it more flexible. See thread
+ <a href="http://marc.theaimsgroup.com/?w=2&r=1&s=Fixing+menus&q=t">Fixing
+ menus</a>
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Define an 'object model' for Forrest sites, in the form of a Cocoon
+ pipeline, that defines
+ - The directory structure of a site
+ - Site metadata (what currently lives in skinconf.xml + gump.xml
+ stuff)
+ - Perhaps site.xml metadata for pages?
+
+ This info can then be made public to the sitemap (via XMLFileModule
+ attributes) and the stylesheets (through
+ <span class="codefrag">document(cocoon:/...)</span> calls or inlined with source XML).
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Finalise the project-definition DTDs, like status.xml and module.xml;
+ try to come up with a common format with others on community.at.apache.org.
+ → NKB</li>
+</ul>
+</div>
+
+
+<a name="N1002B"></a><a name="medium"></a>
+<h2 class="underlined_10">medium</h2>
+<div class="section">
+<ul>
+<li>
+<strong>[code]</strong>
+ Finish the RSS feed for status.xml.
+ Aggregate status.xml and project.xml to have all needed project data.
+ → NKB</li>
+<li>
+<strong>[docs]</strong>
+ Add stylesheets to render the enhanced status.xml file contents.
+ → open</li>
+<li>
+<strong>[code]</strong>
+ In skinconf.xml, change 'disable-search' to 'enable-search'.
+ → JT</li>
+<li>
+<strong>[code]</strong>
+ Enhance the initial forrest toolbar for Mozilla.
+ See email discussion <a href="http://marc.theaimsgroup.com/?l=forrest-dev&m=102471820523388">draft forrest toolbar for Mozilla</a>.
+ → NKB</li>
+<li>
+<strong>[code]</strong>
+ Fix things so docs can be edited in src/*, and have the changes appear
+ immediately in the webapp. Involves creating/using an InputModule for
+ passing 'forrest.skin' and other properties to the sitemap, so we can
+ avoid the @skin@ hack, and a bit of forrest.build.xml hacking. There
+ are some @tokens@ in a forrest-site CSS file that also need some sort
+ of in-place modification. Perhaps a @token@-to-value Transformer could
+ be the same ${variable}-to-value Transformer mentioned in the RT [3].
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Act on <a href="http://marc.theaimsgroup.com/?t=104099660500001&r=1&w=2">'Entities in XML docs' RT</a>.
+ I can implement Stefano's
+ suggested solution quite easily, but is such limited functionality
+ worth the cost of introducing a proprietary ${variable} syntax? Maybe..
+ Best short-term alternative seems to be using the XNI XInclude
+ processor for pre-validation inclusion.
+ → open</li>
+<li>
+<strong>[docs]</strong>
+ A lot of the info on the website is outdated.
+ → open</li>
+<li>
+<strong>[docs]</strong>
+ Using metadata
+ from site.xml, it would at least be possible to indicate how old the
+ doc is, and perhaps indicate its relevance from a small controlled
+ vocabulary.
+ → open</li>
+<li>
+<strong>[design]</strong>
+ Develop a mechanism for supporting legacy URLs.
+ See email discussion -
+ <a href="http://marc.theaimsgroup.com/?l=forrest-dev&m=102390892524750">redirects with static sites</a>
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Fix up and integrate the Forrest Maven plugin.
+ → open</li>
+</ul>
+</div>
+
+
+<a name="N10065"></a><a name="low"></a>
+<h2 class="underlined_10">low</h2>
+<div class="section">
+<ul>
+<li>
+<strong>[code]</strong>
+ Ensure that PHP-like stuff can be embedded easily in Forrest files and
+ document it.
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Continue the development of the <a href="../docs_0_70/libre-intro.html">Libre</a> facility - replacement for
+ */book.xml
+ → open</li>
+<li>
+<strong>[docs]</strong>
+ Start a community doc where we list tools such as "code".
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Migrate to a decent schema language, primarily so that we can use
+ namespaces in XML docs, allowing things like XInclude,
+ <a href="http://www.xml.com/pub/a/2002/10/30/rdf-friendly.html">in-line metadata</a>,
+ in-line SVG, Jelly snippets, or anything else users can make a
+ Transformer for.
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Streamline the process of adding support for new schemas. Ideally we'd
+ have an auto-download system, e.g. 'forrest-update docbook' would fetch
+ and install the Docbook DTDs, create catalog entries, sitemap mods etc.
+ → open</li>
+<li>
+<strong>[code]</strong>
+ Make a CSS Generator and a stylesheet to serialize it to text.
+ → NKB</li>
+<li>
+<strong>[docs]</strong>
+ Add a document about authoring in XML for beginners..
+ → open</li>
+</ul>
+</div>
+
+</div>
+<div class="clearboth"> </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 ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_60/todo.html
------------------------------------------------------------------------------
svn:eol-style = native