XML与数据库(3)

3.1 数据为主的文件
    
数据为主的文件表现出来的特点是结构相当规范,数据格式良好(就是说,数据中
最小的独立单元是PCDATA-only元素级别或则是一个属性),和一些或则没有混合内容。其中同
类型元素和PCDATA的出现顺序并不重要。例如XML文件内容是销售单、飞行计划、餐馆菜单等等。
数据为主的文件经常被用来设计机器消费,这时XML的调用是多余的---它仅仅是一种数
据传输。
    
例如,下面的销售单就是一个数据为主的文档:
   <Orders>
      <SalesOrder SONumber="12345">
         <Customer CustNumber="543">
            <CustName>ABC Industries</CustName>
            <Street>123 Main St.</Street>
            <City>Chicago</City>
            <State>IL</State>
            <PostCode>60609</PostCode>
         </Customer>
         <OrderDate>981215</OrderDate>
         <Line LineNumber="1">
            <Part PartNumber="123">
               <Description>
                  <p><b>Turkey wrench:</b><br />
                  Stainless steel, one-piece construction,
                  lifetime guarantee.</p>
               </Description>
               <Price>9.95</Price>
            </Part>
            <Quantity>10</Quantity>
         </Line>
         <Line LineNumber="2">
            <Part PartNumber="456">
               <Description>
                  <p><b>Stuffing separator:<b><br />
                  Aluminum, one-year guarantee.</p>
               </Description>
               <Price>13.27</Price>
            </Part>
            <Quantity>5</Quantity>
         </Line>
      </SalesOrder>
   </Orders>
    
注意在XML世界中,许多(其实应该是大量)的文件实际上都是数据为主的。例如,
考虑在Amazon.com网站上显示一本书的各种信息的页面,虽然这个页面是一个相当巨大的文
本,但是这个文本的结构是高度规范的,所有页面都包含有介绍书的共同点,并且每一页中文本
的大小是受限制的。也就是说,它可以从一个简单的、数据为主的XML文档 + 包含有每一页信息
的数据库+ XSL样板文件 就能够实现这个网站的结构了。通常,目前任何一个动态建立HTML的网
站都可以被上面介绍的这种结构来实现的。
   
下面是一个很简单的例子:
   <Lease>
      <Lessee>ABC Industries</Lessee> agrees to lease the property at
      <Address>123 Main St., Chicago, IL</Address> from <Lessor>XYZ
      Properties</Lessor> for a term of not less than <LeaseTerm
      TimeUnit="Months">18</LeaseTerm> at a cost of <Price
      Currency="USD" TimeUnit="Months">1000</Price>.
   </Lease>
它是使用下面的这个XML文档和一个简单的样板文件实现的:
   <Lease>
      <Lessee>ABC Industries</Lessee>
      <Address>
123 Main St., Chicago, IL
</Address>
      <Lessor>XYZ Properties</Lessor>
      <LeaseTerm TimeUnit="Months">18</LeaseTerm>
      <Price Currency="USD" TimeUnit="Months">1000</Price>
   </Lease>

3.2 
以文档为主的文件
    
以文档为主的文件表现出来的特点是:不规范的结构,大量的原始数据(就是说,
最小的独立数据单元是包含有混合内容的元素级或则本身就是一个文档),和大量混合内容。其中
同类型元素和PCDATA出现顺序是非常重要的。例如一本书,一封电子邮件,广告,以及几乎所有的
XHTML
文档。以文档为主的文件通常是用来设计人文消费:
    
例如,下面的产品描述就是一个以文档为主的文件:
   <Product>
   <Name>Turkey Wrench</Name>
   <Developer>Full Fabrication Labs, Inc.</Developer>
   <Summary>Like a monkey wrench, but not as big.</Summary>
   <Description>
   <Para>The turkey wrench, which comes in both right- and
   left-handed versions (skyhook optional), is made of the finest
   stainless steel. The Readi-grip rubberized handle quickly adapts
   to your hands, even in the greasiest situations. Adjustment is
   possible through a variety of custom dials.</Para>
   <Para>You can:</Para>
   <List>
   <Item><Link URL="Order.html">Order your own turkey wrench</Link></Item>
   <Item><Link URL="Wrenches.htm">Read more about wrenches</Link></Item>
   <Item><Link URL="catalog.zip">Download the catalog</Link></Item>
   </List>
   <Para>The turkey wrench costs just $19.99 and, if you
   order now, comes with a hand-crafted shrimp hammer as a
   bonus gift.</Para>
   </Description>

3.3 
数据(Data)、文件(Documents)和数据库(Databases)
    
事实上,数据为主的文件和文档为主的文见之间的区别并不是很清晰。例如,虽然
一个数据为主的文件(例如一张发票),也有可能包含大量的不规范结构的数据,例如发票的描
述部分。而一个以文档为主的文件(例如用户手册),也可能包含有规范的数据结构(通常是元数
metadata),例如作者名和再版日期。除了这些,你用来判断是否是两者中其一的另外
一个重要特点是你是对数据还是对文档感兴趣,这也将决定你要采用什么样的系统。
    
要存储和获取数据,你可以使用一个数据库(通常是关系数据库,面向对象数据库
或则树状体系数据库)和中间件,或则你也可以使用XML服务器(你可以把它看成是将数据库
和中间件捆绑在一起)。要保存文档,你将需要一个内容管理系统。有关各种系统的探讨
在第4.0小节中, "存储和获取数据"和第5.0小节 "存储和获取文档".你能够在第6.0小节找到
一些可使用的软件列表"可利用的软件"

4.0 
存储和获取数据
    
数据的类型可以在数据为主的文件的原始定义或则从数据库中的字段类型中得到。
    
前者的例子是你想把数据库中的数据保存成XML文件放到网站上;后者的例子是你需
要把大量的数据保存到关系数据库中。根据你的具体需求,你需要的软件或则是把XML数据
读入到数据库或则是把数据库中的数据输出到XML文件,或则两者都支持。

4.1 
转录数据
    
当将数据保存在数据库中,它经常需要抛弃与文档信息有关的大量内容,例如它的
名称和DTD,同时还有它的物理结构,例如实体的定义和使用、属性值和相同类型元素的出现顺
序,还有二进制数据的存储方式 (是经过Base64编码的还是没有经过编码的实体或则其他方式),
 CDATA
的内容和其他编码信息。简单而言,当从数据库中获取信息时,最后生成的XML文档结果可
能不包含任何CDATA或则实体运用(entity usage (除非预先定义了实体lt(就是符号"<"
,gt(">"), amp("&"), apos("'"),  quot("""))和同类型元素、属性出现的顺序。
   
例如,假设你需要把一个销售单的信息使用XML格式从一个数据库中获取数据然后转
录到另外一个数据库中,在这个例子中,在XML文档中并不关心销售单的编号是保存在销售单的日
期的前面还是后面,也不用关心是否将顾客的名称保存在CDATA section作为一个扩展入口,
 
或则甚至直接当成一个PCDATA. 但是,对于将这些相关数据从第一个数据库中转录到第二个数据
库的过程中,这些信息都是非常重要的。这样,这个数据传输软件就需要考虑使用树状结构
(它将一个单独的销售单的信息用组(group)来实现)。
    
另一个当忽略文档信息和它的物理结构会带来麻烦的例子是---"借贷套利"文档,它
保存的数据是从一个数据库中的文档中获取,并且需要重新组装这些数据成为一个新的文档,
而这个过程经常会导致新的文档的结构和原来的文档会不一致。
    
从上面的例子可以看出,对于数据库和数据传输中间件的选择是根据你的需求而变
化的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值