在Java Web App中加载资源引用资源

时间:2014-03-06 14:55:56

标签: java xml tomcat xslt resources

我用这样的东西完成了xslt转换:

public static String transform(Source xml, String xsltPath) {

    try {
        InputStream is = MyClass.class.getResourceAsStream(xsltPath);
        final Source xslt = new StreamSource(is);
        final TransformerFactory transFact = TransformerFactory.newInstance();
        final Transformer trans = transFact.newTransformer(xslt);
        final OutputStream os = new ByteArrayOutputStream();

        final StreamResult result = new StreamResult(os);
        trans.transform(xml, new StreamResult(os));
        final String theResult = result.getOutputStream().toString();
        return theResult;
    }
    catch (TransformerException e) {
        return null;
    }
}

正如您所见,xslt是从资源加载的。该函数与我需要的转换文件一起捆绑在一个库中,只要库从主方法中独立存在,这就可以工作。 但是,如果此库与Web应用程序捆绑在一起并部署在Jetty / Tomcat中,则会有点复杂。只要其自身的转换文件不引用资源中的任何其他文件就没有问题,但是使用这样的文件:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet>

  <xsl:import href="import_file1.xsl" />
  <xsl:import href="import_file2.xsl" />

  <xsl:template name="aTtemplate">
    <xsl:for-each select="document('import_file3.xml')">
    ...
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

无法解析导入,无法找到每个循环的文档。在Tomcat中,一种解决方法是将文件放在$ TOMCAT / bin目录中,但这对我们来说不是一个合适的解决方案。有没有任何方法可以从lib中递归获取这些资源?

0 个答案:

没有答案