第1章 绪 论
1.1 什么是HTML语言
互联网(WWW)这个“魔鬼”从其诞生到现在也就仅仅经历了十几年的时间,但其发展可以说已经渗透了我们方方面面的生活,也造就了大批新兴的富豪阶级。如果说20世纪对人们生活改变最多的是电视,那么21世纪肯定是互联网。无论是现在炒的沸沸扬扬的所谓的网瘾(总感觉现在对网络的定义类似于清朝末年对火车的定义——震动龙脉,危及祖先,实在搞不明白世界这么多国家,中国的电脑普及率还很偏低,怎么就只有中国有网瘾一说,难道美国等欧洲人有抗体不成?),还是很多人宣称的那样“内事不决问老公,外事不决问百度”,其实互联网已经成为我们日常中不可或缺的一部分,电子办公(OA)代替了手工报告、电子商务(EC)代替了逛街、新闻网站代替了纸质报纸……可以说互联网真正改变了我们的工作和生活的方式。
作为互联网网页中最常用的展示语言HTML(HyperText Markup Language)越来越受到重视,同时在中大型的业务系统越来越多采用B/S(Brower/Server,瘦客户端系统)结构的今天,HTML语言不但是互联网网页的展示语言,在商业系统中也占有了非常重要的地位。
其实HTML这个名字只要是常上网的人绝大多数都应该听说过,那么HTML语言到底是一种什么语言呢?说到计算机语言大家可能首先想到的是Basic、C这些鼎鼎大名的程序语言,准确地说这些语言为编译性语言,是几乎所有大型程序的基础语言,而HTML语言是一种主要用于展示和排版的标记性语言。
1.1.1 标记性语言
那么什么是标记性语言呢?标记语言,也称置标语言,是一种将文本(Text)内容以及文本相关的其他信息(包括文本的结构和表示信息等)结合起来,展现出关于文档结构和数据处理细节的电脑文字编码方式。标记最早用于出版业,是作者、编辑以及出版商之间用于描述出版作品的排版格式所使用的。说得更明确一些,就是将信息的内容与其结构或展现方式分开,通过对信息中的一部分进行标记后由程序决定其展现方式的文本编辑 语言。
标记性语言就是把信息的分类和信息的内容分开,我们日常生活中与标记性语言类似的就要属简历了,比如——性别:男,这里“性别”是标记,说明这个项目的含义是什么,“男”是这个项目的内容。
例如程序输出“Hello World!”,如果没有置入标记,则是展现工具的默认输出。如果将标记置为:
<b>Hello</b> World!
则输出为“”。其中Hello为黑体展示,<b></b>就是表示黑体的标记。
总之大家应该记住的就是——HTML语言是标记语言,标记语言就是将信息的作用与信息的内容分离的一种文字编码格式。
1.1.2 HTML语言起源
要学习一种语言,多少要知道些这个语言的发展过程,否则就算你会使用,别人也觉得你是小白,这也是没办法的一件事。在这里我们大概讲述一下HTML语言的发展历程,算是一个简单的扫盲,这部分内容大家可以完全不用记忆,了解就好。
说到HTML的起源,就不得不说SGML(Standard Generalized Markup Language),即标准通用标记语言,SGML是1986年出版发布的一个信息管理方面的国际标准(ISO 8879)。该标准定义独立于平台和应用的文本文档的格式、索引和链接信息,为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签。其中Markup的含义是指插入到文档中的标记。标记分为两种:一种称为procedure markup,用来描述文档显示的样式;另一种称为descriptive markup,用来描述文档中文字的用途。制定SGML的基本思想是把文档的内容与样式分开。
SGML语言为语法置标提供了非常强大的工具,同时具有极好的扩展性,因此在分类和索引数据中非常有用。从其定义的结构和方式来说SGML非常完美。但是这种完美性也造成了这种语言非常之复杂,其复杂程度对于网络上的日常应用简直不可思议。不仅如此,SGML还非常昂贵。所以几个主要的浏览器厂商都明确拒绝支持SGML,这无疑是SGML在网上传播遇到的最大障碍。
HTML是在SGML语言定义下的一个标记性语言,是SGML的一个子集,HTML语言从1993年的第1版到1997年的4.0版历时4年,可以说从1997年开始的国际互联网大发展与HTML 4.0有密不可分的联系。
以下是HTML版本的发布时间:
(1)超文本置标语言(第1版)——在1993年6月作为互联网工程工作小组(IETF)工作草案发布(并非标准)。
(2)HTML 2.0——1995年11月作为RFC 1866发布,在RFC 2854于2000年6月发布之后被宣布已经过时。
(3)HTML 3.2——1996年1月14日,W3C推荐标准。
(4)HTML 4.0——1997年12月18日,W3C推荐标准。
(5)HTML 4.01(微小改进)——1999年12月24日,W3C推荐标准。
(6)ISO/IEC 15445:2000(ISO HTML)——2000年5月15日发布,基于严格的HTML 4.01语法,是国际标准化组织和国际电工委员会的标准。
(7)XHTML 1.0——发布于2000年1月26日,是W3C推荐标准,后来经过修订于2002年8月1日重新发布。
(8)XHTML 1.1,于2001年5月31日发布。
(9)XHTML 2.0,W3C工作草案。
HTML没有1.0版本是因为当时有很多不同的版本。有些人认为蒂姆·伯纳斯-李的版本应该算初版,这个版本没有IMG元素。当时被称为HTML+的后续版的开发工作于1993年开始,最初是被设计成为“HTML的一个超集”。第一个正式规范为了和当时的各种HTML标准区分开来,使用了2.0作为其版本号。HTML+的发展继续下去,但是它从未成为标准。
HTML 3.0规范是由当时刚成立的W3C于1995年3月提出,提供了很多新的特性,例如表格、文字绕排和复杂数学元素的显示。虽然它是被设计用来兼容2.0版本的,但是实现这个标准的工作在当时过于复杂,在草案于1995年9月过期时,标准开发也因为缺乏浏览器支持而中止了。3.1版从未被正式提出,而下一个被提出的版本是开发代号为Wilbur的HTML 3.2,去掉了大部分3.0中的新特性,但是加入了很多特定浏览器,例如Netscape和Mosaic的元素和属性。HTML对数学公式的支持最后成为另外一个标准MathML。
HTML 4.0同样也加入了很多特定浏览器的元素和属性,但是同时也开始“清理”这个标准,把一些元素和属性标记为过时的,建议不再使用它们。HTML的未来和CSS结合会更好。
HTML 4.01的新突破如下。
1997年HTML 3.2版已经极大丰富了HTML功能。
1997年12月推出HTML 4.0版,将HTML语言推向一个新高度,该版本倡导了以下两个理念。
(1)将文档结构和显示样式分离。
(2)更广泛的文档兼容性。
由于同期CSS层叠样式表的配套推出,使得HTML和CSS对于网页制作的能力达到前所未有的高度。
1999年12月,W3C网络标准化组织推出改进版的HTML 4.01,该语言相当成熟可靠,一直沿用至今。
HTML 4.01相比先前的版本在国际化设置,提高兼容性,样式表支持,以及脚本、打印方面都有所提高。
只需记住现在通用的HTML语言是4.0版和4.01版就足够了。
1.2 HTML语言规范
没有规矩不成方圆,可以说——软件爱好者和专业开发人员的区别很大程度上在于编程时有没有规范,就好像土匪和正规军的区别(我可没说软件爱好者是土匪,只是这种比喻更容易让大家理解什么是规范以及规范的重要性)。正规军要练习队列,走路要三人成行两人成列,被子要叠成豆腐块,连放牙刷的方向都要一样,这些对于真正的战斗是没有任何作用的,但是只有有了这些规矩才能使军队成为一个整体,所以很多时候土匪的单兵战斗力要强于一般士兵,但是一旦群体作战经常一溃千里,这就是规范的作用。规范能够让更多人在一起工作、战斗,发挥“1+1大于2”的能力。所以在本书的学习过程中,规范将贯穿始终,任何不符合规范要求的情况,均视为错误。
HTML语言是通过标记以及标记中的属性对进行文本信息进行定义,由浏览器等展现程序根据定义进行展现的。
HTML中的标记以<>中间加入关键字为开头,以</>加入与开头相同的关键字为结尾,在开头和结尾标记之间的部分就是标记的内容。在头标记中可以加入特定的字符作为标记属性并可以对特定属性进行赋值操作,标准HTML语法是由<标记名 属性名1="属性值1"…属性名n="属性值n" >组成。标记内如果有多个属性,中间需加入空格隔开,如:
<font color="red">Hello World</font>
font是关键字,标记内的color是属性,引号内的red是color属性的值,Hello World是内容。
font标记代表字体,也就是说在其标记内的所有内容的字体都根据这个标记内的属性改变。color是字体的颜色属性,其值等于red,说明所有标记内的字体的颜色都是红的,所以标记内的文本展现为红色,如下:
font是HTML内一个编辑字体的标记,在此只作为读者了解HTML标记规则使用,该标记在新的HTML 4.01中已经不建议使用,在此只作为读者了解标记用法的一个例子。
绝大多数标记支持多重嵌套,标记内可以嵌套与其相同或不同的标记,例如:
<font color="red">我们都知道学习<b>HTML</b>语言很重要</font>
其展示为:
其中HTML是黑体。但要注意标记间不能产生相互包含的情况,如:
<font color="red">我们都知道学习<b>HTML语言很重要</font></b>
在现在的大多数浏览器中显示为:
但有些要求很严格的浏览器则提示这行代码是错误代码,不能显示。
在HTML 4.0的规范中,很多要求并不是强制性的,本书采用的是最新的XHTML 1.0的规范,其比HTML 4.0要严格得多,当然写出的代码也更加易懂和易于修改,下面开始用几个小节的篇幅进行介绍。
事实上不按规范编程也未必一定不行,就好像被子不叠成豆腐块也不会对身体造成损害(有些说法说摊开了更利于身体健康),但规范就是规范,对也是对,错也是对,就是公理没有讨论的价值,必须被彻底执行。
1.2.1 书写规范
……