此文章主要阐述 HTML 和 XHTML 的用法区别。注意以下点即可,一般来讲,XHTML 可以认为是 XML 版本的 HTML,为符合 XML 要求,XHTML 语法上要求更严谨。
以下是 XHTML 相对 HTML 的几大区别:
XHTML 要求正确嵌套
XHTML 所有元素必须关闭
XHTML 区分大小写
XHTML 属性值要用双引号
XHTML 用 id 属性代替 name 属性
XHTML 特殊字符的处理
XHTML 要求正确嵌套
以下是正确的嵌套:
以下是错误的嵌套:
XHTML 所有元素必须关闭
在 HTML 中,比如 <p>,<li> 这些标记,你可以不写 </p>,</li>,但是在 XHTML 里,必须要求写关闭标记 (Closing Tag)。
比如:
应该写成:
处理空元素
有些空元素,在 XHTML 里的写法是在">"之前加空格和斜杠。比如<br>,应该写成<br />。
以下是空元素的例子:
区分大小写
HTML 不区分大小写,但是 XHTML 是区分大小写的。
XHTML 的所有标记和属性都要小写。
比如:
<IMG SRC = "/images/adpics/1/b027.jpg" Alt = "blabla" />
应该写成:
<img src = "/images/adpics/1/b027.jpg" alt = "blabla" />
XHTML 属性值要用双引号,HTML 并不强制要求属性值加双引号。比如你可以写:
XHTML 用 id 属性代替 name 属性
HTML 很多元素,比如 a,applet,frame,iframe,img 和 map,有 name 属性。在 XHTML 里是要废除的,而用 id 属性取而代之。
比如:
XHTML 特殊字符的处理
& 应该在 XHTML 里应该写成 &。
比如:
You & Me
应该写成:
You & Me
还有如果内嵌 javascript 代码,在 XHTML 里则应该写成:
<script type="text/javascript">//<![CDATA[
...
//]]></script>
浏览器的角度
以上是从协议标准的角度来看待这个问题的。如果从浏览器的角度来看待这个问题,情况就有所不同。
从浏览器的角度看待上面几个不同,大致是下面的测试结果(IE和Firefox我都测试过):
XHTML 要求正确嵌套:如果你没有嵌套,浏览器会试图帮你嵌套。
XHTML 所有元素必须关闭:如果你没有关闭,浏览器会试图帮你关闭。
XHTML 区分大小写:你非要写成大写,浏览器帮你转换成为小写。
属性值要用双引号:你非要不肯加,浏览器帮你加。
特殊字符的处理:You & Me 也好,You & Me 也好,浏览器都能读入。
用 id 属性代替 name 属性:你非要用 name 也可以。
如果你在文档开始用 DocType 指定为 XHTML 了,有一点需要注意。在给 Tag 用 class 指定CSS 的时候,是区分大小写的。例如定义一个CSS如下,
<style>
.hello { ...... }
</style>
而你使用的时候写成,
<p class="Hello"> ......
那这个CSS是不会被使用的。
XHTML 标准的前途
制定 XHTML 标准是试图把 HTML 规范成为严格的 XML 格式,这样无可避免的会导致一个结果,就是从 HTML 到 XHTML 的升级导致标准的容错能力降低了。
XHTML 1.0 标准是兼容 HTML 4.01,是个不错的协议,可以让开发者在编写代码的同时通过一些工具来检查代码的合法性,虽然对于用户而言,制作出来的网页和 HTML 4.01 相比实在没有什么不同。对于你写新的网页来说,使用 XHTML 1.0 还是一个不错的选择。
XHTML 1.1 标准要求浏览器不再支持原先的容错能力,这是一个标准制定者走火入魔的典型例子,这个标准从学术上说非常纯净,但是对于浏览器而言,则是个呆板、笨拙、不可理喻的标准。所以目前所有由人类开发的浏览器都没有遵照所谓纯净的 XHTML 1.1的标准,你的代码只要浏览器能读懂,他都会很好的显示出来,而不跳出弹框报错。
从发展的趋势来看,一个标准没有浏览器服从,等于是没有意义的标准。