ある XSLT ファイルが別の XSLT ファイルをインポートするという問題が発生し、アプリケーションが MalformedURLException をスローします。の import ステートメントはmain.xsl
次のようになります。
<xsl:import href="transformCommon.xsl"/>
ファイルtransformCommon.xsl
は と同じフォルダにありますmain.xsl
。ロードしようとするコードは次のようになります。
private void loadXSLTFiles(String xsltFile)
{
TransformerFactory transformFactory = TransformerFactory.newInstance();
//tell the location of all of import file
transformFactory.setURIResolver(new ClassPathURIResolver());
Templates cache=null;
//cache XSLT source file for transformation reuse
InputStream is = this.getClass().getClassLoader().getResourceAsStream(xsltFile);
javax.xml.transform.Source xsltSource = new javax.xml.transform.stream.StreamSource(is);
try
{
cache = transformFactory.newTemplates(xsltSource);
}
catch (TransformerConfigurationException domException)
{
LOG.logError("XSLT initialization error has occurred: " + domException.getMessage());
}
...
スタック トレースは次のとおりです。
原因: java.net.MalformedURLException java.net.URL.(URL.java:602) java.net.URL.(URL.java:465) java.net.URL.(URL.java:414) org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity (不明なソース) で org.apache.xerces.impl.XMLVersionDetector.determineDocVersion (不明なソース) で org.apache.xerces.parsers.XML11Configuration.parse (不明なソース) で org.apache.xerces.parsers.XML11Configuration.parse (不明なソース) で org.apache.xerces.parsers.XMLParser.parse (不明なソース) で org.apache.xerces.parsers.AbstractSAXParser.parse (不明なソース) で org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse (不明なソース) で org.apache.xalan.templates.StylesheetRootProxy.(不明なソース) ... 59 件以上
なぜこのエラーが発生するのかわかりません。からインポートを削除するとmain.xsl
、すべて正常に動作します。もちろん、これを削除することはオプションではありません。これの要点は、一般的な機能を別の XSLT に移動することでした。
また興味深いのは、私のワークステーションだけがこの問題を抱えているようだということです。最初にこのコードを書いた開発者は、問題はないと言っています。私はRAD7.5を使用しています。ワークステーションごとに、この問題がどのように発生するかを知っている人はいますか?