结构化文档处理装置和方法

文档序号:86898阅读:222来源:国知局
专利名称:结构化文档处理装置和方法
技术领域
本发明涉及一种结构化文档处理装置、方法以及程序,更具体地说,涉及一种能够提高电子数据形式的结构化文档的句法解析速度的结构化文档处理装置、方法以及程序。
背景技术
随着面向对象技术的发展,如今电子数据形式的结构化文档已经用在各个领域中。特别地,互联网的广泛使用和Web服务技术的进步导致了是结构化文档中的一种文档的XML(可扩展标记语言)的激增。XML还广泛地用于诸如SOA(面向服务的体系结构)之类的软件体系结构和网格计算,并且许多供应商提供XML解析器(也称为XML处理器)。XML解析器是XML的基本技术,其解析XML文档并处理XML文档以允许应用程序容易地使用该XML文档。它对进一步提高XML的性能十分重要。
因此,在对已解析的结构化文档与要解析的结构化文档之间的差异进行分析的基础上,做出了许多尝试以提高XML解析器的处理速度,如专利文献1中所描述的。专利文献1中所提出的提高XML解析器的处理速度的技术利用了消息之间的类似性。将自动机用作检测类似性的机构,并且在运行时期间从XML文档动态地生成状态转变序列(自动机)。此外,通过在字节序列级别执行比较来有效和高速地比较消息,并且仅处理它们之间的差异,由此提高了处理速度。
已公开未审查专利申请No.2004-314713

