1.6 HTML与XHTML
我喜欢把HTML想像成一个懒洋洋但是自得其乐的家伙。她不像XHTML那样努力工作,而是更轻松快活。另一方面,XHTML总是高度紧张,时刻警惕,从不休息。因此,XHTML做的工作更多,但这是有代价的!
我们先了解一下HTML和XHTML的差异。初学者应该知道,HTML 4和XHTML 1.0使用完全一样的元素、属性和值。区别只在语法上。
● HTML并不在意是否使用了html、head和body元素以及DOCTYPE,而XHTML需要这些。
● HTML允许省略某些结束标记,而XHTML要求每个元素(包括空元素)都有结束标记。为了尽可能保持与浏览器的兼容性,在空元素中添加一个空格和一条斜杠,而非空元素必须有独立的结束标记(图1-25~图1-28)。注意,严格地说,在HTML中,空元素中的斜杠并不是合法的,但是我见过的所有浏览器都会忽略它,不会造成错误。
图1-25 在HTML中,某些元素(比如p)不要求有结束标记。后续的p标记隐式地结束前面的p标记
图1-26 在XHTML中,所有元素都必须有结束标记
图1-27 在HTML中,空元素没有最后的斜杠,即使有,浏览器也不会报错
图1-28 在XHTML中,即使是空元素,也必须有结束标记。为空元素编写独立的结束标记(比如</img>)在技术上是正确的,但是在img标记中添加一个空格和/可以确保与不理解XHTML的浏览器的兼容性
● 对于只包含字母、数字和四种简单符号(-、.、_和:)的属性值,HTML允许省略外面的引号,但是如果省略引号;XHTML就会产生错误(图1-29和图1-30)。
图1-29 在HTML中,只有在属性值包含空格或其他特殊字符(除了字母、数字、连字符、句点、下划线和冒号之外的其他字符)时,才需要加引号。所以,在这个例子中,只有alt属性的值必须加引号(但是给所有属性值都加上引号也没有坏处)
图1-30 在XHTML中,所有属性值都必须加上引号
● HTML在字母大小写方面很灵活,但是XHTML很严格,它要求所有元素、属性和预定义值都用小写字母(图1-31和图1-32)。
图1-31 在HTML中,以大写或小写字母编写元素名、属性名或预定义值是无所谓的
图1-32 在XHTML中,所有元素名、属性名和预定义值都必须用小写字母
● 如果属性值与属性名相同,那么HTML允许忽略属性值,而XHTML要求显式声明所有的值(图1-33和图1-34)。
图1-33 在HTML中,某些属性(比如这里的noshade)可以没有值
图1-34 在XHTML中,必须显式声明属性值。对于在HTML中没有值的那些属性,只需将属性名用作属性值
为XHTML多做的工作会带来哪些回报
你可能会怀疑是否值得为引号这样的琐碎小事操心。答案是肯定的。
XHTML的严谨性有许多好处。想象一个干净的车间,锤子和螺丝刀挂在墙上的固定位置,所有螺母和螺钉都放在贴了标签的容器中。这样就很容易找到你需要的东西,这会使工作轻松很多。同样,XHTML帮助你保持代码的一致性,保持良好的结构,避免非标准的标记,也会使后续的工作轻松很多,包括更新和编辑代码、用CSS进行格式化、从数据库生成代码或将代码转换到数据库中以及在其他系统(比如手持设备)中利用这些代码。
另外,XHTML是从HTML转换到XML的一个逻辑步骤,因为它使用大家熟悉的HTML元素和属性,同时使用现代的XML语法。因为XHTML是新标准,可以确定其他新技术和未来的技术会支持它。
XHTML最重要的好处之一或许是,XHTML标准的严谨性更可能使得所有平台上的浏览器正确且一致地支持它,这具有重大的商业价值。另外,因为美国法律和许多其他国家的法律现在要求网页具有可访问性,所以不应该忽略这个问题。关于可访问性法律的更多信息,请访问http://www.w3.org/WAI/上的W3C Web Accessibility Initiative。
关于标准的更多细节,建议访问The Web Standards Project(http://www.webstandards.org,这是一个致力于结束浏览器战争的设计者联盟)和Jeffrey Zeldman的A List Apart(这是一个出色的面向Web设计者的在线杂志,http://www.alistapart.com)。







