我遇到一个问题,即一个 XSLT 文件导入另一个文件,导致我的应用程序抛出 MalformedURLException。中的导入语句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。
同样有趣的是,似乎只有我的工作站有这个问题。最初编写此代码的开发人员说他对此没有任何问题。我正在使用 RAD 7.5。有谁知道这个问题是如何出现的,在逐个工作站的基础上?