text:
package com.rackspace.cloud.api.docs;

import com.agilejava.docbkx.maven.Entity;
import com.agilejava.docbkx.maven.Parameter;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.maven.plugin.MojoExecutionException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.MavenProject;
import org.apache.tools.ant.Target;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;

import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.archiver.zip.ZipArchiver;
import org.codehaus.plexus.util.FileUtils;

import java.io.IOException;
import java.net.URL;

/**
 * A Maven plugin for generating epub output from DocBook documents, using version
 * 1.76.1 of the DocBook XSL stylesheets.
 *
 */
public abstract class EpubMojo
  extends com.agilejava.docbkx.maven.AbstractEpubMojo
{

    private File imageDirectory;
    private File sourceDocBook;

    private File coverImageTemplate;
    private File coverImage;

    private static final String COVER_IMAGE_TEMPLATE_NAME = "cover.st";
    private static final String COVER_IMAGE_NAME = "cover.svg";

    private static final String COVER_XSL = "cloud/cover.xsl";

    /**
     * The plugin dependencies.
     *
     * @parameter expression="${plugin.artifacts}"
     * @required
     * @readonly
     */
    List<Artifact> artifacts;

    /**
     * Ant tasks to be executed before the transformation. Comparable
     * to the tasks property in the maven-antrun-plugin.
     *
     * @parameter
     */
    private Target preProcess;

    /**
     * Ant tasks to be executed after the transformation. Comparable
     * to the tasks property in the maven-antrun-plugin.
     *
     * @parameter
     */
    private Target postProcess;

    /**
     * @parameter expression="${project}"
     * @required
     * @readonly
     */
    private MavenProject project;

    /**
     * A list of entities to be substituted in the source
     * documents. Note that you can only specify entities if
     * your source DocBook document contains a DTD
     * declaration. Otherwise it will not have any effect at all.
     *
     * @parameter
     */
    private List<Entity> entities;

    /**
     * A list of additional XSL parameters to give to the XSLT engine.
     * These parameters overrides regular docbook ones as they are last
     * configured.

     * For regular docbook parameters perfer the use of this plugin facilities
     * offering nammed paramters.

     * These parameters feet well for custom properties you may have defined
     * within your customization layer.
     *
     * @parameter
     */
    private List<Parameter> customizationParameters;

    /**
     * List of additional System properties.
     *
     * @parameter
     */
    private Properties systemProperties;

    /**
     * The pattern of the files to be included.
     *
     * @parameter default-value="*.xml"
     */
    private String includes;

    /**
     * A boolean, indicating if XInclude should be supported.
     *
     * @parameter default="false"
     */
     private boolean xincludeSupported;

    /**
     * The location of the stylesheet customization.
     *
     * @parameter
     */
    private String epubCustomization;

    /**
     * The extension of the target file name.
     *
     * @parameter default-value="epub"
     */
    private String targetFileExtension;

    /**
     * The target directory to which all output will be written.
     *
     * @parameter expression="${basedir}/target/docbkx/epub"
     */
    private File targetDirectory;

    /**
     * The directory containing the source DocBook files.
     *
     * @parameter expression="${basedir}/src/docbkx"
     */
    private File sourceDirectory;

    /**
     * The directory containing the resolved DocBook source before given to the transformer.
     *
     * @parameter
     */
    private File generatedSourceDirectory;

    private boolean useStandardOutput = false;

    /**
     * If zero (the default), the XSL processor emits a message naming each separate chunk filename as it is being output.
     * (Original XSL attribuut: chunk.quietly.)
     *
     * @parameter
     */
    protected String chunkQuietly;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.condition.)
     *
     * @parameter
     */
    protected String profileCondition;

    /**
     * In DocBook documents that conform to a schema older than V4.
     * (Original XSL attribuut: use.role.as.xrefstyle.)
     *
     * @parameter
     */
    protected String useRoleAsXrefstyle;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.role.)
     *
     * @parameter
     */
    protected String profileRole;

    /**
     * Sets the filename extension to use on navigational graphics used in the headers and footers of chunked HTML.
     * (Original XSL attribuut: navig.graphics.extension.)
     *
     * @parameter
     */
    protected String navigGraphicsExtension;

    /**
     * Specifies the border color of table frames.
     * (Original XSL attribuut: table.frame.border.color.)
     *
     * @parameter
     */
    protected String tableFrameBorderColor;

    /**
     * If true, ToC and LoT (List of Examples, List of Figures, etc.
     * (Original XSL attribuut: chunk.tocs.and.lots.)
     *
     * @parameter
     */
    protected String chunkTocsAndLots;

    /**
     * For compatibility with DSSSL based DBTeXMath from Allin Cottrell you should set this parameter to 0.
     * (Original XSL attribuut: tex.math.delims.)
     *
     * @parameter
     */
    protected String texMathDelims;

    /**
     *
     * (Original XSL attribuut: graphic.default.extension.)
     *
     * @parameter
     */
    protected String graphicDefaultExtension;

    /**
     *
     * (Original XSL attribuut: part.autolabel.)
     *
     * @parameter
     */
    protected String partAutolabel;

    /**
     *
     * (Original XSL attribuut: show.revisionflag.)
     *
     * @parameter
     */
    protected String showRevisionflag;

    /**
     *
     * (Original XSL attribuut: variablelist.as.table.)
     *
     * @parameter
     */
    protected String variablelistAsTable;

    /**
     * Set to true to generate a binary TOC.
     * (Original XSL attribuut: htmlhelp.hhc.binary.)
     *
     * @parameter
     */
    protected String htmlhelpHhcBinary;

    /**
     *
     * (Original XSL attribuut: graphicsize.extension.)
     *
     * @parameter
     */
    protected String graphicsizeExtension;

    /**
     *
     * (Original XSL attribuut: epub.cover.linear.)
     *
     * @parameter
     */
    protected String epubCoverLinear;

    /**
     * The fixed value used for calculations based upon the size of a character.
     * (Original XSL attribuut: points.per.em.)
     *
     * @parameter
     */
    protected String pointsPerEm;

    /**
     * This parameter specifies initial position of help window.
     * (Original XSL attribuut: htmlhelp.window.geometry.)
     *
     * @parameter
     */
    protected String htmlhelpWindowGeometry;

    /**
     *
     * (Original XSL attribuut: olink.sysid.)
     *
     * @parameter
     */
    protected String olinkSysid;

    /**
     *
     * (Original XSL attribuut: inherit.keywords.)
     *
     * @parameter
     */
    protected String inheritKeywords;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.revision.)
     *
     * @parameter
     */
    protected String profileRevision;

    /**
     *
     * (Original XSL attribuut: ebnf.assignment.)
     *
     * @parameter
     */
    protected String ebnfAssignment;

    /**
     *
     * (Original XSL attribuut: qanda.defaultlabel.)
     *
     * @parameter
     */
    protected String qandaDefaultlabel;

    /**
     * Set to true to include the Prev button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.prev.)
     *
     * @parameter
     */
    protected String htmlhelpButtonPrev;

    /**
     *
     * (Original XSL attribuut: chunk.first.sections.)
     *
     * @parameter
     */
    protected String chunkFirstSections;

    /**
     * Graphic widths expressed as a percentage are problematic.
     * (Original XSL attribuut: nominal.image.width.)
     *
     * @parameter
     */
    protected String nominalImageWidth;

    /**
     *
     * (Original XSL attribuut: footnote.number.format.)
     *
     * @parameter
     */
    protected String footnoteNumberFormat;

    /**
     *
     * (Original XSL attribuut: reference.autolabel.)
     *
     * @parameter
     */
    protected String referenceAutolabel;

    /**
     * This language is used when there is no language attribute on programlisting.
     * (Original XSL attribuut: highlight.default.language.)
     *
     * @parameter
     */
    protected String highlightDefaultLanguage;

    /**
     * A mediaobject may contain several objects such as imageobjects.
     * (Original XSL attribuut: preferred.mediaobject.role.)
     *
     * @parameter
     */
    protected String preferredMediaobjectRole;

    /**
     *
     * (Original XSL attribuut: manual.toc.)
     *
     * @parameter
     */
    protected String manualToc;

    /**
     * This parameter has a structured value.
     * (Original XSL attribuut: generate.toc.)
     *
     * @parameter
     */
    protected String generateToc;

    /**
     * This parameter lets you select which method to use for sorting and grouping  index entries in an index.
     * (Original XSL attribuut: index.method.)
     *
     * @parameter
     */
    protected String indexMethod;

    /**
     *
     * (Original XSL attribuut: insert.olink.pdf.frag.)
     *
     * @parameter
     */
    protected String insertOlinkPdfFrag;

    /**
     * Selects the border on EBNF tables.
     * (Original XSL attribuut: ebnf.table.border.)
     *
     * @parameter
     */
    protected String ebnfTableBorder;

    /**
     *
     * (Original XSL attribuut: index.on.type.)
     *
     * @parameter
     */
    protected String indexOnType;

    /**
     * String used to separate labels and titles in a table of contents.
     * (Original XSL attribuut: autotoc.label.separator.)
     *
     * @parameter
     */
    protected String autotocLabelSeparator;

    /**
     * In order to convert CALS column widths into HTML column widths, it is sometimes necessary to have an absolute table width to use for conversion of mixed absolute and relative widths.
     * (Original XSL attribuut: nominal.table.width.)
     *
     * @parameter
     */
    protected String nominalTableWidth;

    /**
     * When olinks between documents are resolved, the generated text may not make it clear that the reference is to another document.
     * (Original XSL attribuut: olink.doctitle.)
     *
     * @parameter
     */
    protected String olinkDoctitle;

    /**
     *
     * (Original XSL attribuut: htmlhelp.use.hhk.)
     *
     * @parameter
     */
    protected String htmlhelpUseHhk;

    /**
     * Title of Jump2 button.
     * (Original XSL attribuut: htmlhelp.button.jump2.title.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump2Title;

    /**
     *
     * (Original XSL attribuut: chunk.fast.)
     *
     * @parameter
     */
    protected String chunkFast;

    /**
     *
     * (Original XSL attribuut: insert.xref.page.number.)
     *
     * @parameter
     */
    protected String insertXrefPageNumber;

    /**
     *
     * (Original XSL attribuut: biblioentry.alt.primary.seps.)
     *
     * @parameter
     */
    protected String biblioentryAltPrimarySeps;

    /**
     * Normally first chunk of document is displayed when you open HTML Help file.
     * (Original XSL attribuut: htmlhelp.default.topic.)
     *
     * @parameter
     */
    protected String htmlhelpDefaultTopic;

    /**
     *
     * (Original XSL attribuut: html.stylesheet.)
     *
     * @parameter
     */
    protected String htmlStylesheet;

    /**
     *
     * (Original XSL attribuut: emphasis.propagates.style.)
     *
     * @parameter
     */
    protected String emphasisPropagatesStyle;

    /**
     * Set to true to have an application menu bar in your HTML Help window.
     * (Original XSL attribuut: htmlhelp.show.menu.)
     *
     * @parameter
     */
    protected String htmlhelpShowMenu;

    /**
     *
     * (Original XSL attribuut: onechunk.)
     *
     * @parameter
     */
    protected String onechunk;

    /**
     *
     * (Original XSL attribuut: chunk.append.)
     *
     * @parameter
     */
    protected String chunkAppend;

    /**
     *
     * (Original XSL attribuut: html.append.)
     *
     * @parameter
     */
    protected String htmlAppend;

    /**
     *
     * (Original XSL attribuut: variablelist.term.break.after.)
     *
     * @parameter
     */
    protected String variablelistTermBreakAfter;

    /**
     * If you want advanced search features in your help, turn this parameter to 1.
     * (Original XSL attribuut: htmlhelp.show.advanced.search.)
     *
     * @parameter
     */
    protected String htmlhelpShowAdvancedSearch;

    /**
     * If non-zero, this value will be used as the default cellspacing value in HTML tables.
     * (Original XSL attribuut: html.cellspacing.)
     *
     * @parameter
     */
    protected String htmlCellspacing;

    /**
     * If true, comments will be displayed, otherwise they are suppressed.
     * (Original XSL attribuut: show.comments.)
     *
     * @parameter
     */
    protected String showComments;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.os.)
     *
     * @parameter
     */
    protected String profileOs;

    /**
     * Specifies the border style of table frames.
     * (Original XSL attribuut: table.frame.border.style.)
     *
     * @parameter
     */
    protected String tableFrameBorderStyle;

    /**
     *
     * (Original XSL attribuut: html.longdesc.link.)
     *
     * @parameter
     */
    protected String htmlLongdescLink;

    /**
     *
     * (Original XSL attribuut: callout.graphics.number.limit.)
     *
     * @parameter
     */
    protected String calloutGraphicsNumberLimit;

    /**
     * If true, header and footer navigation will be suppressed.
     * (Original XSL attribuut: suppress.navigation.)
     *
     * @parameter
     */
    protected String suppressNavigation;

    /**
     *
     * (Original XSL attribuut: biblioentry.item.separator.)
     *
     * @parameter
     */
    protected String biblioentryItemSeparator;

    /**
     * This parameter allows you to control the punctuation of certain types of generated cross reference text.
     * (Original XSL attribuut: xref.title-page.separator.)
     *
     * @parameter
     */
    protected String xrefTitlePageSeparator;

    /**
     * The table columns extension function adjusts the widths of table columns in the HTML result to more accurately reflect the specifications in the CALS table.
     * (Original XSL attribuut: tablecolumns.extension.)
     *
     * @parameter
     */
    protected String tablecolumnsExtension;

    /**
     * When cross reference data is collected for resolving olinks, it may be necessary to prepend a base URI to each target's href.
     * (Original XSL attribuut: olink.base.uri.)
     *
     * @parameter
     */
    protected String olinkBaseUri;

    /**
     *
     * (Original XSL attribuut: make.valid.html.)
     *
     * @parameter
     */
    protected String makeValidHtml;

    /**
     * This image is used inline to identify the location of annotations.
     * (Original XSL attribuut: annotation.graphic.open.)
     *
     * @parameter
     */
    protected String annotationGraphicOpen;

    /**
     * Value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.audience.)
     *
     * @parameter
     */
    protected String profileAudience;

    /**
     *
     * (Original XSL attribuut: email.delimiters.enabled.)
     *
     * @parameter
     */
    protected String emailDelimitersEnabled;

    /**
     * The stylesheets are capable of generating both default and custom CSS stylesheet files.
     * (Original XSL attribuut: generate.css.header.)
     *
     * @parameter
     */
    protected String generateCssHeader;

    /**
     * Content of this parameter will be used as a title for generated HTML Help.
     * (Original XSL attribuut: htmlhelp.title.)
     *
     * @parameter
     */
    protected String htmlhelpTitle;

    /**
     * If you want type math directly in TeX notation in equations, this parameter specifies notation used.
     * (Original XSL attribuut: tex.math.in.alt.)
     *
     * @parameter
     */
    protected String texMathInAlt;

    /**
     *
     * (Original XSL attribuut: htmlhelp.force.map.and.alias.)
     *
     * @parameter
     */
    protected String htmlhelpForceMapAndAlias;

    /**
     *
     * (Original XSL attribuut: section.autolabel.max.depth.)
     *
     * @parameter
     */
    protected String sectionAutolabelMaxDepth;

    /**
     *
     * (Original XSL attribuut: id.warnings.)
     *
     * @parameter
     */
    protected String idWarnings;

    /**
     *
     * (Original XSL attribuut: ade.extensions.)
     *
     * @parameter
     */
    protected String adeExtensions;

    /**
     *
     * (Original XSL attribuut: formal.object.break.after.)
     *
     * @parameter
     */
    protected String formalObjectBreakAfter;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.arch.)
     *
     * @parameter
     */
    protected String profileArch;

    /**
     * Set the name of map file.
     * (Original XSL attribuut: htmlhelp.map.file.)
     *
     * @parameter
     */
    protected String htmlhelpMapFile;

    /**
     * This parameter specifies the list of elements that should be escaped as CDATA sections by the chunking stylesheet.
     * (Original XSL attribuut: chunker.output.cdata-section-elements.)
     *
     * @parameter
     */
    protected String chunkerOutputCdataSectionElements;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.conformance.)
     *
     * @parameter
     */
    protected String profileConformance;

    /**
     *
     * (Original XSL attribuut: html.head.legalnotice.link.multiple.)
     *
     * @parameter
     */
    protected String htmlHeadLegalnoticeLinkMultiple;

    /**
     *
     * (Original XSL attribuut: refclass.suppress.)
     *
     * @parameter
     */
    protected String refclassSuppress;

    /**
     * If non-zero, this value will be used as the default cellpadding value in HTML tables.
     * (Original XSL attribuut: html.cellpadding.)
     *
     * @parameter
     */
    protected String htmlCellpadding;

    /**
     * Eclipse Help plugin id.
     * (Original XSL attribuut: eclipse.plugin.id.)
     *
     * @parameter
     */
    protected String eclipsePluginId;

    /**
     * This parameter specifies the public identifier that should be used by the chunking stylesheet in the document type declaration of chunked pages.
     * (Original XSL attribuut: chunker.output.doctype-public.)
     *
     * @parameter
     */
    protected String chunkerOutputDoctypePublic;

    /**
     *
     * (Original XSL attribuut: para.propagates.style.)
     *
     * @parameter
     */
    protected String paraPropagatesStyle;

    /**
     *
     * (Original XSL attribuut: make.clean.html.)
     *
     * @parameter
     */
    protected String makeCleanHtml;

    /**
     * When an automatically generated Table of Contents (or List of Titles) is produced, this HTML element will be used to make the list.
     * (Original XSL attribuut: toc.list.type.)
     *
     * @parameter
     */
    protected String tocListType;

    /**
     * If true, the navigational headers and footers in chunked HTML are presented in an alternate style that uses graphical icons for Next, Previous, Up, and Home.
     * (Original XSL attribuut: navig.graphics.)
     *
     * @parameter
     */
    protected String navigGraphics;

    /**
     *
     * (Original XSL attribuut: generate.revhistory.link.)
     *
     * @parameter
     */
    protected String generateRevhistoryLink;

    /**
     * The stylesheets are capable of generating a default CSS stylesheet file.
     * (Original XSL attribuut: docbook.css.link.)
     *
     * @parameter
     */
    protected String docbookCssLink;

    /**
     *
     * (Original XSL attribuut: l10n.xml.)
     *
     * @parameter
     */
    protected String l10nXml;

    /**
     *
     * (Original XSL attribuut: table.footnote.number.symbols.)
     *
     * @parameter
     */
    protected String tableFootnoteNumberSymbols;

    /**
     *
     * (Original XSL attribuut: ulink.target.)
     *
     * @parameter
     */
    protected String ulinkTarget;

    /**
     * This parameter specifies the encoding to be used in files generated by the chunking stylesheet.
     * (Original XSL attribuut: chunker.output.encoding.)
     *
     * @parameter
     */
    protected String chunkerOutputEncoding;

    /**
     * If true (true), unlabeled sections will be enumerated.
     * (Original XSL attribuut: section.autolabel.)
     *
     * @parameter
     */
    protected String sectionAutolabel;

    /**
     *
     * (Original XSL attribuut: generate.meta.abstract.)
     *
     * @parameter
     */
    protected String generateMetaAbstract;

    /**
     * If you want to include some additional parameters into project file, store appropriate part of project file into this parameter.
     * (Original XSL attribuut: htmlhelp.hhp.tail.)
     *
     * @parameter
     */
    protected String htmlhelpHhpTail;

    /**
     *
     * (Original XSL attribuut: chunk.toc.)
     *
     * @parameter
     */
    protected String chunkToc;

    /**
     * Set to true to include a Favorites tab in the navigation pane  of the help window.
     * (Original XSL attribuut: htmlhelp.show.favorities.)
     *
     * @parameter
     */
    protected String htmlhelpShowFavorities;

    /**
     *
     * (Original XSL attribuut: glossterm.auto.link.)
     *
     * @parameter
     */
    protected String glosstermAutoLink;

    /**
     *
     * (Original XSL attribuut: get.)
     *
     * @parameter
     */
    protected String get;

    /**
     *
     * (Original XSL attribuut: simplesect.in.toc.)
     *
     * @parameter
     */
    protected String simplesectInToc;

    /**
     * If true, header navigation will be suppressed.
     * (Original XSL attribuut: suppress.header.navigation.)
     *
     * @parameter
     */
    protected String suppressHeaderNavigation;

    /**
     * Set to true to include the Jump2 button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.jump2.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump2;

    /**
     *
     * (Original XSL attribuut: htmlhelp.button.jump1.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump1;

    /**
     * This parameter specifies the value of the omit-xml-declaration specification for generated pages.
     * (Original XSL attribuut: chunker.output.omit-xml-declaration.)
     *
     * @parameter
     */
    protected String chunkerOutputOmitXmlDeclaration;

    /**
     * Set to true to include the  Forward button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.forward.)
     *
     * @parameter
     */
    protected String htmlhelpButtonForward;

    /**
     * This parameter specifies the punctuation that should be added after an honorific in a personal name.
     * (Original XSL attribuut: punct.honorific.)
     *
     * @parameter
     */
    protected String punctHonorific;

    /**
     * If true, the scaling attributes on graphics and media objects are ignored.
     * (Original XSL attribuut: ignore.image.scaling.)
     *
     * @parameter
     */
    protected String ignoreImageScaling;

    /**
     *
     * (Original XSL attribuut: appendix.autolabel.)
     *
     * @parameter
     */
    protected String appendixAutolabel;

    /**
     *
     * (Original XSL attribuut: entry.propagates.style.)
     *
     * @parameter
     */
    protected String entryPropagatesStyle;

    /**
     * If true, footer navigation will be suppressed.
     * (Original XSL attribuut: suppress.footer.navigation.)
     *
     * @parameter
     */
    protected String suppressFooterNavigation;

    /**
     * This parameter permits you to override the text to insert between the end of an index term and its list of page references.
     * (Original XSL attribuut: index.term.separator.)
     *
     * @parameter
     */
    protected String indexTermSeparator;

    /**
     *
     * (Original XSL attribuut: callout.list.table.)
     *
     * @parameter
     */
    protected String calloutListTable;

    /**
     * Set to true if you want to play with various HTML Help parameters and you don't need to regenerate all HTML files.
     * (Original XSL attribuut: htmlhelp.only.)
     *
     * @parameter
     */
    protected String htmlhelpOnly;

    /**
     *
     * (Original XSL attribuut: html.longdesc.)
     *
     * @parameter
     */
    protected String htmlLongdesc;

    /**
     *
     * (Original XSL attribuut: editedby.enabled.)
     *
     * @parameter
     */
    protected String editedbyEnabled;

    /**
     * This parameter specifies the media type that should be used by the chunking stylesheet.
     * (Original XSL attribuut: chunker.output.media-type.)
     *
     * @parameter
     */
    protected String chunkerOutputMediaType;

    /**
     *
     * (Original XSL attribuut: segmentedlist.as.table.)
     *
     * @parameter
     */
    protected String segmentedlistAsTable;

    /**
     * Set the name of the TOC file.
     * (Original XSL attribuut: htmlhelp.hhc.)
     *
     * @parameter
     */
    protected String htmlhelpHhc;

    /**
     * Change this parameter if you want different name of project file than htmlhelp.
     * (Original XSL attribuut: htmlhelp.hhp.)
     *
     * @parameter
     */
    protected String htmlhelpHhp;

    /**
     * This parameter specifies the value of the indent specification for generated pages.
     * (Original XSL attribuut: chunker.output.indent.)
     *
     * @parameter
     */
    protected String chunkerOutputIndent;

    /**
     * set the name of the index file.
     * (Original XSL attribuut: htmlhelp.hhk.)
     *
     * @parameter
     */
    protected String htmlhelpHhk;

    /**
     *
     * (Original XSL attribuut: custom.css.source.)
     *
     * @parameter
     */
    protected String customCssSource;

    /**
     * HTML Help Compiler is not UTF-8 aware, so you should always use an appropriate single-byte encoding here.
     * (Original XSL attribuut: htmlhelp.encoding.)
     *
     * @parameter
     */
    protected String htmlhelpEncoding;

    /**
     * This image is used on popup annotations as the "x" that the user can click to dismiss the popup.
     * (Original XSL attribuut: annotation.graphic.close.)
     *
     * @parameter
     */
    protected String annotationGraphicClose;

    /**
     * This value will be used when there is no frame attribute on the table.
     * (Original XSL attribuut: default.table.frame.)
     *
     * @parameter
     */
    protected String defaultTableFrame;

    /**
     * Glossaries maintained independently across a set of documents are likely to become inconsistent unless considerable effort is expended to keep them in sync.
     * (Original XSL attribuut: glossary.collection.)
     *
     * @parameter
     */
    protected String glossaryCollection;

    /**
     *
     * (Original XSL attribuut: olink.outline.ext.)
     *
     * @parameter
     */
    protected String olinkOutlineExt;

    /**
     *
     * (Original XSL attribuut: menuchoice.menu.separator.)
     *
     * @parameter
     */
    protected String menuchoiceMenuSeparator;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.security.)
     *
     * @parameter
     */
    protected String profileSecurity;

    /**
     *
     * (Original XSL attribuut: chapter.autolabel.)
     *
     * @parameter
     */
    protected String chapterAutolabel;

    /**
     *
     * (Original XSL attribuut: biblioentry.primary.count.)
     *
     * @parameter
     */
    protected String biblioentryPrimaryCount;

    /**
     * When lengths are converted to pixels, this value is used to determine the size of a pixel.
     * (Original XSL attribuut: pixels.per.inch.)
     *
     * @parameter
     */
    protected String pixelsPerInch;

    /**
     *
     * (Original XSL attribuut: contrib.inline.enabled.)
     *
     * @parameter
     */
    protected String contribInlineEnabled;

    /**
     *
     * (Original XSL attribuut: olink.resolver.)
     *
     * @parameter
     */
    protected String olinkResolver;

    /**
     *
     * (Original XSL attribuut: htmlhelp.button.back.)
     *
     * @parameter
     */
    protected String htmlhelpButtonBack;

    /**
     * Specifies where formal object titles should occur.
     * (Original XSL attribuut: formal.title.placement.)
     *
     * @parameter
     */
    protected String formalTitlePlacement;

    /**
     *
     * (Original XSL attribuut: chunker.output.quiet.)
     *
     * @parameter
     */
    protected String chunkerOutputQuiet;

    /**
     * Maintaining bibliography entries across a set of documents is tedious, time consuming, and error prone.
     * (Original XSL attribuut: bibliography.collection.)
     *
     * @parameter
     */
    protected String bibliographyCollection;

    /**
     * This parameter permits you to override the text to insert between the two numbers of a page range in an index.
     * (Original XSL attribuut: index.range.separator.)
     *
     * @parameter
     */
    protected String indexRangeSeparator;

    /**
     * If you want Locate button shown on toolbar, turn this parameter to 1.
     * (Original XSL attribuut: htmlhelp.button.locate.)
     *
     * @parameter
     */
    protected String htmlhelpButtonLocate;

    /**
     *
     * (Original XSL attribuut: shade.verbatim.)
     *
     * @parameter
     */
    protected String shadeVerbatim;

    /**
     * If line numbering is enabled, line numbers will appear right justified in a field "width" characters wide.
     * (Original XSL attribuut: linenumbering.width.)
     *
     * @parameter
     */
    protected String linenumberingWidth;

    /**
     *
     * (Original XSL attribuut: l10n.gentext.default.language.)
     *
     * @parameter
     */
    protected String l10nGentextDefaultLanguage;

    /**
     *
     * (Original XSL attribuut: generate.legalnotice.link.)
     *
     * @parameter
     */
    protected String generateLegalnoticeLink;

    /**
     *
     * (Original XSL attribuut: refentry.generate.name.)
     *
     * @parameter
     */
    protected String refentryGenerateName;

    /**
     *
     * (Original XSL attribuut: admon.style.)
     *
     * @parameter
     */
    protected String admonStyle;

    /**
     * This parameter allows you to control the punctuation of certain types of generated cross reference text.
     * (Original XSL attribuut: xref.label-title.separator.)
     *
     * @parameter
     */
    protected String xrefLabelTitleSeparator;

    /**
     *
     * (Original XSL attribuut: html.stylesheet.type.)
     *
     * @parameter
     */
    protected String htmlStylesheetType;

    /**
     *
     * (Original XSL attribuut: variablelist.term.separator.)
     *
     * @parameter
     */
    protected String variablelistTermSeparator;

    /**
     *
     * (Original XSL attribuut: qanda.inherit.numeration.)
     *
     * @parameter
     */
    protected String qandaInheritNumeration;

    /**
     *
     * (Original XSL attribuut: callout.defaultcolumn.)
     *
     * @parameter
     */
    protected String calloutDefaultcolumn;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.revisionflag.)
     *
     * @parameter
     */
    protected String profileRevisionflag;

    /**
     *
     * (Original XSL attribuut: procedure.step.numeration.formats.)
     *
     * @parameter
     */
    protected String procedureStepNumerationFormats;

    /**
     *
     * (Original XSL attribuut: rootid.)
     *
     * @parameter
     */
    protected String rootid;

    /**
     * This parameter sets the depth of section chunking.
     * (Original XSL attribuut: chunk.section.depth.)
     *
     * @parameter
     */
    protected String chunkSectionDepth;

    /**
     *
     * (Original XSL attribuut: refentry.xref.manvolnum.)
     *
     * @parameter
     */
    protected String refentryXrefManvolnum;

    /**
     *
     * (Original XSL attribuut: epub.html.toc.id.)
     *
     * @parameter
     */
    protected String epubHtmlTocId;

    /**
     * Name of default window.
     * (Original XSL attribuut: htmlhelp.hhp.window.)
     *
     * @parameter
     */
    protected String htmlhelpHhpWindow;

    /**
     * In order to resolve olinks efficiently, the stylesheets can generate an external data file containing information about all potential cross reference endpoints in a document.
     * (Original XSL attribuut: collect.xref.targets.)
     *
     * @parameter
     */
    protected String collectXrefTargets;

    /**
     * If true, year ranges that span a single year will be printed in range notation (1998-1999) instead of discrete notation (1998, 1999).
     * (Original XSL attribuut: make.single.year.ranges.)
     *
     * @parameter
     */
    protected String makeSingleYearRanges;

    /**
     * When true this parameter enables enhanced decompilation of CHM.
     * (Original XSL attribuut: htmlhelp.enhanced.decompilation.)
     *
     * @parameter
     */
    protected String htmlhelpEnhancedDecompilation;

    /**
     * URL address of page accessible by Jump2 button.
     * (Original XSL attribuut: htmlhelp.button.jump2.url.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump2Url;

    /**
     * Set to true for folder-like icons or zero for book-like icons in the ToC.
     * (Original XSL attribuut: htmlhelp.hhc.folders.instead.books.)
     *
     * @parameter
     */
    protected String htmlhelpHhcFoldersInsteadBooks;

    /**
     * If true, the HTML stylesheet will generate ID attributes on containers.
     * (Original XSL attribuut: generate.id.attributes.)
     *
     * @parameter
     */
    protected String generateIdAttributes;

    /**
     *
     * (Original XSL attribuut: epub.cover.id.)
     *
     * @parameter
     */
    protected String epubCoverId;

    /**
     *
     * (Original XSL attribuut: stylesheet.result.type.)
     *
     * @parameter
     */
    protected String stylesheetResultType;

    /**
     * This parameter permits you to override the text to insert between page references in a formatted index entry.
     * (Original XSL attribuut: index.number.separator.)
     *
     * @parameter
     */
    protected String indexNumberSeparator;

    /**
     *
     * (Original XSL attribuut: callout.unicode.start.character.)
     *
     * @parameter
     */
    protected String calloutUnicodeStartCharacter;

    /**
     * Sets the background color for EBNF tables (a pale brown).
     * (Original XSL attribuut: ebnf.table.bgcolor.)
     *
     * @parameter
     */
    protected String ebnfTableBgcolor;

    /**
     *
     * (Original XSL attribuut: epub.container.filename.)
     *
     * @parameter
     */
    protected String epubContainerFilename;

    /**
     *
     * (Original XSL attribuut: l10n.lang.value.rfc.compliant.)
     *
     * @parameter
     */
    protected String l10nLangValueRfcCompliant;

    /**
     * This parameter allows you to control the punctuation of certain types of generated cross reference text.
     * (Original XSL attribuut: xref.label-page.separator.)
     *
     * @parameter
     */
    protected String xrefLabelPageSeparator;

    /**
     *
     * (Original XSL attribuut: process.empty.source.toc.)
     *
     * @parameter
     */
    protected String processEmptySourceToc;

    /**
     * Set to true to remember help window position between starts.
     * (Original XSL attribuut: htmlhelp.remember.window.position.)
     *
     * @parameter
     */
    protected String htmlhelpRememberWindowPosition;

    /**
     * If true, the headers and footers of chunked HTML display the titles of the next and previous chunks, along with the words 'Next' and 'Previous' (or the equivalent graphical icons if navig.
     * (Original XSL attribuut: navig.showtitles.)
     *
     * @parameter
     */
    protected String navigShowtitles;

    /**
     * This location has precedence over the corresponding Java property.
     * (Original XSL attribuut: highlight.xslthl.config.)
     *
     * @parameter
     */
    protected String highlightXslthlConfig;

    /**
     *
     * (Original XSL attribuut: epub.ncx.filename.)
     *
     * @parameter
     */
    protected String epubNcxFilename;

    /**
     *
     * (Original XSL attribuut: highlight.source.)
     *
     * @parameter
     */
    protected String highlightSource;

    /**
     * If true, a rule will be drawn above the page footers.
     * (Original XSL attribuut: footer.rule.)
     *
     * @parameter
     */
    protected String footerRule;

    /**
     *
     * (Original XSL attribuut: refentry.generate.title.)
     *
     * @parameter
     */
    protected String refentryGenerateTitle;

    /**
     * Sets the path, probably relative to the directory where the HTML files are created, to the navigational graphics used in the headers and footers of chunked HTML.
     * (Original XSL attribuut: navig.graphics.path.)
     *
     * @parameter
     */
    protected String navigGraphicsPath;

    /**
     * Sets the path to the directory holding the callout graphics.
     * (Original XSL attribuut: callout.graphics.path.)
     *
     * @parameter
     */
    protected String calloutGraphicsPath;

    /**
     *
     * (Original XSL attribuut: autotoc.label.in.hyperlink.)
     *
     * @parameter
     */
    protected String autotocLabelInHyperlink;

    /**
     * Set to true to include the Zoom button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.zoom.)
     *
     * @parameter
     */
    protected String htmlhelpButtonZoom;

    /**
     * This parameter specifies the output method to be used in files generated by the chunking stylesheet.
     * (Original XSL attribuut: chunker.output.method.)
     *
     * @parameter
     */
    protected String chunkerOutputMethod;

    /**
     *
     * (Original XSL attribuut: qanda.in.toc.)
     *
     * @parameter
     */
    protected String qandaInToc;

    /**
     * If true, then the glossentry elements within a glossary, glossdiv, or glosslist are sorted on the glossterm, using the current lang setting.
     * (Original XSL attribuut: glossary.sort.)
     *
     * @parameter
     */
    protected String glossarySort;

    /**
     * Sets the filename extension to use on callout graphics.
     * (Original XSL attribuut: callout.graphics.extension.)
     *
     * @parameter
     */
    protected String calloutGraphicsExtension;

    /**
     *
     * (Original XSL attribuut: footnote.number.symbols.)
     *
     * @parameter
     */
    protected String footnoteNumberSymbols;

    /**
     * URL address of page accessible by Home button.
     * (Original XSL attribuut: htmlhelp.button.home.url.)
     *
     * @parameter
     */
    protected String htmlhelpButtonHomeUrl;

    /**
     * If true, CSS will be used to draw table borders.
     * (Original XSL attribuut: table.borders.with.css.)
     *
     * @parameter
     */
    protected String tableBordersWithCss;

    /**
     *
     * (Original XSL attribuut: html.extra.head.links.)
     *
     * @parameter
     */
    protected String htmlExtraHeadLinks;

    /**
     *
     * (Original XSL attribuut: bridgehead.in.toc.)
     *
     * @parameter
     */
    protected String bridgeheadInToc;

    /**
     *
     * (Original XSL attribuut: othercredit.like.author.enabled.)
     *
     * @parameter
     */
    protected String othercreditLikeAuthorEnabled;

    /**
     * If line numbering is enabled, everyNth line will be numbered.
     * (Original XSL attribuut: linenumbering.everyNth.)
     *
     * @parameter
     */
    protected String linenumberingEveryNth;

    /**
     * This parameter has effect only when Saxon 6 is used (version 6.
     * (Original XSL attribuut: saxon.character.representation.)
     *
     * @parameter
     */
    protected String saxonCharacterRepresentation;

    /**
     *
     * (Original XSL attribuut: funcsynopsis.style.)
     *
     * @parameter
     */
    protected String funcsynopsisStyle;

    /**
     * Specify if an index should be generated.
     * (Original XSL attribuut: generate.index.)
     *
     * @parameter
     */
    protected String generateIndex;

    /**
     *
     * (Original XSL attribuut: empty.local.l10n.xml.)
     *
     * @parameter
     */
    protected String emptyLocalL10nXml;

    /**
     * Set to true to display texts under toolbar buttons, zero to switch off displays.
     * (Original XSL attribuut: htmlhelp.show.toolbar.text.)
     *
     * @parameter
     */
    protected String htmlhelpShowToolbarText;

    /**
     *
     * (Original XSL attribuut: epub.embedded.fonts.)
     *
     * @parameter
     */
    protected String epubEmbeddedFonts;

    /**
     * If true, the language of the target will be used when generating cross reference text.
     * (Original XSL attribuut: l10n.gentext.use.xref.language.)
     *
     * @parameter
     */
    protected String l10nGentextUseXrefLanguage;

    /**
     * This parameter defines a list of lang values to search among to resolve olinks.
     * (Original XSL attribuut: olink.lang.fallback.sequence.)
     *
     * @parameter
     */
    protected String olinkLangFallbackSequence;

    /**
     *
     * (Original XSL attribuut: epub.ncx.toc.id.)
     *
     * @parameter
     */
    protected String epubNcxTocId;

    /**
     *
     * (Original XSL attribuut: author.othername.in.middle.)
     *
     * @parameter
     */
    protected String authorOthernameInMiddle;

    /**
     * If true, a separator will be generated between consecutive reference pages.
     * (Original XSL attribuut: refentry.separator.)
     *
     * @parameter
     */
    protected String refentrySeparator;

    /**
     *
     * (Original XSL attribuut: menuchoice.separator.)
     *
     * @parameter
     */
    protected String menuchoiceSeparator;

    /**
     *
     * (Original XSL attribuut: make.year.ranges.)
     *
     * @parameter
     */
    protected String makeYearRanges;

    /**
     *
     * (Original XSL attribuut: make.graphic.viewport.)
     *
     * @parameter
     */
    protected String makeGraphicViewport;

    /**
     *
     * (Original XSL attribuut: manifest.)
     *
     * @parameter
     */
    protected String manifest;

    /**
     * If you want Stop button shown on toolbar, turn this parameter to 1.
     * (Original XSL attribuut: htmlhelp.button.stop.)
     *
     * @parameter
     */
    protected String htmlhelpButtonStop;

    /**
     *
     * (Original XSL attribuut: nominal.image.depth.)
     *
     * @parameter
     */
    protected String nominalImageDepth;

    /**
     * If this parameter is set to any value other than the empty string, its value will be used as the value for the language when generating text.
     * (Original XSL attribuut: l10n.gentext.language.)
     *
     * @parameter
     */
    protected String l10nGentextLanguage;

    /**
     *
     * (Original XSL attribuut: htmlhelp.chm.)
     *
     * @parameter
     */
    protected String htmlhelpChm;

    /**
     * This parameter specifies the width of the navigation pane (containing TOC and other navigation tabs) in pixels.
     * (Original XSL attribuut: htmlhelp.hhc.width.)
     *
     * @parameter
     */
    protected String htmlhelpHhcWidth;

    /**
     *
     * (Original XSL attribuut: epub.ncx.depth.)
     *
     * @parameter
     */
    protected String epubNcxDepth;

    /**
     * If true, extensions may be used.
     * (Original XSL attribuut: use.extensions.)
     *
     * @parameter
     */
    protected String useExtensions;

    /**
     * Specify which characters are to be counted as punctuation.
     * (Original XSL attribuut: runinhead.title.end.punct.)
     *
     * @parameter
     */
    protected String runinheadTitleEndPunct;

    /**
     * If true, then each olink will generate several messages about how it is being resolved during processing.
     * (Original XSL attribuut: olink.debug.)
     *
     * @parameter
     */
    protected String olinkDebug;

    /**
     * Title of Jump1 button.
     * (Original XSL attribuut: htmlhelp.button.jump1.title.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump1Title;

    /**
     *
     * (Original XSL attribuut: local.l10n.xml.)
     *
     * @parameter
     */
    protected String localL10nXml;

    /**
     *
     * (Original XSL attribuut: index.links.to.section.)
     *
     * @parameter
     */
    protected String indexLinksToSection;

    /**
     *
     * (Original XSL attribuut: xref.with.number.and.title.)
     *
     * @parameter
     */
    protected String xrefWithNumberAndTitle;

    /**
     * Sets the path to the directory containing the admonition graphics (caution.
     * (Original XSL attribuut: admon.graphics.path.)
     *
     * @parameter
     */
    protected String admonGraphicsPath;

    /**
     * If you want to include chapter and section numbers into ToC in the left panel, set this parameter to 1.
     * (Original XSL attribuut: eclipse.autolabel.)
     *
     * @parameter
     */
    protected String eclipseAutolabel;

    /**
     *
     * (Original XSL attribuut: annotation.js.)
     *
     * @parameter
     */
    protected String annotationJs;

    /**
     * Set this to true to include chapter and section numbers into ToC in the left panel.
     * (Original XSL attribuut: htmlhelp.autolabel.)
     *
     * @parameter
     */
    protected String htmlhelpAutolabel;

    /**
     *
     * (Original XSL attribuut: table.footnote.number.format.)
     *
     * @parameter
     */
    protected String tableFootnoteNumberFormat;

    /**
     *
     * (Original XSL attribuut: html.head.legalnotice.link.types.)
     *
     * @parameter
     */
    protected String htmlHeadLegalnoticeLinkTypes;

    /**
     *
     * (Original XSL attribuut: default.image.width.)
     *
     * @parameter
     */
    protected String defaultImageWidth;

    /**
     * Set to true to include the Home button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.home.)
     *
     * @parameter
     */
    protected String htmlhelpButtonHome;

    /**
     * If true, a rule will be drawn below the page headers.
     * (Original XSL attribuut: header.rule.)
     *
     * @parameter
     */
    protected String headerRule;

    /**
     *
     * (Original XSL attribuut: preface.autolabel.)
     *
     * @parameter
     */
    protected String prefaceAutolabel;

    /**
     * Set to true if you insert images into your documents as external binary entities or if you are using absolute image paths.
     * (Original XSL attribuut: htmlhelp.enumerate.images.)
     *
     * @parameter
     */
    protected String htmlhelpEnumerateImages;

    /**
     * When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document.
     * (Original XSL attribuut: current.docid.)
     *
     * @parameter
     */
    protected String currentDocid;

    /**
     * If true, a web link will be generated, presumably to an online man->HTML gateway.
     * (Original XSL attribuut: citerefentry.link.)
     *
     * @parameter
     */
    protected String citerefentryLink;

    /**
     * If you are re-using XML content modules in multiple documents, you may want to redirect some of your olinks.
     * (Original XSL attribuut: prefer.internal.olink.)
     *
     * @parameter
     */
    protected String preferInternalOlink;

    /**
     * If true, SVG will be considered an acceptable image format.
     * (Original XSL attribuut: use.svg.)
     *
     * @parameter
     */
    protected String useSvg;

    /**
     *
     * (Original XSL attribuut: profile.attribute.)
     *
     * @parameter
     */
    protected String profileAttribute;

    /**
     *
     * (Original XSL attribuut: link.mailto.url.)
     *
     * @parameter
     */
    protected String linkMailtoUrl;

    /**
     * Content of this parameter is placed at the end of [WINDOWS] section of project file.
     * (Original XSL attribuut: htmlhelp.hhp.windows.)
     *
     * @parameter
     */
    protected String htmlhelpHhpWindows;

    /**
     * Specifies the maximal depth of TOC on all levels.
     * (Original XSL attribuut: toc.max.depth.)
     *
     * @parameter
     */
    protected String tocMaxDepth;

    /**
     * To resolve olinks between documents, the stylesheets use a master database document that identifies the target datafiles for all the documents within the scope of the olinks.
     * (Original XSL attribuut: target.database.document.)
     *
     * @parameter
     */
    protected String targetDatabaseDocument;

    /**
     * Sets the filename extension to use on admonition graphics.
     * (Original XSL attribuut: admon.graphics.extension.)
     *
     * @parameter
     */
    protected String admonGraphicsExtension;

    /**
     *
     * (Original XSL attribuut: html.ext.)
     *
     * @parameter
     */
    protected String htmlExt;

    /**
     *
     * (Original XSL attribuut: bibliography.numbered.)
     *
     * @parameter
     */
    protected String bibliographyNumbered;

    /**
     *
     * (Original XSL attribuut: epub.cover.image.id.)
     *
     * @parameter
     */
    protected String epubCoverImageId;

    /**
     * The textinsert extension element inserts the contents of       a file into the result tree (as text).
     * (Original XSL attribuut: textinsert.extension.)
     *
     * @parameter
     */
    protected String textinsertExtension;

    /**
     *
     * (Original XSL attribuut: epub.cover.html.)
     *
     * @parameter
     */
    protected String epubCoverHtml;

    /**
     *
     * (Original XSL attribuut: generate.manifest.)
     *
     * @parameter
     */
    protected String generateManifest;

    /**
     *
     * (Original XSL attribuut: index.prefer.titleabbrev.)
     *
     * @parameter
     */
    protected String indexPreferTitleabbrev;

    /**
     * If html.
     * (Original XSL attribuut: html.base.)
     *
     * @parameter
     */
    protected String htmlBase;

    /**
     *
     * (Original XSL attribuut: html.cleanup.)
     *
     * @parameter
     */
    protected String htmlCleanup;

    /**
     *
     * (Original XSL attribuut: default.table.width.)
     *
     * @parameter
     */
    protected String defaultTableWidth;

    /**
     * This parameter specifies the system identifier that should be used by the chunking stylesheet in the document type declaration of chunked pages.
     * (Original XSL attribuut: chunker.output.doctype-system.)
     *
     * @parameter
     */
    protected String chunkerOutputDoctypeSystem;

    /**
     * Specifies the depth to which recursive sections should appear in the TOC.
     * (Original XSL attribuut: toc.section.depth.)
     *
     * @parameter
     */
    protected String tocSectionDepth;

    /**
     * Sets direction of text flow and text alignment based on locale.
     * (Original XSL attribuut: writing.mode.)
     *
     * @parameter
     */
    protected String writingMode;

    /**
     * JavaHelp crashes on some characters when written as character references.
     * (Original XSL attribuut: javahelp.encoding.)
     *
     * @parameter
     */
    protected String javahelpEncoding;

    /**
     *
     * (Original XSL attribuut: htmlhelp.display.progress.)
     *
     * @parameter
     */
    protected String htmlhelpDisplayProgress;

    /**
     * The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background.
     * (Original XSL attribuut: callout.unicode.)
     *
     * @parameter
     */
    protected String calloutUnicode;

    /**
     *
     * (Original XSL attribuut: textdata.default.encoding.)
     *
     * @parameter
     */
    protected String textdataDefaultEncoding;

    /**
     * If true, TOCs will be annotated.
     * (Original XSL attribuut: annotate.toc.)
     *
     * @parameter
     */
    protected String annotateToc;

    /**
     * If true (true), admonitions are presented in an alternate style that uses a graphic.
     * (Original XSL attribuut: admon.graphics.)
     *
     * @parameter
     */
    protected String admonGraphics;

    /**
     *
     * (Original XSL attribuut: htmlhelp.button.hideshow.)
     *
     * @parameter
     */
    protected String htmlhelpButtonHideshow;

    /**
     * Set to true to include the Stop button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.refresh.)
     *
     * @parameter
     */
    protected String htmlhelpButtonRefresh;

    /**
     *
     * (Original XSL attribuut: runinhead.default.title.end.punct.)
     *
     * @parameter
     */
    protected String runinheadDefaultTitleEndPunct;

    /**
     *
     * (Original XSL attribuut: glossentry.show.acronym.)
     *
     * @parameter
     */
    protected String glossentryShowAcronym;

    /**
     *
     * (Original XSL attribuut: css.decoration.)
     *
     * @parameter
     */
    protected String cssDecoration;

    /**
     *
     * (Original XSL attribuut: use.role.for.mediaobject.)
     *
     * @parameter
     */
    protected String useRoleForMediaobject;

    /**
     * If true, section labels are prefixed with the label of the component that contains them.
     * (Original XSL attribuut: section.label.includes.component.label.)
     *
     * @parameter
     */
    protected String sectionLabelIncludesComponentLabel;

    /**
     * If true (true), admonitions are presented with a generated text label such as Note or Warning in the appropriate language.
     * (Original XSL attribuut: admon.textlabel.)
     *
     * @parameter
     */
    protected String admonTextlabel;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.vendor.)
     *
     * @parameter
     */
    protected String profileVendor;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.status.)
     *
     * @parameter
     */
    protected String profileStatus;

    /**
     *
     * (Original XSL attribuut: index.on.role.)
     *
     * @parameter
     */
    protected String indexOnRole;

    /**
     * The image to be used for draft watermarks.
     * (Original XSL attribuut: draft.watermark.image.)
     *
     * @parameter
     */
    protected String draftWatermarkImage;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.wordsize.)
     *
     * @parameter
     */
    protected String profileWordsize;

    /**
     * Name of auxiliary file for TeX equations.
     * (Original XSL attribuut: tex.math.file.)
     *
     * @parameter
     */
    protected String texMathFile;

    /**
     *
     * (Original XSL attribuut: htmlhelp.output.)
     *
     * @parameter
     */
    protected String htmlhelpOutput;

    /**
     *
     * (Original XSL attribuut: qanda.nested.in.toc.)
     *
     * @parameter
     */
    protected String qandaNestedInToc;

    /**
     * If you want Options button shown on toolbar, turn this parameter to 1.
     * (Original XSL attribuut: htmlhelp.button.options.)
     *
     * @parameter
     */
    protected String htmlhelpButtonOptions;

    /**
     * Set the color of table cell borders.
     * (Original XSL attribuut: table.cell.border.color.)
     *
     * @parameter
     */
    protected String tableCellBorderColor;

    /**
     *
     * (Original XSL attribuut: olink.fragid.)
     *
     * @parameter
     */
    protected String olinkFragid;

    /**
     * The separator is inserted between line numbers and lines in the verbatim environment.
     * (Original XSL attribuut: linenumbering.separator.)
     *
     * @parameter
     */
    protected String linenumberingSeparator;

    /**
     *
     * (Original XSL attribuut: docbook.css.source.)
     *
     * @parameter
     */
    protected String docbookCssSource;

    /**
     * If set to zero, there will be no entry for the root element in the  ToC.
     * (Original XSL attribuut: htmlhelp.hhc.show.root.)
     *
     * @parameter
     */
    protected String htmlhelpHhcShowRoot;

    /**
     * If you want to include chapter and section numbers into ToC in,  set this parameter to 1.
     * (Original XSL attribuut: epub.autolabel.)
     *
     * @parameter
     */
    protected String epubAutolabel;

    /**
     * Set to true to include the Next button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.next.)
     *
     * @parameter
     */
    protected String htmlhelpButtonNext;

    /**
     * Selects the direction in which a float should be placed.
     * (Original XSL attribuut: default.float.class.)
     *
     * @parameter
     */
    protected String defaultFloatClass;

    /**
     *
     * (Original XSL attribuut: label.from.part.)
     *
     * @parameter
     */
    protected String labelFromPart;

    /**
     *
     * (Original XSL attribuut: abstract.notitle.enabled.)
     *
     * @parameter
     */
    protected String abstractNotitleEnabled;

    /**
     *
     * (Original XSL attribuut: bibliography.style.)
     *
     * @parameter
     */
    protected String bibliographyStyle;

    /**
     * Specifies the thickness of the border on the table's frame.
     * (Original XSL attribuut: table.frame.border.thickness.)
     *
     * @parameter
     */
    protected String tableFrameBorderThickness;

    /**
     * If true, then the exsl:node-set() function is available to be used in the stylesheet.
     * (Original XSL attribuut: exsl.node.set.available.)
     *
     * @parameter
     */
    protected String exslNodeSetAvailable;

    /**
     *
     * (Original XSL attribuut: callouts.extension.)
     *
     * @parameter
     */
    protected String calloutsExtension;

    /**
     *
     * (Original XSL attribuut: annotation.support.)
     *
     * @parameter
     */
    protected String annotationSupport;

    /**
     * This parameter specifies the value of the standalone   specification for generated pages.
     * (Original XSL attribuut: chunker.output.standalone.)
     *
     * @parameter
     */
    protected String chunkerOutputStandalone;

    /**
     * Separator character used for compound profile values.
     * (Original XSL attribuut: profile.separator.)
     *
     * @parameter
     */
    protected String profileSeparator;

    /**
     *
     * (Original XSL attribuut: linenumbering.extension.)
     *
     * @parameter
     */
    protected String linenumberingExtension;

    /**
     * Specifies the filename of the alias file (used for context-sensitive help).
     * (Original XSL attribuut: htmlhelp.alias.file.)
     *
     * @parameter
     */
    protected String htmlhelpAliasFile;

    /**
     *
     * (Original XSL attribuut: keep.relative.image.uris.)
     *
     * @parameter
     */
    protected String keepRelativeImageUris;

    /**
     *
     * (Original XSL attribuut: use.id.as.filename.)
     *
     * @parameter
     */
    protected String useIdAsFilename;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.userlevel.)
     *
     * @parameter
     */
    protected String profileUserlevel;

    /**
     * Eclipse Help plugin name.
     * (Original XSL attribuut: eclipse.plugin.name.)
     *
     * @parameter
     */
    protected String eclipsePluginName;

    /**
     * If non-zero, specifies the thickness of borders on table cells.
     * (Original XSL attribuut: table.cell.border.thickness.)
     *
     * @parameter
     */
    protected String tableCellBorderThickness;

    /**
     * Specifies the border style of table cells.
     * (Original XSL attribuut: table.cell.border.style.)
     *
     * @parameter
     */
    protected String tableCellBorderStyle;

    /**
     * URL address of page accessible by Jump1 button.
     * (Original XSL attribuut: htmlhelp.button.jump1.url.)
     *
     * @parameter
     */
    protected String htmlhelpButtonJump1Url;

    /**
     *
     * (Original XSL attribuut: graphicsize.use.img.src.path.)
     *
     * @parameter
     */
    protected String graphicsizeUseImgSrcPath;

    /**
     * If true, each of the ToC and LoTs (List of Examples, List of Figures, etc.
     * (Original XSL attribuut: chunk.separate.lots.)
     *
     * @parameter
     */
    protected String chunkSeparateLots;

    /**
     *
     * (Original XSL attribuut: use.embed.for.svg.)
     *
     * @parameter
     */
    protected String useEmbedForSvg;

    /**
     * If true, unlabeled qandadivs will be enumerated.
     * (Original XSL attribuut: qandadiv.autolabel.)
     *
     * @parameter
     */
    protected String qandadivAutolabel;

    /**
     *
     * (Original XSL attribuut: ebnf.statement.terminator.)
     *
     * @parameter
     */
    protected String ebnfStatementTerminator;

    /**
     * In order to resolve olinks efficiently, the stylesheets can generate an external data file containing information about all potential cross reference endpoints in a document.
     * (Original XSL attribuut: targets.filename.)
     *
     * @parameter
     */
    protected String targetsFilename;

    /**
     *
     * (Original XSL attribuut: generate.section.toc.level.)
     *
     * @parameter
     */
    protected String generateSectionTocLevel;

    /**
     * When true, additional, empty paragraphs are inserted in several contexts (for example, around informal figures), to create a more pleasing visual appearance in many browsers.
     * (Original XSL attribuut: spacing.paras.)
     *
     * @parameter
     */
    protected String spacingParas;

    /**
     *
     * (Original XSL attribuut: function.parens.)
     *
     * @parameter
     */
    protected String functionParens;

    /**
     * Formal procedures are numbered and always have a title.
     * (Original XSL attribuut: formal.procedures.)
     *
     * @parameter
     */
    protected String formalProcedures;

    /**
     *
     * (Original XSL attribuut: epub.cover.filename.)
     *
     * @parameter
     */
    protected String epubCoverFilename;

    /**
     *
     * (Original XSL attribuut: process.source.toc.)
     *
     * @parameter
     */
    protected String processSourceToc;

    /**
     *
     * (Original XSL attribuut: annotation.css.)
     *
     * @parameter
     */
    protected String annotationCss;

    /**
     * Set the section depth in the left pane of HTML Help viewer.
     * (Original XSL attribuut: htmlhelp.hhc.section.depth.)
     *
     * @parameter
     */
    protected String htmlhelpHhcSectionDepth;

    /**
     * When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document.
     * (Original XSL attribuut: use.local.olink.style.)
     *
     * @parameter
     */
    protected String useLocalOlinkStyle;

    /**
     *
     * (Original XSL attribuut: phrase.propagates.style.)
     *
     * @parameter
     */
    protected String phrasePropagatesStyle;

    /**
     * If true, callouts are presented with graphics (e.
     * (Original XSL attribuut: callout.graphics.)
     *
     * @parameter
     */
    protected String calloutGraphics;

    /**
     *
     * (Original XSL attribuut: insert.olink.page.number.)
     *
     * @parameter
     */
    protected String insertOlinkPageNumber;

    /**
     * If true title of document is shown before ToC/LoT in separate chunk.
     * (Original XSL attribuut: chunk.tocs.and.lots.has.title.)
     *
     * @parameter
     */
    protected String chunkTocsAndLotsHasTitle;

    /**
     *
     * (Original XSL attribuut: component.label.includes.part.label.)
     *
     * @parameter
     */
    protected String componentLabelIncludesPartLabel;

    /**
     *
     * (Original XSL attribuut: profile.value.)
     *
     * @parameter
     */
    protected String profileValue;

    /**
     *
     * (Original XSL attribuut: img.src.path.)
     *
     * @parameter
     */
    protected String imgSrcPath;

    /**
     *
     * (Original XSL attribuut: firstterm.only.link.)
     *
     * @parameter
     */
    protected String firsttermOnlyLink;

    /**
     * Selects draft mode.
     * (Original XSL attribuut: draft.mode.)
     *
     * @parameter
     */
    protected String draftMode;

    /**
     *
     * (Original XSL attribuut: funcsynopsis.decoration.)
     *
     * @parameter
     */
    protected String funcsynopsisDecoration;

    /**
     *
     * (Original XSL attribuut: callout.unicode.number.limit.)
     *
     * @parameter
     */
    protected String calloutUnicodeNumberLimit;

    /**
     * Set to true to include the Print button  on the toolbar.
     * (Original XSL attribuut: htmlhelp.button.print.)
     *
     * @parameter
     */
    protected String htmlhelpButtonPrint;

    /**
     * Eclipse Help plugin provider name.
     * (Original XSL attribuut: eclipse.plugin.provider.)
     *
     * @parameter
     */
    protected String eclipsePluginProvider;

    /**
     * The value of this parameter specifies profiles which should be included in the output.
     * (Original XSL attribuut: profile.lang.)
     *
     * @parameter
     */
    protected String profileLang;

    /**
     *
     * (Original XSL attribuut: olink.pubid.)
     *
     * @parameter
     */
    protected String olinkPubid;

    /**
     *
     * (Original XSL attribuut: blurb.on.titlepage.enabled.)
     *
     * @parameter
     */
    protected String blurbOnTitlepageEnabled;

    public File getImageDirectory() {
        return imageDirectory;
    }

    public void setImageDirectory(File imageDirectory) {
        this.imageDirectory = imageDirectory;
    }

    protected void configure(Transformer transformer) {
        getLog().debug("Configure the transformer.");
        if (chunkQuietly != null) {
            transformer.setParameter("chunk.quietly",
                convertBooleanToXsltParam(chunkQuietly));
        }
        if (profileCondition != null) {
            transformer.setParameter("profile.condition",
                convertStringToXsltParam(profileCondition));
        }
        if (useRoleAsXrefstyle != null) {
            transformer.setParameter("use.role.as.xrefstyle",
                convertBooleanToXsltParam(useRoleAsXrefstyle));
        }
        if (profileRole != null) {
            transformer.setParameter("profile.role",
                convertStringToXsltParam(profileRole));
        }
        if (navigGraphicsExtension != null) {
            transformer.setParameter("navig.graphics.extension",
                convertStringToXsltParam(navigGraphicsExtension));
        }
        if (tableFrameBorderColor != null) {
            transformer.setParameter("table.frame.border.color",
                convertStringToXsltParam(tableFrameBorderColor));
        }
        if (chunkTocsAndLots != null) {
            transformer.setParameter("chunk.tocs.and.lots",
                convertBooleanToXsltParam(chunkTocsAndLots));
        }
        if (texMathDelims != null) {
            transformer.setParameter("tex.math.delims",
                convertBooleanToXsltParam(texMathDelims));
        }
        if (graphicDefaultExtension != null) {
            transformer.setParameter("graphic.default.extension",
                convertStringToXsltParam(graphicDefaultExtension));
        }
        if (partAutolabel != null) {
            transformer.setParameter("part.autolabel",
                convertStringToXsltParam(partAutolabel));
        }
        if (showRevisionflag != null) {
            transformer.setParameter("show.revisionflag",
                convertBooleanToXsltParam(showRevisionflag));
        }
        if (variablelistAsTable != null) {
            transformer.setParameter("variablelist.as.table",
                convertBooleanToXsltParam(variablelistAsTable));
        }
        if (htmlhelpHhcBinary != null) {
            transformer.setParameter("htmlhelp.hhc.binary",
                convertBooleanToXsltParam(htmlhelpHhcBinary));
        }
        if (graphicsizeExtension != null) {
            transformer.setParameter("graphicsize.extension",
                convertBooleanToXsltParam(graphicsizeExtension));
        }
        if (epubCoverLinear != null) {
            transformer.setParameter("epub.cover.linear",
                convertStringToXsltParam(epubCoverLinear));
        }
        if (pointsPerEm != null) {
            transformer.setParameter("points.per.em",
                convertStringToXsltParam(pointsPerEm));
        }
        if (htmlhelpWindowGeometry != null) {
            transformer.setParameter("htmlhelp.window.geometry",
                convertStringToXsltParam(htmlhelpWindowGeometry));
        }
        if (olinkSysid != null) {
            transformer.setParameter("olink.sysid",
                convertStringToXsltParam(olinkSysid));
        }
        if (inheritKeywords != null) {
            transformer.setParameter("inherit.keywords",
                convertBooleanToXsltParam(inheritKeywords));
        }
        if (profileRevision != null) {
            transformer.setParameter("profile.revision",
                convertStringToXsltParam(profileRevision));
        }
        if (ebnfAssignment != null) {
            transformer.setParameter("ebnf.assignment",
                convertStringToXsltParam(ebnfAssignment));
        }
        if (qandaDefaultlabel != null) {
            transformer.setParameter("qanda.defaultlabel",
                convertStringToXsltParam(qandaDefaultlabel));
        }
        if (htmlhelpButtonPrev != null) {
            transformer.setParameter("htmlhelp.button.prev",
                convertBooleanToXsltParam(htmlhelpButtonPrev));
        }
        if (chunkFirstSections != null) {
            transformer.setParameter("chunk.first.sections",
                convertBooleanToXsltParam(chunkFirstSections));
        }
        if (nominalImageWidth != null) {
            transformer.setParameter("nominal.image.width",
                convertStringToXsltParam(nominalImageWidth));
        }
        if (footnoteNumberFormat != null) {
            transformer.setParameter("footnote.number.format",
                convertStringToXsltParam(footnoteNumberFormat));
        }
        if (referenceAutolabel != null) {
            transformer.setParameter("reference.autolabel",
                convertStringToXsltParam(referenceAutolabel));
        }
        if (highlightDefaultLanguage != null) {
            transformer.setParameter("highlight.default.language",
                convertStringToXsltParam(highlightDefaultLanguage));
        }
        if (preferredMediaobjectRole != null) {
            transformer.setParameter("preferred.mediaobject.role",
                convertStringToXsltParam(preferredMediaobjectRole));
        }
        if (manualToc != null) {
            transformer.setParameter("manual.toc",
                convertStringToXsltParam(manualToc));
        }
        if (generateToc != null) {
            transformer.setParameter("generate.toc",
                convertStringToXsltParam(generateToc));
        }
        if (indexMethod != null) {
            transformer.setParameter("index.method",
                convertStringToXsltParam(indexMethod));
        }
        if (insertOlinkPdfFrag != null) {
            transformer.setParameter("insert.olink.pdf.frag",
                convertBooleanToXsltParam(insertOlinkPdfFrag));
        }
        if (ebnfTableBorder != null) {
            transformer.setParameter("ebnf.table.border",
                convertBooleanToXsltParam(ebnfTableBorder));
        }
        if (indexOnType != null) {
            transformer.setParameter("index.on.type",
                convertBooleanToXsltParam(indexOnType));
        }
        if (autotocLabelSeparator != null) {
            transformer.setParameter("autotoc.label.separator",
                convertStringToXsltParam(autotocLabelSeparator));
        }
        if (nominalTableWidth != null) {
            transformer.setParameter("nominal.table.width",
                convertStringToXsltParam(nominalTableWidth));
        }
        if (olinkDoctitle != null) {
            transformer.setParameter("olink.doctitle",
                convertStringToXsltParam(olinkDoctitle));
        }
        if (htmlhelpUseHhk != null) {
            transformer.setParameter("htmlhelp.use.hhk",
                convertBooleanToXsltParam(htmlhelpUseHhk));
        }
        if (htmlhelpButtonJump2Title != null) {
            transformer.setParameter("htmlhelp.button.jump2.title",
                convertStringToXsltParam(htmlhelpButtonJump2Title));
        }
        if (chunkFast != null) {
            transformer.setParameter("chunk.fast",
                convertStringToXsltParam(chunkFast));
        }
        if (insertXrefPageNumber != null) {
            transformer.setParameter("insert.xref.page.number",
                convertStringToXsltParam(insertXrefPageNumber));
        }
        if (biblioentryAltPrimarySeps != null) {
            transformer.setParameter("biblioentry.alt.primary.seps",
                convertStringToXsltParam(biblioentryAltPrimarySeps));
        }
        if (htmlhelpDefaultTopic != null) {
            transformer.setParameter("htmlhelp.default.topic",
                convertStringToXsltParam(htmlhelpDefaultTopic));
        }
        if (htmlStylesheet != null) {
            transformer.setParameter("html.stylesheet",
                convertStringToXsltParam(htmlStylesheet));
        }
        if (emphasisPropagatesStyle != null) {
            transformer.setParameter("emphasis.propagates.style",
                convertBooleanToXsltParam(emphasisPropagatesStyle));
        }
        if (htmlhelpShowMenu != null) {
            transformer.setParameter("htmlhelp.show.menu",
                convertBooleanToXsltParam(htmlhelpShowMenu));
        }
        if (onechunk != null) {
            transformer.setParameter("onechunk",
                convertStringToXsltParam(onechunk));
        }
        if (chunkAppend != null) {
            transformer.setParameter("chunk.append",
                convertStringToXsltParam(chunkAppend));
        }
        if (htmlAppend != null) {
            transformer.setParameter("html.append",
                convertStringToXsltParam(htmlAppend));
        }
        if (variablelistTermBreakAfter != null) {
            transformer.setParameter("variablelist.term.break.after",
                convertBooleanToXsltParam(variablelistTermBreakAfter));
        }
        if (htmlhelpShowAdvancedSearch != null) {
            transformer.setParameter("htmlhelp.show.advanced.search",
                convertBooleanToXsltParam(htmlhelpShowAdvancedSearch));
        }
        if (htmlCellspacing != null) {
            transformer.setParameter("html.cellspacing",
                convertStringToXsltParam(htmlCellspacing));
        }
        if (showComments != null) {
            transformer.setParameter("show.comments",
                convertBooleanToXsltParam(showComments));
        }
        if (profileOs != null) {
            transformer.setParameter("profile.os",
                convertStringToXsltParam(profileOs));
        }
        if (tableFrameBorderStyle != null) {
            transformer.setParameter("table.frame.border.style",
                convertStringToXsltParam(tableFrameBorderStyle));
        }
        if (htmlLongdescLink != null) {
            transformer.setParameter("html.longdesc.link",
                convertBooleanToXsltParam(htmlLongdescLink));
        }
        if (calloutGraphicsNumberLimit != null) {
            transformer.setParameter("callout.graphics.number.limit",
                convertStringToXsltParam(calloutGraphicsNumberLimit));
        }
        if (suppressNavigation != null) {
            transformer.setParameter("suppress.navigation",
                convertBooleanToXsltParam(suppressNavigation));
        }
        if (biblioentryItemSeparator != null) {
            transformer.setParameter("biblioentry.item.separator",
                convertStringToXsltParam(biblioentryItemSeparator));
        }
        if (xrefTitlePageSeparator != null) {
            transformer.setParameter("xref.title-page.separator",
                convertStringToXsltParam(xrefTitlePageSeparator));
        }
        if (tablecolumnsExtension != null) {
            transformer.setParameter("tablecolumns.extension",
                convertBooleanToXsltParam(tablecolumnsExtension));
        }
        if (olinkBaseUri != null) {
            transformer.setParameter("olink.base.uri",
                convertStringToXsltParam(olinkBaseUri));
        }
        if (makeValidHtml != null) {
            transformer.setParameter("make.valid.html",
                convertBooleanToXsltParam(makeValidHtml));
        }
        if (annotationGraphicOpen != null) {
            transformer.setParameter("annotation.graphic.open",
                convertStringToXsltParam(annotationGraphicOpen));
        }
        if (profileAudience != null) {
            transformer.setParameter("profile.audience",
                convertStringToXsltParam(profileAudience));
        }
        if (emailDelimitersEnabled != null) {
            transformer.setParameter("email.delimiters.enabled",
                convertBooleanToXsltParam(emailDelimitersEnabled));
        }
        if (generateCssHeader != null) {
            transformer.setParameter("generate.css.header",
                convertBooleanToXsltParam(generateCssHeader));
        }
        if (htmlhelpTitle != null) {
            transformer.setParameter("htmlhelp.title",
                convertStringToXsltParam(htmlhelpTitle));
        }
        if (texMathInAlt != null) {
            transformer.setParameter("tex.math.in.alt",
                convertStringToXsltParam(texMathInAlt));
        }
        if (htmlhelpForceMapAndAlias != null) {
            transformer.setParameter("htmlhelp.force.map.and.alias",
                convertBooleanToXsltParam(htmlhelpForceMapAndAlias));
        }
        if (sectionAutolabelMaxDepth != null) {
            transformer.setParameter("section.autolabel.max.depth",
                convertStringToXsltParam(sectionAutolabelMaxDepth));
        }
        if (idWarnings != null) {
            transformer.setParameter("id.warnings",
                convertBooleanToXsltParam(idWarnings));
        }
        if (adeExtensions != null) {
            transformer.setParameter("ade.extensions",
                convertBooleanToXsltParam(adeExtensions));
        }
        if (formalObjectBreakAfter != null) {
            transformer.setParameter("formal.object.break.after",
                convertStringToXsltParam(formalObjectBreakAfter));
        }
        if (profileArch != null) {
            transformer.setParameter("profile.arch",
                convertStringToXsltParam(profileArch));
        }
        if (htmlhelpMapFile != null) {
            transformer.setParameter("htmlhelp.map.file",
                convertStringToXsltParam(htmlhelpMapFile));
        }
        if (chunkerOutputCdataSectionElements != null) {
            transformer.setParameter("chunker.output.cdata-section-elements",
                convertStringToXsltParam(chunkerOutputCdataSectionElements));
        }
        if (profileConformance != null) {
            transformer.setParameter("profile.conformance",
                convertStringToXsltParam(profileConformance));
        }
        if (htmlHeadLegalnoticeLinkMultiple != null) {
            transformer.setParameter("html.head.legalnotice.link.multiple",
                convertBooleanToXsltParam(htmlHeadLegalnoticeLinkMultiple));
        }
        if (refclassSuppress != null) {
            transformer.setParameter("refclass.suppress",
                convertBooleanToXsltParam(refclassSuppress));
        }
        if (htmlCellpadding != null) {
            transformer.setParameter("html.cellpadding",
                convertStringToXsltParam(htmlCellpadding));
        }
        if (eclipsePluginId != null) {
            transformer.setParameter("eclipse.plugin.id",
                convertStringToXsltParam(eclipsePluginId));
        }
        if (chunkerOutputDoctypePublic != null) {
            transformer.setParameter("chunker.output.doctype-public",
                convertStringToXsltParam(chunkerOutputDoctypePublic));
        }
        if (paraPropagatesStyle != null) {
            transformer.setParameter("para.propagates.style",
                convertBooleanToXsltParam(paraPropagatesStyle));
        }
        if (makeCleanHtml != null) {
            transformer.setParameter("make.clean.html",
                convertBooleanToXsltParam(makeCleanHtml));
        }
        if (tocListType != null) {
            transformer.setParameter("toc.list.type",
                convertStringToXsltParam(tocListType));
        }
        if (navigGraphics != null) {
            transformer.setParameter("navig.graphics",
                convertBooleanToXsltParam(navigGraphics));
        }
        if (generateRevhistoryLink != null) {
            transformer.setParameter("generate.revhistory.link",
                convertBooleanToXsltParam(generateRevhistoryLink));
        }
        if (docbookCssLink != null) {
            transformer.setParameter("docbook.css.link",
                convertBooleanToXsltParam(docbookCssLink));
        }
        if (l10nXml != null) {
            transformer.setParameter("l10n.xml",
                convertStringToXsltParam(l10nXml));
        }
        if (tableFootnoteNumberSymbols != null) {
            transformer.setParameter("table.footnote.number.symbols",
                convertStringToXsltParam(tableFootnoteNumberSymbols));
        }
        if (ulinkTarget != null) {
            transformer.setParameter("ulink.target",
                convertStringToXsltParam(ulinkTarget));
        }
        if (chunkerOutputEncoding != null) {
            transformer.setParameter("chunker.output.encoding",
                convertStringToXsltParam(chunkerOutputEncoding));
        }
        if (sectionAutolabel != null) {
            transformer.setParameter("section.autolabel",
                convertBooleanToXsltParam(sectionAutolabel));
        }
        if (generateMetaAbstract != null) {
            transformer.setParameter("generate.meta.abstract",
                convertBooleanToXsltParam(generateMetaAbstract));
        }
        if (htmlhelpHhpTail != null) {
            transformer.setParameter("htmlhelp.hhp.tail",
                convertStringToXsltParam(htmlhelpHhpTail));
        }
        if (chunkToc != null) {
            transformer.setParameter("chunk.toc",
                convertStringToXsltParam(chunkToc));
        }
        if (htmlhelpShowFavorities != null) {
            transformer.setParameter("htmlhelp.show.favorities",
                convertBooleanToXsltParam(htmlhelpShowFavorities));
        }
        if (glosstermAutoLink != null) {
            transformer.setParameter("glossterm.auto.link",
                convertBooleanToXsltParam(glosstermAutoLink));
        }
        if (get != null) {
            transformer.setParameter("get",
                convertStringToXsltParam(get));
        }
        if (simplesectInToc != null) {
            transformer.setParameter("simplesect.in.toc",
                convertBooleanToXsltParam(simplesectInToc));
        }
        if (suppressHeaderNavigation != null) {
            transformer.setParameter("suppress.header.navigation",
                convertBooleanToXsltParam(suppressHeaderNavigation));
        }
        if (htmlhelpButtonJump2 != null) {
            transformer.setParameter("htmlhelp.button.jump2",
                convertBooleanToXsltParam(htmlhelpButtonJump2));
        }
        if (htmlhelpButtonJump1 != null) {
            transformer.setParameter("htmlhelp.button.jump1",
                convertBooleanToXsltParam(htmlhelpButtonJump1));
        }
        if (chunkerOutputOmitXmlDeclaration != null) {
            transformer.setParameter("chunker.output.omit-xml-declaration",
                convertStringToXsltParam(chunkerOutputOmitXmlDeclaration));
        }
        if (htmlhelpButtonForward != null) {
            transformer.setParameter("htmlhelp.button.forward",
                convertBooleanToXsltParam(htmlhelpButtonForward));
        }
        if (punctHonorific != null) {
            transformer.setParameter("punct.honorific",
                convertStringToXsltParam(punctHonorific));
        }
        if (ignoreImageScaling != null) {
            transformer.setParameter("ignore.image.scaling",
                convertBooleanToXsltParam(ignoreImageScaling));
        }
        if (appendixAutolabel != null) {
            transformer.setParameter("appendix.autolabel",
                convertStringToXsltParam(appendixAutolabel));
        }
        if (entryPropagatesStyle != null) {
            transformer.setParameter("entry.propagates.style",
                convertBooleanToXsltParam(entryPropagatesStyle));
        }
        if (suppressFooterNavigation != null) {
            transformer.setParameter("suppress.footer.navigation",
                convertBooleanToXsltParam(suppressFooterNavigation));
        }
        if (indexTermSeparator != null) {
            transformer.setParameter("index.term.separator",
                convertStringToXsltParam(indexTermSeparator));
        }
        if (calloutListTable != null) {
            transformer.setParameter("callout.list.table",
                convertBooleanToXsltParam(calloutListTable));
        }
        if (htmlhelpOnly != null) {
            transformer.setParameter("htmlhelp.only",
                convertBooleanToXsltParam(htmlhelpOnly));
        }
        if (htmlLongdesc != null) {
            transformer.setParameter("html.longdesc",
                convertBooleanToXsltParam(htmlLongdesc));
        }
        if (editedbyEnabled != null) {
            transformer.setParameter("editedby.enabled",
                convertBooleanToXsltParam(editedbyEnabled));
        }
        if (chunkerOutputMediaType != null) {
            transformer.setParameter("chunker.output.media-type",
                convertStringToXsltParam(chunkerOutputMediaType));
        }
        if (segmentedlistAsTable != null) {
            transformer.setParameter("segmentedlist.as.table",
                convertBooleanToXsltParam(segmentedlistAsTable));
        }
        if (htmlhelpHhc != null) {
            transformer.setParameter("htmlhelp.hhc",
                convertStringToXsltParam(htmlhelpHhc));
        }
        if (htmlhelpHhp != null) {
            transformer.setParameter("htmlhelp.hhp",
                convertStringToXsltParam(htmlhelpHhp));
        }
        if (chunkerOutputIndent != null) {
            transformer.setParameter("chunker.output.indent",
                convertStringToXsltParam(chunkerOutputIndent));
        }
        if (htmlhelpHhk != null) {
            transformer.setParameter("htmlhelp.hhk",
                convertStringToXsltParam(htmlhelpHhk));
        }
        if (customCssSource != null) {
            transformer.setParameter("custom.css.source",
                convertStringToXsltParam(customCssSource));
        }
        if (htmlhelpEncoding != null) {
            transformer.setParameter("htmlhelp.encoding",
                convertStringToXsltParam(htmlhelpEncoding));
        }
        if (annotationGraphicClose != null) {
            transformer.setParameter("annotation.graphic.close",
                convertStringToXsltParam(annotationGraphicClose));
        }
        if (defaultTableFrame != null) {
            transformer.setParameter("default.table.frame",
                convertStringToXsltParam(defaultTableFrame));
        }
        if (glossaryCollection != null) {
            transformer.setParameter("glossary.collection",
                convertStringToXsltParam(glossaryCollection));
        }
        if (olinkOutlineExt != null) {
            transformer.setParameter("olink.outline.ext",
                convertStringToXsltParam(olinkOutlineExt));
        }
        if (menuchoiceMenuSeparator != null) {
            transformer.setParameter("menuchoice.menu.separator",
                convertStringToXsltParam(menuchoiceMenuSeparator));
        }
        if (profileSecurity != null) {
            transformer.setParameter("profile.security",
                convertStringToXsltParam(profileSecurity));
        }
        if (chapterAutolabel != null) {
            transformer.setParameter("chapter.autolabel",
                convertStringToXsltParam(chapterAutolabel));
        }
        if (biblioentryPrimaryCount != null) {
            transformer.setParameter("biblioentry.primary.count",
                convertStringToXsltParam(biblioentryPrimaryCount));
        }
        if (pixelsPerInch != null) {
            transformer.setParameter("pixels.per.inch",
                convertStringToXsltParam(pixelsPerInch));
        }
        if (contribInlineEnabled != null) {
            transformer.setParameter("contrib.inline.enabled",
                convertBooleanToXsltParam(contribInlineEnabled));
        }
        if (olinkResolver != null) {
            transformer.setParameter("olink.resolver",
                convertStringToXsltParam(olinkResolver));
        }
        if (htmlhelpButtonBack != null) {
            transformer.setParameter("htmlhelp.button.back",
                convertBooleanToXsltParam(htmlhelpButtonBack));
        }
        if (formalTitlePlacement != null) {
            transformer.setParameter("formal.title.placement",
                convertStringToXsltParam(formalTitlePlacement));
        }
        if (chunkerOutputQuiet != null) {
            transformer.setParameter("chunker.output.quiet",
                convertStringToXsltParam(chunkerOutputQuiet));
        }
        if (bibliographyCollection != null) {
            transformer.setParameter("bibliography.collection",
                convertStringToXsltParam(bibliographyCollection));
        }
        if (indexRangeSeparator != null) {
            transformer.setParameter("index.range.separator",
                convertStringToXsltParam(indexRangeSeparator));
        }
        if (htmlhelpButtonLocate != null) {
            transformer.setParameter("htmlhelp.button.locate",
                convertBooleanToXsltParam(htmlhelpButtonLocate));
        }
        if (shadeVerbatim != null) {
            transformer.setParameter("shade.verbatim",
                convertBooleanToXsltParam(shadeVerbatim));
        }
        if (linenumberingWidth != null) {
            transformer.setParameter("linenumbering.width",
                convertStringToXsltParam(linenumberingWidth));
        }
        if (l10nGentextDefaultLanguage != null) {
            transformer.setParameter("l10n.gentext.default.language",
                convertStringToXsltParam(l10nGentextDefaultLanguage));
        }
        if (generateLegalnoticeLink != null) {
            transformer.setParameter("generate.legalnotice.link",
                convertBooleanToXsltParam(generateLegalnoticeLink));
        }
        if (refentryGenerateName != null) {
            transformer.setParameter("refentry.generate.name",
                convertBooleanToXsltParam(refentryGenerateName));
        }
        if (admonStyle != null) {
            transformer.setParameter("admon.style",
                convertStringToXsltParam(admonStyle));
        }
        if (xrefLabelTitleSeparator != null) {
            transformer.setParameter("xref.label-title.separator",
                convertStringToXsltParam(xrefLabelTitleSeparator));
        }
        if (htmlStylesheetType != null) {
            transformer.setParameter("html.stylesheet.type",
                convertStringToXsltParam(htmlStylesheetType));
        }
        if (variablelistTermSeparator != null) {
            transformer.setParameter("variablelist.term.separator",
                convertStringToXsltParam(variablelistTermSeparator));
        }
        if (qandaInheritNumeration != null) {
            transformer.setParameter("qanda.inherit.numeration",
                convertBooleanToXsltParam(qandaInheritNumeration));
        }
        if (calloutDefaultcolumn != null) {
            transformer.setParameter("callout.defaultcolumn",
                convertStringToXsltParam(calloutDefaultcolumn));
        }
        if (profileRevisionflag != null) {
            transformer.setParameter("profile.revisionflag",
                convertStringToXsltParam(profileRevisionflag));
        }
        if (procedureStepNumerationFormats != null) {
            transformer.setParameter("procedure.step.numeration.formats",
                convertStringToXsltParam(procedureStepNumerationFormats));
        }
        if (rootid != null) {
            transformer.setParameter("rootid",
                convertStringToXsltParam(rootid));
        }
        if (chunkSectionDepth != null) {
            transformer.setParameter("chunk.section.depth",
                convertStringToXsltParam(chunkSectionDepth));
        }
        if (refentryXrefManvolnum != null) {
            transformer.setParameter("refentry.xref.manvolnum",
                convertBooleanToXsltParam(refentryXrefManvolnum));
        }
        if (epubHtmlTocId != null) {
            transformer.setParameter("epub.html.toc.id",
                convertStringToXsltParam(epubHtmlTocId));
        }
        if (htmlhelpHhpWindow != null) {
            transformer.setParameter("htmlhelp.hhp.window",
                convertStringToXsltParam(htmlhelpHhpWindow));
        }
        if (collectXrefTargets != null) {
            transformer.setParameter("collect.xref.targets",
                convertStringToXsltParam(collectXrefTargets));
        }
        if (makeSingleYearRanges != null) {
            transformer.setParameter("make.single.year.ranges",
                convertBooleanToXsltParam(makeSingleYearRanges));
        }
        if (htmlhelpEnhancedDecompilation != null) {
            transformer.setParameter("htmlhelp.enhanced.decompilation",
                convertBooleanToXsltParam(htmlhelpEnhancedDecompilation));
        }
        if (htmlhelpButtonJump2Url != null) {
            transformer.setParameter("htmlhelp.button.jump2.url",
                convertStringToXsltParam(htmlhelpButtonJump2Url));
        }
        if (htmlhelpHhcFoldersInsteadBooks != null) {
            transformer.setParameter("htmlhelp.hhc.folders.instead.books",
                convertBooleanToXsltParam(htmlhelpHhcFoldersInsteadBooks));
        }
        if (generateIdAttributes != null) {
            transformer.setParameter("generate.id.attributes",
                convertBooleanToXsltParam(generateIdAttributes));
        }
        if (epubCoverId != null) {
            transformer.setParameter("epub.cover.id",
                convertStringToXsltParam(epubCoverId));
        }
        if (stylesheetResultType != null) {
            transformer.setParameter("stylesheet.result.type",
                convertStringToXsltParam(stylesheetResultType));
        }
        if (indexNumberSeparator != null) {
            transformer.setParameter("index.number.separator",
                convertStringToXsltParam(indexNumberSeparator));
        }
        if (calloutUnicodeStartCharacter != null) {
            transformer.setParameter("callout.unicode.start.character",
                convertStringToXsltParam(calloutUnicodeStartCharacter));
        }
        if (ebnfTableBgcolor != null) {
            transformer.setParameter("ebnf.table.bgcolor",
                convertStringToXsltParam(ebnfTableBgcolor));
        }
        if (epubContainerFilename != null) {
            transformer.setParameter("epub.container.filename",
                convertStringToXsltParam(epubContainerFilename));
        }
        if (l10nLangValueRfcCompliant != null) {
            transformer.setParameter("l10n.lang.value.rfc.compliant",
                convertBooleanToXsltParam(l10nLangValueRfcCompliant));
        }
        if (xrefLabelPageSeparator != null) {
            transformer.setParameter("xref.label-page.separator",
                convertStringToXsltParam(xrefLabelPageSeparator));
        }
        if (processEmptySourceToc != null) {
            transformer.setParameter("process.empty.source.toc",
                convertBooleanToXsltParam(processEmptySourceToc));
        }
        if (htmlhelpRememberWindowPosition != null) {
            transformer.setParameter("htmlhelp.remember.window.position",
                convertBooleanToXsltParam(htmlhelpRememberWindowPosition));
        }
        if (navigShowtitles != null) {
            transformer.setParameter("navig.showtitles",
                convertBooleanToXsltParam(navigShowtitles));
        }
        if (highlightXslthlConfig != null) {
            transformer.setParameter("highlight.xslthl.config",
                convertStringToXsltParam(highlightXslthlConfig));
        }
        if (epubNcxFilename != null) {
            transformer.setParameter("epub.ncx.filename",
                convertStringToXsltParam(epubNcxFilename));
        }
        if (highlightSource != null) {
            transformer.setParameter("highlight.source",
                convertBooleanToXsltParam(highlightSource));
        }
        if (footerRule != null) {
            transformer.setParameter("footer.rule",
                convertBooleanToXsltParam(footerRule));
        }
        if (refentryGenerateTitle != null) {
            transformer.setParameter("refentry.generate.title",
                convertBooleanToXsltParam(refentryGenerateTitle));
        }
        if (navigGraphicsPath != null) {
            transformer.setParameter("navig.graphics.path",
                convertStringToXsltParam(navigGraphicsPath));
        }
        if (calloutGraphicsPath != null) {
            transformer.setParameter("callout.graphics.path",
                convertStringToXsltParam(calloutGraphicsPath));
        }
        if (autotocLabelInHyperlink != null) {
            transformer.setParameter("autotoc.label.in.hyperlink",
                convertBooleanToXsltParam(autotocLabelInHyperlink));
        }
        if (htmlhelpButtonZoom != null) {
            transformer.setParameter("htmlhelp.button.zoom",
                convertBooleanToXsltParam(htmlhelpButtonZoom));
        }
        if (chunkerOutputMethod != null) {
            transformer.setParameter("chunker.output.method",
                convertStringToXsltParam(chunkerOutputMethod));
        }
        if (qandaInToc != null) {
            transformer.setParameter("qanda.in.toc",
                convertBooleanToXsltParam(qandaInToc));
        }
        if (glossarySort != null) {
            transformer.setParameter("glossary.sort",
                convertBooleanToXsltParam(glossarySort));
        }
        if (calloutGraphicsExtension != null) {
            transformer.setParameter("callout.graphics.extension",
                convertStringToXsltParam(calloutGraphicsExtension));
        }
        if (footnoteNumberSymbols != null) {
            transformer.setParameter("footnote.number.symbols",
                convertStringToXsltParam(footnoteNumberSymbols));
        }
        if (htmlhelpButtonHomeUrl != null) {
            transformer.setParameter("htmlhelp.button.home.url",
                convertStringToXsltParam(htmlhelpButtonHomeUrl));
        }
        if (tableBordersWithCss != null) {
            transformer.setParameter("table.borders.with.css",
                convertBooleanToXsltParam(tableBordersWithCss));
        }
        if (htmlExtraHeadLinks != null) {
            transformer.setParameter("html.extra.head.links",
                convertBooleanToXsltParam(htmlExtraHeadLinks));
        }
        if (bridgeheadInToc != null) {
            transformer.setParameter("bridgehead.in.toc",
                convertBooleanToXsltParam(bridgeheadInToc));
        }
        if (othercreditLikeAuthorEnabled != null) {
            transformer.setParameter("othercredit.like.author.enabled",
                convertBooleanToXsltParam(othercreditLikeAuthorEnabled));
        }
        if (linenumberingEveryNth != null) {
            transformer.setParameter("linenumbering.everyNth",
                convertStringToXsltParam(linenumberingEveryNth));
        }
        if (saxonCharacterRepresentation != null) {
            transformer.setParameter("saxon.character.representation",
                convertStringToXsltParam(saxonCharacterRepresentation));
        }
        if (funcsynopsisStyle != null) {
            transformer.setParameter("funcsynopsis.style",
                convertStringToXsltParam(funcsynopsisStyle));
        }
        if (generateIndex != null) {
            transformer.setParameter("generate.index",
                convertBooleanToXsltParam(generateIndex));
        }
        if (emptyLocalL10nXml != null) {
            transformer.setParameter("empty.local.l10n.xml",
                convertStringToXsltParam(emptyLocalL10nXml));
        }
        if (htmlhelpShowToolbarText != null) {
            transformer.setParameter("htmlhelp.show.toolbar.text",
                convertBooleanToXsltParam(htmlhelpShowToolbarText));
        }
        if (epubEmbeddedFonts != null) {
            transformer.setParameter("epub.embedded.fonts",
                convertStringToXsltParam(epubEmbeddedFonts));
        }
        if (l10nGentextUseXrefLanguage != null) {
            transformer.setParameter("l10n.gentext.use.xref.language",
                convertBooleanToXsltParam(l10nGentextUseXrefLanguage));
        }
        if (olinkLangFallbackSequence != null) {
            transformer.setParameter("olink.lang.fallback.sequence",
                convertStringToXsltParam(olinkLangFallbackSequence));
        }
        if (epubNcxTocId != null) {
            transformer.setParameter("epub.ncx.toc.id",
                convertStringToXsltParam(epubNcxTocId));
        }
        if (authorOthernameInMiddle != null) {
            transformer.setParameter("author.othername.in.middle",
                convertBooleanToXsltParam(authorOthernameInMiddle));
        }
        if (refentrySeparator != null) {
            transformer.setParameter("refentry.separator",
                convertBooleanToXsltParam(refentrySeparator));
        }
        if (menuchoiceSeparator != null) {
            transformer.setParameter("menuchoice.separator",
                convertStringToXsltParam(menuchoiceSeparator));
        }
        if (makeYearRanges != null) {
            transformer.setParameter("make.year.ranges",
                convertBooleanToXsltParam(makeYearRanges));
        }
        if (makeGraphicViewport != null) {
            transformer.setParameter("make.graphic.viewport",
                convertBooleanToXsltParam(makeGraphicViewport));
        }
        if (manifest != null) {
            transformer.setParameter("manifest",
                convertStringToXsltParam(manifest));
        }
        if (htmlhelpButtonStop != null) {
            transformer.setParameter("htmlhelp.button.stop",
                convertBooleanToXsltParam(htmlhelpButtonStop));
        }
        if (nominalImageDepth != null) {
            transformer.setParameter("nominal.image.depth",
                convertStringToXsltParam(nominalImageDepth));
        }
        if (l10nGentextLanguage != null) {
            transformer.setParameter("l10n.gentext.language",
                convertStringToXsltParam(l10nGentextLanguage));
        }
        if (htmlhelpChm != null) {
            transformer.setParameter("htmlhelp.chm",
                convertStringToXsltParam(htmlhelpChm));
        }
        if (htmlhelpHhcWidth != null) {
            transformer.setParameter("htmlhelp.hhc.width",
                convertStringToXsltParam(htmlhelpHhcWidth));
        }
        if (epubNcxDepth != null) {
            transformer.setParameter("epub.ncx.depth",
                convertStringToXsltParam(epubNcxDepth));
        }
        if (useExtensions != null) {
            transformer.setParameter("use.extensions",
                convertBooleanToXsltParam(useExtensions));
        }
        if (runinheadTitleEndPunct != null) {
            transformer.setParameter("runinhead.title.end.punct",
                convertStringToXsltParam(runinheadTitleEndPunct));
        }
        if (olinkDebug != null) {
            transformer.setParameter("olink.debug",
                convertBooleanToXsltParam(olinkDebug));
        }
        if (htmlhelpButtonJump1Title != null) {
            transformer.setParameter("htmlhelp.button.jump1.title",
                convertStringToXsltParam(htmlhelpButtonJump1Title));
        }
        if (localL10nXml != null) {
            transformer.setParameter("local.l10n.xml",
                convertStringToXsltParam(localL10nXml));
        }
        if (indexLinksToSection != null) {
            transformer.setParameter("index.links.to.section",
                convertBooleanToXsltParam(indexLinksToSection));
        }
        if (xrefWithNumberAndTitle != null) {
            transformer.setParameter("xref.with.number.and.title",
                convertBooleanToXsltParam(xrefWithNumberAndTitle));
        }
        if (admonGraphicsPath != null) {
            transformer.setParameter("admon.graphics.path",
                convertStringToXsltParam(admonGraphicsPath));
        }
        if (eclipseAutolabel != null) {
            transformer.setParameter("eclipse.autolabel",
                convertBooleanToXsltParam(eclipseAutolabel));
        }
        if (annotationJs != null) {
            transformer.setParameter("annotation.js",
                convertStringToXsltParam(annotationJs));
        }
        if (htmlhelpAutolabel != null) {
            transformer.setParameter("htmlhelp.autolabel",
                convertBooleanToXsltParam(htmlhelpAutolabel));
        }
        if (tableFootnoteNumberFormat != null) {
            transformer.setParameter("table.footnote.number.format",
                convertStringToXsltParam(tableFootnoteNumberFormat));
        }
        if (htmlHeadLegalnoticeLinkTypes != null) {
            transformer.setParameter("html.head.legalnotice.link.types",
                convertStringToXsltParam(htmlHeadLegalnoticeLinkTypes));
        }
        if (defaultImageWidth != null) {
            transformer.setParameter("default.image.width",
                convertStringToXsltParam(defaultImageWidth));
        }
        if (htmlhelpButtonHome != null) {
            transformer.setParameter("htmlhelp.button.home",
                convertBooleanToXsltParam(htmlhelpButtonHome));
        }
        if (headerRule != null) {
            transformer.setParameter("header.rule",
                convertBooleanToXsltParam(headerRule));
        }
        if (prefaceAutolabel != null) {
            transformer.setParameter("preface.autolabel",
                convertStringToXsltParam(prefaceAutolabel));
        }
        if (htmlhelpEnumerateImages != null) {
            transformer.setParameter("htmlhelp.enumerate.images",
                convertBooleanToXsltParam(htmlhelpEnumerateImages));
        }
        if (currentDocid != null) {
            transformer.setParameter("current.docid",
                convertStringToXsltParam(currentDocid));
        }
        if (citerefentryLink != null) {
            transformer.setParameter("citerefentry.link",
                convertBooleanToXsltParam(citerefentryLink));
        }
        if (preferInternalOlink != null) {
            transformer.setParameter("prefer.internal.olink",
                convertBooleanToXsltParam(preferInternalOlink));
        }
        if (useSvg != null) {
            transformer.setParameter("use.svg",
                convertBooleanToXsltParam(useSvg));
        }
        if (profileAttribute != null) {
            transformer.setParameter("profile.attribute",
                convertStringToXsltParam(profileAttribute));
        }
        if (linkMailtoUrl != null) {
            transformer.setParameter("link.mailto.url",
                convertStringToXsltParam(linkMailtoUrl));
        }
        if (htmlhelpHhpWindows != null) {
            transformer.setParameter("htmlhelp.hhp.windows",
                convertStringToXsltParam(htmlhelpHhpWindows));
        }
        if (tocMaxDepth != null) {
            transformer.setParameter("toc.max.depth",
                convertStringToXsltParam(tocMaxDepth));
        }
        if (targetDatabaseDocument != null) {
            transformer.setParameter("target.database.document",
                convertStringToXsltParam(targetDatabaseDocument));
        }
        if (admonGraphicsExtension != null) {
            transformer.setParameter("admon.graphics.extension",
                convertStringToXsltParam(admonGraphicsExtension));
        }
        if (htmlExt != null) {
            transformer.setParameter("html.ext",
                convertStringToXsltParam(htmlExt));
        }
        if (bibliographyNumbered != null) {
            transformer.setParameter("bibliography.numbered",
                convertBooleanToXsltParam(bibliographyNumbered));
        }
        if (epubCoverImageId != null) {
            transformer.setParameter("epub.cover.image.id",
                convertStringToXsltParam(epubCoverImageId));
        }
        if (textinsertExtension != null) {
            transformer.setParameter("textinsert.extension",
                convertBooleanToXsltParam(textinsertExtension));
        }
        if (epubCoverHtml != null) {
            transformer.setParameter("epub.cover.html",
                convertStringToXsltParam(epubCoverHtml));
        }
        if (generateManifest != null) {
            transformer.setParameter("generate.manifest",
                convertBooleanToXsltParam(generateManifest));
        }
        if (indexPreferTitleabbrev != null) {
            transformer.setParameter("index.prefer.titleabbrev",
                convertBooleanToXsltParam(indexPreferTitleabbrev));
        }
        if (htmlBase != null) {
            transformer.setParameter("html.base",
                convertStringToXsltParam(htmlBase));
        }
        if (htmlCleanup != null) {
            transformer.setParameter("html.cleanup",
                convertBooleanToXsltParam(htmlCleanup));
        }
        if (defaultTableWidth != null) {
            transformer.setParameter("default.table.width",
                convertStringToXsltParam(defaultTableWidth));
        }
        if (chunkerOutputDoctypeSystem != null) {
            transformer.setParameter("chunker.output.doctype-system",
                convertStringToXsltParam(chunkerOutputDoctypeSystem));
        }
        if (tocSectionDepth != null) {
            transformer.setParameter("toc.section.depth",
                convertStringToXsltParam(tocSectionDepth));
        }
        if (writingMode != null) {
            transformer.setParameter("writing.mode",
                convertStringToXsltParam(writingMode));
        }
        if (javahelpEncoding != null) {
            transformer.setParameter("javahelp.encoding",
                convertStringToXsltParam(javahelpEncoding));
        }
        if (htmlhelpDisplayProgress != null) {
            transformer.setParameter("htmlhelp.display.progress",
                convertBooleanToXsltParam(htmlhelpDisplayProgress));
        }
        if (calloutUnicode != null) {
            transformer.setParameter("callout.unicode",
                convertBooleanToXsltParam(calloutUnicode));
        }
        if (textdataDefaultEncoding != null) {
            transformer.setParameter("textdata.default.encoding",
                convertStringToXsltParam(textdataDefaultEncoding));
        }
        if (annotateToc != null) {
            transformer.setParameter("annotate.toc",
                convertBooleanToXsltParam(annotateToc));
        }
        if (admonGraphics != null) {
            transformer.setParameter("admon.graphics",
                convertBooleanToXsltParam(admonGraphics));
        }
        if (htmlhelpButtonHideshow != null) {
            transformer.setParameter("htmlhelp.button.hideshow",
                convertBooleanToXsltParam(htmlhelpButtonHideshow));
        }
        if (htmlhelpButtonRefresh != null) {
            transformer.setParameter("htmlhelp.button.refresh",
                convertBooleanToXsltParam(htmlhelpButtonRefresh));
        }
        if (runinheadDefaultTitleEndPunct != null) {
            transformer.setParameter("runinhead.default.title.end.punct",
                convertStringToXsltParam(runinheadDefaultTitleEndPunct));
        }
        if (glossentryShowAcronym != null) {
            transformer.setParameter("glossentry.show.acronym",
                convertStringToXsltParam(glossentryShowAcronym));
        }
        if (cssDecoration != null) {
            transformer.setParameter("css.decoration",
                convertBooleanToXsltParam(cssDecoration));
        }
        if (useRoleForMediaobject != null) {
            transformer.setParameter("use.role.for.mediaobject",
                convertBooleanToXsltParam(useRoleForMediaobject));
        }
        if (sectionLabelIncludesComponentLabel != null) {
            transformer.setParameter("section.label.includes.component.label",
                convertBooleanToXsltParam(sectionLabelIncludesComponentLabel));
        }
        if (admonTextlabel != null) {
            transformer.setParameter("admon.textlabel",
                convertBooleanToXsltParam(admonTextlabel));
        }
        if (profileVendor != null) {
            transformer.setParameter("profile.vendor",
                convertStringToXsltParam(profileVendor));
        }
        if (profileStatus != null) {
            transformer.setParameter("profile.status",
                convertStringToXsltParam(profileStatus));
        }
        if (indexOnRole != null) {
            transformer.setParameter("index.on.role",
                convertBooleanToXsltParam(indexOnRole));
        }
        if (draftWatermarkImage != null) {
            transformer.setParameter("draft.watermark.image",
                convertStringToXsltParam(draftWatermarkImage));
        }
        if (profileWordsize != null) {
            transformer.setParameter("profile.wordsize",
                convertStringToXsltParam(profileWordsize));
        }
        if (texMathFile != null) {
            transformer.setParameter("tex.math.file",
                convertStringToXsltParam(texMathFile));
        }
        if (htmlhelpOutput != null) {
            transformer.setParameter("htmlhelp.output",
                convertStringToXsltParam(htmlhelpOutput));
        }
        if (qandaNestedInToc != null) {
            transformer.setParameter("qanda.nested.in.toc",
                convertBooleanToXsltParam(qandaNestedInToc));
        }
        if (htmlhelpButtonOptions != null) {
            transformer.setParameter("htmlhelp.button.options",
                convertBooleanToXsltParam(htmlhelpButtonOptions));
        }
        if (tableCellBorderColor != null) {
            transformer.setParameter("table.cell.border.color",
                convertStringToXsltParam(tableCellBorderColor));
        }
        if (olinkFragid != null) {
            transformer.setParameter("olink.fragid",
                convertStringToXsltParam(olinkFragid));
        }
        if (linenumberingSeparator != null) {
            transformer.setParameter("linenumbering.separator",
                convertStringToXsltParam(linenumberingSeparator));
        }
        if (docbookCssSource != null) {
            transformer.setParameter("docbook.css.source",
                convertStringToXsltParam(docbookCssSource));
        }
        if (htmlhelpHhcShowRoot != null) {
            transformer.setParameter("htmlhelp.hhc.show.root",
                convertBooleanToXsltParam(htmlhelpHhcShowRoot));
        }
        if (epubAutolabel != null) {
            transformer.setParameter("epub.autolabel",
                convertBooleanToXsltParam(epubAutolabel));
        }
        if (htmlhelpButtonNext != null) {
            transformer.setParameter("htmlhelp.button.next",
                convertBooleanToXsltParam(htmlhelpButtonNext));
        }
        if (defaultFloatClass != null) {
            transformer.setParameter("default.float.class",
                convertStringToXsltParam(defaultFloatClass));
        }
        if (labelFromPart != null) {
            transformer.setParameter("label.from.part",
                convertBooleanToXsltParam(labelFromPart));
        }
        if (abstractNotitleEnabled != null) {
            transformer.setParameter("abstract.notitle.enabled",
                convertBooleanToXsltParam(abstractNotitleEnabled));
        }
        if (bibliographyStyle != null) {
            transformer.setParameter("bibliography.style",
                convertStringToXsltParam(bibliographyStyle));
        }
        if (tableFrameBorderThickness != null) {
            transformer.setParameter("table.frame.border.thickness",
                convertStringToXsltParam(tableFrameBorderThickness));
        }
        if (exslNodeSetAvailable != null) {
            transformer.setParameter("exsl.node.set.available",
                convertBooleanToXsltParam(exslNodeSetAvailable));
        }
        if (calloutsExtension != null) {
            transformer.setParameter("callouts.extension",
                convertBooleanToXsltParam(calloutsExtension));
        }
        if (annotationSupport != null) {
            transformer.setParameter("annotation.support",
                convertBooleanToXsltParam(annotationSupport));
        }
        if (chunkerOutputStandalone != null) {
            transformer.setParameter("chunker.output.standalone",
                convertStringToXsltParam(chunkerOutputStandalone));
        }
        if (profileSeparator != null) {
            transformer.setParameter("profile.separator",
                convertStringToXsltParam(profileSeparator));
        }
        if (linenumberingExtension != null) {
            transformer.setParameter("linenumbering.extension",
                convertBooleanToXsltParam(linenumberingExtension));
        }
        if (htmlhelpAliasFile != null) {
            transformer.setParameter("htmlhelp.alias.file",
                convertStringToXsltParam(htmlhelpAliasFile));
        }
        if (keepRelativeImageUris != null) {
            transformer.setParameter("keep.relative.image.uris",
                convertBooleanToXsltParam(keepRelativeImageUris));
        }
        if (useIdAsFilename != null) {
            transformer.setParameter("use.id.as.filename",
                convertBooleanToXsltParam(useIdAsFilename));
        }
        if (profileUserlevel != null) {
            transformer.setParameter("profile.userlevel",
                convertStringToXsltParam(profileUserlevel));
        }
        if (eclipsePluginName != null) {
            transformer.setParameter("eclipse.plugin.name",
                convertStringToXsltParam(eclipsePluginName));
        }
        if (tableCellBorderThickness != null) {
            transformer.setParameter("table.cell.border.thickness",
                convertStringToXsltParam(tableCellBorderThickness));
        }
        if (tableCellBorderStyle != null) {
            transformer.setParameter("table.cell.border.style",
                convertStringToXsltParam(tableCellBorderStyle));
        }
        if (htmlhelpButtonJump1Url != null) {
            transformer.setParameter("htmlhelp.button.jump1.url",
                convertStringToXsltParam(htmlhelpButtonJump1Url));
        }
        if (graphicsizeUseImgSrcPath != null) {
            transformer.setParameter("graphicsize.use.img.src.path",
                convertBooleanToXsltParam(graphicsizeUseImgSrcPath));
        }
        if (chunkSeparateLots != null) {
            transformer.setParameter("chunk.separate.lots",
                convertBooleanToXsltParam(chunkSeparateLots));
        }
        if (useEmbedForSvg != null) {
            transformer.setParameter("use.embed.for.svg",
                convertBooleanToXsltParam(useEmbedForSvg));
        }
        if (qandadivAutolabel != null) {
            transformer.setParameter("qandadiv.autolabel",
                convertBooleanToXsltParam(qandadivAutolabel));
        }
        if (ebnfStatementTerminator != null) {
            transformer.setParameter("ebnf.statement.terminator",
                convertStringToXsltParam(ebnfStatementTerminator));
        }
        if (targetsFilename != null) {
            transformer.setParameter("targets.filename",
                convertStringToXsltParam(targetsFilename));
        }
        if (generateSectionTocLevel != null) {
            transformer.setParameter("generate.section.toc.level",
                convertStringToXsltParam(generateSectionTocLevel));
        }
        if (spacingParas != null) {
            transformer.setParameter("spacing.paras",
                convertBooleanToXsltParam(spacingParas));
        }
        if (functionParens != null) {
            transformer.setParameter("function.parens",
                convertBooleanToXsltParam(functionParens));
        }
        if (formalProcedures != null) {
            transformer.setParameter("formal.procedures",
                convertBooleanToXsltParam(formalProcedures));
        }
        if (epubCoverFilename != null) {
            transformer.setParameter("epub.cover.filename",
                convertStringToXsltParam(epubCoverFilename));
        }
        if (processSourceToc != null) {
            transformer.setParameter("process.source.toc",
                convertBooleanToXsltParam(processSourceToc));
        }
        if (annotationCss != null) {
            transformer.setParameter("annotation.css",
                convertStringToXsltParam(annotationCss));
        }
        if (htmlhelpHhcSectionDepth != null) {
            transformer.setParameter("htmlhelp.hhc.section.depth",
                convertStringToXsltParam(htmlhelpHhcSectionDepth));
        }
        if (useLocalOlinkStyle != null) {
            transformer.setParameter("use.local.olink.style",
                convertBooleanToXsltParam(useLocalOlinkStyle));
        }
        if (phrasePropagatesStyle != null) {
            transformer.setParameter("phrase.propagates.style",
                convertBooleanToXsltParam(phrasePropagatesStyle));
        }
        if (calloutGraphics != null) {
            transformer.setParameter("callout.graphics",
                convertBooleanToXsltParam(calloutGraphics));
        }
        if (insertOlinkPageNumber != null) {
            transformer.setParameter("insert.olink.page.number",
                convertStringToXsltParam(insertOlinkPageNumber));
        }
        if (chunkTocsAndLotsHasTitle != null) {
            transformer.setParameter("chunk.tocs.and.lots.has.title",
                convertBooleanToXsltParam(chunkTocsAndLotsHasTitle));
        }
        if (componentLabelIncludesPartLabel != null) {
            transformer.setParameter("component.label.includes.part.label",
                convertBooleanToXsltParam(componentLabelIncludesPartLabel));
        }
        if (profileValue != null) {
            transformer.setParameter("profile.value",
                convertStringToXsltParam(profileValue));
        }
        if (imgSrcPath != null) {
            transformer.setParameter("img.src.path",
                convertStringToXsltParam(imgSrcPath));
        }
        if (firsttermOnlyLink != null) {
            transformer.setParameter("firstterm.only.link",
                convertBooleanToXsltParam(firsttermOnlyLink));
        }
        if (draftMode != null) {
            transformer.setParameter("draft.mode",
                convertStringToXsltParam(draftMode));
        }
        if (funcsynopsisDecoration != null) {
            transformer.setParameter("funcsynopsis.decoration",
                convertBooleanToXsltParam(funcsynopsisDecoration));
        }
        if (calloutUnicodeNumberLimit != null) {
            transformer.setParameter("callout.unicode.number.limit",
                convertStringToXsltParam(calloutUnicodeNumberLimit));
        }
        if (htmlhelpButtonPrint != null) {
            transformer.setParameter("htmlhelp.button.print",
                convertBooleanToXsltParam(htmlhelpButtonPrint));
        }
        if (eclipsePluginProvider != null) {
            transformer.setParameter("eclipse.plugin.provider",
                convertStringToXsltParam(eclipsePluginProvider));
        }
        if (profileLang != null) {
            transformer.setParameter("profile.lang",
                convertStringToXsltParam(profileLang));
        }
        if (olinkPubid != null) {
            transformer.setParameter("olink.pubid",
                convertStringToXsltParam(olinkPubid));
        }
        if (blurbOnTitlepageEnabled != null) {
            transformer.setParameter("blurb.on.titlepage.enabled",
                convertBooleanToXsltParam(blurbOnTitlepageEnabled));
        }
    }

    public File getSourceDirectory() {
        return sourceDirectory;
    }

    public File getTargetDirectory() {
        return targetDirectory;
    }

    public File getGeneratedSourceDirectory() {
        return generatedSourceDirectory;
    }

	public String getDefaultStylesheetLocation() {
        return "docbook/epub/docbook.xsl";
	}

	public String getType() {
	    return "epub";
	}

    public String getStylesheetLocation() {
    	getLog().debug("Customization: " + epubCustomization);
        if (epubCustomization != null) {
            return epubCustomization;
        } else if (getNonDefaultStylesheetLocation() == null) {
            return getDefaultStylesheetLocation();
        } else {
            return getNonDefaultStylesheetLocation();
        }
    }

    public String getTargetFileExtension() {
        return targetFileExtension;
    }

    public void setTargetFileExtension(String extension) {
        targetFileExtension = extension;
    }

    public String[] getIncludes() {
        String[] results = includes.split(",");
        for (int i = 0; i < results.length; i++) {
            results[i] = results[i].trim();
        }
        return results;
    }

    public List<Entity> getEntities() {
        return entities;
    }

    public List<Parameter> getCustomizationParameters()
    {
    	return customizationParameters;
    }

    public Properties getSystemProperties()
    {
        return systemProperties;
    }

    public Target getPreProcess() {
        return preProcess;
    }

    public Target getPostProcess() {
        return postProcess;
    }

    public MavenProject getMavenProject() {
        return project;
    }

    public List<Artifact> getArtifacts() {
        return artifacts;
    }

    protected boolean getXIncludeSupported() {
        return xincludeSupported;
    }

    /**
     * Returns false if the stylesheet is responsible to create the output file(s) using its own naming scheme.
     *
     * @return If using the standard output.
     */
    protected boolean isUseStandardOutput() {
        return useStandardOutput;
    }

    protected void setUseStandardOutput(boolean useStandardOutput) {
        this.useStandardOutput = useStandardOutput;
    }

  public void postProcessResult(File result) throws MojoExecutionException {

    // First transform the cover page
        transformCover();
        //rasterize();

    final File targetDirectory = result.getParentFile();
    try {
      final URL containerURL = getClass().getResource("/epub/container.xml");
      FileUtils.copyURLToFile(containerURL, new File(targetDirectory, "META-INF" + File.separator + "container.xml"));
    } catch (IOException e) {
      throw new MojoExecutionException("Unable to copy hardcoded container.xml file", e);
    }

    // copy mimetype file
    try {
      final URL mimetypeURL = getClass().getResource("/epub/mimetype");
      FileUtils.copyURLToFile(mimetypeURL, new File(targetDirectory, "mimetype"));
    } catch (IOException e) {
      throw new MojoExecutionException("Unable to copy hardcoded mimetype file", e);
    }

    try {
      ZipArchiver zipArchiver = new ZipArchiver();
      zipArchiver.addDirectory(targetDirectory);
      zipArchiver.setCompress(true); // seems to not be a problem to have mimetype compressed
      zipArchiver.setDestFile(new File(targetDirectory.getParentFile(), result.getName())); // copy it to parent dir
      zipArchiver.createArchive();

      getLog().debug("epub file created at: " + zipArchiver.getDestFile().getAbsolutePath());
    } catch (Exception e) {
      throw new MojoExecutionException("Unable to zip epub file", e);
    }
  }

      /**
     * The greeting to display.
     *
     * @parameter expression="${generate-pdf.branding}" default-value="rackspace"
     */
    private String branding;

    /**
     * A parameter used to specify the security level (external, internal, reviewer, writeronly) of the document.
     *
     * @parameter expression="${generate-pdf.security}" default-value=""
     */
    private String security;

     /**
     * A parameter used to configure how many elements to trim from the URI in the documentation for a wadl method.
     *
     * @parameter expression="${generate-pdf.trim.wadl.uri.count}" default-value=""
     */
    private String trimWadlUriCount;

    /**
     * @parameter expression="${project.build.directory}"
     */
    private File projectBuildDirectory;

    /**
     * Controls how the path to the wadl is calculated. If 0 or not set, then
     * The xslts look for the normalized wadl in /generated-resources/xml/xslt/.
     * Otherwise, in /generated-resources/xml/xslt/path/to/docbook-src, e.g.
     * /generated-resources/xml/xslt/src/docbkx/foo.wadl
     *
     * @parameter expression="${generate-pdf.compute.wadl.path.from.docbook.path}" default-value="0"
     */
    private String computeWadlPathFromDocbookPath;

  public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
        GitHelper.addCommitProperties(transformer, projectBuildDirectory, 7, getLog());

        super.adjustTransformer(transformer, sourceFilename, targetFile);

	transformer.setParameter("branding", branding);
	transformer.setParameter("project.build.directory", projectBuildDirectory.toURI().toString());

	if(security != null){
	    transformer.setParameter("security",security);
	}

   if(trimWadlUriCount != null){
	transformer.setParameter("trim.wadl.uri.count",trimWadlUriCount);
    }

        //
        //  Setup graphics paths
        //
        sourceDocBook = new File(sourceFilename);
        sourceDirectory = sourceDocBook.getParentFile();
        File imageDirectory = getImageDirectory();
        File calloutDirectory = new File (imageDirectory, "callouts");

	transformer.setParameter("docbook.infile",sourceDocBook.toURI().toString());
	transformer.setParameter("source.directory",sourceDirectory.toURI().toString());
	transformer.setParameter("compute.wadl.path.from.docbook.path",computeWadlPathFromDocbookPath);

        transformer.setParameter ("admon.graphics.path", imageDirectory.toURI().toString()+File.separator + "admon"+ File.separator + branding + File.separator);
        transformer.setParameter ("callout.graphics.path", calloutDirectory.toURI().toString());

        //
        //  Setup the background image file
        //
        File cloudSub = new File (imageDirectory, "cloud");
        File ccSub    = new File (imageDirectory, "cc");
        coverImage = new File (cloudSub, COVER_IMAGE_NAME);
        coverImageTemplate = new File (cloudSub, COVER_IMAGE_TEMPLATE_NAME);

	coverImageTemplate = new File (cloudSub, branding + "-cover.st");

        transformer.setParameter ("cloud.api.background.image", coverImage.toURI().toString());
        transformer.setParameter ("cloud.api.cc.image.dir", ccSub.toURI().toString());
    }
  protected void transformCover() throws MojoExecutionException {
        try {
            ClassLoader classLoader = Thread.currentThread()
                .getContextClassLoader();

            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer(new StreamSource(classLoader.getResourceAsStream(COVER_XSL)));

            transformer.setParameter("docbook.infile",sourceDocBook.getAbsolutePath());
            transformer.transform (new StreamSource(coverImageTemplate), new StreamResult(coverImage));
        }
        catch (TransformerConfigurationException e)
            {
                throw new MojoExecutionException("Failed to load JAXP configuration", e);
            }
        catch (TransformerException e)
            {
                throw new MojoExecutionException("Failed to transform to cover", e);
            }
    }

  public void preProcess() throws MojoExecutionException {
        super.preProcess();

        final File targetDirectory = getTargetDirectory();
        File imageParentDirectory  = targetDirectory.getParentFile();

        if (!targetDirectory.exists()) {
            com.rackspace.cloud.api.docs.FileUtils.mkdir(targetDirectory);
        }

        //
        // Extract all images into the image directory.
        //
        com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("images", PDFMojo.class, imageParentDirectory);
        setImageDirectory (new File (imageParentDirectory, "images"));

        //
        // Extract all fonts into fonts directory
        //
        com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("fonts", PDFMojo.class, imageParentDirectory);
    }

    public void rasterize() throws RuntimeException{
        try{
        // Create a JPEG transcoder
        PNGTranscoder t = new PNGTranscoder();

        // Set the transcoding hints.
       // t.addTranscodingHint(PNGTranscoder.KEY_QUALITY,
         //                    new Float(.8));

        // Create the transcoder input.
        String svgURI = new File("/Users/nare4013/epub/rackspace-template/rackspace-template/target/docbkx/images/cloud/cover.svg").toURI().toURL().toString();
        TranscoderInput input = new TranscoderInput(svgURI);

        // Create the transcoder output.
        OutputStream ostream = new FileOutputStream("/Users/nare4013/epub/rackspace-template/rackspace-template/target/docbkx/images/cloud/cover.png");
        TranscoderOutput output = new TranscoderOutput(ostream);

        // Save the image.
        t.transcode(input, output);

        // Flush and close the stream.
        ostream.flush();
        ostream.close();
        }
        catch(Exception e){
            throw new RuntimeException("Could not able to rasterize the svg", e);
        }

}

}