• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

载的目录文件包含8 000本关于花园的图书, 25 000本关于汽车的图书, 2本关于X M L的图书,
那么注册时仅表示出对X M L兴趣的订阅者只会收到关于这2本X M L图书的信息。
出版商/购买者之间的推模式有几个关键的优势,使得它对于许多应用来说是一个极具吸引
力的选择:
• 它节省了购买者的时间,因为不再需要翻阅出版商的信息,以了解最新变化。
• 它使得信息发布者能够节省宝贵的资源和带宽,因为服务器不再需要处理和服务由客户端
可能发出的大量请求(因为没有发生什么变化)。
• 出版者知道订阅者更希望了解的是信息,所以不再依赖于读者记得回到源位置来查看是否
有更新信息。
可能时下最流行的出版商/购买者服务的应用就是新闻邮件和We b站点的更新通知。在这两
种情况下,出版商知道客户端感兴趣的是他们所提供的信息,或者提供的特定服务,所以在相
关事件(例如We b站点中增加了新页面)发生时会把信息用电子邮件通知客户。当客户接收到信
息时,会在空闲时阅读其中的内容,再决定是否采取进一步的动作,例如点击可能包含在电子
邮件当中的超链接。这些类型的应用也可能根据过滤、传输、从服务器向客户端传递数据的原
则进行构建。这意味着B C I S的编制风格使它很容易就能支持任何类型的信息和传输机制。正是
出于这一原因,这类应用的设计看起来稍微有些复杂,但我们希望在本章结束时大家能够理解
其中的原理。
到本章结束时,我们将了解到:
• 如何在Visual Basic中使用S A X解析器处理任意大小的X M L文档,且无须使用太多的内存。
注意,虽然我们使用的是V B,我将保证大家能够掌握这类应用如何用任意语言实现,因
此我们也将解释任何“ V B主义”的内容,虽然对于那些只进行过C / C + +或J a v a编程的人来
说这有一些古怪。
• 一种有趣的X S LT替代品,通过将元代码用于模版,能够实现高性能的、编译过的样式表。
• 如何开发一个基于X M L的推模式程序,它适用于许多不同的应用。
17.1 图书目录信息服务
在B C I S中有三种目标客户类型:
• 订阅者—根据所选择的两个目录,使用这类服务接收有关书籍的信息(过滤的数量可以
是任意数量,之所以本例中为两个是为了减少代码的复杂性)。
• 出版商—希望把它们的书籍的信息传递给订阅者的公司或个人。
• 广告商—类似A m a z o n . c o m这样的公司,它们在线销售书籍,并向在传递给订阅者的信
息中包含到它们的超链接的服务支付费用。
如果一名广告商既是出版商,又是订阅者也不足为奇。
在本章的实例研究中,我们不会特别讨论出版商。他们负责创建X M L目录文件,其中包含
将由系统处理的图书信息。正如我们稍后将看到的,在本实例研究中, B C I S与订阅者之间的交
互仅仅包括将图书目录文件拷贝到某个文件目录中。这种方法使得公司很容易将信息发布到
B C I S服务器上,它们只需通过F T P将X M L文档上传,但这也意味着你可能需要扩展系统,你应
该决定对于推销给订阅者的每本书,是否向出版商收费。
本章的实例研究也很少涉及广告商,我们将实现的系统仅支持一个广告商,而且它是在转
换代码中硬编码的。你当然可以对此进行扩展,使之包含多家公司。
17.1.1 系统概述
B C I S的系统结构如图1 7 - 1所示。
出版商创建一个X M L文档(显示为C a t a l o g . X M L),其中包含要过滤的所有信息,他将这个
文件推给订阅者。
文件U s e r s . X M L定义了订阅者及其过滤器。本章描述的系统并不提供用于管理该文件的U I,因此
为了增加更多的信息或者改变配置,你不得不(使用类似记事本的工具)手工修正和编辑这个文件。
S A X用户个性化引擎加载用户信息,并根据每个用户的设置转换图书信息,为每个用户创
建一个输出文件。根据我们已经讨论过的出版/订阅模型,每个转换后的文件可以通过电子邮件
发送给用户。
1. XML文档格式
订阅者信息和图书信息保存在不同的(独立的) X M L文档中。由于我们使用的S A X解析器
不支持有效性验证,因此系统不使用D T D或模式验证文件的有效性。实际上,这一点对于我们
第17章实例研究3—图书目录信息服务使用721 下载
的实例研究没有很大的影响,但是它意味着如果你从本实例中派生出的系统需要有效性验证,
你必须亲自进行验证(例如:保证根元素名称正确等)。
图17-1
(1) Catalog.XML
本章的实例研究提供了一个X M L目录样例,名为C a t a l o g . x m l,该文件及本书的其余代码均
可以从站点h t t p : / / w w w. w r o x . c o m /下载。该文件中包含的图书信息文件的格式是我们非常熟悉的,
我们在本书中一直沿用这种格式。
程序清单1 7 - 1
以上X M L文档有根元素< C a t a l o g >,它能够包含任意数量的< B o o k >元素。每个< B o o k >元素
722使用XML 高级编程
下载
SAX用户个
性化引擎
出版
创建
订阅着1
订阅着3
都有多个子元素,它们的含义不言自明,而且我们在以前的章节中曾详细介绍过。
(2) Users.XML
本章的实例研究中提供的X M L用户文件样例名为U s e r s . X M L。有关B C I S中订阅者的信息定
义如下:
程序清单1 7 - 2
以上X M L的根元素为< U s e r s >,它能够包含任意数量的< U s e r >元素。每个< U s e r >元素有多个
子元素(其中只能包含文本内容):
表1 7 - 1
子元素说明
< N a m e > 订阅者的姓名,用于记录日志
< O u t p u t F i l e > 转换时输出文件的名称
< E m a i l >(可选的) 如果存在, < O u t p u t F i l e >将根据该地址通过电子邮件发送给用户
< D e l i v e r y F o r m a t > 指定应用于用户的转换样式表类。它的值可以是X M L或H T M L
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(65)