2010-03-23 10 views
5

Im folgenden Code:java.io.IOException: Server zurückgegeben HTTP-Antwortcode: 503 URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

private Document transformDoc(Source source) throws TransformerException, IOException { 
    TransformerFactory factory = TransformerFactory.newInstance(); 

    Transformer transformer = 
      factory.newTransformer(new StreamSource(xsltResource.getInputStream())); 
    JDOMResult result = new JDOMResult(); 
    transformer.transform(source, result); 
    return result.getDocument(); 
} 

ich erhalte diese Ausnahme:

java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 

Der XHTML ich über xsl bin übersetzen vorbei ist:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
    <title>Terms and Conditions</title> 
</head> 
<body> 
    <div>Test Content</div> 
</body> 
</html> 

Wie kann ich aus telefonieren hom die xalan Transformator stoppen e?

Antwort

1

This post from the Xalan-J mailing list schlägt vor, dass "der richtige Weg" für Sie ist, die zugrunde liegende Source/Reader selbst zu konfigurieren, um die Validierung zu deaktivieren.

+0

Sie benötigen die folgenden es 100% richtig zu machen, aber das Mailing-Liste Link war sehr hilfreich! SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware (wahr); spf.setValidating (falsch); // Validierung deaktivieren spf.setFeature ("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); XMLReader rdr = spf.newSAXParser(). GetXMLReader(); –

2

Deaktivieren Sie entweder die DTD-Auflösung im Parser (parser-spezifisch) oder legen Sie einen leeren Entity-Resolver fest.

von http://www.jdom.org/docs/faq.html#a0350 Kopierte:

public class NoOpEntityResolver implements EntityResolver { 
    public InputSource resolveEntity(String publicId, String systemId) { 
    return new InputSource(new StringBufferInputStream("")); 
    } 
} 

// Then in the builder... 

builder.setEntityResolver(new NoOpEntityResolver());