2012-02-11 25 views
2

我在JDK 1.6(Xalan)中使用XSLT處理器,並廣泛使用document()函數從Web下載的文檔中檢索數據項。該處理是作爲呈現網頁的工作的一部分完成的,並且每當頁面被提供時就被調用。我知道有很多方法可以從同一個XSLT腳本中優化對同一個文檔()的多個評估,但我關心的是減少對網絡的影響;也就是說,我想緩存要檢索的外部文檔(也因爲我經常在嘗試檢索其中的某些文檔時遇到超時)。我想(希望)Xalan有一個可插入的類來檢索外部文檔,我可以截取注入緩存策略,但我無法在文檔或瀏覽源中找到它。有人可以指出它是否存在以及它如何配置?謝謝。緩存提取的Java XSLT處理器(Xalan)文檔()

回答

2

那麼,在調試器和源代碼抓取之後,我在javadocs中找到了一個指針,我沒有在Google上找到它。這是卓有成效的類是URIResolver,可以通過以下方式被安裝到一個變壓器:

 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()); 

應該有href和基地的一些更精細的處理,我認爲在相對URL的情況下,但它並不需要在我的情況。