2012-02-11 6 views
2

私はJDK 1.6(Xalan)でXSLTプロセッサを使用しています。私はdocument()関数を使い、Webからダウンロードしたドキュメント。この処理は、Webページをレンダリングする作業の一部として行われ、現在はページが提供されるたびに呼び出されます。私は、同じXSLTスクリプトから同じ文書(複数)の複数の評価を最適化する方法をいくつか知っていますが、私の懸念はWeb上のヒットを減らすことです。つまり、(私はそれらのいくつかを取得しようとするとタイムアウトが頻繁に取得するため)検索するために外部のドキュメントをキャッシュしたいと思います。document()のJava XSLTプロセッサ(Xalan)のキャッシング

Xalanには、外部ドキュメントを取得するためのプラグイン可能なクラスがあり、キャッシュポリシーを挿入するために傍受することができますが、ドキュメントや閲覧元で見つけることはできません。誰かが私にそれが存在するかどうか、それをどのように設定できるかを指摘できますか?ありがとう。

答えて

2

さて、デバッガとソースのクロールを微調整した後、Googleで見つけられなかったjavadocsのポインタが見つかりました。トリックを行うクラスがによって変圧器に設置することができ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()); 

あり、私は相対URLの場合には思うが、それが必要ではないのhrefとベースのいくつかの細かい処理する必要があります私の場合。

関連する問題