用于二进制xml数据的生成及其节点定位的方法和装置的制作方法

文档序号:6354932阅读:359来源:国知局
专利名称:用于二进制xml数据的生成及其节点定位的方法和装置的制作方法
技术领域
本发明涉及可扩展标记语言(XML)数据处理技术领域。更具体地,本发明涉及对ニ进制XML数据的生成及查询进行改进的技木。
背景技术
XML是ー种良好的数据描述语言,具有強大的数据描述能力,同时具备自描述的特征,使得人和机器都能阅读XML数据源。XML技木本身的特征及其相关技术的标准化,使得XML在Web技术等领域具有极其广泛的应用,XML是不同的系统之间数据交换的通用格式,以XML为接ロ的自动化系统具有良好的交互性。但是,XML技术本身很复杂,处理XML将给系统増加相当的工作负荷,XML的冗余也増加了系统之间的网络开销。因此,人们在使用XML作为传输数据的格式吋,为了减低数据冗余,提高带宽利用率,想到了 XML压缩技术,但这却进一步增加了本机的运算负荷。如何在提高XML的网络传输效率的同吋,减轻单机XML的运算压力,变成了人们探究的课题。ニ进制XML,也就是Binary XML正是在此背景下应运而生,解决了资源受限的运算系统使用XML的重要难题。Binary XML是XML数据紧凑的ニ进制表示形式,显著地降低了 XML数据的冗余性,使得XML数据的解析也变得容易很多,减轻了处理XML数据的系统的运算工作,降低了 XML数据传输时所占的带宽。Binary XML首先由无线应用领域提出并使用,先后有ー些不同的规范出现,包括 Wbxml (WAP Binary XML)、Fast Infoset (X. 891)和 EXI (EfficientXML Interchange)等。除了资源受限因素,许多要求高性能的系统,如数据库,也开始采用Binary XML来传输XML数据,完成XML数据的处理。虽然Binary XML显著地降低了 XML数据的冗余性,但其应用中存在的一个问题是在处理针对Binary XML的查询请求以定位其中的节点(或元素)时,需要逐个遍历Binary XML数据源中的姆个节点(包括元素节点和非元素节点),这在XML数据源本身节点数量庞大、树型关系复杂的情况下会导致定位节点的效率大大降低,并导致相应查询请求的时间延长。

发明内容
考虑到上述存在的问题,本发明的目的之ー在于提供一种能够在定位(查询)Binary XML数据源中的节点时避免逐个遍历Binary XML数据源中的姆个节点的方法,以提高定位节点的效率。本发明的又一目的在于提供ー种生成能够支持快速定位节点的BinaryXML数据源的方法。根据本发明的ー个方面,提供了一种用于生成ニ进制XML数据的方法,包括获取XML数据源;针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距 NSD标识;以及利用所述FCD标识和NSD标识,生成该XML数据源的ニ进制XML数据,所述ニ进制XML数据中包含所述F⑶标识和NSD标识。根据本发明的一个实施例,元素节点的FCD标识表示该元素节点的结束端至其第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该节点的结束端至其下ー个兄弟节点的起始端的距离。根据本发明的另一方面,提供了一种用于定位ニ进制XML数据中的节点的方法,所述ニ进制XML数据中包含首子距FCD标识和邻弟距NSD标识,包括接收查询ニ进制XML数据中的节点的请求;获取该请求的查询路径;以及利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。通过本发明的方法和系统,可以实现在定位ニ进制XML数据过程中对不必要的节点进行跳转,从而节约了节点定位的时间、避免了扫描或读取不必要的节点,提高了节点查询和节点定位的效率。


