DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制、粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果,开始以为书写顺序不对,于是调整书写顺序,还是不行,最后找到了我认为最没什么用处的第一行才发现真正起作用的竟然是

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

晕,这还真重要.网上搜搜,查出下面的资料.

<!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">

 手机上用的是:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">

到底有什么用?

我只是记得这是用来声明文档类型的,具体的含义和作用忘记了。百度一下之后,分享出来。

XHTML 是 HTML 的改造和升级版。W3C 的 XHTML 1.0 规范在这里:

http://www.w3.org/TR/xhtml1/
W3C 目前正在制定 XHTML 2.0 规范:
http://www.w3.org/TR/xhtml2/

  XHTML 1.0 所做的工作就是将 HTML 4.0(最后的 HTML 版本)按照符合 XML 标准的要求加以改造。XHTML 1.0 并未定义任何新的元素和属性,而是沿用了所有 HTML 4.0 的元素和属性,因此 XHTML 1.0 与 HTML 4.0 是完全兼容的。传统的 Web 开发者/设计师非常容易掌握 XHTML 1.0。目前所有主流的桌面浏览器都已经可以很好地支持 XHTML 1.0,甚至很多移动智能设备(智能手机、PDA 等等)中的浏览器也已经可以很好地支持 XHTML 1.0。 XHTML 2.0 对于 XHTML 1.0 做了很大的改进,很多地方甚至与 XHTML 1.0 不兼容。由于目前主流的浏览器仅仅只能支持 XHTML 1.0,因此我们这里的讨论将限制在 XHTML 1.0 的范围内。

--以上都是废话!

既然 XHTML 1.0 对于 HTML 4.0 做了改造,那么必然对于页面提出了一些新的要求,这些新的要求包括

1. 必须在页面最顶部加上 DOCTYPE 的声明。如果不加这个声明,浏览器就会按照 HTML 4.0 的方式来处理,而不把页面当作 XHTML 处理。

HTML is the publishing language of the World Wide Web. 
html 是当前互联网被普遍采用的页面描述语言,被浏览器解释并形成最终网页页面。

xhtml与html相似,但是其文档是两够的xml文档,因此更为整齐、标准化、易于处理和交流、易于扩展。

XHTML 1.0 的 DOCTYPE 声明有 3 种,分别对应 3 种不同的 DTD。

Transitional —— 最宽松的 DTD,可以使用带表现含义的标签和属性。

写法为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Strict —— 最严格的 DTD,不允许使用任何带表现含义的标签和属性。

写法为:
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Frameset —— 用于使用了 frame 的页面(即,包含有 <frameset> 标记)。

写法为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

  

  在刚刚开始向 XHTML 迁移的过程中,可以使用 Transitional 的 DTD,当习惯了更好的页面开发方法后,可以转向使用 Strict 的 DTD。只有在需要用到 frame 的页面,才应该使用 Frameset 的 DTD。

2. 紧跟在上面 DOCTYPE 声明之后的是一个 XHTML 名字空间(namespace)声明,放在增强的 <html> 元素中,写法为:

<html xmlns="http://www.w3.org/1999/xhtml">

3. 由于 XHTML 1.0 页面就是合法的 XML 文档,而 XML 对于标签和属性都是区分大小写的,为了简单起见,XHTML 1.0 页面中所有的标签和属性都必须使用小写。

