From: Per O. <per...@us...> - 2004-03-17 22:05:02
|
perolesen 04/03/17 13:55:34 Modified: sdocbook plugin.jelly Log: Made some extension to the plugin to make it possible to do more with the used stylesheets. I've tried to keep it backward compatible (aka: if users does not actively use the new features, it should do what it did before, ... hopefully :-) Features: - The docbook DTDs are huge and take time to resolve externally. Added the EntityResolver from xml-commons and added properties to be able to use it. - Added the xalan25 extensions jar to be able to use the stylesheet extensions. - Added possibility to set the stylesheet params. - Added copying of external resources like images, which the target output references externally (e.g. a HTML output which includes a IMG tag) Revision Changes Path 1.4 +83 -10 maven-plugins/sdocbook/plugin.jelly Index: plugin.jelly =================================================================== RCS file: /cvsroot/maven-plugins/maven-plugins/sdocbook/plugin.jelly,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- plugin.jelly 17 Oct 2003 17:33:46 -0000 1.3 +++ plugin.jelly 17 Mar 2004 21:55:34 -0000 1.4 @@ -39,14 +39,20 @@ <goal name="sdocbook:info"> - <echo>PathSeperator = ${_sep}</echo> - <echo>bootclasspath = ${_bootclasspath}</echo> - <echo>maven.sdocbook.src.dir = ${maven.sdocbook.src.dir}</echo> - <echo>maven.sdocbook.generated.html = ${maven.sdocbook.generated.html}</echo> - <echo>maven.sdocbook.generated.fo = ${maven.sdocbook.generated.fo}</echo> - <echo>maven.sdocbook.generated.pdf = ${maven.sdocbook.generated.pdf}</echo> - <echo>maven.sdocbook.target.dir = ${maven.sdocbook.target.dir}</echo> - + <echo>PathSeperator = ${_sep}</echo> + <echo>bootclasspath = ${_bootclasspath}</echo> + <echo>maven.sdocbook.src.dir = ${maven.sdocbook.src.dir}</echo> + <echo>maven.sdocbook.generated.html = ${maven.sdocbook.generated.html}</echo> + <echo>maven.sdocbook.generated.fo = ${maven.sdocbook.generated.fo}</echo> + <echo>maven.sdocbook.generated.pdf = ${maven.sdocbook.generated.pdf}</echo> + <echo>maven.sdocbook.target.dir = ${maven.sdocbook.target.dir}</echo> + <echo>maven.sdocbook.stylesheets.dir = ${maven.sdocbook.stylesheets.dir}</echo> + <echo>maven.sdocbook.resources.include = ${maven.sdocbook.resources.include}</echo> + <echo>maven.sdocbook.html.params = ${maven.sdocbook.html.params}</echo> + <echo>maven.sdocbook.fo.params = ${maven.sdocbook.fo.params}</echo> + <echo>maven.sdocbook.use.entityresolver = ${maven.sdocbook.use.entityresolver}</echo> + <echo>maven.sdocbook.catalogmanager.properties = ${maven.sdocbook.catalogmanager.properties}</echo> + </goal> <!-- ================================================================== --> @@ -66,6 +72,17 @@ <fileset dir="${maven.sdocbook.src.dir}" includes="**/*.xml, **/*.sgml"/> </fileScanner> + <!-- determine if entity-resolver is requested --> + <j:set var="useEntityResolver" value="${maven.sdocbook.use.entityresolver}" /> + <j:if test="${useEntityResolver == 'true'}"> + <j:set var="catalogManagerPropertiesFile" value="${maven.sdocbook.catalogmanager.properties}" /> + <j:if test="${empty(catalogManagerPropertiesFile)}"> + <fail message="property 'maven.sdocbook.catalogmanager.properties' required when using 'maven.sdocbook.use.entityresolver==true'" /> + </j:if> + <dirname property="catalogManagerPropertiesDir" file="${maven.sdocbook.catalogmanager.properties}" /> + <j:set var="catalogManagerPropertiesDir" value="${catalogManagerPropertiesDir}" /> + </j:if> + <j:forEach var="file" items="${scanner.iterator()}"> <echo>Processing ${file.absolutePath}</echo> @@ -83,16 +100,31 @@ <pathelement location="${plugin.getDependencyPath('fop')}"/> <pathelement location="${plugin.getDependencyPath('jimi')}"/> <pathelement location="${plugin.getDependencyPath('logkit')}"/> + + <!-- this is required for extensions to work with xalan --> + <pathelement location="${maven.sdocbook.stylesheets.dir}/extensions/xalan25.jar"/> + + <j:if test="${useEntityResolver == 'true'}"> + <pathelement location="${plugin.getDependencyPath('xml-resolver')}"/> + <pathelement location="${catalogManagerPropertiesDir}"/> <!-- includes the users CatalogManager.properties in classpath --> + </j:if> </classpath> <sysproperty key="user.language" value="en"/> <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" value="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/> <sysproperty key="javax.xml.parsers.SAXParserFactory" value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/> + <j:if test="${useEntityResolver == 'true'}"> + <arg value="-ENTITYRESOLVER"/> + <arg value="org.apache.xml.resolver.tools.CatalogResolver"/> + <arg value="-URIRESOLVER"/> + <arg value="org.apache.xml.resolver.tools.CatalogResolver"/> + </j:if> <arg value="-in"/> <arg value="${file.absolutePath}"/> <arg value="-out"/> <arg value="${maven.sdocbook.generated.html}/${basename}.html"/> <arg value="-xsl"/> - <arg value="${plugin.dir}/plugin-resources/html/docbook.xsl"/> + <arg value="${maven.sdocbook.stylesheets.dir}/html/docbook.xsl"/> + <arg line="${maven.sdocbook.html.params}"/> </java> </j:forEach> @@ -104,6 +136,13 @@ </fileset> </copy> + <!-- copy resources which html might reference too --> + <j:set var="resources" value="${maven.sdocbook.resources.include}" /> + <j:if test="${!empty(resources)}"> + <copy todir="${maven.sdocbook.target.dir}" filtering="no" flatten="true"> + <fileset dir="${maven.sdocbook.src.dir}" includes="${resources}"/> + </copy> + </j:if> </goal> <!-- ================================================================== --> @@ -123,6 +162,17 @@ <fileset dir="${maven.sdocbook.src.dir}" includes="**/*.xml, **/*.sgml"/> </fileScanner> + <!-- determine if entity-resolver is requested --> + <j:set var="useEntityResolver" value="${maven.sdocbook.use.entityresolver}" /> + <j:if test="${useEntityResolver == 'true'}"> + <j:set var="catalogManagerPropertiesFile" value="${maven.sdocbook.catalogmanager.properties}" /> + <j:if test="${empty(catalogManagerPropertiesFile)}"> + <fail message="property 'maven.sdocbook.catalogmanager.properties' required when using 'maven.sdocbook.use.entityresolver==true'" /> + </j:if> + <dirname property="catalogManagerPropertiesDir" file="${maven.sdocbook.catalogmanager.properties}" /> + <j:set var="catalogManagerPropertiesDir" value="${catalogManagerPropertiesDir}" /> + </j:if> + <j:forEach var="file" items="${scanner.iterator()}"> <echo>Processing ${file.absolutePath}</echo> @@ -133,15 +183,30 @@ <java classname="org.apache.xalan.xslt.Process" fork="yes"> <jvmarg value="-Xbootclasspath/p:${_bootclasspath}"/> + <classpath> + <pathelement location="${maven.sdocbook.stylesheets.dir}/extensions/xalan25.jar"/> + + <j:if test="${useEntityResolver == 'true'}"> + <pathelement location="${plugin.getDependencyPath('xml-resolver')}"/> + <pathelement location="${catalogManagerPropertiesDir}"/> <!-- includes the users CatalogManager.properties in classpath --> + </j:if> + </classpath> <sysproperty key="user.language" value="en"/> <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" value="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/> <sysproperty key="javax.xml.parsers.SAXParserFactory" value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/> + <j:if test="${useEntityResolver == 'true'}"> + <arg value="-ENTITYRESOLVER"/> + <arg value="org.apache.xml.resolver.tools.CatalogResolver"/> + <arg value="-URIRESOLVER"/> + <arg value="org.apache.xml.resolver.tools.CatalogResolver"/> + </j:if> <arg value="-in"/> <arg value="${file.absolutePath}"/> <arg value="-out"/> <arg value="${maven.sdocbook.generated.fo}/${basename}.fo"/> <arg value="-xsl"/> - <arg value="${plugin.dir}/plugin-resources/fo/docbook.xsl"/> + <arg value="${maven.sdocbook.stylesheets.dir}/fo/docbook.xsl"/> + <arg line="${maven.sdocbook.fo.params}"/> </java> @@ -162,6 +227,14 @@ <!-- create target directory for generated PDF --> <mkdir dir="${maven.sdocbook.generated.pdf}"/> + <!-- before doing fo2pdf translation, we need to copy any possible resources referenced from the original docbooks --> + <j:set var="resources" value="${maven.sdocbook.resources.include}" /> + <j:if test="${!empty(resources)}"> + <copy todir="${maven.sdocbook.generated.fo}" filtering="no" flatten="true"> + <fileset dir="${maven.sdocbook.src.dir}" includes="${resources}"/> + </copy> + </j:if> + <!-- get all *.xml and *.sgml --> <fileScanner var="scanner"> <fileset dir="${maven.sdocbook.generated.fo}" includes="**/*.fo"/> |