1.0 简介 本论文简要的探讨了XML和数据库之间的关系,同时列出一些可以使用数据库处理XML文档的软件。 虽然这里不打算详尽地引见这些软件,但是笔者希望它能够描述使用数据库处理XML文档中的次要部分。这里有点偏向与关系数据库,由于我的经验如此。 2.0 XML是数据库吗? 在开始讨论XML和数据库之前,我们需求回答一个萦绕在很多心头的问题: "XML是数据库吗?"在严厉意义上将,如果"XML"是指XML文档时,答案是"否"。虽然XML文档包含了数据,但是如果没有其他的软件来处理这些数据,它对于数据库的意义和其他文本文件没有什么区别。 如果在更为宽泛一些的意义上将,当"XML是指XML文档以及所有相关的XML的工具和技术时,答案则是"是"。 之所以肯定是由于XML提供了许多数据库中所需求的部分:存储(XML文档),结构(DTD,XML schema言语),查询言语(XQL, XML-QL, QUILT等), 编程接口(SAX, DOM),等等。不过...XML还缺少很多在真实的数据库中所必备的内容: 无效的存储、索引、安全、买卖、数据完备性、多用户访问、触发、多文档查询等。因此如果在数据量普通、用户较少、功用要求不高的环境下可以把XML当作数据库来使用;而在大多产品的环境中,要求有许多的用户使用、需求严厉的数据完整性并且对功用有很高的要求,XML就不能胜任了。而且,考虑到象dBase和Access等数据库既便宜又十分易用,因此甚至在第一种情况下XML都很少有理由充当数据库的角色。 3.0 为什么使用数据库?当在考虑使用XML和数据库时,第一个要问本人的问题应该是:为什么我需求使用数据库?你需求将原有的数据导出?你需求保存你的Web主页?你是要在一个电子商务使用中使用数据库,而且其中XML当做传输的数据格式?这些问题的答案都将直接影响到你对数据库和两头件(如果有的话)的选择。 例如,假设你在电子商务使用程序中使用XML来进行数据传输。这是很好的方案,由于你的数据具有高度规范的结构,而XML中的那些实体和编码对你而言并不重要了。毕竟样你关怀的仅仅是数据而不在于这些数据如何在文档中进行物理的存储。如果你的使用程序绝对比较简单的话,关系数据库和数据传输两头件将可以满足你的需求;如果使用程序庞大而且复杂,那么你就需求一个完全支持XML的开发环境了。 从另一方面来说,假设你有一个从零散的XML文件创建的网站。你不只需求管理这个网站,你还要提供方法让用户可以查询其中的内容。这时你的文件将非常的不规范,而实体的使用对你来说将变得很重要,由于这些文件的结构是网站的基本。在这个例子中,你就需求某类"原生XML"数据库可以执行版本化、跟踪实体的使用并且支持如XQL这样的查询言语。 4.0 数据和文档的对比 笔者认为,在选择数据库时,最重要的判断要素可能是你是利用数据库来保存数据还是保存文档。如果你想保存数据,你需求的数据库次要是面向数据存储(例如关系型数据库或者面向对象型数据库)以及在数据库和XML文档之间互相转换。从另一个角度来将,如果你想存储文档,你需求一个专门设计用来存储文件的内容管理系统。 虽然你可以本人把文件保存在关系数据库或面向对象数据库中,可是你常会发现你的任务是在反复内容管理系统的功用。类似的,虽然一个内容管理系统通常是建立在面向对象数据库或关系数据库之上,但要是把一个内容管理系统当做数据库来使用就可能非常的令人困绕。 你需求存储数据还是文档,答案常常取决于你的XML文档。缘由是XML文件分为两大类:以数据为中心和以文档为中心。. 4.1 以数据为中心的文件 以数据为中心的文件的特点是结构相当规范、数据颗粒度好(也就是说,数据中最小的独立单元是PCDATA元素或者是属性)、很少或者没有混合内容。其中同层次元素和PCDATA的出现顺序并不重要。典型的例子是,XML文档包含了销售定单、飞行安排、餐馆菜单等等。数据为中心的文档常被用于机器的使用,这时XML可能是多余的---它仅仅是数据传输的手段而已。 例如,下面的销售定单的文档就是以数据为中心的: ABC Industries 123 Main St. Chicago IL 60609 981215 Turkey wrench: Stainless steel, one-piece construction, lifetime guarantee. 9.95 10 Stuffing separator: Aluminum, one-year guarantee. 13.27 5 在XML的世界中,许多内容丰富的文档实际上都是数据为中心的。我们以显示图书信息的Amazon.com网站为例。虽然这个页面是相当巨大的文本,但是这个文本的结构是高度规范的,其中许多的部分对任何的书本描述页面都是相反的,并且特点页面中的各部分的大小都是无限的。也就是说,该页面可以通过一个简单的、数据为中心的XML文档来建立,其中包含了从数据库中检索得到的文本信息以及一个XSL款式表。通常,目前任何通过在模板中填充数据库数据而动态结构HTML页面的网站都可以被上面引见的用以数据为中心的XML文档和一个或者多个的XSL款式表方式替代。 ABC Industries agrees to lease the property at 123 Main St., Chicago, IL from XYZ Properties for a term of not less than TimeUnit="Months">18 at a cost of Currency="USD" TimeUnit="Months">1000 可以从下面的XML文档和简单的款式表得到: ABC Industries 123 Main St., Chicago, IL &nb