• 热门标签

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

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

够产生包含许多源的数据的X M L文档吗?
• 我们想在文档中无缝地集成其他的外部数据。
2. 解决问题
用普通的文件系统来解决这些问题是非常困难的。尽管大部分的操作系统允许许多用户同
时打开一个文件,目前大部分的文本和X M L编辑器不能很好地控制这些文件,让用户编辑同一
文档的不同部分,并且不会影响他人的工作。另外,操作系统所应用的安全机制通常是在文件
级的。这就意味着不同的人可被赋予不同的处理权限处理不同的文档,但是不能处理同一文档
的不同部分。
为了解决上面所提出的问题,需要理解关于X M L文档的不同观点。实际上,我们需要从我
们基本的X M L单元是一个文档的想法中脱离出来,而把它考虑成可操作的节点集。
文档和节点
对于那些刚接触X M L的人来说,经常困惑的是假设存储X M L文档的基本单元必须是在一个
文件中的普通文本。因为一个文档必需是人可读的,所以假设就是文件必需被存储为一个文本
文件,或者在一个文件系统内,或者也许在一个数据库的一个字段里。这个实际上是对XML 1.0
规范的一种错误理解。
一个应用程序—你或我可能写的一个计算机程序—不是想要直接处理X M L文件,而是
作为一个解析器运作,或X M L解析器。XML 1.0规范的介绍(第一部分)中说:
称为X M L处理器的软件模块是用于读取X M L文档和提供对他们的内容和结构的处理。一
个X M L处理器的工作基于另一个称为应用的模块的行为。这个规范[XML 1.0]描述了一个
X M L处理器应具备的行为,根据它应该如何读X M L数据,并且信息是如何提供给应用
的。
换句话说,尽管我们花费了大量时间来看X M L文档和羡慕它们的结构,现实是我们应该考
虑的文档应根据文档所能够表示的节点结构。D O M的角色—是否是用J a v a或V B写的;是否是
I B M或S u n写的—都向我们隐藏了分级结构和让我们操作一棵树的节点。当然,当我们在讨论
数据或在打印页面中表现它们时,就如同在本书中,做到这一点的最容易的方法是使用X M L标
记语法;然而,我们应该记住这种分离(参见图1 0 - 1)。
这些没有一个对你来说是新的—定位这些节点的方法是D O M的任务,并且已经在第5章中
讨论过—那么你可能会问为什么我要重复它。嗯,这意味着我们对X M L文档的存储的理解有
些改变。比起简单地寻找处理文本的机制—比方说,文件系统或数据库的文本字段——我们
需要理解不同的工具和产品是如何处理分级节点集的。X M L作为文本,仅仅变成一种在它们的
节点上从一个系统到另一个系统转载信息的便捷的方法(参见图1 0 - 2)。
第10章XML和数据库使用357 下载
图10-1
图10-2
然而,传送节点的方法仍然是X M L文档;然而,对于解析器来说,一个X M L文档不过是一
个输入单元。以上图中的文档为例:
程序清单1 0 - 1
358使用XML 高级编程
下载
没有理由说,为什么我们不能取出这个文档的地址信息,并且创建两个更完美的可接受的
X M L文档。这就是在讨论X M L时必然想到的。例如,我可能说Wrox Press的U K地址是:
程序清单1 0 - 2
并且U S地址是:
程序清单1 0 - 3
尽管我们没有设计出将如何做到这样,通过处理节点,至少我们已经创建了为两个人对同
一个X M L文档进行工作的可能性—通过允许他们处理分离的节点。倘若我们可以建立一个系
统,它允许独立的节点控制,我们就可以创建一个系统,它看上去允许处理一个X M L文档的不
同部分。不同的用户可以指定不同的节点集进行处理—以一种有效的X M L文档的形式。继续
考虑我们的两个地址,将包括如下部分(见图1 0 - 3)。
一个服务器,按这种方法被设计成保证节点的有效—或者X M L文档,它可能是某个大的
X M L文档的一部分—我们将它称为X M L服务器。把这些概念记住是很重要的,在评估不同的
产品时,因为很多的应用程序声称能够处理X M L,但是可能不允许像我们所期待的控制方法。
我们将在后面讨论一下这些应用程序。
某些人争辨说,这个“节点模型”没有什么名气,因为节点本身与它们所表示的元素无
关。例如,为了处理<Address>元素的headquarters属性,我们应该能够使用:
在使用D O M的地方我们必需使用:
第10章XML和数据库使用359 下载
图10-3
每个节点从本质上说是一个有着自己的属性和方法的对象。这个方法叫做树林范式。参考
Robin Cover的站点得到更多的细节,在h t t p : / / w w w. o a s i s - o p e n / c o v e r / t o p i c s . h t m l # g r o v e s。同
时这个方法产生一些重要的问题,被激烈地讨论,但不太可能会很快出现在你的系统里。
3. 小结
为了真正地取得对X M L文档的控制,我们需要解决在文件系统的局限性中所遇到的问题:
• 我们想处理极大的文档,并且想检查同其他部分分离的部分文档。
• 我们想允许许多人在同一时刻处理同一文档。
• 我们想使用最适合处理数据的工具来维护文档的各个部分。
• 我们想能够记录一个文档不同版本的轨迹。
• 我们想控制一个文档的某一部分只有某人可以查看或修改。
• 我们想在文档中无缝地集成其他的外部数据。
为解决这些问题,我们必须有在文档中处理任何节点的能力。
10.1.2 文档管理
在了解节点的操作之前,有必要花些时间在中间技术上—在数据库中存储文档。我们已
经确定,使用文件系统来处理文档不是一个用来解决安全问题和用户数量的有效方法。我们也
看到,在节点级进行操作—比起对文档来—可能需要某种方法来解决。在解决这些问题之
前,我将简要地谈到“在中间( in between)”的方法,用于改善处理文档的方法。这个方法要
比文件系统复杂得多。
360使用XML 高级编程
下载
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(118)