Devo elaborare file XML che hanno un DTD con un XSLT in Java. Il DTD è davvero necessario perché contiene le definizioni delle entità che utilizzo. (a parte: sì, usare le entità per cose che potrebbero usare l'unicode è una cattiva idea ;-)Previene il download DTD quando si utilizza XSLT, ad esempio il trasformatore XML
Quando eseguo la trasformazione scarica ogni volta il DTD dalla sorgente esterna. Voglio che utilizzare un catalogo XML per memorizzare nella cache i DTD così ho dato il TransformerFactory
un CatalogResolver
come 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);
Ma quando ho eseguito la trasformazione che scarica ancora i DTD attraverso la rete. (Uso di Xalan e Xerces come parte di Java5 o autonomo o utilizzando Saxon e Xerces.)
Cosa serve per forzare la trasformazione a utilizzare solo la copia locale dei DTD?
+1 per risolvere da soli e condividere il risultato (al contrario di eliminare la domanda, che ho visto anche). – Tomalak