摘要 在当前的网络信息时代信息量不仅庞大而且源自于不同的数据源信息集成一直是研究的热点基于多代理(MultiAgent)的信息资源集成方案有所不足而XML集成机制的优点适于网络环境下基于XML的信息集成本方案包括系统的总体框图层次结构工作过程及信息系统主要部分的具体设计
关键词 XML资源集成DTDXSL WrapperDOM
引言
随着计算机技术特别是Internet的不断发展实现信息孤岛之间的集成与交互成为亟待解决的问题
在诸多解决方案中基于多代理(MultiAgent)的信息集成就是其中的一种该系统已被认为是建造大型复杂分布式信息处理系统的重要技术和框架在基于多代理的方法中资源集成的具体操作步骤是用户把请求提交给搜索代理由搜索代理对请求进行适当的转换发送给代理路由器代理路由器通过链接将查询请求发送给数据库代理数据库代理接受查询请求并进行具体的数据库操作然后把查询结果返回给请求者搜索代理对返回的结果进行识别若存在所需的资源则激活本地数据库代理对获得的信息进行记录由专家系统对所搜集的信息进行进一步的处理这种方法有一个明显的缺陷即必须明确数据库的格式代理才能正常工作
而XML技术则可以很好的解决这个问题用XML进行数据集成只需对所有的异构数据源增加一个以XML为格式的封装体即在不改变数据源的前提下用XML对数据源的定义描述字数据源的创建等相关信息进行封装供应链节点上所有数据源的封装体纳入全局的XML Schema或DTD并存储在XML虚拟服务器为系统检索定位提供服务在XML的集成机制里可以通过XML封装体实现彼此之间的数据交互所以不需要了解数据库的格式从而弥补了基于多代理的集成方法在这方面的不足
下面首先概要介绍XML的相关技术进而给出网络环境下的基于XML的信息集成方案包括系统的总体框图层次结构工作过程及系统主要组成部分的具体设计
XML技术
XML相关标准
XML不仅仅是一种语言广义的XML是一系列标准的集合图说明了XML及其相关标准在图中中间一层是XML基础标准最下层是XML的应用标准
图 XML相关标准
XML基础标准是为XML的进一步实用化制定的标准它规定了采用XML制定标准时的一些公用特征方法或规则XML Schema描述了更加严格定义XML文档的方法以便可以更自动地处理XML文档XML Namespace用于保证XML DTD中名字的一致性以便不同的DTD中的名字在需要时 可以合并到一个文档中DOM定义了一组与平台和语言无关的接口以便程序和脚本能够动态访问和修改XML文档内容结构及样式 XQuery的目的是为从Web文档中提取数据提供一种灵活的查询机制XPath描述如何识别选择匹配XML文件中的各个构成元件包括元素属性文字内容等XPointer和XLink标准规定了有关定位链接方面的内容CSS被用来作为XML文档显示的样式标准等等
XML的主要技术特点
XML是一种元标记语言强调以数据为核心这两大特点在XML的众多技术特点中最为突出同时也奠定了XML在信息管理中的优势
XML是一种元标记语言
与HTML不同XML不是一种具体的标记语言它没有固定的标记符号是一种元标记语言是一种用来定义标记的标记语言它允许用户自己定义一套适于应用的DTD
XML的核心是数据
在一个普通的文档里往往混合有文档数据文档结构文档样式三个要素而对于XML文档来说数据是其核心将样式与内容分离是XML的巨大优点一方面可以使应用程序轻松的从文档中寻找并提取有用的数据信息而不会迷失在混乱的各类标签中另一方面由于内容与样式的独立也可以为同一内容套用各种样式使得显示方式更加丰富快捷
DTD(Document Type Define文档类型定义)
DTD的作用是定义允许或不允许什么在文档中出现DTD的结构一般由元素类型声明属性表声明实体声明记号声明等构成一个典型的文档类型定义文件会把未来所要创作的XML文档的元素结构属性类型实体引用等预先进行规定用户既可以直接在XML文档中定义DTD也可以通过URL引用外部的DTDDTD位XML文档的编写者和处理者提供了共同遵循的原则使得与文档相关的各种工作有了统一的标准
基于XML的信息集成方案
于XML的信息集成总体框图
图给出基于XML的信息集成的总体框图[]是把来自供应链节点上的不同数据源(数据库构件库领域知识库)的信息通过包装器(Wrapper)转换成XML数据存储在虚拟集中存储器中用户通过DOM/SAX来获取已经转换成XML格式的信息同样用户通过DOM/SAX接口提交的查询命令通过包装器转换成本地数据源能够识别的数据格式进行查询用户通过XML的封装体实现彼此之间的交互而不需要了解对方的数据格式
图 基于XML的信息集成总体框图
基于XML的信息集成的层次结构
如图所示整个信息集成可以分为三个层次其中最底层为信息抽取层中间为中介层最上层为用户接口层
图 基于XML的信息集成层次结构
信息抽取层
信息抽取层处于系统的最低层是系统的数据提供者主要功能是提取和集成分布在多个异构数据源(数据库知识库及构件库)上的信息这一层采用Wrapper(包装器)技术实现将一个从中介层得到的查询翻译成能在经过封装的数据源上执行的操作将查询结果抽取并打包到一个XML文档最后将该文档返回给中介层
中介层
中介层(Mediation Layer)的主要功能有两方面一方面对上接受用户通过DOM客户端API向系统提交的或应用程序发出的查询将其转换成对XML的查询并将查询结果返回给用户或应用程序另一方面对下将XML查询分发给各个包装器并将查询结果通过DTD说明再转换成XML格式
用户接口层
用户接口层(User Interface Layer)在中介层之上负责将用户的查询命令提交给中介层获得并解释查询结果树并将结果显示给用户XML DOM(Document Object Model文档对象模型)是为合法的格式良好的XML文档设计的一套API(Application Programming Interface应用程序接口)它同时定义了这些文档的逻辑结构访问及操作方法由于数据显示与内容分开XML定义的数据允许指定不同的显示方式使数据更合理的表现出来本地的数据能够以客户配置使用者选择或其他标准决定的方式动态的表现出来CSS和XSL为数据的显示提供了公布的机制
整个系统位于异构数据源和应用程序之间向下协调各种数据源向上为访问集成数据的应用提供了统一的模式和访问的通用接口系统为异构数据源提供高层次的检索服务
基于XML的信息集成的工作过程
下面以用户的一个信息查询为例简要说明一下信息系统的工作过程
用户通过DOM向系统提交信息查询命令
虚拟集中存储器区分各个XML查询命令并且将其发送到适当的Wrapper包装器上
Wrapper包装器负责将XML查询转换成本地数据源能识别的语言并在数据源中进行查询
查询结果根据DTD说明在转换成XML格式并返回给虚拟集中存储器由虚拟集中存储器返回给DOM
通过DOM对XML文档的处理结合XSL技术将查询结果显示给用户
基于XML的信息集成系统的设计
根据基于XML的信息集成的层次结构下面给出包装器Wrapper组件的设计
包装器Wrapper组件的设计
信息抽取层的Wrapper组件由两部分组成Wrapper生成器和Wrapper实例(简称Wrapper)如图所示一个Wrapper位于中介层和一个数据源的中间它通常为中介层查询异构信息源集合提供一个公共接口每个Wrapper都要为某个特定的数据源制定相应的接口这个功能是由Wrapper生成器完成的
图 Wrapper生成器和Wrapper
Wrapper生成器用于为查询某个确定的站点或站点集合构建WrapperWrapper的输入是用一种Wrapper规范语言书写的规格说明包括关于将要为之生成的Wrapper的数据源的元信息该元信息描述了如何从一个数据源请求服务以及如何抽取和解释从数据源返回的信息规格说明还必须能够表达以下内容数据源接口数据模型从用户到数据源本地操作的查询映射数据源的查询能力通常为一个数据源生成一个有效的Wrapper所必须的信息是使用DTD来描述的Wrapper生成器的输出是一个可以执行的 Wrapper该Wrapper能够接受由Wrapper规范语言定义的查询
下面以数据库为例给出对应的Wrapper相应的DTD
数据库
一个关系Wrapper能决定关系模型和DOM对象数据模型之间的映射关系表的数据模式可以用三层来表示即表——记录——字段因此可以很容易采用DTD来描述数据库中关系表的数据模式
下面以两个关系表Trait(PersonID NameBirthDateAddressIdentifyId) 及 Treatment(TreatIDDrugnameTreatNotePersonID)为例他们与XML DTD之间的映射如下
/*个人特性*/
Creat table Trait(
PersonID CHAR() Name CHAR()
BirthDate DATE Address CHAR()
IdentifyId CHAR()
)
/*治疗信息*/
Creat table Treatment(
TreatID NUMBER()
Drugname CHAR()
TreatNote CHAR()
PersonID CHAR()
)
<!ELEMENT Trait(NameBirthDateAddressIdentifyId)>
<!ATTLIST Trait PersonID IDREF # REQUIRED>
<!ELEMENT Name(#PCDATA)>
<!ELEMENT BirthDate(#PCDATA)>
<!ELEMENT Address(#PCDATA)>
<!ELEMENT IdentifyID(#PCDATA)>
<!ELEMENT Treatment(Drugname*TreatNotePersonID)>
<!ATTLIST Treatment TreatID ID # REQUIRED>
<!ELEMENT Drugname (#PCDATA)>
<!ELEMENT TreatNote (#PCDATA)>
<!This filerepresents a fragment of a telemedicine data>
在XML文档与数据库进行双向转化的过程中除去最上层的根节点外元素节点对应数据库中的表属性和元素的类型对应表中的列若一个元素节点为另一个元素节点的子节点则用数据库中的主码和外部码建立表之间的关系在上面的例子中元素节点Trait和Treatment对应数据库中的表而PersonIDName等对应表中的列由于节点Treatment为节点Trait的子节点因此用PersonID与Trait建立关联
DOM客户端API的设计
DOM全称是Document Object Model是一个文件对象所组成的模型它不光用于XML最早是用于HTML的DOM定义了一组分析元可以显示的标准指令集通过程序存取HTML或XML的内容然后通过程序中的对象集合将其显示出来
我们可以通过创建Document对象使得应用程序得到对XML文档进行操作的入口进一步通过直接加载XML文档把创建的这个文档对象同实际的XML文档关联起来从而将XML文档转换成一个DOM对象模型为上层提供访问服务
下面的例子结合VBScript和XML DOM对象来生成XML数据
<SCRIPT LANGUAGE=VBScript>
<!
Sub dombml_OnClick()
Set dom_xml=CreateObject(MicrosoftXMLDOM)
dom_xmlasync=False
dom_xmlloadXML<?xml version=?> &_
<personalinfo> &_
<name> & namelValue &_
</name> &_
<id> & idValue &_
</id> &_
<password> &passwordValue &_
</password> &_
<email> &emailValue &_
</email> &_
</persomalinfo>
aler(dom_xmlXML)
End Sub
>
</SCRIPT>
<html>
<head><title>利用DOM对象来生成XML数据</title></head>
<body>
<hr>
姓名:
<Input id=namel>
<br>
用户名
<input id=id>
<br>
密码
<input type=password id=password>
<br>
电子邮件
<input id=email>
<Input type=Button id=domxml value=生成XML数据>
</body>
</html>
总结
Web环境下的异构数据源的集成特别是基于XML的数据集成问题已经成为当前计算机领域中一个重要的研究方向XML具有简单开放可扩展性灵活自描述性等特点给Internet注入了新的活力作为数据表示的一个开放标准XML为数据集成带来了新的机遇用XML作为数据交换的中介给系统的实现带来了极大的灵活性系统可以屏蔽掉后台的多种数据源用统一的XML格式的数据呈现给用户接收数据方根据XML数据的DTD可以对数据进行任意的处理如分解出其中需要处理的数据或是以不同的样式来显示通过本系统可以实现散布在Web上的异构数据源中的数据的无缝集成