我必須處理具有帶Java中的XSLT的DTD的XML文件。 DTD是非常需要的,因爲它包含我使用的實體的定義。 (撇開:是的,使用實體來使用unicode是一個壞主意;-)防止使用XSLT進行DTD下載,即XML Transformer
當我運行轉換時,它每次都從外部源下載DTD。我想它使用XML目錄緩存的DTD,所以我給了一個TransformerFactory
作爲CatalogResolver
URIResolver
:
URIResolver cr = new CatalogResolver();
tf = TransformerFactory.newInstance();
tf.setURIResolver(cr);
Transformer t = tf.newTransformer(xsltSrc);
t.setURIResolver(cr);
Result res = new SAXResult(myDefaultHandler());
t.transform(xmlSrc, res);
但是當我運行它仍然下載在網絡上的DTD改造。 (將Xalan和Xerces作爲Java5的一部分或獨立使用,或者使用Saxon和Xerces。)
如何強制轉換僅使用DTD的本地副本?
+1用於自己解決並分享結果(而不是刪除問題,我已經看到了)。 – Tomalak 2009-07-07 13:31:10