通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将更加明显,本发明附图中相同的标号表示相同或相似的部件。在附图中,图I示出了根据本发明一个实施例的用于生成ニ进制XML数据的方法的流程图;图2示出了根据本发明一实施例的用于生成TOD标识和NSD标识的流程图;图3示出了根据本发明一个实施例的用于定位ニ进制XML数据中的节点的方法的流程图;图4A示出了基于不包含TOD和NSD标识的IBM Binary XML进行节点查询的示意图;图4B示出了基于包含TOD和NSD标识的IBM Binary XML进行节点查询的示意图;图5示出了根据本发明的又一实施例的用于定位ニ进制XML数据中的节点的方法的流程图;图6示出了根据本发明一个实施例的用于生成ニ进制XML数据的系统的框图;图7示出了根据本发明又一实施例的用于定位ニ进制XML数据中的节点的系统的框图;图8A示出了基于不包含TOD和NSD标识的WBXML数据进行节点查询的示意图;图8B示出了基于包含TOD和NSD标识的WBXML数据进行节点查询的示意图;图9A示出了基于不包含TOD和NSD标识的MS-BINXML数据进行节点查询的示意图;以及图9B示出了基于包含TOD和NSD标识的MS-BINXML数据进行节点查询的示意图。
具体实施例方式在下文中,将參考附图通过实施方式对本发明提供的用于确定要被物化的节点的方法和系统进行详细地描述。图I示出了根据本发明一个实施例的用于生成ニ进制XML数据的方法的流程图。图I所示的方法从步骤101开始。在步骤101中,获取XML数据源。这里,所获取的“XML数据源”是指未经紧凑化处理的,以树型结构存在的可扩展标记语言XML数据源。XML数据源可以是以任意形式存在的、表达XML语义的信息,包括但不限于XML文档、XML信息流、SAX事件流、层次性或树状的存储结构等。其中,“树型结构”是XML数据源的ー个重要特征,其含义是指XML数据源表示了具有分层结构的多个元素节点间的层级关系,最顶端的元素节点称为“根节点”,最底端的元素节点称为“叶子节点”。“根节点”没有父节点,也没有兄弟节点,但是可能拥有“子节点”。“叶子节点”没有子节点,也是可能拥有“父节点”或“兄弟节点”。一个节点与其“父节点”或“子节点”之间存在类似于上级和下级的关系,而ー个节点与其“兄弟节点”之间则处于同一层级。需要指出的是,“元素节点”与“节点”在含义上有所区别,本发明中所指的“节点”可能包括元素节点、文本节点、属性节点等多种节点。而“元素节点”则专指由XML数据源中的元素所构成的节点。然而,如果本发明中提到“根节点”、“父节点”、“子节点”、“兄弟节点”或“叶子节点”,则它们分别为“根元素节点”、“父元素节点”、“子元素节点”、“兄弟元素节点”或“叶子元素节点”的简称。接下来图I所示的方法进行至步骤102。在步骤102中,针对该XML数据源中的元素节点,生成该元素节点的首子距FO) (First Child Distance)标识和邻弟距NSD (NextSibling Distance)标识。根据本发明的一个实施方式,该元素节点的F⑶标识表示该F⑶标识的结束端至该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下ー个兄弟节点的起始端的距离。这样定义的依据是因为XML本质上就是树形关系的一种表达,所以元素a中可以嵌套元素b,所以元素a结束时,元素b肯定已经先结束,也就是说a(外层元素,或父元素)的结束位置肯定是在b(内层元素,或子元素)结束位置之后。根据本发明的又ー实施方式,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有下ー个兄弟节点也没有父节点,则该元素节点的NSD标识为零。需要指出的是,还可以采用多种对FCD和NSD标识进行定义的方式,例如,可以令某一元素节点在没有下ー个兄弟节点时,其NSD为零。例如,FCD标识的值还可以是本节点的第一个子节点的相对起始位置的偏移量,若本节点为叶子节点,则FCD为零。而NSD标识的值则为本节点的下ー个兄弟节点的相对起始位置的偏移量,若该节点没有下ー个兄弟节点吋,则NSD为零。一般地,FCD和NSD可以是通过任何方式定义的,只要能直接得到或间接计算得到节点与它的第一个子节点或者节点与它的下ー个兄弟节点之间的距离信息即落入本发明的保护范围。关于具体的计算得到F⑶和NSD的过程,对于要生成不同的Binary XML格式可能有所不同,下文将结合图2进行具体说明。接下来在步骤103中,利用所述F⑶标识和NSD标识,生成该XML数据源的ニ进制XML数据,所述ニ进制XML数据中包含所述FCD标识和NSD标识。本领域技术人员应当了解,从XML数据源生成ニ进制XML(Binary XML)文档属于现有技术中的内容,基于不同的要生成的Binary XML数据源的格式,同一源XML数据源可以生成不同的Binary XML数据源。然而,无论现有技术中存在何种格式或标准的Binary XML数据源,均没有在所生成的BinaryXML数据源中包含F⑶标识和NSD标识。通过步骤103,可以在将源XML转换成Binary XML 的过程中,为Binary XML中的节点加入F⑶和NSD标识。因此,通过如图I所示的方法生成的Binary XML中即包含F⑶标识和NSD标识。根据本发明的一个实施方式,在BinaryXML中的每个节点后均含有该节点的FCD标识和NSD标识,并且每个节点的FCD标识和NSD标识的排列顺序可以是任意的。根据本发明的一个实施方式,对于Binary XML中的每个元素节点而言,FCD标识和NSD标识是定长的,也就是说,无论FCD和NSD的值是多少,对每ー个元素节点而言,这两个标识均占据一定的字符长度。根据本发明的另ー实施方式,FCD标识和NSD标识是变长的,也就是说,FCD和NSD的具体取值将影响某个元素节点的FCD标识和NSD标识所占据的字节长度。包含了 F⑶和NSD标识的Binary XML有利于在查询或定位Binary XML的节点时,利用其中包含的F⑶标识和NSD标识跳过大量的节点,而无需逐个扫描Binary XML中的节点,从而提升节点定位的效率。具体的包含了 FCD标识和NSD标识的实例将在下文中结合图4具体描述。还需要强调的是,在上文对FCD和NSD的示例性定义中,其中的“该节点的FCD标识表示该节点的结束端至其第一个子节点的起始端的距离”中的“结束端”在添加了 FCD和NSD标识的情况下就不再简单地是原节点的结束位置,而必须考虑FCD和NSD标识本身所占的字节长度。可以将“结束端”理解为“当前位置”,“当前位置”在添加了 FCD和NSD标识的情况下就考虑到了这两个标识本身所占据的字节。同样地,对“该节点的NSD标识表示该节点的结束端至其下ー个兄弟节点的起始端的距离”中的“结束端”也可以作类似的理解。具体的关于FCD和NSD指示的距离的含义在下文中结合图 4B将会被更清晰地体现。图2示出了根据本发明又一实施例的用于生成F⑶标识和NSD标识的流程图。首先要指出的是,图2所示的方法是在由XML数据源生成ニ进制XMUBinary XML)数据的过程中执行的。本领域技术人员应当理解,现有技术在生成ニ进制XML(Binary XML)数据的过程中是按序处理XML数据源中的节点的。在步骤201中,在XML数据源的每个元素节点后添加初始值为零的FCD和NSD标识。在步骤102中,在按序处理XML数据源的节点的过程中,对于非叶子节点的FCD的值而言,当遇到该非叶子节点的第一个子节点吋,计算该非叶子节点的结束端到该第一个子节点的起始端的距离,从而获得FCD的值,并更新FCD标识的初始值。在步骤103中,在按序处理XML数据源的节点的过程中,对于非根节点的NSD的值而言,当遇到该非根节点的下一个兄弟节点时,计算从该非根节点的结束端到该兄弟节点的起始端的距离,从而获得该非根节点的NSD的值,并更新NSD标识的初始值。如果将NSD定义为当某元素节点没有下一个兄弟节点吋,NSD为该元素节点到其父节点的结束端的距离,那么也可以当遇到该非根节点的父节点的结束端时,计算从该非根节点的结束端到该父节点的结束端的距离,从而获得该非根节点的NSD的值,并更新NSD标识的初始值。本领域技术人员应当理解,具体的计算FCD和NSD的方法可能与具体的对FCD和NSD在特殊情况下(如某节点没有下ー个兄弟节点、没有子节点、没有父节点)的赋值规定相关,但是无论在特殊情况下对FCD和NSD的赋值作出何种規定,FCD和NSD标识的基本含义都是一致的FCD标识表示该节点的结束端至其第一个子节点的起始端的距离并且NSD标识表示该节点的结束端至其下ー个兄弟节点的起始端的距离。而且,本领域普通技术人员完全可以在理解了上述描述的算法原理和思想的基础上,将该算法扩展应用于不同的FCD和NSD的定义中。上面给出了生成FCD和NSD标识的概要性的算法描述,下面继续给出更详细的操作流程细化一点的计算FCD/NSD步骤(a)初始化辅助的全局数据结构;(b)每ー个元素节点处理开始(StartElement)时,检查辅助的数据状态,如果其父节点的F⑶需要并可计算得到,根据相应公式计算父元素的FCD,并更新父元素的FCD值;(c)生成当前处理的元素节点的Binary XML内容,并更新辅助的数据信息;(d)每ー个元素节点处理结束(endElement)吋,检查辅助的数据状态,如果当前元素的NSD需要并可计算得到,根据相应公式计算当前元素的NSD,并更新前元素的NSD,生成后续的Binary XML内容。接下来,在上述关于生成F⑶和NSD标识的方法描述的基础上进一歩描述微观上可操作的生成FCD和NSD标识的步骤(a)初始化ー个保存整型数值的栈,记录每个元素NSD数值的起始存储位置m_nsd ; (b)姆ー个元素节点开始(startElement)时,检查栈,如果栈非空且父节点的F⑶为零,则读取栈顶数值m_nsd,根据公式F⑶=cursor_m_nsd+2计算父节点的F⑶(其中cursor为存储生成的Binary XML的当前“游标”),并更新存储在(m_nsd-5)位置的父节点的FCD值;(c)如果父节点为根节点,则弹出栈顶数值;(d)生成当前节点的Binary XML内容,在元素节点标签单元后添加初始值为零的TOD/NSD标签,并将本元素节点的NSD数值的起始位置m_nsd放到栈顶;(e)姆ー个元素节点结束(endElement)时,检查栈非空,则弹出栈顶数值m_nsd,根据公式NSD = cursor-m_nsd_2计算本元素节点的NSD,并更新存储在m_nsd位置的NSD值;(f)生成后续的Binary XML内容。
由上述细化的生成F⑶和NSD标识的过程可知,上述计算方法所依据的对F⑶和NSD的定义乃是FCD表示当前位置到本元素节点的第一个子节点的距离,若本元素节点为叶子节点(即无子节点),则FCD为零。NSD表示当前位置到本元素节点的下ー个兄弟节点的距离,若没有下ー个兄弟节点,则表示当前位置到父节点结束位置的距离,若既没有下一个兄弟节点又没有父节点,则NSD为零。本领域技术人员完全可以在理解了上述堆栈算法的原理之后,将该算法扩展适用于所有的对FCD和NSD的定义的情况,只需根据具体的定义改变具体公式即可。图3示出了根据本发明一个实施例的用于定位ニ进制XML数据中的节点的方法的流程图。图3所示的方法利用的ニ进制XML数据文件中包含元素节点的首子距FCD标识和邻弟距NSD标识。该包含F⑶标识和NSD标识的ニ进制XML数据是已经存在的,无论采用何种方法生成该ニ进制XML数据均落入本发明的保护范围。图3所示的方法从步骤301开始。在步骤301中,接收查询ニ进制XML数据中的节点的请求。查询请求可以由数据库查询语言SQL/XML指令或者XQuery的形式提出。根据本发明的一个实施例,ニ进制XML数据中包含FCD和NSD标识。关于FCD和NSD标识的具体含义以及可选的定义方式已经在上文中进行描述,在此不再赘述。在步骤302中,获取查询请求的查询路径(Xpath)。XPath使用路径表达式来选取XML文档中的节点或者节点集。由于XML数据源具有树型结构,因此查询路径也具有树型结构。以下面这个XML数据源为例<dep mgr=" Peter" ><proj>ffeb</proj><emp>John</emp></dep>上面这个XML数据源包括三个元素dep (根节点)、pro j (叶子节点)以及emp (叶子节点)。其中,dep节点拥有两个子节点proj和emp, proj和emp互为兄弟节点,但基于XML文档的有序性,只有emp才构成proj的“下ー个兄弟节点”。该XML数据源基于改进的IBM Binary XML格式的ニ进制XML数据(即包含FCD和NSD标识)如下
X3deplv0018 > 0000Y3mgr25peterX4proi3v0000 > 0007T3ffebzX3emp4v0000 >0008T4JohnzzZ添加下划线部分的即为每个节点的FCD和NSD标识,“v0018”是ー个FCD标识实施例,“V”符号标记TOD,“V”之后的数值为该CFD标识的确切取值;类似地,“>”符号标记NSD,“>”符号之后的数值为该NSD标识的确切取值。(下划线起强调作用,本身并非BinaryXML数据源的一部分)。具体的生成包含F⑶和NSD标识的Binary XML数据源的过程在图
I、图2以及相应的文字部分已经详细描述。而除了上述F⑶和NSD标识之外的Binary XML数据源的其它部分的生成方式属于现有技术中的内容,本领域技术人员可以通过參考目前公开的多种Binary XML数据源的格式说明而实现。由此可见,经紧凑化处理后的Binary XML数据源仍然保持了源XML的树型结构。 具体的由源XML生成Binary XML的方法可以參考相关Binary XML标准的格式定义说明。这里举出的Binary XML的例子并非依据本发明添加了 F⑶和NSD标识的Binary XML,而属于按照已有的Binary XML的格式定义生成的Binary XML。在这个XML数据源中,<dep>、<proj>以及<emp>都是元素节点(又称为元素),<dep>是根节点,其拥有两个子节点<proj>和<emp>。而<proj>和<emp>互为兄弟节点。如果现在要查询<emp>节点的值,则查询路径表达式为/dep/emp/。接下来在步骤303中,利用该查询路径以及所述F⑶标识和NSD标识,定位被查询的节点。如果是针对不包含FCD和NSD标识的Binary XML数据源进行节点查询,那么只能逐个扫描每个节点,包括元素节点(例如以“X”起始的dep)、属性节点(例如以“Y”起始的mgr)、文本节点(例如以“!"’起始的Web),直到最终扫描到要查询的元素节点exp。而现在,如果Binary XML数据源中包含了每个节点的TOD和NSD标识,那么就可以利用TOD和NSD标识跳过ー些节点,直接定位至元素节点exp。图4A和图4B分别示出了基于不包含F⑶和NSD标识的Binary XML进行节点查询,以及基于包含F⑶和NSD标识的Binary XML进行节点查询的示意图。如图4A所示,游标需要“跳跃”6次才能定位至待查询的元素节点exp。而如图4B所示,游标仅需要“跳跃”3次,就可以定位至待查询的元素节点exp,直接跳过了其中的属性节点mgr,元素节点proj以及文本节点peter,大大提高了定位BinaryXML数据源中的节点的效率。图5示出了根据本发明的又一实施例的用于定位ニ进制XML数据中的节点的方法的流程图。为了叙述的方便,下面以ー个具体的XML数据源以及对应的包含了 FCD标识和NSD标识的ニ进制XML数据为例,详细描述图5所示的方法的流程。首先需要指出的是,下面示例的ニ进制XML数据是以IBM Binary XML标准格式为基础的。假设XML数据源如下〈dep mgr=" Peter" ><proj>ffeb</proj><emp>John</emp></dep>上面这个XML数据源基于IBM Binary XML格式的ニ进制XML数据(包含TOD和NSD标识)如下:X3deplv0018 > 0000Y3mRr25peterX4proi3v0000 > 0007T3ffebzX3emp4v0000 >0008T4JohnzzZ再假设用户提交的查询请求(SQL或XQuery)要查询元素节点emp的内容,则查询路径Xpath是/dep/emp/ (具体的SQL语句或XQuery语句在此略去)。在步骤501中,定位Binary XML数据的第一个节点(也就是根节点)。由于BinaryXML与XML数据源类似,也具有按序排列的树型结构,因此在查询Binary XML数据中的节点时,要从根节点开始按序扫描。在步骤502中,判断所定位的Binary XML数据的第一个节点(根节点)的名称是否与查询路径中的第一个元素的名称一致。如果一致,则进行至步骤503,如果不一致,则进行至步骤510。不一致的原因包括查询请求输入错误。在步骤510中,由于无匹配结果,因此流程结束。在上述示例中,查询路径/cbp/emp/中的第一个元素为“cbp”,与Binary XML数据的第一个节点的名称一致,因此进行至步骤503。在步骤503中,根据第一个节点的F⑶标识,跳转至该第一个节点的第一子节点(首个子节点)。在上述示例中,第一个节点cbp后面包含V0018 > 0000的F⑶和NSD标识,其中F⑶标识位干“>”的左边,NSD标识位干“>”的右边。在此例中,F⑶标识的值为0018,表示从F⑶标识的最后ー个字节“8”开始向后数18个字节,即为节点cbp的第一子节点proj的开始。因此,在步骤503中,根据节点cbp的TOD标识0018,向后跳转18个字节,直接定位至dep的第一子节点proj的开始“X”。通过这次跳转,属性节点mgr被跳过。接下来,在步骤504中判断第一个节点的第一子节点的名称是否与查询路径中的第二个元素的名称一致。如果一致,则进行至步骤506。如果不一致,则进行至步骤505。在上述示例中,由于查询路径/dep/emp/中的第二个元素名称为emp,与在步骤503中跳转到的第一个节点cbp的第一子节点proj的名称不一致,因此进行至步骤505。在描述步骤505之前,介绍ー下步骤506的操作。在步骤506中,判断查询路径是否已遍历。“遍历”的含义是指查询路径中的最后ー个元素为当前跳转到的节点。如果步骤506的判断结果为是,说明查询路径已经被处理完毕并且找到了匹配的结果,因此在步骤509中结束。如果步骤506的判断结果为否,则说明查询路径中还有其它尚未处理的节点,因此返回至步骤503。需要指出的是,从步骤506返回至步骤503时,应当在步骤503中跳转至当前节点的第一子节点,而并非如附图5所示的文字说明记载的仍然“跳转至第一个节点的第一子节点”。对于图5所示的流程图其它所有返回循环执行的步骤,都是针对“当前跳转到的节点”而言,图5中的文字说明仅仅是为了说明第一轮执行过程中的操作,本领域技术人员应当从本段文字描述部分明晰此点。在步骤505中,利用该第一子节点的NSD标识,跳转至该第一子节点的下ー个兄弟节点。在上述示例中,第一子节点是proj,它的下ー个兄弟节点是emp。在上述Binary XML数据中,第一子节点proj的NSD标识为0007,这表示从NSD标识的最后ー个字节“V,开始向后数7个字节,即为节点proj的下ー个兄弟节点emp的起始“X”。通过这次跳转,文本节点“ Web”被跳过。接下来,在步骤507中判断所跳转到的该兄弟节点的名称与查询路径中的第二个 元素的名称是否一致(刚才在步骤504中,判断得知查询路径中第二个元素的名称与根节点的第一子节点的名称不一致)。根据上述示例,查询路径/dep/emp/的第二个元素的名称emp与在步骤505中所跳转到的第一子节点proj的下ー个兄弟节点emp的名称一致,因此进行至步骤508。在步骤508中,判断查询路径是否已遍历。如上所述,查询路径/dep/emp/中的最后ー个元素emp为当前跳转到的节点,因此查询路径已遍历,从而找到匹配结果,在步骤509结束流程。如果步骤507的判断结果为否,则返回至步骤505,跳转至当前所处节点的下ー个兄弟节点(也就是节点emp的下ー个兄弟节点),直到步骤507的判断结果为是。如果步骤508的判断结果为否,则返回至步骤503,跳转至当前所处节点的第一子节点(也就是节点emp的第一个子节点)。还需要指出的是,出于简洁的目的,有ー些步骤未是出于图5的流程图中。例如,在步骤505和步骤507之间还可以包括判断是否到达当前所处节点的父节点的终结的步骤。如果在定义NSD标识的含义时规定如果一个节点没有下ー个兄弟节点,那么NSD标识表示该节点的结束端至其父节点的结束端的距离。这样ー来,在步骤505中跳转到的兄弟节 点实际上可能为其父节点的终结位置。在此情形下,则直接进行至结束步骤510,也就是无法找到匹配结果。根据上述示例,节点emp没有下ー个兄弟节点(emp是proj的下ー个兄弟节点,但是proj并不是emp的下ー个兄弟节点,这是基于XML数据的有序性決定的),那么就把节点emp的结束端到其父节点dep的结束端(</dep>)的距离的值赋予节点emp的NSD标识(即0008)。那么假设查询路径是/dep/abc/,则在步骤505中跳转7个字节至emp的父节点的结束端“ z”,从而判断得知当前所处节点是其父节点的结束端,因此直接进行至步骤510结束,无匹配結果。本领域技术人员应当理解,上述关于判断是否处于父节点的结束端的内容与对NSD标识的定义有夫,采用不同的对NSD标识的定义可能对具体的定位节点的步骤有影响,但本领域技术人员完全可以基于上述根据IBM Binary XML标准格式的示例中所掲示的原理和方法,将该原理和方法应用于多种其它的对FCD和NSD标识的定义,也可以将该原理和方法应用于多种其它的Binary XML的格式,例如WBXML以及MS-BINXML等。上述关于图5的文字描述部分,其中的“z”、“X”等字符均属于IBM Binary XML标准格式说明中规定的具有特殊含义的字符,并不构成对本发明的任何限制。图6示出了根据本发明一个实施例的用于生成ニ进制XML数据的系统的框图。图6所示的系统在整体上由系统600表示。具体地,系统600包括XML数据源获取装置601,用于获取XML数据源;标识生成装置602,用于针对该XML数据源中的元素节点,生成该元素节点的首子距F⑶标识和邻弟距NSD标识;以及ニ进制XML数据生成装置603,用于利用所述FCD标识和NSD标识,生成该XML数据源的ニ进制XML数据,所述ニ进制XML数据包含所述F⑶标识和NSD标识。可以理解,系统600中的装置601-603分别对应于图I所示的方法中的步骤101-103。图7示出了根据本发明的一个实施例的用于定位包含FCD标识和NSD标识的ニ进制XML数据中的节点的系统的框图。图7所示的系统在整体上由系统700表示。具体地,系统700包括查询请求接收装置701,用于接收查询ニ进制XML数据中的节点的请求;查询路径获取装置702,用于获取所述查询请求的查询路径;以及节点定位装置703,用于利用该查询路径以及ニ进制XML数据中包含的TOD和NSD标识,定位被查询的节点。可以理解,系统700中的装置701-703分别对应于图3所示的方法中的步骤301-303。图8A和8B分别示出了基于不包含以及包含TOD和NSD标识的WBXML数据进行节点查询的示意图。WBXML与IBM Binary XML类似,也是ー种ニ进制XML数据格式标准。关于WBXML规定的将XML数据源转换成ニ进制XML数据的方式,本领域技术人员可以參考公开的WBXML标准说明。这里需要指出的是,如图8B所示,经过添加了 TOD和NSD标识后的基于WBXML标准的ニ进制XML数据(同样根据上文中举出的XML数据源的示例),可以实现节点的跳转,只不过每个元素节点后添加的FCD和NSD标识的值不同。图9A和9B分别示出了基于不包含以及包含TOD和NSD标识的MS-BINXML数据进行节点查询的示意图。MS-BINXML与WBXML、IBM Binary XML类似,也是ー种ニ进制XML数据格式标准。关于MS-BINXML规定的将XML数据源转换成ニ进制XML数据的方式,本领域技术人员可以參考公开的MS-BINXML标准说明。这里需要指出的是,如图9B所示,经过添 加了 TOD和NSD标识后的基于MS-BINXML标准的ニ进制XML数据(同样根据上文中举出的XML数据源的示例),可以实现节点的跳转,只不过每个元素节点后添加的FCD和NSD标识的值不同。总结如图4A和4B、8A和8B以及9A和9B示出的三种不同的ニ进制XML数据的标准格式,可以看出无论具体的ニ进制XML数据格式规范是什么,它们都是依据按序排列的、具有树型结构的XML数据源,对该XML数据源中的元素节点按序依次处理从而转换成相应的ニ进制XML数据。尽管依据每种ニ进制XML标准转换得到的ニ进制XML数据形式不同甚至有很大差异,但是都可以利用它们共同的“结构化数据”特征在生成ニ进制XML数据时添加TOD标识和NSD标识,并在查询该经过改进的ニ进制XML数据时利用所添加的TOD和NSD标识,进行节点的跳转,提高节点定位和查询的效率。需要的强调的是,本发明说明书及附图中示出的关于各类标准ニ进制XML的实例以及含有FCD和NSD标识的ニ进制XML的实例中,为了理解的便利直接以10进制数字形式表示相关数值。实际上,这些实例并不一定表示ニ进制XML数据在计算机中存储的原本格式。通过以上对具体实施例的描述,本领域技术人员可以理解,上述的系统、装置和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置、服务器及其単元可以由诸如超大規模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。虽然以上结合具体实例,对本发明的利用远程应用处理本地文件的系统及方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。
权利要求
1.一种用于生成二进制XML数据的方法,包括 获取XML数据源; 针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识; 利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述F⑶标识和NSD标识。
2.如权利要求I所述的方法,其中该元素节点的FCD标识表示该FCD标识的结束端至其该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下一个兄弟节点的起始端的距离。
3.如权利要求2所述的方法,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有兄弟节点也没有父节点,则该元素节点的NSD标识为零。
4.如权利要求I或2所述的方法,其中针对该XML数据源中的元素节点,生成该元素节点的首子距F⑶标识和邻弟距NSD标识包括 将FCD标识和NSD标识初始化为零; 对于非叶子节点,当开始处理其第一个子节点时,计算FCD并更新FCD标识; 对于非根节点,当开始处理其下一个兄弟节点时,计算NSD并更新NSD标识。
5.一种用于定位二进制XML数据中的节点的方法,所述二进制XML数据中包含首子距F⑶标识和邻弟距NSD标识,所述方法包括 接收查询二进制XML数据中的节点的请求; 获取该请求的查询路径; 利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。
6.如权利要求5所述的方法,其中利用该查询路径以及所述二进制XML数据中所包含的首子距FCD标识和邻弟距NSD标识,定位被查询的节点包括 利用所述二进制XML数据中元素节点的FCD标识跳转至该元素节点的第一个子节点;以及 利用所述二进制XML数据中元素节点的NSD标识跳转至该元素节点的下一个兄弟节点。
7.如权利要求5或6所述的方法,其中利用该查询路径以及所述二进制XML数据中所包含的首子距FCD标识和邻弟距NSD标识,定位被查询的节点包括 (a)定位二进制XML数据中的第一个元素节点; (b)判断该第一个节点的名称与查询路径中的第一个元素节点的名称是否一致; (c)如果判断结果为是,则利用该二进制文档中的第一个元素节点的FCD标识跳转至其第一个子节点; (d)判断该第一个子节点的名称与查询路径中的第二个节点的名称是否一致;以及 (e)如果判断结果为否,则利用该第一个子节点的NSD标识跳转至该第一个子节点的下一个兄弟节点。
8.如权利要求7所述的方法,进一步包括如果步骤(d)的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕,如果判断结果为否,则对该第一个子节点重复执行步骤(C)至(e),如果判断结果为是,则确定已完成对要查询的节点的定位。
9.如权利要求7或8所述的方法,进一步包括 (f)判断该下一个兄弟节点的名称是否与查询路径中的第二个节点的名称一致; (g)如果判断结果为否,则对该下一个兄弟节点重复执行步骤(e)至(f);以及 (h)如果步骤(f)中的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕,如果判断结果为否,则对该下一个兄弟节点重复执行步骤(C)至(g),如果判断结果为是,则确定已完成对要查询的节点的定位。
10.如权利要求5-9任一所述的方法,其中该节点的FCD标识表示该FCD标识的结束端至该节点的第一个子节点的起始端的距离,并且如果该节点为叶子节点,则FCD标识为零,以及该节点的NSD标识表示该NSD标识的结束端至该节点的下一个兄弟节点的起始端的距离。
11.一种用于生成二进制XML数据的系统,包括 XML数据源获取装置,用于获取XML数据源; 标识生成装置,用于针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识; 二进制XML数据生成装置,用于利用所述TOD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述F⑶标识和NSD标识。
12.如权利要求11所述的方法,其中该元素节点的FCD标识表示该FCD标识的结束端至其该元素节点的第一个子节点的起始端的距离,并且如果该元素节点为叶子节点,则FCD标识为零,以及该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的下一个兄弟节点的起始端的距离。
13.如权利要求12所述的方法,如果该元素节点没有兄弟节点,则该元素节点的NSD标识表示该NSD标识的结束端至该元素节点的父节点的结束端的距离,如果该元素节点既没有兄弟节点也没有父节点,则该元素节点的NSD标识为零。
14.如权利要求11或12所述的系统,所述标识生成装置被配置为 将FCD标识和NSD标识初始化为零; 对于非叶子节点,当开始处理其第一个子节点时,计算FCD并更新FCD标识; 对于非根节点,当开始处理其下一个兄弟节点时,计算NSD并更新NSD标识。
15.一种用于定位二进制XML数据中的节点的系统,所述二进制XML数据中包含首子距F⑶标识和邻弟距NSD标识,所述系统包括 查询请求接收装置,用于接收查询二进制XML数据中的节点的请求; 查询路径获取装置,用于获取该请求的查询路径; 节点定位装置,用于利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。
16.如权利要求15所述的系统,所述节点定位装置被配置为 利用所述二进制XML数据中元素节点的FCD标识跳转至该元素节点的第一个子节点;以及 利用所述二进制XML数据中元素节点的NSD标识跳转至该元素节点的下一个兄弟节点。
17.如权利要求15或16所述的系统,所述节点定位装置被配置为 (a)定位二进制XML数据中的第一个元素节点; (b)判断该第一个节点的名称与查询路径中的第一个元素节点的名称是否一致; (c)如果判断结果为是,则利用该二进制文档中的第一个元素节点的FCD标识跳转至其第一个子节点; (d)判断该第一个子节点的名称与查询路径中的第二个节点的名称是否一致;以及 (e)如果判断结果为否,则利用该第一个子节点的NSD标识跳转至该第一个子节点的 下一个兄弟节点。
18.如权利要求17所述的系统,所述节点定位装置被进一步配置为如果步骤(d)的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕,如果判断结果为否,则对该第一个子节点重复执行步骤(C)至(e),如果判断结果为是,则确定已完成对要查询的节点的定位。
19.如权利要求17或18所述的系统,所述节点定位装置被进一步配置为 (f)判断该下一个兄弟节点的名称是否与查询路径中的第二个节点的名称一致; (g)如果判断结果为否,则对该下一个兄弟节点重复执行步骤(e)至(f);以及 (h)如果步骤(f)中的判断结果为是,则进一步判断查询路径中的节点是否已遍历完毕,如果判断结果为否,则对该下一个兄弟节点重复执行步骤(C)至(g),如果判断结果为是,则确定已完成对要查询的节点的定位。
20.如权利要求15-19任一所述的系统,其中该节点的FCD标识表示该FCD标识的结束端至该节点的第一个子节点的起始端的距离,并且如果该节点为叶子节点,则FCD标识为零,以及该节点的NSD标识表示该NSD标识的结束端至该节点的下一个兄弟节点的起始端的距离。
全文摘要
本发明涉及可扩展标记语言(XML)数据处理技术领域。更具体地,本发明涉及对二进制XML数据的生成及查询进行改进的技术。本发明提供了一种用于生成二进制XML数据的方法,包括获取XML数据源;针对该XML数据源中的元素节点,生成该元素节点的首子距FCD标识和邻弟距NSD标识;以及利用所述FCD标识和NSD标识,生成该XML数据源的二进制XML数据,所述二进制XML数据中包含所述FCD标识和NSD标识。同时,本发明还提供了一种用于定位二进制XML数据中的节点的方法,所述二进制XML数据中包含首子距FCD标识和邻弟距NSD标识,包括接收查询二进制XML数据中的节点的请求;获取该请求的查询路径;以及利用该查询路径以及所述FCD标识和NSD标识,定位被查询的节点。
文档编号G06F17/30GK102650992SQ20111004581
公开日2012年8月29日 申请日期2011年2月25日 优先权日2011年2月25日
发明者B·V·D·林登, P·哈格, 刘长生, 高小明 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1