
图1 XML相关标准
XML基础标准是为XML的进一步实用化制定的标准,它规定了采用XML制定标准时的一些公用特征、方法或规则。XML Schema描述了更加严格定义XML文档的方法,以便可以更自动地处理XML文档。XML Namespace用于保证XML DTD中名字的一致性,以便不同的DTD中的名字在需要时 可以合并到一个文档中。DOM定义了一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式。 XQuery的目的是为从Web文档中提取数据,提供一种灵活的查询机制。XPath描述如何识别、选择、匹配XML文件中的各个构成元件,包括元素、属性、文字内容等。XPointer和XLink标准,规定了有关定位、链接方面的内容。CSS被用来作为XML文档显示的样式标准等等。
2、XML的主要技术特点
XML是一种元标记语言,强调以数据为核心,这两大特点在XML的众多技术特点中最为突出,同时也奠定了XML在信息管理中的优势。
XML是一种元标记语言
与HTML不同,XML不是一种具体的标记语言,它没有固定的标记符号,是一种元标记语言,是一种用来定义标记的标记语言,它允许用户自己定义一套适于应用的DTD。
基于XML的信息集成方案
1、于XML的信息集成总体框图
图2给出基于XML的信息集成的总体框图[1],是把来自供应链节点上的、不同数据源(数据库,构件库,领域知识库)的信息通过包装器(Wrapper)转换成XML数据,存储在虚拟集中存储器中,用户通过DOM/SAX来获取已经转换成XML格式的信息;同样,用户通过DOM/SAX接口提交的查询命令,通过包装器转换成本地数据源能够识别的数据格式进行查询。用户通过XML的封装体实现彼此之间的交互,而不需要了解对方的数据格式。

图2 基于XML的信息集成总体框图
2、基于XML的信息集成的层次结构
如图3所示,整个信息集成可以分为三个层次:其中最底层为信息抽取层,中间为中介层,最上层为用户接口层。

图3 基于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为数据的显示提供了公布的机制。

图4 Wrapper生成器和Wrapper
Wrapper生成器用于为查询某个确定的站点或站点集合构建Wrapper。Wrapper的输入是用一种Wrapper规范语言书写的规格说明,包括关于将要为之生成的Wrapper的数据源的元信息,该元信息描述了如何从一个数据源请求服务以及如何抽取和解释从数据源返回的信息。规格说明还必须能够表达以下内容:数据源接口、数据模型、从用户到数据源本地操作的查询映射、数据源的查询能力。通常为一个数据源生成一个有效的Wrapper所必须的信息是使用DTD来描述的。Wrapper生成器的输出是一个可以执行的 Wrapper,该Wrapper能够接受由Wrapper规范语言定义的查询。
下面以数据库为例,给出对应的Wrapper相应的DTD:
数据库
一个关系Wrapper能决定关系模型和DOM对象数据模型之间的映射。关系表的数据模式可以用三层来表示,即表--记录--字段,因此可以很容易采用DTD来描述数据库中关系表的数据模式。
下面以两个关系表Trait(PersonID, Name,BirthDate,Address,IdentifyId) 及 Treatment(TreatID,Drugname,TreatNote,PersonID)
为例,他们与XML DTD之间的映射如下:
| /*个人特性*/ Creat table Trait( PersonID CHAR(3), Name CHAR(10), BirthDate DATE, Address CHAR(30), IdentifyId CHAR(18) ) /*治疗信息*/ Creat table Treatment( TreatID NUMBER(6,0), Drugname CHAR(20), TreatNote CHAR(50), PersonID CHAR(3) ) <!ELEMENT Trait(Name,BirthDate,Address,IdentifyId)> <!ATTLIST Trait PersonID IDREF # REQUIRED> <!ELEMENT Name(#PCDATA)> <!ELEMENT BirthDate(#PCDATA)> <!ELEMENT Address(#PCDATA)> <!ELEMENT IdentifyID(#PCDATA)> <!ELEMENT Treatment(Drugname*,TreatNote,PersonID)> <!ATTLIST Treatment TreatID ID # REQUIRED> <!ELEMENT Drugname (#PCDATA)> <!ELEMENT TreatNote (#PCDATA)> <!-This filerepresents a fragment of a telemedicine data--> |
在XML文档与数据库进行双向转化的过程中,除去最上层的根节点外,元素节点对应数据库中的表,属性和元素的类型对应表中的列,若一个元素节点为另一个元素节点的子节点,则用数据库中的主码和外部码建立表之间的关系。在上面的例子中,元素节点Trait和Treatment对应数据库中的表,而PersonID,Name等对应表中的列。由于节点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("Microsoft.XMLDOM") dom_xml.async=False dom_xml.loadXML"<?xml version='1.0'?>" &_ "<personalinfo>" &_ " <name> " & namel.Value &_ " </name> " &_ " <id> " & id.Value &_ " </id> " &_ " <password> " &password.Value &_ " </password> " &_ " <email> " &email.Value &_ " </email> " &_ "</persomalinfo>" aler(dom_xml.XML) 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> |