概述

XHTML 是当前 HTML 版的继承者。HTML 语法要求比较松散,这样对网页编写者来说,比较方便,但对于机器来说,语言的语法越松散,处理起来就越困难,对于传统的计算机来说,还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。因此产生了由 DTD 定义规则,语法要求更加严格的 XHTML。
大部分常见的浏览器都可以正确地解析 XHTML ,即使老一点的浏览器,XHTML 作为 HTML 的一个子集,许多也可以解析。也就是说,几乎所有的网页浏览器在正确解析 HTML 的同时,可兼容 XHTML。当然,从 HTML 完全转移到 XHTML ,还需要一个过程。
跟 CSS (Cascading Style Sheets,层叠式样式表)结合后,XHTML 能发挥真正的威力;这使实现样式跟内容的分离的同时,又能有机地组合网页代码,在另外的单独文件中,还可以混合各种 XML 应用,比如 MathML、SVG。
从 HTML 到 XHTML 过渡的变化比较小,主要是为了适应 XML 。最大的变化在于文档必须格式整齐,所有标签必须闭合,也就是说开始标签要有相应的结束标签。另外,XHTML 中所有的标签必须小写。而按照 HTML 2.0 以来的传统,大部分人都是将标签大写,这点两者的差异显著。在 XHTML 中,所有的参数值,包括数字,必须用双引号括起来。 (而在 SGML ,包括 HTML 中,引号不是必须的,当内容只是数字、字母及其他允许的特殊字符时,可以不用引号。) 所有元素,包括空元素,比如 img 、br ,也都必须闭合,实现的方式是在开始标签末尾加入斜扛,比如 <img … />
、<br />
。省略参数,比如 <option selected>
,也不允许,必须用 <option selected="selected">
。两者的详细差别,可通过 [W3C XHTML 说明] 来查阅。
版本
至现时为止, XHTML 共有以下几个版本:
- XHTML 1.0 Transitonal
- XHTML 1.0 Strict
- XHTML 1.0 Frameset
- XHTML 1.1
- XHTML Basic
其中,"XHTML 1.0 Transitonal" 是参照 "HTML 4.01 Transitional" 改编、"XHTML 1.0 Strict" 是参照 "HTML 4.01 Strict" 改编、"XHTML 1.0 Frameset" 是参照 "HTML 4.01 Frameset" 改编。
在微软 Internet Explorer 5.0 所新增的 <ruby> 小字注解标签,在 XHTML 1.1 得到支援。(参看Ruby字符。)
语法
XHTML 语言必须符合 XML 的格式,例如, <br> 要写成 <br /> 、使用了 <p> 之后必须有一个 </p> 以结束段落。而且, XHTML 标签必须使用小写字母,如 <br /> 不能写为 <BR /> 、而每一个属性都必须使用引号包住,如必须使用 <img src="abc.jpg" /> 而不能使用 <img src=abc.jpg> 。这些做法的目的,是使一个 XHTML 网页能够被网页浏览器正确及较快地编译。
和HTML 4的区别
(翻译自[W3C XHTML 说明]) 4. 和HTML 4的区别 这部分涉及内容广泛. XHTML是XML的一种应用,基于这一事实。那些在以SGML为基础的HTML 4[HTML 4]中完全合法的用法应当被改变。 4.1. 文档应该具有良好的结构 结构化良好 是由[XML]引入的一个新概念。也就是说所有的元素都必须有结束标签或者以特殊的方式书写(如下所述),而且所有的标签必须合理地嵌套。 尽管如此,交叉使用在SGML中仍然是合法的,而且在现有的浏览器中也能够被广泛接受。 正确的:元素嵌套
here is an emphasized paragraph.
错误的:元素交叉
here is an emphasized paragraph.
4.2. 元素名和属性必须统一小写
XHTML 文档把所有的 HTML 元素名和属性名都小写。这个区别是必须的,因为 XML 是大小写敏感的。比如,
- 和
- 是完全不同的两个标签。 4.3. 对于非空标签,也需要结束标签 基于 SGML 的 HTML 4 里面,允许特定的标签省略结束标签;这些元素暗含有结束标记。XML 不允许省略结束标记。所有元素包括在DTD中声明为空的标签都必须有结束标签。在DTD中声明为空的元素可以用结束标签 或者 使用空元素速记法(参见 空元素). 正确的:结束的元素
here is a paragraph.
here is another paragraph.
错误的:没有结束的元素
here is a paragraph.
here is another paragraph. 4.4. 属性值必须总是使用引号包裹 所有的属性值都必须使用引号包含,包括那些以数值类型出现的。 正确的:属性值使用引号
错误的:属性值没有使用引号 | 4.5. 属性简化 XML不支持属性简化,属性值对必须书写完整。属性名,像compact和checked在没有指定具体值的情况下不能够使用 does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as compact and checked cannot occur in elements without their value being specified. 正确的:没有简化属性
|