5

From: http://www.w3schools.com/tags/tag_doctype.asp

The < !DOCTYPE > declaration is not an HTML tag; it is an instruction to the web browser about what version of HTML the page is written in.

In HTML 4.01, the < !DOCTYPE > declaration refers to a DTD, because HTML 4.01 was based on SGML. The DTD specifies the rules for the markup language, so that the browsers render the content correctly.

HTML5 is not based on SGML, and therefore does not require a reference to a DTD.

Tip: Always add the < !DOCTYPE > declaration to your HTML documents, so that the browser knows what type of document to expect.

Does the bold statement mean that when we are using HTML 5 we don't need to specify < !DOCTYPE html >?
What does that statement exactly mean?

I am currently using < !DOCTYPE html > in my html file with the browser Firefox 4. I removed that declaration but did not see any difference in the rendered output. Does it mean that the problem may occur in old browsers and not in new ones?

4

3 回答 3

7

The terminology is confusing, but a DTD (document type definition) is only one part of a document type declaration (usually shortened to "doctype"). You should always include a doctype declaration (<!DOCTYPE html> if you use HTML5), but a document type definition identifier is no longer necessary.

To provide a concrete example, this is what a HTML4.01 document type declaration ("doctype") might have looked like:

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

The document type definition ("DTD") identifier in the above declaration is this part:

"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"

That's the part you can leave off for HTML5. "PUBLIC" specifies the DTD's availability, so that should also not be included if there is no DTD.

于 2013-04-24T06:43:11.397 回答
4

粗体声明是否意味着当我们使用 HTML 5 时我们不需要指定 ?

这意味着您无法指定。

HTML 5 Doctype 中没有公共或系统标识符。

我目前<!DOCTYPE html>在我的 html 文件中使用

这是必需的。继续这样做。

使用浏览器 Firefox 4。

Firefox 的当前稳定版本是 20 版。您可能应该升级。

我删除了该声明,但在呈现的输出中没有看到任何差异。这是否意味着问题可能出现在旧浏览器中而不是新浏览器中?

不,这只是意味着您没有任何代码受到处于Quirks 模式的影响(或者您有但没有发现更改)。

于 2013-04-24T06:30:12.883 回答
1

让我们看看 W3C HTML5 定义,他们有一个关于 HTML5 带来的差异的方便页面:http: //www.w3.org/TR/html5-diff/#doctype

2.2 文档类型

HTML5 的 HTML 语法要求指定 doctype 以确保浏览器以标准模式呈现页面。文档类型没有其他用途。[文档类型]

HTML 语法的 doctype 声明不区分大小写。来自早期 HTML 版本的文档类型更长,因为 HTML 语言是基于 SGML 的,因此需要对 DTD 的引用。在 HTML5 中,情况不再如此,只需要 doctype 来为使用 HTML 语法编写的文档启用标准模式。浏览器已经为 .

为了支持不能生成首选短文档类型的遗留标记生成器,HTML 语法中允许使用该文档类型。

HTML 4.0、HTML 4.01、XHTML 1.0 和 XHTML 1.1 的严格文档类型在 HTML 语法中也是允许的(但不鼓励)。

XML 语法中,可以使用任何 doctype 声明,也可以完全省略它。具有 XML 媒体类型的文档始终以标准模式处理

在该页面上,第 1 章(简介)详细介绍了 HTML 与 XML 语法:

HTML5 草案 (..) 定义了一种称为 HTML 的单一语言,它可以用HTML语法和XML语法编写。

因此,如果您的 HTML5 是严格的 XML 语法,我可以从最后一段中得出结论,是的,在这种情况下,您不应该在 doctype 行前面加上前缀。

语法上的区别参见第 2 章:

HTML5 HTML语法:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

HTML5 XML语法:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Example document</title>
  </head>
  <body>
    <p>Example paragraph</p>
  </body>
</html>

语法上有一些细微的差别。

于 2013-04-24T06:38:51.330 回答