-

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

XHTML文件必须形成良好

良好形式是XML引入的一个新概念。本质上,这意味着所有元素必须具有关闭标签,并且必须正确嵌套。

CORRECT:嵌套元素

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

不正确:重叠元素

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

元素和属性必须小写

所有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都具有一些具有预定义和有限的值集合的属性。例如,输入元素的type属性在HTML和XML中,这些被称为枚举属性在HTML 4下,这些值的解释不区分大小写,因此TEXT的值相当于文本

在XHTML下,对这些值的解释是区分大小写的,所有这些值都是以小写定义的。

实体引用为十六进制值

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

<html>元素是必须的

所有XHTML元素必须嵌套在<html>根元素中。所有其他元素可以具有必须成对并且正确嵌套在其父元素内的子元素。基本文件结构是 -

<!DOCTYPE html....>

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