正 文

一步一步学 XHTML


www.7dspace.com  更新日期:2005-11-5 4:50:46  七度空间


剖析 XHTML 网页

XHTML 风格

W3C 决定创建 HTML 的结构良好的 XML 版本时,它是从 HTML 4.01 开始的。XHTML 1.0 在很大程度上是直接把 HTML 4.01 结构改为 XML 语法。但是,W3C 实际上最终完成了三个 HTML 4.01 DTD,因为它希望 HTML 转向更清晰的内容语义而不是表示。这意味着为了适应样式表规则有些元素不再使用了,不同的 DTD 反映了作者对是否使用这类元素的决策。这些 DTD 包括:

    * Strict:首选的 DTD,排除了主要用于表示的属性和元素。
    * Transitional:Strict DTD 再加上不建议使用的表示性元素。
    * Frameset:和 Transitional DTD 略有不同,用于使用框架的文档。

XHTML 1.0 包括和所有这三个 DTD 对应的 XML 成分。然后 W3C 开发了一个系统来描述和扩展 XHTML,形成一组 DTD 模块。该规范称为 Modularization of XHTML(XHTML 模块化),是 XHTML 规范 1.0 版本以后的基础。本教程重点讲述的 XHTML 1.1 基本上就是分解成一组模块的 XHTML 1.0 Strict。从实际应用的角度来看,与 XHTML 1.0 Strict 相比只有很细微的差别。

W3C 目前在开发 XHTML 2.0,作了一些更显著的修改,在很多方面是重新设计一种完整的语言。您应该时刻关注 XHTML 2.0,不过它仍然在开发之中,本教程以 XHTML 发布的最新版本为主,也就是 1.1。

XML 声明

XML 对任何文档都支持一个声明。虽然在技术上是可选的,但最好包含这样的声明。原因之一是某些默认值决定了没有在声明中指定的信息,但这些默认值常常和文件中的某些方面冲突。

XML 声明的形式如下:

<?xml version
     opt. encoding
     opt. standalone?>

声明中的三个控制位称为伪属性,因为语法上看起来与 XML 属性类似。如果包含编码声明,则此声明必须在版本之后;如果有独立性声明,则必须是最后一个伪属性。因为通常在 XHTML 文档中不需要使用独立性声明,这里就不再进一步讨论了。版本号应该使用“1.0”,因此 XHTML 中真正需要修改的部分只有编码。

我建议 XHTML 文档使用 UTF-8 或 UTF-16,但要求必须非常谨慎地配置 Web 服务器或者存放文档的其他系统。如果在这一层上不知道编码为 UTF-8 还是 UTF-16,那么很多浏览器将忽略 XML 声明并假定编码为 ISO-8859-1,从而可能破坏文本。

下面是 XHTML 中 XML 声明的一个完整例子:

<?xml version="1.0" encoding="utf-8"?>

该声明出现在文件的开始,但如果使用 UTF-16,可能在声明之前还需要知道所谓的字节序标志。(字节序标志是一个特殊的字符,不可见,仅用于表明特定机器上字节序列的结构。)

文档类型声明

XHTML 用文档类型定义(DTD)定义,必须在 XML 声明之后称为文档类型声明的结构中引用该 DTD。本教程以 XHTML 1.1 为主,就是说所有例子中的文档类型声明都是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

如果没有这样的声明,XHTML 1.1 文档就是无效的。-//W3C//DTD XHTML 1.1//EN 是公共标志符,可以省略;但如果有的话必须使用这个值。http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd 是系统标识符,不能省略,但可以修改 URL 指向 W3C XHTML 1.1 DTD 的任何副本。多数情况下,XML 解析器会尝试检索系统标识符指定的 DTD,如果离线的话可能会遇到麻烦。通常的办法是使用 XML 编目,它允许把实体请求重定向到自定义的位置。多数 Web 浏览器和支持 XHTML 的其他工具都有这样的编目,不会因为从那个 URL 检索而影响速度。也可以要求 XML 解析器不检索外部实体(很多都支持),从而禁止 DTD URL 请求。

不要忽略文档类型的另一个原因是,Web 浏览器常常将没有该声明解释为以 quirks 模式呈现的指令,这种模式是为了适应 HTML 遗留的标签汤和非标准浏览器行为而设计的。通过避免 quirks 模式,您会发现 HTML 编辑和质量保证过程就不那么痛苦了。

主要的元素和名称空间

XHTML 1.1 中的元素和属性与您更熟悉的 HTML 中的元素和属性类似,只不过为了保证是结构良好的 XML 而增加了一些限制。本教程中将更多地阐释这些限制,但除了与 XML 良构性有关的部分之外,必须记住新增的一点:XHTML 1.1 中的元素和属性都是小写的。永远不会使用大写。顶层元素是 html 而非 HTML。

此外,XHTML 元素都有 XML 名称空间。通常只要在顶层元素中声明该名称空间一次,再让它应用于其中的所有元素。如下面的片段所示:

<html xmlns="http://www.w3.org/1999/xhtml">
...</html>

当然,要用您自己的 XHTML 内容代替 ...。名称空间 http://www.w3.org/1999/xhtml 对于所有已发布 XHTML 版本都一样,包括 XHTML 1.0 和 XHTML 1.1 的三个 DTD。将来在 XHTML 2.0 规范中可能会改变。这个例子中,以及在 XHTML 作为独立文档的多数情况下,都采用默认名称空间,但要记住前缀形式也是合法的。对 XHTML 来说,下面的片段与上例相同:

<ht:html xmlns:ht="http://www.w3.org/1999/xhtml">
...</ht:html>

一个完整的例子

目前为止只看到了一些 XHTML 片段。下面的清单是第一个完整的例子,来自 XHTML 1.1 规范。

清单 1. 完整的 XHTML 例子

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://vlib.org/">vlib.org</a>.</p>
  </body>
</html>

如果在浏览器中查看该文件,就会看到类似图 1 显示的结果。

图 1. 一个完整的 XHTML 例子

注意窗口中的标题栏,其中的“Virtual Library”来自 title 元素的内容。这表明要对文档 head 中的元数据和 body 中的内容同样关注。

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:如何修改TTL值来防止入侵
下一篇:用.NET Remoting来开发分布式应用初步
作者:Uche Ogbuji  来源:developerWorks 中国 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