XSL缓存在java依赖的xsl文件中

时间:2016-11-16 18:28:31

标签: xslt caching xsl-fo jaxp

我使用以下代码来缓存xsl(在所有请求中都相同),这样就不会每次都从磁盘读取文件。

我的问题是,如果xsl引用了100个其他xsl文件(<xsl:include href="file1"/>),它们是否也会被加载到缓存中?它们还会被从磁盘中读出来吗?

如果没有,我们如何将所有依赖的xsls读入内存并缓存?

private static Templates cachedXslt = null;
// Transformer
        if(cachedXslt == null)
        {
            Source xsltSrc = new StreamSource(xslPath);

            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            cachedXslt = transformerFactory.newTemplates(xsltSrc);
        }

    Transformer transformer = cachedXslt.newTransformer();

1 个答案:

答案 0 :(得分:1)

是的,Templates对象将包含整个样式表的某种内部/编译的内存表示形式(即样式表的所有模块)。虽然发生的事情当然取决于实现(JAXP是一个接口,JAXP实现可以以不同的方式实现它。)