Vincent.Chan‘s Blog

常用链接

统计

积分与排名

网站

最新评论

XHTML:两种语言的力量:可扩展超文本标记语言是用 XML 对 HTML 4 的改良

级别: 初级

Sathyan Munirathinam, 软件工程师, Aztec Software

2002 年 7 月 01 日

本文从实际角度对 XHTML 进行了研究,它是有效地结合 HTML 的简单性和 XML 的可扩展性的一种标记语言。本文还涵盖了 XHTML 各种风格的基本特性并包括对语言和大量实际应用程序的讨论。

作为一 名 Web 开发人员是项很艰苦的工作。您不仅必须每天避开流行浏览器引起的陷阱和缺陷,还必须至少留意可能(或不可能)对您的工作产生影响的众多技术上的新发展。您 可能刚刚掌握了样式表和 DHTML,而新的技术又要求您关注。您需要立刻学哪一个呢?现在可以放弃哪一个呢?随着可扩展超文本标记语言(Extensible Hypertext Markup Language,简称 XHTML)的出现,最终可能让传统的 HTML 马放南山了。

XHTML 概述

XHTML 是 HTML 和 XML 的混合物,它是为网络设备显示(包括 Web 浏览器、PDA 设备和移动电话)而特别设计的。2002 年 1 月 26 日标志了 XHTML 1.0 作为 Web 标记的正式 W3C 推荐的第二个生日。但是,XHTML 仍然要蹒跚学步,学着用微笑和大喊大叫来引起大多数 Web 设计人员的注意。

W3C 主管 Tim Berners-Lee 这样评价 XHTML:“XHTML 1.0 连接了现在的 Web 和将来的 Web …… 它为页面和网站作者提供了进入结构化数据 XML 世界的桥梁,同时仍然能够保持与支持 HTML 4 的用户代理的可操作性。"

XHTML 是非常严格的标记语言。它的规则很简单,并且事实上,它的可扩展性很小 ― 即,不能编写您自己的定义来表示语言如何动作;您必须遵循其规则。XHTML 1.0 采用 HTML 4.0 中引入的概念,这些概念在其生效之前,需要按结构化的和方法论的行为进行处理。

XHTML 可以与级联样式表(CSS)一起使用以完成显示目的。XHTML 还允许您将可扩展样式表(Extensible Stylesheet Language (XSL))用于转换。通过使用这个基于 XML 的样式技术,您实际上可以将一个文档从一种类型转换成另一种类型 ― 例如,从 HTML 文档转换成 PDF 文档。





回页首


为什么要使用 XHTML?

通常,您可能为新增功能或者因为已经修正了以前版本的问题而将技术更新到新的版本。但就标记功能而言,XHTML 是非常类似于 HTML 4 的副本,所以不要期望存在任何新奇的标记。

W3C 声称 XHTML 的主要优点是 可扩展性可移植性

可扩展性

XML 文档要求格式良好(元素嵌套正确)。使用 HTML,添加新的元素组需要更改整个 DTD。在基于 XML 的 DTD 中,新的元素组只需要内部一致并且格式良好,就可以添加到现有的 DTD 中。这极大地简化了新元素集合的开发和集成。

可移植性

越来越频繁地使用非台式设备来访问因特网文档。在大多数情况下,这些设备不具备台式计算机的计算能力,并且不象标准桌面浏览器那样可适用于格式差的 HTML。实际上,如果这些非桌面浏览器没有接收到格式良好的标记(HTML 或 XHTML),它们可能根本无法显示文档。





回页首


XHTML 文档结构

XHTML 文档由三个主要部分构成:

  • DOCTYPE
  • Head
  • Body

基本文档结构是:

												
														
<!DOCTYPE ...>
<html ... >
<head> ... </head>
<body> ... </body>
</html>

<head> 区域包含关于文档的信息,如所有权、版权和关键字;而 <body> 区域包含要显示的文档内容。

清单 1 向您显示实际中如何使用这个结构:


清单 1. XHTML 示例
												
														
1. <?xml version="1.0"?>
2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "DTD/xhtml1-transitional.dtd">
3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en">
4. <head>
<title>My XHTML Sample Page</title>
</head>
5. <body bgcolor="white">
<center><h1>Welcome to XHTML !</h1></center>
</body>
6. </html>

第 1 行:由于 XHTML 是以 XML 文档表示的 HTML,所以它必须在文档的顶部包括初始 XML 声明 <?xml version="1.0"?>

