登录注册
上海交通大学论坛 > 数据库 > 浏览当前帖子 手机版 关闭左侧栏
基于XML的数据库总体分析[2]
返回本版】  【发表帖子】  【回复帖子 浏览量  4322      回帖数 0
caoyin    等级  

楼主 发表于  2011/7/11 18:14:12    编 辑   



为了存储或提取数据,你可以使用数据库和中间件,或者你可以使用XML服务器, 
或者是基于XML的Web服务器。为了存储文档,你需要一个内容管理系统或者是可 
持久化的DOM实现。可以在数据库或者是XML文档中发现大量基于数据为中心的文 
档。这样我们就需要工具把数据从数据库转化成XML文档,或者把一个XML文档转 
换到数据库中。同时需要注意的是,当把数据存储到数据库中的时候,需要抛弃 
一个文档的很多信息,比如它的名称和DTD,它的物理结构,比如实体定义和使 
用,一个节点下元素的位置排列,二进制数据的存储方式等等。同样,当从数据 
库中提取数据的时候,产生的XML文档通常不包含CDATA或者是实体使用的说明, 
而且节点下元素的排列位置只和数据库中记录的顺序位置一致。实际上一个XML 
文档存储到数据库中,再由该数据库生成此XML文档,这前后两个文档格式几乎 
不可能完全一样。 

  为了在数据库和XML文档之间传递数据,必须在文档结构和数据库结构之间 
建立映射,这种映射可以有两个分类:模板驱动和模型驱动。 

  1.基于模板驱动的映射:需要在一个模板中嵌入命令,并用数据传输中间 
件进行处理。比如,考虑下面的模板: 

  <?xml version="1.0"?> 
  <FlightInfo> 
  <Intro>The following flights have available seats:</Intro> 
  <SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights 
</SelectStmt> 
  <Conclude>We hope one of these meets your needs</Conclude> 
  </FlightInfo> 

  注意其中嵌入了一个SELECT语句。当用数据传输中间件进行处理的时候,每 
一个SELECT语句都会被它的结果所代替,用XML格式化形式表现为: 

  <?xml version="1.0"?> 
  <FlightInfo> 
  <Intro>The following flights have available seats:</Intro> 
  <Flights> 
  <Row> 
  <Airline>ACME</Airline> 
  <FltNumber>123</FltNumber> 
  <Depart>Dec 12, 1998 13:43</Depart> 
  <Arrive>Dec 13, 1998 01:21</Arrive> 
  </Row> 
  ... 
  </Flights> 
  <Conclude>We hope one of these meets your needs</Conclude> 
  </FlightInfo> 

  基于模板驱动的映射可以是相当灵活的,比如,一些产品允许你把结果集放 
到XML文档的任何位置,同时可以对SELECT语句设置参数,并且可以使用for循环 
语句和if条件语句等。值得注意的是,当前基于模板驱动的映射只能应用于在关 
系数据库和XML文档之间传递数据。 

   基于模型驱动的映射:也就是说把数据从数据库传送到XML文档是用一个 
具体的模型实现的,这样,XSL可以被结合到基于模型映射的产品上。在XML文档 
中,两种模型是很常见的:表格模型(table model)和数据专用对象模型 
(data-specific object model)。 

                                          To be continued. 
1
表情
所有内容均为会员自愿发表,并不代表本站立场.
论坛帮助 会员认证删帖申请 联系我们