我正在將xslt應用於HTML文件(已經過篩選並將其整理爲可解析爲XML)。應用XSLT時訪問w3.org時出錯
我的代碼如下所示:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
this.xslt = transformerFactory.newTransformer(xsltSource);
xslt.transform(sanitizedXHTML, result);
不過,我收到錯誤的發現這樣的每一個文檔類型:
ERROR: 'Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/html4/loose.dtd '
我沒有問題,從我的瀏覽器訪問的DTD。
我幾乎不能控制被解析的HTML,並且不能翻譯DOCTYPE,因爲我需要它們用於實體。
任何幫助,歡迎。
編輯:
我試圖禁用DTD驗證這樣的:
private Source getSource(StreamSource sanitizedXHTML) throws ParsingException {
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware(false);
spf.setValidating(false); // Turn off validation
XMLReader rdr;
try {
rdr = spf.newSAXParser().getXMLReader();
} catch (SAXException e) {
throw new ParsingException(e);
} catch (ParserConfigurationException e) {
throw new ParsingException(e);
}
InputSource inputSrc = new InputSource(sanitizedXHTML.getInputStream());
return new SAXSource(rdr, inputSrc);
}
,然後就調用它...
Source source = getSource(sanitizedXHTML);
xslt.transform(source, result);
的錯誤仍然存在。
編輯2:
寫了實體解析器,並得到了HTML 4.01過渡DTD我的本地磁盤上。不過,現在我得到這個錯誤:
ERROR: 'The declaration for the entity "HTML.Version" must end with '>'.'
DTD是如,從w3.org
感謝您的建議,但問題仍然存在。我剛剛編輯顯示我試圖禁用DTD驗證。 – Johnco 2010-02-09 23:43:04
您的編輯做到了! – Johnco 2010-02-11 02:27:38