[ASP.NET入门随想九] 宽容
——W3C 的Web标准



 
     古老的山谷村民生活富足,守旧老人维护着经典和秩序。一位不满现状的漂泊者却宣称外面有更好的世界在等着大家,并鼓动村民跟随前往。但守旧老人的威严和律法的神圣压制了村民的躁动,漂泊者也被处死。一天灾难降临山谷。尽管守旧老人依然试图维护经受村民的求生欲望挑战的律法。但暴动还是发生,老人们被击败,新的道路和新的生活被村民找到。怀着感恩之心,后人把以前的漂泊者奉为先知,尽管他早已尸骨无存。
—— 房龙《宽容•序言》

■ 宽容 – W3C 的梦想
    每一部煌煌巨作似乎都始于纯真的梦想,Tim Berners-Lee在BLOG中写到:“万维网的目标就是建立一个可以分享信息的地方。我们应该有一个地方,每个人都可以进行贡献和创作。”于是,一个用于展示信息内容,脱胎于SGML语言,基于纯文本的超文本标记语言(HTML)问世了,配上用于信息定位的资源定位技术(URL)和用以共享的应用层协议(HTTP),这就是Berners-Lee给我们带来的Web架构。

    随之出现的万维网开始变得混沌起来,各种力量间的博弈充满灵动、鲜活、阴谋和智慧:微软利用其操作系统优势捆绑IE挤跨网景;传说百度阳谋封杀GOOGLE长达一两年之久;李开复最近似乎成了中国计算机专业学生的教父;中国南北电信自从分割以后就相互难通……几年光景下来,人们发现万维网看是似world wide,却往往从属于某种商业力量,划江而治。

天下分久必合似乎永远是真理,Web标准是W3C工业联盟针对混沌的WEB客户端技术而树起的一面自由之旗,它梦想做到:让所有人受益于万维网,不会因他们的硬件、软件、网络基础设施、母语、文化、地理位置、生理或心智能力而有任何分别。

■ 书同文 – 标记语言的发展历程
    撇开远古时代的SGML不谈,最出名的标记语言当属Tim Berners-Lee的HTML。在设计之初他的想法非常简单:将页面编辑与浏览系统合二为一,以文本格式为基础,用标签(Tag)来描述Web页面及页面间链接。其具有些优势使之广为流传:一是简单,几乎任何人用一个下午的时间就能掌握并用记事本编辑出Web页;二是可以在任何平台和浏览器上运行;三是超链接使得万维网中所有Web页形成网状互连。

 

    图9-1是一个HTML的范例及实际浏览效果,可以看出,HTML几乎是以一种最简洁的方式完成信息的存储和浏览。标准标签担负着两个任务:一是表示文档本身的组成结构;二是定义浏览样式。而从图书管理员的角度来看,上例描述内容的数据结构如图9-2。
 
    随着越来越多的内容移至网上,HTML的第一个麻烦出现了。早先的HTML仅以文本为基础,但很快人们就开始琢磨在网上放置图像、音频、视频等多媒体信息。这时,要加入什么样的标准标签演化成Netscape和微软间的商业斗争。这不是一个简单轻松的话题,如果Netscape和微软最终产生两种完全毫不相干的HTML版本,人们将不得不在两种浏览器之间进行选择。更可怕的是,内容发展商必须要么在这两种版本的销售商中选择其一,要么花费更多的人力物力来创建网页的两种复合版本。作为两者妥协的结果,加上其它力量的制衡,当然也离不开Berners-Lee的个人努力——1994年10月负责标准的W3C出现。

    HTML既有控制文档结构的标签,如<p>、<ul>,又有控制表现的标签<font>、<b>,这很容易使得网页编辑者把文档的结构和表现混杂在一块,最为人熟知的莫过于table排版模式,嵌套的若干表格中可能没有一个是真正用于列表数据。这是HTML遇到的第二个麻烦,带来的问题是文件尺寸无限变大、修改样式困难等,更重要的是,图书管理员角度的数据结构已被表现标签完全破坏,如 “作者:<b>老燕</b>”。作为信息交换的媒介,被破坏的数据结构使得HTML页面二次利用价值很低。96年逐渐成熟的CSS使得页面结构与表现彻底分离成为可能,也就是说在HTML文档中可以不出现任何页面表现标签。与CSS相辅相成的HTML标签是<div>(块)和<span>(内置),它们提供一个把结构添加到文档的通用机制,而未在内容中引入其他表现层的东西。

