我有一个xsl用于输出xml,使用以下代码...(java 1.6)
Source input= new StreamSource(new StringReader( xmlContent));
InputStream xslStream = this.getClass().getResourceAsStream("/java.xsl");
if (xslStream == null) {
xslStream = this.getClass().getResourceAsStream("java.xsl");
}
Transformer transformer = null;
TransformerFactory factory = TransformerFactory.newInstance();
transformer = factory.newTransformer(new StreamSource(xslStream));//this line throws the exception when run from greenplum
ByteArrayOutputStream output = new ByteArrayOutputStream();
transformer.transform(input, new StreamResult(output));
这是XSL
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
和输入XML(我认为输入xml甚至不重要,因为代码甚至没有达到需要转换输入的程度)
<?xml version='1.0' encoding='UTF-8'?>
<TestClass xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
</TestClass>
当我从windows上的eclipse / cmd测试时,这个工作正常....
但是当我将jar部署到greenplum框时,创建一个函数,然后运行一个查询来调用该函数,我得到以下异常
javax.xml.transform.TransformerConfigurationException:无法编译样式表
在以下一行
transformer = factory.newTransformer(new StreamSource(xslStream));
为了方便我打印堆栈跟踪,这就是我得到的
TransformerFactoryImpl.java:843
TransformerFactoryImpl.java:632
请注意,TransformerFactoryImpl来自java API而不是我自己的类......
我在网上查了一下但没有任何帮助..我甚至下载了TransformerFactoryImpl.java源代码,但无法弄清楚......
有什么想法吗?