Web开发学习心得1——什么是HTML,XHTML
Web世界发现到现在,已经有了一套比较完善的体系,这套体系的基础就是HTML+CSS。
最初的HTML不仅标记结构,也标记网页如何展现。因此,就出现了如<p>这样的表示结构的元素与<center>这样的表示展现的元素混杂的局面。那个时候还没有CSS。
后来有了专门表示展现的CSS,人们发现,应该把HTML进行一番清洗整理,使HTML只表示结构,而把如何展现的责任完全交给CSS。该设想得到了绝大多数的支持,因此,W3C在1999年末制定了HTML4.01(也是目前的最新版本),该标准对HTML进行了大规模的清洗整理,像<font>、<center>等表示结构的元素都被扫地出门。从此,HTML只表示结构,而CSS则全责负责展现。
然而,事情却没这么简单,有一大批的人习惯于使用旧的HTML进行开发,有一大批的旧式的网页仍然需要得到支持。为了应对这种情况,W3C在HTML4.01下制定了3个文档类型,分别是严格型、过渡型、框架型。
所谓严格型,就是指完全符合HTML4.01标准的文档类型,在该类型下,所有表示展现的元素都不允许使用,另外,元素嵌套规则等都必须严格符合HTML4.01的标准。在一个文档开头加上如下DOCTYPE类型,即表示该文档是严格型的:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
所谓过渡型,顾名思义,就是过渡类型的文档,类型的文档并不排斥HTML旧式的元素,在该类型下,你可以使用旧式的元素,也可以使用新的元素。元素之间的嵌套规则等也不严格。在一个文档开头加上如下DOCTYPE类型,即表示该文档是过渡型的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
所谓框架型,是指允许包含框架元素的类型,即<frameset>元素。框架结构的页面现在普遍认为不是一种好的页面结构方式,因此已经很少使用。在一个文档开头加上如下DOCTYPE类型,即表示该文档是框架型的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
从以上的描述中,我们知道,W3C推荐的页面模式是严格型的模式,之所以存在过渡型的模式,完全是不得已而为之的权宜之计。设计良好的页面,HTML应只表示结构,而CSS则全责负责展现。且HTML的结构也应该是良构的(什么叫良构的下次再说)。
相信大家一定听过XHTML吧,但也许并不清楚XHTML、HTML、XML到底是什么关系,下面就来讲讲这个问题。
首先我们得明白什么是XML,这个我就不多讲了,大家可以参考别的资料。
在明白了什么是XML之后,我们再回来讨论刚才那个问题。从HTML、XML两者比较发现,它们有一个重要的公共点,即都是标记语言,区别是,HTML是不可扩展的,而XML是可扩展的。下面请大家考虑这样一个问题——HTML文档它是XML文档吗?我们发现不是。原因1,XML区分大小写,而HTML不区分大小写;原因2,XML的元素都是封闭的(即都有结束标签),而HTML的空元素是不封闭的(即没有结束标签,如<br>,<img>等);原因3,XML元素的属性值必须带双引号,而HTML没有此规定。于是,人们想了,如果HTML文档是XML文档,那该多好啊,那样的话,所有针对XML的操作,都能用来针对HTML来操作。于是,W3C在2002年发布了XHTML1.0版本,该版本将HTML4.01改造成XML的一个子集,它规定,所有元素都必须使用小写,所有空元素都必须有结束标签,所有属性值都必须带双引号。从此,HTML的发展进入了一个新的阶段,XHTML成为了XML的一个子集。
理解XHTML是XML的一个子集这点非常重要,像前面说的,理解了这点之后,我们就应该知道,所有针对XML的操作都可以针对XHTML,所以,像XPath,XSLT,Linq to XML等都是可以用来操作XHTML的。
由于HTML4.01有3种文档类型,相应的,XHTML1.0也有3种文档类型,这里不再赘述。
顺便说一下,VS2008默认的文档类型是XHTML1.0过渡型的。
下次将讨论XHTML的块元素、内联元素、div等方面的知识,以及讨论什么是良构的XHTML。