发明内容本发明要解决的问题本发明的目标是解决下述问题,以便进一步改进专利文献1中提出的XML解析器(下文中称为Deltarser)。
将根据Deltarser提出的自动机生成为使用SAX(XML的简单应用程序接口)粒度来定义的状态转变序列(状态转变图信息)状态。此处SAX事件是这样的接口,所述接口在分析XML文档的同时通知事件的应用程序每次发现了要素的开始或结束。
然而,与字节序列比较相比,上述状态转变处理成本高(并且耗时),并且传统方法由于增加了状态或转变数而降低了性能。状态转变定义中的状态的粒度越小,字节序列比较的成功率就越高,但是整个文档中字节序列比较所需的时间量就越多。因此,存在寻找最佳粒度以定义创建自动机的状态以便构建快速XML解析器的问题。
另一个问题是生成差异分析所需的自动机的新状态序列的成本。状态的生成包括存储部分处理所需的上下文和复制字节序列。这些操作的成本引起了开销。因此,存在如何避免在运行时期间生成新状态转变的问题。
下面进一步详细描述上述要由本发明所解决的问题。
<由于状态转变数增加引起的性能恶化>
根据专利文献1中描述的发明,SAX事件被表示为构成自动机的一个状态。图1示出了实验中测量的处理时间对状态转变数的图。图1所示的是在测量的同一文档(文件大小为64KB)中进行字节序列匹配,同时改变其组成状态数(X轴)所花费的平均处理时间(ms)。如可以从图中看到的,处理时间随状态转变数的增加而单调增加。例如,当每个空白表示成一个状态时,状态数约为12,000,当空白并入其它状态时,其减少了4,000,达到约8,000,并且单独的字节序列匹配的成本从3.25(ms)降低为2.4(ms)。性能差异为30%。实验表明状态转变数越小,差异处理所引起的开销就越小。
然而,具有越少状态的自动机不一定越好。随着状态数减少,失配的概率增加,因此,新生成状态的成本增加了开销。以这样的方式来优化自动机是很重要的最小化状态转变数,但是最大化匹配概率。
<状态转变的生成成本高>
专利文献1中的发明公开了Deltarser的基本处理,Deltarser是一个XML解析器,通过对结构化文档间的差异执行分析而提高了其处理速度。Deltarser在运行时期间动态地从文档中生成自动机,以便有效地检测差异。此处,自动机的一次状态转变是SAX事件的一个单元。生成状态的成本高于XML解析器的其他任务的成本。防止频繁的状态生成将会提高总体性能。
图2示出了在Deltarser与现有XML解析器(Xerces和Piccolo)之间的比较。图中的横轴表示所解析的XML文档数,纵轴表示解析所花费的时间。例如,Deltarser和Xerces之间的比较显示在输入文档数超出25的点之上Xerces更快。如果可以通过使用概要信息来预先创建自动机,则可以降低此部分的成本,并实现在现有解析器之上的Deltarser的优越性。
发明概述为了解决上述问题,本发明提出了一种用于通过使用与实例文档有关的统计信息和概要信息来优化自动机的方法。所述概要信息可降低预先生成状态转变序列的成本并且可进一步优化自动机的状态数和转变数。所述优化可提高诸如XML解析器之类的解析器进行句法解析的速度。
除XML文档之外,结构化文档的例子包括XHTML(可扩展超文本标记语言)和SGML(标准通用标记语言)文档。
具体地说,本发明提供了一种具有用于解决上述问题的手段的结构化文档处理装置、方法和程序。所述装置、方法和程序仅在其实施方式上彼此不同;它们实质上基于相同的技术。因此,将作为代表描述用于解决结构化文档处理装置中所提供的问题的手段。
(1)执行电子数据形式的结构化文档的句法解析的结构化文档处理装置通过使用自动机生成单元来生成多个状态的状态转变序列,所述多个状态能够进行结构化文档的分段。所述装置包括实例文档分析单元,其在生成状态转变序列(自动机)中,通过使用与实例文档(其是结构化文档的实体)有关的统计信息来将状态转变合并到状态转变序列中,并且通过使用所述统计信息来统计地获得状态转变中重复元素的出现数的模式。所述装置还包括概要信息分析单元,其在从结构化文档生成状态转变序列中,通过使用定义了与该结构化文档有关的信息的结构和格式的概要信息来将状态转变合并到状态转变序列中。所述装置还包括自动机优化单元,其相互地优化由所述实例文档分析单元和所述概要信息分析单元所合并的自动机。所述实例文档分析单元和所述概要信息分析单元都优化自动机。此外,所述实例文档分析单元和所述概要信息分析单元之一可进一步优化由另一个单元所优化的自动机。
(2)提供了一种根据项目(1)的结构化文档处理装置,其中所述结构化文档是XML文档,并且所述多个能够进行分段的状态由SAX事件定义。然而,虽然根据项目(1)的结构化文档处理装置所解析的结构化文档不限于XML文档,但是在以下描述中假定结构化文档是XML文档并且状态由SAX事件定义。
(3)提供了一种根据项目(1)的结构化文档处理装置,还包括连续状态转变计数单元,其为实例文档分析单元中状态转变合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用ID列表来对连续匹配状态转变的出现计数。此配置表示用于合并状态转变的特定手段。
(4)提供了一种根据项目(1)的结构化文档处理装置,其中即使重复元素是嵌套的,所述自动机优化单元仍对由实例文档分析单元检测的重复元素进行优化。
(5)提供了一种根据项目(1)的结构化文档处理装置,其中所述实例文档分析单元通过使用所述统计信息使结构化文档中的元素间出现的任意数目的空白字符的模式固定。
以上给出的项目(3)到(5)显示了用于合并状态转变的特定手段,下面将对其进行详细描述。
包括上述手段的结构化文档处理装置使用实例文档和概要信息来合并作为分析结构化文档状态的结果而生成的状态转变序列。如先前所述,使用实例文档的自动机的优化和使用概要信息的优化不是相互排斥而是相互补充的。使用所述优化方法之一优化的自动机能够通过使用另一个方法来进一步优化。所述处理具有减少要连续解析的状态数的效果,并且相应地降低了状态转变的成本。
发明优点根据本发明,在诸如XML之类的结构化文档处理中,将用于从输入实例文档动态地获得统计信息以执行快速分析的技术与使用静态的概要信息的技术相结合,由此解决了上述问题。因此,拓宽了诸如Deltarser之类的结构化文档处理装置的应用范围。
图1示出了随着状态数增加的平均处理时间的增加;图2示出了在状态转变生成开销中Deltarser与现有XML解析器之间的比较;图3是本发明的一个实施例的结构化文档处理装置的功能方块图;图4示出了用于为状态转变指定ID的方法以及用于对重复元素计数的方法;图5示出了优化后的自动机;图6示出了循环自动机;图7示出了扩展自动机;图8示出了第一XML实例文档;图9示出了优化之前第一XML实例文档的自动机的结构;图10示出了处理嵌套的重复元素的流程;图11示出了第一XML实例文档1的优化后的自动机的结构;图12示出了第二XML实例文档;图13示出了第二XML实例文档的优化后的自动机的结构;
图14示出了优化的分类;图15示出了优化之前的简单类型元素的自动机;图16示出了简单类型元素的优化后的自动机;图17示出了第一示例性XML概要;图18示出了合成器;图19示出了第二示例性XML概要;图20示出了由于空白而引起的状态转变的例子;图21示出了在第一实施例中的实验内使用的XML概要;图22示出了在第一实施例中的实验内使用的XML实例文档;图23示出了在第一实施例中的实验的结果;以及图24示出了在第一实施例中的实验结果的图。
1…输入单元2…输出单元3…通信单元4…存储器4a…实例文档统计信息4b…解析的源结构化文档5…实例文档分析单元6…概要信息分析单元7…自动机优化单元8…句法解析单元9…API单元10…结构化文档处理装置20…结构化文档21…实例文档22…概要信息
30…应用程序具体实施方式
将参考附图根据本发明的实施例描述本发明。
图3示意性地示出了根据本发明的一个实施例的结构化文档处理装置10的功能块。在以下描述中提供的配置只是说明性的,并且本发明不限于所述配置。
结构化文档处理装置10包括从操作员接收输入的输入单元1,输出处理结果的输出单元2,以及存储输入/输出数据和中间数据的存储器4。结构化文档处理装置10还包括分析输出实例文档的实例文档分析单元5,以及分析以预定概要语言定义的概要信息的概要信息分析单元6,生成状态转变序列(自动机)的自动机生成单元7a,相互优化由实例文档分析单元5和概要信息分析单元6合并的状态转变序列的自动机优化单元7,解析结构化文档的各种句法的文档解析单元8,以及通知必要的应用程序解析哪些结构化文档的结果并且充当与应用程序的接口的API单元9。
输入单元1包括诸如键盘和鼠标之类的典型输入设备以及将数据接受为文件的输入装置。输出单元2包括诸如CRT或液晶显示之类的显示设备以及将数据输出为文件的输出装置。可以可选地提供通信单元3以便经由通信将数据输出到外部系统或从外部系统输入数据。
结构化文档20(其是到处理装置的数据输入)包括实例文档21和概要信息22。概要信息可忽略。如果忽略了概要信息,则使用预定的默认值。实例文档21是结构化文档20的实体,通过输入单元由实例文档分析单元5来分析其状态。状态分析后的数据(状态转变序列)作为实例文档统计信息4a存储在存储器4中。所述状态分析后的文档在要解析的下一个结构化文档的差异分析中用作解析的源结构化文档4b。
实例文档分析单元5包括连续状态转变计数器(未示出),其具有将ID指定给每个状态转变、以ID列表的形式存储连续匹配状态转变,以及使用ID列表对连续匹配状态转变读数以便合并多个状态转变的功能。
概要信息分析单元6对以诸如DTD(文档类型定义)或W3C(万维网协会)XML概要之类的概要语言编写的XML文档的结构和格式进行分析。
稍后将详细描述使用与实例文档和概要信息有关的统计信息的处理。
文档解析单元8实际上对结构化文档20的句法进行解析。例如,它对XML文档的元素和内容进行解析并将XML文档变换成诸如SAX事件或应用程序可容易地访问的DOM树之类的形式。在执行此操作中,将发现新解析的结构化文档20的状态转变序列与存储器4中存储的一组已解析的源文档4b的状态转变序列之间的差异,并且仅分析所述差异以便提高解析效率。此处作为状态转变序列的表示提供了状态转变图,如以下将描述的。
专利文献1中描述了用于分析所述差异的特定方法,因此在此省略所述描述。
应用程序30通过API来访问结构化文档处理装置。API(应用程序接口)单元9提供了诸如DOM或SAX之类用于XML文档的典型接口。在广义上,API单元9还充当输入/输出单元,这没有描述。
从上述描述中将理解,结构化文档处理装置10可以是诸如个人计算机或服务器之类的计算机,并且通过安装具有所需功能的计算机程序来实现。下面将描述结构化文档处理装置10所执行的处理。
如根据所述问题而描述的,自动机的状态转变对性能具有显著影响。为了解决这个问题,本发明提供了一种通过优化自动机来减少状态转变数的方法。例如,如果存在较少的状态转变分支并且自动机几乎仅遵循特定状态转变路径,则将所述路径表示成多个状态是无用的。在这种情况下,可以将多个状态合并为一个状态以减少状态转变数。
根据本发明,使用与XML实例文档有关的信息的以下两项来优化自动机(A)关于实例文档的统计信息(B)概要信息这些技术不是相互排斥而是相互补充的。即,在对获得足够量的统计信息所需的一组文档进行处理之前,使用统计信息(A)优化的自动机可以更早地使用概要信息(B)来优化以获得优化后的自动机。同样,使用概要信息(B)优化的自动机可以使用统计信息(A)来优化,由此可以在自动机中反映出在运行时期间出现但在概要中没有描述的模式。以下将描述使用信息(A)和(B)中的每个项的优化。
(A)使用关于实例文档的统计信息的优化此方法使用关于实例文档的统计信息来优化自动机,由此提高XML解析器的处理速度。具体地说,提供了以下两种方法。
(A-1)合并多个状态转变(A-2)生成适合于重复元素出现数的模式的自动机(A-1)合并多个状态转变如上所述,为了进一步提高专利文献1中公开的Deltarser的处理速度,必须考虑由状态转变引起的成本。因此,当在字节序列匹配期间发现连续匹配状态转变具有很高的概率时,优选将那些状态表示为单个状态转变,而不是分别地表示它们。例如,如果要处理XML的字符串<name>IBM</name>,则通常生成状态转变“<name>”、“IBM”和“</name>”。如果每次都匹配这些状态,则优选将它们合并为一种表示“<name>IBM</name>”。使用统计信息来执行这种合并。
首先,必须找到连续匹配状态转变序列。为每个状态转变指定ID(标识符)以便标识该状态转变。每次状态转变匹配现有状态转变时,记录状态转变的ID并将其添加到ID的列表(下文称为ID列表)。在匹配结束(表示为Sn,其中“n”是自然数)位置的状态处结束记录ID。
当状态转变连续匹配和ID列表的长度达到2或更多时,ID列表中包含的一组状态转变变成要合并在一个状态转变中(将多个状态转变合并到单个状态转变中)的候选者。为ID列表提供计数器。该计数器用于统计地分析要处理的一组实例文档中状态转变序列的出现频率。ID列表和计数器存储在状态S1中并被管理。可使用各种方法来对相同的ID列表进行计数。例如,可以创建适当的散列函数,将ID列表的散列值用作关键字,并且将计数器保存为值。
例如,考虑其中有这样的文档的情况,在所述文档中,文本节点<B>的值变为<A><B>1</B></A>、<A><B>2</B></A>等等。此时,生成图4所示自动机并且将ID指定给每个状态转变。
在这个例子中,如果当处理100个文档时,80个文档出现ID为1和2的状态转变连续地匹配以及ID为4和5连续地匹配,则在状态3和6中存储用于对ID列表计数的散列表。
在收集了足够量的统计信息之后,此机制显示了连续状态转变序列出现的统计频率。可以建立频率的阈值并且频率超出该阈值的状态转变序列可被合并在一个状态转变中。基本地,保留在合并之前的该组状态转变,以便避免重新生成表示<A>的状态转变,例如,在遇到需要未合并的状态转变的文档(例如,<A><C>$C</C></A>)的情况中。
例如,设置了80%的阈值,以便如果相同的ID列表出现了80%或更高的概率,则执行状态合并。合并之前的状态被删除。在这种情况下,图4所示的自动机被优化为图5所示的自动机。
(A-2)生成适合于重复元素出现数的模式的自动机考虑其中某个元素重复出现的情况(虽然此处使用了两个术语“重复”和“反复”,但是它们是同义词)。Deltarser能够生成以下两种类型的自动机作为表示这种情况的自动机。
(1)循环自动机如果出现重复元素并已生成表示该元素的状态,则自动机返回该状态并且执行与第一次反复相同的状态转变。图6显示了其中重复最终变成循环状态转变的自动机。
(2)扩展自动机当重复元素出现时,即使已生成表示该元素的状态,仍单独地生成状态转变。图7显示了其中重复出现为呈直线的状态转变的自动机。
循环自动机的一个优点在于不会生成冗余状态转变并且因此自动机很紧凑,与关于扩展自动机的顾虑相比,关于与状态/转变数关联的存储器消耗的顾虑很小。然而,在从状态S3转变到状态S2之后,存在两个自动机可做出到其的转变的候选者S1和S3,并且自动机做出应转变到哪个状态的成本(字节序列匹配以及上下文计算(如元素堆栈和命名空间)的成本)高于扩展自动机的成本。
另一方面,扩展自动机的状态比循环自动机多,但是状态转变的成本比前者低,因为它只有一个可做出向其转变的候选状态。然而,扩展自动机不适于元素的重复数总是随机的情况,因为元素出现的次数会与重复一样多。在这种情况中,最好是采用循环自动机。
下面将描述以统计方式从两类自动机中选择一个自动机的方法。基本原则是使用首先构造自动机的前者的方法。然后,对要处理的一组实例文档中的重复进行检测和计数。如果确定重复数是统计上的固定值并且不超出阈值,则将自动机优化为扩展自动机。另一方面,如果重复数在统计上分散且随机,则使用循环自动机。
(1)检测重复的方法在图6的示例性循环自动机中,首先必须检测它通过同一路径返回状态S2。这可以通过记录所经过的状态转变的ID来检测。即,在图6的例子中,具有ID{2,3,4}的路径被添加到状态S2。ID列表不同于以上描述的连续状态转变序列。被记录以便检测重复的状态转变序列将称为重复状态转变序列。重复状态转变序列与连续状态转变序列的不同之处在于将记录经过的状态转变,与它们是否匹配无关。
例如,考虑到文档<X><A>1</A><A>2</A><A>3</A></X>。因为在<X>之后出现了组<A>$A</A>的三次重复,因此在状态S2中记录具有状态转变ID 2、3、4的序列的三次重复。为了找到重复数的模式,以相同的方式来记录要处理的文档组中的ID,并且可以统计地获得与重复数是否在某种程度上随机或某个固定重复数是否频繁出现有关的信息。基于所述信息,如果重复数是固定的,则如上所述将它优化为扩展自动机。如果判定重复数是随机的,则依旧使用循环自动机。
(2)处理嵌套的重复元素重复可能以嵌套形式出现。例如,在图8所示的SML实例文档中,出现了最内侧元素<C>的任意次重复并且出现了稍外侧的元素<B>的两次重复。所述文档可表示为图9所示的循环自动机。此处,将由标记<A>与ID号一起所引起的状态转变表示成Tid-1[<A>]。即使重复元素以这种方式嵌套,仍有必要如(1)中所描述的计数重复数。
根据此方法,如下面所描述的对在另一个循环中嵌套的循环内的元素的重复和嵌套循环的重复进行计数。
将参考图10的流程图来说明所述处理。
首先,检测最内侧循环并将其设置为初始“内侧循环”(步骤S1).
然后,通过使用方法(1)来记录内侧循环的反复数(步骤S2).
如果发现了包围所述内侧循环的最近的外侧循环(步骤S3是),则将它记录为仅经过循环的一次重复的ID列表,即使内侧循环的反复数不止一次(步骤S4)。使用ID列表的计数器对外侧循环的反复数进行计数(步骤S5)。如果在步骤S3没有检测到外侧循环(步骤S3否),则处理结束。
接下来,将外侧循环设置为内侧循环(步骤S6),并执行步骤S3、S4和S5。
例如,将图8的例子考虑为XML实例文档。在这种情况下,在S3中记录ID列表{3,4,5}上的状态转变序列。因为元素C重复地出现,所以ID列表{3,4,5}的状态转变形成了循环。在元素C的重复结束并且元素B的结束标记出现之后,文档移动到状态S2。仅使用(1)中所描述的检测重复的方法,可生成ID列表{1,2,3,4,5,3,4,5,3,4,5,3,4,5,6,7}。ID列表中ID 3、4、5的序列的任意重复数都能够出现。使用方法(2),将具有循环结构的{3,4,5}看作在其外侧循环处的循环的一次反复,并且表示为ID列表{1,2,3,4,5,6,7}。因而可适当地对重复进行计数。
图9示出了在优化之前图8所示实例文档的自动机。在使用方法(2)对它进行优化之后,内部是循环自动机,外部是扩展自动机,如图11所示。
图12示出了另一个示例性实例文档以证明可在另一种情况中完成相同操作。在这种情况下,元素C的最内侧循环的反复次数是固定的,但是元素B的循环的反复次数是任意的。可通过使用以上所描述的方法来对重复进行适当地计数。结果,生成了图13所示的自动机。
(B)使用概要信息来优化和预建立自动机此处可用于优化自动机的概要信息是W3C中规定的XML概要。也可以采用诸如DTD、RELAX(XML的规则语言描述)或NG之类的其他概要语言。
图14示出了优化流程。首先,根据它们是否具有属性(图14左侧部分所示)来对要处理的元素进行分类,并且将它们进一步分类成简单类型或复杂类型(如图14右侧部分所示)。术语“简单类型元素”指是简单内容模型并且没有属性的元素。简单内容模型只接受文本节点作为其子元素。其他元素(是具有属性的简单内容模型或其他内容模型)被定义为复杂类型。存在其中混合了文本节点和子元素的混合内容,本文将不对其进行考虑。
下面描述用于对这些类型中的每个类型进行优化的方法。
(B-1)优化简单类型元素(1)具有固定值的简单内容元素如果在“xsdelement”中指定了“固定”属性,则通过使用此属性来确定简单内容元素。
例子)XML概要<xsdelement name=″name″type=″xsdstring″fixed″IBM/>
XML实例<name>IBM</name>
如果没有概要信息,则将每个″<name>″、″IBM″、″</name>″定义为一个状态,并且将生成图15所示的三个状态序列。通过使用以上所述的概要信息,可以将这三个状态合并成图16所示的一个状态。以这种方式,可通过使用概要信息来合并状态,从而提高了处理速度。
(2)为其指定候选值的元素如果指定了概要的候选值或元素之间的候选值,则可预先将该信息用于创建它们的状态转变(自动机预建立)。
(B-2)复杂类型元素的优化(1)后跟固定元素的元素如果指定了XML概要中的″xsdsequence″,假定minOccurs不为零,则元素后始终跟有固定元素。″Xsdsequence″是定义了元素的有序组的合成器。使用此信息,可以将两个不同的状态合并成单个状态。
例如,考虑使用图17中所示的XML概要的下列XML实例。
XML实例<X><A>1</A><B>2</B><C>3</C></X>
上面给出的XML实例通常具有下列11种状态转变(″<X>″,″<A>″,1,″</A>″,″<B>″,2,″</B>″,″<C>″,3,″</C>″,″</X>″)。使用概要信息,状态转变数可减少到7个,为″<X><A>″,1,″</A><B>″,2,″</B><C>″,3″</C></X>″。
(2)后跟固定候选元素之一的元素如果在″Xsdchoice″中指定了候选元素,则会预先知道跟随该元素的候选元素。此信息可用于创建状态转变,因而可降低创建状态转变的成本。″Xsdchoice″是定义一组排他元素(只可以选择某一元素)的一个合成器或多个合成器。″Xsdchoice″可以指定有maxOccurs=unbound或maxOccurs的有限发生次数。
(3)不以特定顺序描述元素组的合成器″Xsdall″用于描述出现零次或以任何顺序出现一次的一组元素。图18显示了这样的例子。
此概要表示A、B和C中的每一个均不以特定顺序出现了一次(缺省是minOccur=1)。在这种情况下,从减少状态数的角度,可以预先建立<A>、<B>和<C>的所有可能组合(例如,由一个状态来表示<A/><B/><C/>)。如果考虑到自动机的大小,则可去除在执行后的给定时间段或更长时间后未使用的节点。
(4)重复元素如果为maxOccurs指定了″unbound″,则知道元素出现了各种次数,因此(有把握地)创建重复转变。
(B-3)具有属性的元素(1)具有固定属性的元素如果在概要中指定了固定属性值或元素之间的固定值,则该信息可用于将状态与在前或在后的状态进行合并。如果在xsdattribute中指定了“固定”属性,则属性值是固定的并且必须使用指定的相同值。下面显示了示例性概要和XML实例。
XML概要<xsdattribute name=″year″type=″xsddate″fixed=″2004″/>
XML实例<item year=″2004″>
(2)具有指定候选属性的元素候选值可用于预先建立状态转变。在以下XML概要中,定义了仅将“red”、“blue”和“green”作为id属性值出现。此信息可用于预先创建状态转变。图19显示了一个示例性XML概要。
(C)处理空白XML允许使用任意数目的空白。迄今为止的优化方法的描述中使用不包括空白的例子。然而,XML对出现空白字符的限制很宽松。元素之间可出现任意数目的空白,并且在元素名中可出现空白。本发明使用关于实例文档(A)的统计信息来解决空白的变化。
图20示出了由于空白引起的状态转变的例子。由于空白所引起的状态转变与由于其他元素所引起的状态转变相同创建在ID=2和ID=2’的状态转变中时的循环状态转变。ID=2的状态转变是其中在<A>和<B>中间出现三个空白(<A>□□□<B>)的情况;ID=2’的状态转变是其中在<A>和<B>中间出现五个空白(<A>□□□□□<B>)的情况。通过使用统计信息(A)可以发现哪个转变在统计上更经常发生。因而,可以标识空白次数的模式并且所述空白可以如上所述与其他状态转变进行合并。
图21和22示出了本发明的实施例的结果。图21和22示出了对实例执行的实验结果,在所述实例中,根据来自IBM的现有XML解析器产品A来实现本发明的方法。XML解析器产品A具有这样的体系结构其中将概要转换成中间表示,并且在虚拟机上执行该中间表示以验证概要。在此实验中,通过使用下一个要出现的元素由ReadOne指令唯一确定的事实来执行此处提出的自动机优化,所述指令是处理″xsdsequence″的指令。使用以下实验环境及XML概要文件和XML实例文件。
<实现环境>
-ThinkPadT43 2668-72J(PentiumM760,2.0GHz,1GB RAM)-WindowsXP Professional-JavaVMSun JVM 1.42-比较解析器1)Deltarser其中实现专利文献1中描述的发明的XML解析器2)概要-感知(Schema-aware)Deltarser其中应用了本发明的方法的Deltarser-比较方法1)在10,000次预热之后,执行10,000次处理并计算平均时间。
2)执行所有文本元素(包括相同文本)的部分处理。
-测试文档1)图21所示的XML概要文件2)图22所示的实例文档<实验结果>
使用各种大小的XML实例来测量本发明(概要-感知Deltarser)的效果。图23和24显示了实验结果。在图23和24中,XML实例的文件名(xxx.xml)指示文档大小(字节)。测量的处理时间以毫秒表示。
如可从图23和24中看到的,所有文档的处理时间都提高了13-30%。虽然仅对实验中的xsd序列的优化执行了测量,但是从实验中显而易见的是,通过使用概要信息来减少状态转变数,在其他优化情况中可以提高处理速度。因为该实验还显示可通过合并状态转变来提高处理速度,所以使用具有关于实例文档的统计信息的优化的方法具有提高处理速度的有利效果。
本发明可应用于要进行XML分析的为其提供了关于实例文档的统计信息和概要信息的任何应用程序。例如,本发明可用于特定的XML标记语言处理系统或处理Web服务的中间件。
此处未显示使用统计信息的自动机的优化效果。然而,可获得与使用概要信息的方法的效果相等或比它更好的效果。这是因为通过在运行时期间在自动机中反映文档的模式,在概要信息中所反映的信息以及在概要信息中没有反映的信息都可以用于优化自动机。通过实例文档的统计处理,可获得未包括在概要信息中的用于合并状态的大量信息。然而,应当指出,使用统计信息的方法需要多次尝试以获得适当的统计信息,这需要额外的时间量。
虽然根据实施例和实例描述了本发明,但是本发明的技术范围不限于根据所述实施例描述的范围。可对所述实施例做出各种修改和改进。从权利要求
显而易见的是,对其做出修改和改进的实施例也包括在本发明的技术范围内。
描述为本发明实施例的结构化文档处理装置和结构化文档处理方法可以由使计算机或计算机上的系统执行所述装置和方法的功能的程序来实现。其上存储所述程序的计算机可读记录介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或是信号承载介质。计算机可读记录介质的例子包括半导体或固态存储设备及磁带。可移动计算机可读记录介质的例子包括半导体或固态存储设备、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘以及光盘。当前可用的光盘的例子包括光盘只读存储器(CD-ROM)、光盘读/写(CD-R/W)以及DVD。
权利要求
1.一种执行电子数据形式的结构化文档的句法解析的结构化文档处理装置,所述装置包括自动机生成单元,其生成多个状态的状态转变序列,所述多个状态允许将结构化文档分段成多个节点;实例文档分析单元,其通过使用与是所述结构化文档的实体的实例文档有关的统计信息,将状态转变合并到由所述自动机生成单元生成的所述状态转变序列中,并且通过使用所述统计信息来统计地获得所述状态转变中重复元素出现次数的模式;概要信息分析单元,其通过使用定义了与所述结构化文档有关的信息的结构和格式的概要信息,将所述状态转变合并到由所述自动机生成单元生成的所述状态转变序列中;以及自动机优化单元,其相互地优化由所述实例文档分析单元和所述概要信息分析单元所合并的自动机。
2.根据权利要求
1的结构化文档处理装置,其中所述结构化文档是XML文档。
3.根据权利要求
1的结构化文档处理装置,其中所述允许分段的多个状态由SAX事件来定义。
4.根据权利要求
1的结构化文档处理装置,还包括连续状态转变计数单元,其为所述实例文档分析单元中所述状态转变合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用所述ID列表来对所述连续匹配状态转变的出现计数。
5.根据权利要求
1的结构化文档处理装置,其中即使由所述实例文档分析单元检测的重复元素是嵌套的,所述自动机优化单元仍对所述重复元素进行优化。
6.根据权利要求
1的结构化文档处理装置,其中所述实例文档分析单元通过使用所述统计信息来确定所述结构化文档中的元素间出现的任意数目空白字符的模式。
7.一种用于执行电子数据形式的结构化文档的句法解析的结构化文档处理方法,所述方法包括生成允许将结构化文档分段成多个节点的多个状态的状态转变序列;通过使用与是所述结构化文档的实体的实例文档有关的统计信息,将状态转变合并到在所述自动机生成处生成的所述状态转变序列中,并且通过使用所述统计信息来统计地获得所述状态转变中重复元素出现次数的模式;通过使用定义了与所述结构化文档有关的信息的结构和格式的概要信息,将所述状态转变合并到在所述自动机生成处生成的所述状态转变序列中;以及相互地优化在所述实例文档分析和所述概要信息分析处合并的自动机。
8.根据权利要求
7的结构化文档处理方法,其中所述结构化文档是XML文档。
9.根据权利要求
7的结构化文档处理方法,其中所述允许分段的多个状态由SAX事件来定义。
10.根据权利要求
7的结构化文档处理方法,还包括在所述统计地获得处为所述多个状态转变的合并内的每个状态转变指定ID,以ID列表的形式存储连续匹配状态转变,以及通过使用所述ID列表来对所述连续匹配状态转变的出现计数。
11.根据权利要求
7的结构化文档处理方法,其中即使重复元素是嵌套的,所述自动机优化仍对所述重复元素进行优化。
12.根据权利要求
7的结构化文档处理方法,其中通过在所述统计地获得处使用所述统计信息来确定所述结构化文档中的元素间出现的任意数目空白字符的模式。
专利摘要
本发明的目标是提供一种能够使用诸如XML解析器之类的解析器来快速解析数字化的结构化文档的句法解析装置和方法。与实例文档和概要信息有关的统计信息被用于合并允许对结构化文档分段的多个状态转变,由此生成优化的自动机。在合并状态转变中,以ID列表的形式保存连续匹配状态转变,所述ID列表然后用于对连续状态转变数进行计数。此外,统计地获得包括嵌套元素的重复元素出现次数的模式。通过使用统计方法来解决XML中空白的变化。概要信息用于预先建立自动机,由此降低所述句法解析装置的初始开销。
文档编号G06F17/30GK1991837SQ200610164702
公开日2007年7月4日 申请日期2006年11月14日
发明者铃村丰太郎, 立堀道昭, 浦本直彦 申请人:国际商业机器公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1