git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267690 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -37,6 +37,10 @@ | |||||
| <target name="check_for_optional_packages"> | <target name="check_for_optional_packages"> | ||||
| <available property="bsf.present" classname="com.ibm.bsf.BSFManager" /> | <available property="bsf.present" classname="com.ibm.bsf.BSFManager" /> | ||||
| <available property="netrexx.present" classname="netrexx.lang.Rexx" /> | <available property="netrexx.present" classname="netrexx.lang.Rexx" /> | ||||
| <available property="xslp.present" | |||||
| classname="com.kvisco.xsl.XSLProcessor" /> | |||||
| <available property="xalan.present" | |||||
| classname="org.apache.xalan.xslt.XSLTProcessorFactory" /> | |||||
| </target> | </target> | ||||
| <!-- =================================================================== --> | <!-- =================================================================== --> | ||||
| @@ -60,6 +64,8 @@ | |||||
| optimize="on" > | optimize="on" > | ||||
| <exclude name="**/Script.java" unless="bsf.present" /> | <exclude name="**/Script.java" unless="bsf.present" /> | ||||
| <exclude name="**/NetRexxC.java" unless="netrexx.present" /> | <exclude name="**/NetRexxC.java" unless="netrexx.present" /> | ||||
| <exclude name="**/XslpLiaison.java" unless="xslp.present" /> | |||||
| <exclude name="**/XalanLiaison.java" unless="xalan.present" /> | |||||
| </javac> | </javac> | ||||
| <copydir src="${src.dir}" dest="${build.classes}"> | <copydir src="${src.dir}" dest="${build.classes}"> | ||||
| @@ -493,6 +493,7 @@ If you do not want these default excludes applied, you may disable them with the | |||||
| <li><a href="#tar">Tar</a></li> | <li><a href="#tar">Tar</a></li> | ||||
| <li><a href="#taskdef">Taskdef</a></li> | <li><a href="#taskdef">Taskdef</a></li> | ||||
| <li><a href="#tstamp">Tstamp</a></li> | <li><a href="#tstamp">Tstamp</a></li> | ||||
| <li><a href="#style">Style</a></li> | |||||
| <li><a href="#untar">Untar</a></li> | <li><a href="#untar">Untar</a></li> | ||||
| <li><a href="#zip">Zip</a></li> | <li><a href="#zip">Zip</a></li> | ||||
| </ul> | </ul> | ||||
| @@ -2287,6 +2288,67 @@ initialization target.</p> | |||||
| <h3>Examples</h3> | <h3>Examples</h3> | ||||
| <pre> <tstamp/></pre> | <pre> <tstamp/></pre> | ||||
| <hr> | <hr> | ||||
| <h2><a name="style">Style</a></h2> | |||||
| <h3>Description</h3> | |||||
| <p>Process a set of documents via XSLT.</p> | |||||
| <p>This is useful for building views of XML based documentation, | |||||
| or in generating code.</p> | |||||
| <p>It is possible to refine the set of files that are being copied. This can be | |||||
| done with the <i>includes</i>, <i>excludes</i> and <i>defaultexcludes</i> | |||||
| attributes. With the <i>includes</i> attribute you specify the files you want to | |||||
| have included by using patterns. The <i>exclude</i> attribute is used to specify | |||||
| the files you want to have excluded. This is also done with patterns. And | |||||
| finally with the <i>defaultexcludes</i> attribute, you can specify whether you | |||||
| want to use default exclusions or not. See the section on <a | |||||
| href="#directorybasedtasks">directory based tasks</a>, on how the | |||||
| inclusion/exclusion of files works, and how to write patterns. The patterns are | |||||
| relative to the <i>basedir</i> directory.</p> | |||||
| <h3>Parameters</h3> | |||||
| <table border="1" cellpadding="2" cellspacing="0"> | |||||
| <tr> | |||||
| <td valign="top"><b>Attribute</b></td> | |||||
| <td valign="top"><b>Description</b></td> | |||||
| <td align="center" valign="top"><b>Required</b></td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">basedir</td> | |||||
| <td valign="top">where to find the source xml file.</td> | |||||
| <td align="center" valign="top">Yes</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">destdir</td> | |||||
| <td valign="top">directory where to store the results.</td> | |||||
| <td align="center" valign="top">Yes</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">extention</td> | |||||
| <td valign="top">desired file extension to be used for the targets. | |||||
| If not specified, the default is "html".</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">style</td> | |||||
| <td valign="top">name of the stylesheet to use.</td> | |||||
| <td align="center" valign="top">Yes</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">processor</td> | |||||
| <td valign="top">name of the XSLT processor to use. Permissable | |||||
| values are "xslp" for the XSL:P processor, "xalan" for the Apache XML Xalan | |||||
| processor, or the name of an arbitrary XSLTLiaison class. | |||||
| Defaults to xslp or xalan (in that order), if one is found in your | |||||
| class path</td> | |||||
| <td align="center" valign="top">No</td> | |||||
| </tr> | |||||
| </table> | |||||
| <h3>Examples</h3> | |||||
| <blockquote> | |||||
| <p><pre> | |||||
| <style basedir="doc" destdir="build/doc" | |||||
| extension="html" style="style/apache.xml"/> | |||||
| </pre></p> | |||||
| </blockquote> | |||||
| <hr> | |||||
| <h2><a name="untar">Untar</a></h2> | <h2><a name="untar">Untar</a></h2> | ||||
| <h3>Description</h3> | <h3>Description</h3> | ||||
| <p>Untars a tarfile.</p> | <p>Untars a tarfile.</p> | ||||
| @@ -0,0 +1,70 @@ | |||||
| /* | |||||
| * The Apache Software License, Version 1.1 | |||||
| * | |||||
| * Copyright (c) 1999 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * | |||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | |||||
| package org.apache.tools.ant.taskdefs; | |||||
| import org.apache.tools.ant.*; | |||||
| /** | |||||
| * | |||||
| * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public interface XSLTLiaison { | |||||
| public void setStylesheet(String fileName) throws Exception; | |||||
| public void transform(String infile, String outfile) throws Exception; | |||||
| } //-- XSLTLiaison | |||||
| @@ -0,0 +1,310 @@ | |||||
| /* | |||||
| * The Apache Software License, Version 1.1 | |||||
| * | |||||
| * Copyright (c) 1999 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * | |||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | |||||
| package org.apache.tools.ant.taskdefs; | |||||
| import org.apache.tools.ant.*; | |||||
| import java.io.*; | |||||
| import java.util.Enumeration; | |||||
| import java.util.Hashtable; | |||||
| import java.util.StringTokenizer; | |||||
| import java.util.Vector; | |||||
| /** | |||||
| * A Task to process via XSLT a set of XML documents. This is | |||||
| * useful for building views of XML based documentation. | |||||
| * arguments: | |||||
| * <ul> | |||||
| * <li>basedir | |||||
| * <li>destdir | |||||
| * <li>style | |||||
| * <li>includes | |||||
| * <li>excludes | |||||
| * </ul> | |||||
| * Of these arguments, the <b>sourcedir</b> and <b>destdir</b> are required. | |||||
| * <p> | |||||
| * This task will recursively scan the sourcedir and destdir | |||||
| * looking for XML documents to process via XSLT. Any other files, | |||||
| * such as images, or html files in the source directory will be | |||||
| * copied into the destination directory. | |||||
| * | |||||
| * @author <a href="mailto:kvisco@exoffice.com">Keith Visco</a> | |||||
| * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class XSLTProcess extends MatchingTask { | |||||
| private File destDir = null; | |||||
| private File baseDir = null; | |||||
| private File xslFile = null; | |||||
| private String targetExtension = "html"; | |||||
| private XSLTLiaison liaison; | |||||
| /** | |||||
| * Creates a new XSLTProcess Task. | |||||
| **/ | |||||
| public XSLTProcess() { | |||||
| } //-- XSLTProcess | |||||
| /** | |||||
| * Executes the task. | |||||
| */ | |||||
| public void execute() throws BuildException { | |||||
| DirectoryScanner scanner; | |||||
| String[] list; | |||||
| String[] dirs; | |||||
| if (baseDir == null) | |||||
| baseDir = project.resolveFile("."); | |||||
| //-- make sure Source directory exists... | |||||
| if (destDir == null ) { | |||||
| String msg = "destdir attributes must be set!"; | |||||
| throw new BuildException(msg); | |||||
| } | |||||
| scanner = getDirectoryScanner(baseDir); | |||||
| project.log("Transforming into "+destDir,project.MSG_INFO); | |||||
| try { | |||||
| // Create a new XSL processor with the specified stylesheet | |||||
| if (xslFile != null) { | |||||
| project.log("Loading stylesheet " + xslFile, project.MSG_INFO); | |||||
| liaison.setStylesheet( new File(baseDir,xslFile.toString()).toString() ); | |||||
| } | |||||
| } catch (Exception ex) { | |||||
| project.log("Failed to read stylesheet " + xslFile,project.MSG_INFO); | |||||
| throw new BuildException(ex); | |||||
| } | |||||
| // Process all the files marked for styling | |||||
| list = scanner.getIncludedFiles(); | |||||
| for (int i = 0;i < list.length; ++i) { | |||||
| process(baseDir,list[i],destDir); | |||||
| } | |||||
| // Process all the directoried marked for styling | |||||
| dirs = scanner.getIncludedDirectories(); | |||||
| for (int j = 0;j < dirs.length;++j){ | |||||
| list=new File(baseDir,dirs[j]).list(); | |||||
| for (int i = 0;i < list.length;++i) | |||||
| process(baseDir,list[i],destDir); | |||||
| } | |||||
| } //-- execute | |||||
| /** | |||||
| * Set the base directory. | |||||
| **/ | |||||
| public void setBasedir(String dirName) { | |||||
| baseDir = project.resolveFile(dirName); | |||||
| } //-- setSourceDir | |||||
| /** | |||||
| * Set the destination directory into which the XSL result | |||||
| * files should be copied to | |||||
| * @param dirName the name of the destination directory | |||||
| **/ | |||||
| public void setDestdir(String dirName) { | |||||
| destDir = project.resolveFile(dirName); | |||||
| } //-- setDestDir | |||||
| /** | |||||
| * Set the desired file extension to be used for the target | |||||
| * @param name the extension to use | |||||
| **/ | |||||
| public void setExtension(String name) { | |||||
| targetExtension = name; | |||||
| } //-- setDestDir | |||||
| /** | |||||
| * Sets the file to use for styling relative to the base directory. | |||||
| */ | |||||
| public void setStyle(String xslFile) { | |||||
| this.xslFile = new File(xslFile); | |||||
| } | |||||
| /** | |||||
| * Sets the file to use for styling relative to the base directory. | |||||
| */ | |||||
| public void setProcessor(String processor) throws Exception { | |||||
| if (processor.equals("xslp")) { | |||||
| liaison = (XSLTLiaison) Class.forName("org.apache.tools.ant.taskdefs.optional.XslpLiaison").newInstance(); | |||||
| } if (processor.equals("xalan")) { | |||||
| liaison = (XSLTLiaison) Class.forName("org.apache.tools.ant.taskdefs.optional.XalanLiaison").newInstance(); | |||||
| } else { | |||||
| liaison = (XSLTLiaison) Class.forName(processor).newInstance(); | |||||
| } | |||||
| } | |||||
| /* | |||||
| private void process(File sourceDir, File destDir) | |||||
| throws BuildException | |||||
| { | |||||
| // if processor wasn't specified, default it to xslp or xalan, | |||||
| // depending on which is in the classpath | |||||
| if (liaison == null) | |||||
| try { | |||||
| setProcessor("xslp"); | |||||
| } catch (Exception e) { | |||||
| try { | |||||
| setProcessor("xalan"); | |||||
| } catch (Exception e) { | |||||
| throw new BuildException(e); | |||||
| } | |||||
| } | |||||
| } | |||||
| if (!sourceDir.isDirectory()) { | |||||
| throw new BuildException(sourceDir.getName() + | |||||
| " is not a directory!"); | |||||
| } | |||||
| else if (!destDir.isDirectory()) { | |||||
| throw new BuildException(destDir.getName() + | |||||
| " is not a directory!"); | |||||
| } | |||||
| String[] list = sourceDir.list(new DesirableFilter()); | |||||
| if (list == null) { | |||||
| return; //-- nothing to do | |||||
| } | |||||
| for (int i = 0; i < list.length; i++) { | |||||
| String filename = list[i]; | |||||
| File inFile = new File(sourceDir, filename); | |||||
| //-- if inFile is a directory, recursively process it | |||||
| if (inFile.isDirectory()) { | |||||
| if (!excluded(filename)) { | |||||
| new File(destDir, filename).mkdir(); | |||||
| process(inFile, new File(destDir, filename)); | |||||
| } | |||||
| } | |||||
| //-- process XML files | |||||
| else if (hasXMLFileExtension(filename) && ! excluded(filename)) { | |||||
| //-- replace extension with the target extension | |||||
| int idx = filename.lastIndexOf('.'); | |||||
| File outFile = new File(destDir, | |||||
| filename.substring(0,idx) + targetExt); | |||||
| if ((inFile.lastModified() > outFile.lastModified()) || | |||||
| (xslFile != null && xslFile.lastModified() > outFile.lastModified())) | |||||
| { | |||||
| processXML(inFile, outFile); | |||||
| } | |||||
| } | |||||
| else { | |||||
| File outFile = new File(destDir, filename); | |||||
| if (inFile.lastModified() > outFile.lastModified()) { | |||||
| try { | |||||
| copyFile(inFile, outFile); | |||||
| } | |||||
| catch(java.io.IOException ex) { | |||||
| String err = "error copying file: "; | |||||
| err += inFile.getAbsolutePath(); | |||||
| err += "; " + ex.getMessage(); | |||||
| throw new BuildException(err, ex); | |||||
| } | |||||
| //filecopyList.put(srcFile.getAbsolutePath(), | |||||
| //destFile.getAbsolutePath()); | |||||
| } | |||||
| } | |||||
| } //-- </for> | |||||
| } //-- process(File, File) | |||||
| */ | |||||
| /** | |||||
| * Processes the given input XML file and stores the result | |||||
| * in the given resultFile. | |||||
| **/ | |||||
| private void process(File baseDir,String xmlFile,File destDir) | |||||
| throws BuildException | |||||
| { | |||||
| String fileExt=".html"; | |||||
| File outFile=null; | |||||
| File inFile=null; | |||||
| try { | |||||
| inFile = new File(baseDir,xmlFile); | |||||
| outFile = new File(destDir,xmlFile.substring(0,xmlFile.lastIndexOf('.'))+fileExt); | |||||
| if (inFile.lastModified() > outFile.lastModified()) { | |||||
| //-- command line status | |||||
| project.log("Processing " + xmlFile + " to " + outFile,project.MSG_VERBOSE); | |||||
| liaison.transform(inFile.toString(), outFile.toString()); | |||||
| } | |||||
| } | |||||
| catch (Exception ex) { | |||||
| // If failed to process document, must delete target document, | |||||
| // or it will not attempt to process it the second time | |||||
| project.log("Failed to process " + inFile,project.MSG_INFO); | |||||
| outFile.delete(); | |||||
| throw new BuildException(ex); | |||||
| } | |||||
| } //-- processXML | |||||
| } //-- XSLTProcess | |||||
| @@ -31,6 +31,7 @@ fixcrlf=org.apache.tools.ant.taskdefs.FixCRLF | |||||
| rename=org.apache.tools.ant.taskdefs.Rename | rename=org.apache.tools.ant.taskdefs.Rename | ||||
| patch=org.apache.tools.ant.taskdefs.Patch | patch=org.apache.tools.ant.taskdefs.Patch | ||||
| compileTask=org.apache.tools.ant.taskdefs.CompileTask | compileTask=org.apache.tools.ant.taskdefs.CompileTask | ||||
| style=org.apache.tools.ant.taskdefs.XSLTProcess | |||||
| # optional tasks | # optional tasks | ||||
| script=org.apache.tools.ant.taskdefs.optional.Script | script=org.apache.tools.ant.taskdefs.optional.Script | ||||
| @@ -0,0 +1,84 @@ | |||||
| /* | |||||
| * The Apache Software License, Version 1.1 | |||||
| * | |||||
| * Copyright (c) 1999 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * | |||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | |||||
| package org.apache.tools.ant.taskdefs.optional; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||||
| import org.apache.xalan.xslt.XSLTProcessorFactory; | |||||
| import org.apache.xalan.xslt.XSLTProcessor; | |||||
| import org.apache.xalan.xslt.XSLTInputSource; | |||||
| import org.apache.xalan.xslt.XSLTResultTarget; | |||||
| /** | |||||
| * | |||||
| * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class XalanLiaison implements XSLTLiaison { | |||||
| XSLTProcessor processor; | |||||
| XSLTInputSource xslSheet; | |||||
| public void setStylesheet(String fileName) throws Exception { | |||||
| xslSheet = new XSLTInputSource (fileName); | |||||
| }; | |||||
| public void transform(String infile, String outfile) throws Exception { | |||||
| if (processor == null) processor = XSLTProcessorFactory.getProcessor(); | |||||
| processor.process(new XSLTInputSource(infile), xslSheet, | |||||
| new XSLTResultTarget(outfile)); | |||||
| } | |||||
| } //-- XalanLiaison | |||||
| @@ -0,0 +1,85 @@ | |||||
| /* | |||||
| * The Apache Software License, Version 1.1 | |||||
| * | |||||
| * Copyright (c) 1999 The Apache Software Foundation. All rights | |||||
| * reserved. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without | |||||
| * modification, are permitted provided that the following conditions | |||||
| * are met: | |||||
| * | |||||
| * 1. Redistributions of source code must retain the above copyright | |||||
| * notice, this list of conditions and the following disclaimer. | |||||
| * | |||||
| * 2. Redistributions in binary form must reproduce the above copyright | |||||
| * notice, this list of conditions and the following disclaimer in | |||||
| * the documentation and/or other materials provided with the | |||||
| * distribution. | |||||
| * | |||||
| * 3. The end-user documentation included with the redistribution, if | |||||
| * any, must include the following acknowlegement: | |||||
| * "This product includes software developed by the | |||||
| * Apache Software Foundation (http://www.apache.org/)." | |||||
| * Alternately, this acknowlegement may appear in the software itself, | |||||
| * if and wherever such third-party acknowlegements normally appear. | |||||
| * | |||||
| * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software | |||||
| * Foundation" must not be used to endorse or promote products derived | |||||
| * from this software without prior written permission. For written | |||||
| * permission, please contact apache@apache.org. | |||||
| * | |||||
| * 5. Products derived from this software may not be called "Apache" | |||||
| * nor may "Apache" appear in their names without prior written | |||||
| * permission of the Apache Group. | |||||
| * | |||||
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED | |||||
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |||||
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |||||
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR | |||||
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||||
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | |||||
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |||||
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |||||
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| * SUCH DAMAGE. | |||||
| * ==================================================================== | |||||
| * | |||||
| * This software consists of voluntary contributions made by many | |||||
| * individuals on behalf of the Apache Software Foundation. For more | |||||
| * information on the Apache Software Foundation, please see | |||||
| * <http://www.apache.org/>. | |||||
| */ | |||||
| package org.apache.tools.ant.taskdefs.optional; | |||||
| import java.io.FileWriter; | |||||
| import org.apache.tools.ant.taskdefs.XSLTLiaison; | |||||
| import com.kvisco.xsl.XSLProcessor; | |||||
| import com.kvisco.xsl.XSLReader; | |||||
| import com.kvisco.xsl.XSLStylesheet; | |||||
| /** | |||||
| * | |||||
| * @author <a href="mailto:rubys@us.ibm.com">Sam Ruby</a> | |||||
| * @version $Revision$ $Date$ | |||||
| */ | |||||
| public class XslpLiaison implements XSLTLiaison { | |||||
| XSLProcessor processor; | |||||
| XSLStylesheet xslSheet; | |||||
| public void setStylesheet(String fileName) throws Exception { | |||||
| XSLReader xslReader = new XSLReader(); | |||||
| xslSheet = xslReader.read( fileName ); | |||||
| }; | |||||
| public void transform(String infile, String outfile) throws Exception { | |||||
| if (processor == null) processor = new XSLProcessor(); | |||||
| processor.process(infile, xslSheet, new FileWriter(outfile)); | |||||
| } | |||||
| } //-- XSLPLiaison | |||||