我使用以下代码来缓存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();
答案 0 :(得分:1)
是的,Templates对象将包含整个样式表的某种内部/编译的内存表示形式(即样式表的所有模块)。虽然发生的事情当然取决于实现(JAXP是一个接口,JAXP实现可以以不同的方式实现它。)