无法编译样式表:从greenplum运行时XSL转换异常

时间:2015-02-12 19:49:05

标签: java xml xslt greenplum

我有一个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源代码,但无法弄清楚......

有什么想法吗?

0 个答案:

没有答案