曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
内。然而,后一种方式并不区分是哪一级别的标记,所以如果叫< Ti t l e >元素出现在我们的不同
文档中,它们将被找到。所以它们不能像我们在后面要说到的X P a t h一样复杂。
第10章XML和数据库使用365 下载
图10-4
然而,一个非常有力的特点是重用内容的能力。一个组件可以从其他的地方引用,但是只
需要维护一次。组件的方式仿佛确实是在它所引用的位置上(参见图1 0 - 5)。
图10-5
像其他的一些产品一样, C M S具有组件登录( c h e c k - i n)和注销( c h e c k - o u t),版本控制和
样式转换等功能。更多的信息请访问h t t p : / / w w w. p o e t . c o m /。
(8) 小结
O O数据库的本地能力使它们成为操纵X M L文档的最有可能的后选对象。独立操纵节点的能
366使用XML 高级编程
下载
力—是否加锁、安全或版本控制—给了它们满足前面所提到的高级需求的潜力。这里提出
的两个应用程序的每一个都提供一个可靠的基础,用在一个基于需要先进的存储和获取处理的
X M L的项目中。
如果每件事都很好,你可能会问自己收获是什么。在许多方面,文化比技术更重要。O O数
据库软件安装的库只是关系数据库的一小部分,这一点似乎也不会很快发生改变。当然像这里
所介绍的产品可能会取得一些进展,原因就是它们可以很好地管理X M L,但是用O O技术的产品
很少。
这不是说不存在技术问题。听上去很明显,但O O数据库比对象数据更好。在模拟其他类型
的结构时,它们不像关系数据库一样有效,然而在分级的情况下是非常快的—比方说几个对
象,每一个都包含几万个其他的对象。
所以,尽管我们找到了一个用O O数据库的很好的解决方案,但必需继续探索,因为大部分
你要处理的是关系型存储介质。
2. 关系数据库
关系数据库管理系统—或R D B M S—使用熟悉的行和列的方法来存储数据(参见图1 0 - 6)。
图10-6
这个模式显示了一张表,它将包含作者。每一个作者用一行表示,一个作者的每个属性用
一列表示。
抛开O O数据库的众多优势,到目前为止R D B M S仍然是最流行的,因为它们可以表示太多
的现实世界的问题,并且对很多这样的问题给出更快的响应时间。例如,货物订单。这些例子
都非常适用于这个模型,作为一个二维数组的集合,像联系管理系统,股票控制软件包,等等
(参见图1 0 - 7)。
图10-7
第10章XML和数据库使用367 下载
基本的关系数据库概念是:
• 表
• 查询
• 连接
下面的几个部分介绍了这些概念,如果你对使用关系数据库很有经验,可以忽略这些概念。
在学习过这些基础知识后,将看一下如何用关系数据库来模拟节点的分级,然后是如何自动完
成某些转换。你将需要熟悉这些概念,并了解这个模拟是如何做的。
(1) 表
一个简单的用来存储作者的书目的数据表可能包含如表1 0 - 1所示的内容:
表1 0 - 1
作者城市编号名M I 姓简历
1 S t e p h e n M o h r S t e p h e n高中起即开始编程,现在是Omicron Consulting的资
深软件系统工程师。他使用C + +、J a v a、J a v a S c r i p t、C O M和各
种互联标准和协议设计和开发系统
2 K a t h i e K i n g s l e y K a t h i e是K i n g s l e y - H u g h e s开发公司的M D,这是一家专注于
H u g h e s We b开发和可视化编程语言的培训和咨询公司
3 F r a n k B o u m p h r e y Frank Boumphrey现在在Cormorant Consulting供职,这是一
家专门为医药和法律文档提供服务的公司。它主要负责将X M L
应用在We b文档中
在表中每一个作者有着他们自己的入口或行。每一行是由许多字段组成的,对每一个作者
是通用的,例如,每个作者都有一个姓的字段和名的字段。即使一个特别的字段为空,像每一
个作者的M I字段,但在每一行中仍然会存在。
表头对应于表定义中的列。这些可以被定义如下形式(参见表1 0 - 2):
表1 0 - 2
列名数据类型是否允许空值
A u t h o r C i t e I D I n t e g e r 否
F i r s t N a m e S t r i n g 是
M I S t r i n g 是
L a s t N a m e S t r i n g 否
B i o g r a p h y S t r i n g 是
用这个定义,我们已经指明了要存储的每个作者的属性,并且指出哪些字段必须存在,哪
些是可选的。因为很少有作者没有一个唯一的I D和姓,我们已经制订了一条记录的最小需求。
在决定了如何在表中存储数据之后,我们需要一种机制来取出它。
(2) 查询
处理存储在关系数据库中数据的通用办法是使用结构化查询语言或S Q L。尽管在这几年中对
于S Q L中的可用的特性有了改进和增强,它的核心仍是S E L E C T语句。使用这个语句,请求
R D B M S服务器返回给我们所有在数据库中的作者的请求应该是如下形式:
368使用XML 高级编程
下载
对那些新手来说的一个常见的错误是将星号读成“请检索所有的记录”。这个理解是
将星号的作用等同于在目录中查找文件时*的作用,但是在S Q L中,它的意思是“请检索
所有的列”。
在前面我们定义的作者表的例子中,将意味着返回五列数据。一个只取出指定列的查询,
应该是这样:
一个S E L E C T语句的结果形成一个结果集—一
个查询结果的列表,可以被单步遍历,取出每一行的
数据—在这个例子中将包含如下的结果(参见表
1 0 - 3):
如你所见,即使没有星号我们也从数据库中取回
了所有行,因为这是S E L E C T的缺省行为。一个限制
返回记录的方法是使用一个W H E R E子句。例如,如果我们需要Stephen Mohr的传记,我们应该
书写下面的查询:
在这个例子中,我们要求数据库返回字段L a s t N a m e被设成M o h r的所有记录,然后只返回给
我们B i o g r a p h i c a l字段。你可能希望W H E R E子句非常丰富,下面举出的例子将返回K a t h i e和
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程上(121)