diff --git a/docs/manual/CoreTasks/style.html b/docs/manual/CoreTasks/style.html index b95d0ac5f..5eb2dc21d 100644 --- a/docs/manual/CoreTasks/style.html +++ b/docs/manual/CoreTasks/style.html @@ -140,6 +140,13 @@ inclusion/exclusion of files works, and how to write patterns.

in attribute. No + + outputtype + specifies the output method to be used. Only "xml" is + guaranteed to be supported by all translators. Xalan2 supports "xml", + "html", and "text" + No +

Parameters specified as nested elements

classpath

diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java b/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java index da364af93..e6474541a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/XSLTLiaison.java @@ -92,6 +92,14 @@ public interface XSLTLiaison { */ void addParam(String name, String expression) throws Exception; + /** + * set the output type to use for the transformation. Only "xml" (the + * default) is guaranteed to work for all parsers. Xalan2 also + * supports "html" and "text". + * @param type the output method to use + */ + void setOutputtype(String type) throws Exception; + /** * Perform the transformation of a file into another. * @param infile the input file, probably an XML one. :-) diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java index 4eaf087d7..09c4fb007 100644 --- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java +++ b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java @@ -116,6 +116,8 @@ public class XSLTProcess extends MatchingTask { private FileUtils fileUtils; + private String outputtype = null; + /** * Creates a new XSLTProcess Task. **/ @@ -457,6 +459,16 @@ public class XSLTProcess extends MatchingTask { } } + /** + * Set the output type to use for the transformation. Only "xml" (the + * default) is guaranteed to work for all parsers. Xalan2 also + * supports "html" and "text". + * @param type the output method to use + */ + public void setOutputtype(String type) { + this.outputtype = type; + } + /** * Loads the stylesheet and set xsl:param parameters. */ diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/AdaptxLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/AdaptxLiaison.java index 6132519b7..55dd3fa62 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/AdaptxLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/AdaptxLiaison.java @@ -59,6 +59,7 @@ import java.io.FileOutputStream; import java.io.OutputStreamWriter; import org.apache.tools.ant.taskdefs.XSLTLiaison; +import org.apache.tools.ant.BuildException; import org.exolab.adaptx.xslt.XSLTProcessor; import org.exolab.adaptx.xslt.XSLTReader; @@ -93,4 +94,9 @@ public class AdaptxLiaison implements XSLTLiaison { processor.setProperty(name, expression); } + public void setOutputtype(String type) throws Exception { + if (!type.equals("xml")) + throw new BuildException("Unsupported output type: " + type); + } + } //-- AdaptxLiaison diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java index a2e157c31..7dcd55cbd 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java @@ -67,6 +67,7 @@ import javax.xml.transform.Templates; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; +import javax.xml.transform.OutputKeys; /** * Concrete liaison for XSLT processor implementing TraX. (ie JAXP 1.1) @@ -160,4 +161,8 @@ public class TraXLiaison implements XSLTLiaison { public void addParam(String name, String value){ transformer.setParameter(name, value); } + + public void setOutputtype(String type) throws Exception { + transformer.setOutputProperty(OutputKeys.METHOD, type); + } } //-- TraXLiaison diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java index c46f72491..97a219fe5 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/XalanLiaison.java @@ -54,6 +54,7 @@ package org.apache.tools.ant.taskdefs.optional; +import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.XSLTLiaison; import org.apache.xalan.xslt.XSLTProcessorFactory; @@ -127,4 +128,9 @@ public class XalanLiaison implements XSLTLiaison { public void addParam(String name, String value){ processor.setStylesheetParam(name, value); } + + public void setOutputtype(String type) throws Exception { + if (!type.equals("xml")) + throw new BuildException("Unsupported output type: " + type); + } } //-- XalanLiaison diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java index 232f5ea57..4a6c2b717 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/XslpLiaison.java @@ -58,6 +58,7 @@ import com.kvisco.xsl.XSLProcessor; import com.kvisco.xsl.XSLReader; import com.kvisco.xsl.XSLStylesheet; import org.apache.tools.ant.taskdefs.XSLTLiaison; +import org.apache.tools.ant.BuildException; import java.io.File; import java.io.FileOutputStream; @@ -103,4 +104,9 @@ public class XslpLiaison implements XSLTLiaison { processor.setProperty(name, expression); } + public void setOutputtype(String type) throws Exception { + if (!type.equals("xml")) + throw new BuildException("Unsupported output type: " + type); + } + } //-- XSLPLiaison