`

为页面添加正确的doctype声明-W3C标准

阅读更多

 

 

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

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

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

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

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

doctype的作用

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

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

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

选择正确的doctype

为了获得正确的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。

分享到:
评论

相关推荐

    W3C标准的个人理解以及常见的注意内容

    W3C标准,全称为World Wide Web Consortium标准,是由万维网联盟制定的一系列规范和指导原则,旨在确保网页开发的质量与兼容性。它规定了一套严格的规则,用于指导网页开发者如何正确地编写HTML、CSS以及其他相关...

    IE盒子模型和标准W3C盒子模型_资料收集

    当页面顶部包含正确的DOCTYPE声明时,所有现代浏览器都将采用标准W3C盒子模型。 #### 五、总结 - **选择**:推荐使用标准W3C盒子模型,因为它更符合现代Web开发的最佳实践。 - **兼容性**:为了保证跨浏览器的一致...

    符合W3C标准的对联广告JS

    本文将深入探讨如何使用JavaScript(JS)来创建一个符合W3C标准的对联广告,这是一种常见的网页广告形式,通常出现在页面两侧。 首先,我们需要理解对联广告的基本结构。对联广告通常由两个等宽的矩形广告位组成,...

    符合W3C的漂浮广告代码.txt

    该代码段实现了一个简单的漂浮广告功能,并且声明了其遵循XHTML 1.0过渡型DTD标准,这符合W3C的规范要求。 ##### 1. 文档类型声明 ```html &lt;!DOCTYPE ...

    w3cschool菜鸟教程--bootstrap教程

    2. **HTML5文档类型**:Bootstrap要求使用HTML5的文档类型声明(Doctype),这样能保证页面中使用的新HTML5元素和CSS属性能够正确地工作。文档类型声明应该放在页面的最顶部,如下所示: ```html &lt;!DOCTYPE html&gt; ...

    去掉这段代码的话在IE下显示会有问题

    --这是一行很神奇的注释,去掉的话在IE下显示会有问题,不知道为什么 --&gt;”以及非标准的DOCTYPE声明可能共同作用于IE浏览器,以确保页面能够以一种较为正常的方式渲染。虽然具体的技术细节尚不清楚,但从实际应用的...

    为什么使用DOCTYPE HTML

    为了避免这种情况,开发者通常会在文档开头使用DOCTYPE声明,以指定浏览器应使用哪种标准进行解析。例如,XHTML 1.0 Transitional的DOCTYPE声明如下: ```html &lt;!DOCTYPE ...

    diveintoaccessibility.pdf

    - W3C 关于 DOCTYPE 的指南。 - **第7天:识别你的语言** - **谁会从中受益?** - 使用屏幕阅读器的多语种用户。 - **如何做到?** - 在 HTML 文档的 `&lt;html&gt;` 标签中添加 `lang` 属性来指定页面的主要语言,如...

    IE盒子模型和标准W3C盒子模型

    为确保跨浏览器的兼容性和一致性,开发者通常会在HTML文档的顶部添加DOCTYPE声明,如`&lt;!DOCTYPE html&gt;`,这会指示浏览器以标准模式渲染页面,采用W3C的盒子模型。通过这样做,开发者可以更准确地预测元素的尺寸和...

    DIV教程

    - **重要性**:正确的DOCTYPE声明是确保文档能被浏览器正确解析的基础。 - **XHTML 1.0提供的三种DTD**: - **过渡型 (Transitional)**:适用于包含HTML 4.01兼容标签的文档。允许使用表现层标签和属性。 - **DTD...

    HTML5+CSS3开发商业站点Chapter1.pptx

    - W3C标准包括结构化标准语言(XHTML、XML)、表现标准语言(CSS)和行为标准(DOM、ECMAScript)。 - **网页编辑工具**: - 记事本: 最简单的HTML编辑工具。 - Dreamweaver: Adobe出品的专业网页设计工具。 - ...

    Jsp中如何让图片在div中居中

    在讨论JSP页面中图片居中的问题时,首先需要掌握一些基础的CSS布局知识,包括display属性的使用、垂直居中的方法、margin属性的自动居中技巧以及W3C标准对页面渲染的影响。 当涉及到在div中居中一张图片时,CSS是...

    div+css一声明[借鉴].pdf

    DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 网页标题 &lt;!-- 页面内容 --&gt; ``...

    Xhtml完全参考手册 W3C官方权威手册

    **XHTML 完全参考手册:W3C官方权威指南** XHTML,全称为Extensible HyperText Markup Language,是HTML(超文本标记语言)的一个扩展版本,它结合了HTML的易用性和XML的结构化特性。XHTML 1.0在2000年由万维网联盟...

    跨浏览器开发经验总结(一) HTML标记

    为页面添加DOCTYPE 由于不同浏览器对标签,样式表的解释不尽相同,所以需要为html文件定义一个标准的文档类型,使不同浏览器尽量按照一个统一的html标准来解析渲染页面。 !DOCTYPE 声明指定文档遵从的 DTD,如: &lt;...

    IE6兼容笔记

    - **标准模式**:使用正确的DOCTYPE可以使浏览器工作在标准模式下,遵循W3C标准。 **示例DOCTYPE声明:** 1. **HTML 4.01 Transitional** ```html &lt;!DOCTYPE ...

    web(html+css)03-06标准.pdf

    5. 改版时,为区分不同版本,可在命名前添加`v2`,其中`2`代表改版次数,适用于图片、CSS和页面。 二、HTML规范: 1. 页面完整性:每个HTML文档应该以DOCTYPE声明开始,以确保浏览器按照特定的HTML或XHTML标准解析...

    Web前端开发经典面试题(附参考答案)

    标准模式遵循 W3C 标准,混杂模式则是向后兼容旧版浏览器。 - C 项错误。如果 DOCTYPE 不存在或格式不正确,通常会导致浏览器进入混杂模式。 - D 项正确。浏览器根据 DOCTYPE 的存在与否及类型选择渲染模式。 ###...

Global site tag (gtag.js) - Google Analytics