admin 管理员组

文章数量: 1184232


2024年4月20日发(作者:c语言编辑器网页版)

维普资讯

第25卷第2期 

2 0 0 6年6月 

计 算技术与 自 动化 

Vol_25.No.2 

Computing Technology and Automation 

Jun.2 0 0 6 

文章编号:1003—6199(2006)02—0100—04 

基于关系数据库的XML数据转换架构 

余诗权,谢冬青 

(湖南大学软件学院。湖南长沙410082) 

摘要:针对应用系统的数据转换需求。分析数据转换的架构、XML数据在关系数据库中的存储,提出 

井论证了基于关系数据库的数据转换架构。并给出具体的实现算法。所提出的算法能比较完整地存储任何 

篇XML文档,并较好地支持基于元素和文档片段的查询和检索。通过将XSL技术引入到该数据转换槊 

构中,在保证XML信息存储完备性的基础上,提高了在关系数据库中的查询检索速度。这种架构利用 

XML技术解决了进行各种数据转换带来的问题。实践证明该技术大大提高了系统的灵活性和可扩展性。 

关键词:XML;数据转换框架;存储;XSL 

中图分类号:TP311.132.3 文献标识码:A 

A XML Data Transformation Architecture Based Oil Relation Database 

YU Shi—quan.XIE Dong—qing 

(Software olClege of Hunan University.ChangSha 410082,China) 

Abstract:This paper aims at the data conversion requirement of some application system,takes deep analyze and research in 

data transformation and XML data storage,presents a transformation architecture based on relation database data,and gives the 

detailed algorithm,The algorithm can integrally storage a XML document,support query and search functions based on elements 

and document fragments.By importing the XSL technology to the data transformation framework,it deeply promotes the query 

speed in the relation database and also assures the XML information’S integrity.This archltecture solves the problems caused by 

using XML technology tO achieve conversion between different kinds of data。and deeply improves the extensibility and agility of 

the system. 

Key words:XML;data transformation framework;storage;XSL 

的验证提出了一种很好的解决方法。文献[3]指出 

1 引言 

对XML技术的研究一直是计算机软件技术 

界的热门,对XML技术的研究方面,主要包括对 

了基于XML文档的关系数据库与面向对象数据 

库之间的信息,为处理XML文档和数据库之间信 

息交互提供了一个很好的方法。为提高查询和更 

新的效率,XML文档中的对象必须拥有顺序标识 

(OID),文献[4]提出了基于模式的顺序维护算法, 

它可以有效降低xML文档顺序维护的代价 J。 

对于XML技术的应用方面,将XML技术应 

XML范式的研究,对XML文档的有效性的研究、 

xML与WEB SERVICE技术、xML与数据库技 

术、XML与知识库技术等的融合等方面研究。 

文献[1]研究了XML及语义Web技术,提出 

了用XML来解析WEB语义的技术,文献[2]提出 

了一种对于DTD范式基于节点自动机技术的 

XML模式验证的方法,对于XML文档的有效性 

收稿日期:2006 02—13 

用到一卡通系统 j、利用XML处理企业信息交 

换、在企业供应链集成中使用XML技术等等。 

xML技术应用到各种领域,取得了很好的效果。 

可以说,XML技术成为当今发展的主流方向,各行 

各业的许多数据都希望以XML格式作为标准,希 

作者简介:余诗权(1968一),男,湖南常德人,计算机软件工程师,研究方向:软件架构研究与应用(E—mail:cdysq@sohu.com)。 

维普资讯

第25卷第2期 余i寺权等:基于关系数据库的XMI 数据转换架构 

望数据能够以XML格式进行数据存储、传输和交 

换。 

*SQL生成器把XML查询语句转换成sQL 

语句以在关系数据库中查询。 

*XSL对XML文档进行转化并在浏览器中 

显示 

本文结合多年从事基于XML技术的项目实 

施的经验,提出了一种基于关系数据库的XML数 

据转换框架。解决了利用XML技术进行各种数 

D0M即文档对象模型,它读取XML文档中 

的节点,是最基本也是最底层的XML存取技术, 

它实际上是提供一组API来存取XMI 数据。 

据转换的问题,提高了系统的灵活性和可扩展性。 

2数据转换架构的设计 

2.1数据转换目标 

通常我们会利用XML进行数据的传输。 

XML的数据源很多,但是可以归纳为如下三种:1、 

XML格式的纯文本文件2、关系数据库3、来源于 

其他各种应用数据,如邮件、目录清单、商务报告等 

等。数据转换的目标就是实现各种格式的数据之 

间的转换,也就是实现XML格式的纯文本文件、 

关系数据库、以及其他应用数据之间的信息识别、 

信息传递和数据存储。 

2.2数据转换架构 

XML与数据库的信息交互技术的研究由来已 

久,但是成体系的很少,并且能够投入到实际应用 

中的更是比较少,本文结合多年从事基于XML技 

术的项目实施的经验,提出了一种基于关系数据库 

的XML数据转换框架,架构图如下图: 

WBE/应用程序 

