一种支持XML数据动态更新的编码方法技术

技术编号:7335576 阅读:204 留言:0更新日期:2012-05-11 23:33
本发明专利技术公开了一种支持XML数据动态更新的编码方法,通过给XML树中的每个节点分配一个隐含位置关系的编码,以直接比较两个节点编码来确定它们之间的结构关系;以父节点的编号为前缀,加上该节点在本层的唯一层编码构成节点的编号,而当根节点没有父节点时,其编码为1;对于新插入的节点n,当n作为叶节点的子节点插入时,n的层编码为2;而当n作为非叶节点的孩子节点插入时,分为最左插入、中间插入和最右插入,根据该三种不同的情况由扩展字节进制编码动态插入算法生成新的节点编码。本发明专利技术不但能保持和其他节点之间的位置关系,又不会引起已有节点编码的改变。一方面提高了编码的效率,另一方面降低了编码的存储空间成本。

【技术实现步骤摘要】

本专利技术属于XML格式数据处理
,涉及一种支持XML数据动态更新的编码方法
技术介绍
由于具有半结构性、开放性、异构性、可扩展性、灵活性等特点,XML已经成为互联网上数据表示和交换的事实标准。随着网络技术的迅速发展,越来越多的数据采用XML格式存储,如何快速有效地存储XML数据,并提供高效的XML数据查询处理,已成为当前研究的一个热点。互联网应用对用XML格式表示和存储数据的需求不断增加,XML数据存储一般通过对XML树结构按特定规则进行编码来实现。通过给XML树中的每个节点分配一个隐含位置关系的编码,就可以直接比较两个节点编码来确定它们之间的结构关系。W3C工作组针对XML数据查询开发了 XPath和XQuery查询语言,其共同特征是通过路径表达式来实现XML文档查询。执行路径查询的主要技术是结构连接,即确定两个节点之间的结构关系(祖先后裔关系或父子关系等)。而节点之间结构关系的确定主要依赖于有效的XML树节点编码方法。XML编码就是按照一定规则给XML文档树中每个节点分配一个隐含位置关系的编码,在不遍历XML文档树的前提下通过比较两个节点的编码直接判断两个节点之间是否存在父子、祖先-后裔、兄弟、前驱、后继等结构关系。目前与XML数据存储与编码的研究成果比较多,其中主要有两大类方法基于区间的编码和基于路径的编码。其中,基于区间的编码方案利用XML文档有序的特点,根据每一个元素节点在原XML文档中出现的顺序给每一个元素节点赋予一个编码;而基于路径的编码方案则是利用XML文档嵌套的特点,根据XML文档嵌套结构,给文档根节点及从文档根节点开始所能到达的每条路径的其他节点赋予一个编码。XML动态性是指对XML文档的插入、删除和更新操作的支持。由于XML文档的删除和更新操作不会涉及对已有XML节点编码的改变,因此对于XML编码机制来说,动态性就是能为新插入的节点分配合法的编码。完全支持动态更新的XML编码是指在任意位置插入一个新节点时,可以得到一个合法的编码,而不用修改已存在的任何节点编码。事实上,对编码支持动态更新的研究可以转化为研究如何在两个值之间插入一个中间值,使得这个中间值不但能保持既有的大小顺序,而且在插入这个中间值后不会引起对其他已存在值的重新分配。在已公布的动态编码方法中,压缩动态四级字符串算法(简称CDQQ是最优秀的,但是CDQS使用递归的方法生成节点编码,需要在编码前得到编码所要表示的范围,然后递归地生成第1/3和第2/3处的编码,在性能和编码空间存储上均存在有明显的缺陷。
技术实现思路
为解决上述问题,本专利技术的目的在于提供一种支持XML数据动态更新的编码方法,以提高编码的效率,并降低编码的存储空间成本。为实现上述目的,本专利技术的技术方案为一种支持XML数据动态更新的编码方法,为XML树中的每个节点分配一个隐含位置关系的编码,以直接比较两个节点编码来确定它们之间的结构关系;以父节点的编号为前缀,加上该节点在本层的唯一层编码构成节点的编号,而当根节点没有父节点时,其编码为1 ;对于新插入的节点n,当η作为叶节点的子节点插入时,η的层编码为2 ;而当η作为非叶节点的孩子节点插入时,分为最左插入、中间插入和最右插入,根据该三种不同的情况由扩展字节进制编码动态插入算法生成新的节点编码。进一步地,每个子节点的扩展字节进制编码为父节点编码后接255作为段分隔符连接层编码,最左子节点的层编码为2,其他子节点的层编码为其左兄弟节点层编码加1。进一步地,对于新插入的节点η,当η作为非叶节点的最左子节点插入时,η的层编码为将η右兄弟节点的层编码在第一个非1节之后截断,并将最右节减1。进一步地,对于新插入的节点η,当η作为非叶节点的中间节点插入时,η的层编码为从左至右逐节比较η的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差大于1,将左兄弟节点层编码在此节加1并舍去其后所有节。进一步地,对于新插入的节点η,当η作为非叶节点的中间节点插入时,η的层编码为从左至右逐节比较η的左右兄弟节点的层编码,直到在某一节上不相等,如果左右兄弟节点的层编码在此节相差等于1,并且右兄弟层编码没有结束,则将右兄弟节点层编码的这一节减1并舍去其后所有节;而如果左右兄弟节点的层编码在此节相差等于1并且左兄弟层编码没有结束,则将左兄弟节点层编码的下一节加1并舍去其后所有节。进一步地,对于新插入的节点η,当η作为非叶节点的最右子节点插入时,η的层编码为η左兄弟节点层编码的第一节加1并舍去其他节。本专利技术支持XML数据动态更新的编码方法,其能保持和其他节点之间的位置关系,且不会引起已有节点编码的改变。一方面提高了编码的效率,另一方面降低了编码的存储空间成本。附图说明图1是本专利技术静态扩展字节编码前缀编码示意图。图2是本专利技术扩展字节编码动态编码分配示意图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。在本专利技术实施例的描述中,为便于理解,首先作如下定义字节码逻辑编码中每个字节码的取值范围为“0”,“1”,. . . “2Μ”,“255”;物理编码中每个符号由8个二进制位即一个字节表示,分别为“00000000”,... “11111111”。为了不产生混淆,在本专利技术实施例中将十进制表示上为多位的一位字节码用中括号括起来, 如 96是四位字节码“ 10”,“255”,“9”,“6”组成的一串编码。节编码节编码由除0和以外的一位以上字节码构成,从左至右称为从高位到低位。运算关系加1(+1)运算,在最低位按整数加1运算处理,如果结果为则将该位设为1并向高位进1 ;减1(-1)运算,其为加1(+1)运算的逆运算;大于( > )关系,设 a是字节码,则a+1 > a,并具有传递性质;小于( < )关系,设a是字节码,则< a,并具有传递性质。段编码段编码由节分隔符0( 二进制表示为“00000000”)连接的多个节组成。本专利技术支持XML数据动态更新的编码方法,通过给XML树中的每个节点分配一个隐含位置关系的编码,就可以直接比较两个节点编码来确定它们之间的结构关系,其中,节点的编号是以父节点的编号为前缀,加上该节点在本层的唯一层编码组成;对于新插入的节点n,当η作为叶节点m的子节点插入时,η的层编码为2 ;而当η作为非叶节点m的孩子节点插入时,分为最左插入、中间插入和最右插入,根据不同的情况由扩展字节进制编码动态插入算法生成一个新的节点编码,该编码不但能保持和其他节点之间的位置关系,又不会引起已有节点编码的改变。当根节点没有父节点时,其编码为1 ;每个子节点的EBCL编码为父节点编码后接 作为段分隔符连接层编码,最左子节点的层编码为“2”,其他子节点的层编码为其左兄弟节点层编码加1。对于新插入的节点n,当η作为非叶节点m的子节点插入时,最左插入、中间插入和最右插入的几种情况如下当η作为非叶节点m的最左子节点插入时,η的层编码为将η右兄弟节点的层编码在第一个非“1”节之后截断,并将最右节减1,如果结果等于1则扩展一个新的节;当η作为非叶节点m的中间节点插入时本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:吴明晖侯宏仑霍梅梅余胜陈天洲孙霖
申请(专利权)人:浙江大学城市学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术