信息之舟电脑软件应用栏目编者按:
摘要:本论文简要的探讨了XML和数据库之间的关系,同时列出一些可以使用数据库处理XML文档的软件。虽然这里不打算详尽地介绍这些软件,但是笔者希望它能够描述使用数据库处理XML文档中的主要部分。
5.0 存储和检索数据
在以数据为中心的文档中的数据内容可能来自数据库(此时你想把数据导出为XML格式),也可能是XML文档(此时你想把数据存储在数据库中)。前者的例子是在关系型数据库中存储的大量现有数据(或称遗产数据);后者的例子是将数据作为XML发布在Web中,而且你想要在你的数据库中进行存储以进行更多的处理。如此,根据你的需求,你可能需要将XML文档转移到数据库的软件,也可能需要从数据库转移到XML文档的软件,或者两者都支持。
5.1 转移数据
将数据存储在数据库中时,经常需要丢弃大量与文档有关的信息,例如文档名称和DTD,同时还有其物理结构,例如实体的定义和使用、属性值和同层元素的顺序、二进制数据的存储方式(是Base64编码、是未析实体或他方式)、字符数据段和其他的编码信息。类似的,当从数据库中检索数据时,生成的XML文档结果除了非预定义实体lt(<"),gt(">"), amp("&"), apos("’"), quot(""")不包含任何CDATA或实体引用。而同层元素和属性的出现顺序也常常就是从数据库中返回的数据的次序。
尽管一开始有些让你吃惊,但是这常常是合理的。例如,假设你需要用XML作为数据格式把一张销售从一个数据库中转移到另一个数据库中。在这种情况下,在XML文档中并不关心销售单的编号是保存在销售单的日期的前面还是后面,也不用关心是否将顾客的名称保存在字符数据(CDATA)段还是作为一个外部实体,或者直接当成一个PCDATA。最重要的在于相关的数据是从第一个数据库转移到第二个数据库中。这样,这个数据传输软件就需要考虑数据的层次结构(该结构将销售单的有关进行进行了分组),而其他则不必过多考虑。
忽略文档信息以及其物理结构的后果之一是文档的"逆反回归"的不一致效应,即将一个文档的数据存储在数据库中,然后根据这些数据重新组织成新的文档。而即便是根据标准格式处理,得到的也常常是和前面不同的文档。这是否可以接受要取决于你的需求,而且也将影响到你对数据库和数据传输中间件的选择。