中中煳瞳询 

xML文档广‘L 重丝堡r]和重组 

I . 1 ML 1.1数据存储 

数 

据 

库 

结果信息i

—— 

童 结墨I 

 

图l数据转换框架 

*XML预处理模块主要是基于JAVA的 

XML解析器(XML Parser),它是一系列的JAVA 

包,提供在处理XML文档时两个最常用的API: 

DOM和SAX接口。利用XML解析器对XML文 

档进行解析,过滤掉系统不能够转换和处理的信 

息,如命名空间等等,然后利用XSL转换机制进行 

适当的格式转换,使XML文档满足一定的格式要 

求。 

*数据存储和重组模块主要是完成XML数 

据与数据库数据的相互转换工作。把XML文档 

看成对象模型树,根据一系列模式匹配规则,把文 

档信息转换到关系数据库表中。 

DOM接口编程实现同其他应用相连的功能。 

3数据转换关键技术 

数据转换架构的建立,解决了各种数据源进行 

转换的方法论的问题,但是在具体实施的过程中, 

需要解决各种各样的技术难题,比如怎样实现一类 

XML文档到另外一类XML文档的转换,怎么实 

现XML数据的存储等等,由此引入了XSL和 

XSLT stylesheet技术来解决从一类文档到另外一 

类文档的转换,并创造性的提出了XML数据的存 

储规则和存储过程。 

3.1 XSL技术 

XSLT的英文标准名称为eXtensible 

Stylesheet Language Transformation。根据W3C的 

