“<!DOCTYPE html>”是什么意思?

16
我使用一个名为“ECOTree”的神奇的JavaScript组织树生成器,但是当我放置时,绘图不起作用。框中的标签没有正确放置在框内。
您可以在下面的网站上的sample1.htm中看到错误。有人能建议我如何修复吗。 http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=16192 (为了遵循我的项目规则,我必须定义)

6
<!DOCTYPE html> 是文档的文档类型声明。它基本上告诉网络浏览器如何呈现网页(有不同的文档类型)。如果使用正确的文档类型声明,页面呈现不正确,则意味着页面编码不正确。 - Blender
5
可能是What's up, Doctype?的重复问题。 - animuson
非常感谢!正如你所说,这个问题是重复的。我会阅读它。(从“ECOTree”中找到不支持的代码可能有些困难,但我会尝试。) - zono
感谢ECOTree网站上的留言板,我已经解决了这个问题。此外,也感谢你让我了解了“DOCTYPE”的含义。 - zono
http://reference.sitepoint.com/html/doctypes - Jawad
-1 用 '<!DOCTYPE html> 是什么意思?' 搜索了 Stack Overflow 发现了超过 600 个结果! - toesslab
5个回答

29

<!DOCTYPE html>是明确的文档类型声明

来自链接页面:

文档类型声明(DTD或文档类型声明)有几个作用:

  1. 在对网页进行HTML验证测试时,它告诉HTML(超文本标记语言)验证器网页编码应符合哪个版本的(X)HTML标准。当您验证网页时,HTML验证器会检查编码是否符合适用的标准,然后报告哪些部分的编码未通过HTML验证(不符合规范)。
  2. 它告诉浏览器如何以符合标准的模式呈现页面。

#2是使用它的一个非常重要的原因。

<!DOCTYPE html>,具体来说,是HTML5的正确声明,应该在现在和不久的将来使用。您仍然可以使用旧的字符串或已过时的允许字符串,但先前编写的格式是HTML5所需的全部内容。另外,这个DTD会导致所有现代浏览器 死链接 切换到它们的标准(合规)模式,即使它们不支持HTML5。

以下是更多信息:

使用文档类型激活浏览器模式选择文档类型(同一页)
万维网联盟(他们制定网络标准)


1
@thirtydot "我们在决定哪个具体页面是一个好的参考时,应该自己思考,而不是依赖第三方的笼统陈述。" 如果一个链接提供的信息是正确的(就像这个链接一样),并且对于显然对该主题一无所知的人来说易于理解,那么它就是一个好的链接。你提供的链接就像被一本书打在脸上一样。质量信息,我相信,但是对于非专业人士的实用性就像一个理论性的白皮书一样。 - rockerest
html是HTML5的声明”这句话并不完全正确。在一个有效的DOCTYPE声明中,它只是表示文档的根元素是<html>。而<!DOCTYPE html>这个序列则被HTML5规范作为一个整体来处理。 - BoltClock
我主要删除了w3schools的链接,因为它甚至没有提及HTML5 doctype。在2012年,这是不好的。链接到w3schools几乎从来都不是一个好主意。他们的信息通常存在一些缺陷,即使没有缺陷,你也很可能会得到负面评价(个人经验)。为了缓解您对我提供的链接过于复杂的担忧,您可以更新链接到http://hsivonen.iki.fi/doctype/#choosing,该链接直接涉及重要部分。感谢您没有撤销您的回答。 - thirtydot
@BoltClock,我已经更清楚地表达了我的意思。感谢你指出这一点。 - rockerest

15

<!DOCTYPE html>不是“文档类型声明”。

“文档类型声明”是一个SGML的概念,用于指示后续标记的语法和词汇表。 <!DOCTYPE html>不符合该要求。这与 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">不同,后者是符合SGML的文档类型声明。

<!DOCTYPE html>不能说明一个HTML5文档。

虽然text/html序列化的HTML5符合规范的文档需要在开头有<!DOCTYPE html>,但这并不意味着反过来也成立。也就是说,一个文档可以在开头含有<!DOCTYPE html>,但不一定是HTML5文档。例如,未来所有版本的HTML都将使用相同的字符序列以开始它们的文档。因此,它可能表示一个HTML5文档、一个HTML6、HTML7等文档、一个HTML5+RDFa-lite文档或者一个完全竞争标准的文档。

HTML5规范将<!DOCTYPE html>描述为“必需的前导声明”,这更接近实际情况。它只是最短的字符序列,可请求旧版和未来浏览器使用其最现代的HTML处理模式处理文档中的HTML。出于这个原因,它被选择为HTML5的符合前导声明。

如果说它有任何含义,那就是表明该文档是在大约2007年或之后创建或最后重构的。同样,反之不一定成立。一个不包含<!DOCTYPE html>的文档并不意味着该文档是在某个特定日期之前创建的。


1
为了后人留存:万维网联盟的文档类型声明列表。明确指出 <!DOCTYPE html> 是一个文档类型声明,尽管它还没有正式标准化。此外,上面答案中的链接明确说明在创建 HTML 文档时其他 DTD 已经过时。 - rockerest
那个网站上的引用:“使用最简单和最可靠的文档类型声明是在HTML5中定义的:<!DOCTYPE html>”。 - Greg Wozniak

2
“<!DOCTYPE html>”是什么意思?
这意味着您的网页将按照html5标准呈现,当然,如果您使用了浏览器不支持的内容,则需要使用polyfill。

1

它声明了版本,即页面是用HTML5编写的。 基本上,它是给网页浏览器的指令,告诉它页面使用的HTML版本,甚至告诉浏览器如何呈现页面。

以下是HTML文档类型声明列表:

http://www.w3.org/QA/2002/04/valid-dtd-list.html


1

⦁ DOCTYPE 表示网页使用的 HTML 类型。浏览器使用 DOCTYPE 来确定如何渲染页面。未使用 DOCTYPE 或使用错误的 DOCTYPE 可能会在怪异模式下加载您的页面。参见示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">.

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