一些免费的工具,例如 HTML Tidy(http://tidy.sourceforge.net/),可以帮助你把标签和属性自动转换为小写。
 

4. 通过在 <head> 元素中添加一个 <meta> 元素来声明页面中使用的语言。

<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

5. 在 XHTML 中,所有的属性都必须要加上引号。

一些免费的工具,例如 HTML Tidy(http://tidy.sourceforge.net/),可以帮助你自动为所有的属性加上引号。
 

6. 在 XHTML 中,所有的属性都必须有值。

不能像在 HTML 4.0 中那样写:
<input type="checkbox" name="shirt" value="medium" checked>
而要写成:
<input type="checkbox" name="shirt" value="medium" checked="checked" />

7. 在 XHTML 中,所有的标签都必须关闭。

关闭标签有两种方式,包含内容的标签使用结束标签关闭,空标签在后面加上空格和“/”。例如:
<p>This is acceptable HTML and it is also valid XHTML.</p>
<img src="logo.gif" />

8. 不要在注释内容中使用“--” 。

“--” 只能使用在 XHTML 注释的开头和结束,不能出现在注释的内容中。下面的写法都是不允许的:
<!--Invalid -- and so is the classic "separator" below. -->
<!------------------------------------>

9. 把所有的特殊符号编码。

< = &amp;lt;
> = &amp;gt;
& = &amp;amp;

W3C 的 XHTML/CSS/DOM 这 3 个规范构成了一个完整而严密的体系,我称这 3 个规范为 Web 世界中“三位一体神的化身”。这 3 个规范分别代表了 Web 页面的 structure(结构)、presentation(表现)和 behaviour(行为) 3 部分。将 Web 页面严格分为这 3 层,并且尽量使每一层的内容相互独立,有助于提高页面的可重用性和模块化程度,大幅降低页面制作、维护和修改的成本。为了达到上述分层的目标,编写的 XHTML 中应该只包含与 structure 相关的标记(元素和属性)。因此应该习惯于使用 Strict 类型的 DTD,尽快摒弃那些带有表现含意的标记(这些标记在 HTML 4.0 规范中被标识为 Deprecated 即“不提倡”,并且会在 XHTML 以后的版本中被完全舍弃);尽快摒弃基于 table 做布局的老方法,采用完全的 CSS 布局。

附:推荐的 XHTML 相关书籍。

  1. 《HTML 与 XHTML 权威指南》,Chuck Musciano & Bill Kennedy 著。
  2. 《XHTML教程》,Chelsea Valentine & Chris Minnick 著。
  3. 《网站重构》,Jeffrey Zeldman 著。

那么为什么要遵循规范?这些规范能给我们带来什么样的好处?

标准重构是个新名词,对于大部分企业来讲,还不知道是什么含义,我们这里无须把这个名词解释的多么的深奥,为什么要用标准重构呢?采用网站标准有什么好处?

对网站浏览者的好处:

文件下载与页面显示速度更快; 
内容能被更多的用户所访问(包括失明、视弱、色盲等残障人士); 
内容能被更广泛的设备所访问(包括屏幕阅读机、手持设备、搜索机器人、打印机、电冰箱等等) ;
用户能够通过样式选择定制自己的表现界面 ;
所有页面都能提供适于打印的版本 ;

对网站所有者的好处:

更少的代码和组件,容易维护,带宽要求降低(代码更简洁),成本降低。举个例子:当 ESPN.com 使用 CSS改版后,每天节约超过两兆字节(terabytes)的带宽。 
更容易被搜寻引擎搜索到 ;
改版方便,不需要变动页面内容 ;
提供打印版本而不需要复制内容 ;
提高网站易用性。在美国,有严格的法律条款(Section 508)来约束政府网站必须达到一定的易用性,其他国家也有类似的要求

来自:http://jdiqssu.blog.163.com/blog/static/666413942009916822833/

DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义的更多相关文章

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    关于网页中第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">的含义

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/x ...

  3. 2018.5.14 XML文档类型定义----DTD

    1.DTD概述 一个完全意义上的XML文件不仅仅是Well-fromed(格式良好的),而且还应该是使用了一些自定义的标记ValidatingXMl(有效的)文档也就是说他必须遵守文档类型的定义中已声 ...

  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">详解

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"的作用

    为页面添加正确的DOCTYPE 很多设计师和开发者都不知道什么是DOCTYPE,DOCTYPE有什么用.DOCTYPE是document type的简写.主要用来说明你用的XHTML或者HTML是什么 ...

  7. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

  8. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  9. 有效的XML: DTD(文档类型定义)介绍(转)

    文档类型定义和命名空间 有效(Valid)的XML文档: 首先,XML文档是个格式正规的(Well-formed)XML文档:(见格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节). ...

随机推荐

  1. [算法练习] UVA 10420 - List of Conquests?

    UVA Online Judge 题目10420 - List of Conquests 问题描述: 题目很简单,给出一个出席宴会的人员列表,包括国籍和姓名(姓名完全没用).统计每个国家有多少人参加, ...

  2. img与父元素的间隙解决

    近来在做H5页面时,突然发现一个问题,使用一个div包裹一个img,在手机预览时,发现图片与div之间有间隙. 当时第一反应就是,是不是间距没有设置为0,于是预览了下代码: .active img { ...

  3. SAX - Hello World

    SAX 是一种事件驱动的 XML 数据处理模型.对于 DOM 模型,解析 XML 文档时,需要将所有内容载入内容.相比 DOM 模型,SAX 模型更为高效,它一边扫描一边解析 XML 文档.但与 DO ...

  4. SAX - DefaultHandler

    org.xml.sax.helpers.DefaultHandler 实现了 org.xml.sax.EntityResolver.org.xml.sax.DTDHandler.org.xml.sax ...

  5. SQL Server内存数据写入磁盘方法比较

    众所周知,SQLServer增删改数据最先都是在内存中进行的,这可以大大加快数据操作的速度: 当内存中的数据被修改了,而磁盘中的数据还没有被修改时,就产生了所谓的“脏页”,SQLServer是如何同步 ...

  6. 合理使用mysql中的load data infile导入数据

    基本语法: load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]into table tbl_name ...

  7. OC4_实例变量的作用域

    // // Dog.h // OC4_实例变量的作用域 // // Created by zhangxueming on 15/6/16. // Copyright (c) 2015年 zhangxu ...

  8. union 中可以存储的是不带构造函数的类对象

    union 中可以存储的是不带构造函数的类对象 否则不符合逻辑 为什么不符合逻辑?

  9. mysql查询区分大小写与自定义排序

    mysql查询区分大小写: SELECT id,developer FROM products WHERE developer != '' and developer = binary('LYNN') ...

  10. 【Winform】 无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”。

    问题:将dotnet framework 4.0 切换到2.0时,编译没有问题,在运行时出现如下错误:System.InvalidCastException: 无法将类型为“System.Window ...