<html><head><title>宽容——W3C的Web标准</title></head><body>
<div id="secondTitle">ASP.net入门随想九</div>
<div id="title">宽容——W3C的Web标准</div>
<div id="author">老燕</div>
<div id="summary">简介Web标准的发展与作用</div>
<div id=” catalog”><ol><li>宽容 – W 3C 的梦想</li>
<li>书同文 - 标记语言的发展历程</li>
<li>佛靠金装 – CSS的作用</li>
<li>沟通 – DOM与ECMASript</li></ol></div>
<div id="content">正文段……</div>
</body></html>

    从一开始HTML的一项基本规则是如果浏览器遇到一个不理解的标记符,就忽略之。这样的灵活性使得我们可以在文档中出现<author>标记符,然后浏览器只是简单地跳过它。这是一种实践和扩展Web,而又保持向后兼容的好办法。但更好的方法是不再强烈依赖于集中固定的标准,而是让浏览器能够学习新的标记符。突然之间,你可以不再担心标记符的意义,所有束缚一下被解开。或许我们用图书管理员的角度来考虑问题是最适合不过的——我们需要的只是向对方传递数据本身,这种描述甚至可以方便地从数据库直接生成,于是有XML文件如下:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<article>
<title>宽容——W3C的Web标准</title>
<secondtitle> ASP.net入门随想九</secondtitle>
<author>老燕</author>
<summary>简介Web标准的发展与作用</ summary >
<catalog>
<para>宽容–W 3C 的梦想</para>
<para>书同文-标记语言的发展历程</para>
<para>佛靠金装–CSS的作用</para>
<para>沟通–DOM与ECMASript </para>
</catalog>
<content>正文段……</content>
</article>

    但仅仅有上述描述文件,标签的意义只有自己知道,定义文件(DTD或Schema)正是用以描述标签的含义和结构。其它系统通过定义文件来识别你的XML,或再配上XSL样式文件送给浏览器浏览。

    可以预见的是,如果万维网上的所有Web页都是XML文件,信息流可以快速流转。但现实是,全球已堆砌出近80G技术水平参差不齐的HTML网页。要想让这些网页在一夜之间一蹴而就成XML显然缺乏足够动力,于是W3C制订出被其称为“温和的、友好的升级方式”的页面描述语言——XHTML,XHTML改进关键在于两点,一是遵循XML语法规则书写HTML代码;二是表现与结构分离。

■ 佛靠金装–CSS的作用

    样式表(Cascading Style Sheets)是一种告诉浏览器怎样为页面内容进行修饰(如字体、颜色、空间)的简单机制,W3C在未被广泛支持的CSS2甚至梦想支持可视、听力、盲文等装置,用他们的官网原话说就是用眼睛、耳朵、声音和触控浏览网页。从用户体验和宽容的角度来看,CSS未来所承担的任务不是给网页化化妆这么简单。

    CSS的语法并不复杂,排版定位依赖于盒模型,如图9-3。但令人心烦的,主流的IE6.0和FireFox 1.x对盒模型的细节解释有所不同,据传IE7依然存在CSS bug。
 
■ 沟通 – DOM与ECMAScript
    页面对象模型(Document Object Model)用于提供统一的应用程序编程接口,将HTML或XML文档还原为一个树形(Tree)数据结构,Tree的每个节点表现为一个HTML标记或者HTML标记内的文本项。树形结构精确地描述HTML文档中标记间以及文本项间的相互关联性。只要修改相关Tree节点都具有的 nodeValue属性值即可操作文档中的任何标签,也可以方便地从页面的任何地方开始,沿着文档的树型结构在上(parent)、下(child)以及一侧方向(sibling)做节点导航。另外,DOM技术允许我们操纵文档的Tree结构,包括创建、删除以及移动节点。
 

    基于DOM的ECMAScript被W3C当着一统江湖的Web脚本语言标准。所谓的脚本语言是内嵌到HTML文件中并由浏览器解释执行以增加互动性和减轻服务器压力,基于对象(Object)和事件驱动(Event Driven)。但JavaScript和Jscript这对同父异母兄弟长期以来一直受到歧视,程序员们笑称它们除了能在网页中加点花花草草外别无特长,尽管程序员们需要花费大量时间来编写表单验证脚本程序,用户却只要在浏览器中点一下即可禁用而绕开验证。更令人抓狂的是各个版本的javascript虽然号称符合标准,但却都貌合神离,程序员们受尽苦头!

    尽管近期随着AJAX技术的出现,让javascript老树发出新芽,火了!可是我能放心把网站建立在一个脆弱的基础之上吗?网易的126邮箱最近改版,号称极速,可是关了javascript连邮箱操作界面都出不来,老妈妈能知道里头的缘由吗?很久以前看到这么一句告诫:不要依靠JavaScript,唉,我犹豫,徘徊中……