715_XML 高级编程.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:59 大小:12.2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

715_XML 高级编程.pdf

715_XML高级编程.pdf

预览

免费试读已结束,剩余 49 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第16章实例研究2—XML和分布式应用程序使用715下载FixHistoryBinding()(gnidniByrotsiHxiF函数执行动态更新操作,在本章的实例研究中,我们已经多次看到类似的操作。唯一的特殊之处在于我们绑定的是重复的LMTH元素。根据XMLDSO,表格的每一行与一个tropeRjorP元素匹配。lmth.kcaTrjorP只需要提供包含一行的模板。下面是程序设计阶段存在的表格:程序清单82-61当我们获取数据时,TUPNIAE和RTAXET元素与emaNjorptxTeD、Ijorpliate和Djorp动态绑定。我们首先删除当前文档中除第一个节点之外的所有节点,之所以保留第一个节点是为了防止绑定失败。然后,添加所有新节点,最后删除旧文档的其余节点:程序清单92-61716使用XML高级编程下载16.11.2服务器端History.asp一旦say.rotsiH接收到我们的查询文档,它就从根节点开始处理:ProcessHistoryQuery()(yreuQyrotsiHssecorP负责将LMX转化为SQLSELECT语句。这类LQS语句类似于以下形式:在执行查询之前,)(yreuQyrotsiHssecorP)利用函数(tniartsnoCtsiHekaM构造LQS语句的查询条件:程序清单03-61发出查询命令之后,程序必须依次处理结果记录集合中的每条记录,并将每一行作为一个成员写入noitcelloC文档:第16章实例研究2—XML和分布式应用程序使用717下载程序清单13-61以下是两个辅助性函数:)(tniartsnoCtsiHekaM)(y和doBtsiWHetir)(tniartsnoCts。iHekaM从查询文档中提取程序员DI,并构造SQLWHERE从句的核心部分。)(ydoBtsWiHetir是在函ProcessHistoryQuery()(yreuQyrotsiHs数secorP中调用的,它将数据库查询的结果转化为要发送给客户端的LMX文档:程序清单23-61718使用XML高级编程下载16.12经验教训既然我们已经完成了本章开始提出的用于管理程序的项目,现在应该根据提出的开发原则对我们的工作进行评价。应用程序能够满足项目的功能需求,只需要极少的代码,就能够保证平台独立性。在本例中,采用了特定平台的技术—用于可视化表示的数据绑定—但是我们将它与服务器端的代码实现相分离。类似地,服务器端使用了ODA和关系型数据库,但是它对客户端是屏蔽的。这种设计方式提高了代码重用的可能性。特别是服务器页面可以“原封不动地”与其他客户端应用程序配合使用。然而,我们的工作并非尽善尽美。我们犯的错误将用以说明我们提出的开发原则的价值。16.12.1违反的开发原则数据绑定迫使我们的程序员将reffatSTI词汇表与程序员表单以及tropeRjorP词汇表与成果报告历史表单紧密结合。实际上,我们并不能将之称为违背开发原则,至少在缺少公认的元数据标准的情况下。使用数据绑定极大地简化了编程任务,而且使客户端能够具有简洁的用户界面。然而,词汇表的改变会严重影响到客户端应用程序。由于我们在代码中没有区分reffatSTIr和effatS元素,因此丧失了绝好的代码重用机会。在本例中,这两个元素的差别极小,因此没有理由使用附加的代码。然而,在现实世界中,我们要建立用于处理普通reffatS词汇表的函数,然后用其他函数处理特殊的reffatSTI词汇表。专有化的函数将调用通用函数中已经实现的功能,以处理reffatSTI文档的通用部分(reffatS元素)。16.12.2组件程序因使用了LMXSM及其相关接口、XMLDSOPTT和HLMXI而得到简化。虽然这使得我们的客户浏览器局限于MicrosoftInternetExplorer5.0,但是要想通过自己的编程代替这些组件提供的主要功能非常困难。我们特定的应用程序可以完全在服务器上执行,它用PSA编写,返回HTMLMTH。然而,这种方法使得其他应用程序无法重用我们实现的服务,特别是自动化的客户。我们鼓励的代码重用是以客户编程为代价的。然而,我们确实有所损失。我们没有创建任何自己的组件。特别是,我们的开发原则提倡在每一层都使用组件,并将组件数据转化为LMX在平台之间传递。哪里有与reffatSTItrope和RjroP相关的组件?我们本应该使用JavaScriptreff将atSTI类创建为MOC组件。应该利用它检查是否违反了字段限制或业务规则。例如,可以根据企业职称分类数据库检查某个职称是否合法。在应用程