• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

程序清单1 0 - 3 1
388使用XML 高级编程
下载
注意,这个片段数据交换文档显示在同一层次的元素为需要上下文的元素,但是它不会为这些
元素的内容来浪费空间。所以你可以看到,所有在< A u t h o r >元素中的元素都被命名了,但是没有内
容。同样,所有其他在数据库中的表示其他作者的< A u t h o r >元素也没有内容,尽管属性仍然被传递
给了每个元素,而不管它在什么位置上。查询结果数据通过在U R I的< f r a g b o d y >处被引用。为了让
这个机制工作,你需要创建一个脚本,用来输出象上面格式的X M L,并且按以下方式进行引用:
这个片段参考了前面的< x m l A u t h o r s >脚本。
前面关于片段数据交换的提议的草稿允许片段和它的内容包装到一个X M L文档中。
尽管可以实现,但是这个提议不坚持把它标准化。相反它宣布一个包装工作组将解决这
个问题。
2. SOAP和X M L - R P C
我们可以返回结果的另外一种方法是通过S O A P或X M L - R P C,它们将在第11章被深入讨论。
这两个协议都提供了包装对一个服务器调用结果的方法,尽管它们不包含上下文信息。增加上
下文信息到返回文档是一件简单的事情。
10.3 图书目录的例子
理论已经足够了。我们已经了解数据库可以保存X M L并且可以通过X M L在不同的数据库之
间交换数据。是到了作为一个数据库实现图书目录的时候了。
在下面的例子中,假设Wrox Press已经有了一个关于作者信息的关系数据库,但是我们需要
创建新的数据库用于出版商和图书信息。在后面,将使用模式来定义一个关系数据库表结构。
10.3.1 处理存在的数据和应用
假设我们拥有一个数据库,其中包含作者的名字、地址和他们的一些记录。出于这个演示
的目的,我已经简单地创建了一个图书数据库,使用了Microsoft Access创建数据库向导。这个
例子的数据入口表单有两页,如图1 0 - 1 5所示。
图10-15
第10章XML和数据库使用389 下载
关于这个例子有几点要弄明白。第一个就是数据已经存在了。在计划一个可能基于X M L的
项目时把它提到台面是很重要的。试图让公司的每一个人把在他们存储介质上的现有的数据库
应用程序移到X M L上应非常慎重。同样因为这些应用程序,所以使用X M L处理可能不是最好的。
在这种情况下,我们需要简单的数据录入表格,用它可以很容易地增加新记录和修改记录。用
户应该被要求这样编辑吗?
程序清单1 0 - 3 2
即使提供给用户X M L的编辑器来进行数据维护—在市场上有一些很不错的产品—它仍
然在某些地方不同具备简单的Microsoft Access表单所具有的功能。例如,当光标停留在家庭电
话号码域上时,点击拨号按钮,将产生如图1 0 - 1 6所示的对话框:
图10-16
转换数据到X M L意味着弱化我们的应用,而不是增强它,简单地说,我们已经有了一个相
当适合的应用和数据存储介质。让我们离开那,但是看一下是否我们可以按X M L抽取这个数据。
1. XML记录集
我们需要确定的第一件事是当我们以X M L输出现有的数据时,应该采用什么样的格式。在
前面我们看到,很多数据库的产品已经被扩展了,允许数据作为一系列相关的记录输出。数据
仍然是一个X M L文档,但是所使用的X M L的语法反映了数据存储在关系数据库中。这里有一个
390使用XML 高级编程
下载
例子,显示了我们的作者地址信息是如何以这种结构类型被输出的:
程序清单1 0 - 3 3
为了与使用结构输出X M L相区分,我们把从数据库中输出的X M L叫做X M L记录集。它对于
我们有用—主要是因为它用的是X M L。一旦我们用X M L来记录数据,显然可以使用所有以前
在这本书中的操作X M L部分中学到的工具;可以使用X S LT来将信息转换成为一系列的使用
H T M L的表,或者可以改变列的名字,这样数据就可以插入到别的数据库中了。
但是让我们诚实一点,使用这个方法有一个主要的缺点。最明显的就是,唯一能够执行的
验证是保证一个< R e c o r d S e t >元素只包含R e c o r d元素,并且从顺序上它们只包含< C o l u m n >元素。
如果我们希望转换这个信息到另一个服务器上去,数据将被存放在那里,服务器没有一个简单
的方法来知道被突出显示的列不应该显示在这里:
程序清单1 0 - 3 4
当然,我们能够包括带有数据的信息,这些数据是用来说明什么列是所要求的。M i c r o s o f t
的活动数据对象( A D O,Active Data Objects)采用这种方法。下面显示了存在我们的A c c e s s数
据库的数据将如何被输出,如果A D O的新特性被用于持续一个记录集:
第10章XML和数据库使用391 下载
M i c r o s o f t的A D O现在版本为2 . 5。更多的信息可以看h t t p : / / w w w. m i c r o s o f t . c o m / d a t a / a d o。
程序清单1 0 - 3 5
392使用XML 高级编程
下载
但是即使使用了这个额外信息,仍然有一个普通的数据版本在数据库中;我们已经按记录
集表示数据,要好于使用一些结构。那就是说,在数据需要被转换成其他的关系数据库的情况
下,这个技术将可能被大量地应用。因为所有的R D B M S可以按照表、行、列来转换,所有的都
可能识别该格式。使用模式元素提供的附加信息来表示列的定义,这种方法是一个相当有力的
技术。下面的代码使用A D O来生成输出结果也是简单的(下面用的是Visual Basic):
程序清单1 0 - 3 6
这种简单性所带来的好处可能就是你的应用所需要的。
2. XML数据:使用转换
然而,假设我们需要在单调的信息上增加一些结构,最简单的方式是将结构放在将要转换
输出的数据上。下面是一个X S LT样式表的例子,这个例子可以将这种单调的图书格式转变为图
书目录例子使用的格式(如果我们想将一个单调结构融合到结构化的目录中):
程序清单1 0 - 3 7
第10章XML和数据库使用393 下载
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(128)