XHTML 与 HTML

由于 XHTML 是 XML 应用程序,因此必须更改基于 SGML 的 HTML 4 中完全合法的某些做法。您已经在上一章中看到了 XHTML 语法,因此 XHTML 和 HTML 之间的差异非常明显。以下是 XHTML 和 HTML 之间的比较。

XHTML 文档必须格式正确

格式正确是 XML 引入的一个新概念。本质上,这意味着所有元素都必须有结束标记,并且必须正确嵌套它们。

正确:嵌套元素

<p>Here is an emphasized <em>paragraph</em>.</p>

错误:元素重叠

<p>Here is an emphasized <em>paragraph.</p></em>

元素和属性必须小写

XHTML 文档的所有 HTML 元素和属性名称都必须使用小写。这种区别是必要的,因为 XHTML 文档被视为 XML 文档,而 XML 区分大小写。例如,<li> 和 <LI> 是不同的标记。

所有元素都需要结束标记

在 HTML 中,某些元素可以省略结束标记。但 XML 不允许省略结束标记。

正确:终止元素

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

错误:未终止的元素

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

属性值必须始终用引号引起来

所有属性值(包括数值)都必须用引号引起来。

正确:用引号引起来的属性值

<td rowspan="3">

错误:未加引号的属性值

<td rowspan=3>

属性最小化

XML 不支持属性最小化。属性值对必须完整书写。在没有指定属性值的情况下,元素中不能出现 compact 和 checked 等属性名称。

正确:非最小化属性

<dl compact="compact">

错误:最小化属性

<dl compact>

属性值中的空格处理

当浏览器处理属性时,它会执行以下操作 −

  • 删除前导和尾随空格。

  • 将一个或多个空格字符(包括换行符)序列映射到单个单词间空格。

脚本和样式元素

在 XHTML 中,脚本和样式元素不应直接包含"<"和"&"字符(如果存在);然后它们将被视为标记的开始。诸如"<"和"&"之类的实体被 XML 处理器识别为实体引用,分别用于显示"<"和"&"字符。

将脚本或样式元素的内容包装在 CDATA 标记部分内可避免这些实体的扩展。

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

另一种方法是使用外部脚本和样式文档。

具有 idname 属性的元素

XHTML 建议用 id 属性替换 name 属性。请注意,在 XHTML 1.0 中,这些元素的 name 属性已正式弃用,并将在后续版本的 XHTML 中将其删除。

具有预定义值集的属性

HTML 和 XHTML 都有一些具有预定义和有限值集的属性。例如,input 元素的 type 属性。在 HTML 和 XML 中,这些被称为枚举属性。在 HTML 4 下,这些值的解释不区分大小写,因此 TEXT 的值相当于 text 的值。

在 XHTML 下,这些值的解释区分大小写,因此所有这些值都以小写形式定义。

实体引用作为十六进制值

HTML 和 XML 都允许使用十六进制值引用字符。在 HTML 中,可以使用 &#Xnn;&#xnn; 进行这些引用,并且它们有效,但在 XHTML 文档中,您必须仅使用小写版本,例如 &#xnn;

<html> 元素是必需的

所有 XHTML 元素都必须嵌套在 <html> 根元素中。所有其他元素都可以有子元素,这些子元素必须成对出现,并正确嵌套在其父元素中。基本文档结构是 −

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>