You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2002/12/01 23:09:13 UTC
cvs commit: xml-cocoon2/src/java/org/apache/cocoon/generation HTMLGenerator.java
sylvain 2002/12/01 14:09:12
Modified: . Tag: cocoon_2_0_3_branch changes.xml
src/documentation/xdocs/userdocs/generators Tag:
cocoon_2_0_3_branch html-generator.xml
src/java/org/apache/cocoon/generation Tag:
cocoon_2_0_3_branch HTMLGenerator.java
Log:
The HTMLGenerator now accepts a JTidy configuration file for fine-grained control on the generated document.
Revision Changes Path
No revision
No revision
1.138.2.74 +5 -1 xml-cocoon2/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/changes.xml,v
retrieving revision 1.138.2.73
retrieving revision 1.138.2.74
diff -u -r1.138.2.73 -r1.138.2.74
--- changes.xml 30 Nov 2002 10:23:54 -0000 1.138.2.73
+++ changes.xml 1 Dec 2002 22:09:11 -0000 1.138.2.74
@@ -39,6 +39,10 @@
</devs>
<release version="@version@" date="@date@">
+ <action dev="SW" type="update">
+ The HTMLGenerator now accepts a JTidy configuration file for fine-grained
+ control on the generated document.
+ </action>
<action dev="CH" type="fix">
New Logicsheet for use with InputModules.
</action>
No revision
No revision
1.1.2.1 +22 -1 xml-cocoon2/src/documentation/xdocs/userdocs/generators/html-generator.xml
Index: html-generator.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/documentation/xdocs/userdocs/generators/html-generator.xml,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- html-generator.xml 3 Jan 2002 12:31:04 -0000 1.1
+++ html-generator.xml 1 Dec 2002 22:09:12 -0000 1.1.2.1
@@ -8,6 +8,7 @@
<type>Technical document</type>
<authors>
<person name="Carsten Ziegeler" email="cziegeler@apache.org"/>
+ <person name="Sylvain Wallez" email="sylvain@apache.org"/>
</authors>
<abstract>This document describes the html generator of Cocoon.</abstract>
</header>
@@ -15,7 +16,8 @@
<s1 title="HTML Generator">
<p>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.</p>
+ html documents and converts them using <link href="http://sourceforge.net/projects/jtidy">JTidy</link>
+ to xhtml.</p>
<p>This generator is optional and requires the jtidy package
in the lib directory when building Cocoon. However,
the distribution includes this package already.</p>
@@ -31,6 +33,25 @@
<map:generate src="document.html" type="html"/>
]]>
</source>
+ </s1>
+ <s1 title="Configuring JTidy">
+ <p>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.</p>
+ <p>These options can be specified in a properties file (key=value pairs) whose location is given in the
+ component configuration :</p>
+ <source>
+ <![CDATA[
+ <map:generator type="html" src="org.apache.cocoon.generation.HTMLGenerator">
+ <jtidy-config>jtidy.properties</jtidy-config>
+ </map:generator>
+ ]]>
+ </source>
+ <p>The <code>jtidy-config</code> URL can be either relative (to the application context), one of Cocoon's special
+ protocols such as <code>resouce:</code> which searches the file in the classpath.</p>
+ <p>For more information on the available configurations, please refer to the
+ <link href="http://www.w3.org/People/Raggett/tidy/">original Tidy page</link>. Beware that configuration
+ examples shown there use the ':' as a separator when JTidy requires a '=' as it is a standard Java properties file.
+ </p>
</s1>
</body>
No revision
No revision
1.14.2.2 +50 -3 xml-cocoon2/src/java/org/apache/cocoon/generation/HTMLGenerator.java
Index: HTMLGenerator.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/generation/HTMLGenerator.java,v
retrieving revision 1.14.2.1
retrieving revision 1.14.2.2
diff -u -r1.14.2.1 -r1.14.2.2
--- HTMLGenerator.java 29 Nov 2002 08:52:16 -0000 1.14.2.1
+++ HTMLGenerator.java 1 Dec 2002 22:09:12 -0000 1.14.2.2
@@ -50,6 +50,10 @@
*/
package org.apache.cocoon.generation;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentManager;
@@ -60,11 +64,13 @@
import org.apache.cocoon.caching.CacheValidity;
import org.apache.cocoon.caching.Cacheable;
import org.apache.cocoon.caching.TimeStampCacheValidity;
+import org.apache.cocoon.components.url.URLFactory;
import org.apache.avalon.excalibur.xml.xpath.XPathProcessor;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.environment.URLFactorySourceResolver;
import org.apache.cocoon.util.HashUtil;
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.apache.cocoon.xml.XMLUtils;
@@ -83,15 +89,17 @@
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
+import java.util.Properties;
/**
* @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @author <a href="mailto:barozzi@nicolaken.com">Nicola Ken Barozzi</a>
+ * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
* @version CVS $Id$
*/
public class HTMLGenerator extends ComposerGenerator
-implements Cacheable, Disposable {
+implements Configurable, Cacheable, Disposable {
/** The source */
private Source inputSource;
@@ -101,6 +109,9 @@
/** XPath Processor */
private XPathProcessor processor = null;
+
+ /** JTidy properties */
+ private Properties properties;
public void compose(ComponentManager manager)
throws ComponentException {
@@ -112,6 +123,36 @@
}
}
+ public void configure(Configuration config) throws ConfigurationException {
+
+ String configUrl = config.getChild("jtidy-config").getValue(null);
+
+ if(configUrl != null) {
+ URLFactory urlFactory = null;
+ Source configSource = null;
+ try {
+ urlFactory = (URLFactory)this.manager.lookup(URLFactory.ROLE);
+ URLFactorySourceResolver urlResolver = new URLFactorySourceResolver(urlFactory, this.manager);
+ configSource = urlResolver.resolve(configUrl);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Loading configuration from " + configSource.getSystemId());
+ }
+
+ this.properties = new Properties();
+ this.properties.load(configSource.getInputStream());
+
+ } catch (Exception e) {
+ getLogger().warn("Cannot load configuration from " + configUrl);
+ throw new ConfigurationException("Cannot load configuration from " + configUrl, e);
+ } finally {
+ this.manager.release(urlFactory);
+ if (configSource != null) {
+ configSource.recycle();
+ }
+ }
+ }
+ }
+
/**
* Recycle this component.
* All instance variables are set to <code>null</code>.
@@ -196,7 +237,13 @@
// Setup an instance of Tidy.
Tidy tidy = new Tidy();
tidy.setXmlOut(true);
- tidy.setXHTML(true);
+
+ if (this.properties == null) {
+ tidy.setXHTML(true);
+ } else {
+ tidy.setConfigurationFromProps(this.properties);
+ }
+
//Set Jtidy warnings on-off
tidy.setShowWarnings(getLogger().isWarnEnabled());
//Set Jtidy final result summary on-off
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org