跳到主要内容

XHTML 结构

<!--[XHTML 文档基本框架 ]-->
<!-- 定义
XHTML 文档类型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--XHTML 文档根元素,其中 xmlns 属性声明文档命名空间 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- 头部信息结构元素 -->
<head>
<!-- 设置文档字符编码 -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<!-- 设置文档标题 -->
<title>无标题文档</title>
</head>
<!-- 主体内容结构元素 -->
<body></body>
</html>

XHTML 代码不排斥 HTML 规则,在结构上也基本相似,但如果仔细比较,它们有两点不同

  • 定义文档类型
  • 声明命名空间

XHTML 语法

XHTML 是根据 XML 语法简化而来的,因此它遵循 XML 文档规范。同时 XHTML 又大量继承 HTML 语言语法规范,因此与 HTML 语言非常相似,不过它对代码的要求更加严谨。遵循这些要求,对于培养良好的 XHTML 代码书写习惯是非常重要的。

  • 在文档的开头必须定义文档类型

  • 在根元素中应声明命名空间,即设置 xmlns 属性

  • 所有标签都必须是闭合的。在 HTML 中,用户可能习惯书写独立的标签,如 <p><li> ,而不习惯写对应的 </p></li> 来关闭它们,但在 XHTML 中这是不合法的。 XHTML 要求有严谨的结构,所有标签都必须关闭。如果是单独不成对的标签,应在标签的最后加一个" / "来关闭它,如

  • 所有元素和属性都必须小写。这与 HTML 不同, XHTML 对大小写是敏感的, <title><TITLE> 表示不同的标签。 所有的属性必须用引号("")括起来。在 HTML 中,可以不给属性值加引号,但是在 XHTML 中必须加引号,如 <table height="80"></table> 。特殊情况下,可以在属性值里使用双引号或单引号

  • 所有标签都必须合理嵌套。这是因为 XHTML 要求有严谨的结构,因此所有的嵌套都必须按顺

  • 所有属性都必须被赋值,没有值的属性就用自身来赋值

  • 所有特殊符号都用编码表示,例如,小于号( < )不是元素的一部分,必须被编码为" < ";大于号( > )不是元素的一部分,必须被编码为" > "。

  • 不要在注释内容中使用" -- "。" -- "只能出现在 XHTML 注释的开头和结束,也就是说在内容中它们不再有效

  • XHTML 规范废除了 name 属性,而使用 id 属性作为统一的名称。在 IE 4.0 及以下版本中应保留 name 属性,使用时可以同时使用 id 和 name 属性

XHTML 类型

XHTML 1.0 支持 3 种 DTD (文档类型定义)声明:过渡型( Transitional )、严格型( Strict )和框架型( Frameset )

这种文档类型对于标签和属性的语法要求不是很严格,允许在页面中使用 HTML 4.01 的标签(符合 XHTML 语法标准)。过渡型 DTD 语句如下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w1.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

这类文档类型对于文档内的代码要求比较严格,不允许使用任何表现层的标签和属性。严格型 DTD 语句如下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w1.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

在严格型文档类型中,以下元素将不被支持。

center居中(属于表现层)
font字体样式,如大小、颜色和样式(属于表现层)
strike删除线(属于表现层)
s删除线(属于表现层)
u文本下划线(属于表现层)
iframe嵌入式框架窗口(专用于框架文档类型或过渡型文档)
isindex提示用户输入单行文本(与 input 元素语义重复)
dir定义目录列表(与 dl 元素语义重复)
menu定义菜单列表(与 ul 元素语义重复)
basefont定义文档默认字体属性(属于表现层)
applet定义插件(与 object 元素语义重复)

在严格型文档类型中,以下属性将不被支持。

  • align (支持 table 包含的相关元素: tr 、 td 、 th 、 col 、 colgroup 、 thead 、 tbody 、 tfoot )

  • language

  • background

  • backgroundColor

  • border ( table 元素支持)

  • height ( img 和 object 元素支持)

  • hspace

  • name (在 HTML 4.01 Strict 中支持,在 XHTML 1.0 Strict 中的 form 和 img 元素不支持)

  • noshade

  • nowrap

  • target

  • text 、 link 、 vlink 和 alink

  • vspace

  • width ( img 、 object 、 table 、 col 和 colgroup 元素支持)

