当我通过javax.xml.transform.Transformer
传递HTML5代码时,<!DOCTYPE html>
doctype会被删除。以下是示例代码:
public static void main(String[] args) {
StreamSource source = new StreamSource(
IOUtils.toInputStream(
Joiner.on('\n').join(
"<!DOCTYPE html>",
"<html>",
"<head>",
"</head>",
"<body>",
"</body>",
"</html>"
)
)
);
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
Transformer transformer = TransformerFactory
.newInstance()
.newTransformer();
transformer.transform(source, new StreamResult(result));
} catch (Exception e) {
throw new RuntimeException(e);
}
System.out.println(
result.toString()
);
}
输出是:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
</body>
</html>
如何保存<!DOCTYPE html>
?
答案 0 :(得分:1)
DOCTYPE声明不是数据模型的一部分,因此XSLT转换器不知道它在那里,所以它不能保留它。此外,当XSLT 1.0(甚至2.0)被标准化时,语法<!DOCTYPE html>
并不存在,因此甚至没有标准的生成方法。但请参阅Set HTML5 doctype with XSLT了解变通方法。