J'utilise Java (6) XML-Api pour appliquer une transformation xslt sur un document html à partir du Web. Ce document est bien formaté xhtml et contient donc un DTD-Spec valide (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
). Maintenant, un problème survient: La transformation Uppon du processeur XSLT essaie de télécharger la DTD et le serveur w3 refuse cela par une erreur HTTP 503 (due à Bandwith Limitation par w3).Java, xml, XSLT: Empêcher la validation DTD
Comment puis-je empêcher le processeur XSLT de télécharger le dtd? Je n'ai pas besoin de mon document d'entrée validé.
Source est:
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
-
String xslt = "<?xml version=\"1.0\"?>"+
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"+
" <xsl:output method=\"text\" />"+
" <xsl:template match=\"//html/body//div[@id='bodyContent']/p[1]\"> "+
" <xsl:value-of select=\".\" />"+
" </xsl:template>"+
" <xsl:template match=\"text()\" />"+
"</xsl:stylesheet>";
try {
Source xmlSource = new StreamSource("http://de.wikipedia.org/wiki/Right_Livelihood_Award");
Source xsltSource = new StreamSource(new StringReader(xslt));
TransformerFactory ft = TransformerFactory.newInstance();
Transformer trans = ft.newTransformer(xsltSource);
trans.transform(xmlSource, new StreamResult(System.out));
}
catch (Exception e) {
e.printStackTrace();
}
Je lis les quesitons suivants ici sur le SO, mais ils utilisent tous une autre XML Api:
Merci!
Juste au cas où quelqu'un a les mêmes problèmes: Cela conduit dans la bonne direction (c'est pourquoi j'ai accepté la réponse). Si vous ne voulez pas renvoyer la DTD, vous pouvez également retourner une DTD vide. – theomega
Veuillez corriger la capitalisation: 'XmlReader' devrait être 'XMLReader' – wau