Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为文档()缓存Java XSLT处理器(Xalan)的回迁_Java_Function_Document_Xalan - Fatal编程技术网

为文档()缓存Java XSLT处理器(Xalan)的回迁

为文档()缓存Java XSLT处理器(Xalan)的回迁,java,function,document,xalan,Java,Function,Document,Xalan,我在JDK1.6(Xalan)中使用XSLT处理器,并广泛使用document()函数从从web下载的文档中检索数据项。此处理是作为呈现网页工作的一部分完成的,当前每次提供网页时都会调用它。我知道有很多方法可以从同一XSLT脚本优化同一文档()的多个求值,但我关心的是如何减少对web的影响;也就是说,我希望缓存要检索的外部文档(这也是因为我在尝试检索其中一些文档时经常会超时) 我想(希望)Xalan有一个用于检索外部文档的可插入类,我可以截取它来注入缓存策略,但在文档或浏览源代码中找不到它。有人

我在JDK1.6(Xalan)中使用XSLT处理器,并广泛使用document()函数从从web下载的文档中检索数据项。此处理是作为呈现网页工作的一部分完成的,当前每次提供网页时都会调用它。我知道有很多方法可以从同一XSLT脚本优化同一文档()的多个求值,但我关心的是如何减少对web的影响;也就是说,我希望缓存要检索的外部文档(这也是因为我在尝试检索其中一些文档时经常会超时)


我想(希望)Xalan有一个用于检索外部文档的可插入类,我可以截取它来注入缓存策略,但在文档或浏览源代码中找不到它。有人能告诉我它是否存在以及如何配置吗?谢谢。

好吧,在调试程序和源代码爬网进行了一些调整之后,我在javadocs中找到了一个指针,这是我在Google中找不到的。实现这一技巧的类是,可以通过以下方式将其安装到变压器上:

        import javax.xml.transform.Source;
        import javax.xml.transform.TransformerException;
        import javax.xml.transform.URIResolver;
        import javax.xml.transform.stream.StreamSource;

        public class CachedURIResolver implements URIResolver
          {
            @Override
            public Source resolve (final String href, final String base) 
              throws TransformerException 
              {
                // TODO: caching logic 
                return new StreamSource(href);
              }
          }

        ...

        final Transformer transformer = transformerFactory.newTransformer(transformation); 
        transformer.setURIResolver(new CachedURIResolver());
我认为在相对URL的情况下,应该有一些更精细的href和base处理,但在我的情况下不需要