1.5 了解XHTML
XHTML是当前HTML版本的发展和延伸。HTML语法要求比较松散,这样对网页编写者来说,比较方便,但对于机器来说,语言的语法越松散,处理起来就越困难。对于传统的计算机来说,还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。因此产生了由DTD定义规则,语法要求更加严格的XHTML。
1.5.1 什么是XHTML
XHTML是HTML的一种扩展,即Extensible HyperText Markup Language的缩写,表示XHTML是可扩展的超文本标记语言,与HTML相比,具有更加规范的书写标准、更好的跨平台能力。
HTML是一种基本的网页设计语言,XHTML是一种基于XML(可扩展标记语言)的标识语言,看起来与HTML非常相似,只有一些细节的重要区别。XHTML就是一种扮演着类似HTML角色的XML,所以,本质上说,XHTML是一种过渡技术,融合了部分XML的强大功能及大多数HTML的简单特性。
XHTML 1.0是在HTML4.0的基础上进行优化和改进的新语言,它与HTML最主要的不同之处在于:XHTML元素一定要正确地嵌套,XHTML元必须要关闭,标签名称必须使用小写字母,XHTML文档必须拥有根元素。
1.5.2 XHTML的文档结构
首先看一个最简单的XHTML页面实例,其代码如下。
<! 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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> 文档内容部分 </body> </html>
在这段代码中,包含了一个XHTML页面必须具有的页面结构,其具体结构包含下面几个部分。
● 文档类型声明部分
文档类型声明部分由<! DOCTYPE>元素定义,其对应的页面代码如下。
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
● <html>元素和名字空间
<html>元素是XHTML文档中必须使用的元素,所有的文档内容(包括文档头部内容和文档主体内容)都要包含在<html>元素之中,<html>元素的语法结构如下。
<html>文档内容部分</html>
起始标签<html>和结束标签</html>一起构成一个完整的<html>元素,其包含的内容要写在起始和结束标签之间。
名字空间是<html>元素的一个属性,写在<html>元素起始标签里面,其在页面中的相应代码如下。
<html xmlns="http://www.w3.org/1999/xhtml">
名字空间属性用xmlns来表示,用来定义识别页面标签的网址。
● 文档头部内容
网页头部元素<head>也是XHTML文档中必须使用的元素,其作用是定义页面头部的信息,其中可以包含标题元素、<meta>元素等,<head>元素的语法结构如下。
<head>头部内容部分</head>
<head>元素所包含的内容不会显示在浏览器的窗口中,但是部分内容会显示在浏览器的特定位置,例如标题栏等。
● 标题元素
页面标题元素<title>用来定义页面的标题,其语法结构如下。
<title>页面标题</title>
在预览和发布页面时,页面标题中包含的文本会显示在浏览器的标题栏中。
● 文档主体元素
主体元素<body>用来定义页面所要显示的内容,页面的信息主要通过页面主体来传递,在<body>元素中,可以包含所有页面元素,<body>元素的语法结构如下。
<body>页面主体</body>
定义了以上几个元素后,便构成了一个完整的XHTML页面。而且以上所有元素都是XHTML页面所必须具有的基本元素。
1.5.3 XHTML的代码规范
在使用XHTML语言进行网页制作时,必须要遵循一定的语法规范。具体内容可以分为以下几点。
● 标签和属性名称必须小写
在XHTML文档中,标签和标签的属性都必须小写。
正确的写法如下。
<body> <div id="box"> 这里是box中的内容
</div> </body>
错误的写法如下。
<BODY> <DIV ID="box" > 这里是box中的内容 </DIV> </BODY>
● 属性值必须加英文双引号
在XHTML文档中,属性的值需要用英文双引号“""”括起来。
正确的写法如下。
<body> <div id="box" > 这里是<span class="font01">box</span>中的内容 </div> </body>
错误的写法如下。
<body> < div id=box > 这里是<span class=font01>box</span>中的内容 </div> </body>
● 所有标签,包括空标签都需要关闭
在XHTML文档中,所有的标签都必须关闭,不允许没有关闭的标签存在于代码中。
正确的写法如下。
<p>文档内容</p> 文档内容</br> <img src="images/banner.jpg" />
错误的写法如下。
<p>文档内容 文档内容</br> <img src="images/banner.jpg">
● 所有标签必须正确嵌套
XHTML中,当标签进行嵌套时,必须按照打开标签的顺序进行关闭。
正确嵌套标签的代码示例如下。
<ul> <li></li> </ul>
错误的嵌套标签的代码示例如下。
<ul> <li></ul> </li>
XHTML中还有一些严格强制执行的嵌套限制,这些限制包括以下几点。
1.<a>标签中不能包含其他的<a>标签;
2.<pre>标签中不能包含<object>、<big>、<img>、<small>、<sub>或<sup>标签;
3.<button>标签中不能包含<input>、<textarea>、<label>、<select>、<button>、<form>、<iframe>、<fi eldset>或<isindex>标签;
4.<label>标签中不能包含其他的<label>标签;
5.<form>标签中不能包含其他的<form>标签。
● 使用编码表示特殊字符
在XHTML页面内容中,所有的特殊字符都要用编码表示,例如&必须要用&;的形式。
例如下面的HTML代码:
<img src="pic.jpg" alt="abc & def">
在XHTML中必须要写成:
<img src="pic.jpg" alt="abc & def" />
● 推荐使用CSS样式控制页面外观
在XHTML中,推荐使用CSS样式控制页面的外观,实现页面的结构和表现相分离,相应地会有部分外观属性不推荐使用,例如align属性等。
● 使用页面注释
XHTML中使用<! --和-->作为页面注释,在页面中相应的位置使用注释可以使文档结构更加清晰,其示例代码如下。
<! --这是一个注释 -->
● 推荐通过链接调用外部脚本
XHTML中使用<! --和-->在注释中插入脚本,但是在XML浏览器中会被简单地删除,导致脚本或样式的失效,推荐使用外部链接来调用脚本,调用脚本的代码如下。
<script language="JavaScript1.2" type="text/javascript" src="scripts/menu.js"> </script>
提示:
language是指所使用的语言的版本,type是指l所使用脚本语言等的种类,src是指脚本文件所在路径。
1.5.4 XHTML的文档类型
文档类型(DOCTYPE)的选择将决定页面中可以使用哪些元素和属性,同时将决定级联样式能否实现,下面详细讲解关于DOCTYPE的定义和选择问题。
文档类型又可以写为DOCTYPE,是Document Type的简写,在页面中用来说明页面所使用的XHTML是什么版本。制作XHTML页面,一个必不可少的关键组成部分就是DOCTYPE声明,只有确定了一个正确的DOCTYPE, XHTML里的标识和级联样式才能正常生效。
在XHTML 1.0中有3种文档类型定义(DTD)声明可以选择:过渡的(Transitional)、严格的(Strict)、框架的(Frameset),分别介绍如下。
● 过渡的DTD(Transitional)
这是一种要求不很严格的DTD,允许用户使用一部分旧的HTML标签来编写XHTML文档,帮助用户慢慢适应XHTML的编写,过渡的DTD的写法如下。
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
● 严格的DTD(Strict)
这是一种要求严格的DTD,不允许使用任何表现层的标识和属性,例如<br/>等,严格的DTD的写法如下。
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict. dtd">
● 框架的DTD(Frameset)
这是一种专门针对框架页面所使用的DTD,当页面中包含有框架元素时,就要采用这种DTD,框架的DTD的写法如下。
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- frameset.dtd">
使用严格的DTD来制作页面当然是最理想的方式,但对于没有深入了解Web标准的网页设计者,比较合适的是使用过渡的DTD。因为这种DTD还允许使用表现层的标识、元素和属性。DOCTYPE的声明一定要放置在XHTML文档的头部。
在2001年5月份,W3C发布了XHTML 1.1版。其规范和1.0版中的严格类型基本相似,其DTD的写法如下:
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1.5.5 名字空间
名字空间的英文是Namespace,含义就是通过一个网址指向来识别页面上的标签。在XHTML中使用的是xmlns,也就是XHTML Namespace的缩写。用来识别XHTML页面上的标签的网址指向是http://www.w3.org/1999/xhtml。关于名字空间定义的完整写法如下:
<html xmlns="http://www.w3.org/1999/xhtml">
当使用可视化的网页开发工具新建文档时,选择适当的格式的文档类型,DOCTYPE的声明和名字空间的声明都会自动生成。到目前为止,XHTML的4种文档类型的名字空间都是http://www.w3.org/1999/xhtml。
提示:
w3.org的校验不会由于这个属性没有出现在要校验的XHMTL文档中而报告错误。这是因为xmlns=http://www.w3.org/1999/xhtml是一个固定的值,即使文档里没有包含它,它也会自动加上。
1.5.6 使用XHTML的优势
XHTML是面向结构的语言,其设计不像HTML仅仅是为了网页的设计和表现,XHTML主要用于对网页内容进行结构设计。严谨语法结构有利于浏览器进行解析处理。
XHTML另一方面也是XML的过渡语言。XML是完全面向结构的设计语言,XHTML能够帮助快速适应结构化的设计,以便于平滑过渡到XML,并能于XML和其他程序语言之间进行良好的交互,帮助扩展其功能。
使用XHTML的另一个优势是它非常严密。当前网络上的HTML的使用极其混乱,不完整的代码、私有标签的定义、反复杂乱的表格嵌套等,使得页面的体积越来越庞大,而浏览器为了要兼容这些HTML也跟着变得非常庞大。
XHTML能与其他基于XML的标记语言、应用程序及协议进行良好的交互工作。XHTML是Web标准家族的一部分,能很好地用在无线设备等其他用户代理上。