(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 是HTML 向XML 过渡的标识语言,它需要符合XML 文档规则,因此也需要定义名字空间。又因为XHTML1.0 不能自定义标识,所以它的名字空间都相同,就是\"http://www.w3.org/1999/xhtml\" 。如果你还不太理解也不要紧,目前阶段我们只要照抄代码就可以了。
后面的lang=\"gb2312\", 指定你的文档用简体中文。
?