Когда я пытаюсь преобразовать xml с xslt в моем веб-приложении, исключение TransformerConfigurtionException выбрано на сервере weblogic 10.3. Тот же код веб-приложения отлично работает в Tomcat 7.0. Я не знаю, что может быть причиной этого исключения.TransformerConfigurationException: не удалось скомпилировать sytlesheet
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, я получил еще одно исключение (javax.xml.tranform.TransformerException: java.lang.ArrayIndexOutOfBoundsException
Код:
TransformerFactory factory = TransformerFactory.newInstance();
try
{
factory.newTransformer().transform(new StreamSource(new StringReader(xml)), new StreamResult(transformResult));
Source documentInfoSource = new StringSource(new String(transformResult.toByteArray()));
transformResult.reset();
factory.setURIResolver(new URIResolver()
{
@Override
public Source resolve(String href, String base) throws TransformerException
{
try
{
return new StreamSource(EcrionDocumentRenderServiceImpl.class.getClassLoader().getResourceAsStream(href));
}
catch(Exception e)
{
throw new TransformerException(e);
}
}
});
factory.newTransformer(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream("template.xsl"))).transform(documentInfoSource, new StreamResult(transformResult));TransformerFactory factory = TransformerFactory.newInstance();
try
{
factory.newTransformer().transform(new StreamSource(new StringReader(xml)), new StreamResult(transformResult));
Source documentInfoSource = new StringSource(new String(transformResult.toByteArray()));
transformResult.reset();
factory.setURIResolver(new URIResolver()
{
@Override
public Source resolve(String href, String base) throws TransformerException
{
try
{
return new StreamSource(EcrionDocumentRenderServiceImpl.class.getClassLoader().getResourceAsStream(href));
}
catch(Exception e)
{
throw new TransformerException(e);
}
}
});
factory.newTransformer(new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream("template.xsl"))).transform(documentInfoSource, new StreamResult(transformResult));
Работает после перехода на саксонскую. Благодаря Kay – skumar