当前位置: 代码迷 >> HTML/CSS >> 准确使用<DOCTYPE html PUBLIC
  详细解决方案

准确使用<DOCTYPE html PUBLIC

热度:1089   发布时间:2012-11-01 11:11:32.0
正确使用<!DOCTYPE html PUBLIC

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

?
(2)严格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">?


(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">?

?

?

?

DOCTYPE document type( 文档类型) 的简写,用来说明你用的XHTML 或者HTML 是什么版本。

其中的DTD( 例如上例中的xhtml1-transitional.dtd) 叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD 来解释你页面的标识,并展现出来。

要建立符合标准的网页,DOCTYPE 声明是必不可少的关键组成部分;除非你的XHTML 确定了一个正确的DOCTYPE ,否则你的标识和CSS 都不会生效。
XHTML 1.0
提供了三种DTD 声明可供选择:

? 过渡的(Transitional): 要求非常宽松的DTD ,它允许你继续使用HTML4.01 的标识( 但是要符合xhtml 的写法) 。完整代码如下:

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

? 严格的(Strict): 要求严格的DTD ,你不能使用任何表现层的标识和属性,例如<br> 。完整代码如下:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
?
框架的(Frameset): 专门针对框架页面设计使用的DTD ,如果你的页面中包含有框架,需要采用这种DTD 。完整代码如下:

? <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">
我们选择什么样的DOCTYPE

理想情况当然是严格的DTD ,但对于我们大多数刚接触web 标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional) 是目前理想选择!。因为这种DTD 还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C 的代码校验。
注:上面说的\" 表现层的标识、属性\" 是指那些纯粹用来控制表现的tag ,例如用于排版的表格、背景颜色标识等。在XHTML 中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。

打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4 中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。

补充

DOCTYPE 声明必须放在每一个XHTML 文档最顶部,在所有代码和标识之上。
DOCTYPE
声明好以后,接下来的代码是:

? CODE:[Copy to clipboard]<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"gb2312\">

通常我们HTML4.0 的代码只是<html> ,这里的\"xmlns\" 是什么呢?

这个\"xmlns\"XHTML namespace 的缩写,叫做\" 名字空间\" 声明。名字空间是什么作用呢?
由于xml 允许你自己定义自己的标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。当文件交换或者共享的时候就容易产生错误。为了避免这种错误发生,XML 采用名字空间声明,允许你通过一个网址指向来识别你的标识。例如:

闲看网和论坛网都定义了一个<book> 标识,如果闲看网名字空间是\"http://www.xiankan.com\" ,论坛网名字空间是\"http://www.Yaobbs.com\" ,那么当两个文档交换数据时,也不会混淆<book> 标识,因为它属于不同的名字空间。

更通俗的解释是:名字空间就是给文档做一个标记,告诉别人,这个文档是属于谁的。只不过这个\"\" 用了一个网址来代替。

XHTML HTMLXML 过渡的标识语言,它需要符合XML 文档规则,因此也需要定义名字空间。又因为XHTML1.0 不能自定义标识,所以它的名字空间都相同,就是\"http://www.w3.org/1999/xhtml\" 。如果你还不太理解也不要紧,目前阶段我们只要照抄代码就可以了。

后面的lang=\"gb2312\", 指定你的文档用简体中文。

?

  相关解决方案