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的轮廓。
<TABLE cellSpacing="0" frame="void" width="560" border="1" style="WIDTH: 560px; HEIGHT: 582px">
<TBODY>
<TR>
<TH vAlign="top" align="left" width="35%">模块名</TH>
<TH vAlign="top" align="left" width="65%">描述</TH>
</TR>
<TR>
<TD vAlign="top">Applet Module</TD>
<TD vAlign="top">* applet元素.</TD>
</TR>
<TR>
<TD vAlign="top">Base Module</TD>
<TD vAlign="top">定义基本元素.</TD>
</TR>
<TR>
<TD vAlign="top">Basic Forms Module</TD>
<TD vAlign="top">定义基本的表单元素</TD>
</TR>
<TR>
<TD vAlign="top">Basic Tables Module</TD>
<TD vAlign="top">定义基本的表格元素</TD>
</TR>
<TR>
<TD vAlign="top">Bi-directional Text Module</TD>
<TD vAlign="top">定义 bdo 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Client Image Map Module</TD>
<TD vAlign="top">定义浏览器的 image map 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Edit Module</TD>
<TD vAlign="top">Defines the editing elements del and ins.</TD>
</TR>
<TR>
<TD vAlign="top">Forms Module</TD>
<TD vAlign="top">Defines all elements used in forms.</TD>
</TR>
<TR>
<TD vAlign="top">Frames Module</TD>
<TD vAlign="top">定义框架集元素</TD>
</TR>
<TR>
<TD vAlign="top">Hypertext Module</TD>
<TD vAlign="top">定义 a 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Iframe Module</TD>
<TD vAlign="top">定义 iframe 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Image Module</TD>
<TD vAlign="top">定义 img 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Intrinsic Events Module</TD>
<TD vAlign="top">定义事件改变属性元素</TD>
</TR>
<TR>
<TD vAlign="top">Legacy Module</TD>
<TD vAlign="top">Defines deprecated* elements and attributes.</TD>
</TR>
<TR>
<TD vAlign="top">Link Module</TD>
<TD vAlign="top">定义link 元素.</TD>
</TR>
<TR>
<TD vAlign="top">List Module</TD>
<TD vAlign="top">定义 list 元素 ol, li, ul, dd, dt, dl.</TD>
</TR>
<TR>
<TD vAlign="top">Metainformation Module</TD>
<TD vAlign="top">定义 meta 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Name Identification Module</TD>
<TD vAlign="top">Defines the deprecated* name attribute.</TD>
</TR>
<TR>
<TD vAlign="top">Object Module</TD>
<TD vAlign="top">定义object 和param 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Presentation Module</TD>
<TD vAlign="top">定义表现元素如 b 和 i.</TD>
</TR>
<TR>
<TD vAlign="top">Scripting Module</TD>
<TD vAlign="top">定义 script and noscript 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Server Image Map Module</TD>
<TD vAlign="top">定义 server side image map 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Structure Module</TD>
<TD vAlign="top">定义结构 html, head, title and body.</TD>
</TR>
<TR>
<TD vAlign="top">Style Attribute Module</TD>
<TD vAlign="top">定义 style 属性.</TD>
</TR>
<TR>
<TD vAlign="top">Style Sheet Module</TD>
<TD vAlign="top">定义style 元素.</TD>
</TR>
<TR>
<TD vAlign="top">Tables Module</TD>
<TD vAlign="top">定义表内应用的元素.</TD>
</TR>
<TR>
<TD vAlign="top">Target Module</TD>
<TD vAlign="top">定义 target 属性.</TD>
</TR>
<TR>
<TD vAlign="top">Text Module</TD>
<TD vAlign="top">定义 text container 元素如: p and h1.</TD>
</TR>
</TBODY>
</TABLE>
*表示不赞成应用到XHTML中