用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标准,全称为World Wide Web Consortium标准,是由万维网联盟制定的一系列规范和指导原则,旨在确保网页开发的质量与兼容性。它规定了一套严格的规则,用于指导网页开发者如何正确地编写HTML、CSS以及其他相关...
当页面顶部包含正确的DOCTYPE声明时,所有现代浏览器都将采用标准W3C盒子模型。 #### 五、总结 - **选择**:推荐使用标准W3C盒子模型,因为它更符合现代Web开发的最佳实践。 - **兼容性**:为了保证跨浏览器的一致...
本文将深入探讨如何使用JavaScript(JS)来创建一个符合W3C标准的对联广告,这是一种常见的网页广告形式,通常出现在页面两侧。 首先,我们需要理解对联广告的基本结构。对联广告通常由两个等宽的矩形广告位组成,...
该代码段实现了一个简单的漂浮广告功能,并且声明了其遵循XHTML 1.0过渡型DTD标准,这符合W3C的规范要求。 ##### 1. 文档类型声明 ```html <!DOCTYPE ...
2. **HTML5文档类型**:Bootstrap要求使用HTML5的文档类型声明(Doctype),这样能保证页面中使用的新HTML5元素和CSS属性能够正确地工作。文档类型声明应该放在页面的最顶部,如下所示: ```html <!DOCTYPE html> ...
--这是一行很神奇的注释,去掉的话在IE下显示会有问题,不知道为什么 -->”以及非标准的DOCTYPE声明可能共同作用于IE浏览器,以确保页面能够以一种较为正常的方式渲染。虽然具体的技术细节尚不清楚,但从实际应用的...
为了避免这种情况,开发者通常会在文档开头使用DOCTYPE声明,以指定浏览器应使用哪种标准进行解析。例如,XHTML 1.0 Transitional的DOCTYPE声明如下: ```html <!DOCTYPE ...
- W3C 关于 DOCTYPE 的指南。 - **第7天:识别你的语言** - **谁会从中受益?** - 使用屏幕阅读器的多语种用户。 - **如何做到?** - 在 HTML 文档的 `<html>` 标签中添加 `lang` 属性来指定页面的主要语言,如...
为确保跨浏览器的兼容性和一致性,开发者通常会在HTML文档的顶部添加DOCTYPE声明,如`<!DOCTYPE html>`,这会指示浏览器以标准模式渲染页面,采用W3C的盒子模型。通过这样做,开发者可以更准确地预测元素的尺寸和...
- **重要性**:正确的DOCTYPE声明是确保文档能被浏览器正确解析的基础。 - **XHTML 1.0提供的三种DTD**: - **过渡型 (Transitional)**:适用于包含HTML 4.01兼容标签的文档。允许使用表现层标签和属性。 - **DTD...
- W3C标准包括结构化标准语言(XHTML、XML)、表现标准语言(CSS)和行为标准(DOM、ECMAScript)。 - **网页编辑工具**: - 记事本: 最简单的HTML编辑工具。 - Dreamweaver: Adobe出品的专业网页设计工具。 - ...
在讨论JSP页面中图片居中的问题时,首先需要掌握一些基础的CSS布局知识,包括display属性的使用、垂直居中的方法、margin属性的自动居中技巧以及W3C标准对页面渲染的影响。 当涉及到在div中居中一张图片时,CSS是...
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> 网页标题 <!-- 页面内容 --> ``...
**XHTML 完全参考手册:W3C官方权威指南** XHTML,全称为Extensible HyperText Markup Language,是HTML(超文本标记语言)的一个扩展版本,它结合了HTML的易用性和XML的结构化特性。XHTML 1.0在2000年由万维网联盟...
为页面添加DOCTYPE 由于不同浏览器对标签,样式表的解释不尽相同,所以需要为html文件定义一个标准的文档类型,使不同浏览器尽量按照一个统一的html标准来解析渲染页面。 !DOCTYPE 声明指定文档遵从的 DTD,如: <...
- **标准模式**:使用正确的DOCTYPE可以使浏览器工作在标准模式下,遵循W3C标准。 **示例DOCTYPE声明:** 1. **HTML 4.01 Transitional** ```html <!DOCTYPE ...
5. 改版时,为区分不同版本,可在命名前添加`v2`,其中`2`代表改版次数,适用于图片、CSS和页面。 二、HTML规范: 1. 页面完整性:每个HTML文档应该以DOCTYPE声明开始,以确保浏览器按照特定的HTML或XHTML标准解析...
标准模式遵循 W3C 标准,混杂模式则是向后兼容旧版浏览器。 - C 项错误。如果 DOCTYPE 不存在或格式不正确,通常会导致浏览器进入混杂模式。 - D 项正确。浏览器根据 DOCTYPE 的存在与否及类型选择渲染模式。 ###...