| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!DOCTYPE faqs PUBLIC "-//APACHE//DTD FAQ V1.2//EN" "http://forrest.apache.org/dtd/faq-v12.dtd" [ |
| <!ENTITY s '<code>site.xml</code>'> |
| ]> |
| <faqs title="Frequently Asked Questions"> |
| <part id="getting_started"> |
| <title>Getting Started and Building Forrest</title> |
| <faq id="faq"> |
| <question> How to use these FAQs? </question> |
| <answer> |
| <p> |
| There is no particular order to these FAQs. Use your browser's "Find |
| in this page" facility to search for keywords. |
| </p> |
| </answer> |
| </faq> |
| <faq id="overview"> |
| <question> Where can I read an overview about how to work with Forrest? </question> |
| <answer> |
| <p> |
| See the <link href="site:your-project">Using Forrest</link> guide. |
| </p> |
| </answer> |
| </faq> |
| <faq id="docs"> |
| <question>Where is all of the documentation?</question> |
| <answer> |
| <p> |
| You have a local copy of the main documentation with your version of |
| Forrest. Do 'cd site-author; forrest run' and visit |
| <code>http://localhost:8888/</code> in your browser. The most recent documentation |
| is in SVN trunk which creates the forrest.apache.org website. |
| </p> |
| <p> |
| Each <link href="site:plugins/index">plugin</link> has its own |
| documentation and working examples of its techniques. |
| </p> |
| <p> |
| The example seed site has other documentation and working examples of |
| various techniques. Do 'cd my-new-directory; forrest seed-sample; |
| forrest run'. Every hour the forrestbot generates a static version of |
| this documentation on our <link href="site:zone">testing zone</link>. |
| </p> |
| <p> |
| For older versions of Forrest see the explanation |
| <link href="#wayback">below</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="requirements"> |
| <question> What are the system requirements for Forrest? </question> |
| <answer> |
| <p> |
| Forrest includes everything necessary to build and run, except of |
| course for Java. In addition to all the Cocoon JARs, Forrest includes |
| and uses its own version of Apache Ant. |
| </p> |
| <p> |
| Java 1.5 (or newer) is required. If you are only going to use Forrest |
| as-is then you need only the Java Runtime Environment (JRE). If you |
| intend to enhance and rebuild Forrest (or use the Forrest sources with |
| Subversion or use a source snapshot) then you need the full JDK. |
| </p> |
| </answer> |
| </faq> |
| <faq id="cvs"> |
| <question> The old xml-forrest CVS code repository seems to be stale. What happened? </question> |
| <answer> |
| <p> |
| Forrest switched from a CVS code repository to SVN (Subversion) code |
| repository. The old CVS repository is closed and not kept current. |
| </p> |
| </answer> |
| </faq> |
| <faq id="svn"> |
| <question> How can I use SVN to keep up to date with the latest codebase? </question> |
| <answer> |
| <p> |
| Follow these <link href="site:build">Building Forrest</link> notes. |
| </p> |
| <p> |
| The <link href="site:your-project">Using Forrest</link> guide provides |
| further step-by-step assistance in getting started with Forrest for |
| your project. |
| </p> |
| </answer> |
| </faq> |
| <faq id="older-plugins"> |
| <question> How to use older versions of specific plugins? </question> |
| <answer> |
| <p> |
| Sometimes one does not want to use the most recent functionality of a |
| plugin and instead need to use an older version. Information about |
| changes to each plugin can be found in its |
| <link href="site:plugins/index">documentation</link>. |
| </p> |
| <p> |
| In the forrest.properties file, specify the version of the plugin that |
| you require, e.g. |
| </p> |
| <source>project.required.plugins=org.apache.forrest.plugin.input.PhotoGallery-0.1,...</source> |
| <p> |
| Users of Forrest-0.7 will need to do this for the projectInfo plugin |
| if you get the following error ... |
| </p> |
| <source>Could not find component for role: |
| [org.apache.cocoon.components.modules.input.InputModule/lm] |
| (Key='org.apache.cocoon.components.modules.input.InputModule/</source> |
| <p> |
| ... then sorry, we mistakenly added new "locationmap" functionality |
| (due in version 0.8). So do this ... |
| </p> |
| <source>project.required.plugins=org.apache.forrest.plugin.input.projectInfo-0.1,...</source> |
| </answer> |
| </faq> |
| <faq id="single-document"> |
| <question> What is the best way to generate "standalone documents" using Forrest? </question> |
| <answer> |
| <p> |
| There is a trick that can cut down your turnaround time with building. |
| In forrest.properties ... |
| </p> |
| <source> |
| # The URL to start crawling from |
| #project.start-uri=linkmap.html |
| </source> |
| <p> |
| Uncomment that and set it to the specific page that you want. Forrest |
| will build that single document, then of course it will keep crawling |
| links from there. It might be confined to a sub-directory, but |
| depending on links could end up generating the whole site. The main |
| thing is that your page of interest is built first. |
| </p> |
| <p> |
| It is probably easiest to make this change temporarily as a |
| command-line parameter, e.g. |
| </p> |
| <source> |
| forrest -Dproject.start-uri=live-sites.html |
| </source> |
| <p> |
| You can terminate forrest with 'kill' or Ctrl-C after it has built |
| your pages of interest. |
| </p> |
| <p> |
| Cocoon can be instructed via the <link href="#cli-xconf">Cocoon |
| cli.xconf</link> file to not follow links (see its "follow-links" |
| parameter). So this will build only the document that was specified. |
| Be careful, if you also usually build PDF pages, then they will not be |
| built. |
| </p> |
| <p> |
| Cocoon can also be instructed to not process certain URIs if you need |
| to temporarily exclude then. |
| </p> |
| <p> |
| Another useful technique is to use 'wget' or Apache Ant's Get task to |
| retrieve individual files, e.g. Do 'forrest run' and then |
| <code>'wget http://localhost:8888/index.pdf'</code> |
| </p> |
| </answer> |
| </faq> |
| <faq id="cygwin_mutex_error"> |
| <question> When running <code>./build.sh</code> in cygwin, I get an error: <code>cygpath.exe: |
| *** can't create title mutex, Win32 error 6</code>. </question> |
| <answer> |
| <p> |
| This |
| <link href="http://issues.apache.org/jira/browse/FOR-10">appears |
| to be a bug in cygwin</link>. Please use the .bat script instead. |
| </p> |
| </answer> |
| </faq> |
| <faq id="oldjing"> |
| <question>On Java 6 fails validate-sitemap task. Missing the RELAX NG datatype library.</question> |
| <answer> |
| <source> |
| <![CDATA[validate-sitemap: |
| apache-forrest-0.8/main/webapp/resources/schema/relaxng/sitemap-v06.rng:72:31: |
| error: datatype library "http://www.w3.org/2001/XMLSchema-datatypes" not recognized |
| ]]></source> |
| <p> |
| The version of Jing needs to be updated. |
| </p> |
| <p> |
| This is fixed in Forrest-0.9-dev version. |
| See <link href="http://issues.apache.org/jira/browse/FOR-984">FOR-984</link>. |
| </p> |
| <p> |
| One workaround is to update your copy of the |
| <link href="http://code.google.com/p/jing-trang/">Jing</link> jar at |
| <code>$FORREST_HOME/lib/core/</code> |
| </p> |
| <p> |
| Another workaround is to edit the forrest.properties configuration file |
| to expose the "forrest.validate.sitemap" property and set it to "false". |
| Might need to do the same for the "forrest.validate.stylesheets" property. |
| </p> |
| </answer> |
| </faq> |
| <faq id="winjava"> |
| <question>Windows gets confused about which Java version to use.</question> |
| <answer> |
| <p> |
| Cough, yes!. See this |
| <link href="http://mail-archives.apache.org/mod_mbox/forrest-user/200704.mbox/%3c462CA40F.5020400@rblasch.org%3e">explanation</link> |
| on the Forrest mail lists. |
| </p> |
| </answer> |
| </faq> |
| <faq id="maxmemory"> |
| <question> How can I specify the amount of memory to be used by Java? </question> |
| <answer> |
| <p> |
| There are two ways to control this. If you get an OutOfMemoryError |
| when Cocoon is generating pages, see the first paragraph. If you get |
| an OutOfMemoryError when outside of Cocoon (e.g., copying raw files), |
| see the second paragraph. |
| </p> |
| <p> |
| The <code>maxmemory</code> property in the |
| <code>forrest.properties</code> file controls how much memory Cocoon |
| uses. Like many other properties you can copy them from the default |
| configuration at <code>main/fresh-site/forrest.properties</code> |
| </p> |
| <p> |
| Set the <code>ANT_OPTS</code> environment variable before you run |
| forrest. The exact value you set it to is dependant on your JVM, but |
| something like <code>ANT_OPTS=-Xmx500M</code> will probably work. |
| </p> |
| </answer> |
| </faq> |
| <faq id="debug"> |
| <question> How can I start forrest in Java debug mode? </question> |
| <answer> |
| <p> |
| The <code>forrest.jvmargs</code> property in the |
| <code>forrest.properties</code> file can be used to start forrest in |
| debug mode on a specific port. <code>forrest.jvmargs=-Xdebug |
| -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n</code> |
| </p> |
| </answer> |
| </faq> |
| </part> |
| <part id="content_faqs"> |
| <title>Content Creation</title> |
| <faq id="edit-content"> |
| <question>What tools can be used to edit the content?</question> |
| <answer> |
| <p> |
| If you are using the Apache Forrest XML |
| <link href="site:dtd-docs">document format</link> or DocBook or other |
| XML document types, then you can use any text editor or even a |
| dedicated XML editor. You must ensure valid XML. See our |
| <link href="site:catalog" |
| >configuration notes</link> for |
| various editors. |
| </p> |
| <p> |
| Remember that Forrest itself is not a Content Management System (CMS). |
| It can be configured to draw content from a CMS. |
| See one example using the <link href="site:locationmap">Locationmap</link>. |
| </p> |
| <p> |
| There are content management systems like |
| <link href="ext:lenya">Apache Lenya</link>. |
| </p> |
| <p> |
| Remember that Forrest can also use other source formats, such as |
| OpenOffice.org docs or JSPWiki. Use the appropriate editor for those |
| document types and ensure that the document structure is consistent. |
| Forrest can also use "html" as the source format, in which case you |
| can use text editors or "html editors" such as the one provided with |
| the Mozilla web browser. |
| </p> |
| </answer> |
| </faq> |
| <faq id="site-xml"> |
| <question> |
| How to use the <code>site.xml</code> configuration file for menus and linking. |
| </question> |
| <answer> |
| <p> |
| The <code>site.xml</code> configuration file is used for two different |
| purposes: defining the navigation menus, and as a method for defining |
| references to be used when linking between documents. This file is |
| fully explained in <link href="site:linking">Menus and Linking</link>. |
| Here is a precis: |
| </p> |
| <p> |
| The labels can be whatever text you want. |
| </p> |
| <source> |
| <![CDATA[<faq label="FAQs" href="faq.html"> |
| <tech label="Technical" href="faq-tech.html"> |
| <docbook href="#docbook"/> |
| <ignoring_javadocs href="#ignoring_javadocs"/> |
| </tech> |
| <user label="User" href="faq-user.html"> |
| </faq>]]> |
| </source> |
| <p> |
| That will create a menu like this with three links: |
| </p> |
| <source>FAQs |
| Technical |
| User</source> |
| <p> |
| These documents can be linked to from other documents, like this: |
| </p> |
| <source> |
| <![CDATA[<a href="site:faq/tech"> link to the top of the Tech FAQs |
| <a href="site:faq/tech/docbook"> link to the DocBook FAQ in the Tech FAQs]]> |
| </source> |
| <p> |
| If that "docbook" entry was a unique name in your site.xml then you |
| can shorten that latter link: |
| </p> |
| <source> |
| <![CDATA[<a href="site:docbook"> link to the DocBook FAQ in the Tech FAQs]]> |
| </source> |
| </answer> |
| </faq> |
| <faq id="examples"> |
| <question> |
| Where are examples of documents and site.xml and tabs.xml files? |
| </question> |
| <answer> |
| <p> |
| There are examples in the 'forrest seed site' and also the Forrest |
| website documents are included with the distribution (<code>cd |
| forrest/site-author; forrest run</code>). |
| </p> |
| </answer> |
| </faq> |
| <faq id="crawler"> |
| <question> |
| Help, one of my documents is not being rendered. |
| </question> |
| <answer> |
| <p> |
| Did you make a link to it? Forrest does not find documents by scanning |
| the filesystem to find the source documents. Rather it starts at one |
| document and crawls the links to find other documents to process. |
| </p> |
| <p> |
| There are essentially two ways to create links. Via a site.xml file to |
| define the navigation and menu structure, or via direct relative |
| linking. See the to previous FAQs. |
| </p> |
| <p> |
| Normally the source material will be local. The Forrest crawler does |
| not follow and process off-site links. The new locationmap (0.8+) |
| enables content to be drawn from remote sources. |
| </p> |
| </answer> |
| </faq> |
| <faq id="PDF-output"> |
| <question>How can I generate one pdf-file out of the whole site or selected pages of the site?</question> |
| <answer> |
| <p> |
| Add the following entries to your site.xml file. |
| Note that the href must be exactly "wholesite" or "site" which triggers |
| a special match in the sitemap to aggregate all documents. |
| </p> |
| <source> |
| <![CDATA[ |
| <about tab="home" label="About" href=""> |
| ... |
| <all_site label="Full HTML" href="wholesite.html"/> |
| <all_sitePDF label="Full PDF" href="wholesite.pdf"/> |
| ... |
| </about>]]> |
| </source> |
| <p> |
| In this case the menu labeled "About" will have 2 new items: "Full |
| PDF" and "Full HTML". |
| </p> |
| <p> |
| See also <link href="site:pdf-tab">How to |
| create a PDF document for each tab</link>. |
| </p> |
| <p> |
| This assumes that you use the |
| <link href="site:linking">site.xml</link> method for your site |
| structure and navigation, rather than the old book.xml method. |
| </p> |
| <warning> |
| There are many issues with the "wholesite" aggregation. Search the |
| issue tracker and mail lists. |
| </warning> |
| </answer> |
| </faq> |
| <faq id="pageBreaks"> |
| <question>How do I insert page breaks into documents?</question> |
| <answer> |
| <p> |
| Page breaks do not make a great deal of sense in HTML documents |
| intended for display on a screen. However, PDF documents are intended |
| for printing and therefore page breaks can be important. |
| </p> |
| <p> |
| To insert a page break in a PDF document simply add |
| <em>pageBreakBefore</em> and/or <em>pageBreakAfter</em> to the class |
| attribute of the block you wish to force a page break on. All the |
| common block grouping elements support this class, for example, note, |
| warning, p and so on. |
| </p> |
| <p> |
| If you want these classes to be processed in your HTML documents as |
| well you should add the following to the <code>extra-css</code> |
| element in your projects <code>skinconf.xml</code> |
| </p> |
| <source> |
| .pageBreakBefore { |
| margin-bottom: 0; |
| page-break-before: always; |
| } |
| .pageBreakAfter { |
| margin-bottom: 0; |
| page-break-after: always; |
| } </source> |
| </answer> |
| </faq> |
| <faq id="clickable-email-address"> |
| <question>How can I generate html-pages to show a 'clickable' email-address (of the |
| author-element)?</question> |
| <answer> |
| <p> |
| You would override <code> |
| $FORREST_HOME/main/webapp/skins/common/xslt/html/document-to-html.xsl</code> |
| and edit the "headers/authors" template. |
| </p> |
| </answer> |
| </faq> |
| <faq id="link_raw"> |
| <question>How do I link to raw files such as config.txt and brochure.pdf? </question> |
| <answer> |
| <p> |
| Handling of raw files was significantly changed in Forrest 0.7. See |
| <link href="site:upgrading_07/raw">Upgrading to Apache Forrest |
| 0.7</link> for all the details. |
| </p> |
| </answer> |
| </faq> |
| <faq id="pdf_images"> |
| <question>Images don't display in PDFs. How do I fix this?</question> |
| <answer> |
| <p> |
| Forrest uses <link href="http://xml.apache.org/fop/">Apache FOP</link> |
| for rendering PDFs. FOP cannot handle all image types natively, and |
| requires third-party jars to be added. FOP natively handles BMP, GIF, |
| JPG, TIFF and EPS (with a few limitations). FOP can also handle SVG |
| (via Batik) and PNG (see below). For details, see |
| <link |
| href="http://xml.apache.org/fop/graphics.html">FOP |
| Graphics formats</link> |
| </p> |
| <p> |
| To get PNGs working in PDFs with Jimi: |
| </p> |
| <ol> |
| <li>Download Jimi from <link href="http://java.sun.com/products/jimi/" |
| >http://java.sun.com/products/jimi/</link></li> |
| <li>Unpack the Jimi distribution and copy JimiProClasses.zip to |
| <code>$FORREST/lib/optional/jimi-1.0.jar</code>.</li> |
| </ol> |
| <p> |
| Alternatively you can use JAI (Java Advanced Imaging API at |
| <code>http://java.sun.com/products/java-media/jai</code>). For more |
| info, see |
| <link |
| href="http://xml.apache.org/fop/graphics.html#packages">FOP |
| Graphics Packages</link> |
| </p> |
| <note> |
| Due to Sun's licensing, we cannot redistribute Jimi or JAI with |
| Forrest. |
| </note> |
| </answer> |
| </faq> |
| <faq id="tab-index"> |
| <question> The tab link in my site incorrectly assumes that 'index.html' is present in the |
| linked-to directory. How do I fix this? </question> |
| <answer> |
| <p> |
| In <code>tabs.xml</code>, use @href instead of @dir, and omit the |
| trailing '/'. Which file to serve is then a concern of the sitemap. |
| For example, if the "User Manual" tab should link to |
| <code>manual/Introduction.html</code> then <code>tabs.xml</code> |
| should contain: |
| </p> |
| <source> |
| <![CDATA[ |
| <tab label="User Manual" href="manual"/>]]> |
| </source> |
| <p> |
| and add this rule to the sitemap: |
| </p> |
| <source> |
| <![CDATA[ |
| <map:match pattern="manual"> |
| <map:redirect-to uri="manual/Introduction.html"/> |
| </map:match>]]> |
| </source> |
| </answer> |
| </faq> |
| <faq id="tab-site"> |
| <question>I need help with the interaction between tabs.xml and site.xml </question> |
| <answer> |
| <p> |
| See the <link href="site:linking/tab-site">tips</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="defaultFileName"> |
| <question> How can I change the default file name that Forrest will look for when I request a |
| URL like <code>http://myserver</code> or <code>http://myserver/mydir/</code> ? </question> |
| <answer> |
| <p> |
| To change the default file name from 'index.html' (default) to |
| 'overview.html' you need to make the following changes: |
| </p> |
| <ol> |
| <li> Create a '<link href="#cli-xconf">cli.xconf</link>' file for your project </li> |
| <li> Edit that file to replace 'index.html' in |
| <![CDATA[<default-filename>index.html</default-filename>]]> |
| with 'overview.html'. </li> |
| <li> Edit your project's <link href="site:project-sitemap">sitemap.xmap</link> file. </li> |
| <li> Add the following code just before the end of the pipelines-element:<source> |
| <![CDATA[ |
| <map:pipeline> |
| <map:match type="regexp" pattern="^.+/$"> |
| <map:redirect-to uri="overview.html"/> |
| </map:match> |
| </map:pipeline> |
| ]]> |
| </source></li> |
| </ol> |
| </answer> |
| </faq> |
| <faq id="defaultStartPage"> |
| <question> How can I use a start-up-page other than index.html? </question> |
| <answer> |
| <p> |
| Forrest by default assumes that the first page (home page) of your |
| site is named index.html. Which is good because most web servers are |
| configured to look for index.html when you call a url like |
| http://myserver |
| </p> |
| <p> |
| Like most settings in Forrest however this can be changed, for example |
| when you want your start-up-page for a CD-based documentation project |
| to be named 'start.html'. |
| </p> |
| <p> |
| To change the start page of a site: |
| </p> |
| <ol> |
| <li>Edit your project's <link href="site:project-sitemap">sitemap.xmap</link> file.</li> |
| <li>Add the following code just before the end of the pipelines-element:<source> |
| <![CDATA[ |
| <map:pipeline> |
| <map:match pattern=""> |
| <map:redirect-to uri="start.html" /> |
| </map:match> |
| </map:pipeline> |
| ]]> |
| </source></li> |
| <li>Name the uri-attribute whatever you'd like your start page to be.</li> |
| <li>Don't forget to create that page and refer to it in your site.xml</li> |
| </ol> |
| </answer> |
| </faq> |
| <faq id="output-filename-extension"> |
| <question>How to use a different filename extension for output, e.g. *.php? </question> |
| <answer> |
| <p> |
| Use the power of the Cocoon sitemaps. There is default handling for *.php (see main/webapp/sitemap.xmap) to map the 'php' extension to an internal request for "html". See more about <link href="#php">PHP</link> below. |
| </p> |
| <p> |
| Use the same internal re-direction technique for your special needs, e.g. copy that php match to your project sitemap and use ".htm" instead. |
| </p> |
| </answer> |
| </faq> |
| <faq id="php"> |
| <question> How to generate pages ready for serving via PHP? </question> |
| <answer> |
| <p> |
| Use the *.php filename extension (see <link href="#output-filename-extension">above</link>) |
| for the output html links in site.xml navigation. Add your php processing instructions to the source documents. |
| </p> |
| <p> |
| However, beware <link href="http://issues.apache.org/jira/browse/FOR-999">FOR-999</link> |
| "processing-instruction nodes in source are not always passed through to html output" |
| whereby only PIs in certain body elements are handled. |
| </p> |
| </answer> |
| </faq> |
| <faq id="label-entity"> |
| <question> How to use special characters in the labels of the site.xml file? </question> |
| <answer> |
| <p> |
| Use the numeric values for character entities. For example, rather |
| than using <code> |
| <![CDATA[ö]]> |
| </code> use <code> |
| <![CDATA[ö]]> |
| </code> |
| </p> |
| <p> |
| See the |
| <link |
| href="http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_xhtml_character_entities" |
| >XHTML |
| Character Entities</link> and see more discussion at |
| <link |
| href="http://issues.apache.org/jira/browse/FOR-244">Issue |
| FOR-244</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="encoding"> |
| <question>Does Forrest handle accents for non-English languages?</question> |
| <answer> |
| <p> |
| Yes, Forrest can process text in any language, so you can include: |
| </p> |
| <ul> |
| <li>accents: á é à ó ú</li> |
| <li>diereses: ä ë ï ö ü</li> |
| <li>tildes: ã ñ ĩ õ ũ</li> |
| </ul> |
| <p> |
| This is because sources for Forrest docs are XML documents, which can |
| include any of these, provided the encoding declared by the XML doc |
| matches the actual encoding used in the file. For example if you |
| declare the default encoding: |
| </p> |
| <source> |
| <![CDATA[<?xml version="1.0" encoding="UTF-8"?>]]> |
| </source> |
| <p> |
| but the file content is actually using ISO-8859-1 then you will |
| receive validation errors, especially if you include some non-ASCII |
| characters. |
| </p> |
| <p> |
| This situation is commonly encountered when you edit the templates |
| created by <code>forrest seed</code> with your favorite (probably |
| localized) editor without paying attention to the encoding, or when |
| you create a new file and simply copy the headers from another file. |
| </p> |
| <p> |
| Although UTF-8 is an encoding well-suited for most languages, it is |
| not usually the default in popular editors or systems. In UNIX-like |
| systems, most popular editors can handle different encodings to write |
| the file in disk. With some editors the encoding of the file is |
| preserved, while with others the default is used regardless of the |
| original encoding. In most cases the encoding used to write files can |
| be controlled by setting the environment variable <code>LANG</code> to |
| an appropriate value, for instance: |
| </p> |
| <source>[localhost]$ export LANG=en_US.UTF-8</source> |
| <p> |
| Of course the <em>appropriate</em> way to set the encoding depends on |
| the editor/OS, but ultimately relys on the user preferences. So you |
| can use the encoding you prefer, as long as the <code>encoding</code> |
| attribute of the XML declaration matches the actual encoding of the |
| file. This means that if you are not willing to abandon ISO-8859-1 you |
| can always use the following declaration instead: |
| </p> |
| <source> |
| <![CDATA[<?xml version="1.0" encoding="ISO-8859-1"?>]]> |
| </source> |
| <p> |
| Another option is to use "character entities" such as <code> |
| <![CDATA[ö]]> |
| </code> (ö) or the numeric form <code> |
| <![CDATA[ö]]> |
| </code> (ö). |
| </p> |
| <p> |
| Another related issue is that your webserver needs to send http |
| headers with the matching charset definitions to the html page. |
| </p> |
| <p> |
| Here are some references which explain further: |
| <link |
| href="http://orixo.com/events/gt2004/bios.html#torsten">GT2004 |
| presentation by Torsten Schlabach</link> and |
| <link href="http://www.alanwood.net/unicode/">Alan Wood's Unicode |
| resources</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="xml-entities"> |
| <question>How to use XML entities, for example string |
| replacement?</question> |
| <answer> |
| <p> |
| A set of symbols is available. See the demonstration in a fresh |
| 'forrest seed' site (at |
| <link href="http://forrest.zones.apache.org/ft/build/forrest-seed/samples-b/xml-entities.html">samples-b/xml-entities.html</link>). |
| For example, use |
| "<code>&myp-t;</code>" to represent the project name together with |
| trademark symbol "My Project Name™". Avoid lengthy typing and |
| potential spelling errors. |
| </p> |
| </answer> |
| </faq> |
| <faq id="cleanSite"> |
| <question> How to make Forrest clean up the project build directories? </question> |
| <answer> |
| <p> |
| By default Forrest does not clean its build directories in the project |
| workspaces. This enables Cocoon to use its disk cache to speed up |
| successive runs of forrest. |
| </p> |
| <p> |
| Doing 'forrest clean-site' will remove the contents of the project's |
| generated documents directory. Doing 'forrest clean-work' will remove |
| the project's work directories (usually build/tmp and build/webapp |
| which include the Cocoon cache and the Cocoon logs). Doing 'forrest |
| clean' will remove both sections. |
| </p> |
| </answer> |
| </faq> |
| <faq id="i18n"> |
| <question>How can I internationalise (i18n) my content?</question> |
| <answer> |
| <p> |
| For example, navigation |
| menus can be internationalized and different content can be served. |
| </p> |
| <p> |
| There is an example to demonstrate and explain the facilities. |
| See a 'forrest seed-sample' site. |
| </p> |
| <p> |
| All internationalisation of tokens is carried out by the |
| <link href="http://cocoon.apache.org/2.1/userdocs/i18nTransformer.html">Cocoon |
| i18n Transformer</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="rawHTML"> |
| <question>How can I include HTML content that is not to be skinned by Forrest?</question> |
| <answer> |
| <p> |
| To serve, for example a legacy HTML site, add something like the |
| following to your project's sitemap and place the source content in a |
| <code>src/documentation/content/old_site/</code> directory. |
| </p> |
| <source> |
| <![CDATA[ |
| <map:match pattern="old_site/**.html"> |
| <map:select type="exists"> |
| <map:when test="{properties:content}{0}"> |
| <map:read src="{properties:content}{0}" mime-type="text/html"/> |
| <!-- |
| If you want JTidy to clean up your HTML source, then use a |
| generator/serializer instead of the reader. However see FOR-679. |
| <map:generate type="html" src="{properties:content}{0}" /> |
| <map:serialize type="html"/> |
| --> |
| </map:when> |
| </map:select> |
| </map:match> |
| ]]></source> |
| <p> |
| Exactly what the match should be is dependant on your content |
| structure. It is outside the scope of this FAQ to provide full |
| details, but new users may like to refer to the |
| <link href="site:sitemap-ref">Cocoon sitemap</link> docs. |
| </p> |
| <p> |
| There is a more detailed discussion of this topic in the samples of a |
| freshly seeded site. To see this documentation do the following: |
| </p> |
| <ol> |
| <li>mkdir seed</li> |
| <li>cd seed</li> |
| <li>forrest seed-sample</li> |
| <li>forrest run</li> |
| <li><code>http://localhost:8888/samples-b/linking.html#no-decoration</code></li> |
| </ol> |
| </answer> |
| </faq> |
| <faq id="javascript"> |
| <question>How to include additional JavaScript and CSS files?</question> |
| <answer> |
| <p> |
| Place various resources (e.g. javascript, css) into the "project |
| skins" directory. The default forrest.properties has this at |
| src/documentation/skins/$skin-name/ Javascript files would go in a |
| "scripts" subdirectory. CSS files would go in a "css" subdirectory. |
| </p> |
| <p> |
| Then refer to those from your source documents with URIs like |
| <code>skin/blah.js</code> and <code>skin/foo.css</code> |
| </p> |
| <p> |
| See how this is handled in the core sitemap called |
| <code>resources.xmap</code> |
| </p> |
| <p> |
| There is more complete explanation and additional techniques |
| in the document |
| <link href="site:project-js-css">Using extra project JavaScript and CSS resources</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="linkmap"> |
| <question>How to show a Table Of Contents for the whole site?</question> |
| <answer> |
| <p> |
| Every site has an automatically generated document at |
| <code>/linkmap.html</code> which is produced from the site.xml |
| navigation configuration. It uses the @label and absolutized @href and |
| element name and @description attribute for each node. |
| </p> |
| <p> |
| For example, the Forrest project's <link href="site:linkmap">Site |
| Linkmap Table of Contents</link>. |
| </p> |
| <p> |
| The document is also useful when developing your documentation and |
| linking to other docs. The element names (column #2) e.g. |
| href="site:<strong>mail-lists</strong>" or |
| href="site:<strong>howto/overview</strong>" |
| </p> |
| <p> |
| This is also the document that 'forrest site' uses to kick-start the |
| Cocoon crawler which then follows links to build each page. See the |
| project.start-uri in the forrest.properties file. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| <part id="technical"> |
| <title>Technical</title> |
| <faq id="java-code"> |
| <question>Where is the Java code?</question> |
| <answer> |
| <p> |
| Because we are based on Apache Cocoon, a lot of the functionality is |
| provided behind-the-scenes, i.e. we use Cocoon's sitemaps and sitemap |
| components such as XSLT transformers. So there is not much need for |
| Java code in Forrest. |
| </p> |
| <p> |
| For Forrest developers who want to explore or enhance that code, see |
| the Apache Cocoon SVN trunk. From time-to-time we update Forrest's |
| packaged version of Cocoon and so can include your contributions. |
| </p> |
| <p> |
| That said, you will find some Java code in Forrest at main/java/... |
| for Cocoon components that have been developed at Forrest, e.g. |
| Locationmap and Dispatcher. There is also Java code for some plugins |
| with specialised purpose, e.g. PhotoGallery. |
| </p> |
| </answer> |
| </faq> |
| <faq id="populate-cache"> |
| <question>How to enhance the responsiveness of the cache?</question> |
| <answer> |
| <p> |
| Apache Cocoon has a sophisticated cache. When running Forrest in |
| dynamic mode, the initial visitor will receive slower response. The |
| very first page served will cause Cocoon to cache the pipelines. Later |
| requests will re-use those cached components and add others to the |
| cache. A good technique is to warm up the cache after the forrest |
| webapp has been re-started. Requesting the front page alone will |
| populate the cache with the common items used for other pages. Using a |
| spider such as wget, will warm up everything. |
| </p> |
| <p> |
| The Cocoon cache and sitemaps can be tuned. See |
| <link href="http://cocoon.apache.org/2.1/performancetips.html">Cocoon |
| Performance Tips</link> and |
| <link href="http://wiki.apache.org/cocoon/CocoonPerformance">CocoonPerformance</link> |
| and the "Object Stores" section of |
| main/webapp/WEB-INF/cocoon.xconf |
| </p> |
| <p> |
| Responsiveness can be further enhanced by utilising a transparent |
| proxy server, e.g. Apache HTTP Server as a frontend. See |
| <link href="http://wiki.apache.org/cocoon/ApacheModProxy">CocoonAndApacheModProxy</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="proxy_config"> |
| <question>I'm behind a proxy and it's preventing Plugins from being downloaded, what should I |
| do?</question> |
| <answer> |
| <p> |
| You can configure the proxy in the <code>forrest.properties</code> |
| file. Set the <code>proxy.host</code> and <code>proxy.port</code> |
| accordingly. |
| </p> |
| <p> |
| You can also cross an authenticated proxy by setting the |
| <code>proxy.user</code> and <code>proxy.password</code> accordingly. |
| </p> |
| <note label="Generalise the proxy configuration"> |
| You certainly need to cross your proxy for every Forrest projects you |
| have. To avoid to edit every project <code>forrest.properties</code> |
| files, you can do once in your |
| <code>${user.home}/forrest.properties</code> ! |
| </note> |
| </answer> |
| </faq> |
| <faq id="CVS_revison_tags"> |
| <question>How can I generate html-pages to show the Revision tag of CVS or SVN?</question> |
| <answer> |
| <p> |
| If you have:<code><version>$Revision: 1.30 |
| $</version></code>The '1.30' will be extracted and |
| displayed at the bottom of the page as "version 1.30". See for |
| example the bottom of the <link href="site:your-project"> Using |
| Forrest</link> document. |
| </p> |
| <p> |
| This technique could also be used for a modification date with $Date: |
| 2004/01/15 08:52:47 $ |
| </p> |
| <p> |
| When using Subversion, remember to set the relevant svn:keywords |
| properties. |
| </p> |
| </answer> |
| </faq> |
| <faq id="cli-xconf"> |
| <question> How to control the processing of URIs by Cocoon, e.g. exclude certain URIs, include |
| other additional ones. </question> |
| <answer> |
| <p> |
| Forrest uses a configuration file to control the processing done by |
| the Apache Cocoon command-line called cli.xconf |
| </p> |
| <p> |
| Your project can supply its own <code>cli.xconf</code> and define |
| patterns for URIs to exclude. There are also other powerful |
| configuration features. |
| </p> |
| <p> |
| This means creating a directory <code>src/documentation/conf</code> |
| (or wherever <code>${forrest.conf-dir}</code> points) and copying |
| <code>$FORREST_HOME/main/webapp/WEB-INF/cli.xconf</code> to it. |
| Declare the location of this file in the forrest.properties |
| configuration, e.g. |
| <code>project.configfile=${project.home}/src/documentation/conf/cli.xconf</code> |
| </p> |
| <p> |
| Then edit cli.xconf, and add any exclude sections that you require. |
| The default cli.xconf ignores directory links and links containing |
| 'apidocs' or starting with 'api/': |
| </p> |
| <source> |
| <![CDATA[ |
| .... |
| <!-- Includes and excludes can be used to limit which URLs are rendered --> |
| ]]><strong> |
| <![CDATA[ |
| <exclude pattern="**/"/> |
| <exclude pattern="**apidocs**"/> |
| <exclude pattern="api/**"/> |
| ]]></strong> |
| <![CDATA[ |
| <uri src="favicon.ico"/> |
| </cocoon>]]> |
| </source> |
| <p> |
| This is just an example, and you should modify it appropriately for |
| your site. |
| </p> |
| <note> |
| Wildcards may be used. These are a powerful feature of Cocoon's |
| <link |
| href="site:sitemap-ref">sitemap</link>. For example, |
| <strong>foo/*</strong> would match <code>foo/bar</code>, but not |
| <code>foo/bar/baz</code> — use <strong>foo/**</strong> to match |
| that. |
| </note> |
| <p> |
| See the example "<link href="site:howto/asf-mirror">HowTo Generate an ASF mirrors page</link>" |
| which explains how to include non-linked extra documents to the processing |
| using the Cocoon CLI. |
| </p> |
| </answer> |
| </faq> |
| <faq id="ignoring_javadocs"> |
| <question> How do I stop Forrest breaking on links to external files that may not exist, like |
| javadocs? </question> |
| <answer> |
| <p> |
| This can be done by overriding the <link href="#cli-xconf"> |
| <code>cli.xconf</code> </link> Cocoon config file, and defining |
| patterns for URLs to exclude. |
| </p> |
| </answer> |
| </faq> |
| <faq id="claimed_patterns"> |
| <question>Some of my files are not being processed because they use common filenames. </question> |
| <answer> |
| <p> |
| Certain patterns are claimed by the default sitemaps for special |
| processing. These reserved words include: <code>site, wholesite, changes, todo, |
| faq, images, my-images, skinconf, community, howto</code> |
| </p> |
| <p> |
| Sometimes there are workarounds, e.g. faq.html or faq-interview.html |
| would fail, but interview-faq.html would be fine. In future versions |
| of Forrest we will attempt to deal with this issue |
| (<link href="http://issues.apache.org/jira/browse/FOR-217">FOR-217</link>). |
| </p> |
| </answer> |
| </faq> |
| <faq id="build_msg_a"> |
| <question>What do the symbols and numbers mean when Forrest lists each document that it has |
| built? </question> |
| <answer> |
| <p> |
| Each time that Cocoon processes a link, it will report the status |
| messages ... |
| </p> |
| <source> |
| <![CDATA[... |
| * [212/166] [0/0] 1.16s 62.4Kb docs_0_60/your-project.pdf |
| X [0] /docs_0_80/upgrading_08.html BROKEN: No pipeline matched... |
| * [213/164] [0/0] 0.391s 29.2Kb docs_0_70/howto/howto-buildPlugin.pdf |
| ^ apidocs/index.html |
| * [214/170] [7/66] 1.476s 45.5Kb docs_0_60/sitemap-ref.html |
| ...]]> |
| </source> |
| <ul> |
| <li>Column 1 is the page build status (*=okay X=brokenLink ^=pageSkipped).</li> |
| <li>Column 2 is the page count (pagesComplete/pagesRemaining). The latter will change because during processing one page, Cocoon will discover more.</li> |
| <li>Column 3 is the number of links that were gathered from that page (newLinksInPage/linksInPage).</li> |
| <li>Column 4 is the time taken.</li> |
| <li>Column 5 is the page size.</li> |
| </ul> |
| </answer> |
| </faq> |
| <faq id="headless_operation"> |
| <question> When generating PNG images from SVG, I get an error: Can't connect to X11 window |
| server using ':0.0' as the value of the DISPLAY variable. </question> |
| <answer> |
| <p> |
| If you are using JDK 1.5 or newer, you can enable <em>headless</em> |
| operation by running Forrest with the <code>forrest.jvmarg</code> |
| parameter set to <code>-Djava.awt.headless=true</code>, like this: |
| </p> |
| <source>forrest -Dforrest.jvmargs=-Djava.awt.headless=true site</source> |
| <p> |
| See also |
| <link href="http://cocoon.apache.org/2.1/faq/faq-configure-environment.html" |
| >Cocoon |
| FAQ</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="project-logo-svg"> |
| <question> |
| The project logo that is generated from SVG is truncating my project name. |
| </question> |
| <answer> |
| <p> |
| In a 'forrest seed site' the project and the group logo are generated |
| from a Scalable Vector Graphics (SVG) file, using the text from the |
| <code><project-name></code> and <code><group-name></code> |
| elements of the <code>skinconf.xml</code> file. If you have a long |
| project-name then you may need to adjust the width of the image. |
| Perhaps you want to change the colours too. Edit the file at |
| <code>src/documentation/content/xdocs/images/project.svg</code> and |
| adjust the "width" attribute of the <svg> element. For further |
| details see <link href="http://www.w3.org/Graphics/SVG/">SVG</link> |
| resources. |
| </p> |
| </answer> |
| </faq> |
| <faq id="catalog"> |
| <question> How do i configure my favourite XML editor or parser to find the local Forrest |
| DTDs? </question> |
| <answer> |
| <p> |
| Notes are provided for various tools at |
| <link href="site:catalog">Using Catalog Entity Resolver for local |
| DTDs</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="project-dtd"> |
| <question>How to configure the Catalog Entity Resolver to use my own local project DTDs?</question> |
| <answer> |
| <p> |
| See <link href="site:your-project/new_dtd">Using Forrest</link> for |
| configuration guidance. |
| </p> |
| </answer> |
| </faq> |
| <faq id="local-catalog"> |
| <question>We need an additional system-wide catalog to share DTDs between projects</question> |
| <answer> |
| <p> |
| See <link href="site:validation/catalog">Using Forrest</link> for |
| configuration guidance. |
| </p> |
| </answer> |
| </faq> |
| <faq id="debug-catalog"> |
| <question>How to debug the Catalog Entity Resolver and local DTDs?</question> |
| <answer> |
| <p> |
| See <link href="site:validation/debug-catalog">XML validation</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="skin"> |
| <question> How to make the site look better and change its skin? </question> |
| <answer> |
| <p> |
| There are <link href="site:skins">default skins</link> provided, which |
| are configurable and so should meet the needs of most projects. The |
| aim is to provide many capabilities so that extra skins are not |
| needed. |
| </p> |
| <p> |
| See notes about |
| <link href="site:your-project/skins">configuration</link> of the |
| skins. Some projects may have special needs and can define their |
| <link |
| href="site:your-project/new-skin">own skin</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="xsp"> |
| <question>How do I enable <acronym title="eXtensible Server Pages">XSP</acronym> processing?</question> |
| <answer> |
| <p> |
| First consider whether your needs would be better met by Cocoon |
| itself, rather than Forrest. |
| </p> |
| <p> |
| That said, there are valid reasons for wanting programmatically |
| generated content, so here is how to enable XSP: |
| </p> |
| <ol> |
| <li>Download <link |
| href="http://svn.apache.org/repos/asf/cocoon/trunk/lib/optional/" |
| >jdtcore-*.jar</link> from Cocoons SVN tree, and copy it to the $FORREST_HOME/main/webapp/WEB-INF/lib |
| directory (or lib/core/ directory in the source distribution).</li> |
| <li><p> |
| Add the following generator definition in the map:generators |
| section of your |
| <link |
| href="site:project-sitemap">project |
| sitemap</link> |
| </p> |
| <source> |
| <![CDATA[ |
| <map:generator name="serverpages" |
| pool-grow="2" pool-max="32" pool-min="4" |
| src="org.apache.cocoon.generation.ServerPagesGenerator"/>]]> |
| </source></li> |
| <li><p> |
| Decide how you want to use XSP. For single files, you could just |
| define a *.xml matcher: |
| </p> |
| <source> |
| <![CDATA[ |
| <map:match pattern="dynamic.xml"> |
| <map:generate src="content/xdocs/dynamic.xsp" type="serverpages"/> |
| ... |
| <map:serialize type="xml"/> |
| </map:match>]]> |
| </source> |
| <p> |
| You may instead wish to override forrest.xmap to define a general |
| mapping for XSPs. |
| </p></li> |
| </ol> |
| <p> |
| See also the |
| <link href="http://wiki.apache.org/cocoon/AddingXSPToForrest" |
| >AddingXSPToForrest</link> |
| Wiki page. |
| </p> |
| </answer> |
| </faq> |
| <faq id="breadcrumbs"> |
| <question>How do breadcrumbs work? Why don't they work locally?</question> |
| <answer> |
| <p> |
| Breadcrumbs begin with up to three URLs specified in |
| <code>skinconf.xml</code>. Here is what the Forrest site uses: |
| </p> |
| <source> |
| <![CDATA[ |
| <trail> |
| <link1 name="Apache Software Foundation" href="http://www.apache.org/"/> |
| <link2 name="Apache Forrest" href="http://forrest.apache.org/"/> |
| <link3 name="" href=""/> |
| </trail>]]> |
| </source> |
| <p> |
| If any links are blank, they are not used. After these first links, |
| JavaScript looks at the URL for the current page and makes a link for |
| each directory after the domain. If you are viewing the site locally, |
| there is no domain and so there will be no extra breadcrumbs, only the |
| ones that are specified in <code>skinconf.xml</code>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="run_port"> |
| <question>How do I make <code>forrest run</code> listen on a different port?</question> |
| <answer> |
| <p> |
| <code>forrest run -Dforrest.jvmargs="-Djetty.port=80"</code> |
| </p> |
| <p> |
| Or copy Forrest's main/webapp/jettyconf.xml file to your project's |
| src/documentation directory and set the port number in that file. Then |
| do <code>forrest run</code> |
| </p> |
| </answer> |
| </faq> |
| <faq id="debugging"> |
| <question>Can I run Forrest with Java debugging turned on?</question> |
| <answer> |
| <p> |
| If you use an IDE like Eclipse and want to debug java code in Forrest |
| you need to start Forrest with debugging mode turned on. To do this |
| you need to add <code>-Xdebug |
| -Xrunjdwp:transport=dt_socket,address=8000,server=y,susp end=n</code> |
| to the <code>forrest.jvmargs</code> property in the |
| <code>forrest.properties</code> file. Don't forget to ensure the |
| property is uncommented in that file. |
| </p> |
| </answer> |
| </faq> |
| <faq id="checksums"> |
| <question>How do I enable Cocoon's document checksum feature?</question> |
| <answer> |
| <p> |
| Why might you want to do this? There is really no effect on Cocoon |
| processing, but a little time can be saved on filesystem writes, which |
| will accumulate to a big savings for a site with thousands of files. |
| </p> |
| <p> |
| Some tools depend on the "date-last-modified" timestamp of the |
| generated files. For example, the Forrestbot will then deploy only the |
| modified files. |
| </p> |
| <p> |
| There was some discussion about this on the Forrest developer mailing |
| list: |
| <link href="http://marc.theaimsgroup.com/?l=forrest-dev&s=cocoon+checksum">Cocoon |
| Checksum</link> Specifically note that this feature only stops Cocoon |
| from writing to disk if the new file is the same as the existing file. |
| Cocoon still spends the same amount of time generating the content as |
| it would if checksums were not enabled. |
| </p> |
| <p> |
| Locate the <code>checksums-uri</code> tag within cli.xconf and replace |
| the contents with an absolute path and filename for the checksums |
| file. Projects can supply their own (see FAQ: |
| <link href="#cli-xconf">Cocoon cli.xconf</link>) or use the default |
| installation-wide cli.xconf file. |
| </p> |
| </answer> |
| </faq> |
| <faq id="sitemap-entities"> |
| <question>How to configure some Cocoon sitemap components, e.g. output html encoding or doctype?</question> |
| <answer> |
| <p> |
| The core Cocoon components are defined in the |
| <code>main/webapp/sitemap.xmap</code> file. Normally the default |
| settings are suitable. There are some things that you might like to |
| change per project. For example, change the html encoding for output |
| html files from the default UTF-8 or configure a different document |
| type declaration for the Dispatcher. |
| </p> |
| <p> |
| Create a fresh site with 'forrest seed' and see the set of symbols at the |
| <code>src/documentation/resources/schema/symbols-project-v10.ent</code> file. |
| Copy that file to your own projects at the same location. Also add the |
| entry to your project xml catalog as shown in the seed site at |
| <code>src/documentation/resources/schema/catalog.xcat</code> file. |
| </p> |
| <p> |
| Now copy the particular entity that you wish to re-define from |
| <code>main/webapp/resources/schema/entity/symbols-core-v10.ent</code> |
| file into your project symbols file and edit the entity declaration. |
| Re-start Forrest. |
| </p> |
| </answer> |
| </faq> |
| <faq id="handle-errors"> |
| <question>How to enable Cocoon error handling?</question> |
| <answer> |
| <p> |
| When Cocoon encounters an exception then it will present a default |
| page to explain the error. Better error handling can be configured |
| by adding a "map:handle-errors" section to each sitemap from which |
| such exceptions might arise. |
| </p> |
| <p> |
| That is easily added directly to your project sitemap for any |
| special processing. |
| However for many cases it needs to be added to the main |
| <code>webapp/sitemap.xmap</code> file. |
| </p> |
| <p> |
| Do this by adding a "sitemap-handle-errors" xml entity to your project |
| "symbols" file (<link href="#sitemap-entities">explained above</link>). |
| For example: |
| </p> |
| <source> |
| <![CDATA[<!ENTITY sitemap-handle-errors ' |
| <map:handle-errors> |
| <map:select type="exception"> |
| <map:when test="resourceNotFound"> |
| <map:generate type="exception"/> |
| <map:transform src="{lm:transform.exception.text}"> |
| <map:parameter name="type" value="404"/> |
| </map:transform> |
| <map:serialize type="text" status-code="404"/> |
| </map:when> |
| </map:select> |
| </map:handle-errors> |
| '>]]></source> |
| <p> |
| Some exception selectors are already configured in Forrest's main |
| <code>webapp/sitemap.xmap</code> file at the "map:selectors" section. |
| There is a mechanism for declaring more selectors for your project. |
| As above, add a "sitemap-selectors" xml entity to your project "symbols" file. |
| For this example, we demonstrate using an extra file for the snippet content. |
| </p> |
| <source> |
| <![CDATA[<!ENTITY sitemap-selectors SYSTEM "sitemap-selectors.xml">]]></source> |
| <p> |
| The file will be found relative to your project "symbols" file that declared it. |
| (If you need to hold a common set of such files elsewhere, then the |
| project Catalog Entity Resolver could be configured.) |
| So here is an example "sitemap-selectors" snippet to configure the XPathExceptionSelector |
| to declare other exception names for use in a more comprehensive |
| "map:handle-errors" section: |
| </p> |
| <source> |
| <![CDATA[<map:selector name="exception2" src="org.apache.cocoon.selection.XPathExceptionSelector"> |
| <exception name="transformer2" class="javax.xml.transform.TransformerException" unroll="true"> |
| <xpath name="goofer2" test="message='The identifier is not allowed.'"/> |
| </exception> |
| <exception class="java.lang.Throwable" unroll="true"/> |
| </map:selector>]]></source> |
| <p> |
| The "message" text is issued from a stylesheet-directed termination |
| via <code><![CDATA[<xsl:message terminate="yes">]]></code> |
| </p> |
| <p> |
| This file-based entity is a very useful technique, as it handles the |
| case where both double-quotes and single-quotes are required in the entity content. |
| </p> |
| <p> |
| See further <link href="http://s.apache.org/b8V">explanation</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="svn-eol-style"> |
| <question>Why are there SVN diffs for some documents, even though they have not changed?</question> |
| <answer> |
| <p> |
| These un-necessary differences happen because the comitter who did 'svn add' for those files |
| did not have their Subversion client configured properly for the "svn:eol-style" setting. |
| See some <link href="site:tasks/subversion-monitoring">notes</link> |
| about rectifying this issue. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| <part id="old_faqs"> |
| <title>Older version: 0.6</title> |
| <faq id="old_claimed_patterns"> |
| <question>Some of my files are not being processed because they use common filenames. </question> |
| <answer> |
| <p> |
| Certain patterns are claimed by the default sitemaps for special |
| processing. These include: <code>site, changes, todo, faq, images, |
| my-images, skinconf, community, howto</code> |
| </p> |
| <p> |
| Sometimes there are workarounds, e.g. faq.html or faq-interview.html |
| would fail, but interview-faq.html would be fine. In future versions |
| of Forrest we will attempt to deal with this issue |
| (<link href="http://issues.apache.org/jira/browse/FOR-217">FOR-217</link>). |
| </p> |
| </answer> |
| </faq> |
| </part> |
| <part id="general"> |
| <title>General</title> |
| <faq id="wayback"> |
| <question> Where is documentation for older versions of Forrest? </question> |
| <answer> |
| <p> |
| Each version of Forrest contains its own documentation, as explained |
| <link href="#docs">above</link>. |
| </p> |
| <p> |
| The Forrest website holds |
| <link href="site:versions/overview">documentation</link> |
| for only three versions of Forrest: the immediate past release, |
| the current release, and the in-development version. |
| </p> |
| <p> |
| Thanks to the <link href="http://archive.org/">Internet Archive</link>, |
| the Wayback Machine holds all past documentation. |
| For example, the 'Upgrading notes" for |
| <link href="https://web.archive.org/web/*/http://forrest.apache.org/docs_0_60/upgrading_06.html">v0.6</link> and |
| <link href="https://web.archive.org/web/*/http://forrest.apache.org/docs_0_70/upgrading_07.html">v0.7</link> versions. |
| </p> |
| </answer> |
| </faq> |
| <faq id="generating_menus"> |
| <question>What is the relationship between &s; and <code>book.xml</code>? </question> |
| <answer> |
| <p> |
| One &s; file in your project root can replace all the book.xml files |
| (one per directory) in your site. Internally, Forrest uses &s; to |
| dynamically generate book.xml files. However, Forrest first checks for |
| the existence of a book.xml file, so backwards-compatibility is |
| preserved. If a directory has a book.xml file, the book.xml will be |
| used to generate the menu. This supplement is useful in situations |
| where &s;-generated menus aren't appropriate. See |
| <link href="site:linking">Menus and Linking</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="docbook"> |
| <question> How do I use DocBook as the XML documentation format? </question> |
| <answer> |
| <p> |
| There are two ways. Forrest has a <code>simplifiedDocbook</code> |
| plugin which can transform the DocBook format into the Forrest "xdocs" |
| format on-the-fly and then render that as normal Forrest documents. Be |
| aware that the stylesheet that does this transformation is |
| deliberately very limited and does not attempt to deal with all |
| DocBook elements. |
| </p> |
| <p> |
| The other way is to use the full DocBook stylesheets directly. The |
| DocBook DTDs are shipped with Forrest and automatically handled. |
| However, you will need to have the DocBook stylesheets on your system |
| (they are too massive to ship with Forrest) and configure Forrest |
| accordingly. You will need to create a |
| <link href="site:project-sitemap">project sitemap</link> as explained |
| in <link href="site:your-project">Using Forrest</link> and add matches |
| to handle your DocBook documents. Here is an example. Note that you |
| need to change it to suit your situation. The match must be very |
| specific so that only the DocBook documents are matched. The rest of |
| the documents will be handled by Forrest core. Powerful regex |
| capabilities are available. |
| </p> |
| <source> |
| <![CDATA[<?xml version="1.0"?> |
| <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> |
| <map:pipelines> |
| <map:pipeline> |
| <map:match pattern="resolver-*.html"> |
| <map:generate src="{properties:content.xdocs}resolver-{1}.xml"/> |
| <map:transform |
| src="file:///usr/share/sgml/docbook/xsl-stylesheets/xhtml/docbook.xsl"/> |
| <map:serialize type="xhtml"/> |
| </map:match> |
| </map:pipeline> |
| </map:pipelines> |
| </map:sitemap>]]> |
| </source> |
| <p> |
| You need to define the xhtml serializer used in <map:serialize |
| type="xhtml"/> in the components section of the sitemap. See the |
| <link href="http://cocoon.apache.org/2.1/userdocs/serializers/xhtml-serializer.html">Cocoon |
| docs</link> for the elements you need to add to define this component. |
| You can see examples of other components being added in the |
| <code>FORREST_HOME/main/webapp/sitemap.xmap</code> file. Alternatively |
| use the "html" DocBook stylesheets and the default Cocoon serializer, |
| i.e. <map:serialize type="html"/> |
| </p> |
| <p> |
| The output of the above sitemap will be plain html not adorned with a |
| Forrest theme and navigation. If instead you need the latter, then use |
| the following technique instead. This transforms DocBook xml to html, |
| then uses a Forrest core stylesheet to transform and serialize to the |
| internal xml format, then the normal machinery takes over and does the |
| output transformation. This use the Content Aware Pipelines |
| (<link href="site:cap">SourceTypeAction</link>) to peek at the source |
| xml. If it is DocBook-4.2 then this sitemap match is triggered, if not |
| then it falls through to the core of Forrest. |
| </p> |
| <source> |
| <![CDATA[<?xml version="1.0"?> |
| <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> |
| <map:components> |
| <map:actions> |
| <map:action logger="sitemap.action.sourcetype" |
| name="sourcetype"src="org.apache.forrest.sourcetype.SourceTypeAction"> |
| <sourcetype name="docbook-v4.2"> |
| <document-declaration public-id="-//OASIS//DTD DocBook XML V4.2//EN"/> |
| </sourcetype> |
| </map:action> |
| </map:actions> |
| <map:selectors default="parameter"> |
| <map:selector logger="sitemap.selector.parameter" |
| name="parameter" src="org.apache.cocoon.selection.ParameterSelector"/> |
| </map:selectors> |
| </map:components> |
| <map:pipelines> |
| <map:pipeline> |
| <map:match pattern="**.xml"> |
| <map:act type="sourcetype" src="{properties:content.xdocs}{1}.xml"> |
| <map:select type="parameter"> |
| <map:parameter name="parameter-selector-test" value="{sourcetype}"/> |
| <map:when test="docbook-v4.2"> |
| <map:generate src="{properties:content.xdocs}{../1}.xml"/> |
| <map:transform |
| src="file:///usr/share/sgml/docbook/xsl-stylesheets/html/docbook.xsl"/> |
| <map:transform src="{forrest:forrest.stylesheets}/html-to-document.xsl"/> |
| <map:transform type="idgen"/> |
| <map:serialize type="xml-document"/> |
| </map:when> |
| </map:select> |
| </map:act> |
| </map:match> |
| </map:pipeline> |
| </map:pipelines> |
| </map:sitemap>]]> |
| </source> |
| <p> |
| You can also use a mixture of the methods, some handled automatically |
| by Forrest and some directly using DocBook stylesheets. You can also |
| have a mixture of source files as "document-v*" DTD and DocBook. |
| </p> |
| <p> |
| Ensure that the document type declaration in your XML instance is well |
| specified. Use a public identifier. The DTD will then be properly |
| resolved by Forrest. If you need to use different DTDs, then see |
| <link href="site:your-project/new_dtd">Using Forrest</link> for |
| configuration guidance. |
| </p> |
| </answer> |
| </faq> |
| <faq id="version"> |
| <question> How to report which version of Forrest is being used and the properties that are |
| set? </question> |
| <answer> |
| <p> |
| Do <code>'forrest -projecthelp'</code> or <code>'./build.sh'</code> to |
| find the version number. |
| Also when starting <code>'forrest'</code> or <code>'forrest run'</code> |
| the versions are reported for forrest, java, and ant. |
| </p> |
| <p> |
| To list the properties and other stuff, add "forrest.echo=true" to your |
| forrest.properties file and watch the build messages. Doing |
| <code>'forrest -v'</code> will provide verbose build messages and other useful |
| information. |
| </p> |
| <p> |
| In <code>'forrest run'</code> mode, use the |
| <link href="site:forrestbar">Forrestbar</link> to see the build-info |
| and properties, or access them directly: |
| </p> |
| <ul> |
| <li><code>http://localhost:8888/build-info</code></li> |
| <li><code>http://localhost:8888/module.properties.properties</code></li> |
| </ul> |
| <p> |
| See the documentation about the new <link href="site:properties">Properties</link> |
| system. |
| </p> |
| </answer> |
| </faq> |
| <faq id="logs"> |
| <question> Where are the log files to find more infomation about errors? </question> |
| <answer> |
| <p> |
| The logfiles are at <code>build/webapp/WEB-INF/logs/</code> |
| </p> |
| <p> |
| The log level can be raised with the <code>logkit.xconf</code> |
| configuration. If you are using Forrest in the interactive webapp mode |
| (which is generally easiest for debugging errors) then see the |
| <code>main/webapp/WEB-INF/logkit.xconf</code> file. If you are |
| generating a static site (with command-line 'forrest') then copy |
| <code>$FORREST_HOME/main/webapp/WEB-INF/logkit.xconf</code> to your |
| project at <code>src/documentation/conf/logkit.xconf</code> and modify |
| it. See more information and efficiency tips with |
| <link |
| href="http://wiki.apache.org/cocoon/ExploringTheLogs">Cocoon |
| logging</link>. |
| </p> |
| <p> |
| Doing <code>'forrest -v'</code> will provide verbose build messages to |
| the standard output. |
| </p> |
| </answer> |
| </faq> |
| <faq id="verbose-ant"> |
| <question> How to filter or reduce the standard output messages? </question> |
| <answer> |
| <p> |
| Where normally you would do |
| <code>'forrest'</code> or <code>'forrest run'</code> etc. instead use |
| the "quiet" option, and do |
| <code>'forrest -q'</code> or <code>'forrest -q run'</code> etc. |
| If errors are reported, then drop the "quiet" option and run again to |
| get the context for the error. |
| </p> |
| <p> |
| Doing <code>'forrest -v'</code> will provide very verbose build messages to |
| the standard output. |
| </p> |
| </answer> |
| </faq> |
| <faq id="coloured-ant"> |
| <question> How to enabled coloured standard output messages? </question> |
| <answer> |
| <p> |
| Adding colour to the forrest output messages will greatly assist |
| readability. |
| </p> |
| <p> |
| Set the ANT_ARGS environment variable like so:<br /> |
| <code>export ANT_ARGS="$ANT_ARGS -logger org.apache.tools.ant.listener.AnsiColorLogger"</code> |
| </p> |
| <p> |
| To change the default colours, set the ANT_OPTS environment variable |
| like so:<br /> |
| <code>export ANT_OPTS="$ANT_OPTS -Dant.logger.defaults=$FORREST_HOME/etc/AnsiColorLogger.properties"</code><br /> |
| and create that configuration file as |
| <link href="http://ant.apache.org/manual/listeners.html#AnsiColorLogger">explained</link> |
| in the Apache Ant Manual. |
| That is required on Mac OS X and the "Attribute" for each colour needs |
| to be "0" rather than the default "2". |
| </p> |
| <p> |
| Note that not all terminals support ANSI color codes. |
| </p> |
| </answer> |
| </faq> |
| <faq id="how_can_I_help"> |
| <question> How to help? </question> |
| <answer> |
| <p> |
| Join one of the Forrest project <link href="site:mail-lists">mailing |
| lists</link> and tell us what you would like to see improved. We |
| regard all feedback as valuable, particularly from |
| newcomers—often, close proximity blinds software developers to |
| faults that are obvious to everyone else. Don't be shy! |
| </p> |
| </answer> |
| </faq> |
| <faq id="patch"> |
| <question> How to contribute a patch? </question> |
| <answer> |
| <p> |
| Please send all contributions via our <link href="site:bugs">issue |
| tracker</link>. Here are notes about |
| <link href="site:contrib/patch">making patches</link>. |
| </p> |
| <p> |
| More info about contributing can be found at the |
| <link href="site:contrib">Contributing to Forrest</link> page. It is |
| always a good idea to check the Forrest |
| <link |
| href="site:bugs">issue tracker</link> before diving |
| in. |
| </p> |
| </answer> |
| </faq> |
| <faq id="jobs"> |
| <question> How can job positions be advertised? </question> |
| <answer> |
| <p> |
| Employers can send notices about employment opportunities. There is a |
| special jobs<AT>apache.org mailing list. You can also send these |
| notices to the project mailing lists, e.g. dev list at Forrest or |
| Cocoon (add [jobs] to the subject line). You can also approach |
| particular developers off-list. However only genuine jobs, not pleas |
| for free support (see <link href="site:mail-lists">mailing |
| lists</link>). |
| </p> |
| <p> |
| Some enlightened employers enable their employees to contribute |
| material which was created during work-time using work-related |
| resources. See |
| <link href="http://apache.org/foundation/how-it-works/legal.html">ASF Development Process</link>. |
| </p> |
| </answer> |
| </faq> |
| <faq id="press"> |
| <question>Is there a press kit? Who can journalists contact?</question> |
| <answer> |
| <p> |
| Press enquiries should be co-ordinated through the ASF Public Relations Committee (PRC). |
| See <link href="http://www.apache.org/foundation/contact.html">contact</link> information. |
| The PRC also provides guidelines and handles particular usage of ASF |
| trademarks and logos (see also |
| <link href="http://www.apache.org/foundation/license-faq.html#Marks">FAQ</link> |
| and |
| <link href="http://www.apache.org/foundation/marks/">Guidelines</link>). |
| </p> |
| <p> |
| The Apache Forrest logo |
| (<link href="/images/project-logo2.png">PNG</link>) |
| and banner (<link href="http://svn.apache.org/repos/asf/forrest/trunk/site-author/resources/images/apache-forrest-original.svg">SVG</link> |
| | <link href="/images/apache-forrest2.png">PNG</link>) |
| are available. |
| Unfortunately the logo is only available as PNG. |
| </p> |
| </answer> |
| </faq> |
| <faq id="security"> |
| <question>How to report a security issue?</question> |
| <answer> |
| <p> |
| Security and vulnerability issues are co-ordinated through the |
| <link href="http://www.apache.org/security/">ASF Security Team</link>. |
| This is only for reporting undisclosed security vulnerabilities in |
| Apache products. For other issues, use the Forrest project |
| <link href="site:bugs">Issue tracker</link>. |
| </p> |
| </answer> |
| </faq> |
| </part> |
| </faqs> |