2.3 XHTML基础
2.3.1 XHTML简介
XHTML(eXtensible HyperText Markup Language,可扩展的超文本标记语言)是一个基于XML的标记语言,是为取代HTML而存在的。XHTML是一种过渡技术,XHTML 1.0是一种在HTML 4.0基础上优化和改进的新语言,目的是基于XML应用。XHTML是一种增强了的HTML, XHTML是更严谨、更纯净的HTML版本。它的可扩展性和灵活性将适应未来网络应用更多的需求。XHTML 1.0 Transitional版本与HTML 4.01几乎是相同的。
2.3.2 XHTML语法
XHTML比HTML更简洁,语法也更严谨。本书所制作的HTML页面所使用的便是XHTML 1.0 Transitional版本。
XHTML遵循以下几点语法规则。
(1)XHTML标签的属性名称必须小写。
(2)XHTML属性值必须加引号。
(3)XHTML属性不能简写。如表单控件<input>标签的checked属性,不能写成<input checked>,必须要写成<input checked="checked">,这样才是正确的。
(4)用id属性代替name属性。
(5)XHTML DTD定义了强制使用的HTML元素。所有XHTML文档必须进行文件类型声明(doctype declaration)。在XHTML文档中必须存在html、head、body元素,而title元素必须位于head元素中。但文件类型声明并非XHTML文档自身的组成部分,它并不是XHTML元素,也没有关闭标签。
以下代码是Dreamweaver新建的一个XHTML文件结构。
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"content="text/html; charset=utf-8"/> <title>无标题文档</title> </head> <body> </body> </html>
在XHTML中,<html>标签内的xmlns属性是必需的。然而,即使当XHTML文档中没有这个属性时,w3.org的验证工具也不会提示错误。这是因为xmlns是一个固定的值,即使没有把它包含在代码中,这个值也会被添加到<html>标签中。
2.3.3 XHTML与HTML的区别
HTML和XHTML的区别简单来说,可以认为XHTML是XML版本的HTML,为了符合XML的要求,XHTML语法上要求更严谨。
(1)XHTML所有的标签都必须要有相应的结尾标签。在HTML中,<li>标签可以不用关闭,即不用</li>标签也是可以的,但在XHTML中,必须要有严谨的结构,所有标签必须关闭,否则是不合法的。例如单标签,在标签结束的右尖括号前也必须加上“/”来关闭。
(2)XHTML的标签名是区分大小写的。
(3)所有的XHTML标签都必须合理嵌套。因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,如<p><b></b></p>这样的嵌套是正确的,然而如果写成<p><b></p></b>,则是不正确的。合理的嵌套必须是严格对称的。
(4)所有的属性必须用引号("")括起来。
(5)所有<和&等特殊符号用转义码表示。
任何小于号(<)如果不是标签的一部分,都必须使用转义码“&lt; ”;任何大于号(>)如果不是标签的一部分,都必须使用转义码“&gt; ”,任何“与”号(&)如果不是实体的一部分的,都必须使用转义码“&amp; ”。
(6)XHTML的所有属性不能简写。XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如,<input type="checkbox"checked="checked">。
(7)XHTML不能在注释内容中使用“--”符号。“--”只能写在XHTML注释的开头和结尾,不能出现在内容的中间。例如下面的代码是无效的:“<!--这里是注释-----------这里是注释-->”。但用等号或者空格替换内部的虚线:“<!--这里是注释============这里是注释-->”,这样写就是合法的。
(8)XHTML中插入的图片必须要有说明文字。每个图片标签都必须有alt属性来表述说明文字。比如:<img src="ball.jpg"alt="large red ball"title="large red ball"/>。为了兼容火狐和IE浏览器,对于图片标签,尽量采用alt和title双属性,单纯的alt属性在火狐下没有图片说明。