Jan 16, 2008

学习从HTML过渡到XHTML

XHTML使用XML的特性来定义和HTML 4.01标准几乎完全相同的标记语言。XHTML比HTML使用起来框框要多很多。

大多数情况下,创建XHTML文档和创建HTML文档没有什么区别。要创建XHTML文档,需要做和知道下面几件事情。

1、声明文档类型

为了能让XHTML浏览器可以正确地解析和显示XHTML文档,XHTML文档首先要声明文档类型,告诉浏览器创建文档所使用的XML版本。然后说明在文档中定义元素的XHTML DTD的版本。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
这里使用的是过渡版的DTD。可以声明为严格版的DTD和过度版的DTD。

2、理解名称空间

XML DTD定义了任意数量的元素和属性名称。这些元素和属性名称都存储在DTD唯一的名称空间(namespace)中。浏览器在读取和解释文档时,会在名称空间中寻找这些元素和属性的使用方法,这样才能正确解释。

XML可以使用多个DTD,因此需要多个名称空间。在创建过渡版本的HTML文档时,如果要同时包含其他符合XML的元素,就要声明其他的名称空间。使用 xmlns(XML namespace的缩写)属性来定义一个或多个可供选择的名称空间。

XHTML文档中至少应该包含一个xmlns属性,以指定整个文档所使用的主要名称空间。
<html xmlns="http://www.w3.org/1999/xhtml">
如果要定义其他名称空间,比如需要使用数学标记,可以再次使用xmlns来定义。
<html xmlns="http://www.w3.org/1998/Math/MathML>x2/X</div">
这种情况下,与XML兼容的浏览器会使用http://www.w3.org/1998/Math/MathML名称空间来判断

标签是依据MATH版本来显示成除法等式,还一句XHTML版本来解释为层。

如果在每次都要显示为除法等式,那这样的xmlns定义效率就低了。更好的方法是在文档的开始处确定和标注名称空间,然后在需要改变的元素前标注一个前缀来调用。如:
<html xmlns:math="http://www.w3.org/1998/Math/MathML">
现在math命名空间可以在随后的文档中简写成“math”,如:
<math: div>x2/X</div>
绝大多数XHTML文档都不需要定义多个名称空间,但应该知道和理解存在着多个名称空间。

3、XHTML比HTML严格之处

XHTML和HTML的最大区别是,XHTML格式良好。

3.1 正确地嵌套元素

就是必须按照打开标记元素的顺序关闭他们。这个很容易理解,不多解释。

XHTML有一个嵌套限制,如下:

<a>标签不能包含其他<a>标签。

<pre> 标签不能包含<img>、<object>、<big>、<small>、<sub> 或<sup>标签。

<button> 标签不能包含<input>、<select>、<textarea>、< label>、<button>、<form>、<fieldset>、<iframe> 或 <isindex>标签。

<label>标签不能包含其他<label>标签。

<form>标签不能包含其他<form>标签。

3.2 结束标签

就是每个宝航其他标签或内容的标签都必须有对景的结束标签。这个也很容易理解,不多解释。

3.3 处理空元素

对于空白标签使用空格加斜杠的格式来表示,如<br />。这个也很容易理解,不多解释。

3.4 区分大小写

XHTML严格区分大小写,使用小写字母定义所有的HTML标签和属性。其他大写或混写标签和属性都不符合规范。

3.5 引用的属性值

所有属性值必须加上双引号。

3.6 明确的属性值

在XHTML中,每个属性都必须有一个值。没有只的属性必须使用自己的名称作为值。例如checked=”checked”。

3.7 处理特殊字符

对于在文章的Javascript和CSS声明中使用的< 和&字符,XHTML要严格的多。因为XML浏览器会简单地删除掉文档中所有<!--和-->中的注释内容,所以隐藏的焦痕和样式表将被删除。虽然可以将脚本放在CDATA中,但旧的浏览器不认识,也会将脚本忽略。所以推荐将脚本和样式保留在外部文件中,然后在文档中使用适当的外部链接来调用他们。

此外,在XHTML中,属性值中的特殊字符一定要用对应的实体。例如&一定要写成&。大于号和小于号一定要写成<和>等。

3.8 id和name属性

id和name属性都用来允许为文档中的任何元素关联一个标识符,以便可以被超链接或脚本调用或使用。

XHTML给id属性非常高的优先权,所以建议使用id属性来绑定文档中的元素。弱国必须要在某个标签中使用name属性,最好在其中也加入相同的id属性。

4、XHTML 1.1

XHTML1.1是以XHTML 1.0的严格的DTD开始的,在这个基础上进行了修改。1.1版本消除了所有不赞成使用的元素,以及仍在web上得到广泛使用的说哦有浏览器扩展。

要注意两个地方:第一,lang属性已经从每个元素中去除,应该使用 xml:lang属性;第二,name属性已经从<a>和<map>中除去,应该使用id属性。最后1.1标准定义了一组新的元素,称为“ruby”文本的印刷功能。这个我没见过,也没怎么弄清楚怎么使用,以后再说明。

以上就是XHTML使用需要知道和注意的地方,其实和HTML区别不大。

至于是否需要和应该使用XHTML,这个已是大势所趋,显然。网上关于web 2.0的介绍和讨论中经常会说到,就不说了。

最后是一个最小化的XHTML文档的例子。
<?xml version="1.0" encoding="UTF-8"?>
<!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/TR/xhtml1" xml:lang="en" lang="en">
<head>
<title>Your document title</title>
</head>
<body>
...your content goes here...
</body>
</html>

参考:《HTML & XHTML权威指南》

No comments:

Post a Comment