aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorNicola Ken Barozzi <nicolaken@apache.org>2002-04-03 18:20:20 +0000
committerNicola Ken Barozzi <nicolaken@apache.org>2002-04-03 18:20:20 +0000
commit58fbe4285501ee9661e7b88273adb28ce9461fc1 (patch)
tree94fe240a4b1b99411060f3b824be31e178e948ce /tools
parent179bb88f2e39074bce8110254a96d5da5ad0d53b (diff)
downloadpoi-58fbe4285501ee9661e7b88273adb28ce9461fc1.tar.gz
poi-58fbe4285501ee9661e7b88273adb28ce9461fc1.zip
Update of Krysalis Centipede build system to version 1.0-dev
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352314 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tools')
-rw-r--r--tools/cents/forrest.cent/conf/cocoon.xconf657
-rw-r--r--tools/cents/forrest.cent/conf/sitemap.xmap263
-rw-r--r--tools/cents/forrest.cent/lib/avalon-excalibur-4.1.jarbin0 -> 196490 bytes
-rw-r--r--tools/cents/forrest.cent/lib/avalon-framework-4.1.2.jarbin0 -> 47564 bytes
-rw-r--r--tools/cents/forrest.cent/lib/avalon-scratchpad-20020212.jarbin0 -> 242984 bytes
-rw-r--r--tools/cents/forrest.cent/lib/batik-libs-1.1.1.jarbin0 -> 2028870 bytes
-rw-r--r--tools/cents/forrest.cent/lib/cocoon-scratchpad-part.jarbin0 -> 153263 bytes
-rw-r--r--tools/cents/forrest.cent/lib/cocoon.jarbin0 -> 728087 bytes
-rw-r--r--tools/cents/forrest.cent/lib/commons-collections-1.0.jarbin0 -> 58798 bytes
-rw-r--r--tools/cents/forrest.cent/lib/commons-httpclient-20011012.jarbin0 -> 64553 bytes
-rw-r--r--tools/cents/forrest.cent/lib/jakarta-regexp-1.2.jarbin0 -> 29871 bytes
-rw-r--r--tools/cents/forrest.cent/lib/jisp_1_0_2.jarbin0 -> 17592 bytes
-rw-r--r--tools/cents/forrest.cent/lib/logkit-1.0.1.jarbin0 -> 72150 bytes
-rw-r--r--tools/cents/forrest.cent/lib/resolver-20020130.jarbin0 -> 50905 bytes
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/changes2document.xsl58
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/copyover.xsl13
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/doclist.xsl15
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/doclist2document.xsl85
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/faq2document.xsl50
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/filterlinks.xsl42
-rw-r--r--tools/cents/forrest.cent/resources/library/xslt/todo2document.xsl33
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/CatalogManager.properties50
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/README22
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/catalog34
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/catalog.xcat35
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/book-cocoon-v10.dtd70
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/changes-v11.dtd93
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/document-v11.dtd541
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/faq-v11.dtd76
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/javadoc-v04draft.dtd254
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/project.dtd48
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/specification-v11.dtd92
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/todo-v11.dtd93
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/dtd/xgump.dtd111
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOdia.pen34
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOgrk1.pen74
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOlat1.pen79
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOnum.pen109
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOpub.pen110
-rw-r--r--tools/cents/forrest.cent/resources/resources/schema/entity/ISOtech.pen85
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/images/ant_logo_medium.gifbin0 -> 807 bytes
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/images/built-with-cocoon.gifbin0 -> 2252 bytes
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/images/favicon.icobin0 -> 766 bytes
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/images/krysalis-compatible.jpgbin0 -> 2093 bytes
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/book2menu.xsl29
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/document2html.xsl258
-rw-r--r--tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/site2xhtml.xsl87
-rw-r--r--tools/cents/forrest.cent/tasks.properties1
-rw-r--r--tools/cents/forrest.cent/xbuild.xml125
-rw-r--r--tools/cents/jtidy.cent/tasks.properties1
-rw-r--r--tools/cents/junit.cent/tasks.properties2
-rw-r--r--tools/cents/junit.cent/xbuild.xml118
52 files changed, 3847 insertions, 0 deletions
diff --git a/tools/cents/forrest.cent/conf/cocoon.xconf b/tools/cents/forrest.cent/conf/cocoon.xconf
new file mode 100644
index 0000000000..3d8668494a
--- /dev/null
+++ b/tools/cents/forrest.cent/conf/cocoon.xconf
@@ -0,0 +1,657 @@
+<?xml version="1.0"?>
+<cocoon version="2.0">
+
+<tree-processor>
+ <!-- The sitemap language -->
+ <language name="sitemap" class="org.apache.cocoon.treeprocessor.sitemap.SitemapLanguage">
+
+ <!-- Namespace for this language -->
+ <namespace uri="http://apache.org/cocoon/sitemap/1.0"/>
+
+ <!-- File name for files in this language, relative to the environment prefix -->
+ <file name="sitemap.xmap"/>
+
+ <!-- Description of the element for nodes parameters -->
+ <parameter element="parameter"/>
+
+ <!-- roles for the sitemap language -->
+ <roles>
+ <role name="org.apache.cocoon.acting.ActionSelector"
+ shorthand="actions"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
+
+ <role name="org.apache.cocoon.selection.SelectorSelector"
+ shorthand="selectors"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
+
+ <role name="org.apache.cocoon.matching.MatcherSelector"
+ shorthand="matchers"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
+
+ <hint shorthand="regexp-uri-matcher"
+ class="org.apache.cocoon.matching.RegexpURIMatcher"/>
+
+ <hint shorthand="wildcard-uri-matcher"
+ class="org.apache.cocoon.matching.WildcardURIMatcher"/>
+
+ </role>
+
+ <role name="org.apache.cocoon.generation.GeneratorSelector"
+ shorthand="generators"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
+
+ <hint shorthand="file-generator"
+ class="org.apache.cocoon.generation.FileGenerator"/>
+
+ <hint shorthand="XSP-generator"
+ class="org.apache.cocoon.generation.ServerPagesGenerator"/>
+ </role>
+
+ <role name="org.apache.cocoon.transformation.TransformerSelector"
+ shorthand="transformers"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector">
+
+ <hint shorthand="XSLT-transformer"
+ class="org.apache.cocoon.transformation.TraxTransformer"/>
+
+ <hint shorthand="cinclude-transformer"
+ class="org.apache.cocoon.transformation.CIncludeTransformer"/>
+
+ </role>
+
+ <role name="org.apache.cocoon.serialization.SerializerSelector"
+ shorthand="serializers"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
+
+ <role name="org.apache.cocoon.reading.ReaderSelector"
+ shorthand="readers"
+ default-class="org.apache.cocoon.treeprocessor.sitemap.ComponentsSelector"/>
+
+ <role name="org.apache.cocoon.components.notification.NotifyingBuilder"
+ shorthand="notifying-builder"
+ default-class="org.apache.cocoon.components.notification.DefaultNotifyingBuilder"/>
+
+ </roles>
+
+ <!-- node definitions for the sitemap language -->
+ <nodes>
+ <!-- All node names are given as local names in the above namespace (no prefix) -->
+
+ <!-- Sitemap root node -->
+ <node name="sitemap" builder="org.apache.cocoon.treeprocessor.sitemap.SitemapNodeBuilder">
+ <allowed-children>components, views, action-sets, resources, pipelines</allowed-children>
+ </node>
+
+ <!-- Components definition : parse view info associated to components
+ (actual components creation is done by SitemapLanguage) -->
+ <node name="components"
+builder="org.apache.cocoon.treeprocessor.sitemap.ComponentsNodeBuilder"/>
+
+ <node name="pipelines"
+builder="org.apache.cocoon.treeprocessor.sitemap.PipelinesNodeBuilder">
+ <allowed-children>pipeline</allowed-children>
+ </node>
+
+ <node name="views" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
+ <node name="view" builder="org.apache.cocoon.treeprocessor.sitemap.ViewNodeBuilder"/>
+ <node name="resources" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
+ <node name="resource" builder="org.apache.cocoon.treeprocessor.NamedContainerNodeBuilder"/>
+ <node name="action-sets" builder="org.apache.cocoon.treeprocessor.CategoryNodeBuilder"/>
+ <node name="action-set"
+builder="org.apache.cocoon.treeprocessor.sitemap.ActionSetNodeBuilder"/>
+ <node name="pipeline" builder="org.apache.cocoon.treeprocessor.sitemap.PipelineNodeBuilder">
+ <forbidden-children>sitemap, components, pipelines</forbidden-children>
+ </node>
+ <node name="match" builder="org.apache.cocoon.treeprocessor.sitemap.MatchNodeBuilder">
+ <forbidden-children>sitemap, components, pipeline, handle-errors</forbidden-children>
+ </node>
+ <node name="select" builder="org.apache.cocoon.treeprocessor.sitemap.SelectNodeBuilder"/>
+
+ <node name="act" builder="org.apache.cocoon.treeprocessor.sitemap.ActNodeBuilder">
+ <forbidden-children>sitemap, components, pipeline, handle-errors</forbidden-children>
+ </node>
+ <node name="redirect-to"
+builder="org.apache.cocoon.treeprocessor.sitemap.RedirectToNodeBuilder"/>
+ <node name="call" builder="org.apache.cocoon.treeprocessor.sitemap.CallNodeBuilder"/>
+ <node name="mount" builder="org.apache.cocoon.treeprocessor.sitemap.MountNodeBuilder"/>
+ <node name="read" builder="org.apache.cocoon.treeprocessor.sitemap.ReadNodeBuilder"/>
+ <node name="aggregate"
+builder="org.apache.cocoon.treeprocessor.sitemap.AggregateNodeBuilder"/>
+ <node name="generate" builder="org.apache.cocoon.treeprocessor.sitemap.GenerateNodeBuilder"/>
+ <node name="transform"
+builder="org.apache.cocoon.treeprocessor.sitemap.TransformNodeBuilder"/>
+ <node name="serialize"
+builder="org.apache.cocoon.treeprocessor.sitemap.SerializeNodeBuilder"/>
+ <node name="handle-errors"
+builder="org.apache.cocoon.treeprocessor.sitemap.HandleErrorsNodeBuilder"/>
+
+ </nodes>
+
+ </language>
+
+</tree-processor>
+
+ <!-- Source Handler:
+ The source handler adds special url protocols to the system, they are
+ then available inside Cocoon, e.g. as a source argument for one of the
+ sitemap components.
+ -->
+ <source-handler logger="core.source-handler">
+ <!-- file protocol : this is a WriteableSource -->
+ <protocol name="file" class="org.apache.cocoon.components.source.FileSourceFactory"/>
+ </source-handler>
+
+ <!-- Entity resolution catalogs: *********************************************
+ catalog:
+ The default catalog is distributed at /resources/schema/catalog
+ This is the contextual pathname for Cocoon resources.
+ You can override this path, if necessary, using the "catalog" parameter.
+ <parameter name="catalog" value="/resources/schema/catalog"/>
+ However, it is probably desirable to leave this default catalog config
+ and declare your own local catalogs, which are loaded in addition to
+ the system catalog.
+
+ There are various ways to do local configuration (see "Entity Catalogs"
+ documentation). One way is via the CatalogManager.properties file.
+ As an additional method, you can specify the "local-catalog" parameter here.
+
+ local-catalog:
+ The full filesystem pathname to a single local catalog file.
+ <parameter name="local-catalog" value="/usr/local/sgml/mycatalog"/>
+
+ verbosity:
+ The level of messages for status/debug (messages go to standard output)
+ The following messages are provided ...
+ 0 = none
+ 1 = ? (... not sure yet)
+ 2 = 1+, Loading catalog, Resolved public, Resolved system
+ 3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
+ 10 = 3+, List all catalog entries when loading a catalog
+ (Cocoon also logs the "Resolved public" messages.)
+ TODO: determine all messages at each level
+ <parameter name="verbosity" value="2"/>
+
+ ************************************************************************** -->
+ <entity-resolver class="org.apache.cocoon.components.resolver.ResolverImpl"
+ logger="core.resolver">
+ <parameter name="catalog" value="/resources/schema/catalog"/>
+ <parameter name="verbosity" value="1"/>
+ </entity-resolver>
+
+<!-- ================ Apache Cocoon configuration file ================== -->
+<!-- For full description of the components and their parameters ...
+ - Apache Cocoon User Documentation at /userdocs/
+ - webapp/cocoon.xconf (this file) - describes each core component
+ - each optional component/.../*.xconf - these describe the parameters
+ for each component and are automatically included at build-time.
+
+ The notes that accompany the settings below are intended to be concise.
+-->
+
+<!-- ===================== General Components =========================== -->
+
+ <!-- Parser:
+ The default parser used in Apache Cocoon is
+ org.apache.avalon.excalibur.xml.JaxpParser. Apache Cocoon requires a
+ JAXP 1.1 parser.
+ If you have problems because your servlet environment uses its own
+ parser not conforming to JAXP 1.1 try using the alternative
+ XercesParser instead of the JaxpParser. To activate the XercesParser,
+ change the class attribute to
+ class="org.apache.avalon.excalibur.xml.XercesParser"
+ You will also need to add a system property to your JVM,
+ probably on the startup of your servlet engine like this:
+ -Dorg.apache.avalon.excalibur.xml.Parser=org.apache.avalon.excalibur.xml.XercesParser
+
+ Configuration for the JaxpParser (not the XercesParser!):
+ - validate (boolean, default = false): This parameter causes the parser
+ to be a validating parser.
+ XML validation is only being used for the documentation build.
+ (If you are going to use it elsewhere, then do so with caution.)
+ You really should have validated all of your XML documents already,
+ according to their proper DTD or schema. Do not expect Cocoon to do it.
+ - namespace-prefixes (boolean, default = false) : do we want
+ namespaces declarations also as 'xmlns:' attributes ?
+ Note : setting this to true confuses some XSL processors (e.g. Saxon).
+ - stop-on-warning (boolean, default = true) : should the parser
+ stop parsing if a warning occurs ?
+ - stop-on-recoverable-error (boolean, default = true) : should the parser
+ stop parsing if a recoverable error occurs ?
+ - reuse-parsers (boolean, default = true) : do we want to reuse
+ parsers or create a new parser for each parse ?
+ Note : even if this parameter is true, parsers are not
+ recycled in case of parsing errors : some parsers (e.g. Xerces) don't like
+ to be reused after failure.
+ - sax-parser-factory (string) : the name of the SAXParserFactory
+ implementation class to be used instead of using the standard JAXP mechanism
+ (SAXParserFactory.newInstance()). This allows to choose
+ unambiguously the JAXP implementation to be used when several of them are
+ available in the classpath.
+ - document-builder-factory (string) : the name of the
+ DocumentBuilderFactory implementation to be used (similar to
+ sax-parser-factory for DOM).
+ -->
+ <xml-parser class="org.apache.avalon.excalibur.xml.JaxpParser"
+ logger="core.xml-parser">
+ <parameter name="validate" value="false"/>
+ <parameter name="namespace-prefixes" value="false"/>
+ <parameter name="stop-on-warning" value="true"/>
+ <parameter name="stop-on-recoverable-error" value="true"/>
+ <!--
+ <parameter name="reuse-parsers" value="true"/>
+ <parameter name="sax-parser-factory" value="???"/>
+ <parameter name="document-builder-factory" value="???"/>
+ -->
+ </xml-parser>
+
+ <!-- ============================ STORE ============================ -->
+ <!-- Persistent store for the cache. Two store implementations to choose
+ from:
+ * FilesystemStore: Simple. Dependable. Thorougly tested.
+ * JispFilesystemStore: Scalable. New kid on the block. Not thorougly tested.
+ If you opt in to use JispFilesystemStore, comment out FilesystemStore
+ entry.
+
+ JispFilesystemStore configuration parameters
+ (in addition to common parameters):
+ datafile: name of the store file to use.
+ indexfile: name of the index file to use.
+ order: FIXME: put description here.
+
+ <cache-persistent class="org.apache.cocoon.components.store.JispFilesystemStore"
+ logger="core.store.persistent">
+ <parameter name="use-cache-directory" value="true"/>
+ <parameter name="datafile" value="cocoon-cache.dat"/>
+ <parameter name="indexfile" value="cocoon-cache.idx"/>
+ <parameter name="order" value="1701"/>
+ </cache-persistent>
+
+ <cache-persistent class="org.apache.cocoon.components.store.FilesystemStore"
+ logger="core.store.persistent">
+ <parameter name="use-cache-directory" value="true"/>
+ </cache-persistent>
+ -->
+
+ <cache-persistent class="org.apache.cocoon.components.store.JispFilesystemStore"
+ logger="core.store.persistent">
+ <parameter name="use-cache-directory" value="true"/>
+ <parameter name="datafile" value="cocoon-cache.dat"/>
+ <parameter name="indexfile" value="cocoon-cache.idx"/>
+ <parameter name="order" value="1701"/>
+ </cache-persistent>
+
+ <!-- Memory Storing: -->
+ <cache-transient class="org.apache.cocoon.components.store.MRUMemoryStore"
+ logger="core.store.transient">
+ <!-- Indicates how many objects will be hold in the cache.
+ When the number of maxobjects has been reached. The last object in the
+ cache will be thrown out. -->
+ <parameter name="maxobjects" value="100"/>
+
+ <!-- Turns the swapping of the objects into persistent cache on
+ and off. -->
+ <parameter name="use-persistent-cache" value="true"/>
+ </cache-transient>
+
+ <!-- Store Janitor:
+ Be careful with the heapsize and freememory parameters. Wrong values can
+ cause high cpu usage. Example configuration:
+ Jvm settings:
+ -Xms100000000 -Xmx200000000
+ store-janitor settings:
+ <parameter name="freememory" value="5000000"/>
+ <parameter name="heapsize" value="150000000"/>
+
+ Heapsize *must* be higher then the -Xms parameter and *must* be lower or
+ equal than -Xmx. It is recommended to have heapsize equal to -Xmx, especially
+ on Sun's JVM which are unable to shrink its heap once it grows above minimum.
+ Freememory parameter *must* be lower than -Xms, and should be greater than
+ amount of memory necessary for normal application operation.
+ -->
+ <store-janitor class="org.apache.cocoon.components.store.StoreJanitorImpl"
+ logger="core.store.janitor">
+ <!-- How much free memory shall be available in the jvm -->
+ <parameter name="freememory" value="1000000"/>
+ <!-- Indicates the limit of the jvm memory consumption. The default max
+ heapsize for Sun's JVM is 64Mb -->
+ <parameter name="heapsize" value="67108864"/>
+ <!-- How often shall the cleanup thread check memory -->
+ <parameter name="cleanupthreadinterval" value="10"/>
+ <!-- Indicates the thread priority of the cleanup thread -->
+ <parameter name="threadpriority" value="5"/>
+ <!-- How much percent of the elements of each registered Store shall
+ be removed when low on memory. Default 10% -->
+ <parameter name="percent_to_free" value="10"/>
+ </store-janitor>
+ <!-- ============================ STORE END ========================= -->
+
+ <!-- XSLT Processor:
+ For Xalan: Turn 'incremental-processing' to true if you want a continous output (if set to
+false the transformer
+ delivers SAX events after all transformations has been done). -->
+ <xslt-processor class="org.apache.cocoon.components.xslt.XSLTProcessorImpl"
+ logger="core.xslt-processor">
+ <parameter name="use-store" value="true"/>
+ <parameter name="incremental-processing" value="false"/>
+ </xslt-processor>
+
+ <!-- Xpath Processor:
+ -->
+ <xpath-processor class="org.apache.cocoon.components.xpath.XPathProcessorImpl"
+ logger="core.xpath-processor"/>
+
+ <!-- URL Factory:
+ The url factory adds special url protocols to the system, they are then
+ available inside Cocoon, e.g. as a source argument for one of the sitemap
+ components.
+ -->
+ <url-factory logger="core.url-factory">
+ <!-- Allows access to resources available from the ClassLoader,
+ using getResource() method. -->
+ <protocol name="resource" class="org.apache.cocoon.components.url.ResourceURLFactory"/>
+ <!-- Allows access to resources available from the servlet context,
+ using getResource() method. -->
+ <protocol name="context" class="org.apache.cocoon.components.url.ContextURLFactory"/>
+ <!-- Add here protocol factories for your own protocols -->
+ </url-factory>
+
+ <!-- Program Generator:
+ The ProgamGenerator builds programs from a XML document written in a
+ MarkupLanguage.
+ auto-reload:
+ root-package: persistent code repository.
+ preload:
+ -->
+ <program-generator logger="core.program-generator">
+ <parameter name="auto-reload" value="true"/>
+ <parameter name="root-package" value="org.apache.cocoon.www"/>
+ <parameter name="preload" value="true"/>
+ </program-generator>
+
+ <!-- Xscript:
+ -->
+ <xscript logger="core.xscript">
+ <parameter name="xscript:copy-of"
+value="resource://org/apache/cocoon/components/xscript/xslt/copy-of.xsl"/>
+ <parameter name="xscript:value-of"
+value="resource://org/apache/cocoon/components/xscript/xslt/value-of.xsl"/>
+ </xscript>
+
+ <!-- Programming Languages: -->
+ <programming-languages>
+ <java-language name="java" logger="core.language.java">
+ <!-- Compiler parameter specifies which class to use to compile Java.
+ Possible variants are:
+ Javac. Requires javac.jar (included with Cocoon distribution).
+ Pizza. Requires pizza.jar (included with Cocoon distribution).
+ Jikes. Requires IBM jikes compiler to be present in the PATH -->
+ <parameter name="compiler"
+value="org.apache.cocoon.components.language.programming.java.Javac"/>
+ <!-- Specifies which formatter to use to format source code.
+ This parameter is optional.
+ It is commented out because of bug #5689: Java "code-formatter" incorrectly formats
+double values
+ <parameter name="code-formatter"
+value="org.apache.cocoon.components.language.programming.java.JstyleFormatter"/>
+ -->
+ <!-- A singleton-like implementation of a ClassLoader -->
+ <parameter name="class-loader"
+value="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"/>
+ </java-language>
+
+ </programming-languages>
+
+ <!-- Class loader:
+ A singleton-like implementation of a ClassLoader.
+ -->
+ <classloader class="org.apache.cocoon.components.classloader.ClassLoaderManagerImpl"
+ logger="core.classloader"/>
+
+ <!-- Markup Languages:
+ This section defines several builtin logicsheets. A logicsheet is an XML
+ filter used to translate user-defined, dynamic markup into equivalent
+ code embedding directives for a given markup language.
+ -->
+ <markup-languages>
+ <xsp-language name="xsp" logger="core.markup.xsp">
+ <parameter name="prefix" value="xsp"/>
+ <parameter name="uri" value="http://apache.org/xsp"/>
+
+ <!-- Defines the XSP Core logicsheet for the Java language -->
+ <target-language name="java">
+ <parameter name="core-logicsheet"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/xsp.xsl"/>
+
+ <!-- The Request logicsheet (taglib) is an XSP logicsheet that wraps XML tags
+ around standard request operations -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="xsp-request"/>
+ <parameter name="uri" value="http://apache.org/xsp/request/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/request.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The Response logicsheet (taglib) is an XSP logicsheet that wraps XML tags
+ around standard response operations -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="xsp-response"/>
+ <parameter name="uri" value="http://apache.org/xsp/response/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/response.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The Session logicsheet (taglib) is an XSP logicsheet that wraps XML tags around
+ standard session operations. Specifically, the Session logicsheet provides an
+ XML interface to most methods of the HttpSession object (see the Java Servlet API
+ Specification, version 2.2 ) for more information. -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="session"/>
+ <parameter name="uri" value="http://apache.org/xsp/session/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/session.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The Cookie logicsheet (taglib) is an XSP logicsheet that wraps XML tags
+ around standard cookie operations -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="xsp-cookie"/>
+ <parameter name="uri" value="http://apache.org/xsp/cookie/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/cookie.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The ESQL logicsheet is an XSP logicsheet that performs sql queries and
+ serializes their results as XML. This allows you to work with data from a
+ wide variety of different sources when using Apache Cocoon. -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="esql"/>
+ <parameter name="uri" value="http://apache.org/cocoon/SQL/v2"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/esql.xsl"/>
+ </builtin-logicsheet>
+
+ <builtin-logicsheet>
+ <parameter name="prefix" value="log"/>
+ <parameter name="uri" value="http://apache.org/xsp/log/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/log.xsl"/>
+ </builtin-logicsheet>
+
+ <builtin-logicsheet>
+ <parameter name="prefix" value="util"/>
+ <parameter name="uri" value="http://apache.org/xsp/util/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/util.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The xsp-formval taglib serves as interface to retrieve validation results
+ from a request attribute -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="xsp-formval"/>
+ <parameter name="uri" value="http://apache.org/xsp/form-validator/2.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/form-validator.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The sel taglib allows to put multiple pages / view into
+ one xsp. While in general it is good style to put
+ different views into different xsp because they're more
+ easily maintained, this is a useful feature with
+ e.g. with long forms that are broken into parts -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="sel"/>
+ <parameter name="uri" value="http://apache.org/xsp/sel/1.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/sel.xsl"/>
+ </builtin-logicsheet>
+
+ <builtin-logicsheet>
+ <parameter name="prefix" value="action"/>
+ <parameter name="uri" value="http://apache.org/cocoon/action/1.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/action.xsl"/>
+ </builtin-logicsheet>
+
+ <!-- The capture taglib is for capturing parts of the XSP-generated XML as
+ XML fragments or DOM nodes -->
+ <builtin-logicsheet>
+ <parameter name="prefix" value="capture"/>
+ <parameter name="uri" value="http://apache.org/cocoon/capture/1.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/capture.xsl"/>
+ </builtin-logicsheet>
+
+ <builtin-logicsheet>
+ <parameter name="prefix" value="xscript"/>
+ <parameter name="uri" value="http://apache.org/xsp/xscript/1.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/xscript.xsl"/>
+ </builtin-logicsheet>
+
+ <builtin-logicsheet>
+ <parameter name="prefix" value="soap"/>
+ <parameter name="uri" value="http://apache.org/xsp/soap/3.0"/>
+ <parameter name="href"
+value="resource://org/apache/cocoon/components/language/markup/xsp/java/soap.xsl"/>
+ </builtin-logicsheet>
+
+ </target-language>
+
+ </xsp-language>
+
+ <!-- Defines Sitemap Core logicsheet for the Java language -->
+ <sitemap-language name="sitemap" logger="core.markup.sitemap">
+ <parameter name="prefix" value="map"/>
+ <parameter name="uri" value="http://apache.org/cocoon/sitemap/1.0"/>
+
+ <target-language name="java">
+ <parameter name="core-logicsheet"
+value="resource://org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl"/>
+ </target-language>
+ </sitemap-language>
+ </markup-languages>
+
+ <!-- Datasources example:
+ <datasources>
+ <jdbc name="personnel" logger="core.datasources.personnel">
+ <pool-controller min="5" max="10" oradb="true"/>
+ <pool-controller min="5" max="10"/>
+ <auto-commit>false</auto-commit>
+ <dburl>jdbc:hsqldb:hsql://localhost:9002</dburl>
+ <user>sa</user>
+ <password></password>
+ </jdbc>
+ </datasources>
+ -->
+
+ <!-- Stream Pipeline:
+ Either collects a Reader and lets it produce a character stream
+ or connects an EventPipeline with a Serializer and lets them produce
+ the character stream. Alternatives to CachingStreamPipeline are:
+ <stream-pipeline class="org.apache.cocoon.components.pipeline.NonCachingStreamPipeline"/>
+ -->
+ <stream-pipeline class="org.apache.cocoon.components.pipeline.CachingStreamPipeline"
+ logger="core.stream-pipeline"
+ pool-max="32" pool-min="2" pool-grow="4"/>
+
+ <!-- Event Pipeline:
+ Connects the generator and the various transformers and produces a
+ character stream. Alternatives to CachingEventPipeline are:
+ <event-pipeline class="org.apache.cocoon.components.pipeline.NonCachingEventPipeline"/>
+ <event-pipeline class="org.apache.cocoon.components.profiler.ProfilingCachingEventPipeline"/>
+ <event-pipeline
+class="org.apache.cocoon.components.profiler.ProfilingNonCachingEventPipeline"/>
+ -->
+ <event-pipeline class="org.apache.cocoon.components.pipeline.CachingEventPipeline"
+ logger="core.event-pipeline"
+ pool-max="32" pool-min="2" pool-grow="4"/>
+
+ <!-- Compiling xml to byte streams.
+ The xml-serializer "compiles" xml sax events into a byte stream
+ and the xml-deserializer does the same vice versa.
+ Make sure, that if you change one of these components, that you
+ may have to change the other one as well, as they might have
+ a dependency.
+ -->
+ <xml-serializer class="org.apache.cocoon.components.sax.XMLByteStreamCompiler"
+ logger="core.xml-serializer"/>
+
+ <xml-deserializer class="org.apache.cocoon.components.sax.XMLByteStreamInterpreter"
+ logger="core.xml-deserializer"/>
+
+ <!-- SAXConnector:
+ Connects the various pipeline components.
+ LoggingSAXConnector logs SAX events between pipeline components
+ into cocoon's log file.
+ ProfilingSAXConnector gathers timing information.
+ Uncomment one of the following lines for using the SAXConnector.
+ <sax-connector class="org.apache.cocoon.components.saxconnector.LoggingSAXConnector"/>
+ <sax-connector class="org.apache.cocoon.components.profiler.ProfilingSAXConnector"/>
+ -->
+
+ <!-- Profiler:
+ The profiler facilitates the gathering of statistics about timings of
+ different steps of pipelines. Profiler consists of several components:
+ profiling pipeline, profiling SAX connector, and profiler generator
+ which are used to generate the profile report. You need to enable all of
+ these components to use profiler.
+
+ Uncomment the following line to use profiler.
+ <profiler/>
+ -->
+
+ <!-- Resource Monitor:
+ The Monitor keeps track on changes to a Resource.
+ <monitor logger="core.monitor">
+ <thread priority="5" frequency="10000"/>
+ </monitor>
+ -->
+
+<!-- ======================== The sitemap ============================== -->
+
+ <!-- Reloading of the sitemap:
+ The check-reload attribute determines if the sitemap is reloaded on change.
+ Set to "no", the sitemap is generated once at startup.
+ Set to "yes", the sitemap is regenerated if it changes.
+
+ The reload-method specifies the method for the regeneration:
+ asynchron: If the sitemap changes, the sitemap is regenerated at the
+ next request in the background and the incoming request is
+ served with the old sitemap. All subsequent requests are
+ served with the old sitemap until the regeneration in the
+ background has finished.
+ synchron: If the sitemap changes, the sitemap is regenerated at the
+ next request. When the regeneration is finished, the request
+ (and all subsequent ones) is served with the new sitemap.
+
+ For development environment, set the reload-method to synchron and the
+ check-reload to yes.
+ For production environment, it is advisable to set the reload-method to
+ asynchron and for more safety the check-reload to no.
+
+ <sitemap file="sitemap.xmap" reload-method="asynchron" check-reload="yes" logger="sitemap"/>
+ -->
+
+ <sitemap class="org.apache.cocoon.treeprocessor.TreeProcessor" logger="sitemap"/>
+
+</cocoon>
diff --git a/tools/cents/forrest.cent/conf/sitemap.xmap b/tools/cents/forrest.cent/conf/sitemap.xmap
new file mode 100644
index 0000000000..f432140ecc
--- /dev/null
+++ b/tools/cents/forrest.cent/conf/sitemap.xmap
@@ -0,0 +1,263 @@
+<?xml version="1.0"?>
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+<!-- =========================== Components ================================ -->
+
+ <map:components>
+
+ <map:generators default="file">
+ <map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content"/>
+ <!-- FIXME: Change this once better view handling is implemented -->
+ <map:generator name="file-nolabel" src="org.apache.cocoon.generation.FileGenerator"/>
+ </map:generators>
+
+ <map:transformers default="xslt">
+ <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer">
+ <use-request-parameters>false</use-request-parameters>
+ <use-browser-capabilities-db>false</use-browser-capabilities-db>
+ </map:transformer>
+ </map:transformers>
+
+ <map:readers default="resource">
+ <map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/>
+ </map:readers>
+
+ <map:serializers default="html">
+ <map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer">
+ <encoding>iso8859-1</encoding>
+ </map:serializer>
+
+ <map:serializer name="html-loose" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer">
+ <doctype-public>-//CollabNet//DTD XHTML 1.0 Transitional//EN</doctype-public>
+ <doctype-system>http://collabnet.com/dtds/collabnet_transitional_10.dtd</doctype-system>
+ <encoding>iso8859-1</encoding>
+ <omit-xml-declaration>yes</omit-xml-declaration>
+ </map:serializer>
+
+ <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
+ <encoding>iso8859-1</encoding>
+ </map:serializer>
+ <map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer">
+ <encoding>iso8859-1</encoding>
+ </map:serializer>
+ <map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer">
+ <parameter name="quality" type="float" value="1.0"/>
+ </map:serializer>
+ <map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer"/>
+ </map:serializers>
+
+ <map:matchers default="wildcard">
+ <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
+ </map:matchers>
+
+ <map:selectors default="skin-parameter">
+ <map:selector name="request-parameter" logger="sitemap.selector.request-parameter"
+ src="org.apache.cocoon.selection.RequestParameterSelector">
+ <parameter-name>skin</parameter-name>
+ </map:selector>
+ <map:selector name="style-parameter" logger="sitemap.selector.request-parameter"
+ src="org.apache.cocoon.selection.RequestParameterSelector">
+ <parameter-name>style</parameter-name>
+ </map:selector>
+
+ </map:selectors>
+ </map:components>
+
+<!-- =========================== Views =================================== -->
+
+ <map:views>
+ <map:view name="content" from-label="content">
+ <map:serialize type="xml"/>
+ </map:view>
+
+ <map:view name="links" from-position="last">
+ <map:transform src="library/xslt/filterlinks.xsl"/>
+ <map:serialize type="links"/>
+ </map:view>
+ </map:views>
+
+ <map:resources>
+ <map:resource name="skinit">
+ <map:transform src="skins/@skin@/xslt/html/{type}.xsl"/>
+ <map:serialize/>
+ </map:resource>
+
+ <map:resource name="skin-style">
+ <map:read src="skins/@skin@/{path}" mime-type="{mime-type}"/>
+ </map:resource>
+
+ <map:resource name="skin-res">
+ <map:read src="skins/@skin@/{path}" mime-type="{mime-type}"/>
+ </map:resource>
+ </map:resources>
+
+<!-- =========================== Pipelines ================================= -->
+
+ <map:pipelines>
+
+ <map:pipeline>
+
+ <map:match pattern="">
+ <map:redirect-to uri="index.html"/>
+ </map:match>
+
+ <!--
+
+ <map:pipeline>
+ <map:match pattern="">
+ <map:redirect-to uri="page3333.html"/>
+ </map:match>
+
+ <map:match pattern="*[*].html">
+ <map:aggregate element="site" label="content">
+ <map:part src="site.xml" />
+ <map:part src="index.xml"/>
+ <map:part src="{1}.xml" element="book"/>
+ </map:aggregate>
+ <map:transform src="site2html.xsl">
+ <map:parameter name="page-index" value="{2}"/>
+ <map:parameter name="page-count" value="5"/>
+ <map:parameter name="page-name" value="{1}"/>
+ </map:transform>
+ <map:serialize/>
+ </map:match>
+-->
+
+ <map:match pattern="**book-**.xml">
+ <map:generate src="content/xdocs/{1}book.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="book2menu"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-todo.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/todo.xml"/>
+ <map:transform src="library/xslt/todo2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-changes.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/changes.xml"/>
+ <map:transform src="library/xslt/changes2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-faq.xml">
+ <map:generate type="file-nolabel" src="content/xdocs/faq.xml"/>
+ <map:transform src="library/xslt/faq2document.xsl" label="content"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ </map:call>
+ </map:match>
+
+ <!-- Generate the "doclist" - list of all documentation
+ The first match generates each book.xml and adds a new attribute "uri".
+ The second match aggregates each book.xml into a doclist and
+ then converts it to a document.
+ -->
+ <map:match pattern="doclist/content/xdocs/**book.xml">
+ <map:generate src="content/xdocs/{1}book.xml"/>
+ <map:transform src="library/xslt/doclist.xsl">
+ <map:parameter name="uri" value="{1}"/>
+ </map:transform>
+ <map:serialize type="xml"/>
+ </map:match>
+ <map:match pattern="body-doclist.xml">
+ <map:aggregate element="doclist">
+ <map:part src="cocoon:/doclist/content/xdocs/book.xml"/>
+ </map:aggregate>
+ <map:transform src="library/xslt/doclist2document.xsl"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="body-**.xml">
+ <map:generate src="content/xdocs/{1}.xml"/>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="document2html"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/book-{1}.xml"/>
+ <map:part src="cocoon:/body-{1}.xml" label="content"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**/*.html">
+ <map:aggregate element="site">
+ <map:part src="cocoon:/{1}/book-{1}/{2}.xml"/>
+ <map:part src="cocoon:/body-{1}/{2}.xml" label="content"/>
+ </map:aggregate>
+ <map:call resource="skinit">
+ <map:parameter name="type" value="site2xhtml"/>
+ </map:call>
+ </map:match>
+
+ <!-- ================ Static =========================== -->
+
+ <map:match pattern="common/**.js">
+ <map:read src="resources/scripts/{1}.js" mime-type="application/javascript"/>
+ </map:match>
+
+ <map:match pattern="**.js">
+ <map:read src="resources/css/{1}.css" mime-type="text/css"/>
+ </map:match>
+
+ <map:match pattern="common/**.css">
+ <map:read src="resources/css/{1}.css" mime-type="text/css"/>
+ </map:match>
+
+ <map:match pattern="**.css">
+ <map:call resource="skin-style">
+ <map:parameter name="path" value="css/{1}.css"/>
+ <map:parameter name="mime-type" value="text/css"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="common/images/**.*">
+ <map:read src="resources/images/{1}.{2}" mime-type="image/{2}"/>
+ </map:match>
+
+ <map:match pattern="images/**.gif">
+ <map:call resource="skin-res">
+ <map:parameter name="path" value="images/{1}.gif"/>
+ <map:parameter name="mime-type" value="image/gif"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="images/**.jpg">
+ <map:call resource="skin-res">
+ <map:parameter name="path" value="images/{1}.jpg"/>
+ <map:parameter name="mime-type" value="image/jpeg"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="images/**.png">
+ <map:call resource="skin-res">
+ <map:parameter name="path" value="images/{1}.png"/>
+ <map:parameter name="mime-type" value="image/png"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="**favicon.ico">
+ <map:call resource="skin-res">
+ <map:parameter name="path" value="images/favicon.ico"/>
+ <map:parameter name="mime-type" value="application/ico"/>
+ </map:call>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+
+</map:sitemap>
diff --git a/tools/cents/forrest.cent/lib/avalon-excalibur-4.1.jar b/tools/cents/forrest.cent/lib/avalon-excalibur-4.1.jar
new file mode 100644
index 0000000000..7dcb1a73b2
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/avalon-excalibur-4.1.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/avalon-framework-4.1.2.jar b/tools/cents/forrest.cent/lib/avalon-framework-4.1.2.jar
new file mode 100644
index 0000000000..6a38f1d596
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/avalon-framework-4.1.2.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/avalon-scratchpad-20020212.jar b/tools/cents/forrest.cent/lib/avalon-scratchpad-20020212.jar
new file mode 100644
index 0000000000..f5439a382c
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/avalon-scratchpad-20020212.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/batik-libs-1.1.1.jar b/tools/cents/forrest.cent/lib/batik-libs-1.1.1.jar
new file mode 100644
index 0000000000..3558d15a3c
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/batik-libs-1.1.1.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/cocoon-scratchpad-part.jar b/tools/cents/forrest.cent/lib/cocoon-scratchpad-part.jar
new file mode 100644
index 0000000000..8614814b11
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/cocoon-scratchpad-part.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/cocoon.jar b/tools/cents/forrest.cent/lib/cocoon.jar
new file mode 100644
index 0000000000..2c8780383c
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/cocoon.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/commons-collections-1.0.jar b/tools/cents/forrest.cent/lib/commons-collections-1.0.jar
new file mode 100644
index 0000000000..0b490e0f2e
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/commons-collections-1.0.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/commons-httpclient-20011012.jar b/tools/cents/forrest.cent/lib/commons-httpclient-20011012.jar
new file mode 100644
index 0000000000..cf31c07bfe
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/commons-httpclient-20011012.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/jakarta-regexp-1.2.jar b/tools/cents/forrest.cent/lib/jakarta-regexp-1.2.jar
new file mode 100644
index 0000000000..713441c523
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/jakarta-regexp-1.2.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/jisp_1_0_2.jar b/tools/cents/forrest.cent/lib/jisp_1_0_2.jar
new file mode 100644
index 0000000000..2f4102f919
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/jisp_1_0_2.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/logkit-1.0.1.jar b/tools/cents/forrest.cent/lib/logkit-1.0.1.jar
new file mode 100644
index 0000000000..d3250ee641
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/logkit-1.0.1.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/lib/resolver-20020130.jar b/tools/cents/forrest.cent/lib/resolver-20020130.jar
new file mode 100644
index 0000000000..12e30a318d
--- /dev/null
+++ b/tools/cents/forrest.cent/lib/resolver-20020130.jar
Binary files differ
diff --git a/tools/cents/forrest.cent/resources/library/xslt/changes2document.xsl b/tools/cents/forrest.cent/resources/library/xslt/changes2document.xsl
new file mode 100644
index 0000000000..c706a6f8f2
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/changes2document.xsl
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="copyover.xsl"/>
+
+ <xsl:param name="name"/>
+
+ <xsl:variable name="bugzilla">http://nagoya.apache.org/bugzilla/show_bug.cgi?id=</xsl:variable>
+
+ <xsl:template match="changes">
+ <document>
+ <header>
+ <title><xsl:value-of select="@title"/></title>
+ </header>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="release">
+ <s2 title="{$name} {@version} ({@date})">
+ <sl>
+ <xsl:apply-templates/>
+ </sl>
+ </s2>
+ </xsl:template>
+
+ <xsl:template match="action">
+ <li>
+ <icon src="images/{@type}.jpg" alt="{@type}"/>
+ <xsl:apply-templates/>
+ <xsl:text>(</xsl:text><xsl:value-of select="@dev"/><xsl:text>)</xsl:text>
+
+ <xsl:if test="@due-to">
+ <xsl:text> Thanks to </xsl:text>
+ <link href="mailto:{@due-to-email}"><xsl:value-of select="@due-to"/></link>
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+
+ <xsl:if test="@fixes-bug">
+ <xsl:text> Fixes </xsl:text>
+ <link href="{$bugzilla}{@fixes-bug}">
+ <xsl:text>bug </xsl:text><xsl:value-of select="@fixes-bug"/>
+ </link>
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="devs">
+ <!-- remove -->
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/cents/forrest.cent/resources/library/xslt/copyover.xsl b/tools/cents/forrest.cent/resources/library/xslt/copyover.xsl
new file mode 100644
index 0000000000..5ef559c572
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/copyover.xsl
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:template match="@*|*|text()|processing-instruction()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*|text()|processing-instruction()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/cents/forrest.cent/resources/library/xslt/doclist.xsl b/tools/cents/forrest.cent/resources/library/xslt/doclist.xsl
new file mode 100644
index 0000000000..ecb2465bf2
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/doclist.xsl
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:param name="uri"/>
+
+ <xsl:template match="book">
+ <book title="{@title}" uri="{$uri}">
+ <xsl:copy-of select="node()"/>
+ </book>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/cents/forrest.cent/resources/library/xslt/doclist2document.xsl b/tools/cents/forrest.cent/resources/library/xslt/doclist2document.xsl
new file mode 100644
index 0000000000..4219c63519
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/doclist2document.xsl
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:template match="doclist">
+ <document>
+ <header>
+ <title>List of all documentation</title>
+ </header>
+ <body>
+ <s1 title="Documentation List">
+ <p>
+ This complete list shows, at a glance, how all of the documentation
+ fits together within the hierarchy of sections.
+<!-- For an overview of the documentation see the new
+ &quot;Table of Contents&quot;. -->
+ </p>
+ <p>
+ The side-panel of each actual document is used to reach other documents
+ that are relevant to that section. The side-panel will change, according
+ to that section's location in the documentation hierarchy.
+ </p>
+ </s1>
+ <xsl:apply-templates/>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="book">
+ <s1 title="{@title}">
+ <xsl:if test="position()=1">
+ <p>This first section is a list of the top-level documentation
+ (and is a replica of this page's side-panel).</p>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </s1>
+ </xsl:template>
+
+ <xsl:template match="menu">
+ <xsl:if test="@label!='Navigation'">
+ <p><strong><xsl:value-of select="@label"/></strong></p>
+ <ul>
+ <xsl:apply-templates>
+ <xsl:with-param name="uri" select="../@uri"/>
+ </xsl:apply-templates>
+ </ul>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="menu-item">
+ <xsl:param name="uri"/>
+ <xsl:if test="not(@type) or @type!='hidden'">
+ <xsl:if test="@label!='Main' and @label!='User Documentation'">
+<!-- FIXME: ensure href is not full URL scheme:// -->
+<!--
+ (uri=<xsl:value-of select="$uri"/> href=<xsl:value-of select="@href"/>)
+-->
+ <li><link href="{$uri}{@href}"><xsl:value-of select="@label"/></link>
+ </li>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="external">
+ <xsl:param name="uri"/>
+ <xsl:if test="not(@type) or @type!='hidden'">
+ <xsl:choose>
+ <!-- FIXME: specially handle menu item "API (Javadoc)", it causes a bug. -->
+ <xsl:when test="starts-with(@label,'API')">
+ <li><link href="http://xml.apache.org/cocoon/apidocs/"><xsl:value-of select="@label"/></link></li>
+<!-- FIXME: here is the bug:
+ <li><link href="{@href}"><xsl:value-of select="@label"/></link></li>
+ <li><xsl:value-of select="@label"/>href=<xsl:value-of select="@href"/></li>
+-->
+ </xsl:when>
+ <xsl:otherwise>
+ <li><link href="{@href}"><xsl:value-of select="@label"/></link></li>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/cents/forrest.cent/resources/library/xslt/faq2document.xsl b/tools/cents/forrest.cent/resources/library/xslt/faq2document.xsl
new file mode 100644
index 0000000000..46383760c4
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/faq2document.xsl
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="copyover.xsl"/>
+
+ <xsl:template match="faqs">
+ <document>
+ <header>
+ <title><xsl:value-of select="@title"/></title>
+ </header>
+ <body>
+ <s1 title="Questions">
+ <ul>
+ <xsl:apply-templates select="faq" mode="index"/>
+ </ul>
+ </s1>
+ <s1 title="Answers">
+ <xsl:apply-templates select="faq"/>
+ </s1>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="faq" mode="index">
+ <li>
+ <jump anchor="faq-{position()}">
+ <xsl:value-of select="question"/>
+ </jump>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="faq">
+ <anchor id="faq-{position()}"/>
+ <s2 title="{question}">
+ <xsl:apply-templates/>
+ </s2>
+ </xsl:template>
+
+ <xsl:template match="question">
+ <!-- ignored since already used -->
+ </xsl:template>
+
+ <xsl:template match="answer">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/tools/cents/forrest.cent/resources/library/xslt/filterlinks.xsl b/tools/cents/forrest.cent/resources/library/xslt/filterlinks.xsl
new file mode 100644
index 0000000000..b6b2322dae
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/filterlinks.xsl
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+
+<!--
+This stylesheet filters all references to the javadocs
+and the samples.
+-->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:template match="@src|@href|@background">
+ <xsl:if test="not(contains(.,'apidocs')) and not(starts-with(., 'samples/'))">
+ <xsl:copy>
+ <xsl:apply-templates select="."/>
+ </xsl:copy>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- This is a hack which makes the javascript images work -->
+ <xsl:template match="img[@onLoad and starts-with(@src, 'graphics')]">
+ <img src="{@src}"/>
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="substring-before(@src, '.')"/>_over.<xsl:value-of select="substring-after(@src, '.')"/>
+ </xsl:attribute>
+ </img>
+ </xsl:template>
+
+ <xsl:template match="img[@onLoad and starts-with(@src, 'images') and contains(@src, '-lo.gif')]">
+ <img src="{@src}"/>
+ <img>
+ <xsl:attribute name="src"><xsl:value-of select="substring-before(@src, '-lo.gif')"/>-hi.gif</xsl:attribute>
+ </img>
+ </xsl:template>
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/tools/cents/forrest.cent/resources/library/xslt/todo2document.xsl b/tools/cents/forrest.cent/resources/library/xslt/todo2document.xsl
new file mode 100644
index 0000000000..3c063e07e2
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/library/xslt/todo2document.xsl
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:import href="copyover.xsl"/>
+
+ <xsl:template match="todo">
+ <document>
+ <header>
+ <title><xsl:value-of select="@title"/></title>
+ </header>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </document>
+ </xsl:template>
+
+ <xsl:template match="actions">
+ <s2 title="{@priority}">
+ <sl>
+ <xsl:for-each select="action">
+ <li>
+ <strong><xsl:text>[</xsl:text><xsl:value-of select="@context"/><xsl:text>]</xsl:text></strong><xsl:text> </xsl:text>
+ <xsl:apply-templates/>
+ </li>
+ </xsl:for-each>
+ </sl>
+ </s2>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tools/cents/forrest.cent/resources/resources/schema/CatalogManager.properties b/tools/cents/forrest.cent/resources/resources/schema/CatalogManager.properties
new file mode 100644
index 0000000000..8d0bc1e7ba
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/CatalogManager.properties
@@ -0,0 +1,50 @@
+# CatalogManager.properties
+#
+# This is the default properties file for Apache Forrest. This facilitates local
+# configuration of application-specific catalogs. You can also use cocoon.xconf
+# to over-ride or supplement these settings.
+#
+# Apache Forrest will automatically load a default OASIS catalog from
+# src/resources/schema/catalog
+#
+# See the Apache Cocoon documentation (catalog.html).
+
+# verbosity ... level of messages for status/debug (messages go to STDOUT)
+# The following messages are provided ...
+# 0 = none
+# 1 = ?
+# 2 = 1+, Loading catalog, Resolved public, Resolved system
+# 3 = 2+, Catalog does not exist, resolvePublic, resolveSystem
+# 10 = 3+, List all catalog entries when loading a catalog
+# (Cocoon also logs the "Resolved public" messages.)
+# TODO: determine all messages at each level
+#
+verbosity=1
+
+# catalogs ... list of additional catalogs to load
+# use full pathnames
+# pathname separator is always semi-colon (;) regardless of operating system
+# directory separator is always slash (/) regardless of operating system
+#
+#catalogs=/path/to/local/catalog
+catalogs=
+
+# prefer ... we prefer to use Public Identifiers for entity resolution
+#
+prefer=public
+
+# static-catalog ... see the Sun doco
+# TODO: ? what impact does this setting have for Apache Cocoon
+#
+static-catalog=yes
+
+# allow-oasis-xml-catalog-pi ... see the Sun doco
+# TODO: ? what impact does this setting have for Apache Cocoon
+#
+allow-oasis-xml-catalog-pi=yes
+
+# catalog-class-name ... specify an alternate class name to use
+# Apache Cocoon does not need this setting - we already have a named class
+#
+# catalog-class-name=com.sun.resolver.Resolver
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/README b/tools/cents/forrest.cent/resources/resources/schema/README
new file mode 100644
index 0000000000..4f62e81894
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/README
@@ -0,0 +1,22 @@
+
+ Document Type Definitions
+ -------------------------
+
+
+In this folder you find the catalog of the XML entities and DTD that will
+be used by Forrest.
+
+They include schemas for:
+
+ 1) documentation
+ 2) specifications
+ 3) FAQs
+ 4) changes
+ 5) TODO lists
+
+and the markup has been kept as similar as possible to XHTML (along with the
+same entities).
+
+This has been used instead of DocBook to simplify the learning effort but still
+remove all the unstructured elements of XHTML.
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/catalog b/tools/cents/forrest.cent/resources/resources/schema/catalog
new file mode 100644
index 0000000000..59c098187e
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/catalog
@@ -0,0 +1,34 @@
+-- OASIS TR 9401 Catalog for Forrest --
+
+OVERRIDE YES
+
+-- Document Type Definitions --
+PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+ "dtd/document-v11.dtd"
+PUBLIC "-//APACHE//DTD Specification V1.1//EN"
+ "dtd/specification-v11.dtd"
+PUBLIC "-//APACHE//DTD FAQ V1.1//EN"
+ "dtd/faq-v11.dtd"
+PUBLIC "-//APACHE//DTD Changes V1.1//EN"
+ "dtd/changes-v11.dtd"
+PUBLIC "-//APACHE//DTD Todo V1.1//EN"
+ "dtd/todo-v11.dtd"
+PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN"
+ "dtd/book-cocoon-v10.dtd"
+
+-- ISO public identifiers for sets of character entities --
+PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML"
+ "entity/ISOlat1.pen"
+PUBLIC "ISO 9573-15:1993//ENTITIES Greek Letters//EN//XML"
+ "entity/ISOgrk1.pen"
+PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN//XML"
+ "entity/ISOpub.pen"
+PUBLIC "ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ "entity/ISOtech.pen"
+PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+ "entity/ISOnum.pen"
+PUBLIC "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+ "entity/ISOdia.pen"
+PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+ "entity/ISOlat1.pen"
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/catalog.xcat b/tools/cents/forrest.cent/resources/resources/schema/catalog.xcat
new file mode 100644
index 0000000000..5faf2d9f98
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/catalog.xcat
@@ -0,0 +1,35 @@
+<!-- OASIS XML Catalog for Forrest -->
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+
+-- Document Type Definitions --
+<public publicId="-//APACHE//DTD Documentation V1.1//EN"
+ uri="dtd/document-v11.dtd"/>
+<public publicId="-//APACHE//DTD Specification V1.1//EN"
+ uri="dtd/specification-v11.dtd"/>
+<public publicId="-//APACHE//DTD FAQ V1.1//EN"
+ uri="dtd/faq-v11.dtd"/>
+<public publicId="-//APACHE//DTD Changes V1.1//EN"
+ uri="dtd/changes-v11.dtd"/>
+<public publicId="-//APACHE//DTD Todo V1.1//EN"
+ uri="dtd/todo-v11.dtd"/>
+<public publicId="-//APACHE//DTD Cocoon Documentation Book V1.0//EN"
+ uri="dtd/book-cocoon-v10.dtd"/>
+
+<!-- ISO public identifiers for sets of character entities -->
+<public publicId="ISO 8879-1986//ENTITIES Added Latin 1//EN//XML"
+ uri="entity/ISOlat1.pen"/>
+<public publicId="ISO 9573-15:1993//ENTITIES Greek Letters//EN//XML"
+ uri="entity/ISOgrk1.pen"/>
+<public publicId="ISO 8879:1986//ENTITIES Publishing//EN//XML"
+ uri="entity/ISOpub.pen"/>
+<public publicId="ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ uri="entity/ISOtech.pen"/>
+<public publicId="ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+ uri="entity/ISOnum.pen"/>
+<public publicId="ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+ uri="entity/ISOdia.pen"/>
+<public publicId="ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+ uri="entity/ISOlat1.pen"/>
+
+</catalog>
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/book-cocoon-v10.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/book-cocoon-v10.dtd
new file mode 100644
index 0000000000..abd4410672
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/book-cocoon-v10.dtd
@@ -0,0 +1,70 @@
+<!-- ===================================================================
+
+ Apache Cocoon Documentation Book DTD (Version 1.0)
+
+PURPOSE:
+This DTD defines the */book.xml documentation configuration files.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE book PUBLIC
+ "-//APACHE//DTD Cocoon Documentation Book Vx.yz//EN"
+ "book-cocoon-vxyz.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+ z := status identifier (optional)
+
+NOTES:
+We need to replace this DTD with the proper one.
+We are only using this DTD to enable validation during "build docs"
+because every XML instance must declare its ruleset.
+
+This initial minimal DTD has been reverse-engineered from the structure
+of the current documents, e.g.
+ documentation/xdocs/book.xml
+
+AUTHORS:
+ David Crossley <crossley@apache.org>
+
+FIXME:
+ - find the proper DTD for book.xml
+
+CHANGE HISTORY:
+ 20011031 Initial version. (DC)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!ELEMENT book (menu+)>
+<!ELEMENT menu (menu-item|external)*>
+<!ELEMENT menu-item EMPTY>
+<!ELEMENT external EMPTY>
+<!ATTLIST book software CDATA #REQUIRED
+ title CDATA #REQUIRED
+ copyright CDATA #REQUIRED
+ xmlns:xlink CDATA #IMPLIED
+>
+<!ATTLIST menu label CDATA #REQUIRED
+>
+<!ATTLIST menu-item label CDATA #REQUIRED
+ href CDATA #REQUIRED
+ type (visible|hidden) "visible"
+>
+<!ATTLIST external label CDATA #REQUIRED
+ href CDATA #REQUIRED
+ type (visible|hidden) "visible"
+>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/changes-v11.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/changes-v11.dtd
new file mode 100644
index 0000000000..e753a9bb12
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/changes-v11.dtd
@@ -0,0 +1,93 @@
+<!-- ===================================================================
+
+ Apache Changes DTD (Version 1.1)
+
+PURPOSE:
+ This DTD was developed to create a simple yet powerful document
+ type for software development changes for use with the Apache projects.
+ It is an XML-compliant DTD and it's maintained by the Apache XML
+ project.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD Changes Vx.y//EN"
+ "changes-vxy.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+
+NOTES:
+ It is important, expecially in open developped software projects, to keep
+ track of software changes both to give users indications of bugs that might
+ have been resolved, as well, and not less important, to provide credits
+ for the support given to the project. It is considered vital to provide
+ adequate payback using recognition and credits to let users and developers
+ feel part of the community, thus increasing development power.
+
+AUTHORS:
+ Stefano Mazzocchi <stefano@apache.org>
+
+FIXME:
+
+CHANGE HISTORY:
+[Version 1.0]
+ 19991129 Initial version. (SM)
+ 20000316 Added bugfixing attribute. (SM)
+[Version 1.1]
+ 20011212 Used public identifiers for external entities (SM)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!-- =============================================================== -->
+<!-- Include the Documentation DTD -->
+<!-- =============================================================== -->
+
+<!ENTITY % document PUBLIC
+ "-//APACHE//DTD Documentation V1.1//EN"
+ "document-v11.dtd">
+%document;
+
+<!-- =============================================================== -->
+<!-- Common entities -->
+<!-- =============================================================== -->
+
+<!ENTITY % types "add|remove|update|fix">
+
+<!-- =============================================================== -->
+<!-- Document Type Definition -->
+<!-- =============================================================== -->
+
+<!ELEMENT changes (devs, release*)>
+<!ATTLIST changes %common.att;
+ %title.att;>
+
+ <!ELEMENT devs (person+)>
+ <!ATTLIST devs %common.att;>
+
+ <!ELEMENT release (action+)>
+ <!ATTLIST release %common.att;
+ version CDATA #REQUIRED
+ date CDATA #REQUIRED>
+
+ <!ELEMENT action (%content.mix;)*>
+ <!ATTLIST action %common.att;
+ dev IDREF #REQUIRED
+ type (%types;) #IMPLIED
+ due-to CDATA #IMPLIED
+ due-to-email CDATA #IMPLIED
+ fixes-bug CDATA #IMPLIED>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/document-v11.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/document-v11.dtd
new file mode 100644
index 0000000000..64252b6734
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/document-v11.dtd
@@ -0,0 +1,541 @@
+<!-- ===================================================================
+
+ Apache Documentation DTD (Version 1.1)
+
+PURPOSE:
+ This DTD was developed to create a simple yet powerful document
+ type for software documentation for use with the Apache projects.
+ It is an XML-compliant DTD and it's maintained by the Apache XML
+ project.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD Documentation Vx.y//EN"
+ "document-vxy.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+
+NOTES:
+ Many of the design patterns used in this DTD were take from the
+ W3C XML Specification DTD edited by Eve Maler <elm@arbortext.com>.
+
+ Where possible, great care has been used to reuse HTML tag
+ names to reduce learning efforts and to allow HTML editors to be
+ used for complex authorings like tables and lists.
+
+EXTENSIBILITY:
+ This DTD includes several empty placeholders that can be used to
+ extend it. These placeholders are implemented with empty entities. Here
+ is the list of those empty entities and what they are used for:
+
+ - local.inline: this entity should contain extended definitions of
+ elements that can be used 'inline', or directly inside
+ the content. An example for this entity could be
+
+ <!ENTITY % local.inline "|citation">
+
+ - local.blocks: this entity should contain extended definitions of
+ elements that behave as 'blocks', thus can be visually
+ rendered as areas on the canvas. An example for this
+ entity could be:
+
+ <!ENTITY % local.blocks "|poem">
+
+ - local.sections: this entity should contain extended definitions of
+ elements that behave as 'sections', thus can be considered
+ containers of block-level elements. An example for
+ this entity could be:
+
+ <!ENTITY % local.sections "|chapter">
+
+ - local.headers: this entity should contain extended definitions of
+ elements that behave as parts of the document header.
+ An example for this header could be:
+
+ <!ENTITY % local.headers ", notes?">
+
+ - local.footers: this entity should contain extended definitions of
+ elements that behave as parts of the document footer.
+ An example for this header could be:
+
+ <!ENTITY % local.footers ", annotations*">
+
+
+AUTHORS:
+ Stefano Mazzocchi <stefano@apache.org>
+ Steven Noels <stevenn@outerthought.org>
+
+FIXME:
+ - should "form" tags be included?
+
+CHANGE HISTORY:
+[Version 1.0]
+ 19991121 Initial version. (SM)
+ 19991123 Replaced "res" with more standard "strong" for emphasis. (SM)
+ 19991124 Added "fork" element for window forking behavior. (SM)
+ 19991124 Added "img-inline" element to separate from "img". (SM)
+ 19991129 Removed "affiliation" from "author". (SM)
+ 19991129 Made "author" empty and moved "name|email" as attributes. (SM)
+ 19991215 Simplified table section. (SM)
+ 19991215 Changed "img-block" in more friendly "figure". (SM)
+ 20000125 Added the "icon" image. (SM)
+ 20000126 Allowed "anchor" in all levels. (SM)
+ 20000404 Removed the "role" attribute from common-xxx.att. (SM)
+ 20000815 Allowed "code" inside "strong" and "em". (SM)
+[Version 1.1]
+ 20011212 Used public identifiers for external entities. (SM)
+ 20011212 Removed xlink attributes since not used. (SM)
+ 20011212 Removed "connect" since not required at this level. (SM)
+ 20011218 Added "warning" as a block level object. (SM)
+ 20011218 Removed explicitly numbered sections ("s1|s2|s3|s4"). (SM)
+ 20011218 Added "section" element. (SM)
+ 20011218 Allowed "body" to have blocks without a section. (SM)
+ 20011218 Removed "sl" since not really different from "ul". (SM)
+ 20020214 Moved empty placeholder entity declarations up front (SNS)
+ 20020214 Corrected content model of content.mix parameter entity (SNS)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+
+
+
+<!-- =============================================================== -->
+<!-- Common character entities (included from external file) -->
+<!-- =============================================================== -->
+
+<!ENTITY % ISOlat1 PUBLIC
+ "ISO 8879:1986//ENTITIES Added Latin 1//EN//XML"
+ "ISOlat1.pen">
+%ISOlat1;
+
+<!ENTITY % ISOpub PUBLIC
+ "ISO 8879:1986//ENTITIES Publishing//EN//XML"
+ "ISOpub.pen">
+%ISOpub;
+
+<!ENTITY % ISOtech PUBLIC
+ "ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ "ISOtech.pen">
+%ISOtech;
+
+<!ENTITY % ISOnum PUBLIC
+ "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML"
+ "ISOnum.pen">
+%ISOnum;
+
+<!ENTITY % ISOdia PUBLIC
+ "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML"
+ "ISOdia.pen">
+%ISOdia;
+
+<!-- =============================================================== -->
+<!-- Useful entities for increased DTD readability -->
+<!-- =============================================================== -->
+
+<!ENTITY % text "#PCDATA">
+
+<!-- Entities referred to later on are defined up front -->
+
+<!ENTITY % markup "strong|em|code|sub|sup">
+<!ENTITY % special-inline "br|img|icon">
+<!ENTITY % links "link|jump|fork">
+<!ENTITY % paragraphs "p|source|note|warning|fixme">
+<!ENTITY % tables "table">
+<!ENTITY % lists "ol|ul|dl">
+<!ENTITY % special-blocks "figure|anchor">
+
+
+<!-- =============================================================== -->
+<!-- Entities for general XML compliance -->
+<!-- =============================================================== -->
+
+<!-- Common attributes
+ Every element has an ID attribute (sometimes required,
+ but usually optional) for links. %common.att;
+ is for common attributes where the ID is optional, and
+ %common-idreq.att; is for common attributes where the
+ ID is required.
+-->
+<!ENTITY % common.att
+ 'id ID #IMPLIED
+ xml:lang NMTOKEN #IMPLIED'>
+<!ENTITY % common-idreq.att
+ 'id ID #REQUIRED
+ xml:lang NMTOKEN #IMPLIED'>
+
+
+<!-- xml:space attribute ===============================================
+ Indicates that the element contains white space
+ that the formatter or other application should retain,
+ as appropriate to its function.
+==================================================================== -->
+<!ENTITY % xmlspace.att
+ 'xml:space (default|preserve) #FIXED "preserve"'>
+
+
+<!-- def attribute =====================================================
+ Points to the element where the relevant definition can be
+ found, using the IDREF mechanism. %def.att; is for optional
+ def attributes, and %def-req.att; is for required def
+ attributes.
+==================================================================== -->
+<!ENTITY % def.att
+ 'def IDREF #IMPLIED'>
+<!ENTITY % def-req.att
+ 'def IDREF #REQUIRED'>
+
+
+<!-- ref attribute =====================================================
+ Points to the element where more information can be found,
+ using the IDREF mechanism. %ref.att; is for optional
+ ref attributes, and %ref-req.att; is for required ref
+ attributes.
+================================================================== -->
+<!ENTITY % ref.att
+ 'ref IDREF #IMPLIED'>
+<!ENTITY % ref-req.att
+ 'ref IDREF #REQUIRED'>
+
+
+<!-- =============================================================== -->
+<!-- Entities for general usage -->
+<!-- =============================================================== -->
+
+
+<!-- Key attribute =====================================================
+ Optionally provides a sorting or indexing key, for cases when
+ the element content is inappropriate for this purpose.
+==================================================================== -->
+<!ENTITY % key.att
+ 'key CDATA #IMPLIED'>
+
+
+
+<!-- Title attributes ==================================================
+ Indicates that the element requires to have a title attribute.
+==================================================================== -->
+<!ENTITY % title.att
+ 'title CDATA #REQUIRED'>
+
+
+
+<!-- Name attributes ==================================================
+ Indicates that the element requires to have a name attribute.
+==================================================================== -->
+<!ENTITY % name.att
+ 'name CDATA #REQUIRED'>
+
+
+
+<!-- Email attributes ==================================================
+ Indicates that the element requires to have an email attribute.
+==================================================================== -->
+<!ENTITY % email.att
+ 'email CDATA #REQUIRED'>
+
+
+<!-- Link attributes ===================================================
+ Indicates that the element requires to have hyperlink attributes.
+==================================================================== -->
+
+<!ENTITY % link.att
+ 'href CDATA #IMPLIED
+ role CDATA #IMPLIED
+ title CDATA #IMPLIED '>
+
+
+
+<!-- =============================================================== -->
+<!-- General definitions -->
+<!-- =============================================================== -->
+
+<!-- A person is a general human entity -->
+<!ELEMENT person EMPTY>
+<!ATTLIST person %common.att;
+ %name.att;
+ %email.att;>
+
+
+
+<!-- =============================================================== -->
+<!-- Content definitions -->
+<!-- =============================================================== -->
+
+<!ENTITY % local.inline "">
+
+<!ENTITY % link-content.mix "%text;|%markup;|%special-inline; %local.inline;">
+
+<!ENTITY % content.mix "%link-content.mix;|%links;">
+
+ <!-- ==================================================== -->
+ <!-- Phrase Markup -->
+ <!-- ==================================================== -->
+
+ <!-- Strong (typically bold) -->
+ <!ELEMENT strong (%text;|code)*>
+ <!ATTLIST strong %common.att;>
+
+ <!-- Emphasis (typically italic) -->
+ <!ELEMENT em (%text;|code)*>
+ <!ATTLIST em %common.att;>
+
+ <!-- Code (typically monospaced) -->
+ <!ELEMENT code (%text;)>
+ <!ATTLIST code %common.att;>
+
+ <!-- Superscript (typically smaller and higher) -->
+ <!ELEMENT sup (%text;)>
+ <!ATTLIST sup %common.att;>
+
+ <!-- Subscript (typically smaller and lower) -->
+ <!ELEMENT sub (%text;)>
+ <!ATTLIST sub %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Hypertextual Links -->
+ <!-- ==================================================== -->
+
+ <!-- hyperlink (equivalent of <a ...>) -->
+ <!ELEMENT link (%link-content.mix;)*>
+ <!ATTLIST link %common.att;
+ %link.att;>
+
+ <!-- windows-replacing link (equivalent of <a ... target="_top">) -->
+ <!ELEMENT jump (%link-content.mix;)*>
+ <!ATTLIST jump %common.att;
+ %link.att;>
+
+ <!-- window-forking link (equivalent of <a ... target="_new">) -->
+ <!ELEMENT fork (%link-content.mix;)*>
+ <!ATTLIST fork %common.att;
+ %link.att;>
+
+ <!-- ==================================================== -->
+ <!-- Specials -->
+ <!-- ==================================================== -->
+
+ <!-- Breakline Object (typically forces line break) -->
+ <!ELEMENT br EMPTY>
+ <!ATTLIST br %common.att;>
+
+ <!-- Image Object (typically an inlined image) -->
+ <!ELEMENT img EMPTY>
+ <!ATTLIST img src CDATA #REQUIRED
+ alt CDATA #REQUIRED
+ height CDATA #IMPLIED
+ width CDATA #IMPLIED
+ usemap CDATA #IMPLIED
+ ismap (ismap) #IMPLIED
+ %common.att;>
+
+ <!-- Image Icon (typically an inlined image placed as graphical item) -->
+ <!ELEMENT icon EMPTY>
+ <!ATTLIST icon src CDATA #REQUIRED
+ alt CDATA #REQUIRED
+ height CDATA #IMPLIED
+ width CDATA #IMPLIED
+ %common.att;>
+
+
+<!-- =============================================================== -->
+<!-- Blocks definitions -->
+<!-- =============================================================== -->
+
+<!ENTITY % local.blocks "">
+
+<!ENTITY % blocks "%paragraphs;|%tables;|%lists;|%special-blocks; %local.blocks;">
+
+ <!-- ==================================================== -->
+ <!-- Paragraphs -->
+ <!-- ==================================================== -->
+
+ <!-- Text Paragraph (normally vertically space delimited) -->
+ <!ELEMENT p (%content.mix;)*>
+ <!ATTLIST p %common.att;>
+
+ <!-- Source Paragraph (normally space is preserved) -->
+ <!ELEMENT source (%content.mix;)*>
+ <!ATTLIST source %common.att;
+ %xmlspace.att;>
+
+ <!-- Note Paragraph (normally shown encapsulated) -->
+ <!ELEMENT note (%content.mix;)*>
+ <!ATTLIST note %common.att;>
+
+ <!-- Warning Paragraph (normally shown with eye-catching colors) -->
+ <!ELEMENT warning (%content.mix;)*>
+ <!ATTLIST warning %common.att;>
+
+ <!-- Fixme Paragraph (normally not shown) -->
+ <!ELEMENT fixme (%content.mix;)*>
+ <!ATTLIST fixme author CDATA #REQUIRED
+ %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Tables -->
+ <!-- ==================================================== -->
+
+ <!-- Attributes that indicate the spanning of the table cell -->
+ <!ENTITY % cell.span
+ 'colspan CDATA "1"
+ rowspan CDATA "1"'>
+
+ <!-- Table element -->
+ <!ELEMENT table (caption?, tr+)>
+ <!ATTLIST table %common.att;>
+
+ <!-- The table title -->
+ <!ELEMENT caption (%content.mix;)*>
+ <!ATTLIST caption %common.att;>
+
+ <!-- The table row element -->
+ <!ELEMENT tr (th|td)+>
+ <!ATTLIST tr %common.att;>
+
+ <!-- The table row header element -->
+ <!ELEMENT th (%content.mix;)*>
+ <!ATTLIST th %common.att;
+ %cell.span;>
+
+ <!-- The table row description element -->
+ <!ELEMENT td (%content.mix;)*>
+ <!ATTLIST td %common.att;
+ %cell.span;>
+
+ <!-- ==================================================== -->
+ <!-- Lists -->
+ <!-- ==================================================== -->
+
+ <!-- List item -->
+ <!ELEMENT li (%content.mix;|%lists;)*>
+ <!ATTLIST li %common.att;>
+
+ <!-- Unordered list (typically bulleted) -->
+ <!ELEMENT ul (li|%lists;)+>
+ <!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+ <!ATTLIST ul
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+ <!-- Ordered list (typically numbered) -->
+ <!ELEMENT ol (li|%lists;)+>
+ <!-- spacing attribute:
+ Use "normal" to get normal vertical spacing for items;
+ use "compact" to get less spacing. The default is dependent
+ on the stylesheet. -->
+ <!ATTLIST ol
+ %common.att;
+ spacing (normal|compact) #IMPLIED>
+
+ <!-- Definition list (typically two-column) -->
+ <!ELEMENT dl (dt,dd)+>
+ <!ATTLIST dl %common.att;>
+
+ <!-- Definition term -->
+ <!ELEMENT dt (%content.mix;)*>
+ <!ATTLIST dt %common.att;>
+
+ <!-- Definition description -->
+ <!ELEMENT dd (%content.mix;)*>
+ <!ATTLIST dd %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Special Blocks -->
+ <!-- ==================================================== -->
+
+ <!-- Image Block (typically a separated and centered image) -->
+ <!ELEMENT figure EMPTY>
+ <!ATTLIST figure src CDATA #REQUIRED
+ alt CDATA #REQUIRED
+ height CDATA #IMPLIED
+ width CDATA #IMPLIED
+ usemap CDATA #IMPLIED
+ ismap (ismap) #IMPLIED
+ %common.att;>
+
+ <!-- anchor point (equivalent of <a name="...">, typically not rendered) -->
+ <!ELEMENT anchor EMPTY>
+ <!ATTLIST anchor %common-idreq.att;>
+
+
+<!-- =============================================================== -->
+<!-- Document -->
+<!-- =============================================================== -->
+
+<!ELEMENT document (header?, body, footer?)>
+<!ATTLIST document %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Header -->
+ <!-- ==================================================== -->
+
+ <!ENTITY % local.headers "">
+
+ <!ELEMENT header (title, subtitle?, version?, type?, authors,
+ notice*, abstract? %local.headers;)>
+ <!ATTLIST header %common.att;>
+
+ <!ELEMENT title (%text;)>
+ <!ATTLIST title %common.att;>
+
+ <!ELEMENT subtitle (%text;)>
+ <!ATTLIST subtitle %common.att;>
+
+ <!ELEMENT version (%text;)>
+ <!ATTLIST version %common.att;>
+
+ <!ELEMENT type (%text;)>
+ <!ATTLIST type %common.att;>
+
+ <!ELEMENT authors (person+)>
+ <!ATTLIST authors %common.att;>
+
+ <!ELEMENT notice (%content.mix;)*>
+ <!ATTLIST notice %common.att;>
+
+ <!ELEMENT abstract (%content.mix;)*>
+ <!ATTLIST abstract %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Body -->
+ <!-- ==================================================== -->
+
+ <!ENTITY % local.sections "">
+
+ <!ENTITY % sections "section %local.sections;">
+
+ <!ELEMENT body (%sections;|%blocks;)+>
+ <!ATTLIST body %common.att;>
+
+ <!ELEMENT section (%sections;|%blocks;)*>
+ <!ATTLIST section %title.att; %common.att;>
+
+ <!-- ==================================================== -->
+ <!-- Footer -->
+ <!-- ==================================================== -->
+
+ <!ENTITY % local.footers "">
+
+ <!ELEMENT footer (legal %local.footers;)>
+
+ <!ELEMENT legal (%content.mix;)*>
+ <!ATTLIST legal %common.att;>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/faq-v11.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/faq-v11.dtd
new file mode 100644
index 0000000000..abaa043865
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/faq-v11.dtd
@@ -0,0 +1,76 @@
+<!-- ===================================================================
+
+ Apache FAQ DTD (Version 1.1)
+
+PURPOSE:
+ This DTD was developed to create a simple yet powerful document
+ type for software FAQ's for use with the Apache projects.
+ It is an XML-compliant DTD and it's maintained by the Apache XML
+ project.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD FAQ Vx.y//EN"
+ "faq-vxy.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+
+NOTES:
+ FAQs represent a powerful knowledge base and a very good way of solving
+ common user problems reducing messages on mail lists and reducing the effort
+ required for software installation and usage. Thid DTD want to be a common
+ format for FAQ interchange to allow FAQ-O-Matic-type workgroup services to
+ be published in other formats as well as enhancing data interchange.
+
+AUTHORS:
+ Stefano Mazzocchi <stefano@apache.org>
+
+FIXME:
+
+CHANGE HISTORY:
+ 19991129 Initial version. (SM)
+ 20011212 Used public identifiers for external entities (SM)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!-- =============================================================== -->
+<!-- Include the Documentation DTD -->
+<!-- =============================================================== -->
+
+<!ENTITY % document PUBLIC
+ "-//APACHE//DTD Documentation V1.1//EN"
+ "document-v11.dtd">
+%document;
+
+<!-- =============================================================== -->
+<!-- Document Type Definition -->
+<!-- =============================================================== -->
+
+<!ELEMENT faqs (authors?, faq)+>
+<!ATTLIST faqs %common.att;
+ %title.att;>
+
+ <!ELEMENT faq (question, answer)>
+ <!ATTLIST faq %common.att;>
+
+ <!ELEMENT question (%content.mix;)*>
+ <!ATTLIST question %common.att;>
+
+ <!ELEMENT answer (%blocks;)*>
+ <!ATTLIST answer author IDREF #IMPLIED>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/javadoc-v04draft.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/javadoc-v04draft.dtd
new file mode 100644
index 0000000000..3a4301a4d1
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/javadoc-v04draft.dtd
@@ -0,0 +1,254 @@
+<!-- ===================================================================
+
+ Apache JavaDoc DTD (version 0.4-draft)
+
+PURPOSE:
+ This DTD is designed to capture the output of JavaDoc as an XML document
+ through the use of the JavaDocXML Doclet. The hope is that by having the
+ JavaDoc documentation in an XML format, it will be easier for application
+ developers working with XML to treat their java source documentation in the
+ same way they treat any other XML document within their publication framework.
+
+ This DTD should reflect the information contained within the RootDoc object
+ passed to the JavaDocXML Doclet by JavaDoc. The RootDoc object and the rest
+ of the javaDoc Doclet API is specified at
+
+ http://java.sun.com/products/jdk/1.2/docs/tooldocs/javadoc/doclet/index.html
+
+ The only information that appears to be difficult to derive from this DTD
+ that is easy to obtain from the RootDoc object is the information about
+ serialization. However, this information should be derivable by manually
+ looking for the correct serialization methods and other related structures.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD JavaDoc Vx.yz//EN"
+ "javadoc-vxyz.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+ z := status identifier (optional)
+
+NOTES:
+ The authors would like to thank the Cocoon's mail list subscribers for
+ providing such great support and feedback for this DTD.
+
+AUTHORS:
+ Kenneth Murphy <murphyk@umsystem.edu>
+
+FIXME:
+
+CHANGE HISTORY:
+ 199909?? Original idea of XML doclet. (KM)
+ 199910?? Initial version of this DTD. (KM)
+ 19991129 Cleaned up DTD. (SM)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!-- =============================================================== -->
+<!-- Common Attribute Entities -->
+<!-- =============================================================== -->
+
+<!ENTITY % name 'name CDATA #REQUIRED'>
+<!ENTITY % dimension 'dimension CDATA #REQUIRED'>
+
+<!ENTITY % abstract 'abstract (true | false) "false"'>
+<!ENTITY % anonymous 'anonymous (true | false) "false"'>
+<!ENTITY % synthetic 'synthetic (true | false) "false"'>
+<!ENTITY % static 'static (true | false) "false"'>
+<!ENTITY % final 'final (true | false) "false"'>
+<!ENTITY % transient 'transient (true | false) "false"'>
+<!ENTITY % volatile 'volatile (true | false) "false"'>
+<!ENTITY % native 'native (true | false) "false"'>
+<!ENTITY % synchronized 'synchronized (true | false) "false"'>
+
+<!ENTITY % access 'access (private | package | protected | public) "package"'>
+<!ENTITY % class.access 'access (package | public) "package"'>
+
+<!ENTITY % extensibility 'extensibility (abstract | final | default) "default"'>
+
+
+<!-- =============================================================== -->
+<!-- Javadoc -->
+<!-- =============================================================== -->
+
+<!ELEMENT javadoc (package*, class*, interface*)>
+
+<!-- =============================================================== -->
+<!-- Package -->
+<!-- =============================================================== -->
+
+<!ELEMENT package (doc?, package*, class*, interface*)>
+<!ATTLIST package %name;>
+
+<!-- =============================================================== -->
+<!-- Class -->
+<!-- =============================================================== -->
+
+<!ELEMENT class (doc?,
+ extends_class?,
+ implements?,
+ field*,
+ constructor*,
+ method*,
+ innerclass*)>
+<!ATTLIST class
+ %name;
+ %extensibility;
+ %class.access;>
+
+<!ELEMENT extends_class (classref+)>
+
+<!ELEMENT innerclass (doc?,
+ extends?,
+ implements?,
+ field*,
+ constructor*,
+ method*)>
+<!ATTLIST innerclass
+ %name;
+ %access;
+ %abstract;
+ %anonymous;
+ %final;
+ %static;>
+
+<!-- =============================================================== -->
+<!-- Interface -->
+<!-- =============================================================== -->
+
+<!ELEMENT interface (doc?,
+ extends_interface?,
+ field*,
+ method*)>
+<!ATTLIST interface
+ %name;
+ %access;>
+
+<!ELEMENT extends_interface (interfaceref+)>
+
+<!-- =============================================================== -->
+<!-- Elements -->
+<!-- =============================================================== -->
+
+<!ELEMENT implements (interfaceref+)>
+
+<!ELEMENT throws (classref)+>
+
+<!ELEMENT classref EMPTY>
+<!ATTLIST classref %name;>
+
+<!ELEMENT interfaceref EMPTY>
+<!ATTLIST interfaceref %name;>
+
+<!ELEMENT methodref EMPTY>
+<!ATTLIST methodref %name;>
+
+<!ELEMENT packageref EMPTY>
+<!ATTLIST packageref %name;>
+
+<!ELEMENT primitive EMPTY>
+<!ATTLIST primitive
+ type (void | boolean | int | long | byte | short | double | float | char) #REQUIRED>
+
+<!ELEMENT field (doc?, (classref | interfaceref | primitive))>
+<!ATTLIST field
+ %name;
+ %access;
+ %dimension;
+ %synthetic;
+ %static;
+ %final;
+ %transient;
+ %volatile;>
+
+<!ELEMENT constructor (doc?, parameter*, throws*)>
+<!ATTLIST constructor
+ %name;
+ %access;
+ %synthetic;>
+
+<!ELEMENT method (doc?, returns, parameter*, throws*)>
+<!ATTLIST method
+ %name;
+ %access;
+ %extensibility;
+ %native;
+ %synthetic;
+ %static;
+ %synchronized;>
+
+<!ELEMENT returns (classref | interfaceref | primitive)>
+<!ATTLIST returns %dimension;>
+
+<!ELEMENT parameter (classref | interfaceref | primitive)>
+<!ATTLIST parameter
+ %name;
+ %final;
+ %dimension;>
+
+<!ELEMENT dimension (#PCDATA)>
+
+<!ELEMENT doc (#PCDATA |
+ linktag |
+ authortag |
+ versiontag |
+ paramtag |
+ returntag |
+ exceptiontag |
+ throwstag |
+ seetag |
+ sincetag |
+ deprecatedtag |
+ serialtag |
+ serialfieldtag |
+ serialdatatag)*>
+
+<!ELEMENT linktag (#PCDATA)>
+<!ATTLIST linktag
+ src CDATA #REQUIRED>
+
+<!ELEMENT authortag (#PCDATA | linktag)*>
+
+<!ELEMENT versiontag (#PCDATA | linktag)*>
+
+<!ELEMENT paramtag (#PCDATA | linktag)*>
+<!ATTLIST paramtag %name;>
+
+<!ELEMENT returntag (#PCDATA | linktag)*>
+
+<!ELEMENT exceptiontag (#PCDATA | classref | linktag)*>
+
+<!ELEMENT throwstag (#PCDATA | classref | linktag)*>
+
+<!ELEMENT seetag (#PCDATA | linktag)*>
+<!ATTLIST seetag
+ src CDATA #REQUIRED>
+
+<!ELEMENT sincetag (#PCDATA | linktag)*>
+
+<!ELEMENT deprecatedtag (#PCDATA | linktag)*>
+
+<!ELEMENT serialtag (#PCDATA | linktag)*>
+
+<!ELEMENT serialfieldtag (#PCDATA | linktag)*>
+<!ATTLIST serialfieldtag
+ fieldname CDATA #REQUIRED
+ fieldtype CDATA #REQUIRED>
+
+<!ELEMENT serialdatatag (#PCDATA | linktag)*>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/project.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/project.dtd
new file mode 100644
index 0000000000..cb48c333af
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/project.dtd
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!ELEMENT module ( project* ) >
+<!ELEMENT description ( #PCDATA ) >
+<!ELEMENT url EMPTY >
+<!ELEMENT cvs EMPTY >
+<!ELEMENT ant ( property | depend )* >
+<!ELEMENT depend EMPTY >
+<!ELEMENT property EMPTY >
+<!ELEMENT work EMPTY >
+<!ELEMENT home EMPTY >
+<!ELEMENT jar EMPTY >
+
+<!ATTLIST module
+ name CDATA #REQUIRED >
+
+<!ATTLIST url
+ href CDATA #REQUIRED >
+
+<!ATTLIST cvs
+ repository CDATA #REQUIRED
+ host-prefix CDATA #IMPLIED
+ dir CDATA #IMPLIED >
+
+<!ATTLIST ant
+ target CDATA #REQUIRED
+ buildfile CDATA #IMPLIED
+ basedir CDATA #IMPLIED >
+
+<!ATTLIST depend
+ project CDATA #REQUIRED
+ property CDATA #IMPLIED
+ version CDATA #IMPLIED
+ id CDATA #IMPLIED >
+
+<!ATTLIST property
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED >
+
+<!ATTLIST work
+ nested CDATA #REQUIRED >
+
+<!ATTLIST home
+ nested CDATA #REQUIRED >
+
+<!ATTLIST jar
+ name CDATA #REQUIRED
+ id CDATA #IMPLIED >
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/specification-v11.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/specification-v11.dtd
new file mode 100644
index 0000000000..b61242728b
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/specification-v11.dtd
@@ -0,0 +1,92 @@
+<!-- ===================================================================
+
+ Apache Specification DTD (Version 1.1)
+
+PURPOSE:
+ This DTD was developed to create a simple yet powerful document
+ type for software specifications for use with the Apache projects.
+ It is an XML-compliant DTD and it's maintained by the Apache XML
+ project.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD Specification Vx.y//EN"
+ "specification-vxy.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+
+NOTES:
+
+AUTHORS:
+ Stefano Mazzocchi <stefano@apache.org>
+
+FIXME:
+
+CHANGE HISTORY:
+[Version 1.0]
+ 19991129 Initial version. (SM)
+[Version 1.1]
+ 20011212 Used public identifiers for external entities (SM)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!-- =============================================================== -->
+<!-- Include the Documentation DTD -->
+<!-- =============================================================== -->
+
+<!ENTITY % document PUBLIC
+ "-//APACHE//DTD Documentation V1.1//EN"
+ "document-v11.dtd">
+%document;
+
+
+<!-- =============================================================== -->
+<!-- Extend the Documentation DTD -->
+<!-- =============================================================== -->
+
+<!-- extend the local.xxx entities -->
+<!ENTITY % local.blocks "|bl">
+
+
+<!-- =============================================================== -->
+<!-- Document Type Definition -->
+<!-- =============================================================== -->
+
+<!ELEMENT specification (header?, body, appendices?, footer?)>
+<!ATTLIST specification %common.att;>
+
+ <!ELEMENT appendices (%sections;)+>
+ <!ATTLIST appendices %common.att;>
+
+<!-- =============================================================== -->
+<!-- Bibliography List -->
+<!-- =============================================================== -->
+
+ <!-- Bibliography list -->
+ <!ELEMENT bl (bi)+>
+ <!ATTLIST bl %common.att;>
+
+ <!-- Book item -->
+ <!ELEMENT bi EMPTY>
+ <!ATTLIST bi %common.att;
+ %name.att;
+ %title.att;
+ %link.att;
+ authors CDATA #REQUIRED
+ date CDATA #IMPLIED>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/todo-v11.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/todo-v11.dtd
new file mode 100644
index 0000000000..3aaaa14dbd
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/todo-v11.dtd
@@ -0,0 +1,93 @@
+<!-- ===================================================================
+
+ Apache Todos DTD (Version 1.1)
+
+PURPOSE:
+ This DTD was developed to create a simple yet powerful document
+ type for software development todo lists for use with the Apache projects.
+ It is an XML-compliant DTD and it's maintained by the Apache XML
+ project.
+
+TYPICAL INVOCATION:
+
+ <!DOCTYPE document PUBLIC
+ "-//APACHE//DTD Todo Vx.y//EN"
+ "todo-vxy.dtd">
+
+ where
+
+ x := major version
+ y := minor version
+
+NOTES:
+ It is important, expecially in open developped software projects, to keep
+ track of software changes that need to be done, planned features, development
+ assignment, etc. in order to allow better work parallelization and create
+ an entry point for people that want to help. This DTD wants to provide
+ a solid foundation to provide such information and to allow it to be
+ published as well as distributed in a common format.
+
+AUTHORS:
+ Stefano Mazzocchi <stefano@apache.org>
+
+FIXME:
+ - do we need anymore working contexts? (SM)
+
+CHANGE HISTORY:
+[Version 1.0]
+ 19991129 Initial version. (SM)
+ 19991225 Added actions element for better structure (SM)
+[Version 1.1]
+ 20011212 Used public identifiers for external entities (SM)
+
+COPYRIGHT:
+ Copyright (c) @year@ The Apache Software Foundation.
+
+ Permission to copy in any form is granted provided this notice is
+ included in all copies. Permission to redistribute is granted
+ provided this file is distributed untouched in all its parts and
+ included files.
+
+==================================================================== -->
+
+<!-- =============================================================== -->
+<!-- Include the Documentation DTD -->
+<!-- =============================================================== -->
+
+<!ENTITY % document PUBLIC
+ "-//APACHE//DTD Documentation V1.1//EN"
+ "document-v11.dtd">
+%document;
+
+
+<!-- =============================================================== -->
+<!-- Common entities -->
+<!-- =============================================================== -->
+
+<!ENTITY % priorities "showstopper|high|medium|low|wish|dream">
+
+<!ENTITY % contexts "build|docs|code|admin|design">
+
+<!-- =============================================================== -->
+<!-- Document Type Definition -->
+<!-- =============================================================== -->
+
+<!ELEMENT todo (devs, actions*)>
+<!ATTLIST todo %common.att;
+ %title.att;>
+
+ <!ELEMENT devs (person+)>
+ <!ATTLIST devs %common.att;>
+
+ <!ELEMENT actions (action+)>
+ <!ATTLIST actions %common.att;
+ priority (%priorities;) #IMPLIED>
+
+ <!ELEMENT action (%content.mix;)*>
+ <!ATTLIST action %common.att;
+ assigned-to IDREF #IMPLIED
+ context (%contexts;) #REQUIRED>
+
+<!-- =============================================================== -->
+<!-- End of DTD -->
+<!-- =============================================================== -->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/dtd/xgump.dtd b/tools/cents/forrest.cent/resources/resources/schema/dtd/xgump.dtd
new file mode 100644
index 0000000000..4bcb214b7c
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/dtd/xgump.dtd
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!ELEMENT module ( url, cvs, mailing-lists, description, detailed, what, why, who, todo, changes, licence, credits, project* ) >
+<!ELEMENT url EMPTY >
+<!ELEMENT cvs EMPTY >
+<!ELEMENT mailing-lists ( mailing-list ) >
+<!ELEMENT mailing-list EMPTY >
+<!ELEMENT description ( #PCDATA ) >
+<!ELEMENT detailed ( #PCDATA ) >
+<!ELEMENT what ( goal+ ) >
+<!ELEMENT goal ( #PCDATA ) >
+<!ELEMENT why ( #PCDATA ) >
+<!ELEMENT who ( person+ ) >
+<!ELEMENT person EMPTY >
+<!ELEMENT todo ( actions ) >
+<!ELEMENT actions ( action+ ) >
+<!ELEMENT changes ( release ) >
+<!ELEMENT release ( action+ ) >
+<!ELEMENT action ( #PCDATA ) >
+<!ELEMENT licence ( #PCDATA ) >
+<!ELEMENT credits ( credit+ ) >
+<!ELEMENT credit ( #PCDATA ) >
+<!ELEMENT project ( ant | depend | description | home | jar | javadoc | package | url | version | work )* >
+<!ELEMENT ant ( property | depend )* >
+<!ELEMENT property EMPTY >
+<!ELEMENT depend EMPTY >
+<!ELEMENT description ( #PCDATA ) >
+<!ELEMENT home EMPTY >
+<!ELEMENT jar EMPTY >
+<!ELEMENT javadoc EMPTY >
+<!ELEMENT package ( #PCDATA ) >
+<!ELEMENT version EMPTY >
+<!ELEMENT work EMPTY >
+
+
+<!ATTLIST module
+ name CDATA #REQUIRED >
+
+<!ATTLIST url
+ href CDATA #REQUIRED >
+
+<!ATTLIST cvs
+ repository CDATA #REQUIRED
+ host-prefix CDATA #IMPLIED
+ dir CDATA #IMPLIED >
+
+<!ATTLIST mailing-list
+ mail CDATA #REQUIRED
+ subscribe CDATA #REQUIRED
+ unsubscribe CDATA #REQUIRED
+ user NMTOKEN #REQUIRED>
+
+<!ATTLIST person
+ email CDATA #REQUIRED
+ id NMTOKEN #REQUIRED
+ name CDATA #REQUIRED>
+
+<!ATTLIST actions
+ priority NMTOKEN #REQUIRED >
+
+<!ATTLIST action
+ assigned-to NMTOKEN #IMPLIED
+ context NMTOKEN #IMPLIED
+ dev ( DC | NKB | SM | SN ) #IMPLIED
+ due-to CDATA #IMPLIED
+ due-to-email CDATA #IMPLIED
+ type ( add | update ) #IMPLIED >
+
+<!ATTLIST ant
+ target CDATA #REQUIRED
+ buildfile CDATA #IMPLIED
+ basedir CDATA #IMPLIED >
+
+<!ATTLIST depend
+ project CDATA #REQUIRED
+ property CDATA #IMPLIED
+ version CDATA #IMPLIED
+ id CDATA #IMPLIED >
+
+<!ATTLIST property
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED >
+
+<!ATTLIST work
+ nested CDATA #REQUIRED >
+
+<!ATTLIST home
+ nested CDATA #REQUIRED >
+
+<!ATTLIST jar
+ name CDATA #REQUIRED
+ id CDATA #IMPLIED >
+
+<!ATTLIST release
+ date NMTOKEN #REQUIRED
+ version NMTOKEN #REQUIRED >
+
+<!ATTLIST javadoc
+ parent CDATA #REQUIRED >
+
+<!ATTLIST depend
+ project NMTOKEN #REQUIRED >
+
+<!ATTLIST project
+ name NMTOKEN #REQUIRED >
+
+<!ATTLIST version
+ major NMTOKEN #REQUIRED
+ minor NMTOKEN #REQUIRED
+ tag NMTOKEN #REQUIRED
+ fix NMTOKEN #REQUIRED >
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOdia.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOdia.pen
new file mode 100644
index 0000000000..df5c05d2ed
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOdia.pen
@@ -0,0 +1,34 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOdia PUBLIC
+ "ISO 8879:1986//ENTITIES Diacritical Marks//EN//XML">
+ %ISOdia;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+ This entity set uses hexadecimal numeric character references.
+
+ Creator: Rick Jelliffe, Allette Systems
+
+ Version: 1997-07-07
+-->
+
+<!ENTITY acute "&#180;" ><!--=acute accent-->
+<!ENTITY breve "&#x2D8;" ><!--=breve-->
+<!ENTITY caron "&#x2C7;" ><!--=caron-->
+<!ENTITY cedil "&#184;" ><!--=cedilla-->
+<!ENTITY circ "^" ><!--=circumflex accent-->
+<!ENTITY dblac "&#x2DD;" ><!--=double acute accent-->
+<!ENTITY die "&#168;" ><!--=dieresis-->
+<!ENTITY dot "&#x2D9;" ><!--=dot above-->
+<!ENTITY grave "`" ><!--=grave accent-->
+<!ENTITY macr "&#175;" ><!--=macron-->
+<!ENTITY ogon "&#x2DB;" ><!--=ogonek-->
+<!ENTITY ring "&#x2DA;" ><!--=ring-->
+<!ENTITY tilde "&#x2DC;" ><!--=tilde-->
+<!ENTITY uml "&#168;" ><!--=umlaut mark-->
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOgrk1.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOgrk1.pen
new file mode 100644
index 0000000000..cdab380fc3
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOgrk1.pen
@@ -0,0 +1,74 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+ Creator: version from ISO 8879:1986
+
+ Version: 0.21 1992-12-04
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOGRK1 PUBLIC
+ "ISO 9573-15:1993//ENTITIES Greek Letters//EN//XML">
+ %ISOGRK1;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+
+ Creator: Rick Jelliffe, from HTMLlat1
+
+ Version: 1997-07-07
+-->
+
+<!ENTITY agr "&#945;" ><!--small alpha, Greek, U03B1 -->
+<!ENTITY Agr "&#913;" ><!--capital Alpha, Greek, U0391 -->
+<!ENTITY bgr "&#946;" ><!--small beta, Greek, U03B2 -->
+<!ENTITY Bgr "&#914;" ><!--capital Beta, Greek, U0392 -->
+<!ENTITY ggr "&#947;" ><!--small gamma, Greek, U03B3 -->
+<!ENTITY Ggr "&#915;" ><!--capital Gamma, Greek, U0393 -->
+<!ENTITY dgr "&#948;" ><!--small delta, Greek, U03B4 -->
+<!ENTITY Dgr "&#916;" ><!--capital Delta, Greek, U0394 -->
+<!ENTITY egr "&#949;" ><!--small epsilon, Greek, U03B5 -->
+<!ENTITY Egr "&#917;" ><!--capital Epsilon, Greek, U0395 -->
+<!ENTITY zgr "&#950;" ><!--small zeta, Greek, U03B6 -->
+<!ENTITY Zgr "&#918;" ><!--capital Zeta, Greek, U0396 -->
+<!ENTITY eegr "&#951;" ><!--small eta, Greek, U03B7 -->
+<!ENTITY EEgr "&#919;" ><!--capital Eta, Greek, U0397 -->
+<!ENTITY thgr "&#952;" ><!--small theta, Greek, U03B8 -->
+<!ENTITY THgr "&#920;" ><!--capital Theta, Greek, U0398 -->
+<!ENTITY igr "&#953;" ><!--small iota, Greek, U03B9 -->
+<!ENTITY Igr "&#921;" ><!--capital Iota, Greek, U0399 -->
+<!ENTITY kgr "&#954;" ><!--small kappa, Greek, U03BA -->
+<!ENTITY Kgr "&#922;" ><!--capital Kappa, Greek, U039A -->
+<!ENTITY lgr "&#955;" ><!--small lambda, Greek, U03BB -->
+<!ENTITY Lgr "&#923;" ><!--capital Lambda, Greek, U039B -->
+<!ENTITY mgr "&#956;" ><!--small mu, Greek, U03BC -->
+<!ENTITY Mgr "&#924;" ><!--capital Mu, Greek, U039C -->
+<!ENTITY ngr "&#957;" ><!--small nu, Greek, U03BD -->
+<!ENTITY Ngr "&#925;" ><!--capital Nu, Greek, U039D -->
+<!ENTITY xgr "&#958;" ><!--small xi, Greek, U03BE -->
+<!ENTITY Xgr "&#926;" ><!--capital Xi, Greek, U039E -->
+<!ENTITY ogr "&#959;" ><!--small omicron, Greek, U03BF -->
+<!ENTITY Ogr "&#927;" ><!--capital Omicron, Greek, U039F -->
+<!ENTITY pgr "&#960;" ><!--small pi, Greek, U03C0 -->
+<!ENTITY Pgr "&#928;" ><!--capital Pi, Greek, U03A0 -->
+<!ENTITY rgr "&#961;" ><!--small rho, Greek, U03C1 -->
+<!ENTITY Rgr "&#929;" ><!--capital Rho, Greek, U03A1 -->
+<!ENTITY sfgr "&#962;" ><!--final small sigma, Greek, U03C2 -->
+<!ENTITY sgr "&#963;" ><!--small sigma, Greek, U03C3 -->
+<!ENTITY Sgr "&#931;" ><!--capital Sigma, Greek, U03A3 -->
+<!ENTITY tgr "&#964;" ><!--small tau, Greek, U03C4 -->
+<!ENTITY Tgr "&#932;" ><!--capital Tau, Greek, U03A4 -->
+<!ENTITY ugr "&#965;" ><!--small upsilon, Greek, U03C5 -->
+<!ENTITY Ugr "&#933;" ><!--capital Upsilon, Greek, U03A5 -->
+<!ENTITY phgr "&#966;" ><!--small phi, Greek, U03C6 -->
+<!ENTITY PHgr "&#934;" ><!--capital Phi, Greek, U03A6 -->
+<!ENTITY khgr "&#967;" ><!--small chi, Greek, U03C7 -->
+<!ENTITY KHgr "&#935;" ><!--capital Chi, Greek, U03A7 -->
+<!ENTITY psgr "&#968;" ><!--small psi, Greek, U03C8 -->
+<!ENTITY PSgr "&#936;" ><!--capital Psi, Greek, U03A8 -->
+<!ENTITY ohgr "&#969;" ><!--small omega, Greek, U03C9 -->
+<!ENTITY OHgr "&#937;" ><!--capital Omega, Greek, U03A9 -->
+
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOlat1.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOlat1.pen
new file mode 100644
index 0000000000..aff4e217d4
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOlat1.pen
@@ -0,0 +1,79 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOlat1 PUBLIC
+ "ISO 8879-1986//ENTITIES Added Latin 1//EN//XML">
+ %ISOlat1;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 8859-1 or ISO 10646 as its document character
+ set. This includes XML documents and ISO HTML documents.
+-->
+
+ <!ENTITY Agrave "&#192;" ><!-- capital A, grave accent -->
+ <!ENTITY Aacute "&#193;" ><!-- capital A, acute accent -->
+ <!ENTITY Acirc "&#194;" ><!-- capital A, circumflex accent -->
+ <!ENTITY Atilde "&#195;" ><!-- capital A, tilde -->
+ <!ENTITY Auml "&#196;" ><!-- capital A, dieresis or umlaut mark -->
+ <!ENTITY Aring "&#197;" ><!-- capital A, ring -->
+ <!ENTITY AElig "&#198;" ><!-- capital AE diphthong (ligature) -->
+ <!ENTITY Ccedil "&#199;" ><!-- capital C, cedilla -->
+ <!ENTITY Egrave "&#200;" ><!-- capital E, grave accent -->
+ <!ENTITY Eacute "&#201;" ><!-- capital E, acute accent -->
+ <!ENTITY Ecirc "&#202;" ><!-- capital E, circumflex accent -->
+ <!ENTITY Euml "&#203;" ><!-- capital E, dieresis or umlaut mark -->
+ <!ENTITY Igrave "&#204;" ><!-- capital I, grave accent -->
+ <!ENTITY Iacute "&#205;" ><!-- capital I, acute accent -->
+ <!ENTITY Icirc "&#206;" ><!-- capital I, circumflex accent -->
+ <!ENTITY Iuml "&#207;" ><!-- capital I, dieresis or umlaut mark -->
+ <!ENTITY ETH "&#208;" ><!-- capital Eth, Icelandic -->
+ <!ENTITY Ntilde "&#209;" ><!-- capital N, tilde -->
+ <!ENTITY Ograve "&#210;" ><!-- capital O, grave accent -->
+ <!ENTITY Oacute "&#211;" ><!-- capital O, acute accent -->
+ <!ENTITY Ocirc "&#212;" ><!-- capital O, circumflex accent -->
+ <!ENTITY Otilde "&#213;" ><!-- capital O, tilde -->
+ <!ENTITY Ouml "&#214;" ><!-- capital O, dieresis or umlaut mark -->
+ <!ENTITY Oslash "&#216;" ><!-- capital O, slash -->
+ <!ENTITY Ugrave "&#217;" ><!-- capital U, grave accent -->
+ <!ENTITY Uacute "&#218;" ><!-- capital U, acute accent -->
+ <!ENTITY Ucirc "&#219;" ><!-- capital U, circumflex accent -->
+ <!ENTITY Uuml "&#220;" ><!-- capital U, dieresis or umlaut mark -->
+ <!ENTITY Yacute "&#221;" ><!-- capital Y, acute accent -->
+ <!ENTITY THORN "&#222;" ><!-- capital THORN, Icelandic -->
+ <!ENTITY szlig "&#223;" ><!-- small sharp s, German (sz ligature) -->
+ <!ENTITY agrave "&#224;" ><!-- small a, grave accent -->
+ <!ENTITY aacute "&#225;" ><!-- small a, acute accent -->
+ <!ENTITY acirc "&#226;" ><!-- small a, circumflex accent -->
+ <!ENTITY atilde "&#227;" ><!-- small a, tilde -->
+ <!ENTITY auml "&#228;" ><!-- small a, dieresis or umlaut mark -->
+ <!ENTITY aring "&#229;" ><!-- small a, ring -->
+ <!ENTITY aelig "&#230;" ><!-- small ae diphthong (ligature) -->
+ <!ENTITY ccedil "&#231;" ><!-- small c, cedilla -->
+ <!ENTITY egrave "&#232;" ><!-- small e, grave accent -->
+ <!ENTITY eacute "&#233;" ><!-- small e, acute accent -->
+ <!ENTITY ecirc "&#234;" ><!-- small e, circumflex accent -->
+ <!ENTITY euml "&#235;" ><!-- small e, dieresis or umlaut mark -->
+ <!ENTITY igrave "&#236;" ><!-- small i, grave accent -->
+ <!ENTITY iacute "&#237;" ><!-- small i, acute accent -->
+ <!ENTITY icirc "&#238;" ><!-- small i, circumflex accent -->
+ <!ENTITY iuml "&#239;" ><!-- small i, dieresis or umlaut mark -->
+ <!ENTITY eth "&#240;" ><!-- small eth, Icelandic -->
+ <!ENTITY ntilde "&#241;" ><!-- small n, tilde -->
+ <!ENTITY ograve "&#242;" ><!-- small o, grave accent -->
+ <!ENTITY oacute "&#243;" ><!-- small o, acute accent -->
+ <!ENTITY ocirc "&#244;" ><!-- small o, circumflex accent -->
+ <!ENTITY otilde "&#245;" ><!-- small o, tilde -->
+ <!ENTITY ouml "&#246;" ><!-- small o, dieresis or umlaut mark -->
+
+ <!ENTITY oslash "&#248;" ><!-- small o, slash -->
+ <!ENTITY ugrave "&#249;" ><!-- small u, grave accent -->
+ <!ENTITY uacute "&#250;" ><!-- small u, acute accent -->
+ <!ENTITY ucirc "&#251;" ><!-- small u, circumflex accent -->
+ <!ENTITY uuml "&#252;" ><!-- small u, dieresis or umlaut mark -->
+ <!ENTITY yacute "&#253;" ><!-- small y, acute accent -->
+ <!ENTITY thorn "&#254;" ><!-- small thorn, Icelandic -->
+ <!ENTITY yuml "&#255;" ><!-- small y, dieresis or umlaut mark -->
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOnum.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOnum.pen
new file mode 100644
index 0000000000..02605bfb58
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOnum.pen
@@ -0,0 +1,109 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOnum PUBLIC
+ "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN//XML">
+ %ISOnum;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+ This entity set uses hexadecimal numeric character references.
+
+ Creator: Rick Jelliffe, Allette Systems
+
+ Version: 1997-07-07
+-->
+
+<!ENTITY half "&#189;" ><!--=fraction one-half-->
+<!ENTITY frac12 "&#189;" ><!--=fraction one-half-->
+<!ENTITY frac14 "&#188;" ><!--=fraction one-quarter-->
+<!ENTITY frac34 "&#190;" ><!--=fraction three-quarters-->
+<!ENTITY frac18 "&#x215B;" >
+ <!-- or "&#xB1;&#x202;&#x2044;&#x2088;" --><!--=fraction one-eighth-->
+<!ENTITY frac38 "&#x215C;" >
+ <!-- or "&#xB3;&#x2044;&#x2088;" --><!--=fraction three-eighths-->
+<!ENTITY frac58 "&#x215D;" >
+ <!-- or "&#x2075;&#x2044;&#x2088;" --><!--=fraction five-eighths-->
+<!ENTITY frac78 "&#x215E;" >
+ <!-- or "&#x2077;&#x2044;&#x2088;" --><!--=fraction seven-eighths-->
+
+<!ENTITY sup1 "&#185;" ><!--=superscript one-->
+<!ENTITY sup2 "&#178;" ><!--=superscript two-->
+<!ENTITY sup3 "&#179;" ><!--=superscript three-->
+
+<!ENTITY plus "+" ><!--=plus sign B:-->
+<!ENTITY plusmn "&#xB1;" ><!--/pm B: =plus-or-minus sign-->
+<!ENTITY lt "&#38;#60;" ><!--=less-than sign R:-->
+<!ENTITY equals "=" ><!--=equals sign R:-->
+<!ENTITY gt ">" ><!--=greater-than sign R:-->
+<!ENTITY divide "&#247;" ><!--/div B: =divide sign-->
+<!ENTITY times "&#215;" ><!--/times B: =multiply sign-->
+
+<!ENTITY curren "&#164;" ><!--=general currency sign-->
+<!ENTITY pound "&#163;" ><!--=pound sign-->
+<!ENTITY dollar "$" ><!--=dollar sign-->
+<!ENTITY cent "&#162;" ><!--=cent sign-->
+<!ENTITY yen "&#165;" ><!--/yen =yen sign-->
+
+<!ENTITY num "#" ><!--=number sign-->
+<!ENTITY percnt "&#37;" ><!--=percent sign-->
+<!ENTITY amp "&#38;#38;" ><!--=ampersand-->
+<!ENTITY ast "*" ><!--/ast B: =asterisk-->
+<!ENTITY commat "@" ><!--=commercial at-->
+<!ENTITY lsqb "[" ><!--/lbrack O: =left square bracket-->
+<!ENTITY bsol "\" ><!--/backslash =reverse solidus-->
+<!ENTITY rsqb "]" ><!--/rbrack C: =right square bracket-->
+<!ENTITY lcub "{" ><!--/lbrace O: =left curly bracket-->
+<!ENTITY horbar "&#x2015;" ><!--=horizontal bar-->
+<!ENTITY verbar "|" ><!--/vert =vertical bar-->
+<!ENTITY rcub "}" ><!--/rbrace C: =right curly bracket-->
+<!ENTITY micro "&#181;" ><!--=micro sign-->
+<!ENTITY ohm "&#2126;" ><!--=ohm sign-->
+<!ENTITY deg "&#176;" ><!--=degree sign-->
+<!ENTITY ordm "&#186;" ><!--=ordinal indicator, masculine-->
+<!ENTITY ordf "&#170;" ><!--=ordinal indicator, feminine-->
+<!ENTITY sect "&#167;" ><!--=section sign-->
+<!ENTITY para "&#182;" ><!--=pilcrow (paragraph sign)-->
+<!ENTITY middot "&#183;" ><!--/centerdot B: =middle dot-->
+<!ENTITY larr "&#x2190;" ><!--/leftarrow /gets A: =leftward arrow-->
+<!ENTITY rarr "&#x2192;" ><!--/rightarrow /to A: =rightward arrow-->
+<!ENTITY uarr "&#x2191;" ><!--/uparrow A: =upward arrow-->
+<!ENTITY darr "&#x2193;" ><!--/downarrow A: =downward arrow-->
+<!ENTITY copy "&#169;" ><!--=copyright sign-->
+<!ENTITY reg "&#174;" ><!--/circledR =registered sign-->
+<!ENTITY trade "&#8482;" ><!--=trade mark sign-->
+<!ENTITY brvbar "&#xA6;" ><!--=bren (vertical) bar-->
+<!ENTITY not "&#xAC;" ><!--/neg /lnot =not sign-->
+<!ENTITY sung "&#x266A;" ><!--=music note (sung text sign)-->
+
+<!ENTITY excl "!" ><!--=exclamation mark-->
+<!ENTITY iexcl "&#xA1;" ><!--=inverted exclamation mark-->
+<!ENTITY quot '"' ><!--=quotation mark-->
+<!ENTITY apos "'" ><!--=apostrophe-->
+<!ENTITY lpar "(" ><!--O: =left parenthesis-->
+<!ENTITY rpar ")" ><!--C: =right parenthesis-->
+<!ENTITY comma "," ><!--P: =comma-->
+<!ENTITY lowbar "_" ><!--=low line-->
+<!ENTITY hyphen "&#x2010;" ><!--=hyphen-->
+<!ENTITY period "." ><!--=full stop, period-->
+<!ENTITY sol "/" ><!--=solidus-->
+<!ENTITY colon ":" ><!--/colon P:-->
+<!ENTITY semi ";" ><!--=semicolon P:-->
+<!ENTITY quest "?" ><!--=question mark-->
+<!ENTITY iquest "&#xBF;" ><!--=inverted question mark-->
+<!ENTITY laquo "&#x2039;" ><!--=angle quotation mark, left
+ But note that Unicode 1 & Maler & el Andaloussi give &#xAB; -->
+<!ENTITY raquo "&#x203A;" ><!--=angle quotation mark, right
+ But note that Unicode 1 & Maler & el Andaloussi give &#xBB; -->
+<!ENTITY lsquo "&#x2018;" ><!--=single quotation mark, left-->
+<!ENTITY rsquo "&#x2019;" ><!--=single quotation mark, right-->
+<!ENTITY ldquo "&#x201C;" ><!--=double quotation mark, left-->
+<!ENTITY rdquo "&#x201D;" ><!--=double quotation mark, right-->
+<!ENTITY nbsp "&#160;" ><!--=no break (required) space-->
+<!ENTITY shy "&#173;" ><!--=soft hyphen-->
+
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOpub.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOpub.pen
new file mode 100644
index 0000000000..04a5732b45
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOpub.pen
@@ -0,0 +1,110 @@
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOpub PUBLIC
+ "ISO 8879:1986//ENTITIES Publishing//EN//XML">
+ %ISOpub;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+ This entity set uses hexadecimal numeric character references.
+
+ Creator: Rick Jelliffe, Allette Systems
+
+ Version: 1997-07-07
+-->
+<!ENTITY emsp "&#x2003;" ><!--=em space-->
+<!ENTITY ensp "&#x2002;" ><!--=en space (1/2-em)-->
+<!ENTITY emsp13 "&#x2004;" ><!--=1/3-em space-->
+<!ENTITY emsp14 "&#x2005;" ><!--=1/4-em space-->
+<!ENTITY numsp "&#x2007;" ><!--=digit space (width of a number)-->
+<!ENTITY puncsp "&#x2008;" ><!--=punctuation space (width of comma)-->
+<!ENTITY thinsp "&#x2009;" ><!--=thin space (1/6-em)-->
+<!ENTITY hairsp "&#x200A;" ><!--=hair space-->
+<!ENTITY mdash "&#x2014;" ><!--=em dash-->
+<!ENTITY ndash "&#x2013;" ><!--=en dash-->
+<!ENTITY dash "&#x2010;" ><!--=hyphen (true graphic)-->
+<!ENTITY blank "&#x2423;" ><!--=significant blank symbol-->
+<!ENTITY hellip "&#x2026;" ><!--=ellipsis (horizontal)-->
+<!ENTITY nldr "&#x2025;" ><!--=double baseline dot (en leader)-->
+<!ENTITY frac13 "&#x2153;" ><!--=fraction one-third-->
+<!ENTITY frac23 "&#x2154;" ><!--=fraction two-thirds-->
+<!ENTITY frac15 "&#x2155;" ><!--=fraction one-fifth-->
+<!ENTITY frac25 "&#x2156;" ><!--=fraction two-fifths-->
+<!ENTITY frac35 "&#x2157;" ><!--=fraction three-fifths-->
+<!ENTITY frac45 "&#x2158;" ><!--=fraction four-fifths-->
+<!ENTITY frac16 "&#x2159;" ><!--=fraction one-sixth-->
+<!ENTITY frac56 "&#x215a;" ><!--=fraction five-sixths-->
+<!ENTITY incare "&#x2105;" ><!--=in-care-of symbol-->
+<!ENTITY block "&#x2588;" ><!--=full block-->
+<!ENTITY uhblk "&#x2580;" ><!--=upper half block-->
+<!ENTITY lhblk "&#x2584;" ><!--=lower half block-->
+<!ENTITY blk14 "&#x2591;" ><!--=25% shaded block-->
+<!ENTITY blk12 "&#x2592;" ><!--=50% shaded block-->
+<!ENTITY blk34 "&#x2593;" ><!--=75% shaded block-->
+<!ENTITY marker "&#x25AE;" ><!--=histogram marker-->
+<!ENTITY cir "&#x25CB;" ><!--/circ B: =circle, open-->
+<!ENTITY squ "&#x25A1;" ><!--=square, open-->
+<!ENTITY rect "&#x25AD;" ><!--=rectangle, open-->
+<!ENTITY utri "&#x25B5;" ><!--/triangle =up triangle, open-->
+<!ENTITY dtri "&#x25BF;" ><!--/triangledown =down triangle, open-->
+<!ENTITY star "&#x2606;" ><!--=star, open-->
+<!ENTITY bull "&#x2022;" ><!--/bullet B: =round bullet, filled-->
+<!ENTITY squf "&#x25AA;" ><!--/blacksquare =sq bullet, filled-->
+<!ENTITY utrif "&#x25B4;" ><!--/blacktriangle =up tri, filled-->
+<!ENTITY dtrif "&#x25BE;" ><!--/blacktriangledown =dn tri, filled-->
+<!ENTITY ltrif "&#x25C2;" ><!--/blacktriangleleft R: =l tri, filled-->
+<!ENTITY rtrif "&#x25B8;" ><!--/blacktriangleright R: =r tri, filled-->
+<!ENTITY clubs "&#x2663;" ><!--/clubsuit =club suit symbol-->
+<!ENTITY diams "&#x2662;" ><!--/diamondsuit =diamond suit symbol-->
+<!ENTITY hearts "&#x2661;" ><!--/heartsuit =heart suit symbol-->
+<!ENTITY spades "&#x2660;" ><!--/spadesuit =spades suit symbol-->
+<!ENTITY malt "&#x2720;" ><!--/maltese =maltese cross-->
+<!ENTITY dagger "&#x2020;" ><!--/dagger B: =dagger-->
+<!ENTITY Dagger "&#x2021;" ><!--/ddagger B: =double dagger-->
+<!ENTITY check "&#x2713;" ><!--/checkmark =tick, check mark-->
+<!ENTITY cross "&#x2717;" ><!--=ballot cross-->
+<!ENTITY sharp "&#x266F;" ><!--/sharp =musical sharp-->
+<!ENTITY flat "&#x266D;" ><!--/flat =musical flat-->
+<!ENTITY male "&#x2642;" ><!--=male symbol-->
+<!ENTITY female "&#x2640;" ><!--=female symbol-->
+<!ENTITY phone "&#x26E0;" ><!--=telephone symbol-->
+<!ENTITY telrec "&#x2315;" ><!--=telephone recorder symbol-->
+<!ENTITY copysr "&#x2117;" ><!--=sound recording copyright sign-->
+<!ENTITY caret "&#x2041;" ><!--=caret (insertion mark)-->
+<!ENTITY lsquor "&#x201A;" ><!--=rising single quote, left (low)-->
+<!ENTITY ldquor "&#x201E;" ><!--=rising dbl quote, left (low)-->
+
+<!ENTITY fflig "&#xFB00;" ><!--small ff ligature-->
+<!ENTITY filig "&#xFB01;" ><!--small fi ligature-->
+<!ENTITY fjlig "fj" ><!--small fj ligature-->
+<!ENTITY ffilig "&#xFB03;" ><!--small ffi ligature-->
+<!ENTITY ffllig "&#xFB04;" ><!--small ffl ligature-->
+<!ENTITY fllig "&#xFB02;" ><!--small fl ligature-->
+
+<!ENTITY mldr "&#x2025;" ><!--em leader-->
+<!ENTITY rdquor "&#x201D;" ><!--rising dbl quote, right (high)-->
+<!ENTITY rsquor "&#x2019;" ><!--rising single quote, right (high)-->
+<!ENTITY vellip "&#x22EE;" ><!--vertical ellipsis-->
+
+<!ENTITY hybull "&#x2043;" ><!--rectangle, filled (hyphen bullet)-->
+<!ENTITY loz "&#x2727;" ><!--/lozenge - lozenge or total mark-->
+<!ENTITY lozf "&#x2726;" ><!--/blacklozenge - lozenge, filled-->
+<!ENTITY ltri "&#x25C3;" ><!--/triangleleft B: l triangle, open-->
+<!ENTITY rtri "&#x25B9;" ><!--/triangleright B: r triangle, open-->
+<!ENTITY starf "&#x2605;" ><!--/bigstar - star, filled-->
+
+<!ENTITY natur "&#x266E;" ><!--/natural - music natural-->
+<!ENTITY rx "&#x211E;" ><!--pharmaceutical prescription (Rx)-->
+<!ENTITY sext "&#x2736;" ><!--sextile (6-pointed star)-->
+
+<!ENTITY target "&#x2316;" ><!--register mark or target-->
+<!ENTITY dlcrop "&#x230D;" ><!--downward left crop mark -->
+<!ENTITY drcrop "&#x230C;" ><!--downward right crop mark -->
+<!ENTITY ulcrop "&#x230F;" ><!--upward left crop mark -->
+<!ENTITY urcrop "&#x230E;" ><!--upward right crop mark -->
+
diff --git a/tools/cents/forrest.cent/resources/resources/schema/entity/ISOtech.pen b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOtech.pen
new file mode 100644
index 0000000000..b3b39f9f1b
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/resources/schema/entity/ISOtech.pen
@@ -0,0 +1,85 @@
+
+<!-- (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % ISOtech PUBLIC
+ "ISO 8879:1986//ENTITIES General Technical//EN//XML"
+ "ISOtech.pen">
+ %ISOtech;
+-->
+<!-- This version of the entity set can be used with any SGML document
+ which uses ISO 10646 as its document character set.
+ This includes XML documents and ISO HTML documents.
+ This entity set uses hexadecimal numeric character references.
+
+ Creator: Rick Jelliffe, Allette Systems
+
+ Version: 1997-07-07
+-->
+<!ENTITY aleph "&#x2135;" ><!--/aleph =aleph, Hebrew-->
+<!ENTITY and "&#x2227;" ><!--/wedge /land B: =logical and-->
+<!ENTITY ang90 "&#x221F;" ><!--=right (90 degree) angle-->
+<!ENTITY angsph "&#x2222;" ><!--/sphericalangle =angle-spherical-->
+<!ENTITY ap "&#x2249;" ><!--/approx R: =approximate-->
+<!ENTITY becaus "&#x2235;" ><!--/because R: =because-->
+<!ENTITY bottom "&#x22A5;" ><!--/bot B: =perpendicular-->
+<!ENTITY cap "&#x2229;" ><!--/cap B: =intersection-->
+<!ENTITY cong "&#x2245;" ><!--/cong R: =congruent with-->
+<!ENTITY conint "&#x222E;" ><!--/oint L: =contour integral operator-->
+<!ENTITY cup "&#x222A;" ><!--/cup B: =union or logical sum-->
+<!ENTITY equiv "&#x2261;" ><!--/equiv R: =identical with-->
+<!ENTITY exist "&#x2203;" ><!--/exists =at least one exists-->
+<!ENTITY forall "&#x2200;" ><!--/forall =for all-->
+<!ENTITY fnof "&#x192;" ><!--=function of (italic small f)-->
+<!ENTITY ge "&#x2265;" ><!--/geq /ge R: =greater-than-or-equal-->
+<!ENTITY iff "&#x21D4;" ><!--/iff =if and only if-->
+<!ENTITY infin "&#x221E;" ><!--/infty =infinity-->
+<!ENTITY int "&#x222B;" ><!--/int L: =integral operator-->
+<!ENTITY isin "&#x2208;" ><!--/in R: =set membership-->
+<!ENTITY lang "&#x2329;" ><!--/langle O: =left angle bracket-->
+<!ENTITY lArr "&#x21D0;" ><!--/Leftarrow A: =is implied by-->
+<!ENTITY le "&#x2264;" ><!--/leq /le R: =less-than-or-equal-->
+<!ENTITY minus "-" ><!--B: =minus sign-->
+<!ENTITY mnplus "&#x2213;" ><!--/mp B: =minus-or-plus sign-->
+<!ENTITY nabla "&#x2207;" ><!--/nabla =del, Hamilton operator-->
+<!ENTITY ne "&#x2260;" ><!--/ne /neq R: =not equal-->
+<!ENTITY ni "&#x220B;" ><!--/ni /owns R: =contains-->
+<!ENTITY or "&#x2228;" ><!--/vee /lor B: =logical or-->
+<!ENTITY par "&#x2225;" ><!--/parallel R: =parallel-->
+<!ENTITY part "&#x2202;" ><!--/partial =partial differential-->
+<!ENTITY permil "&#x2030;" ><!--=per thousand-->
+<!ENTITY perp "&#x22A5;" ><!--/perp R: =perpendicular-->
+<!ENTITY prime "&#x2032;" ><!--/prime =prime or minute-->
+<!ENTITY Prime "&#x2033;" ><!--=double prime or second-->
+<!ENTITY prop "&#x221D;" ><!--/propto R: =is proportional to-->
+<!ENTITY radic "&#x221A;" ><!--/surd =radical-->
+<!ENTITY rang "&#x232A;" ><!--/rangle C: =right angle bracket-->
+<!ENTITY rArr "&#x21D2;" ><!--/Rightarrow A: =implies-->
+<!ENTITY sim "&#x223C;" ><!--/sim R: =similar-->
+<!ENTITY sime "&#x2243;" ><!--/simeq R: =similar, equals-->
+<!ENTITY square "&#x25A1;" ><!--/square B: =square-->
+<!ENTITY sub "&#x2282;" ><!--/subset R: =subset or is implied by-->
+<!ENTITY sube "&#x2286;" ><!--/subseteq R: =subset, equals-->
+<!ENTITY sup "&#x2283;" ><!--/supset R: =superset or implies-->
+<!ENTITY supe "&#x2287;" ><!--/supseteq R: =superset, equals-->
+<!ENTITY there4 "&#x2234;" ><!--/therefore R: =therefore-->
+<!ENTITY Verbar "&#x2016;" ><!--/Vert =dbl vertical bar-->
+
+<!ENTITY angst "&#x212B;" ><!--Angstrom =capital A, ring-->
+<!ENTITY bernou "&#x212C;" ><!--Bernoulli function (script capital B)-->
+<!ENTITY compfn "&#x2218;" ><!--B: composite function (small circle)-->
+<!ENTITY Dot "&#xA8;" ><!--=dieresis or umlaut mark-->
+<!ENTITY DotDot "&#x20DC;" ><!--four dots above-->
+<!ENTITY hamilt "&#x210B;" ><!--Hamiltonian (script capital H)-->
+<!ENTITY lagran "&#x2112;" ><!--Lagrangian (script capital L)-->
+<!ENTITY lowast "&#x2217;" ><!--low asterisk-->
+<!ENTITY notin "&#x2209;" ><!--N: negated set membership-->
+<!ENTITY order "&#x2134;" ><!--order of (script small o)-->
+<!ENTITY phmmat "&#x2133;" ><!--physics M-matrix (script capital M)-->
+<!ENTITY tdot "&#x20DB;" ><!--three dots above-->
+<!ENTITY tprime "&#x2034;" ><!--triple prime-->
+<!ENTITY wedgeq "&#x2259;" ><!--R: corresponds to (wedge, equals)-->
+
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/images/ant_logo_medium.gif b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/ant_logo_medium.gif
new file mode 100644
index 0000000000..44bc07fa2e
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/ant_logo_medium.gif
Binary files differ
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/images/built-with-cocoon.gif b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/built-with-cocoon.gif
new file mode 100644
index 0000000000..0b38f7857b
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/built-with-cocoon.gif
Binary files differ
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/images/favicon.ico b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/favicon.ico
new file mode 100644
index 0000000000..161bcf7841
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/favicon.ico
Binary files differ
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/images/krysalis-compatible.jpg b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/krysalis-compatible.jpg
new file mode 100644
index 0000000000..077f8a1179
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/images/krysalis-compatible.jpg
Binary files differ
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/book2menu.xsl b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/book2menu.xsl
new file mode 100644
index 0000000000..0db5dfbaa6
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/book2menu.xsl
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:template match="book">
+ <menu>
+ <xsl:apply-templates/>
+ </menu>
+ </xsl:template>
+
+ <xsl:template match="project">
+ <br/><a href="{@href}"><font color="#F3510C" size="+1"><xsl:value-of select="@label"/></font></a><br/>
+ </xsl:template>
+
+ <xsl:template match="menu">
+ <br/>
+ <span class="s1"><xsl:value-of select="@label"/></span><br/>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="menu-item">
+ <xsl:if test="not(@type) or @type!='hidden'">
+ <a href="{@href}" class="s1"><xsl:value-of select="@label"/></a><br/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="node()|@*" priority="-1"/>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/document2html.xsl b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/document2html.xsl
new file mode 100644
index 0000000000..65b9efe81a
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/document2html.xsl
@@ -0,0 +1,258 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:template match="document">
+ <body>
+ <xsl:if test="normalize-space(header/title)!=''">
+ <title><xsl:value-of select="header/title"/></title>
+ <table class="centered" align="center" width="100%">
+ <tbody>
+ <tr>
+ <td align="center">
+ <table class="title" cellspacing="0" cellpadding="1" border="0">
+ <tbody>
+ <tr>
+ <td bgcolor="#525d76">
+ <table class="centered" cellspacing="0" cellpadding="2" border="0" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="#f3dd61">
+ <span class="title"><xsl:value-of select="header/title"/></span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </xsl:if>
+
+ <xsl:if test="header/subtitle">
+ <font color="#525D76"><i><xsl:value-of select="header/subtitle"/></i></font><br/>
+ </xsl:if>
+
+ <font color="#000000" size="-2">
+ <p>
+ <xsl:for-each select="header/person">
+ <xsl:choose>
+ <xsl:when test="position()=1">by</xsl:when>
+ <xsl:otherwise>, </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <a href="mailto:{@email}">
+ <xsl:value-of select="@name"/>
+ </a>
+ </p>
+ </font>
+
+ <xsl:apply-templates select="body"/>
+
+ </body>
+ </xsl:template>
+
+ <xsl:template match="changes"/>
+
+ <xsl:template match="action"/>
+
+ <xsl:template match="body">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+
+ <xsl:template name="section" match="section">
+ <xsl:param name="level"/>
+
+ <div align="right">
+ <table border="0" cellpadding="2" cellspacing="0">
+ <xsl:attribute name="width"><xsl:value-of select="number(100)-(1*(number($level)-1))"/>%</xsl:attribute>
+ <tr>
+ <td bgcolor="#525D76">
+ <font color="#ffffff">
+ <xsl:attribute name="size">
+ <xsl:choose>
+ <xsl:when test="number($level)=1">+1</xsl:when>
+ <xsl:when test="number($level)=2">+0</xsl:when>
+ <xsl:otherwise>-<xsl:value-of select="number($level)-2"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <font face="Arial,sans-serif"><b><xsl:value-of select="@title"/></b></font>
+ </font>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <br/>
+ <xsl:apply-templates>
+ <xsl:with-param name="level" select="number($level)+1"/>
+ </xsl:apply-templates>
+ </td>
+ </tr>
+ </table>
+ </div><br/>
+
+ </xsl:template>
+
+ <xsl:template match="s1">
+ <xsl:call-template name="section">
+ <xsl:with-param name="level">1</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="s2">
+ <xsl:call-template name="section">
+ <xsl:with-param name="level">2</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="s3">
+ <xsl:call-template name="section">
+ <xsl:with-param name="level">3</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="s4">
+ <xsl:call-template name="section">
+ <xsl:with-param name="level">4</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="br">
+ <br/>
+ </xsl:template>
+
+ <xsl:template match="strong|em">
+ <em><xsl:apply-templates/></em>
+ </xsl:template>
+
+ <xsl:template match="ul">
+ <ul><xsl:apply-templates/></ul>
+ </xsl:template>
+
+ <xsl:template match="li">
+ <li><xsl:apply-templates/></li>
+ </xsl:template>
+
+ <xsl:template match="ol">
+ <ol><xsl:apply-templates/></ol>
+ </xsl:template>
+
+ <xsl:template match="link">
+ <a href="{@href}"><xsl:apply-templates/></a>
+ </xsl:template>
+
+ <xsl:template match="figure">
+ <xsl:choose>
+ <xsl:when test="@src">
+ <div align="center">
+ <table border="0" cellpadding="2" cellspacing="2">
+ <tr>
+ <td bgcolor="#525D76"><font color="#ffffff" size="0"><xsl:value-of select="@alt"/></font></td>
+ </tr>
+ <tr>
+ <td><img border="0" alt="{@alt}" src="{@src}"/></td>
+ </tr>
+ <xsl:if test="@alt">
+ <tr>
+ <td><font size="-1"><ul><li><xsl:value-of select="@alt"/></li></ul></font></td>
+ </tr>
+ </xsl:if>
+
+ </table>
+ </div>
+
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="fixme">
+ <div align="center">
+ <table border="1" cellpadding="2" cellspacing="2">
+ <xsl:if test="title">
+ <tr>
+ <td bgcolor="#800000">
+ <font color="#ffffff"><xsl:value-of select="title"/></font>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td bgcolor="#c0c0c0">
+ <font color="#023264" size="-1"><xsl:apply-templates/></font>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="note">
+ <note><xsl:apply-templates/></note>
+ </xsl:template>
+
+ <xsl:template match="warn">
+ <div align="center">
+ <table border="1" cellpadding="2" cellspacing="2">
+ <xsl:if test="title">
+ <tr>
+ <td bgcolor="#800000">
+ <font color="#ffffff"><xsl:value-of select="title"/></font>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td bgcolor="#c0c0c0">
+ <font color="#023264" size="-1"><xsl:apply-templates/></font>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="code">
+ <code><xsl:apply-templates/><xsl:if test="name(.)='function'"><xsl:text>()</xsl:text></xsl:if></code>
+ </xsl:template>
+
+ <xsl:template match="source">
+ <div align="center">
+ <table border="1" cellpadding="2" cellspacing="2">
+ <tr>
+ <td>
+ <pre>
+ <xsl:apply-templates/>
+ </pre>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="table">
+ <table border="0" cellpadding="2" cellspacing="2" width="100%">
+ <xsl:apply-templates/>
+ </table>
+ </xsl:template>
+
+ <xsl:template match="th">
+ <th><xsl:apply-templates/></th>
+ </xsl:template>
+
+ <xsl:template match="tr">
+ <tr><xsl:apply-templates/></tr>
+ </xsl:template>
+
+ <xsl:template match="td">
+ <td><xsl:apply-templates/></td>
+ </xsl:template>
+
+ <xsl:template match="node()|@*" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
+
diff --git a/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/site2xhtml.xsl b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/site2xhtml.xsl
new file mode 100644
index 0000000000..075f50b979
--- /dev/null
+++ b/tools/cents/forrest.cent/resources/skins/jakarta-site/xslt/html/site2xhtml.xsl
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+
+<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xsl:version="1.0">
+ <head>
+ <meta content="text/html; charset=ISO-8859-1"/>
+ <title><xsl:value-of select="/site/body/title"/></title>
+<style type="text/css">
+<![CDATA[ body { background-color: white; font-size: normal; color: black ; }
+ a { color: #525d76; }
+ a.black { color: #000000;}
+ table {border-width: 0; width: 100%}
+ table.centered {text-align: center}
+ table.title {text-align: center; width: 80%}
+ img{border-width: 0;}
+ span.s1 {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
+ span.s1_white { font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #ffffff; }
+ span.title {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
+ span.c1 {color: #000000; font-family: Helvetica, Arial, sans-serif}
+ tr.left {text-align: left}
+ hr { width: 100%; size: 2} ]]>
+</style>
+ </head>
+ <body>
+
+ <!-- header -->
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top"><a href="http://jakarta.apache.org/index.html"><img src="common/images/group-logo.gif" border="0" vspace="0" hspace="0"/></a></td><td bgcolor="#ffffff" align="left" valign="top" width="100%"><img src="common/images/project-logo.gif" align="right" border="0" vspace="0" hspace="0"/></td>
+</tr>
+<tr>
+<td bgcolor="#525d76" colspan="2"><span class="c1"><a href="http://www.apache.org/" class="black">www.apache.org &gt;</a><a href="http://jakarta.apache.org/" class="black">jakarta.apache.org &gt;</a></span></td>
+</tr>
+<tr>
+<td height="8"></td>
+</tr>
+</table>
+
+ <!-- main -->
+ <table width="100%" cellspacing="0" cellpadding="0" border="0">
+ <tr>
+ <!-- left menu -->
+ <td width="1%"><br/></td>
+ <td width="14%" valign="top" nowrap="1">
+ <xsl:copy-of select="/site/menu/node()|@*"/>
+ </td>
+ <td width="1%"><br/></td>
+
+ <!-- contents -->
+ <td width="*" valign="top" align="left">
+ <xsl:copy-of select="/site/body/node()|@*"/>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+ <!-- footer -->
+ <table cellpadding="0" cellspacing="0" border="0" width="100%">
+ <tbody>
+ <tr>
+ <td>
+ <hr size="1" noshade=""/>
+ </td>
+ </tr>
+ <tr>
+ <td align="center">
+ <i>Copyright &#x00A9; 2002 Apache Software Foundation</i>
+ </td>
+ </tr>
+ <tr>
+ <td width="100%" align="right">
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td width="100%" align="right">
+ <a href="http://krysalis.org/"><img src="images/krysalis-compatible.jpg" alt="Krysalis Logo"/></a>
+ <a href="http://xml.apache.org/cocoon/"><img src="images/built-with-cocoon.gif" alt="Cocoon Logo"/></a>
+ <a href="http://jakarta.apache.org/ant/"><img src="images/ant_logo_medium.gif" alt="Ant Logo"/></a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </body>
+</html>
+
diff --git a/tools/cents/forrest.cent/tasks.properties b/tools/cents/forrest.cent/tasks.properties
new file mode 100644
index 0000000000..d83b787fb8
--- /dev/null
+++ b/tools/cents/forrest.cent/tasks.properties
@@ -0,0 +1 @@
+#forrest tasks \ No newline at end of file
diff --git a/tools/cents/forrest.cent/xbuild.xml b/tools/cents/forrest.cent/xbuild.xml
new file mode 100644
index 0000000000..5c48ea6207
--- /dev/null
+++ b/tools/cents/forrest.cent/xbuild.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<project default="docs" name="docs build file">
+ <!-- =================================================================== -->
+ <!-- Prepares the docs -->
+ <!-- =================================================================== -->
+ <target name="prepare-docs">
+
+ <property name="forrest.cent.dir" value="${cents.dir}/forrest.${cent.dir.suffix}"/>
+
+ <!-- define filters -->
+ <filter token="skin" value="${forrest.skin.name}"/>
+
+
+ <mkdir dir="${xlayout.build.documentation.dir}"/>
+ <mkdir dir="${xlayout.build.work.dir}"/>
+
+
+ <!-- make filtered copy of XML docs -->
+ <copy todir="${xlayout.build.documentation.dir}" filtering="on">
+ <fileset dir="${xlayout.source.documentation.dir}" casesensitive="no">
+ <include name="**/*.xml"/>
+ </fileset>
+ </copy>
+
+ <!-- make filtered copy of images -->
+ <copy todir="${xlayout.build.documentation.dir}" filtering="off">
+ <fileset dir="${xlayout.source.documentation.dir}" casesensitive="no">
+ <exclude name="**/*.xml"/>
+ </fileset>
+ </copy>
+
+ <!-- Copy Cocoon configuration and sitemap -->
+ <copy todir="${xlayout.build.documentation.dir}" filtering="on">
+ <fileset dir="${forrest.cent.dir}/conf"/>
+ </copy>
+
+ <!-- Copy Cocoon resources -->
+ <copy todir="${xlayout.build.documentation.dir}" filtering="off">
+ <fileset dir="${forrest.cent.dir}/resources"/>
+ </copy>
+
+ <!-- Copy xdocs -->
+ <mkdir dir="${xlayout.build.documentation.dir}/content/xdocs"/>
+ <copy todir="${xlayout.build.documentation.dir}/content/xdocs" filtering="on">
+ <fileset dir="${xlayout.source.documentation.content.xdocs.dir}">
+ <exclude name="*.htm*"/>
+ </fileset>
+ </copy>
+
+ <!-- Copy images -->
+ <mkdir dir="${xlayout.build.documentation.dir}/resources/images"/>
+ <copy todir="${xlayout.build.documentation.dir}/resources/images" filtering="off">
+ <fileset dir="${xlayout.source.documentation.resources.images.dir}"/>
+ </copy>
+
+ <!-- Setup entity catalog and entities -->
+ <mkdir dir="${xlayout.build.documentation.dir}/WEB-INF/classes"/>
+ <mkdir dir="${xlayout.build.documentation.dir}/WEB-INF/lib"/>
+ <move todir="${xlayout.build.documentation.dir}/WEB-INF/classes">
+ <fileset dir="${xlayout.build.documentation.dir}/resources/schema">
+ <include name="CatalogManager.properties"/>
+ </fileset>
+ </move>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Clean generated docs dir. -->
+ <!-- =================================================================== -->
+ <target name="cleandocs" description="* Cleans the build docs directories">
+ <delete dir="${xlayout.build.documentation.dir}"/>
+ </target>
+
+
+ <target name="making-docs">
+ <echo message="-------------------------------------------------------------"/>
+ <echo message=" Building docs, please stand by ..."/>
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- The documentation system -->
+ <!-- =================================================================== -->
+ <target name="owdocs"
+ depends="prepare-docs, making-docs"
+ description="* Generates the documentation">
+
+ <java classname="org.apache.cocoon.Main" fork="true" dir="${xlayout.build.documentation.dir}" failonerror="true">
+ <arg value="-c."/>
+ <arg value="-d../docs"/>
+ <arg value="-w../work"/>
+ <arg value="-l../work/cocoon.log"/>
+ <arg value="-uINFO"/>
+ <arg value="index.html"/>
+ <classpath>
+ <fileset dir="." casesensitive="yes">
+ <patternset>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.jar"/>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.zip"/>
+ </patternset>
+ </fileset>
+ <pathelement location="${tools.jar}"/>
+ <pathelement location="${xlayout.build.documentation.dir}/WEB-INF/classes"/>
+ <fileset dir="${xlayout.build.documentation.dir}/WEB-INF/lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ </java>
+
+ <echo message=" ...docs generated succesfully in ./build/docs ."/>
+ <echo message="-------------------------------------------------------------"/>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- The documentation system -->
+ <!-- =================================================================== -->
+ <target name="docs"
+ depends="cleandocs, owdocs"
+ description="Cleans docs and generates the documentation">
+
+ </target>
+
+
+
+</project>
diff --git a/tools/cents/jtidy.cent/tasks.properties b/tools/cents/jtidy.cent/tasks.properties
new file mode 100644
index 0000000000..157a041786
--- /dev/null
+++ b/tools/cents/jtidy.cent/tasks.properties
@@ -0,0 +1 @@
+#jtidy tasks \ No newline at end of file
diff --git a/tools/cents/junit.cent/tasks.properties b/tools/cents/junit.cent/tasks.properties
new file mode 100644
index 0000000000..1c1bea4d1b
--- /dev/null
+++ b/tools/cents/junit.cent/tasks.properties
@@ -0,0 +1,2 @@
+#junit tasks
+junit2=org.apache.tools.ant.taskdefs.optional.junit.JUnitTask \ No newline at end of file
diff --git a/tools/cents/junit.cent/xbuild.xml b/tools/cents/junit.cent/xbuild.xml
new file mode 100644
index 0000000000..0c430ea6b1
--- /dev/null
+++ b/tools/cents/junit.cent/xbuild.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<project default="test" name="junit tests build file">
+
+ <!-- =================================================================== -->
+ <!-- Tests -->
+ <!-- =================================================================== -->
+ <target name="test" description="Perform jUnit tests">
+ <mkdir dir="${xlayout.build.test.dir}"/>
+ <!-- Compile tests -->
+ <javac srcdir="${xlayout.source.test.dir}"
+ destdir="${xlayout.build.test.dir}"
+ debug= "${build.compiler.debug}"
+ optimize= "${build.compiler.optimize}"
+ deprecation="${build.compiler.deprecation}"
+ target= "${build.compiler.vm}"
+ nowarn= "false">
+ <classpath>
+ <path>
+ <fileset dir="." casesensitive="yes">
+ <patternset>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.jar"/>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*/*.jar"/>
+ <include name="*/*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.source.scratchpad.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*.jar"/>
+ <include name="*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.source.examples.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*.jar"/>
+ <include name="*.zip"/>
+ </patternset>
+ </fileset>
+ </path>
+ <pathelement path="${xlayout.build.classes.dir}" />
+ </classpath>
+ </javac>
+
+ <junit2 printsummary="yes" haltonfailure="yes" fork="yes">
+
+ <formatter type="xml" />
+
+ <!--nicolaken: We gotta zap these!!! -->
+ <sysproperty key="UTIL.testdata.path"
+ value="${xlayout.source.test.dir}/org/apache/poi/util/data"/>
+ <sysproperty key="HSSF.testdata.path"
+ value="${xlayout.source.test.dir}/org/apache/poi/hssf/data"/>
+
+ <classpath>
+ <path>
+ <fileset dir="." casesensitive="yes">
+ <patternset>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.jar"/>
+ <include name="${cents.dir}/*.${cent.dir.suffix}/${cent.lib.dir.name}/*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*/*.jar"/>
+ <include name="*/*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.source.scratchpad.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*.jar"/>
+ <include name="*.zip"/>
+ </patternset>
+ </fileset>
+ <fileset dir="${xlayout.source.examples.library.dir}" casesensitive="yes">
+ <patternset>
+ <include name="*.jar"/>
+ <include name="*.zip"/>
+ </patternset>
+ </fileset>
+ </path>
+ <pathelement path="${xlayout.build.classes.dir}" />
+ <pathelement location="${xlayout.build.test.dir}" />
+ <pathelement location="${xlayout.build.classes.dir}" />
+ </classpath>
+
+ <batchtest todir="${xlayout.build.test.dir}">
+ <fileset dir="${xlayout.build.test.dir}">
+ <include name="**/test/*TestCase.class"/>
+ <include name="**/*Test.class" />
+ <include name="**/Test*.class" />
+ <exclude name="**/AllTest.class" />
+ <exclude name="**/*$$*Test.class" />
+ </fileset>
+ </batchtest>
+ </junit2>
+
+ </target>
+
+ <!-- =================================================================== -->
+ <!-- Test reports -->
+ <!-- =================================================================== -->
+ <target name="report" description="Perform jUnit test reports">
+ <mkdir dir="${xlayout.build.documentation.dir}"/>
+ <mkdir dir="${xlayout.build.documentation.test.dir}"/>
+
+ <junitreport todir="${xlayout.build.documentation.test.dir}">
+ <fileset dir="${xlayout.build.test.dir}">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="frames" todir="${xlayout.build.documentation.test.dir}"/>
+ </junitreport>
+ </target>
+
+</project> \ No newline at end of file