XML与数据库编程(2).doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:5 大小:37KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

XML与数据库编程(2).doc

XML与数据库编程(2).doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

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

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

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

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

4.2将文档结构映射成数据库结构为了能够在XML文档和数据库之间传递数据,有必要将文档的结构映射成数据库的结构,反之亦然,这种映射关系又分两类:模板驱动和模型驱动4.2.1以模板驱动的映射以模板驱动的映射,这种映射没有预先定义文档结构和数据库结构之间的映射关系,而是使用将命令语句内嵌入模板的方法,让数据传输中间件来执行该模板。例如,考虑下面的模板(注意该模板并不适应与所有的产品),在<SelectStmt>元素中内嵌了SELECT选择:<?xmlversion="1.0"?><FlightInfo><Intro>Thefollowingflightshaveavailableseats:</Intro><SelectStmt>SELECTAirline,FltNumber,Depart,ArriveFROMFlights</SelectStmt><Conclude>Wehopeoneofthesemeetsyourneeds</Conclude></FlightInfo>当数据传输中间件处理到该文档时,每个SELECT选项都将被他们各自的结果所替换,得到下面的XML格式:<?xmlversion="1.0"?><FlightInfo><Intro>Thefollowingflightshaveavailableseats:</Intro><Flights><Row><Airline>ACME</Airline><FltNumber>123</FltNumber><Depart>Dec12,199813:43</Depart><Arrive>Dec13,199801:21</Arrive></Row>...</Flights><Conclude>Wehopeoneofthesemeetsyourneeds</Conclude></FlightInfo>这种以模板驱动的映射方法相当灵活。例如,一些产品允许你在最后的结果中替换你想要的内容--包括在SELECT中使用参数--而不是象上面的例子中简单地格式化结果。另外它还支持使用编程结构例如循环和条件判断结构。还有就是它支持通过HTTP的传递参数。目前,以模板驱动的映射仅仅只支持从一个关系数据库转换成XML文档的情况。4.2.2以模型驱动的映射在以模型驱动的映射模式中,它的原理就是利用XML文档中的数据模型的结构显性或隐性地将其映射成数据库的结构,反之亦然。它的缺点是灵活性不如模板驱动方式,但是优点是简单易用,这是因为它是基于具体的数据模型来进行映射的,通常它能够自己完成很多地转换工作,从而简单易用。因为将数据从数据库转换成XML的工作是根据单一的一个模型(模型),所以通常在这种方式下还要综合搭配XSL来提供灵活性。在XML文档中有两种模型是非常普遍的。第一种是被许多中间件包在转换XML文档成关系数据库数据所使用到的模型,就是将XML文档当成一个单独的表(Table)对象或则一系列表对象。也就是说,真正的XML文档必须类似于下面的格式,如果是单一的表对象的话,<database>元素就不需要出现了<database><table><row><column1>...</column1><column2>...</column2>...</row>...</table>...</database>其中的"table"可理解为单个的结果集(当数据是从数据库往XML中传输时)或则是一个单独的表对象或则一个可更新的视图(view)(当数据是从XML往数据库传输时)。如果数据是来自多个结果集的描述中(当数据来自数据库中时)或则XML的文档包含有更深层次的嵌套元素,有必要表现成一系列表对象(当数据要转换到数据库中时),那么类似与上面例子那么简单的传输是不可能的。第二种普遍的数据模型是XML文档种的对象树,在这种模型下,元素通常对对应了一个对象或则属性或则PCDATA对象。这种模型直接映射成面向对象的数据库和树状结构数据库,当然借助传统的对象-关系映射技术和SQL3对象视图也可以映射成关系数据库。要注意的是,这种模型并不是文档对象模型(DOM),DOM是指文档本身是个模型,而不是指文档中的数据。举例,在上面介绍的销售单文档可以被看成是有5个类的对象树---Orders,SalesOrder,Customer,Line,andPart--入下图所示:Orders|SalesOrder/|\CustomerLineLine||PartPart当一个XML文档模型化处理成一个对象树时,对元素和对象不需要什么特殊的要求。例如,如果一个元素只包含有PCDATA,例如销售单文档中的CustName元素,它能够被看做一个属性进行处理(就是仅仅只包含有单独的数值)。简单来说,有时将混合元素或则元素内容模型化处理成