首页 > 代码库 > Doctype以及xhtml、html的区别

Doctype以及xhtml、html的区别

DOCTYPE是Document Type(文档类型)的简写,简单来说就是用来告知浏览器的解析器用什么文档标准去解析这个文档。

notice:它必须放在文档最顶部,所有代码和标识智商

  • 它的作用:

  首先doctype声明指出浏览器应该用什么规则集来解释文档中的标记。其中的规则就是W3C所发布的一个文档类型定义(DTD)中包含的规则。每一个DTD都包含一系列标记、attributes、properties,它们用于标记Web文档的内容;此外还包括一些规则,它们规定了哪些标记能出现哪些其他标记中。假如文档中的标记不遵从doctype声明所指定的DTD,这个文档除了不能通过代码校验外,还有可能无法在浏览器中正确显示。  

  如果文档遵循了什么标准,那么对于文档的doctype就应该对应引用相应的DTD。

  • 选择什么样的DOCTYPE

XHTML 1.0中有3种DTD(文档类型定义)声明可以选择:过渡的(Transitional)、严格的(Strict)和框架的(Frameset)。

HTML4.01中也有3种DTD(文档类型定义)声明可以选择:过渡的(Transitional)、严格的(Strict)和框架的(Frameset)。

HTML 5声明很简单<!DOCTYPE html>,现在主流浏览器都用这个声明了,因为 HTML 5 不基于 SGML(标准通用标记语言),因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行)而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

1.过渡的

一种要求不很严格的DTD,允许在页面中使用HTML4.01的标识(符合xhtml语法标准)。过渡的DTD的写法如下:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

2.严格的

一种要求严格的DTD,不允许使用任何表现层的标识和属性,例如等。严格的DTD的写法如下:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

3.框架的

一种专门针对框架页面所使用的DTD,当页面中含有框架元素时,就要采用这种DTD。框架的DTD的写法如下:

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

  • 解释一下为什么HTML5不基于SGML:

  SGML 是一种很强大但很复杂的标记语言,HTML、XML 是从中衍生出来的。但是到现如今,W3C 在制定 HTML5 标准时,希望摆脱 SGML 的一些无用的功能和声明,并延续 HTML4 的风格,而非严格的 XHTML 的风格。所以HTML5不基于SGML。

  其实这是一个历史遗留问题,HTML经历了HTML1.0--HTML2.0--HTMl3.2--HTML4.0--HTML4.01,但后来W3C提出了XHTML--XHTML1.1--XHTMl2.0(?),XHTML(可扩展超文本标记语言),它是基于XML的置标语言,语法上要求很严谨,更面向机器。因为W3C无视web设计人员的需求,遭到了一致的反对。所以后来Web超文本应用技术工作组WHATWG就提出了HTML5的草案,W3C面对这种局势,在2008年,使XHTML2.0与之合并成为HTML5正式版。HTML5由此而来。

 

Doctype以及xhtml、html的区别