这些DOCTYPE声明之间有什么区别?

Sma*_*ler 4 html doctype

这两个DOCTYPE声明之间有什么区别?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

使用这些方法的后果是什么,它们如何影响SEO?

Ric*_*ton 5

在HTML 4.01中,<!DOCTYPE>声明引用了文档类型定义(DTD)。这是因为HTML 4.01基于标准通用标记语言(SGML)。

DTD指定标记语言的规则,以便浏览器正确呈现内容。

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

这就是HTML5仅具有一种doctype的原因。那是您的示例中的第二个。

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

另一方面,HTML4.0.1具有三种文档类型

严格:此DTD包含所有HTML元素和属性,但不包括表达或不推荐使用的元素(如字体)。不允许使用框架集。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

Transitional:此DTD包含所有HTML元素和属性,包括表示性和不推荐使用的元素(如字体)。不允许使用框架集。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Run Code Online (Sandbox Code Playgroud)

框架集:此DTD等于HTML 4.01 Transitional,但允许使用框架集内容。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
Run Code Online (Sandbox Code Playgroud)

XHTML还具有三种doctype。

XHTML 1.0 Strict:此DTD包含所有HTML元素和属性,但不包括表达或不推荐使用的元素(如字体)。不允许使用框架集。标记还必须以格式正确的XML编写。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Run Code Online (Sandbox Code Playgroud)

XHTML 1.0 Transitional:此DTD包含所有HTML元素和属性,包括表示性和不推荐使用的元素(如字体)。不允许使用框架集。标记还必须以格式正确的XML编写。

这是您第一个示例中的一个

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

XHTML 1.0 Frameset:此DTD等同于XHTML 1.0 Transitional,但允许使用框架集内容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Run Code Online (Sandbox Code Playgroud)