第 2 行:XHTML 文档必须由三组标准规则的其中一组来标识。这些规则存储在一个称为“文档类型声明(Document Type Declaration (DTD))”的单独文档中,并且使用这些规则验证 XHTML 文档结构的准确性。准确地说,DTD 的目的是描述 XHTML 中允许的语言和语法。

第 3 行:XHTML 文档中的第二个标记必须包括带有由 xmlns=http://www.w3.org/1999/xhtml 属性标识的 XML 名称空间的开始 <html> 标记。XML 名称空间标识 XHTML 文档使用的标记的范围。它用来确保一个 DTD 使用的名称不与用户定义的标记或其它 DTD 中定义的标记冲突。

第 4 行:XHTML 文档必须包括完整的头部区域。这个区域包含开始 <head> 标记和标题标记( <title></title> ),然后以结尾 </head> 标记结束。

第 5 行:XHTML 文档必须包含开始和结尾 <body></body> 标记。在这些标记中,您可以放置传统的 HTML 编码标记。要与 XHTML 符合,这些标记的编码必须是格式良好的。

第 6 行:最后,使用结尾 </html> 标记结束 XHTML 文档。





回页首


XHTML DTD

在创建 XHTML 文档时,在该文档的顶部声明了它应符合的 DTD。每个 DTD 可能由一个称为 正式公共标识(Formal Public Identifier,简称 FPI)的唯一标号识别。字 PUBLIC 后面的文字文本或引用文本是表示 W3C 的 XHTML 1.0 DTD 的 FPI。

目前,有三种 XHTML 文档类型:

  • Strict
  • Transitional
  • Frameset

Strict DTD

												
														
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">

当您想要真正清晰的标记、避免表示上的混乱时,将此与 CSS 一起使用。已经从该语言中除去了几个标记(如 <center> ),甚至还除去了其它标记的某些属性(如 H1 标记的 align 属性)。

Transitional DTD

												
														
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">

当您需要利用 HTML 的表示特性时,使用它;您的许多读者都没有能理解 CSS 的最新浏览器。过渡的 DTD 支持大部分标准的 HTML 4 标记和属性。

Frameset DTD

												
														
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">

这使您能够使用 HTML 框架将浏览器窗口分成两个或更多框架。这个 DTD 保存框架集定义。





回页首


XHTML 验证规则

XHTML 文档 必须是格式良好的 XML。它必须符合基本 XML 语法:

必须用小写书写标记和属性名称。

HTML XHTML
<TD BGCOLOR="#ffcc33"> < td bgcolor="#ffcc33">

元素必须嵌套;而不能交错。对于 XML 和 XHTML,您需要以逆序关闭标记 ― 换言之:后开先关。

HTML XHTML
<p>Be <b>bold!</p></b> <p>Be <b>bold! </b></p>

所有非空元素必须是关闭的。例如,对于 HTML,许多人使用 <p> 标记分段。这个标记设计用于标记一段的开始和结尾(使用结尾 </p> 标记)。这使它成为 非空标记,因为它包含段文本。

HTML XHTML
First paragraph<p> Second paragraph<p> <p>First paragraph</p> <p>Second paragraph </p>

受 影响的元素:<basefont>、<body>、<colgroup>、<dd>、< dt>、<head>、<html>、<li>、<p>、<tbody>、< thead>、<tfoot>、<th>、<td> 和 <tr>。

必须终止空元素。所有空元素必须使用 XML 空标记语法,在右括号前有一个结尾的正斜杠(例如, <br> becomes <br /> )。请注意元素文本后面的空格和结束定界符 /> 。这是为了与当前浏览器兼容。

HTML XHTML
<hr> <hr />
<br> <br />
<input ... > <input ... />
<param ... > <param ... />
<img src="valid.gif"> <img src="valid.gif" />

受 影响的元素:<area>、<base>、<br>、<col>、<frame>、 <hr>、<img>、<input>、<isindex>、<link>、< meta>、<option> 和 <param>。

属性值必须加引号。不再有 <img ... border=0> 了。现在,您需要给每个属性加引号,即使它是数字。

HTML XHTML
<img ... border=0> <img ... border= "0" />

不能最小化属性值对。不允许单独属性(也称为最小化的属性)。例如, <option selected> 不再有效了。而您必须使用 <option selected="selected">

内联标记不能包含块级别标记。例如,锚点标记不能括起表。

脚本编制元素引起了 XHTML 兼容性问题。XML 解析器将脚本解析成 XML 文档,除非您将脚本封装入 CDATA 块中。因此,JavaScript 元素现在将类似于:

												
														
<script type="text/javascript">
<![CDATA[ alert("hello"); ]]>
</script>