规范说明书(http://www.w3.org/TR/xslt),最早 

设计XSLT的用意是帮助XML文档(document) 

转换为其它文档。但是随着发展,XSLT已不仅仅 

用于将XML转换为HTML或其它文本格式,更 

全面的定义应该是:XSLT是一种用来转换XML 

文档结构的语言。 

XSL规范定义了一种基于XML的语言,用于 

表达从一类XML文档到另一类XML文档的转换 

规则。XSLT语言可以被认为是一种编程语言,用 

于表达从一种Schema类型到另一个Schema类型 

的转换。 

XSL使用三个文档: 

*源文档 

源文档是一个合式的XML文档,提供转换的 

输入。 

*XSLT stylesheet文档 

XSLT stylesheet文档是一个使用XSLT词汇 

表达转换规则的XML文档。 

*结果文档 

结果文档是通过XSLT stylesheet建立的转换 

运行源文档所产生的文本文档。 

XSLT stylesheet是一个XML文档,包含一个 

或多个XSLT模板,模板是直接量结果元素(1iteral 

维普资讯

102 计算技术与自动化 2006年6月 

result element)和XSLT指令的集合。而直接量结 

果元素是要逐字复制到结果文档中的元素。 

XSLT指令是用于更改模版处理的已知元素。 

3.2数据的存储技术 

XML数据的存储是一个比较难以解决的问 

题,首先我们要保证要存储的XML文档是有效 

的,即遵循XML规范_6j。W3C XML规范中定义 

了XML数据模型,这里我们对其作一些简化,提 

出一种更加通用的数据模型。数据库是文档的集 

合,文档定义为具有一个名字和根元素。一个 

XML文档由一棵树组成。一棵XML文档树是一 

个节点的集合,其中每个节点至少有一个父节点, 

并且可以有很多的有序的子节点。 

用图G来描述XML 数据。定义G=(V,E), 

其中V={oid I oi( (SV},SV是节点集合;E= 

{<ot,Y>ic P( ,j,)(( ,Y)(SV};谓词P( , 

Y)表示节点 到节点Y的弧,表示父亲——孩子 

关系。 

存储策略的基本思想有如下几点规则: 

(1)文档中的每个节点类型对应一张表来存储 

每个节点的信息。节点类型包括元素、属性、字符 

数据、声明信息、注释、处理指令等等。 

(2)对于前面BOOKS的文档图,它的每个元 

素、属性、字符数据、注释节点都有唯一的标识符, 

其中Element表、Chardata表、Comment表各设一 

个order值来描述该节点在父节点中的位置,用于 

存储兄弟次序。 

(3)对于混合内容模型的元素,其子元素、子字 

符数据、子注释的次序信息对于文档的重组是至关 

重要的。Chardata表设置一个CDTATA属性,用 

于判断该字符数据是否是CDATA段,并且每个节 

点表与一个索引相关联。比如,对Element表可以 

把元素类型名称作为索引码,建立一个B+树或者 

B树索引。 

(4)存储模型需要一个有序文档标识组成的文 

档列表(DOCUMENT表),一个文档有一个唯一的 

标识,其中每个文档与一个整数索引关联。一个实 

体信息表来存储分析实体信息,分析实体一般在字 

符数据中出现,以entity格式表示。 

(5)同时为了能够对文档片段的存储和检索, 

需要把文档分割成片,对文档片段做存储,这样就 

需要增加一个文档片段表(fragement表)和一个文 

档片段索引表(fragement reference表)。 

根据以上规则,就可以得到基于关系数据库的 

XMI 存储的逻辑模式,如图2所示。 

ekment 

图2基于关系数据库的XML存储的逻辑模式 

下面以一个BOOKS为例来阐述XML存储策 

略。 

<?xml version=‘1.0’encoding=“UTF一 

8”?> 

<!DOCTYPE Books SYSTEM books.dtd> 

<Books> 

<Books year=“2005”page=“90”> 

<Title>DBMS</Title> 

<Author Gender=“M”> <First 

name>Yu</Firstname> 

<Lastname>Shuquan</Lastname> 

</author> 

<Author Gender=“M”> <First— 

name>Xie</Firstname> 

<Lastname>DongQing</Lastname> 

</author> 

<Publisher>HuNan edu</Publisher> 

<Price Moneytype:“RMB”>100.00 

</Price> 

</Book> 

<Book> 

<Book> 

<Books> 

根据上面对BOOKS的XML表达。我们可以得到 

相应的文档树,树中声明节点以及注释节点省略。 

文档树如图3所示。 

在遍历对象模型树的过程中,我们采用深度优 

先算法,为每个元素节点、属性节点、注释节点和字 

符数据节点绑定一个唯一的ID,同时将每个节点 

维普资讯

第25卷第2期 余涛权等:基于关系数据库的XML数据转换架构 

的信息存入相应的表中。 

’ ・ - 

… 

: 

J (90 1l-l _ a r 

量 毒 喜 毒毒善 D 一oBf M1 l、 m日 …”  … ~一。 

t ’ 

vu ShiQuA ̄ x-。 

: ‘-唧m 

图3 文档树 

对文档树的遍历算法如下: 

#include<stdlib・h> 

t ̄tCt node/*图形顶点结构宣告*/ 

{int vertex;/*顶点资料*/ 

struct node*nextnode;/*指下一顶点的指 

标*/}; 

typedef struct node graph;/*图形的结构 

新型态*/ 

struct node head[ ;/*图形顶点结构数组 

int visited[9];/*遍历记录数组*/ 

void creategraph(int*node,int num) 

{graph newnode;/*新顶点指标*/ 

graph ptr; 

int from;/*边线的起点*/ 

int to;/*边线的终点*/ 

int i: 

f0r(i=0;i<num;i++)/*读取边线的 

回路

。 

*/ 

{from=node[i*2];/*边线的起点*/ 

to=node[i*2+1];/*边线的终点*/ 

/*建立新顶点记忆体*/ 

newnode=(graph)malloc(sizeof(struct 

node)); 

newnode >vertex to;/*建立顶点内容 

newnode一>nextnode=NULL;/*设定指 

标初值*/ 

ptr=&(head[from]);/*顶点位置*/ 

while(ptr一>nextnode!=NULL)/*遍 

历至链表尾*/ 

ptr=ptr>nextnode;/*下一个顶点*/ 

ptr一>nextnode=newnode;/*插入结尾 

, 

}} 

void dfs(int current){ 

graph ptr; 

visited[current]=1;/*记录已遍历过*/ 

printf(“顶点[%d]”,current);/*印出遍历 

顶点值*/ptr=head[current].nextnode;/*顶 

点位置*/while(ptr!=NULL)/*遍历至链 

表尾*/{if(visited[ptr一>vertex] =0)/* 

如过没遍历过*/dfs(ptr~>vertex);/*递回遍 

历呼叫*/ptr=ptr一>nextnode;/*下一个顶 

点*/}} 

通过如上的深度优先的算法,我们成功地将 

BOOKS的信息存储在关系数据库中。 

4 结论 

本文架构的数据转换框架可以很好的满足各 

应用系统的数据转换需求,所提出的算法能比较完 

整地存储任何一篇XML文档,并较好地支持基于 

元素和文档片段的查询和检索。将XSL技术引入 

到该数据转换架构中,不仅保证XML信息存储完 

备性的基础上,同时也提高了在关系数据库中的查 

询检索速度。 

本文设计的基于关系数据库的XML数据转 

换技术已成功地应用于审计信息管理系统中,实践 

证明完全可以满足管理信息系统建设的要求,不但 

可以提高系统的灵活性、可扩展性,而且简单易用, 

在信息化中具有很好的推广价值。 

参考文献 

……一 

聂培尧,安世虎.XML及语义Web技术[J].计算机科学, 

2001.28(5):34~36. 

王春宇.基于DTD节点自动机的XML模式验证方法[J].计 

算机应用与工程,2004,(32):14~17. 

高阳.谭力民.基于XML文档的关系数据库与面向对象数据 

库之间的信息交互[J].计算机应用与工程,2003,29(3):196 

198 

黄芳,孙建伶.XML文档顺序的维护[J].计算机科学,2004, 

31(8):71~73. 

吴沉寒,等.基于XML RPC通信的一乍通系统[J].计算机应 

用与工程,2004,(27):19~21. 

W3C Extensible M ̄rkup Language(XML)[EB/OL]http:// 

www w3c.org/XML. 


本文标签: 文档 数据 转换 节点 信息