Web アプリケーションで xslt を使用して xml を変換しようとすると、Weblogic 10.3 サーバーで TransformerConfigurtionException 例外がスローされます。Tomcat 7.0 では、同じ Web アプリケーション コードが正常に動作します。この例外の原因が何であるかはわかりません。
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
コード:
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 ) );