Java TransformerConfiguration异常:无法编译sytlesheet
当我尝试在web应用程序中使用xslt转换xml时,会在weblogic 10.3服务器中引发TransformerConfigurationException异常。同样的web应用程序代码在Tomcat7.0中运行良好。我不知道这一异常的原因是什么Java TransformerConfiguration异常:无法编译sytlesheet,java,xml,xslt,transformer,Java,Xml,Xslt,Transformer,当我尝试在web应用程序中使用xslt转换xml时,会在weblogic 10.3服务器中引发TransformerConfigurationException异常。同样的web应用程序代码在Tomcat7.0中运行良好。我不知道这一异常的原因是什么 Exception: javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet ERROR: 'Syntax error in 'form
Exception:
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
ERROR: 'Syntax error in 'format-date($date,'[MNn][D],[Y]','en',(),())'.'
FATAL ERROR: 'Could not compile stylesheet'
在删除xslt中的format date函数后,我得到了另一个异常(javax.xml.tranform.TransformerException:java.lang.ArrayIndexOutOfBoundsException)
代码:
格式-日期()
是XSLT 2.0函数。当您使用JAXP TransformerConfiguration工厂加载XSLT transformer时,您无法控制返回的处理器是XSLT 1.0还是2.0处理器-这取决于在类路径上找到了什么。我猜类路径上没有XSLT 2.0处理器,因此已加载默认的内置Xalan处理器,这不支持XSLT 2.0(因此format-date()
)
如果您的代码依赖于XSLT2.0,那么
a) 确保Saxon位于类路径上
b) 通过替换
TransformerFactory factory = TransformerFactory.newInstance();
与
TransformerFactory factory = TransformerFactory.newInstance();
TransformerFactory factory = new net.sf.saxon.TransformerFactoryImpl();