專利名稱:一種hsml dom加載器及快速加載hsml dom方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電視技術(shù)領(lǐng)域,具體涉及一種HSML DOM加載器及快速加載HSML DOM方法。
背景技術(shù):
數(shù)字電視互動(dòng)應(yīng)用頁(yè)面標(biāo)記語(yǔ)言(HSML)是在W3C定義的XHTML1. 0規(guī)范的基礎(chǔ) 上進(jìn)行的擴(kuò)展。XHTML全稱為可擴(kuò)展超文本標(biāo)記語(yǔ)言(Extensible HyperText Markup Language),它吸收了 XML (extensible Markup Language)結(jié)構(gòu)良好和可擴(kuò)展的特性,采用 XML重構(gòu)了 HTML4. 01,與HTML4. 01兼容。XHTML的文檔結(jié)構(gòu)與HTML文檔的結(jié)構(gòu)基本相同, 只是XHTML在語(yǔ)法要求上比HTML更加嚴(yán)格。DOM是文檔對(duì)象模型(Doucument Object Model)的簡(jiǎn)稱,它是一個(gè)跨平臺(tái)的、可 適應(yīng)不同程序語(yǔ)言的文件對(duì)象模型,它采取直觀且一致的方法,將HSML文檔進(jìn)行模型化處 理,提供了存取和更新文檔內(nèi)容、結(jié)構(gòu)和樣式的編程接口,DOM將整個(gè)頁(yè)面映射為一個(gè)由層 次節(jié)點(diǎn)組成的文件,有1級(jí)、2級(jí)、3級(jí)共三個(gè)級(jí)別。DOM是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片 斷的集合。這個(gè)層次結(jié)構(gòu)允許開發(fā)人員在樹中導(dǎo)航尋找特定信息。分析該結(jié)構(gòu)通常需要加 載整個(gè)文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。HSML的文檔結(jié)構(gòu)與HTML文檔的結(jié)構(gòu)類似,分析HSML文檔通常的方法是將其先加 載為DOM。HSML是在XHTML的基礎(chǔ)上擴(kuò)展的,對(duì)于語(yǔ)法要求十分嚴(yán)格,因此加載HSML的最 大的技術(shù)難點(diǎn)在于糾正一些語(yǔ)法錯(cuò)誤,例如缺少結(jié)束標(biāo)記、屬性名中出現(xiàn)大寫字母、節(jié)點(diǎn)出 現(xiàn)在錯(cuò)位的位置上等。
發(fā)明內(nèi)容
本發(fā)明將使用一種靈活快速的方式來(lái)加載HSML,它最大的好處是速度快并且可以 方便的擴(kuò)展糾錯(cuò)機(jī)制。本發(fā)明所提供的快速加載HSML DOM方法是在分析HSML的時(shí)候,預(yù) 先快速地將HSML加載為DOM的方法。相應(yīng)的,本發(fā)明實(shí)施例提供了一種HSML DOM加載器,包括數(shù)字電視互動(dòng)應(yīng)用頁(yè) 面標(biāo)記語(yǔ)言HSML前向遍歷器、HSML節(jié)點(diǎn)分析器、HSML錯(cuò)誤解析器、HSML文檔對(duì)象模型DOM 樹四個(gè)部件,其中HSML前向遍歷器,用于在建立HSML DOM加載器時(shí),將首先調(diào)用HSML DOM加載器中 的HSML前向遍歷器,用以遍歷并且返回HSML中的各個(gè)節(jié)點(diǎn);HSML節(jié)點(diǎn)分析器分為語(yǔ)法分析模塊和DOM節(jié)點(diǎn)生成模塊,在HSML前向遍歷器將返 回的HSML節(jié)點(diǎn)傳給HSML節(jié)點(diǎn)分析器中語(yǔ)法分析模塊后,語(yǔ)法分析器分析HSML前向遍歷器 返回的節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)指示HSML前向遍歷器的下一步操作,在發(fā)現(xiàn)節(jié)點(diǎn)有語(yǔ)法錯(cuò)誤則把 節(jié)點(diǎn)傳遞給HSML錯(cuò)誤糾正器進(jìn)行錯(cuò)誤糾正,若語(yǔ)法正確則直接生成DOM節(jié)點(diǎn);HSML錯(cuò)誤糾正器包括錯(cuò)誤分析模塊和錯(cuò)誤糾正模塊,用于在當(dāng)HSML節(jié)點(diǎn)分析器 檢測(cè)到語(yǔ)法錯(cuò)誤時(shí),HSML錯(cuò)誤糾正器首先調(diào)用錯(cuò)誤分析模塊查出具體語(yǔ)法錯(cuò)誤并傳遞給錯(cuò)誤糾正模塊,錯(cuò)誤糾正模塊再進(jìn)行具體的錯(cuò)誤糾正;HSML DOM樹,用于將HSML節(jié)點(diǎn)分析器不斷生成的DOM節(jié)點(diǎn)添加到HSML DOM樹中, HSML DOM樹作為最后的分析結(jié)果返回。所述HSML前向遍歷器使用指針技術(shù)來(lái)快速遍歷HSML字符串,并且逐步返回遍歷 的各個(gè)節(jié)點(diǎn)。所述錯(cuò)誤糾正模塊再進(jìn)行具體的錯(cuò)誤糾正包括當(dāng)檢測(cè)到某個(gè)節(jié)點(diǎn)屬性值為大寫 字母,則自動(dòng)糾正為小寫字母。相應(yīng)的,本發(fā)明實(shí)施例還提供了一種快速加載HSML DOM方法,包括應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器;HSML DOM加載器調(diào)用HSML前向遍歷器,并將HSML字符串傳遞給HSML前向遍歷 器;HSML前向遍歷器逐步遍歷HSML字符串,并將遍歷到的字符串傳遞給HSML字符分 析器;HSML DOM字符分析器首先調(diào)用語(yǔ)法分析模塊,檢查字符串是否存在語(yǔ)法錯(cuò)誤,在 HSML節(jié)點(diǎn)分析器分析字符串語(yǔ)法正確時(shí),則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn),并添加到DOM樹中;判斷HSML字符串是否都加載完畢,若判斷出HSML字符串加載完畢,則HSML DOM 加載器將生成的DOM樹返回給應(yīng)用程序。所述方法還包括HSML DOM字符分析器調(diào)用語(yǔ)法分析模塊,檢查字符串是否存在 語(yǔ)法錯(cuò)誤,在所述字符串存在語(yǔ)言錯(cuò)誤時(shí),對(duì)所述字符串進(jìn)行錯(cuò)誤糾正。所述對(duì)所述字符串進(jìn)行錯(cuò)誤糾正包括在所述字符串存在語(yǔ)言錯(cuò)誤時(shí),則調(diào)用HSML錯(cuò)誤糾正器;HSML錯(cuò)誤糾正器調(diào)用其錯(cuò)誤分析模塊,分析該節(jié)點(diǎn)存在何種語(yǔ)法錯(cuò)誤,并將分析 結(jié)果傳遞給HSML錯(cuò)誤糾正器中錯(cuò)誤糾正模塊;HSML錯(cuò)誤糾正器重錯(cuò)誤糾正模塊根據(jù)錯(cuò)誤分析器傳來(lái)的分析結(jié)果進(jìn)行相應(yīng)的錯(cuò) 誤糾正,糾正完畢后返回給HSML字符分析器。在對(duì)所述字符串中的所有語(yǔ)言錯(cuò)誤進(jìn)行糾正完畢之后,則將該節(jié)點(diǎn)生成為DOM節(jié) 點(diǎn),并添加到DOM樹中。所述方法還包括在判斷出HSML字符串未加載完畢時(shí),進(jìn)入應(yīng)用程序?qū)SML字符 串傳遞給HSML DOM加載器步驟中直到所有HSML字符串都加載完畢。本發(fā)明的優(yōu)點(diǎn)在于HSML錯(cuò)誤解析器可以自動(dòng)的糾正語(yǔ)法錯(cuò)誤以及擴(kuò)展糾錯(cuò)機(jī) 制,通過(guò)本發(fā)明實(shí)施例中的方法,能夠靈活快速的來(lái)加載HSML。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例中的HSML DOM加載器的邏輯結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例中的快速加載HSML DOM的方法流程圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其 它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種快速加載HSML DOM的方法,在建立的HSMLD0M加載器基礎(chǔ) 上,其實(shí)現(xiàn)過(guò)程如下應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器;HSML DOM加載器調(diào)用HSML前向遍歷器,并將HSML字符串傳遞給HSML前向遍歷 器;HSML前向遍歷器逐步遍歷HSML字符串,并將遍歷到的字符串傳遞給HSML字符分 析器;HSML DOM字符分析器首先調(diào)用語(yǔ)法分析模塊,檢查字符串是否存在語(yǔ)法錯(cuò)誤,在 HSML節(jié)點(diǎn)分析器分析字符串語(yǔ)法正確時(shí),則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn),并添加到DOM樹中;判斷HSML字符串是否都加載完畢,若判斷出HSML字符串加載完畢,則HSML DOM 加載器將生成的DOM樹返回給應(yīng)用程序?;谏鲜龇桨?,以下分別進(jìn)行詳細(xì)說(shuō)明。圖1為HSML DOM加載器的邏輯結(jié)構(gòu)示意圖,它包含HSML前向遍歷器、HSML節(jié)點(diǎn) 分析器、HSML錯(cuò)誤解析器、HSML DOM樹四個(gè)部件。HSML前向遍歷器當(dāng)建立HSML DOM加載器時(shí),將首先調(diào)用HSML DOM加載器中的 HSML前向遍歷器,用以遍歷并且返回HSML中的各個(gè)節(jié)點(diǎn)。需要說(shuō)明的是,這里的HSML前向 遍歷器使用指針技術(shù)來(lái)快速遍歷HSML字符串,并且逐步返回遍歷的各個(gè)節(jié)點(diǎn)。HSML節(jié)點(diǎn)分析器HSML節(jié)點(diǎn)分析器分為語(yǔ)法分析模塊和DOM節(jié)點(diǎn)生成模塊。HSML 前向遍歷器將返回的HSML節(jié)點(diǎn)傳給HSML節(jié)點(diǎn)分析器中語(yǔ)法分析模塊,語(yǔ)法分析器分析 HSML前向遍歷器返回的節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)指示HSML前向遍歷器的下一步操作,即發(fā)現(xiàn)節(jié)點(diǎn) 有語(yǔ)法錯(cuò)誤則把節(jié)點(diǎn)傳遞給HSML錯(cuò)誤糾正器進(jìn)行錯(cuò)誤糾正,若語(yǔ)法正確則直接生成DOM節(jié) 點(diǎn)οHSML錯(cuò)誤解析器HSML錯(cuò)誤糾正器分為錯(cuò)誤分析模塊和錯(cuò)誤糾正模塊。當(dāng)HSML節(jié) 點(diǎn)分析器檢測(cè)到語(yǔ)法錯(cuò)誤時(shí),便調(diào)用HSML錯(cuò)誤解析器,HSML錯(cuò)誤糾正器首先調(diào)用錯(cuò)誤分析 模塊查出具體語(yǔ)法錯(cuò)誤并傳遞給錯(cuò)誤糾正模塊,錯(cuò)誤糾正模塊再進(jìn)行具體的錯(cuò)誤糾正。比 如在檢測(cè)到某個(gè)節(jié)點(diǎn)屬性值為大寫字母時(shí),則自動(dòng)糾正為小寫字母(HSML中要求屬性值必 須為小寫字母)。HSML DOM樹HSML節(jié)點(diǎn)分析器將不斷生成DOM節(jié)點(diǎn),添加到HSMLD0M樹中,HSML DOM樹作為最后的分析結(jié)果返回。圖2是本發(fā)明實(shí)施例中的快速加載HSML DOM的方法流程圖,其流程具體包括如 下S201、建立 HSML DOM 加載器;S202、應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器;
S203、HSML DOM加載器調(diào)用HSML前向遍歷器,并將HSML字符串傳遞給它;S204、HSML前向遍歷器逐步遍歷HSML字符串,并將遍歷到的字符串傳遞給HSML字 符分析器;S205、HSML DOM字符分析器首先調(diào)用它的語(yǔ)法分析模塊,檢查字符串是否存在語(yǔ) 法錯(cuò)誤;如果存在語(yǔ)法錯(cuò)誤則調(diào)用HSML錯(cuò)誤糾正器,進(jìn)入到步驟S206,如果不存在語(yǔ)法錯(cuò) 誤則進(jìn)入到S208步驟中;S206、HSML錯(cuò)誤糾正器首先調(diào)用其錯(cuò)誤分析模塊,分析該節(jié)點(diǎn)存在何種語(yǔ)法錯(cuò)誤, 并將分析結(jié)果傳遞給HSML錯(cuò)誤糾正器中錯(cuò)誤糾正模塊;S207、HSML錯(cuò)誤糾正器重錯(cuò)誤糾正模塊根據(jù)錯(cuò)誤分析器傳來(lái)的分析結(jié)果進(jìn)行相應(yīng) 的錯(cuò)誤糾正,糾正完畢后返回給HSML字符分析器;需要說(shuō)明的是,在對(duì)錯(cuò)誤進(jìn)行糾正完畢之后則需要重新進(jìn)行語(yǔ)法判斷,只有當(dāng)所 有的語(yǔ)法錯(cuò)誤糾正完畢之后方可進(jìn)行步驟S208。S208、HSML節(jié)點(diǎn)分析器分析其語(yǔ)法正確時(shí),則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn);S209、將DOM節(jié)點(diǎn)添加到DOM樹中S210、檢查HSML字符串是都加載完畢,若加載完畢,則進(jìn)入到S211中,若加載為完 成,則需要進(jìn)入到步驟S202中重新加載未加載完畢的;S212、HSML DOM加載器將生成的DOM樹返回給應(yīng)用程序。綜上,通過(guò)實(shí)施本發(fā)明實(shí)施例,HSML錯(cuò)誤解析器可以自動(dòng)的糾正語(yǔ)法錯(cuò)誤以及擴(kuò) 展糾錯(cuò)機(jī)制,通過(guò)本發(fā)明實(shí)施例中的方法,能夠靈活快速的來(lái)加載HSML。需要說(shuō)明的是,上述裝置和系統(tǒng)內(nèi)的各單元之間的信息交互、執(zhí)行過(guò)程等內(nèi)容,由 于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處 不再贅述。本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可 以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存 儲(chǔ)介質(zhì)可以包括只讀存儲(chǔ)器(ROM,Read Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁盤或光盤等。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō) 明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù) 本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不 應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
一種HSML DOM加載器,其特征在于,包括數(shù)字電視互動(dòng)應(yīng)用頁(yè)面標(biāo)記語(yǔ)言HSML前向遍歷器、HSML節(jié)點(diǎn)分析器、HSML錯(cuò)誤解析器、HSML文檔對(duì)象模型DOM樹四個(gè)部件,其中HSML前向遍歷器,用于在建立HSML DOM加載器時(shí),將首先調(diào)用HSMLDOM加載器中的HSML前向遍歷器,用以遍歷并且返回HSML中的各個(gè)節(jié)點(diǎn);HSML節(jié)點(diǎn)分析器分為語(yǔ)法分析模塊和DOM節(jié)點(diǎn)生成模塊,在HSML前向遍歷器將返回的HSML節(jié)點(diǎn)傳給HSML節(jié)點(diǎn)分析器中語(yǔ)法分析模塊后,語(yǔ)法分析器分析HSML前向遍歷器返回的節(jié)點(diǎn),并根據(jù)節(jié)點(diǎn)指示HSML前向遍歷器的下一步操作,在發(fā)現(xiàn)節(jié)點(diǎn)有語(yǔ)法錯(cuò)誤則把節(jié)點(diǎn)傳遞給HSML錯(cuò)誤糾正器進(jìn)行錯(cuò)誤糾正,若語(yǔ)法正確則直接生成DOM節(jié)點(diǎn);HSML錯(cuò)誤糾正器包括錯(cuò)誤分析模塊和錯(cuò)誤糾正模塊,用于在當(dāng)HSML節(jié)點(diǎn)分析器檢測(cè)到語(yǔ)法錯(cuò)誤時(shí),HSML錯(cuò)誤糾正器首先調(diào)用錯(cuò)誤分析模塊查出具體語(yǔ)法錯(cuò)誤并傳遞給錯(cuò)誤糾正模塊,錯(cuò)誤糾正模塊再進(jìn)行具體的錯(cuò)誤糾正;HSML DOM樹,用于將HSML節(jié)點(diǎn)分析器不斷生成的DOM節(jié)點(diǎn)添加到HSML DOM樹中,HSML DOM樹作為最后的分析結(jié)果返回。
2.如權(quán)利要求1所述的HSMLDOM加載器,其特征在于,所述HSML前向遍歷器使用指針 技術(shù)來(lái)快速遍歷HSML字符串,并且逐步返回遍歷的各個(gè)節(jié)點(diǎn)。
3.如權(quán)利要求1所述的HSMLDOM加載器,其特征在于,所述錯(cuò)誤糾正模塊再進(jìn)行具體 的錯(cuò)誤糾正包括當(dāng)檢測(cè)到某個(gè)節(jié)點(diǎn)屬性值為大寫字母,則自動(dòng)糾正為小寫字母。
4.一種快速加載HSML DOM方法,其特征在于,包括 應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器;HSML DOM加載器調(diào)用HSML前向遍歷器,并將HSML字符串傳遞給HSML前向遍歷器; HSML前向遍歷器逐步遍歷HSML字符串,并將遍歷到的字符串傳遞給HSML字符分析器;HSML DOM字符分析器首先調(diào)用語(yǔ)法分析模塊,檢查字符串是否存在語(yǔ)法錯(cuò)誤,在HSML 節(jié)點(diǎn)分析器分析字符串語(yǔ)法正確時(shí),則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn),并添加到DOM樹中;判斷HSML字符串是否都加載完畢,若判斷出HSML字符串加載完畢,則HSML DOM加載 器將生成的DOM樹返回給應(yīng)用程序。
5.如權(quán)利要求4所述的方法,其特征在于,所述方法還包括HSMLDOM字符分析器調(diào)用 語(yǔ)法分析模塊,檢查字符串是否存在語(yǔ)法錯(cuò)誤,在所述字符串存在語(yǔ)言錯(cuò)誤時(shí),對(duì)所述字符 串進(jìn)行錯(cuò)誤糾正。
6.如權(quán)利要求5所述的方法,其特征在于,所述對(duì)所述字符串進(jìn)行錯(cuò)誤糾正包括 在所述字符串存在語(yǔ)言錯(cuò)誤時(shí),則調(diào)用HSML錯(cuò)誤糾正器;HSML錯(cuò)誤糾正器調(diào)用其錯(cuò)誤分析模塊,分析該節(jié)點(diǎn)存在何種語(yǔ)法錯(cuò)誤,并將分析結(jié)果 傳遞給HSML錯(cuò)誤糾正器中錯(cuò)誤糾正模塊;HSML錯(cuò)誤糾正器重錯(cuò)誤糾正模塊根據(jù)錯(cuò)誤分析器傳來(lái)的分析結(jié)果進(jìn)行相應(yīng)的錯(cuò)誤糾 正,糾正完畢后返回給HSML字符分析器。
7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括在對(duì)所述字符串中的所有 語(yǔ)言錯(cuò)誤進(jìn)行糾正完畢之后,則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn),并添加到DOM樹中。
8.如權(quán)利要求4至7任一項(xiàng)所述的方法,其特征在于,所述方法還包括在判斷出HSML 字符串未加載完畢時(shí),進(jìn)入應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器步驟中直到所有HSML字符串都加載完畢。
全文摘要
本發(fā)明實(shí)施例公開了一種快速加載HSML DOM方法,包括應(yīng)用程序?qū)SML字符串傳遞給HSML DOM加載器;HSML DOM加載器調(diào)用HSML前向遍歷器,并將HSML字符串傳遞給HSML前向遍歷器;HSML前向遍歷器逐步遍歷HSML字符串,并將遍歷到的字符串傳遞給HSML字符分析器;檢查字符串是否存在語(yǔ)法錯(cuò)誤,在HSML節(jié)點(diǎn)分析器分析字符串語(yǔ)法正確時(shí),則將該節(jié)點(diǎn)生成為DOM節(jié)點(diǎn),并添加到DOM樹中;判斷HSML字符串是否都加載完畢,若加載完畢,則HSML DOM加載器將生成的DOM樹返回給應(yīng)用程序。本發(fā)明實(shí)施例還公開了一種HSML DOM加載器,通過(guò)實(shí)施本發(fā)明,能夠靈活快速的來(lái)加載HSML。
文檔編號(hào)G06F17/30GK101923567SQ20101021509
公開日2010年12月22日 申請(qǐng)日期2010年6月30日 優(yōu)先權(quán)日2010年6月30日
發(fā)明者李彥, 李波, 羅笑南, 高懷恩 申請(qǐng)人:中山大學(xué);廣東廣聯(lián)電子科技有限公司