关于网页中第一行的DOCTYPE申明

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"关于网页中第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">代码html

用dw设计网页时,代码最前面总要出现一个下面的东东,web

<!doctype html public "-/w3c/dtd html 4.01 transitional/en" "http://www.w3.org/tr/html4/loose.dtd">浏览器

这个是dw自动在网页文件页增长了dtd信息(DOCTYPE声明),能够删。删除后,浏览器会使用的默认dtd。app

不少设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是document type的简写。主要用来讲明你用的XHTML或者HTML是什么版本。浏览器根据你DOCTYPE定义的DTD(文档类型定义)来解释页面代码。因此,若是你不注意设置了错误的DOCTYPE,结果可能会令页面出现错误。框架

doctype的做用ide

doctype声明指出阅读程序应该用什么规则集来解释文档中的标记。在web文档的状况下,“阅读程序”一般是浏览器或者校验器这样的一个程序,“规则”则是w3c所发布的一个文档类型定义(dtd)中包含的规则。svg

每一个dtd都包括一系列标记、attributes和properties,它们用于标记web文档的内容;此外还包括一些规则,它们规定了哪些标记能出如今其余哪些标记中。每一个web建议标准(好比html 4 frameset和xhtml 1.0 transitional)都有本身的dtd。网站

假如文档中的标记不遵循doctype声明所指定的dtd,这个文档除了不能经过代码校验以外,还有可能没法在浏览器中正确显示。对于标记不一致的问题,浏览器相较于校验器来讲更宽容。可是,不正确的doctype声明常常致使网页不正确显示,或者致使它们根本不能显示。设计

选择正确的doctypeorm

为了得到正确的doctype声明,关键就是让dtd与文档所遵循的标准对应。例如,假定文档遵循的是xhtml 1.0 strict标准,文档的doctype声明就应该引用相应的dtd。另外一方面,若是doctype声明指定的是xhtml dtd,但文档包含的是旧式风格的html标记,就是不恰当的;相似地,若是doctype声明指定的是html dtd,但文档包含的是xhtml 1.0 strict标记,一样是不恰当的。

有的时候,也能够根本不使用一个doctype声明。若是没有指定有效的doctype声明,大多数浏览器都会使用一个内建的默认dtd。在这种状况下,浏览器会用内建的dtd来试着显示你所指定的标记。对于一些临时性的、匆忙拼凑的文档(这种文档有许多),你确实能够考虑省略doctype声明,并接受浏览器的默认显示。

然而,因为大多数web文档都须要遵循由w3c发布的某个国际公认的web标准,因此那些文档一般都要包含如下标准doctype声明之一:

html 2(数字2表明版本号):

<!doctype html public "-/ietf/dtd html 2.0/en">

html 3.2:

<!doctype html public "-/w3c/dtd html 3.2 final/en">

——————————————————————————————

html 4.01 strict:

<!doctype html public "-/w3c/dtd html 4.01/en"

"http://www.w3.org/tr/html4/strict.dtd">

html 4.01 transitional:

<!doctype html public "-/w3c/dtd html 4.01 transitional/en"

"http://www.w3.org/tr/html4/loose.dtd">

html 4.01 frameset:

<!doctype html public "-/w3c/dtd html 4.01 frameset/en"

"http://www.w3.org/tr/html4/frameset.dtd">

——————————————————————————————

xhtml 1.0 strict:

<!doctype html public "-/w3c/dtd xhtml 1.0 strict/en"

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

xhtml 1.0 transitional:

<!doctype html public "-/w3c/dtd xhtml 1.0 transitional/en"

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

xhtml 1.0 frameset:

<!doctype html public "-/w3c/dtd xhtml 1.0 frameset/en"

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

——————————————————————————————

xhtml 1.1:

<!doctype html public "-/w3c/dtd xhtml 1.1/en"

"http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">

xhtml 1.1 plus mathml plus svg:

<!doctype html public

"-/w3c/dtd xhtml 1.1 plus mathml 2.0 plus svg 1.1/en"

"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

(说明一下,XHTML 1就是HTML 4.01的XML化,是一种不向前兼容的格式,将来的XHTML 2也不会向后兼容。)

你们能够仔细看看上边三句代码的不一样之处,他们表明了三种不一样的XHTML文档类型。

