在HTML文档中是否需要XML声明?

3

在很久以前,我做了很多阅读和研究,并决定“最佳”开始HTML文档的方法是:

<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="EN" lang="EN">

从那以后,我一直复制粘贴这段内容到每个HTML文档的开头,而没有再去深入思考。

然而,现在HTML5已经出现了,我需要开始遵循现代实践,这意味着我需要用新的东西来替换这个过时的标头。

显然,第二行将变成:

<!DOCTYPE html>

但是第一行呢?"<?xml"声明;我还需要它吗?说实话,从今天我所读到的内容来看,我不确定我曾经需要过它。(我不确定当时我进行了什么研究,导致我认为我需要它。)

第三行呢?我知道我需要"<html>",但是我还需要该行上的其他内容吗?

此外,我需要添加什么吗?我能否仅以如下方式开始文档:

<!DOCTYPE html>
<html>

这几行基本的代码是最佳实践吗?还是我需要添加其他内容?
2个回答

5
XML声明只在XML文档中有意义,包括XHTML,在HTML5中它只是HTML标准的XML序列化而已。
但是HTML本身并不是XML,所以在HTML文档中XML声明是无意义的,没有任何理由需要包含它,这甚至不是最佳实践的问题。
HTML5允许使用某些来自XHTML的保留属性,例如xmlns属性和自闭合语法“/ >”,以便更容易地将“XHTML”文档移植到HTML5。但如果您从头开始编写HTML(对于可能有90%的作者而言),它们应该被省略。只有当您编写XHTML时,才需要继续遵循XML规则。
你提供的两行代码是符合现代标准的开始HTML文档的正确方式。(<html>开始标签是可选的,但除非你是Google,否则最好留下它,并且如果你打算指定任何属性,你也需要它。)

1
所以,是的,你可以(而且必须)从<!DOCTYPE html>开始。 - FLX
你声称“如果你从头开始,[那么xmlns属性]应该被省略。”但是如果您想在您的(XML语法)HTML5文档中使用命名空间,并且从头开始怎么办? - Michael Allan
2
@Michael Allan:那么你正在编写XHTML5,所有XML的规则都适用。我已经在我的答案中添加了一些澄清。 - BoltClock

2

尝试在这里查找

只有当页面不以UTF-8(或UTF-16)格式提供时,才需要XML声明,但是包含它可能很有用,这样开发人员、测试人员或翻译生产经理可以通过查看源代码来直观地检查文档的编码。由于多语言文档必须采用UTF-8,因此您不需要使用XML声明,事实上也不能使用。另一方面,如果文件将作为HTML读取,则需要使用meta元素、字节顺序标记或HTTP头声明编码。

由于meta元素中的声明仅由HTML解析器识别,因此如果您使用带有内容属性的方法,则其值应以text/html;开头。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接