这对于大多数的当前浏览器来说,可能都有问题,因为它们不喜欢 CDATA 块。目前,唯一的解决方案是从外部文件调用 JavaScript。例如:

												
														
<script language="JavaScript" type="text/javascript" src="main.js"></script>

对于服务器端程 序员,当动态修改 JavaScript 时,这会产生问题。对您的 JavaScript 使用独立的文件源会阻止您动态地更改 JavaScript。因为 JavaScript 包括在客户机端,所以服务器端不能接触到它。当使用 ASP、JSP 或 PHP 脚本编制修改 JavaScript 时使用脚本声明的标准 HTML 方法。这正是在使 JSP 或 ASP 100% 与 XHTML 兼容时最可能产生问题的地方。不过,请记住,目的并不是与 XHTML 100% 兼容,而是在可行的情况下开始结合 XHTML,使得需要时允许快速和简单的过渡。那时,应该可以使用新的兼容浏览器,您将开始跨越到 100% 兼容性。





回页首


代替 CHTML 和 WML 的 XHTML Basic

对于想创建网站移动版本的开发人员来说,根本问题是他们当前必须用 HTML 将页面格式化以便进行桌面浏览,对于 WAP 设备,可以用无线标记语言(Wireless Markup Language (WML));对于 iMode 设备可以用压缩 HTML(Compact HTML (CHTML))。这已经产生了一个新的行业,致力于将现有的网站转换成 WML 或 CHTML。WML 基于 XML,并且取代了快过时的手持设备标记语言(Handheld Device Markup Language (HDML)),而 CHTML 是基于 HTML 的。虽然这些标记语言很相似,但它们之间的区别使得 WAP 和 iMode 设备都不能看见 Web 页面。而所有设备都将理解 XHTML Basic,并且它将成为一种通用标记语言。

可以获取多种格式的完整 XHTML Basic 英文规范(请参阅 参考资料),这些格式包括 HTML、纯文本、PostScript 和 PDF。可以预见 XHTML Basic 代替诸如 HDML 和 WML 的语言将是不可避免的。但是,重要的是记住 WML 和 HDML 还定义 操作和内容。目前,这些在 XHTML 中还没有等价定义。因此,至少在短期内,WML 和 HDML 将不会消失。看谁会最终胜出将很有意思。在某种程度上计划支持所有这三种标记语言。





回页首


XHTML 中的未来工作

XHTML 中仍在开发的一方面是 设备概要, 也称为复合能力首选项概要文件(Composite Capability Preference Profiles (CCPP))。CCPP 允许诸如移动电话之类的设备向 Web 服务器标识自己、描述其限制并只下载其能够显示的信息。因为可以将 XHTML 文档分割成能够被单独下载的多个模块,所以 CCPP 能起作用。

W3C 正在与 WAP Forum 等合作开发 CCPP。2001 年夏季,开始 XHTML 2.0 开发,它是结合 HTML 和 XML 的最后一步。XHTML 2.0 是前瞻性的,因为它是几种 XML 技术的结合体,例如 XLink、XPointer、XPath 和 XInclude ― 所有这些技术当前处于开发过程中或者最近由 W3C 发布(请 参考资料中的路标)。





回页首


结束语

XHTML 开辟了 Web 的新领域,为作者提供了在其 Web 页面上混合和匹配各种基于 XML 的语言和文档的方法。它还为非传统 Web 访问设备(从烤箱到电视机)提供了框架以向 Web 服务器标识它们自己及其能力,只要下载那些设备能显示的信息。多亏有了 XHTML,您可以继续使用您已经熟悉和喜爱的 HTML 编写。可能只需要稍微整理一下。我猜测 XHTML 2.0(请参阅 参考资料)将具体地整理 HTML 标记及其用法。

总之,XHTML 简化了可以让各种新设备浏览的文档的创建。另外,经过少许学习,您可以创建比以往功能强大得多的页面。最后,XHTML 是通向 XML ― 因特网的未来语言的桥梁。





回页首


参考资料





回页首


关于作者

author

Sathyan Munirathinam 拥有 Madurai Kamaraj 大学计算机科学学士学位和计算机应用硕士学位。作为 Aztec Software 的一名软件工程师,他有两年多的信息技术工作经验。他的专业兴趣是数据库系统和联网,他的个人兴趣是阅读技术期刊,入侵网络系统和打板球。可以通过 sat_hyan@yahoo.com与他联系。


posted on 2006-03-18 20:51 Vincent.Chen 阅读(345) 评论(0)  编辑  收藏 所属分类: AJAX


只有注册用户登录后才能发表评论。


网站导航: