石国河
摘 要:计算机技术以及互联网络的普及和发展,推进了XML的发展,由于XML是采用标记语言风格,XML标签以及自定义的标签都可以具有一定的意义,同时,由于XML采用结构化的形式非常便于处理数据。目前使用XML表示的数据或者知识成为异构平台、异构系统和异构网络之间的数据交换形式。本文结合了几种应用来介绍基于XML的知识表示方法。
关键词:XML SOAP 异构网络 数据交换
中图分类号:TP393.04 文献标识码:A 文章编号:1673-8454(2009)03-0087-03
随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求系统能够无缝地进行通信和共享数据。Web Services希望实现不同系统之间能够用“软件-软件对话”的方式相互调用,这打破了软件应用、网站和各种设备之间的互不相关的状态,实现了“基于Web无缝集成”的目标。[1]
一、基于XML的知识表示
互联网的飞速发展促使了XML(Extensible Markup Language)的产生,它是通用标记语言标准SGML(Standard for General Markup Language)的子集,因此是一种元语言。XML是一个开放的标准,它的一切都是公开的。XML文档不属于任何软件包、任何计算机配置或者任何操作系统。运用XML语言表示知识能保证所构建的通用知识库除了工具本身外,不与任何其它程序设计语言有关系。这种知识库一经建立,就可以根据使用者的个人偏好,用某种语言工具访问或修改,以适应其特殊需要。它可以保证通用知识库的保存、传输、修改、添加都是跨平台的,只在具体使用时才与某个软、硬件平台建立起联系。因此,基于XML的知识表示的知识库将可能是永远可用的。[1]
由于面向对象表示法能够较好地描述现实世界的结构模型,我们在XML表示方法中吸取面向对象的这种思想,并将类的属性、方法、继承关系用DTD(Document Type Definition)定义下来,使用XML知识表示方法对结构化的知识进行了高效的表达。
二、通过SOAP传递XML信息
SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单协议,是一个基于XML的协议,它包括四个部分:SOAP封装(Envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(Encoding Rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC Representation),表示远程过程调用和应答的协定;SOAP绑定(Binding),使用底层协议交换信息。[2]
SOAP是简单的,只需要客户端发送一个请求给服务器,调用相应的对象,然后服务器返回结果。这些客户端和服务器之间传递的消息都是XML格式,并且封装成符合HTTP协议的消息。SOAP通过已有的Internet下层结构来工作。你不需要做任何工作,它可应用于任何路由器、防火墙或代理服务器。
下面的例子摘自Internet-draft规范说明中:
POST / HTTP/1.1
Host: www.508SOAP.edu.cn //服务器地址
Content-Type: text/xml //服务器的XML消息
Content-Length: nnnn//消息长度
SOAPMethodName: Some-Namespace-URI#GetLastTradePricev
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<m:GetLastTradePrice
xmlns:m="Some-Namespace-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP:Body>
</SOAP:Envelope>
SOAP定义了两种类型的消息——请求和响应,从而允许客户端能够递交一个远端请求,允许服务器端能够响应这些请求。上文所举的是一个请求的例子,下面列举对该请求的响应:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: nnnn
<SOAP:Envelope xmlns:SOAP="urn:schemas-xmlsoap-org:soap.v1">
<SOAP:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-Namespace-URI">
<return>34.5</return>
</m:GetLastTradePriceResponse>
</SOAP:Body>
</SOAP:Envelope>
在SOAP中传递的都是文本信息,是由XML表示的数据。
三、利用XML在异构数据库间交换数据
在很多应用中,XML数据源大概可分为3种:XML纯文本文档、关系型数据库、来源于其他各种应用数据(如邮件、目录清单、商务报告)等。对于XML文档,可以通过DOM(Document Object Model)读取XML文档中的节点,这样就可利用最基本、最底层的XML存取技术进行操作。
DOM是W3C的一种技术标准,实际上是提供一组API来存取XML数据。DOM可以通过Javascript、VBscript等脚本程序来实现,也可通过C++、Java等高级语言来实现。同时,通过DSO(Data Source Object)进行XML的数据绑定,可以方便地将XML节点同HTML标记捆绑,从XML文档中读取或写人数据,就像访问Microsoft Access或Microsoft SQL Server一样;而“HTTP+SQL”是Microsoft新近提出的SOAP(简单对象访问协议)方案的核心,其基本原理是通过基于HTTP协议的URL方式直接访问SQL Server数据库,并返回XML或HTML数据格式,从而实现异构数据库通过操作访问XML文件来顺利获得数据。[3]
四、XML数据表示在电子商务中的应用
随着电子商务的普及,基于HTML的电子商务阻碍了电子商务的发展,比如HTML很难表示数据值的层次关系,不能就标识文件的意义传递任何信息,无法满足电子商务所要求的诸如存储、转发、交换、加密、签名以及其他处理的要求。XML正弥补了HTML的这些缺陷,XML良好的数据存储格式、可扩展性、高度的结构化、便于网络传输,决定了XML在电子商务中的应用前景非常广阔。
使用XML电子商务有如下优点:
(1)易与电脑系统进行沟通。XML会成为电子商务语言的最大原因就在于它的交互性比较好,由于XML的灵活性,作者可以自己制定和设计XML的文件格式,使用HTML语言设计页面时只有一些固定的格式,XML有更丰富的语法和更多功能的语言,它易和电脑系统沟通,而HTML和电脑系统打交道时,都要经过复杂的转换手续,而资料欲在资料库和资料库之间交换时,花费的时间更长,而且不够高效。
(2)XML可推动电子商务的发展。XML的特点决定了它有利于数据交换和传递的特点,它将为电子商务,尤其是B2B的电子商务带来革命性的变化,XML给电子商务的影响主要表现在两个方面——信息交换和内客定义。
(3)可以准确地搜索信息。在目前的B2C应用中,对顾客而言,最难以解决的是:由于网络中的消息量巨大,无法搜索到自己需要的信息,例如难以对自己需要的产品就不同的厂家进行比较。导致这一困难的主要原因是现在使用的HTML语言缺乏表示内容和文义的tag,而XML的灵活性可帮助作者创作自己需要的tag,所以使用XML语言能产生很多电子商务中有用的tag。搜索引擎也可以根据tag的信息搜索到顾客所需要商品的信息,这样不仅提高了工作效率,而且能推动电子商务的快速发展。
五、基于XML实现信息安全交换
XML通常用作在互联网上进行数据传递的主要形式,为了保证通过XML传递重要数据的安全性,需要对XML进行加密传递。
XML的加密包括3种方式:对XML文档的某一元素进行加密;对XML元素包含的内容或整个XML文档的内容进行加密和对XML文档之外的数据信息进行加密。
一个XML加密文档主要通过<EncryptedData>元素来进行描述,该元素有如下结构(“?”表示有0个或一个事件,“+”表示一个或很多事件,“*”表示0个或多个事件):<EncryptedData>
<complexType>
<sequence>
(EncryptedKey)*
(EncryptionMethod)?
(KeyInfo)?
(CipherText)+
</sequence>
(Type)
(Object)*
</complexType>
</EncryptedData>
其中,<EncryptedData>元素是整个加密文档语法描述的核心,不仅包括加密数据,而且还可以作为整个XML加密文档的根元素。<EncryptedKey>元素是可选元素,包含用来进行数据加密的密钥。<KeyInfo>元素是可选元素,包括获取加密密钥的方法,该元素在XML签名机制中还会进行定义。<EncryptedKeyReference>元素提供一个链接,指向包含加密密钥信息的<EncryptedKey>元素。<KeyName>元素提供加密密钥的相关信息,如密钥拥有者的姓名、电子邮件地址等。<KeyWay>元素指示获取解密密钥的方法和具体位置URL等。如果<KeyInfo>和<EncryptedKey>都出现在文档结构中,那么根据两个地方所包含的信息获取的密钥的值应该是相同的。<CipherText>是必需包含的元素,它提供加密的密文。<Type>是一个可选的属性元素,用来确定被加密数据的类型,它有3种有效值:Element(表示被加密的数据是一个元素)、NodeList(表示被加密的数据是一个元素内容,或是整个XML文档的内容)和Media type(表示被加密数据是任意的外部数据,包括HTML文档、GIF图形文件等)。<Object>包含其它扩展信息。
六、结论
计算机技术以及互联网络的普及和发展,推进了XML的发展,由于XML是采用标记语言风格,XML标签以及自定义的标签都可以具有一定的意义,同时,由于XML采用结构化形式非常便于处理数据。目前使用XML表示的数据或者知识成为异构平台、异构系统和异构网络之间的数据交换形式。Microsoft新提出的SOAP(简单对象访问协议)方案已经取得了广泛的应用,以XML的数据表示形式进行异构网络间数据的交换也成为主流,其应用会延伸到各个领域。
参考文献:
[1]周涛等.基于XML的面向对象的知识表示[J].黔南民族师范学院学报,2003(6).
[2] Uche Ogbuji.使用SOAP进行XML消息传递.
[3]高纯.XML数据环境下异构数据库间的数据交换方法[J].科技情报开发与经济,2004(8).
[4]丁莲莲.XML技术在电子商务中的应用[J].安徽电子信息职业技术学院学报,2004.2 Vol.11 No.1.
[5]王勇.基于XML实现信息安全交换的策略研究[J].机械与电子,2004(6).
[6]http://www.cn.ibm.com/developerWorks/xml/index.shtml(IBM公司)
[7]http://msdn.microsoft.com/(微软公司)
[8]http://www.w3.org/TR/soap12/(W3C联盟)
[9]http://www.soapwebservices.com