apache > cocoon
 

HTML Generator

HTML Generator

The html generator reads an html document from the local file system or from any url. It acts similar to the file generator with the difference that it reads html documents and converts them using JTidy to xhtml.

This generator is optional and requires the jtidy package in the lib directory when building Cocoon. However, the distribution includes this package already.

  • Name : html
  • Class: org.apache.cocoon.generation.HTMLGenerator
  • Cacheable: yes - uses the last modification date of the html document for validation.

The location of the source html document is specified in the pipeline by the src attribute.

   
  <map:generate src="document.html" type="html"/>
     

The html generator, however, can operate also on a request attribute or on a XML POST request. This can be done also by the stream generator, with whom it shares the syntax: the added bonus here is that you can "sanitize" a possibly non well-formed XML snippet for further reuse later. In order to use this feature for request attributes, just omit the "src" attribute and set a parameter like the following one in the sitemap:


  <map:parameter name="form-name" value="my-request-attribute"/>

Configuring JTidy

Without any configuration, the generator produces an XHTML document, with the proper namespace. However, JTidy offers a full range of options for converting the HTML document to XML.

These options can be specified in a properties file (key=value pairs) whose location is given in the component configuration :

        
  <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator">
    <jtidy-config>jtidy.properties</jtidy-config>
  </map:generator>
        
      

The jtidy-config URL can be either relative (to the application context), one of Cocoon's special protocols such as resouce: which searches the file in the classpath.

For more information on the available configurations, please refer to the original Tidy page. Beware that configuration examples shown there use the ':' as a separator when JTidy requires a '=' as it is a standard Java properties file.