这是一种专门针对框架页面所使用的 DTD ,当页面中含有框架元素时,就应该采用这种 DTD 。框架型 DTD 语句如下。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w1.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

使用严格的 DTD 来制作页面,当然是最理想的方式,但是,对于没有深入了解 Web 标准的网页设计者来说,比较适合使用过渡型 DTD 。因为过渡型 DTD 还允许使用表现层元素和属性,比较适合大多数网页制作人员使用。 对于大多数标准网页设计师来说,过渡型 DTD ( XHTML 1.0 Transitional )是比较理想的选择。因为这种 DTD 允许使用描述性的元素和属性,也比较容易通过 W3C 的代码校验。

DTD 解析

在 XHTML 文档中, DOCTYPE 是一个必要元素,它决定了网页文档的显示规则。 DOCTYPE 是 Document Type 的简写,中文翻译为文档类型。在网页中通过在首行代码中定义文档类型,来指定页面所使用的 HTML 的版本类型。在构建符合标准的网页时,只有使用正确的 DOCTYPE (文档类型), HTML 文档的结构和样式才能被正常解析和呈现。

实际上, DTD 是一套关于标签的语法规则。 DTD 文件是一个 ASCII 的文本文件,后缀名为 .dtd 。利用 DOCTYPE 声明中的 URL 可以访问指定类型的 DTD 详细信息。例如,对于 XHTML 1.0 过渡型 DTD 的 URL 为 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

一个 DTD 文档包含元素的定义规则,元素间关系的定义规则,元素可使用的属性、实体或符号规则。这些规则用于标识 Web 文档的内容。此外还包括了一些其它规则,它们规定了哪些标签能出现在其它标签中。文档类型不同,它们对应的 DTD 也不相同。

DOCTYPE 声明中各个部分说明如下。

  • 顶级元素:指定 DTD 中声明的顶级元素类型,这与声明的 SGML 文档类型相对应。 HTML 文档默认顶级元素为 html
  • 可用性:指定正式公开标识符( FPI )是可公开访问的对象( PUBLIC )还是系统资源( SYSTEM )。默认为 PUBLIC , SYSTEM 系统资源包括本地文件或 URL
  • 注册:指定组织是否由国际标准化组织( ISO )注册。" + "(默认)表示组织名称已注册," - "表示组织名称未注册。 W3C 是属于未注册 ISO 的组织,以显示为" - "符号
  • 组织:指定在 DOCTYPE 声明引用的 DTD (文档类型定义)的创建和维护的团体或组织的名称。 XHTML 语言规范的创建和维护组织为 W3C
  • 类型:指定公开文本的类,即所引用的对象类型。 XHTML 默认为 DTD
  • 标签:指定公开文本的描述,即对所引用的公开文本的唯一描述性名称,后面可附带版本号。 HTML 默认为 HTML , XHTML 默认为 XHTML ,后面跟随的是语言版本号
  • 定义:指定文档类型定义,包含 Frameset (框架集文档)、 Strict (严格型文档)和 Transitional (过渡型文档)。 Strict (严格型文档)禁止使用 W3C 规范中指定将逐步淘汰的元素和属性,而 Transitional (过渡型文档)可以包含除 frameset 元素以外的全部内容
  • 语言:指定公开文本的语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639 语言代码(两个字母要大写),默认为 EN (英语)
  • URL :指定所引用对象的位置

命名空间

在标准设计中,命名空间是必须设置的一个属性,用来定义该顶级元素以及其包含的各级子元素的唯一性。命名空间声明允许用户通过一个网址指向来识别文档内标签的唯一性。

由于 XML 语言允许用户自定义标签,这样就可能存在所定义的标签与别人定义的标签名称发生冲突的情况。虽然标签名称不同,但是标签所表示的语义可能相同。当这些文档在网上自由传播或者相互交换文件时,由于名称相同可能会发生语义冲突。为此需要为各自的文档指定其语义的限制空间,于是 xmlns 属性就派上了用场。

`