Je dois traiter des fichiers XML qui ont une DTD avec un XSLT en Java. La DTD est vraiment nécessaire car elle contient les définitions des entités que j'utilise. (mis à part: oui, utiliser des entités pour des choses qui pourraient utiliser unicode est une mauvaise idée ;-)Empêcher le téléchargement de DTD lors de l'utilisation de XSLT, c'est-à-dire XML Transformer
Lorsque je lance la transformation, il télécharge la DTD depuis la source externe à chaque fois. Je veux utiliser un catalogue XML pour mettre en cache les DTD donc j'ai donné le TransformerFactory
un CatalogResolver
comme 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);
Mais quand je lance la transformation qu'il télécharge toujours les DTD sur le réseau. (Utilisation de Xalan et de Xerces dans le cadre de Java5 ou autonome ou en utilisant Saxon et Xerces.)
Que faut-il pour forcer la transformation à utiliser uniquement la copie locale des DTD?
+1 pour avoir résolu le problème et partagé le résultat (par opposition à la suppression de la question, que j'ai également vue). – Tomalak