From 3781d8b0e1b86ff71872dc82026d4b832e41d851 Mon Sep 17 00:00:00 2001
From: Sam Ruby
Date: Mon, 26 Nov 2001 18:10:45 +0000
Subject: [PATCH] Add support to for XSLT output types. This maps to TraX's:
transformer.setOutputProperty(OutputKeys.METHOD, type);
Background/rationalle: I'm looking into spliting Gumps gen.bat and gen.sh
scripts into a minimal bootstrap and a normal Ant "build.xml". In order
to achieve this, I need access to the functionallity that Xalan supports
from the command line via the -text parameter.
I've provided an implementation to seed the discussion on how this should
be supported. I am by no means wedded to this approach - if others see a
better way, either let me know or directly make the change.
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270023 13f79535-47bb-0310-9956-ffa450edef68
---
docs/manual/CoreTasks/style.html | 7 +++++++
.../org/apache/tools/ant/taskdefs/XSLTLiaison.java | 8 ++++++++
.../org/apache/tools/ant/taskdefs/XSLTProcess.java | 12 ++++++++++++
.../tools/ant/taskdefs/optional/AdaptxLiaison.java | 6 ++++++
.../tools/ant/taskdefs/optional/TraXLiaison.java | 5 +++++
.../tools/ant/taskdefs/optional/XalanLiaison.java | 6 ++++++
.../tools/ant/taskdefs/optional/XslpLiaison.java | 6 ++++++
7 files changed, 50 insertions(+)
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