下面这段简单的代码展示了如何在客户端页面中创建一个XMLHttpRequest对象:
2.1.4 AJAX工作原理
AJAX典型的工作过程如下所示:在会话的开始,浏览器加载了一个Ajax引擎,其采用JavaScript编写,主要负责绘制用户界面以及与服务器端通讯。用户使用某个基于AJAX的功能后,引擎便开始异步访问服务器,而不用耽误用户的时间。当访问结束后,Ajax会将结果传回,客户端此时可以根据结果或者提示用户某些信息,或者为用户提供某些服务。AJAX技术与传统Web操作间之所以能够产生如此大的差异,关键在于AJAX中“异步”的特性,这个过程可用图2-2。
8
图2-2 Compare with synchronous and asynchronous web application(传统web应用的同步交
互过程和AJAX应用的异步交互过程的比较)
AJAX技术特点和优势
Ajax作为一种web领域广泛运用的技术,有许多传统web技术无法比拟的优点,主要体现在一下几个方面:
? 增加用户愉悦的体验。应为可以不刷新整个页面更新信息,所以给用户的视觉效果比以前的WEB系统大大提高,系统地响应速度也得到很大的提高;
? 减轻了网络负担。因为很多情况下不需要真个页面刷新,网络上只需要以XML格式或者其他自定义的格式传递所需的数据即可,大大的减小了网络上数据的传送量;
? 弱化了桌面程序和服务器程序的差别。提出了“富客户端”的概念,在WEB客户端也能处理一些事情;
? 减轻了服务器负载。对一些大型的网站,服务器的资源非常宝贵,AJAX技术能将部分处理分担在客户端,从而减轻了服务器端的负担,使得相同的服务器单位时间能提供更多的服务;
? 更新了开发理念。以前一些客户端的特殊效果,比如拖拽,分层展开,及时提醒
9
等等只能在桌面软件上实现,现在通过AJAX技术,这些己经不再困难; ? 使Web程序更加规范。CSS、XML和XSLT被提到了前所未有的高度,使得Web程序的开发更加规范。同时,一些基于AJAX开发的辅助工具也为我们的开发提供了很大的便利。
2.2 XML技术
2.2.1 XML的历史与背景
XML是从1996年开始有其雏形,并向 W3C(全球信息网联盟)提案,而在1998二月发布为W3C的标准(XML1.0)。 XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从60年代就开始发展的 GML(Generalized Markup Language)标准化后的名称。
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
XML与Access、Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。
10
2.2.2 XML系列简述
XML不仅仅是XML1.1规范,围绕XML的是各式各样的XML标准和产品,他们与XML组合起来解决大量有关把XML引入主流计算的问题,即表现、结构和转换。这些组成了通常所说的XML系列。如图2-3所示,XML从大量的支持技术中产生力量。
图2-3 XML技术序列
2.2.3 XML语法简述
XML文档的基本结构由序言部分(Prolog)和一个根元素(Root element)组成。序言包括了XML声明和DTD(或是XML Schema),DTD和XML Schema都是用来描述XML文档结构,也就是描述元素和属性是如何联系在一起的。根元素(也称文档元素),由文档中的其它所有标记和字符数据组成。元素是XML文档的基本组成部分。
图2-4 XML文档示例
下面是一些基本的语法规则:
? 每个文档有且仅有一个根元素(Root),其它所有元素都是它的子元素。
11
? 每个元素(Element)对的上下文(context)关系要正确。即元素之间必须正确的嵌套。因为XML是半结构化的数据,可以用XML描述树来表示起结构,所以它的逻辑结构和语法都有严格定义(如使用DTD或Schema)。
? 每个元素(Element)都必须有开始和结束标识(‘<’和‘>’)。元素的内容可以是其它的元素、字符数据、字符引用、实体引用、PI、注释和CDATA(Character DATA,字符数据)节,元素也是能够拥有属性的唯一基本类型。 ? 元素的属性值必须由单引号(‘)或双引号(“)包含。 2.2.4 XML解析技术
随着XML越来越广泛地被采用,高效解析XML文档也变得越来越重要,尤其是对于那些要处理大量数据的应用程序,这种技术尤为重要。不正确的解析会导致过度的内存消耗和过长的处理时间,从而有损于可伸缩性。
通常,用于XML解析的API可以分为两大类:基于时间流的API和基于树结构的API(例如DOM);而基于时间流的API又可以分为“推”模式(比如SAX)和“拉”模式(比如STAX)两种类型。
图2-5 基本的XML解析API
以下针对这三种类型的典型API进行分析比较,指出它们各自的优点和不足之处,从而为接下来的嵌入式XML解析器的设计提供必要的选型依据。
2.2.4.1 DOM
DOM是W3C支持的标准应用程序编程接口(API),是一种与平台和语言无关的接口,
12