本站原创内容,转载请注明出处网页教学网。
XHTML DTD定义文档的类型。
在XHTML中我们必须声明文档的类型,以便于浏览器知道你的文档是什么类型的,而且声明部分要加在文档的head之前。如:
<!DOCTYPE Doctype goes here>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title goes here</title>
</head><body>
Body text goes here
</body></html>
注:DOCTYPE声明不是 XHTML 文档的一部分,它也不是文档的一个元素,所以我们没必要加上结束标签。
注:XHTML属性都是在<html>标签里面。然而当我们在w3.org验证时,并不解释我们的文档有没有声明类型。这是因为"xmlns=http://www.w3.org/1999/xhtml"是一个固定的值,如果你没声明的话,它也会被自动的加到<html>标签前。
我们使用DOCTYPE时的基本机构:
<!DOCTYPE ...>
<html>
<head>
<title>... </title>
</head>
<body> ... </body>
</html>
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,你不能使用任何表现层的标识和属性,完整代码如下:
<!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">
如何转换现有的结构为XHTML
我们选择什么样的DOCTYPE?理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
我们从现在的HTML转换为XHTML注意以下几点:
一、在每个页面的首部都加上文档类型的说明。如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
当然可以选择其他类型的。
二、标记和name 要都用小写。
我们可以自己编写一个替换程序,将你的HTML文档中的所有的标记都换为小写字母,还有name属性也要变为小写。
三、所有的属性值都要用引号引起来。
四、单独的标签,如: <hr> , <br> and <img>,都要在后面加/来结束。在这里不建议使用诸如:<img>和</img>形式的方式,直接在其后面加/就可以了,如<br />。
五、我们打开W3C DTD 的官方网站:http://validator.w3.org/check/referer,验证时一般错误可能会出现在你的标签嵌套里。也可以用官方网站提供的转换工具tidy来实现转换:http://www.w3.org/People/Raggett/tidy/,我不建议大家直接来使用该工具来验证,因为我们毕竟是新学XHTML我们还是自己转换,这样我们可以熟悉XHTML啊,再者说我们还要学习tidy工具的使用,那样也是比较麻烦的。
六、我们直接打开下面的页面可以直接输入网址来验证我们的程序了:http://webjx.com/js/standard.htm
XHTML 的模块化
为什么要模块化设计XHTML呢?XHTML虽然简单,但是它的内容很多,包括了一个网络设计师需要的绝大多数功能。XHTML一方面内容繁多复杂,但是从另一个角度来看它却是非常简单的。为了将XHTML分割成小的模块,W3C已经建立起了小型的已经定义好了的一系列XHTML元素,他们独立的能被与其他XML标准合并成的大型的更复杂的程序的简单设备所使用。
通过XHTML模型,程序设计师能够做如下的事情:
1.选择那些能够被使用XHTML构建块标准的设备所支持的元素。
2.在遵循XHTML标准的同时使用XML可以对XHTML扩展。
3.简单化的XHTML可以应用于像掌上电脑、移动电话、电视和家用电器等设备。
4.通过加入心的XML功能(像声音、多媒体的)将XHTML延续到复杂程序的设计上。
5.像XHTML基本(XHTML对于移动设备的一个子集)那样来定义XHTML的轮廓。
模块名
描述
Applet Module
* applet元素.
Base Module
定义基本元素.
Basic Forms Module
定义基本的表单元素
Basic Tables Module
定义基本的表格元素
Bi-directional Text Module
定义 bdo 元素.
Client Image Map Module
定义浏览器的 image map 元素.
Edit Module
Defines the editing elements del and ins.
Forms Module
Defines all elements used in forms.
Frames Module
定义框架集元素
Hypertext Module
定义 a 元素.
Iframe Module
定义 iframe 元素.
Image Module
定义 img 元素.
Intrinsic Events Module
定义事件改变属性元素
Legacy Module
Defines deprecated* elements and attributes.
Link Module
定义link 元素.
List Module
定义 list 元素 ol, li, ul, dd, dt, dl.
Metainformation Module
定义 meta 元素.
Name Identification Module
Defines the deprecated* name attribute.
Object Module
定义object 和param 元素.
Presentation Module
定义表现元素如 b 和 i.
Scripting Module
定义 script and noscript 元素.
Server Image Map Module
定义 server side image map 元素.
Structure Module
定义结构 html, head, title and body.
Style Attribute Module
定义 style 属性.
Style Sheet Module
定义style 元素.
Tables Module
定义表内应用的元素.
Target Module
定义 target 属性.
Text Module
定义 text container 元素如: p and h1.
*表示不赞成应用到XHTML中
参考文献:
请参看阿杰的web标准建站教程。