HTML5不基于SGML,因此不需要引用DTD

时间:2013-04-24 06:26:45

标签: html dtd

来自:http://www.w3schools.com/tags/tag_doctype.asp

  

< !DOCTYPE>声明不是HTML标记;这是一个指示   关于页面编写的HTML版本的Web浏览器。

     

在HTML 4.01中,< !DOCTYPE>声明是指DTD,因为HTML   4.01基于SGML。 DTD指定标记语言的规则,以便浏览器正确呈现内容。

     

HTML5不基于SGML,因此不需要引用   到DTD。

     

提示:始终添加< !DOCTYPE>声明HTML文档,以便浏览器知道所期望的文档类型。

粗体语句是否意味着当我们使用HTML 5时,我们不需要指定< !DOCTYPE html>
这句话究竟意味着什么?

我目前正在使用<我的html文件中的DOCTYPE html> 与浏览器Firefox 4.我删除了该声明,但没有看到渲染输出有任何差异。 这是否意味着问题可能发生在旧浏览器中而不是新浏览器中?

3 个答案:

答案 0 :(得分:6)

术语令人困惑,但DTD (document type definition)只是document type declaration的一部分(通常缩写为“doctype”)。如果您使用HTML5,则应始终包含doctype 声明<!DOCTYPE html>),但不再需要文档类型 definition 标识符。

为了提供一个具体的例子,这就是HTML4.01文档类型声明(“doctype”)可能看起来像:

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

上述声明中的文档类型定义(“DTD”)标识符是此部分:

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

这是你可以为HTML5留下的部分。 “PUBLIC”指定DTD的可用性,因此如果没有DTD,也不应该包括它。

答案 1 :(得分:4)

  

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

这意味着您无法指定。

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

  

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

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

  

使用浏览器Firefox 4.

当前稳定版的Firefox是版本20.你应该升级。

  

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

不,这只是意味着您没有任何受Quirks mode影响的代码(或者您执行但未发现更改)。

答案 2 :(得分:1)

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

  

2.2 Doctype

     

HTML5的HTML语法要求指定doctype以确保   浏览器以标准模式呈现页面。 doctype有   没有其他目的。 [DOCTYPE]

     

HTML语法的doctype声明是和   不区分大小写。早期版本的HTML中的Doctypes更长   因为HTML语言是基于SGML的,因此需要一个   参考DTD。 HTML5不再是这种情况和   doctype只需要为编写的文档启用标准模式   使用HTML语法。浏览器已经为此做了这个。

     

支持无法生成首选项的旧式标记生成器   简短的doctype,HTML语法中允许使用doctype。

     

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

     

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>

语法上有一些细微差别。