You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by jv...@apache.org on 2006/05/15 00:16:14 UTC
svn commit: r406451 - in /maven/doxia/trunk/doxia-doc-renderer: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/maven/ src/main/java/org/apache/maven/doxia/
src/main/java/org/apache/maven/doxia/doc...
Author: jvanzyl
Date: Sun May 14 15:16:12 2006
New Revision: 406451
URL: http://svn.apache.org/viewcvs?rev=406451&view=rev
Log:
o adding vincent's document renderer
Added:
maven/doxia/trunk/doxia-doc-renderer/
maven/doxia/trunk/doxia-doc-renderer/pom.xml (with props)
maven/doxia/trunk/doxia-doc-renderer/src/
maven/doxia/trunk/doxia-doc-renderer/src/main/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java (with props)
maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/
maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/document.mdo
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/
maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt (with props)
maven/doxia/trunk/doxia-doc-renderer/src/test/
maven/doxia/trunk/doxia-doc-renderer/src/test/java/
maven/doxia/trunk/doxia-doc-renderer/src/test/resources/
Added: maven/doxia/trunk/doxia-doc-renderer/pom.xml
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/pom.xml?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/pom.xml (added)
+++ maven/doxia/trunk/doxia-doc-renderer/pom.xml Sun May 14 15:16:12 2006
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>doxia</artifactId>
+ <groupId>org.apache.maven.doxia</groupId>
+ <version>1.0-alpha-8-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>doxia-doc-renderer</artifactId>
+ <name>Doxia Document Renderer Component</name>
+ <version>1.0-SNAPSHOT</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.modello</groupId>
+ <artifactId>modello-maven-plugin</artifactId>
+ <version>1.0-alpha-8</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>xpp3-writer</goal>
+ <goal>java</goal>
+ <goal>xpp3-reader</goal>
+ <goal>xsd</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <version>1.0.0</version>
+ <model>src/main/mdo/document.mdo</model>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <developers>
+ <developer>
+ <id>vsiveton</id>
+ <name>Vincent Siveton</name>
+ <email>vsiveton@apache.org</email>
+ <organization>Apache Software Foundation</organization>
+ <roles>
+ <role>Java Developer</role>
+ </roles>
+ <timezone>-5</timezone>
+ </developer>
+ </developers>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-i18n</artifactId>
+ <version>1.0-beta-6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.doxia</groupId>
+ <artifactId>doxia-module-itext</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <!-- plexus-container-default uses 1.0.4 -->
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>1.2-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Propchange: maven/doxia/trunk/doxia-doc-renderer/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java Sun May 14 15:16:12 2006
@@ -0,0 +1,61 @@
+package org.apache.maven.doxia.docrenderer;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Base renderer interface for the <code>document</code>
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public interface DocRenderer
+{
+ String ROLE = DocRenderer.class.getName();
+
+ /**
+ * Render all files from a site directory to an output directory
+ *
+ * @param siteDirectory the input directory contains files to be generated
+ * @param outputDirectory the output directory where files are generated
+ * @throws DocRendererException if any
+ * @throws IOException if any
+ */
+ void render( File siteDirectory, File outputDirectory )
+ throws DocRendererException, IOException;
+
+ /**
+ * Render a document depending a context and a document descriptor
+ *
+ * @param siteDirectory the input directory contains files to be generated
+ * @param outputDirectory the output directory where file are generated
+ * @param documentDescriptor the document descriptor
+ * @throws DocRendererException if any
+ * @throws IOException if any
+ */
+ void render( File siteDirectory, File outputDirectory, File documentDescriptor )
+ throws DocRendererException, IOException;
+
+ /**
+ * Get the output extension supported
+ *
+ * @return the ouput extension supported
+ */
+ public String getOutputExtension();
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java Sun May 14 15:16:12 2006
@@ -0,0 +1,48 @@
+package org.apache.maven.doxia.docrenderer;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+/**
+ * A <code>document</code> renderer exception
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class DocRendererException
+ extends Exception
+{
+ /**
+ * Default constructor
+ *
+ * @param message
+ */
+ public DocRendererException( String message )
+ {
+ super( message );
+ }
+
+ /**
+ * Other constructor
+ *
+ * @param message
+ * @param t
+ */
+ public DocRendererException( String message, Throwable t )
+ {
+ super( message, t );
+ }
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/DocRendererException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java Sun May 14 15:16:12 2006
@@ -0,0 +1,444 @@
+package org.apache.maven.doxia.docrenderer.itext;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.maven.doxia.Doxia;
+import org.apache.maven.doxia.docrenderer.DocRenderer;
+import org.apache.maven.doxia.docrenderer.DocRendererException;
+import org.apache.maven.doxia.docrenderer.document.DocumentModel;
+import org.apache.maven.doxia.docrenderer.document.DocumentTOCItem;
+import org.apache.maven.doxia.docrenderer.document.io.xpp3.DocumentXpp3Reader;
+import org.apache.maven.doxia.module.itext.ITextSink;
+import org.apache.maven.doxia.module.itext.ITextUtil;
+import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
+import org.apache.maven.doxia.site.module.SiteModule;
+import org.apache.maven.doxia.site.module.manager.SiteModuleManager;
+import org.apache.xml.utils.DefaultErrorHandler;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import com.lowagie.text.ElementTags;
+
+/**
+ * Abstract <code>document</code> render with the <code>iText</code> framework
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public abstract class AbstractITextRender
+ extends AbstractLogEnabled
+ implements DocRenderer
+{
+ private static String XSLT_RESOURCE = "org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt";
+
+ private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
+
+ private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
+
+ /**
+ * @plexus.requirement
+ */
+ protected SiteModuleManager siteModuleManager;
+
+ /**
+ * @plexus.requirement
+ */
+ protected Doxia doxia;
+
+ static
+ {
+ TRANSFORMER_FACTORY.setErrorListener( new DefaultErrorHandler() );
+ }
+
+ /**
+ * @see org.apache.maven.doxia.docrenderer.DocRenderer#render(java.io.File, java.io.File)
+ */
+ public void render( File siteDirectory, File outputDirectory )
+ throws DocRendererException, IOException
+ {
+ for ( Iterator i = siteModuleManager.getSiteModules().iterator(); i.hasNext(); )
+ {
+ SiteModule module = (SiteModule) i.next();
+
+ File moduleBasedir = new File( siteDirectory, module.getSourceDirectory() );
+
+ if ( moduleBasedir.exists() )
+ {
+ List docs = FileUtils.getFileNames( moduleBasedir, "**/*." + module.getExtension(), null, false );
+
+ for ( Iterator j = docs.iterator(); j.hasNext(); )
+ {
+ String doc = (String) j.next();
+ String fullPathDoc = new File( moduleBasedir, doc ).getPath();
+
+ String outputITextName = doc.substring( 0, doc.indexOf( "." ) + 1 ) + "xml";
+ File outputITextFile = new File( outputDirectory, outputITextName );
+ if ( !outputITextFile.getParentFile().exists() )
+ {
+ outputITextFile.getParentFile().mkdirs();
+ }
+ String iTextOutputName = doc.substring( 0, doc.indexOf( "." ) + 1 ) + getOutputExtension();
+ File iTextOutputFile = new File( outputDirectory, iTextOutputName );
+ if ( !iTextOutputFile.getParentFile().exists() )
+ {
+ iTextOutputFile.getParentFile().mkdirs();
+ }
+
+ parse( fullPathDoc, module, outputITextFile );
+
+ generateOutput( outputITextFile, iTextOutputFile );
+ }
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.maven.doxia.docrenderer.DocRenderer#render(java.io.File, java.io.File, java.io.File)
+ */
+ public void render( File siteDirectory, File outputDirectory, File documentDescriptor )
+ throws DocRendererException, IOException
+ {
+ if ( ( documentDescriptor == null ) || ( !documentDescriptor.exists() ) )
+ {
+ getLogger().info( "No documentDescriptor is found. Generate all documents." );
+ render( siteDirectory, outputDirectory );
+ return;
+ }
+
+ DocumentModel documentModel;
+ try
+ {
+ documentModel = new DocumentXpp3Reader().read( new FileReader( documentDescriptor ) );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new DocRendererException( "Error parsing document descriptor", e );
+ }
+ catch ( IOException e )
+ {
+ throw new DocRendererException( "Error reading document descriptor", e );
+ }
+
+ if ( documentModel.getOutputName() == null )
+ {
+ getLogger().info( "No outputName is defined in the document descriptor. Using 'generated_itext'" );
+ documentModel.setOutputName( "generated_itext" );
+ }
+
+ if ( ( documentModel.getToc() == null ) || ( documentModel.getToc().getItems() == null ) )
+ {
+ getLogger().info( "No TOC is defined in the document descriptor. Merging all documents." );
+ }
+
+ List iTextFiles = new LinkedList();
+ for ( Iterator i = siteModuleManager.getSiteModules().iterator(); i.hasNext(); )
+ {
+ SiteModule module = (SiteModule) i.next();
+
+ File moduleBasedir = new File( siteDirectory, module.getSourceDirectory() );
+
+ if ( moduleBasedir.exists() )
+ {
+ List docs = FileUtils.getFileNames( moduleBasedir, "**/*." + module.getExtension(), null, false );
+
+ for ( Iterator j = docs.iterator(); j.hasNext(); )
+ {
+ String doc = (String) j.next();
+ String fullPathDoc = new File( moduleBasedir, doc ).getPath();
+
+ String outputITextName = doc.substring( 0, doc.lastIndexOf( "." ) + 1 ) + "xml";
+ File outputITextFile = new File( outputDirectory, outputITextName );
+
+ if ( ( documentModel.getToc() == null ) || ( documentModel.getToc().getItems() == null ) )
+ {
+ iTextFiles.add( outputITextFile );
+
+ if ( !outputITextFile.getParentFile().exists() )
+ {
+ outputITextFile.getParentFile().mkdirs();
+ }
+
+ parse( fullPathDoc, module, outputITextFile );
+ }
+ else
+ {
+ for ( Iterator k = documentModel.getToc().getItems().iterator(); k.hasNext(); )
+ {
+ DocumentTOCItem tocItem = (DocumentTOCItem) k.next();
+
+ if ( tocItem.getRef() == null )
+ {
+ getLogger().info( "No ref defined for an tocItem in the document descriptor." );
+ continue;
+ }
+
+ String outTmp = StringUtils.replace( outputITextFile.getAbsolutePath(), "\\", "/" );
+ outTmp = outTmp.substring( 0, outTmp.lastIndexOf( "." ) );
+
+ String outRef = StringUtils.replace( tocItem.getRef(), "\\", "/" );
+ if (outRef.lastIndexOf( "." )!= -1)
+ {
+ outRef = outRef.substring( 0, outRef.lastIndexOf( "." ) );
+ }
+ else
+ {
+ outRef = outRef.substring( 0, outRef.length() );
+ }
+
+ if ( outTmp.indexOf( outRef ) != -1 )
+ {
+ iTextFiles.add( outputITextFile );
+
+ if ( !outputITextFile.getParentFile().exists() )
+ {
+ outputITextFile.getParentFile().mkdirs();
+ }
+
+ parse( fullPathDoc, module, outputITextFile );
+ }
+ }
+ }
+ }
+ }
+ }
+
+ File iTextFile = new File( outputDirectory, documentModel.getOutputName() + ".xml" );
+ File iTextOutput = new File( outputDirectory, documentModel.getOutputName() + "." + getOutputExtension() );
+ Document document = generateDocument( iTextFiles );
+ transform( documentModel, document, iTextFile );
+ generateOutput( iTextFile, iTextOutput );
+ }
+
+ /**
+ * Generate an ouput file with the iText framework
+ *
+ * @param iTextFile
+ * @param iTextOutput
+ * @throws DocRendererException if any
+ * @throws IOException if any
+ */
+ public abstract void generateOutput( File iTextFile, File iTextOutput )
+ throws DocRendererException, IOException;
+
+ /**
+ * Parse a sink
+ *
+ * @param fullPathDoc
+ * @param module
+ * @param outputITextFile
+ * @throws DocRendererException
+ * @throws IOException
+ */
+ private void parse( String fullPathDoc, SiteModule module, File outputITextFile )
+ throws DocRendererException, IOException
+ {
+ ITextSink sink = new ITextSink( new FileWriter( outputITextFile ) );
+
+ sink.setClassLoader( new URLClassLoader( new URL[] { outputITextFile.getParentFile().toURL() } ) );
+ try
+ {
+ FileReader reader = new FileReader( fullPathDoc );
+
+ doxia.parse( reader, module.getParserId(), sink );
+ }
+ catch ( ParserNotFoundException e )
+ {
+ throw new DocRendererException( "Error getting a parser for " + fullPathDoc + ": " + e.getMessage() );
+ }
+ catch ( ParseException e )
+ {
+ getLogger().error( "Error parsing " + fullPathDoc + ": " + e.getMessage(), e );
+ }
+ finally
+ {
+ sink.flush();
+
+ sink.close();
+ }
+ }
+
+ /**
+ * Merge all iTextFiles to a single one
+ *
+ * @param iTextFiles
+ * @return a document
+ * @throws DocRendererException if any
+ * @throws IOException if any
+ */
+ private Document generateDocument( List iTextFiles )
+ throws DocRendererException, IOException
+ {
+ Document document;
+ try
+ {
+ document = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ }
+ catch ( ParserConfigurationException e )
+ {
+ throw new DocRendererException( "Error building document :" + e.getMessage() );
+ }
+ document.appendChild( document.createElement( ElementTags.ITEXT ) ); // Used only to set a root
+
+ for ( int i = 0; i < iTextFiles.size(); i++ )
+ {
+ File iTextFile = (File) iTextFiles.get( i );
+
+ Document iTextDocument;
+ try
+ {
+ iTextDocument = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder().parse( iTextFile );
+ }
+ catch ( SAXException e )
+ {
+ throw new DocRendererException( "SAX Error : " + e.getMessage() );
+ }
+ catch ( ParserConfigurationException e )
+ {
+ throw new DocRendererException( "Error parsing configuration : " + e.getMessage() );
+ }
+
+ // Only one chapter per doc
+ Node chapter = iTextDocument.getElementsByTagName( ElementTags.CHAPTER ).item( 0 );
+ try
+ {
+ document.getDocumentElement().appendChild( document.importNode( chapter, true ) );
+ }
+ catch ( DOMException e )
+ {
+ throw new DocRendererException( "Error appending chapter for " + iTextFile + " : " + e.getMessage() );
+ }
+ }
+
+ return document;
+ }
+
+ /**
+ * Init the transformer object
+ *
+ * @return an instanced transformer object
+ * @throws DocRendererException if any
+ */
+ private Transformer initTransformer()
+ throws DocRendererException
+ {
+ try
+ {
+ Transformer transformer = TRANSFORMER_FACTORY.newTransformer( new StreamSource( DefaultPdfRenderer.class
+ .getResourceAsStream( "/" + XSLT_RESOURCE ) ) );
+ transformer.setErrorListener( TRANSFORMER_FACTORY.getErrorListener() );
+
+ transformer.setOutputProperty( OutputKeys.OMIT_XML_DECLARATION, "false" );
+ transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
+ transformer.setOutputProperty( OutputKeys.METHOD, "xml" );
+ transformer.setOutputProperty( OutputKeys.ENCODING, "UTF-8" );
+
+ return transformer;
+ }
+ catch ( TransformerConfigurationException e )
+ {
+ throw new DocRendererException( "Error configuring Transformer for " + XSLT_RESOURCE + ": "
+ + e.getMessage() );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ throw new DocRendererException( "Error configuring Transformer for " + XSLT_RESOURCE + ": "
+ + e.getMessage() );
+ }
+ }
+
+ /**
+ * Add transformer parameters
+ *
+ * @param transformer
+ * @param documentModel
+ */
+ private void addTransformerParameters( Transformer transformer, DocumentModel documentModel )
+ {
+ transformer.setParameter( "title", documentModel.getMeta().getTitle() );
+ transformer.setParameter( "author", documentModel.getMeta().getAuthor() );
+ transformer.setParameter( "creationdate", new Date().toString() );
+ transformer.setParameter( "subject", documentModel.getMeta().getSubject() );
+ transformer.setParameter( "keywords", documentModel.getMeta().getKeywords() );
+ transformer.setParameter( "producer", "Generated with Doxia by " + System.getProperty( "user.name" ) );
+ if ( ITextUtil.isPageSizeSupported( documentModel.getMeta().getTitle() ) )
+ {
+ transformer.setParameter( "pagesize", documentModel.getMeta().getPageSize() );
+ }
+ else
+ {
+ transformer.setParameter( "pagesize", "A4" );
+ }
+
+ transformer.setParameter( "frontPageHeader", "" );
+ transformer.setParameter( "frontPageTitle", documentModel.getMeta().getTitle() );
+ transformer.setParameter( "frontPageFooter", "Generated date " + new Date().toString() );
+ }
+
+ /**
+ * Transform a document to an iTextFile
+ *
+ * @param documentModel
+ * @param document
+ * @param iTextFile
+ * @throws DocRendererException
+ */
+ private void transform( DocumentModel documentModel, Document document, File iTextFile )
+ throws DocRendererException
+ {
+ Transformer transformer = initTransformer();
+
+ addTransformerParameters( transformer, documentModel );
+
+ try
+ {
+ transformer.transform( new DOMSource( document ), new StreamResult( iTextFile ) );
+ }
+ catch ( TransformerException e )
+ {
+ throw new DocRendererException( "Error transformer Document from " + document + ": " + e.getMessage() );
+ }
+ }
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/AbstractITextRender.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java Sun May 14 15:16:12 2006
@@ -0,0 +1,62 @@
+package org.apache.maven.doxia.docrenderer.itext;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.maven.doxia.docrenderer.DocRendererException;
+import org.apache.maven.doxia.module.itext.ITextUtil;
+
+/**
+ * PDF render with the <code>iText</code> framework
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ * @plexus.component role="org.apache.maven.doxia.docrenderer.PdfRenderer"
+ */
+public class DefaultPdfRenderer
+ extends AbstractITextRender
+ implements PdfRenderer
+{
+ /**
+ * @see org.apache.maven.doxia.docrenderer.DocRenderer#getOutputExtension()
+ */
+ public String getOutputExtension()
+ {
+ return "pdf";
+ }
+
+ /**
+ * @see org.apache.maven.doxia.docrenderer.itext.AbstractITextRender#generateOutput(java.io.File, java.io.File)
+ */
+ public void generateOutput( File iTextFile, File iTextOutput )
+ throws DocRendererException, IOException
+ {
+ getLogger().debug( "Writing : " + iTextOutput );
+ try
+ {
+ ITextUtil.writePdf( new FileInputStream( iTextFile ), new FileOutputStream( iTextOutput ) );
+ }
+ catch ( RuntimeException e )
+ {
+ throw new DocRendererException( "Error writing PDF from " + iTextOutput + ": " + e.getMessage() );
+ }
+ }
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultPdfRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java Sun May 14 15:16:12 2006
@@ -0,0 +1,62 @@
+package org.apache.maven.doxia.docrenderer.itext;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.maven.doxia.docrenderer.DocRendererException;
+import org.apache.maven.doxia.module.itext.ITextUtil;
+
+/**
+ * RTF render with the <code>iText</code> framework
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ * @plexus.component role="org.apache.maven.doxia.docrenderer.RtfRenderer"
+ */
+public class DefaultRtfRenderer
+ extends AbstractITextRender
+ implements RtfRenderer
+{
+ /**
+ * @see org.apache.maven.doxia.docrenderer.DocRenderer#getOutputExtension()
+ */
+ public String getOutputExtension()
+ {
+ return "rtf";
+ }
+
+ /**
+ * @see org.apache.maven.doxia.docrenderer.itext.AbstractITextRender#generateOutput(java.io.File, java.io.File)
+ */
+ public void generateOutput( File iTextFile, File iTextOutput )
+ throws DocRendererException, IOException
+ {
+ getLogger().debug( "Writing : " + iTextOutput );
+ try
+ {
+ ITextUtil.writeRtf( new FileInputStream( iTextFile ), new FileOutputStream( iTextOutput ) );
+ }
+ catch ( RuntimeException e )
+ {
+ throw new DocRendererException( "Error writing RTF from " + iTextOutput + ": " + e.getMessage() );
+ }
+ }
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/DefaultRtfRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java Sun May 14 15:16:12 2006
@@ -0,0 +1,30 @@
+package org.apache.maven.doxia.docrenderer.itext;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import org.apache.maven.doxia.docrenderer.DocRenderer;
+
+/**
+ * PDF renderer interface for the <code>iText</code> framework
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public interface PdfRenderer extends DocRenderer
+{
+ String ROLE = PdfRenderer.class.getName();
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/PdfRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java Sun May 14 15:16:12 2006
@@ -0,0 +1,30 @@
+package org.apache.maven.doxia.docrenderer.itext;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+
+import org.apache.maven.doxia.docrenderer.DocRenderer;
+
+/**
+ * RTF renderer interface for the <code>iText</code> framework
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public interface RtfRenderer extends DocRenderer
+{
+ String ROLE = RtfRenderer.class.getName();
+}
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/itext/RtfRenderer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/document.mdo
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/document.mdo?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/document.mdo (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/mdo/document.mdo Sun May 14 15:16:12 2006
@@ -0,0 +1,137 @@
+<?xml version="1.0"?>
+
+<model>
+ <id>document</id>
+ <name>Document</name>
+ <description><![CDATA[Model for Document in Doxia.]]></description>
+ <defaults>
+ <default>
+ <key>package</key>
+ <value>org.apache.maven.doxia.docrenderer.document</value>
+ </default>
+ </defaults>
+ <classes>
+ <class rootElement="true" xml.tagName="document">
+ <name>DocumentModel</name>
+ <description>Describes the overall document model.</description>
+ <version>1.0.0</version>
+ <fields>
+ <field xml.attribute="true">
+ <name>outputName</name>
+ <version>1.0.0</version>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>meta</name>
+ <description>The Meta information properties.</description>
+ <version>1.0.0</version>
+ <association>
+ <type>DocumentMeta</type>
+ </association>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>toc</name>
+ <description>The TOC information properties.</description>
+ <version>1.0.0</version>
+ <association>
+ <type>DocumentTOC</type>
+ </association>
+ <identifier>true</identifier>
+ </field>
+ </fields>
+ </class>
+
+ <class>
+ <name>DocumentMeta</name>
+ <description>Element that contains some meta information about the document.</description>
+ <version>1.0.0</version>
+ <fields>
+ <field>
+ <name>title</name>
+ <version>1.0.0</version>
+ <description>Title of the document.</description>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>author</name>
+ <version>1.0.0</version>
+ <description>The author of the document.</description>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>subject</name>
+ <version>1.0.0</version>
+ <description>The subject of the document.</description>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>keywords</name>
+ <version>1.0.0</version>
+ <description>The keywords of the document</description>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field>
+ <name>pageSize</name>
+ <version>1.0.0</version>
+ <description>The pagesize of the document</description>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ </fields>
+ </class>
+
+ <class>
+ <name>DocumentTOC</name>
+ <description>A Table Of Content for the document.</description>
+ <version>1.0.0</version>
+ <fields>
+ <field xml.attribute="true">
+ <name>name</name>
+ <description>The name to use for the menu.</description>
+ <version>1.0.0</version>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field xml.listStyle="flat">
+ <name>items</name>
+ <description>TOC item.</description>
+ <version>1.0.0</version>
+ <association>
+ <type>DocumentTOCItem</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ <identifier>true</identifier>
+ </field>
+ </fields>
+ </class>
+
+ <class>
+ <name>DocumentTOCItem</name>
+ <description>A menu item.</description>
+ <version>1.0.0</version>
+ <fields>
+ <field xml.attribute="true">
+ <name>name</name>
+ <description>The name to use for the toc.</description>
+ <version>1.0.0</version>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ <field xml.attribute="true">
+ <name>ref</name>
+ <description>The ref to use for the item.</description>
+ <version>1.0.0</version>
+ <type>String</type>
+ <identifier>true</identifier>
+ </field>
+ </fields>
+ </class>
+ </classes>
+</model>
+
Added: maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt
URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt?rev=406451&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt (added)
+++ maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt Sun May 14 15:16:12 2006
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ /*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.
+ */
+-->
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <!-- MetaData Parameters -->
+ <xsl:param name="title" />
+ <xsl:param name="author" />
+ <xsl:param name="creationdate" />
+ <xsl:param name="subject" />
+ <xsl:param name="keywords" />
+ <xsl:param name="producer" />
+ <xsl:param name="pagesize" />
+
+ <!-- FrontPage Parameters -->
+ <xsl:param name="frontPageTitle" />
+ <xsl:param name="frontPageFooter" />
+
+ <xsl:template match="/itext">
+ <itext title="{$title}" author="{$author}" creationdate="{$creationdate}"
+ subject="{$subject}" keywords="{$keywords}" producer="{$producer}"
+ pagesize="{$pagesize}">
+ <!-- Start Front page -->
+ <paragraph>
+ <chunk font="Helvetica" size="12.0" fontstyle="normal"
+ blue="0" green="0" red="0">
+ <table columns="1" left="false" right="false"
+ top="false" bottom="false" align="Center" width="100%">
+ <row>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="Left" verticalalign="middle">
+ <image
+ url="http://maven.apache.org/images/apache-maven-project.png"
+ plainwidth="306.0" plainheight="27.867857" />
+ </cell>
+ </row>
+ <row>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="Center" verticalalign="middle"
+ leading="330">
+ <chunk font="Helvetica" size="24.0"
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$frontPageTitle"/></chunk>
+ </cell>
+ </row>
+ <row>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="Left" verticalalign="middle"
+ leading="330">
+ <chunk font="Helvetica" size="16.0"
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$frontPageFooter"/></chunk>
+ </cell>
+ </row>
+ </table>
+ </chunk>
+ </paragraph>
+ <!-- End Front page -->
+
+ <!-- Start TOC -->
+ <newpage />
+ <paragraph align="Center">
+ <chunk font="Helvetica" size="24" fontstyle="bold" blue="0"
+ green="0" red="0">Table Of Contents</chunk>
+ </paragraph>
+ <paragraph align="Left" leading="24.0">
+ <newline />
+ <xsl:apply-templates select="*" mode="toc" />
+ </paragraph>
+ <!-- End TOC -->
+
+ <xsl:apply-templates select="*" mode="body" />
+
+ </itext>
+ </xsl:template>
+
+ <!-- Add TOC -->
+ <xsl:template match="chapter|section" mode="toc">
+ <xsl:if test="./title/chunk != ''">
+ <chunk font="Helvetica" size="16.0" fontstyle="normal"
+ blue="255" green="0" red="0"
+ localgoto="{generate-id(./title/chunk)}">
+ <xsl:number level="multiple" format="1.1.1.1.1."
+ count="section|chapter" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="title/chunk" />
+ </chunk>
+ </xsl:if>
+ <xsl:if test="./title/anchor != ''">
+ <xsl:if test="./title/anchor/@name != ''">
+ <chunk font="Helvetica" size="16.0" fontstyle="normal"
+ blue="255" green="0" red="0" localgoto="{./title/anchor/@name}">
+ <xsl:number level="multiple" format="1.1.1.1.1."
+ count="section|chapter" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="title/anchor/chunk" />
+ </chunk>
+ </xsl:if>
+ <xsl:if test="./title/anchor/@name = ''">
+ <chunk font="Helvetica" size="16.0" fontstyle="normal"
+ blue="0" green="0" red="0">
+ <xsl:number level="multiple" format="1.1.1.1.1."
+ count="section|chapter" />
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="title/anchor/chunk" />
+ </chunk>
+ </xsl:if>
+ </xsl:if>
+
+ <newline />
+ <xsl:apply-templates select="child::*[name() = 'section']"
+ mode="toc" />
+ </xsl:template>
+
+ <xsl:template match="chapter/title/chunk|section/title/chunk"
+ mode="body">
+ <xsl:copy>
+ <xsl:apply-templates select="@*" mode="body" />
+ <xsl:attribute name="localdestination">
+ <xsl:value-of select="generate-id(.)" />
+ </xsl:attribute>
+ <xsl:apply-templates select="text()|*" mode="body" />
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template
+ match="chapter/title/anchor/chunk|section/title/anchor/chunk"
+ mode="body">
+ <xsl:copy>
+ <xsl:apply-templates select="@*" mode="body" />
+ <xsl:apply-templates select="text()|*" mode="body" />
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="*|text()|@*" mode="body">
+ <xsl:copy>
+ <xsl:apply-templates select="*|text()|@*" mode="body" />
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Update depth and numberdepth -->
+ <xsl:template match="chapter" mode="body">
+ <xsl:copy>
+ <xsl:apply-templates select="@*" mode="body" />
+ <xsl:attribute name="depth">1</xsl:attribute>
+ <xsl:attribute name="numberdepth">1</xsl:attribute>
+ <xsl:apply-templates select="text()|*" mode="body" />
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="section" mode="body">
+ <xsl:copy>
+ <xsl:apply-templates select="@*" mode="body" />
+ <xsl:variable name="depth.from.context"
+ select="count(ancestor::*)" />
+ <xsl:attribute name="depth">
+ <xsl:value-of select="$depth.from.context" />
+ </xsl:attribute>
+ <xsl:attribute name="numberdepth">
+ <xsl:value-of select="$depth.from.context" />
+ </xsl:attribute>
+ <xsl:apply-templates select="text()|*" mode="body" />
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/itext/xslt/TOC.xslt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"