5.3.1 面向网页:HTML的升级版——XHTML
   

在众多XML相关的标准中,我们从XHTML开始讲起。之所以先说它,是因为它融合了我们迄今为止最为熟悉的两种置标语言--HTML和XML。我们知道,HTML是用SGML定义的适于网上浏览的一种置标语言,而XHTML就是将过去以SGML定义的HTML,改用XML来重新定义,所有的置标都与既有的HTML 4置标一致,所以最早又叫做“HTML in XML”。从很大程度上讲,它是HTML到XML的过渡版本,是由于HTML危机四伏、而XML的使用环境尚不成熟所以被制订的。不过因为变成了XML,有些地方必须遵守XML的规范,严格执行,不再像过去那么随便。

XHTML的全称是可扩展超文本置标语言,即eXtensible HyperText Markup Language。XHTML于1998年12月5日提出第一个草案,其1.0版本的推荐标准(Recommendation)于今年1月26日正式通过。在此之后,W3C又致力于1.1版本的制订,侧重于对于XHTML的模块化,并从1.1版本中提取出最基本元素构成基本XHTML(XHTML Basic)专门用于非PC环境,尤其是移动电话的浏览环境。此外,W3C的HTML工作组最近又开始着手于XForms标准的起草工作,通过对XHTML中表单实现方式的修改将网页中用户交互功能从数据表现中分离出来。这些变化都充分体现了未来网页内容与形式相分离,以及适用于多种交互环境和浏览环境的大趋势。

大家不要小看了对HTML的这一改头换面,它可不是简单的新瓶装旧酒。HTML经这么一改,具有了很多以前没有的优点。首先,由于XHTML遵循XML格式,因此可以用标准的XML工具浏览、编辑和检查,它可谓是HTML向XML的一个过渡。让我们在XML的编辑浏览工具尚未成熟的时候,也能通过XHTML来提前领略XML的诸多优点。

其次,XHTML象众多XML的成员一样,可以通过使用名空间而具有良好的扩展性,这意味着我们不但可以在页面上使用传统的HTML标记来描述显示格式,而且还可以引入MathML描述的数学公式、SVG描述的矢量图形、SMIL描述的多媒体效果,甚至可以引入用户自定义的基于内容描述的标记。

不仅如此,XHTML的最大特点在于它的模块化。它不是一股脑地将HTML中所有的标记不加选择不加鉴别地进行一遍改装,而是将这些标记根据浏览者的需求和浏览器的支持能力分解为一个个模块。现有的1.0标准中包含了三个模块:

  • 严格式Strict:使用CSS来描述样式,而淘汰诸如FONT等的标记
  • 过渡式Tranzitional:考虑到FONT等标记使用还很广泛,采用一种过渡的方式来逐步过渡到严格式
  • 集合Frame set:支持含有 的HTML。

由于以后会出现不同种类的终端和平台,例如手持设备和移动电话等,没有必要每一种终端都百分之百地支持所有HTML中的标记,所以XHTML这一模块化的思想是顺应了网络发展的潮流和后PC时代的到来的。

XHTML和HTML文档非常相似,所用的标记和属性都是相同的,外观也大同小异,只有以下几点额外的要求:

  1. 文件最好以一个XML声明打头。
  2. 文档的根元素之前应该有一个文档类型声明,在声明中使用XHTML的三个DTD中的一个作为公共标识符。
  3. 文档的根元素应该是HTML,而且应该利用属性xmlns指定XHTML的名空间。
  4. 必须遵守XML关于"格式良好"的诸多规定。

下面我们就来看一个简单的XHTML文档:

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Strict//EN" "http://www.w3.org/TR/1999/PR-xhtml1-19991210/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml>
  <head>
    <title>第一个XHTML文档</title>
  </head>
  <body>
    <p>欢迎访问
    <a href="http://www.xml.net.cn">XML中国论坛</a>。
    </p>
  </body>
</html>

XHTML文件可以冠以.html扩展名,这样就可以用当前的浏览器浏览;也可以冠以.xml扩展名,确保它能被未来的XML编辑浏览工具所接受。不仅如此,使用W3C的免费工具HTML Tidy可以很方便地把一个现有的HTML文件转换为XHTML文件。仅从这些来看,称XHTML为HTML到XML的过渡版本也是恰如其分的。