專利名稱:結(jié)構(gòu)化文檔處理裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種結(jié)構(gòu)化文檔處理裝置、方法以及程序,更具體地說(shuō),涉及一種能夠提高電子數(shù)據(jù)形式的結(jié)構(gòu)化文檔的句法解析速度的結(jié)構(gòu)化文檔處理裝置、方法以及程序。
背景技術(shù):
隨著面向?qū)ο蠹夹g(shù)的發(fā)展,如今電子數(shù)據(jù)形式的結(jié)構(gòu)化文檔已經(jīng)用在各個(gè)領(lǐng)域中。特別地,互聯(lián)網(wǎng)的廣泛使用和Web服務(wù)技術(shù)的進(jìn)步導(dǎo)致了是結(jié)構(gòu)化文檔中的一種文檔的XML(可擴(kuò)展標(biāo)記語(yǔ)言)的激增。XML還廣泛地用于諸如SOA(面向服務(wù)的體系結(jié)構(gòu))之類的軟件體系結(jié)構(gòu)和網(wǎng)格計(jì)算,并且許多供應(yīng)商提供XML解析器(也稱為XML處理器)。XML解析器是XML的基本技術(shù),其解析XML文檔并處理XML文檔以允許應(yīng)用程序容易地使用該XML文檔。它對(duì)進(jìn)一步提高XML的性能十分重要。
因此,在對(duì)已解析的結(jié)構(gòu)化文檔與要解析的結(jié)構(gòu)化文檔之間的差異進(jìn)行分析的基礎(chǔ)上,做出了許多嘗試以提高XML解析器的處理速度,如專利文獻(xiàn)1中所描述的。專利文獻(xiàn)1中所提出的提高XML解析器的處理速度的技術(shù)利用了消息之間的類似性。將自動(dòng)機(jī)用作檢測(cè)類似性的機(jī)構(gòu),并且在運(yùn)行時(shí)期間從XML文檔動(dòng)態(tài)地生成狀態(tài)轉(zhuǎn)變序列(自動(dòng)機(jī))。此外,通過(guò)在字節(jié)序列級(jí)別執(zhí)行比較來(lái)有效和高速地比較消息,并且僅處理它們之間的差異,由此提高了處理速度。
已公開(kāi)未審查專利申請(qǐng)No.2004-314713
發(fā)明內(nèi)容
本發(fā)明要解決的問(wèn)題本發(fā)明的目標(biāo)是解決下述問(wèn)題,以便進(jìn)一步改進(jìn)專利文獻(xiàn)1中提出的XML解析器(下文中稱為Deltarser)。
將根據(jù)Deltarser提出的自動(dòng)機(jī)生成為使用SAX(XML的簡(jiǎn)單應(yīng)用程序接口)粒度來(lái)定義的狀態(tài)轉(zhuǎn)變序列(狀態(tài)轉(zhuǎn)變圖信息)狀態(tài)。此處SAX事件是這樣的接口,所述接口在分析XML文檔的同時(shí)通知事件的應(yīng)用程序每次發(fā)現(xiàn)了要素的開(kāi)始或結(jié)束。
然而,與字節(jié)序列比較相比,上述狀態(tài)轉(zhuǎn)變處理成本高(并且耗時(shí)),并且傳統(tǒng)方法由于增加了狀態(tài)或轉(zhuǎn)變數(shù)而降低了性能。狀態(tài)轉(zhuǎn)變定義中的狀態(tài)的粒度越小,字節(jié)序列比較的成功率就越高,但是整個(gè)文檔中字節(jié)序列比較所需的時(shí)間量就越多。因此,存在尋找最佳粒度以定義創(chuàng)建自動(dòng)機(jī)的狀態(tài)以便構(gòu)建快速XML解析器的問(wèn)題。
另一個(gè)問(wèn)題是生成差異分析所需的自動(dòng)機(jī)的新?tīng)顟B(tài)序列的成本。狀態(tài)的生成包括存儲(chǔ)部分處理所需的上下文和復(fù)制字節(jié)序列。這些操作的成本引起了開(kāi)銷。因此,存在如何避免在運(yùn)行時(shí)期間生成新?tīng)顟B(tài)轉(zhuǎn)變的問(wèn)題。
下面進(jìn)一步詳細(xì)描述上述要由本發(fā)明所解決的問(wèn)題。
<由于狀態(tài)轉(zhuǎn)變數(shù)增加引起的性能惡化>
根據(jù)專利文獻(xiàn)1中描述的發(fā)明,SAX事件被表示為構(gòu)成自動(dòng)機(jī)的一個(gè)狀態(tài)。圖1示出了實(shí)驗(yàn)中測(cè)量的處理時(shí)間對(duì)狀態(tài)轉(zhuǎn)變數(shù)的圖。圖1所示的是在測(cè)量的同一文檔(文件大小為64KB)中進(jìn)行字節(jié)序列匹配,同時(shí)改變其組成狀態(tài)數(shù)(X軸)所花費(fèi)的平均處理時(shí)間(ms)。如可以從圖中看到的,處理時(shí)間隨狀態(tài)轉(zhuǎn)變數(shù)的增加而單調(diào)增加。例如,當(dāng)每個(gè)空白表示成一個(gè)狀態(tài)時(shí),狀態(tài)數(shù)約為12,000,當(dāng)空白并入其它狀態(tài)時(shí),其減少了4,000,達(dá)到約8,000,并且單獨(dú)的字節(jié)序列匹配的成本從3.25(ms)降低為2.4(ms)。性能差異為30%。實(shí)驗(yàn)表明狀態(tài)轉(zhuǎn)變數(shù)越小,差異處理所引起的開(kāi)銷就越小。
然而,具有越少狀態(tài)的自動(dòng)機(jī)不一定越好。隨著狀態(tài)數(shù)減少,失配的概率增加,因此,新生成狀態(tài)的成本增加了開(kāi)銷。以這樣的方式來(lái)優(yōu)化自動(dòng)機(jī)是很重要的最小化狀態(tài)轉(zhuǎn)變數(shù),但是最大化匹配概率。
<狀態(tài)轉(zhuǎn)變的生成成本高>
專利文獻(xiàn)1中的發(fā)明公開(kāi)了Deltarser的基本處理,Deltarser是一個(gè)XML解析器,通過(guò)對(duì)結(jié)構(gòu)化文檔間的差異執(zhí)行分析而提高了其處理速度。Deltarser在運(yùn)行時(shí)期間動(dòng)態(tài)地從文檔中生成自動(dòng)機(jī),以便有效地檢測(cè)差異。此處,自動(dòng)機(jī)的一次狀態(tài)轉(zhuǎn)變是SAX事件的一個(gè)單元。生成狀態(tài)的成本高于XML解析器的其他任務(wù)的成本。防止頻繁的狀態(tài)生成將會(huì)提高總體性能。
圖2示出了在Deltarser與現(xiàn)有XML解析器(Xerces和Piccolo)之間的比較。圖中的橫軸表示所解析的XML文檔數(shù),縱軸表示解析所花費(fèi)的時(shí)間。例如,Deltarser和Xerces之間的比較顯示在輸入文檔數(shù)超出25的點(diǎn)之上Xerces更快。如果可以通過(guò)使用概要信息來(lái)預(yù)先創(chuàng)建自動(dòng)機(jī),則可以降低此部分的成本,并實(shí)現(xiàn)在現(xiàn)有解析器之上的Deltarser的優(yōu)越性。
發(fā)明概述為了解決上述問(wèn)題,本發(fā)明提出了一種用于通過(guò)使用與實(shí)例文檔有關(guān)的統(tǒng)計(jì)信息和概要信息來(lái)優(yōu)化自動(dòng)機(jī)的方法。所述概要信息可降低預(yù)先生成狀態(tài)轉(zhuǎn)變序列的成本并且可進(jìn)一步優(yōu)化自動(dòng)機(jī)的狀態(tài)數(shù)和轉(zhuǎn)變數(shù)。所述優(yōu)化可提高諸如XML解析器之類的解析器進(jìn)行句法解析的速度。
除XML文檔之外,結(jié)構(gòu)化文檔的例子包括XHTML(可擴(kuò)展超文本標(biāo)記語(yǔ)言)和SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)文檔。
具體地說(shuō),本發(fā)明提供了一種具有用于解決上述問(wèn)題的手段的結(jié)構(gòu)化文檔處理裝置、方法和程序。所述裝置、方法和程序僅在其實(shí)施方式上彼此不同;它們實(shí)質(zhì)上基于相同的技術(shù)。因此,將作為代表描述用于解決結(jié)構(gòu)化文檔處理裝置中所提供的問(wèn)題的手段。
(1)執(zhí)行電子數(shù)據(jù)形式的結(jié)構(gòu)化文檔的句法解析的結(jié)構(gòu)化文檔處理裝置通過(guò)使用自動(dòng)機(jī)生成單元來(lái)生成多個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)變序列,所述多個(gè)狀態(tài)能夠進(jìn)行結(jié)構(gòu)化文檔的分段。所述裝置包括實(shí)例文檔分析單元,其在生成狀態(tài)轉(zhuǎn)變序列(自動(dòng)機(jī))中,通過(guò)使用與實(shí)例文檔(其是結(jié)構(gòu)化文檔的實(shí)體)有關(guān)的統(tǒng)計(jì)信息來(lái)將狀態(tài)轉(zhuǎn)變合并到狀態(tài)轉(zhuǎn)變序列中,并且通過(guò)使用所述統(tǒng)計(jì)信息來(lái)統(tǒng)計(jì)地獲得狀態(tài)轉(zhuǎn)變中重復(fù)元素的出現(xiàn)數(shù)的模式。所述裝置還包括概要信息分析單元,其在從結(jié)構(gòu)化文檔生成狀態(tài)轉(zhuǎn)變序列中,通過(guò)使用定義了與該結(jié)構(gòu)化文檔有關(guān)的信息的結(jié)構(gòu)和格式的概要信息來(lái)將狀態(tài)轉(zhuǎn)變合并到狀態(tài)轉(zhuǎn)變序列中。所述裝置還包括自動(dòng)機(jī)優(yōu)化單元,其相互地優(yōu)化由所述實(shí)例文檔分析單元和所述概要信息分析單元所合并的自動(dòng)機(jī)。所述實(shí)例文檔分析單元和所述概要信息分析單元都優(yōu)化自動(dòng)機(jī)。此外,所述實(shí)例文檔分析單元和所述概要信息分析單元之一可進(jìn)一步優(yōu)化由另一個(gè)單元所優(yōu)化的自動(dòng)機(jī)。
(2)提供了一種根據(jù)項(xiàng)目(1)的結(jié)構(gòu)化文檔處理裝置,其中所述結(jié)構(gòu)化文檔是XML文檔,并且所述多個(gè)能夠進(jìn)行分段的狀態(tài)由SAX事件定義。然而,雖然根據(jù)項(xiàng)目(1)的結(jié)構(gòu)化文檔處理裝置所解析的結(jié)構(gòu)化文檔不限于XML文檔,但是在以下描述中假定結(jié)構(gòu)化文檔是XML文檔并且狀態(tài)由SAX事件定義。
(3)提供了一種根據(jù)項(xiàng)目(1)的結(jié)構(gòu)化文檔處理裝置,還包括連續(xù)狀態(tài)轉(zhuǎn)變計(jì)數(shù)單元,其為實(shí)例文檔分析單元中狀態(tài)轉(zhuǎn)變合并內(nèi)的每個(gè)狀態(tài)轉(zhuǎn)變指定ID,以ID列表的形式存儲(chǔ)連續(xù)匹配狀態(tài)轉(zhuǎn)變,以及通過(guò)使用ID列表來(lái)對(duì)連續(xù)匹配狀態(tài)轉(zhuǎn)變的出現(xiàn)計(jì)數(shù)。此配置表示用于合并狀態(tài)轉(zhuǎn)變的特定手段。
(4)提供了一種根據(jù)項(xiàng)目(1)的結(jié)構(gòu)化文檔處理裝置,其中即使重復(fù)元素是嵌套的,所述自動(dòng)機(jī)優(yōu)化單元仍對(duì)由實(shí)例文檔分析單元檢測(cè)的重復(fù)元素進(jìn)行優(yōu)化。
(5)提供了一種根據(jù)項(xiàng)目(1)的結(jié)構(gòu)化文檔處理裝置,其中所述實(shí)例文檔分析單元通過(guò)使用所述統(tǒng)計(jì)信息使結(jié)構(gòu)化文檔中的元素間出現(xiàn)的任意數(shù)目的空白字符的模式固定。
以上給出的項(xiàng)目(3)到(5)顯示了用于合并狀態(tài)轉(zhuǎn)變的特定手段,下面將對(duì)其進(jìn)行詳細(xì)描述。
包括上述手段的結(jié)構(gòu)化文檔處理裝置使用實(shí)例文檔和概要信息來(lái)合并作為分析結(jié)構(gòu)化文檔狀態(tài)的結(jié)果而生成的狀態(tài)轉(zhuǎn)變序列。如先前所述,使用實(shí)例文檔的自動(dòng)機(jī)的優(yōu)化和使用概要信息的優(yōu)化不是相互排斥而是相互補(bǔ)充的。使用所述優(yōu)化方法之一優(yōu)化的自動(dòng)機(jī)能夠通過(guò)使用另一個(gè)方法來(lái)進(jìn)一步優(yōu)化。所述處理具有減少要連續(xù)解析的狀態(tài)數(shù)的效果,并且相應(yīng)地降低了狀態(tài)轉(zhuǎn)變的成本。
發(fā)明優(yōu)點(diǎn)根據(jù)本發(fā)明,在諸如XML之類的結(jié)構(gòu)化文檔處理中,將用于從輸入實(shí)例文檔動(dòng)態(tài)地獲得統(tǒng)計(jì)信息以執(zhí)行快速分析的技術(shù)與使用靜態(tài)的概要信息的技術(shù)相結(jié)合,由此解決了上述問(wèn)題。因此,拓寬了諸如Deltarser之類的結(jié)構(gòu)化文檔處理裝置的應(yīng)用范圍。
圖1示出了隨著狀態(tài)數(shù)增加的平均處理時(shí)間的增加;圖2示出了在狀態(tài)轉(zhuǎn)變生成開(kāi)銷中Deltarser與現(xiàn)有XML解析器之間的比較;圖3是本發(fā)明的一個(gè)實(shí)施例的結(jié)構(gòu)化文檔處理裝置的功能方塊圖;圖4示出了用于為狀態(tài)轉(zhuǎn)變指定ID的方法以及用于對(duì)重復(fù)元素計(jì)數(shù)的方法;圖5示出了優(yōu)化后的自動(dòng)機(jī);圖6示出了循環(huán)自動(dòng)機(jī);圖7示出了擴(kuò)展自動(dòng)機(jī);圖8示出了第一XML實(shí)例文檔;圖9示出了優(yōu)化之前第一XML實(shí)例文檔的自動(dòng)機(jī)的結(jié)構(gòu);圖10示出了處理嵌套的重復(fù)元素的流程;圖11示出了第一XML實(shí)例文檔1的優(yōu)化后的自動(dòng)機(jī)的結(jié)構(gòu);圖12示出了第二XML實(shí)例文檔;圖13示出了第二XML實(shí)例文檔的優(yōu)化后的自動(dòng)機(jī)的結(jié)構(gòu);
圖14示出了優(yōu)化的分類;圖15示出了優(yōu)化之前的簡(jiǎn)單類型元素的自動(dòng)機(jī);圖16示出了簡(jiǎn)單類型元素的優(yōu)化后的自動(dòng)機(jī);圖17示出了第一示例性XML概要;圖18示出了合成器;圖19示出了第二示例性XML概要;圖20示出了由于空白而引起的狀態(tài)轉(zhuǎn)變的例子;圖21示出了在第一實(shí)施例中的實(shí)驗(yàn)內(nèi)使用的XML概要;圖22示出了在第一實(shí)施例中的實(shí)驗(yàn)內(nèi)使用的XML實(shí)例文檔;圖23示出了在第一實(shí)施例中的實(shí)驗(yàn)的結(jié)果;以及圖24示出了在第一實(shí)施例中的實(shí)驗(yàn)結(jié)果的圖。
1…輸入單元2…輸出單元3…通信單元4…存儲(chǔ)器4a…實(shí)例文檔統(tǒng)計(jì)信息4b…解析的源結(jié)構(gòu)化文檔5…實(shí)例文檔分析單元6…概要信息分析單元7…自動(dòng)機(jī)優(yōu)化單元8…句法解析單元9…API單元10…結(jié)構(gòu)化文檔處理裝置20…結(jié)構(gòu)化文檔21…實(shí)例文檔22…概要信息
30…應(yīng)用程序具體實(shí)施方式
將參考附圖根據(jù)本發(fā)明的實(shí)施例描述本發(fā)明。
圖3示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的結(jié)構(gòu)化文檔處理裝置10的功能塊。在以下描述中提供的配置只是說(shuō)明性的,并且本發(fā)明不限于所述配置。
結(jié)構(gòu)化文檔處理裝置10包括從操作員接收輸入的輸入單元1,輸出處理結(jié)果的輸出單元2,以及存儲(chǔ)輸入/輸出數(shù)據(jù)和中間數(shù)據(jù)的存儲(chǔ)器4。結(jié)構(gòu)化文檔處理裝置10還包括分析輸出實(shí)例文檔的實(shí)例文檔分析單元5,以及分析以預(yù)定概要語(yǔ)言定義的概要信息的概要信息分析單元6,生成狀態(tài)轉(zhuǎn)變序列(自動(dòng)機(jī))的自動(dòng)機(jī)生成單元7a,相互優(yōu)化由實(shí)例文檔分析單元5和概要信息分析單元6合并的狀態(tài)轉(zhuǎn)變序列的自動(dòng)機(jī)優(yōu)化單元7,解析結(jié)構(gòu)化文檔的各種句法的文檔解析單元8,以及通知必要的應(yīng)用程序解析哪些結(jié)構(gòu)化文檔的結(jié)果并且充當(dāng)與應(yīng)用程序的接口的API單元9。
輸入單元1包括諸如鍵盤(pán)和鼠標(biāo)之類的典型輸入設(shè)備以及將數(shù)據(jù)接受為文件的輸入裝置。輸出單元2包括諸如CRT或液晶顯示之類的顯示設(shè)備以及將數(shù)據(jù)輸出為文件的輸出裝置。可以可選地提供通信單元3以便經(jīng)由通信將數(shù)據(jù)輸出到外部系統(tǒng)或從外部系統(tǒng)輸入數(shù)據(jù)。
結(jié)構(gòu)化文檔20(其是到處理裝置的數(shù)據(jù)輸入)包括實(shí)例文檔21和概要信息22。概要信息可忽略。如果忽略了概要信息,則使用預(yù)定的默認(rèn)值。實(shí)例文檔21是結(jié)構(gòu)化文檔20的實(shí)體,通過(guò)輸入單元由實(shí)例文檔分析單元5來(lái)分析其狀態(tài)。狀態(tài)分析后的數(shù)據(jù)(狀態(tài)轉(zhuǎn)變序列)作為實(shí)例文檔統(tǒng)計(jì)信息4a存儲(chǔ)在存儲(chǔ)器4中。所述狀態(tài)分析后的文檔在要解析的下一個(gè)結(jié)構(gòu)化文檔的差異分析中用作解析的源結(jié)構(gòu)化文檔4b。
實(shí)例文檔分析單元5包括連續(xù)狀態(tài)轉(zhuǎn)變計(jì)數(shù)器(未示出),其具有將ID指定給每個(gè)狀態(tài)轉(zhuǎn)變、以ID列表的形式存儲(chǔ)連續(xù)匹配狀態(tài)轉(zhuǎn)變,以及使用ID列表對(duì)連續(xù)匹配狀態(tài)轉(zhuǎn)變讀數(shù)以便合并多個(gè)狀態(tài)轉(zhuǎn)變的功能。
概要信息分析單元6對(duì)以諸如DTD(文檔類型定義)或W3C(萬(wàn)維網(wǎng)協(xié)會(huì))XML概要之類的概要語(yǔ)言編寫(xiě)的XML文檔的結(jié)構(gòu)和格式進(jìn)行分析。
稍后將詳細(xì)描述使用與實(shí)例文檔和概要信息有關(guān)的統(tǒng)計(jì)信息的處理。
文檔解析單元8實(shí)際上對(duì)結(jié)構(gòu)化文檔20的句法進(jìn)行解析。例如,它對(duì)XML文檔的元素和內(nèi)容進(jìn)行解析并將XML文檔變換成諸如SAX事件或應(yīng)用程序可容易地訪問(wèn)的DOM樹(shù)之類的形式。在執(zhí)行此操作中,將發(fā)現(xiàn)新解析的結(jié)構(gòu)化文檔20的狀態(tài)轉(zhuǎn)變序列與存儲(chǔ)器4中存儲(chǔ)的一組已解析的源文檔4b的狀態(tài)轉(zhuǎn)變序列之間的差異,并且僅分析所述差異以便提高解析效率。此處作為狀態(tài)轉(zhuǎn)變序列的表示提供了狀態(tài)轉(zhuǎn)變圖,如以下將描述的。
專利文獻(xiàn)1中描述了用于分析所述差異的特定方法,因此在此省略所述描述。
應(yīng)用程序30通過(guò)API來(lái)訪問(wèn)結(jié)構(gòu)化文檔處理裝置。API(應(yīng)用程序接口)單元9提供了諸如DOM或SAX之類用于XML文檔的典型接口。在廣義上,API單元9還充當(dāng)輸入/輸出單元,這沒(méi)有描述。
從上述描述中將理解,結(jié)構(gòu)化文檔處理裝置10可以是諸如個(gè)人計(jì)算機(jī)或服務(wù)器之類的計(jì)算機(jī),并且通過(guò)安裝具有所需功能的計(jì)算機(jī)程序來(lái)實(shí)現(xiàn)。下面將描述結(jié)構(gòu)化文檔處理裝置10所執(zhí)行的處理。
如根據(jù)所述問(wèn)題而描述的,自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)變對(duì)性能具有顯著影響。為了解決這個(gè)問(wèn)題,本發(fā)明提供了一種通過(guò)優(yōu)化自動(dòng)機(jī)來(lái)減少狀態(tài)轉(zhuǎn)變數(shù)的方法。例如,如果存在較少的狀態(tài)轉(zhuǎn)變分支并且自動(dòng)機(jī)幾乎僅遵循特定狀態(tài)轉(zhuǎn)變路徑,則將所述路徑表示成多個(gè)狀態(tài)是無(wú)用的。在這種情況下,可以將多個(gè)狀態(tài)合并為一個(gè)狀態(tài)以減少狀態(tài)轉(zhuǎn)變數(shù)。
根據(jù)本發(fā)明,使用與XML實(shí)例文檔有關(guān)的信息的以下兩項(xiàng)來(lái)優(yōu)化自動(dòng)機(jī)(A)關(guān)于實(shí)例文檔的統(tǒng)計(jì)信息(B)概要信息這些技術(shù)不是相互排斥而是相互補(bǔ)充的。即,在對(duì)獲得足夠量的統(tǒng)計(jì)信息所需的一組文檔進(jìn)行處理之前,使用統(tǒng)計(jì)信息(A)優(yōu)化的自動(dòng)機(jī)可以更早地使用概要信息(B)來(lái)優(yōu)化以獲得優(yōu)化后的自動(dòng)機(jī)。同樣,使用概要信息(B)優(yōu)化的自動(dòng)機(jī)可以使用統(tǒng)計(jì)信息(A)來(lái)優(yōu)化,由此可以在自動(dòng)機(jī)中反映出在運(yùn)行時(shí)期間出現(xiàn)但在概要中沒(méi)有描述的模式。以下將描述使用信息(A)和(B)中的每個(gè)項(xiàng)的優(yōu)化。
(A)使用關(guān)于實(shí)例文檔的統(tǒng)計(jì)信息的優(yōu)化此方法使用關(guān)于實(shí)例文檔的統(tǒng)計(jì)信息來(lái)優(yōu)化自動(dòng)機(jī),由此提高XML解析器的處理速度。具體地說(shuō),提供了以下兩種方法。
(A-1)合并多個(gè)狀態(tài)轉(zhuǎn)變(A-2)生成適合于重復(fù)元素出現(xiàn)數(shù)的模式的自動(dòng)機(jī)(A-1)合并多個(gè)狀態(tài)轉(zhuǎn)變?nèi)缟纤?,為了進(jìn)一步提高專利文獻(xiàn)1中公開(kāi)的Deltarser的處理速度,必須考慮由狀態(tài)轉(zhuǎn)變引起的成本。因此,當(dāng)在字節(jié)序列匹配期間發(fā)現(xiàn)連續(xù)匹配狀態(tài)轉(zhuǎn)變具有很高的概率時(shí),優(yōu)選將那些狀態(tài)表示為單個(gè)狀態(tài)轉(zhuǎn)變,而不是分別地表示它們。例如,如果要處理XML的字符串<name>IBM</name>,則通常生成狀態(tài)轉(zhuǎn)變“<name>”、“IBM”和“</name>”。如果每次都匹配這些狀態(tài),則優(yōu)選將它們合并為一種表示“<name>IBM</name>”。使用統(tǒng)計(jì)信息來(lái)執(zhí)行這種合并。
首先,必須找到連續(xù)匹配狀態(tài)轉(zhuǎn)變序列。為每個(gè)狀態(tài)轉(zhuǎn)變指定ID(標(biāo)識(shí)符)以便標(biāo)識(shí)該狀態(tài)轉(zhuǎn)變。每次狀態(tài)轉(zhuǎn)變匹配現(xiàn)有狀態(tài)轉(zhuǎn)變時(shí),記錄狀態(tài)轉(zhuǎn)變的ID并將其添加到ID的列表(下文稱為ID列表)。在匹配結(jié)束(表示為Sn,其中“n”是自然數(shù))位置的狀態(tài)處結(jié)束記錄ID。
當(dāng)狀態(tài)轉(zhuǎn)變連續(xù)匹配和ID列表的長(zhǎng)度達(dá)到2或更多時(shí),ID列表中包含的一組狀態(tài)轉(zhuǎn)變變成要合并在一個(gè)狀態(tài)轉(zhuǎn)變中(將多個(gè)狀態(tài)轉(zhuǎn)變合并到單個(gè)狀態(tài)轉(zhuǎn)變中)的候選者。為ID列表提供計(jì)數(shù)器。該計(jì)數(shù)器用于統(tǒng)計(jì)地分析要處理的一組實(shí)例文檔中狀態(tài)轉(zhuǎn)變序列的出現(xiàn)頻率。ID列表和計(jì)數(shù)器存儲(chǔ)在狀態(tài)S1中并被管理??墒褂酶鞣N方法來(lái)對(duì)相同的ID列表進(jìn)行計(jì)數(shù)。例如,可以創(chuàng)建適當(dāng)?shù)纳⒘泻瘮?shù),將ID列表的散列值用作關(guān)鍵字,并且將計(jì)數(shù)器保存為值。
例如,考慮其中有這樣的文檔的情況,在所述文檔中,文本節(jié)點(diǎn)<B>的值變?yōu)?amp;lt;A><B>1</B></A>、<A><B>2</B></A>等等。此時(shí),生成圖4所示自動(dòng)機(jī)并且將ID指定給每個(gè)狀態(tài)轉(zhuǎn)變。
在這個(gè)例子中,如果當(dāng)處理100個(gè)文檔時(shí),80個(gè)文檔出現(xiàn)ID為1和2的狀態(tài)轉(zhuǎn)變連續(xù)地匹配以及ID為4和5連續(xù)地匹配,則在狀態(tài)3和6中存儲(chǔ)用于對(duì)ID列表計(jì)數(shù)的散列表。
在收集了足夠量的統(tǒng)計(jì)信息之后,此機(jī)制顯示了連續(xù)狀態(tài)轉(zhuǎn)變序列出現(xiàn)的統(tǒng)計(jì)頻率。可以建立頻率的閾值并且頻率超出該閾值的狀態(tài)轉(zhuǎn)變序列可被合并在一個(gè)狀態(tài)轉(zhuǎn)變中?;镜?,保留在合并之前的該組狀態(tài)轉(zhuǎn)變,以便避免重新生成表示<A>的狀態(tài)轉(zhuǎn)變,例如,在遇到需要未合并的狀態(tài)轉(zhuǎn)變的文檔(例如,<A><C>$C</C></A>)的情況中。
例如,設(shè)置了80%的閾值,以便如果相同的ID列表出現(xiàn)了80%或更高的概率,則執(zhí)行狀態(tài)合并。合并之前的狀態(tài)被刪除。在這種情況下,圖4所示的自動(dòng)機(jī)被優(yōu)化為圖5所示的自動(dòng)機(jī)。
(A-2)生成適合于重復(fù)元素出現(xiàn)數(shù)的模式的自動(dòng)機(jī)考慮其中某個(gè)元素重復(fù)出現(xiàn)的情況(雖然此處使用了兩個(gè)術(shù)語(yǔ)“重復(fù)”和“反復(fù)”,但是它們是同義詞)。Deltarser能夠生成以下兩種類型的自動(dòng)機(jī)作為表示這種情況的自動(dòng)機(jī)。
(1)循環(huán)自動(dòng)機(jī)如果出現(xiàn)重復(fù)元素并已生成表示該元素的狀態(tài),則自動(dòng)機(jī)返回該狀態(tài)并且執(zhí)行與第一次反復(fù)相同的狀態(tài)轉(zhuǎn)變。圖6顯示了其中重復(fù)最終變成循環(huán)狀態(tài)轉(zhuǎn)變的自動(dòng)機(jī)。
(2)擴(kuò)展自動(dòng)機(jī)當(dāng)重復(fù)元素出現(xiàn)時(shí),即使已生成表示該元素的狀態(tài),仍單獨(dú)地生成狀態(tài)轉(zhuǎn)變。圖7顯示了其中重復(fù)出現(xiàn)為呈直線的狀態(tài)轉(zhuǎn)變的自動(dòng)機(jī)。
循環(huán)自動(dòng)機(jī)的一個(gè)優(yōu)點(diǎn)在于不會(huì)生成冗余狀態(tài)轉(zhuǎn)變并且因此自動(dòng)機(jī)很緊湊,與關(guān)于擴(kuò)展自動(dòng)機(jī)的顧慮相比,關(guān)于與狀態(tài)/轉(zhuǎn)變數(shù)關(guān)聯(lián)的存儲(chǔ)器消耗的顧慮很小。然而,在從狀態(tài)S3轉(zhuǎn)變到狀態(tài)S2之后,存在兩個(gè)自動(dòng)機(jī)可做出到其的轉(zhuǎn)變的候選者S1和S3,并且自動(dòng)機(jī)做出應(yīng)轉(zhuǎn)變到哪個(gè)狀態(tài)的成本(字節(jié)序列匹配以及上下文計(jì)算(如元素堆棧和命名空間)的成本)高于擴(kuò)展自動(dòng)機(jī)的成本。
另一方面,擴(kuò)展自動(dòng)機(jī)的狀態(tài)比循環(huán)自動(dòng)機(jī)多,但是狀態(tài)轉(zhuǎn)變的成本比前者低,因?yàn)樗挥幸粋€(gè)可做出向其轉(zhuǎn)變的候選狀態(tài)。然而,擴(kuò)展自動(dòng)機(jī)不適于元素的重復(fù)數(shù)總是隨機(jī)的情況,因?yàn)樵爻霈F(xiàn)的次數(shù)會(huì)與重復(fù)一樣多。在這種情況中,最好是采用循環(huán)自動(dòng)機(jī)。
下面將描述以統(tǒng)計(jì)方式從兩類自動(dòng)機(jī)中選擇一個(gè)自動(dòng)機(jī)的方法?;驹瓌t是使用首先構(gòu)造自動(dòng)機(jī)的前者的方法。然后,對(duì)要處理的一組實(shí)例文檔中的重復(fù)進(jìn)行檢測(cè)和計(jì)數(shù)。如果確定重復(fù)數(shù)是統(tǒng)計(jì)上的固定值并且不超出閾值,則將自動(dòng)機(jī)優(yōu)化為擴(kuò)展自動(dòng)機(jī)。另一方面,如果重復(fù)數(shù)在統(tǒng)計(jì)上分散且隨機(jī),則使用循環(huán)自動(dòng)機(jī)。
(1)檢測(cè)重復(fù)的方法在圖6的示例性循環(huán)自動(dòng)機(jī)中,首先必須檢測(cè)它通過(guò)同一路徑返回狀態(tài)S2。這可以通過(guò)記錄所經(jīng)過(guò)的狀態(tài)轉(zhuǎn)變的ID來(lái)檢測(cè)。即,在圖6的例子中,具有ID{2,3,4}的路徑被添加到狀態(tài)S2。ID列表不同于以上描述的連續(xù)狀態(tài)轉(zhuǎn)變序列。被記錄以便檢測(cè)重復(fù)的狀態(tài)轉(zhuǎn)變序列將稱為重復(fù)狀態(tài)轉(zhuǎn)變序列。重復(fù)狀態(tài)轉(zhuǎn)變序列與連續(xù)狀態(tài)轉(zhuǎn)變序列的不同之處在于將記錄經(jīng)過(guò)的狀態(tài)轉(zhuǎn)變,與它們是否匹配無(wú)關(guān)。
例如,考慮到文檔<X><A>1</A><A>2</A><A>3</A></X>。因?yàn)樵?amp;lt;X>之后出現(xiàn)了組<A>$A</A>的三次重復(fù),因此在狀態(tài)S2中記錄具有狀態(tài)轉(zhuǎn)變ID 2、3、4的序列的三次重復(fù)。為了找到重復(fù)數(shù)的模式,以相同的方式來(lái)記錄要處理的文檔組中的ID,并且可以統(tǒng)計(jì)地獲得與重復(fù)數(shù)是否在某種程度上隨機(jī)或某個(gè)固定重復(fù)數(shù)是否頻繁出現(xiàn)有關(guān)的信息?;谒鲂畔?,如果重復(fù)數(shù)是固定的,則如上所述將它優(yōu)化為擴(kuò)展自動(dòng)機(jī)。如果判定重復(fù)數(shù)是隨機(jī)的,則依舊使用循環(huán)自動(dòng)機(jī)。
(2)處理嵌套的重復(fù)元素重復(fù)可能以嵌套形式出現(xiàn)。例如,在圖8所示的SML實(shí)例文檔中,出現(xiàn)了最內(nèi)側(cè)元素<C>的任意次重復(fù)并且出現(xiàn)了稍外側(cè)的元素<B>的兩次重復(fù)。所述文檔可表示為圖9所示的循環(huán)自動(dòng)機(jī)。此處,將由標(biāo)記<A>與ID號(hào)一起所引起的狀態(tài)轉(zhuǎn)變表示成Tid-1[<A>]。即使重復(fù)元素以這種方式嵌套,仍有必要如(1)中所描述的計(jì)數(shù)重復(fù)數(shù)。
根據(jù)此方法,如下面所描述的對(duì)在另一個(gè)循環(huán)中嵌套的循環(huán)內(nèi)的元素的重復(fù)和嵌套循環(huán)的重復(fù)進(jìn)行計(jì)數(shù)。
將參考圖10的流程圖來(lái)說(shuō)明所述處理。
首先,檢測(cè)最內(nèi)側(cè)循環(huán)并將其設(shè)置為初始“內(nèi)側(cè)循環(huán)”(步驟S1).
然后,通過(guò)使用方法(1)來(lái)記錄內(nèi)側(cè)循環(huán)的反復(fù)數(shù)(步驟S2).
如果發(fā)現(xiàn)了包圍所述內(nèi)側(cè)循環(huán)的最近的外側(cè)循環(huán)(步驟S3是),則將它記錄為僅經(jīng)過(guò)循環(huán)的一次重復(fù)的ID列表,即使內(nèi)側(cè)循環(huán)的反復(fù)數(shù)不止一次(步驟S4)。使用ID列表的計(jì)數(shù)器對(duì)外側(cè)循環(huán)的反復(fù)數(shù)進(jìn)行計(jì)數(shù)(步驟S5)。如果在步驟S3沒(méi)有檢測(cè)到外側(cè)循環(huán)(步驟S3否),則處理結(jié)束。
接下來(lái),將外側(cè)循環(huán)設(shè)置為內(nèi)側(cè)循環(huán)(步驟S6),并執(zhí)行步驟S3、S4和S5。
例如,將圖8的例子考慮為XML實(shí)例文檔。在這種情況下,在S3中記錄ID列表{3,4,5}上的狀態(tài)轉(zhuǎn)變序列。因?yàn)樵谻重復(fù)地出現(xiàn),所以ID列表{3,4,5}的狀態(tài)轉(zhuǎn)變形成了循環(huán)。在元素C的重復(fù)結(jié)束并且元素B的結(jié)束標(biāo)記出現(xiàn)之后,文檔移動(dòng)到狀態(tài)S2。僅使用(1)中所描述的檢測(cè)重復(fù)的方法,可生成ID列表{1,2,3,4,5,3,4,5,3,4,5,3,4,5,6,7}。ID列表中ID 3、4、5的序列的任意重復(fù)數(shù)都能夠出現(xiàn)。使用方法(2),將具有循環(huán)結(jié)構(gòu)的{3,4,5}看作在其外側(cè)循環(huán)處的循環(huán)的一次反復(fù),并且表示為ID列表{1,2,3,4,5,6,7}。因而可適當(dāng)?shù)貙?duì)重復(fù)進(jìn)行計(jì)數(shù)。
圖9示出了在優(yōu)化之前圖8所示實(shí)例文檔的自動(dòng)機(jī)。在使用方法(2)對(duì)它進(jìn)行優(yōu)化之后,內(nèi)部是循環(huán)自動(dòng)機(jī),外部是擴(kuò)展自動(dòng)機(jī),如圖11所示。
圖12示出了另一個(gè)示例性實(shí)例文檔以證明可在另一種情況中完成相同操作。在這種情況下,元素C的最內(nèi)側(cè)循環(huán)的反復(fù)次數(shù)是固定的,但是元素B的循環(huán)的反復(fù)次數(shù)是任意的??赏ㄟ^(guò)使用以上所描述的方法來(lái)對(duì)重復(fù)進(jìn)行適當(dāng)?shù)赜?jì)數(shù)。結(jié)果,生成了圖13所示的自動(dòng)機(jī)。
(B)使用概要信息來(lái)優(yōu)化和預(yù)建立自動(dòng)機(jī)此處可用于優(yōu)化自動(dòng)機(jī)的概要信息是W3C中規(guī)定的XML概要。也可以采用諸如DTD、RELAX(XML的規(guī)則語(yǔ)言描述)或NG之類的其他概要語(yǔ)言。
圖14示出了優(yōu)化流程。首先,根據(jù)它們是否具有屬性(圖14左側(cè)部分所示)來(lái)對(duì)要處理的元素進(jìn)行分類,并且將它們進(jìn)一步分類成簡(jiǎn)單類型或復(fù)雜類型(如圖14右側(cè)部分所示)。術(shù)語(yǔ)“簡(jiǎn)單類型元素”指是簡(jiǎn)單內(nèi)容模型并且沒(méi)有屬性的元素。簡(jiǎn)單內(nèi)容模型只接受文本節(jié)點(diǎn)作為其子元素。其他元素(是具有屬性的簡(jiǎn)單內(nèi)容模型或其他內(nèi)容模型)被定義為復(fù)雜類型。存在其中混合了文本節(jié)點(diǎn)和子元素的混合內(nèi)容,本文將不對(duì)其進(jìn)行考慮。
下面描述用于對(duì)這些類型中的每個(gè)類型進(jìn)行優(yōu)化的方法。
(B-1)優(yōu)化簡(jiǎn)單類型元素(1)具有固定值的簡(jiǎn)單內(nèi)容元素如果在“xsdelement”中指定了“固定”屬性,則通過(guò)使用此屬性來(lái)確定簡(jiǎn)單內(nèi)容元素。
例子)XML概要<xsdelement name=″name″type=″xsdstring″fixed″IBM/>
XML實(shí)例<name>IBM</name>
如果沒(méi)有概要信息,則將每個(gè)″<name>″、″IBM″、″</name>″定義為一個(gè)狀態(tài),并且將生成圖15所示的三個(gè)狀態(tài)序列。通過(guò)使用以上所述的概要信息,可以將這三個(gè)狀態(tài)合并成圖16所示的一個(gè)狀態(tài)。以這種方式,可通過(guò)使用概要信息來(lái)合并狀態(tài),從而提高了處理速度。
(2)為其指定候選值的元素如果指定了概要的候選值或元素之間的候選值,則可預(yù)先將該信息用于創(chuàng)建它們的狀態(tài)轉(zhuǎn)變(自動(dòng)機(jī)預(yù)建立)。
(B-2)復(fù)雜類型元素的優(yōu)化(1)后跟固定元素的元素如果指定了XML概要中的″xsdsequence″,假定minOccurs不為零,則元素后始終跟有固定元素?!錢(qián)sdsequence″是定義了元素的有序組的合成器。使用此信息,可以將兩個(gè)不同的狀態(tài)合并成單個(gè)狀態(tài)。
例如,考慮使用圖17中所示的XML概要的下列XML實(shí)例。
XML實(shí)例<X><A>1</A><B>2</B><C>3</C></X>
上面給出的XML實(shí)例通常具有下列11種狀態(tài)轉(zhuǎn)變(″<X>″,″<A>″,1,″</A>″,″<B>″,2,″</B>″,″<C>″,3,″</C>″,″</X>″)。使用概要信息,狀態(tài)轉(zhuǎn)變數(shù)可減少到7個(gè),為″<X><A>″,1,″</A><B>″,2,″</B><C>″,3″</C></X>″。
(2)后跟固定候選元素之一的元素如果在″X(qián)sdchoice″中指定了候選元素,則會(huì)預(yù)先知道跟隨該元素的候選元素。此信息可用于創(chuàng)建狀態(tài)轉(zhuǎn)變,因而可降低創(chuàng)建狀態(tài)轉(zhuǎn)變的成本?!錢(qián)sdchoice″是定義一組排他元素(只可以選擇某一元素)的一個(gè)合成器或多個(gè)合成器。″X(qián)sdchoice″可以指定有maxOccurs=unbound或maxOccurs的有限發(fā)生次數(shù)。
(3)不以特定順序描述元素組的合成器″X(qián)sdall″用于描述出現(xiàn)零次或以任何順序出現(xiàn)一次的一組元素。圖18顯示了這樣的例子。
此概要表示A、B和C中的每一個(gè)均不以特定順序出現(xiàn)了一次(缺省是minOccur=1)。在這種情況下,從減少狀態(tài)數(shù)的角度,可以預(yù)先建立<A>、<B>和<C>的所有可能組合(例如,由一個(gè)狀態(tài)來(lái)表示<A/><B/><C/>)。如果考慮到自動(dòng)機(jī)的大小,則可去除在執(zhí)行后的給定時(shí)間段或更長(zhǎng)時(shí)間后未使用的節(jié)點(diǎn)。
(4)重復(fù)元素如果為maxOccurs指定了″unbound″,則知道元素出現(xiàn)了各種次數(shù),因此(有把握地)創(chuàng)建重復(fù)轉(zhuǎn)變。
(B-3)具有屬性的元素(1)具有固定屬性的元素如果在概要中指定了固定屬性值或元素之間的固定值,則該信息可用于將狀態(tài)與在前或在后的狀態(tài)進(jìn)行合并。如果在xsdattribute中指定了“固定”屬性,則屬性值是固定的并且必須使用指定的相同值。下面顯示了示例性概要和XML實(shí)例。
XML概要<xsdattribute name=″year″type=″xsddate″fixed=″2004″/>
XML實(shí)例<item year=″2004″>
(2)具有指定候選屬性的元素候選值可用于預(yù)先建立狀態(tài)轉(zhuǎn)變。在以下XML概要中,定義了僅將“red”、“blue”和“green”作為id屬性值出現(xiàn)。此信息可用于預(yù)先創(chuàng)建狀態(tài)轉(zhuǎn)變。圖19顯示了一個(gè)示例性XML概要。
(C)處理空白XML允許使用任意數(shù)目的空白。迄今為止的優(yōu)化方法的描述中使用不包括空白的例子。然而,XML對(duì)出現(xiàn)空白字符的限制很寬松。元素之間可出現(xiàn)任意數(shù)目的空白,并且在元素名中可出現(xiàn)空白。本發(fā)明使用關(guān)于實(shí)例文檔(A)的統(tǒng)計(jì)信息來(lái)解決空白的變化。
圖20示出了由于空白引起的狀態(tài)轉(zhuǎn)變的例子。由于空白所引起的狀態(tài)轉(zhuǎn)變與由于其他元素所引起的狀態(tài)轉(zhuǎn)變相同創(chuàng)建在ID=2和ID=2’的狀態(tài)轉(zhuǎn)變中時(shí)的循環(huán)狀態(tài)轉(zhuǎn)變。ID=2的狀態(tài)轉(zhuǎn)變是其中在<A>和<B>中間出現(xiàn)三個(gè)空白(<A>□□□<B>)的情況;ID=2’的狀態(tài)轉(zhuǎn)變是其中在<A>和<B>中間出現(xiàn)五個(gè)空白(<A>□□□□□<B>)的情況。通過(guò)使用統(tǒng)計(jì)信息(A)可以發(fā)現(xiàn)哪個(gè)轉(zhuǎn)變?cè)诮y(tǒng)計(jì)上更經(jīng)常發(fā)生。因而,可以標(biāo)識(shí)空白次數(shù)的模式并且所述空白可以如上所述與其他狀態(tài)轉(zhuǎn)變進(jìn)行合并。
圖21和22示出了本發(fā)明的實(shí)施例的結(jié)果。圖21和22示出了對(duì)實(shí)例執(zhí)行的實(shí)驗(yàn)結(jié)果,在所述實(shí)例中,根據(jù)來(lái)自IBM的現(xiàn)有XML解析器產(chǎn)品A來(lái)實(shí)現(xiàn)本發(fā)明的方法。XML解析器產(chǎn)品A具有這樣的體系結(jié)構(gòu)其中將概要轉(zhuǎn)換成中間表示,并且在虛擬機(jī)上執(zhí)行該中間表示以驗(yàn)證概要。在此實(shí)驗(yàn)中,通過(guò)使用下一個(gè)要出現(xiàn)的元素由ReadOne指令唯一確定的事實(shí)來(lái)執(zhí)行此處提出的自動(dòng)機(jī)優(yōu)化,所述指令是處理″xsdsequence″的指令。使用以下實(shí)驗(yàn)環(huán)境及XML概要文件和XML實(shí)例文件。
<實(shí)現(xiàn)環(huán)境>
-ThinkPadT43 2668-72J(PentiumM760,2.0GHz,1GB RAM)-WindowsXP Professional-JavaVMSun JVM 1.42-比較解析器1)Deltarser其中實(shí)現(xiàn)專利文獻(xiàn)1中描述的發(fā)明的XML解析器2)概要-感知(Schema-aware)Deltarser其中應(yīng)用了本發(fā)明的方法的Deltarser-比較方法1)在10,000次預(yù)熱之后,執(zhí)行10,000次處理并計(jì)算平均時(shí)間。
2)執(zhí)行所有文本元素(包括相同文本)的部分處理。
-測(cè)試文檔1)圖21所示的XML概要文件2)圖22所示的實(shí)例文檔<實(shí)驗(yàn)結(jié)果>
使用各種大小的XML實(shí)例來(lái)測(cè)量本發(fā)明(概要-感知Deltarser)的效果。圖23和24顯示了實(shí)驗(yàn)結(jié)果。在圖23和24中,XML實(shí)例的文件名(xxx.xml)指示文檔大小(字節(jié))。測(cè)量的處理時(shí)間以毫秒表示。
如可從圖23和24中看到的,所有文檔的處理時(shí)間都提高了13-30%。雖然僅對(duì)實(shí)驗(yàn)中的xsd序列的優(yōu)化執(zhí)行了測(cè)量,但是從實(shí)驗(yàn)中顯而易見(jiàn)的是,通過(guò)使用概要信息來(lái)減少狀態(tài)轉(zhuǎn)變數(shù),在其他優(yōu)化情況中可以提高處理速度。因?yàn)樵搶?shí)驗(yàn)還顯示可通過(guò)合并狀態(tài)轉(zhuǎn)變來(lái)提高處理速度,所以使用具有關(guān)于實(shí)例文檔的統(tǒng)計(jì)信息的優(yōu)化的方法具有提高處理速度的有利效果。
本發(fā)明可應(yīng)用于要進(jìn)行XML分析的為其提供了關(guān)于實(shí)例文檔的統(tǒng)計(jì)信息和概要信息的任何應(yīng)用程序。例如,本發(fā)明可用于特定的XML標(biāo)記語(yǔ)言處理系統(tǒng)或處理Web服務(wù)的中間件。
此處未顯示使用統(tǒng)計(jì)信息的自動(dòng)機(jī)的優(yōu)化效果。然而,可獲得與使用概要信息的方法的效果相等或比它更好的效果。這是因?yàn)橥ㄟ^(guò)在運(yùn)行時(shí)期間在自動(dòng)機(jī)中反映文檔的模式,在概要信息中所反映的信息以及在概要信息中沒(méi)有反映的信息都可以用于優(yōu)化自動(dòng)機(jī)。通過(guò)實(shí)例文檔的統(tǒng)計(jì)處理,可獲得未包括在概要信息中的用于合并狀態(tài)的大量信息。然而,應(yīng)當(dāng)指出,使用統(tǒng)計(jì)信息的方法需要多次嘗試以獲得適當(dāng)?shù)慕y(tǒng)計(jì)信息,這需要額外的時(shí)間量。
雖然根據(jù)實(shí)施例和實(shí)例描述了本發(fā)明,但是本發(fā)明的技術(shù)范圍不限于根據(jù)所述實(shí)施例描述的范圍。可對(duì)所述實(shí)施例做出各種修改和改進(jìn)。從權(quán)利要求顯而易見(jiàn)的是,對(duì)其做出修改和改進(jìn)的實(shí)施例也包括在本發(fā)明的技術(shù)范圍內(nèi)。
描述為本發(fā)明實(shí)施例的結(jié)構(gòu)化文檔處理裝置和結(jié)構(gòu)化文檔處理方法可以由使計(jì)算機(jī)或計(jì)算機(jī)上的系統(tǒng)執(zhí)行所述裝置和方法的功能的程序來(lái)實(shí)現(xiàn)。其上存儲(chǔ)所述程序的計(jì)算機(jī)可讀記錄介質(zhì)可以是電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備)或是信號(hào)承載介質(zhì)。計(jì)算機(jī)可讀記錄介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲(chǔ)設(shè)備及磁帶??梢苿?dòng)計(jì)算機(jī)可讀記錄介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲(chǔ)設(shè)備、磁帶、可移動(dòng)計(jì)算機(jī)盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、硬磁盤(pán)以及光盤(pán)。當(dāng)前可用的光盤(pán)的例子包括光盤(pán)只讀存儲(chǔ)器(CD-ROM)、光盤(pán)讀/寫(xiě)(CD-R/W)以及DVD。
權(quán)利要求
1.一種執(zhí)行電子數(shù)據(jù)形式的結(jié)構(gòu)化文檔的句法解析的結(jié)構(gòu)化文檔處理裝置,所述裝置包括自動(dòng)機(jī)生成單元,其生成多個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)變序列,所述多個(gè)狀態(tài)允許將結(jié)構(gòu)化文檔分段成多個(gè)節(jié)點(diǎn);實(shí)例文檔分析單元,其通過(guò)使用與是所述結(jié)構(gòu)化文檔的實(shí)體的實(shí)例文檔有關(guān)的統(tǒng)計(jì)信息,將狀態(tài)轉(zhuǎn)變合并到由所述自動(dòng)機(jī)生成單元生成的所述狀態(tài)轉(zhuǎn)變序列中,并且通過(guò)使用所述統(tǒng)計(jì)信息來(lái)統(tǒng)計(jì)地獲得所述狀態(tài)轉(zhuǎn)變中重復(fù)元素出現(xiàn)次數(shù)的模式;概要信息分析單元,其通過(guò)使用定義了與所述結(jié)構(gòu)化文檔有關(guān)的信息的結(jié)構(gòu)和格式的概要信息,將所述狀態(tài)轉(zhuǎn)變合并到由所述自動(dòng)機(jī)生成單元生成的所述狀態(tài)轉(zhuǎn)變序列中;以及自動(dòng)機(jī)優(yōu)化單元,其相互地優(yōu)化由所述實(shí)例文檔分析單元和所述概要信息分析單元所合并的自動(dòng)機(jī)。
2.根據(jù)權(quán)利要求1的結(jié)構(gòu)化文檔處理裝置,其中所述結(jié)構(gòu)化文檔是XML文檔。
3.根據(jù)權(quán)利要求1的結(jié)構(gòu)化文檔處理裝置,其中所述允許分段的多個(gè)狀態(tài)由SAX事件來(lái)定義。
4.根據(jù)權(quán)利要求1的結(jié)構(gòu)化文檔處理裝置,還包括連續(xù)狀態(tài)轉(zhuǎn)變計(jì)數(shù)單元,其為所述實(shí)例文檔分析單元中所述狀態(tài)轉(zhuǎn)變合并內(nèi)的每個(gè)狀態(tài)轉(zhuǎn)變指定ID,以ID列表的形式存儲(chǔ)連續(xù)匹配狀態(tài)轉(zhuǎn)變,以及通過(guò)使用所述ID列表來(lái)對(duì)所述連續(xù)匹配狀態(tài)轉(zhuǎn)變的出現(xiàn)計(jì)數(shù)。
5.根據(jù)權(quán)利要求1的結(jié)構(gòu)化文檔處理裝置,其中即使由所述實(shí)例文檔分析單元檢測(cè)的重復(fù)元素是嵌套的,所述自動(dòng)機(jī)優(yōu)化單元仍對(duì)所述重復(fù)元素進(jìn)行優(yōu)化。
6.根據(jù)權(quán)利要求1的結(jié)構(gòu)化文檔處理裝置,其中所述實(shí)例文檔分析單元通過(guò)使用所述統(tǒng)計(jì)信息來(lái)確定所述結(jié)構(gòu)化文檔中的元素間出現(xiàn)的任意數(shù)目空白字符的模式。
7.一種用于執(zhí)行電子數(shù)據(jù)形式的結(jié)構(gòu)化文檔的句法解析的結(jié)構(gòu)化文檔處理方法,所述方法包括生成允許將結(jié)構(gòu)化文檔分段成多個(gè)節(jié)點(diǎn)的多個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)變序列;通過(guò)使用與是所述結(jié)構(gòu)化文檔的實(shí)體的實(shí)例文檔有關(guān)的統(tǒng)計(jì)信息,將狀態(tài)轉(zhuǎn)變合并到在所述自動(dòng)機(jī)生成處生成的所述狀態(tài)轉(zhuǎn)變序列中,并且通過(guò)使用所述統(tǒng)計(jì)信息來(lái)統(tǒng)計(jì)地獲得所述狀態(tài)轉(zhuǎn)變中重復(fù)元素出現(xiàn)次數(shù)的模式;通過(guò)使用定義了與所述結(jié)構(gòu)化文檔有關(guān)的信息的結(jié)構(gòu)和格式的概要信息,將所述狀態(tài)轉(zhuǎn)變合并到在所述自動(dòng)機(jī)生成處生成的所述狀態(tài)轉(zhuǎn)變序列中;以及相互地優(yōu)化在所述實(shí)例文檔分析和所述概要信息分析處合并的自動(dòng)機(jī)。
8.根據(jù)權(quán)利要求7的結(jié)構(gòu)化文檔處理方法,其中所述結(jié)構(gòu)化文檔是XML文檔。
9.根據(jù)權(quán)利要求7的結(jié)構(gòu)化文檔處理方法,其中所述允許分段的多個(gè)狀態(tài)由SAX事件來(lái)定義。
10.根據(jù)權(quán)利要求7的結(jié)構(gòu)化文檔處理方法,還包括在所述統(tǒng)計(jì)地獲得處為所述多個(gè)狀態(tài)轉(zhuǎn)變的合并內(nèi)的每個(gè)狀態(tài)轉(zhuǎn)變指定ID,以ID列表的形式存儲(chǔ)連續(xù)匹配狀態(tài)轉(zhuǎn)變,以及通過(guò)使用所述ID列表來(lái)對(duì)所述連續(xù)匹配狀態(tài)轉(zhuǎn)變的出現(xiàn)計(jì)數(shù)。
11.根據(jù)權(quán)利要求7的結(jié)構(gòu)化文檔處理方法,其中即使重復(fù)元素是嵌套的,所述自動(dòng)機(jī)優(yōu)化仍對(duì)所述重復(fù)元素進(jìn)行優(yōu)化。
12.根據(jù)權(quán)利要求7的結(jié)構(gòu)化文檔處理方法,其中通過(guò)在所述統(tǒng)計(jì)地獲得處使用所述統(tǒng)計(jì)信息來(lái)確定所述結(jié)構(gòu)化文檔中的元素間出現(xiàn)的任意數(shù)目空白字符的模式。
全文摘要
本發(fā)明的目標(biāo)是提供一種能夠使用諸如XML解析器之類的解析器來(lái)快速解析數(shù)字化的結(jié)構(gòu)化文檔的句法解析裝置和方法。與實(shí)例文檔和概要信息有關(guān)的統(tǒng)計(jì)信息被用于合并允許對(duì)結(jié)構(gòu)化文檔分段的多個(gè)狀態(tài)轉(zhuǎn)變,由此生成優(yōu)化的自動(dòng)機(jī)。在合并狀態(tài)轉(zhuǎn)變中,以ID列表的形式保存連續(xù)匹配狀態(tài)轉(zhuǎn)變,所述ID列表然后用于對(duì)連續(xù)狀態(tài)轉(zhuǎn)變數(shù)進(jìn)行計(jì)數(shù)。此外,統(tǒng)計(jì)地獲得包括嵌套元素的重復(fù)元素出現(xiàn)次數(shù)的模式。通過(guò)使用統(tǒng)計(jì)方法來(lái)解決XML中空白的變化。概要信息用于預(yù)先建立自動(dòng)機(jī),由此降低所述句法解析裝置的初始開(kāi)銷。
文檔編號(hào)G06F17/30GK1991837SQ20061016470
公開(kāi)日2007年7月4日 申請(qǐng)日期2006年11月14日 優(yōu)先權(quán)日2005年12月27日
發(fā)明者鈴村豐太郎, 立堀道昭, 浦本直彥 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司