Transitional类型:是指一种过渡类型,使用这种类型浏览器对XHTML的解析比较宽松,容许使用HTML4.01中的标签,但必须符合XHTML的语法。这种是如今通用的方法,用dreamweaver建立网页时默认就是这种类型。

Strict类型:严格类型,使用时浏览器将相对严格,不容许使用任何表现形式的标识和属性,如在元素中直接使用bgcolor背景色属性等。

Frameset类型:框架页类型,若是网页使用了框架结构,就有必要使用这样的文档声明。

那么应该选择哪一个?我相信不少人,尤为是接触了网页标准(Web Standards)的人,会坚决果断地选择XHTML 1.0 Transitional。这是一股趋势,这是一股潮流,暗示着,嘿嘿,伙计,看见没,咱们的网站使用最新技术构建了……

这里有一个颇有趣的统计,使用XHTML 1.0 Strict和Transitional的占绝大多数,且对半开。那么,这个世界就那么美好了吗?

咱们先来看看W3C的建议,总结出下表:

Media types summary for serving XHTML documents Media Type text/html application/xhtml+xml application/xml text/xml HTML 4 SHOULD MUST NOT MUST NOT MUST NOT XHTML 1.0 (HTML Compatible) MAY SHOULD MAY MAY XHTML 1.0 (other) SHOULD NOT SHOULD MAY MAY XHTML Basic SHOULD NOT SHOULD MAY MAY XHTML 1.1 SHOULD NOT SHOULD MAY MAY XHTML + MathML SHOULD NOT SHOULD MAY MAY

前面说到,XHTML 1其实是HTML 4.01的XML化。即时看起来,写起来,用起来都很像,但这是两种不一样的规范。XHTML的MIME-TYPE应该是application/xhtml+xml,而HTML应该是text/html。二者有何不一样,简单的说,application/xhtml+xml属于XML,因此行为遵循一切XML规范,最重要的是良构(Well-Formed)这一点。

除了XHTML 1.0 Transitional和Frameset,咱们能够看到,XHTML 1.0 Strict和1.1都SHOULD使用application/xhtml+xml。然而,咱们能够看到,前面提到的那个统计,并无多少个网站使用application/xhtml+xml,能够说他们是扯虎皮作大旗而已,它们非良构的内容依然能够经过支持application/xhtml+xml的浏览器(如Firefox, Opera)来展示,由于它们本质上仍是text/html,而text/html并不须要良构。

能够看到,XHTML 1.0 Transitional的地位很暧昧,它的Transitional 使得其MAY text/html,SHOULD application/xhtml+xml。也就是说,怎么处理,实际上交由客户端(client side)来决定。在我所见到的桌面浏览器中,它们都坚决果断地选择text/html,这跟它们一向的宽容风格保持一致。

可是很不幸的是,就有这么一个浏览器,Opera for mobile,从8.0开始,凡是声明了XHTML的Doctype,它都一概以application/xhtml+xml来处理。因此,你那不良构的网站,只好在它上面显示出错信息。

因此,推荐使用XHTML 1.0 Transitional,是鼓励你从HTML向XHTML转化,且保持过渡性。但过渡性并不表明你就能够不重视XML的良构。

实际上,咱们并无可以发现XHTML 1.0 Transitional跟HTML 4.01 Strict有何不一样,除了一个target,一些过期的表现标签和属性(attribute)。只要咱们在HTML中不写做那些XHTML中不存在的标签和属性,咱们实际上就是在写XHTML 1.0 Transitional,对咱们并无什么影响,什么XML的优越性彻底不能在XHTML 1.0 Transitional中体现出来,因此与其让Opera for mobile(或许还有其余变数)不能工做,还不如选择HTML 4.01 Strict。固然,若是您能保证你的XHTML 1.0 Transitional 百分百良构,使用它是一个更佳的选择。而后,请你告诉我,世界上,使用了XHTML 1.0 Transitional的网站,非首页的其余页面能有多少个是可以经过验证的?

结论是,若是你没有勇气保证整个站点百分百良构,请使用HTML 4.01 Strict;若是您有勇气保证整个站点百分百良构,您能够直接选择XHTML 1.1。

相关文章
相关标签/搜索