基于數(shù)字電視的嵌入式服務(wù)器的研究與實(shí)現(xiàn)_第1頁(yè)
基于數(shù)字電視的嵌入式服務(wù)器的研究與實(shí)現(xiàn)_第2頁(yè)
基于數(shù)字電視的嵌入式服務(wù)器的研究與實(shí)現(xiàn)_第3頁(yè)
基于數(shù)字電視的嵌入式服務(wù)器的研究與實(shí)現(xiàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于數(shù)字電視的嵌入式服務(wù)器的研究與實(shí)現(xiàn)

1嵌入式域名技術(shù)的發(fā)展隨著計(jì)算機(jī)、通信技術(shù)和消費(fèi)電子技術(shù)的快速發(fā)展,以及互聯(lián)網(wǎng)應(yīng)用的繁榮,數(shù)字多媒體圖像和信息設(shè)備如計(jì)算機(jī)網(wǎng)絡(luò)、pda等的發(fā)展趨勢(shì)日益增多。計(jì)算機(jī)的發(fā)展呈現(xiàn)出一種微型化、智能化和網(wǎng)絡(luò)化的趨勢(shì)。嵌入式系統(tǒng)已廣泛應(yīng)用于消費(fèi)電子和通信領(lǐng)域。在嵌入式系統(tǒng)中,嵌入式瀏覽器將成為最主要的應(yīng)用軟件,甚至有可能是唯一的直接支持的應(yīng)用軟件。目前,國(guó)內(nèi)外的嵌入式瀏覽器產(chǎn)品可謂是高手云集,國(guó)外主要有SpyglassDeviceMosaic、PlanetWeb、TeknemaBrowser、AccessNetFront、EBSNetMicrobrowser、EnReacheBrowser、LightofAdamas、ICEBrowser、EspialEscape、WindowsCE等;國(guó)內(nèi)主要有中科院的CASS、茁壯公司的iPanel等。1而在眾多的信息電器和便攜式網(wǎng)絡(luò)終端中,數(shù)字電視機(jī)頂盒可以說(shuō)是最能實(shí)現(xiàn)嵌入式瀏覽器的功用,在我國(guó),從模擬電視到數(shù)字電視的過(guò)渡將是一個(gè)長(zhǎng)期的過(guò)程,為了滿足人們?nèi)找嬖鲩L(zhǎng)的對(duì)網(wǎng)絡(luò)信息的需求,研究基于數(shù)字電視機(jī)頂盒的嵌入式瀏覽器的實(shí)現(xiàn)與應(yīng)用具有重要的意義。HTML超文本標(biāo)記語(yǔ)言是網(wǎng)絡(luò)世界進(jìn)行信息交換的最主要的語(yǔ)言之一,而對(duì)HTML語(yǔ)言的解析是瀏覽器中的核心技術(shù),解析的好壞關(guān)系到整個(gè)瀏覽器的性能。本文即從這點(diǎn)出發(fā),介紹并探討HTML標(biāo)記語(yǔ)言解析的關(guān)鍵技術(shù)的算法,以及其在數(shù)字電視機(jī)頂盒中的實(shí)現(xiàn);另外還介紹說(shuō)明CSS層疊樣式表與HTML的結(jié)合解析實(shí)現(xiàn)問(wèn)題。2系統(tǒng)的總體結(jié)構(gòu)嵌入式瀏覽器還沒(méi)有一個(gè)準(zhǔn)確、嚴(yán)格的定義,但從其可以完成的功能來(lái)看,可以從兩個(gè)方面進(jìn)行描述。第一,它必須是一個(gè)網(wǎng)絡(luò)信息瀏覽器,必須支持HTTP或者WAP等其它傳輸協(xié)議、支持一種或幾種標(biāo)記語(yǔ)言,如HTML、CHTML、WML或擴(kuò)展XML,可以完成網(wǎng)頁(yè)的瀏覽功能;第二,這個(gè)瀏覽器必須適合在非PC的嵌入式信息設(shè)備中存在、運(yùn)行并完整實(shí)現(xiàn)通訊傳輸協(xié)議、標(biāo)記語(yǔ)言所規(guī)定的功能,必須能夠根據(jù)嵌入式設(shè)備的多樣性需要而方便地進(jìn)行裁減和修改,同時(shí)滿足信息設(shè)備使用者對(duì)獲取文字、圖像、聲音、視頻等信息地要求。本文中的瀏覽器的總體結(jié)構(gòu)框圖如圖1所示,傳輸模塊:傳輸模塊可以看作是一個(gè)相對(duì)較為獨(dú)立的模塊,其主要作用就是采用基于對(duì)象輪播技術(shù)的數(shù)據(jù)視頻廣播傳輸協(xié)議向數(shù)據(jù)廣播前端申請(qǐng)相應(yīng)的TS網(wǎng)頁(yè)數(shù)據(jù)流,該模塊在兩種情況下可能會(huì)被觸發(fā)運(yùn)行,一是來(lái)自人機(jī)交互模塊的消息,當(dāng)用戶用遙控按下一個(gè)新的鏈接焦點(diǎn),則人機(jī)交互模塊將會(huì)調(diào)用傳輸模塊;二是來(lái)自解析模塊,當(dāng)解析模塊解析得到如<img>等標(biāo)記中有圖片地址時(shí),也可能調(diào)用傳輸模塊從指定的地址取得數(shù)據(jù)。緩存管理模塊:負(fù)責(zé)網(wǎng)頁(yè)、圖像數(shù)據(jù)保存、淘汰操作,用戶和解析摸塊的每次請(qǐng)求,由緩存管理模塊根據(jù)緩存數(shù)據(jù)決定是否調(diào)用傳輸模塊。解析模塊:當(dāng)傳輸模塊下載完畢一頁(yè)HTML網(wǎng)頁(yè)后,解析模塊將被調(diào)用,主要負(fù)責(zé)HTML文本的解析,生成顯示對(duì)象鏈表,讀到<script>標(biāo)記則掃描該頁(yè)HTML文檔,建立document對(duì)象數(shù)據(jù)結(jié)構(gòu)并調(diào)用JavaScript解析器,讀到<style>標(biāo)記調(diào)用CSS解析器。顯示模塊:負(fù)責(zé)依據(jù)解析模塊傳來(lái)的顯示對(duì)象,調(diào)用GUI進(jìn)行顯示排版,以及處理用戶與頁(yè)面的交互。人機(jī)交互模塊:是指響應(yīng)用戶的遙控操作,當(dāng)點(diǎn)擊新的頁(yè)面時(shí)則調(diào)用傳輸模塊,或是退出瀏覽器時(shí)則關(guān)閉瀏覽器線程。3終止標(biāo)記的作用HTML語(yǔ)言是一種簡(jiǎn)單的標(biāo)記語(yǔ)言,它是由標(biāo)記和屬性構(gòu)成,每個(gè)標(biāo)記由小于號(hào)“<”和大于號(hào)“>”所圍住,如<table>。大部分標(biāo)記有起始標(biāo)記和結(jié)束標(biāo)記,在起始標(biāo)記的標(biāo)記名前加上符號(hào)“/”便是結(jié)束標(biāo)記,如</table>。在起始標(biāo)記與結(jié)束標(biāo)記之間的內(nèi)容即為該標(biāo)記的作用范圍。HTML超文本標(biāo)記語(yǔ)言標(biāo)準(zhǔn)到目前共經(jīng)歷了HTML2.0,HTML3.0,HTML3.2,HTML4.0,HTML4.01五個(gè)版本,自于1999年12月推出HTML4.01后,近六年沒(méi)有變化,可見該語(yǔ)言已趨于成熟可靠。瀏覽器最重要的功能是按HTML語(yǔ)言的規(guī)范將HTML文檔顯示出來(lái),因此負(fù)責(zé)解析HTML文檔,生成中間結(jié)果的解析模塊是瀏覽器的核心模塊,而解析器的主要組成部分是對(duì)HTML的解析。HTML文本的解析過(guò)程可分為詞法分析、語(yǔ)法分析、語(yǔ)義分析這三個(gè)步驟。3.1詞法分析HTML詞法分析是瀏覽器設(shè)計(jì)的基礎(chǔ)環(huán)節(jié)之一,詞法分析是為了從字符流中識(shí)別出有意義的符號(hào),對(duì)于HTML標(biāo)記語(yǔ)言來(lái)說(shuō),這些符號(hào)包括標(biāo)記名、文本、注釋等;它的效率與準(zhǔn)確性、容錯(cuò)性也關(guān)系到整個(gè)瀏覽器設(shè)計(jì)的質(zhì)量。本文中的解析器的詞法分析的設(shè)計(jì)與實(shí)現(xiàn)可用5種狀態(tài)有限狀態(tài)自動(dòng)機(jī)(FiniteStateAutomation)來(lái)描述:(1)初始狀態(tài),當(dāng)詞法分析器成功地分解出一個(gè)有意義的符號(hào)后FSM將恢復(fù)到該狀態(tài);(2)文本狀態(tài),標(biāo)記與標(biāo)記之間的內(nèi)容;(3)標(biāo)記開始狀態(tài),當(dāng)讀到一個(gè)‘<’時(shí),并且不是<textarea>,<style>或<script>之后,</textarea>,</style>或</script>之前的內(nèi)容;(4)標(biāo)記符號(hào)狀態(tài);(5)注釋或代碼狀態(tài),在<!---->之中的內(nèi)容可能是注釋也可能是CSS或腳本代碼。詞法分析器的FSM中各個(gè)狀態(tài)之間轉(zhuǎn)化以及相應(yīng)的條件和動(dòng)作見圖2。詞法分析中還有一個(gè)非常關(guān)鍵的技術(shù)即標(biāo)記的識(shí)別算法,由于HTML4.01規(guī)范中定義的標(biāo)記有91個(gè),在解析過(guò)程中將頻繁對(duì)它們進(jìn)行查找,所以得找一種快速查找算法識(shí)別解析文本中的標(biāo)記,本文中的瀏覽器采用哈希表,建立一個(gè)沒(méi)有沖突的哈希表是比較困難的,本文設(shè)計(jì)的哈希函數(shù):其中,L是標(biāo)記名的長(zhǎng)度,g(x)為從字符到數(shù)字的轉(zhuǎn)換表,所得的哈希表的長(zhǎng)度為262。3.2添加數(shù)和函數(shù)傳統(tǒng)的語(yǔ)法分析技術(shù)很多,基本上分為自頂向下的分析技術(shù)和自底向上的分析技術(shù)。由HTML的語(yǔ)法規(guī)則,可以采用自頂向下的分析技術(shù)。當(dāng)詞法分析出一個(gè)標(biāo)記則調(diào)用相應(yīng)標(biāo)記的處理函數(shù),函數(shù)的調(diào)用采用Dillo瀏覽器中的方式,即建立一個(gè)靜態(tài)函數(shù)數(shù)組,通過(guò)對(duì)應(yīng)標(biāo)記的序號(hào)調(diào)用。一個(gè)完整的HTML4文檔必須包括3個(gè)部分:一個(gè)<html>元素定義文檔版本信息,一個(gè)用<head>定義各項(xiàng)聲明的文檔頭部和一個(gè)由<body>或者<frameset>定義的文檔主體部分。但考慮到瀏覽器的容錯(cuò)性,語(yǔ)法檢查都放寬了許多。由HTML的語(yǔ)法結(jié)構(gòu),大部分標(biāo)記有開始標(biāo)記和結(jié)束標(biāo)記,可以借助于堆棧來(lái)檢查HTML文檔的語(yǔ)法錯(cuò)誤,起始標(biāo)記入棧前,檢查其位置是否正確,結(jié)束標(biāo)記出棧前,檢查是否與棧頂標(biāo)記相匹配。3.3創(chuàng)建對(duì)象鏈表經(jīng)過(guò)HTML的語(yǔ)法分析后,根據(jù)標(biāo)記的含義創(chuàng)建相應(yīng)的顯示對(duì)象,并根據(jù)HTML文檔的標(biāo)記的嵌套關(guān)系建立對(duì)象鏈表,每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)如下:ElementType有TABLE_TYPE(表格),TEXT_TYPE(文本),IMAGE_TYPE(圖片),F(xiàn)ORM_TYPE(表單)等,對(duì)象類型的確定與顯示有緊密的聯(lián)系,本文中的瀏覽器由于顯示需要,共創(chuàng)建了37種對(duì)象類型。瀏覽器解析模塊的工作流程圖如圖3所示,3.4語(yǔ)法錯(cuò)誤及處理HTML語(yǔ)言是一種結(jié)構(gòu)比較松散的標(biāo)記語(yǔ)言,并且在HTML語(yǔ)言發(fā)展過(guò)程中兩大瀏覽器生產(chǎn)商網(wǎng)景和微軟互相拼殺,使瀏覽器功能日益龐大,對(duì)HTML語(yǔ)言的容錯(cuò)能力非常強(qiáng)。毫不夸張的說(shuō),無(wú)論多么不規(guī)范的HTML語(yǔ)言文檔,IE和NetScape都可以解析顯示。同時(shí)兩大瀏覽器廠商為了擊敗對(duì)手,競(jìng)相為HTML語(yǔ)言增加專有標(biāo)記,以突出自己的顯示效果。這樣就使網(wǎng)頁(yè)設(shè)計(jì)者養(yǎng)成了不好的編程習(xí)慣,只注重顯示效果并不關(guān)心語(yǔ)法。致使目前internet上存在著大量的不合規(guī)范的網(wǎng)頁(yè)。針對(duì)這種情況,瀏覽器必須采取有效的容錯(cuò)處理,才能使瀏覽器暢游于internet。主要的語(yǔ)法錯(cuò)誤主要有下面幾種:(1)非法包含,例如<a>和</a>之間包含一個(gè)表格,或是<td><tr></td>;(2)非法標(biāo)記,除了HTML規(guī)定的任何符號(hào),例如<tp>;(3)交叉嵌套,如<a><em></a></em>;(4)標(biāo)記不匹配,對(duì)于HTML規(guī)范中規(guī)定必須結(jié)束標(biāo)記符的元素類型,缺少結(jié)束標(biāo)記符,或是在文檔中前面沒(méi)有這個(gè)標(biāo)記,而在后面多余寫了這個(gè)標(biāo)記的結(jié)束標(biāo)記符。針對(duì)上述錯(cuò)誤我們采取了相應(yīng)的措施來(lái)容錯(cuò),(1)針對(duì)非法包含,如果該標(biāo)記的到來(lái)是非法的則跳過(guò),對(duì)其不予處理;(2)針對(duì)非法標(biāo)記,由于在標(biāo)記查找表沒(méi)有相應(yīng)的符號(hào)也就沒(méi)有相應(yīng)標(biāo)記的處理函數(shù),相當(dāng)于對(duì)該非法標(biāo)記采取了忽略的作用;(3)針對(duì)交叉嵌套,當(dāng)遇到一個(gè)結(jié)束標(biāo)記時(shí),查找棧中是否有該標(biāo)記,若有,則將其與其上的標(biāo)記全部出棧;(4)針對(duì)標(biāo)記不匹配,對(duì)多余的結(jié)束標(biāo)記,利用堆棧,查找棧內(nèi)的標(biāo)記是否有該標(biāo)記,若沒(méi)有則不予處理,對(duì)于應(yīng)該有結(jié)束標(biāo)記而沒(méi)寫結(jié)束標(biāo)記的,若下一個(gè)開始標(biāo)記的到來(lái)可以肯定前一個(gè)標(biāo)記必須得結(jié)束了,則將應(yīng)該結(jié)束而沒(méi)有結(jié)束的標(biāo)記從堆棧中出棧。4實(shí)現(xiàn)配方規(guī)則設(shè)計(jì)層疊樣式表CSS(CascadingStyleSheets)是W3C組織為了彌補(bǔ)HTML在樣式編排上的不足所制定的一套擴(kuò)展樣式標(biāo)準(zhǔn),其特點(diǎn)就是把網(wǎng)頁(yè)的外觀設(shè)定信息從網(wǎng)頁(yè)內(nèi)容中獨(dú)立出來(lái)。CSS規(guī)則可以放在文檔的頭部,標(biāo)記<style>與</style>之間,還可以放在各個(gè)標(biāo)記的屬性當(dāng)中,大部分標(biāo)記都有一個(gè)style的屬性,另外,外聯(lián)樣式表<link>更加靈活,多個(gè)HTML文檔可以共用一個(gè)樣式表。在嵌入式瀏覽器中實(shí)現(xiàn)CSS技術(shù)需要解決的問(wèn)題主要有兩個(gè)方面:(1)內(nèi)存優(yōu)化:由于嵌入式系統(tǒng)中內(nèi)存資源有限,所以需要優(yōu)化數(shù)據(jù)結(jié)構(gòu),減少對(duì)內(nèi)存的占用;(2)提高效率:因?yàn)镠TML文檔中的每一個(gè)標(biāo)記都要從樣式表規(guī)則中查找

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論