2015-05-05 2 views
1

Я пытаюсь создать выход html 5 из java-трансформатора. У меня естьjava transform to html with doctype

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

Document doc = docBuilder.newDocument(); 

Element html= doc.createElement("html"); 
.... //populate the html element 

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 

DOMSource domSource = new DOMSource(html); 
StreamResult result = new StreamResult(new File(fileLocation)); 
transformer.setOutputProperty(OutputKeys.METHOD, "html"); 
transformer.transform(domSource, result); 

Это отлично работает и создает для меня html-файл, как я хочу. но он не имеет <! DOCTYPE html> наверху, и я не могу понять, как это получить. Глядя на документацию по трансформатору, я вижу только, как включить или выключить xml-версию заголовка.

Как вы можете видеть в моем коде, я попытался установить метод выходных ключей на html, и я попытался реализовать то, что предлагается here, но в файлах html все еще нет строки типа документа.

Еще один вариант, о котором я подумал, - создать элемент doctype, но я не знаю, как связать его с моим элементом html.

+0

Выход html механизма преобразования XSLT 1.0, заключенного в Java, предшествует HTML5 с более чем десятилетием. –

+0

Я боялся чего-то подобного –

+0

Это не делает невозможным, просто сложнее и, скорее всего, зависит от реализации. –

ответ

2

Добавить что-то вроде этого, чтобы выровнять 5:

DOMImplementation domImpl = doc.getImplementation(); 
DocumentType doctype = domImpl.createDocumentType(""); 
doc.appendChild(doctype); 

Это добавит пустую DOCTYPE (как правило, используется с HTML5).