專利名稱:用于擴展標(biāo)記的方法和瀏覽器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及瀏覽器設(shè)計領(lǐng)域,更特別地,涉及使用插件框架來擴展所支持的標(biāo)記語言的瀏覽器。
背景技術(shù):
瀏覽器是一種基于標(biāo)記語言可聽見地或者可視地呈現(xiàn)文檔的程序。一種常用類型的瀏覽器是Web瀏覽器,其呈現(xiàn)基于超文本標(biāo)記語言(HTML)的文檔。HTML文檔通常經(jīng)由利用基于分組的協(xié)議的網(wǎng)絡(luò)由Web服務(wù)器向客戶端進行供應(yīng)。正如這里所用的,術(shù)語“基于HTML的文檔”通常用于指代任何基于由HTML衍生的標(biāo)記語言的文檔,例如可擴展標(biāo)記語言(XML)文檔、語音可擴展標(biāo)記語言(VoiceXML)文檔、WML文檔等。
常規(guī)Web瀏覽器可以利用Web插件,這些插件是擴展Web瀏覽器的小段代碼。常規(guī)的插件允許Web瀏覽器的用戶查看除了HTML之外的媒體類型和圖像。存在上百種插件可以使得Web用戶使用各種媒體格式,包括音頻和視頻。Web插件的常用示例包括用于支持MACROMEDIA FLASH對象的flash插件、JAVA插件、以及用于允許瀏覽器用戶在瀏覽器中查看并且處理基于PDF的文檔的便攜文檔格式(PDF)插件。
常規(guī)瀏覽器和瀏覽器插件無法擴展由標(biāo)記瀏覽器所支持的標(biāo)記語言。相反地,常規(guī)標(biāo)記插件基于標(biāo)準(zhǔn)HTML文檔和標(biāo)準(zhǔn)標(biāo)記語言約束。因此,插件設(shè)計者通常構(gòu)造復(fù)雜的腳本、JAVA小程序、或者使用<對象>標(biāo)記標(biāo)簽以試圖補償對于所需標(biāo)記語言擴展的缺乏。因為每個主流瀏覽器都具有瀏覽器特定的特性,設(shè)計者必須為不同的瀏覽器執(zhí)行徹底地腳本測試。對于插件來說通常首先要識別該插件在其中執(zhí)行的瀏覽器,然后根據(jù)正在使用的瀏覽器執(zhí)行不同的代碼。
開發(fā)者用來擴展標(biāo)記語言的另一種可選方案是要求用戶使用專用的瀏覽器,其專門被設(shè)計為包括標(biāo)記擴展。構(gòu)造專用瀏覽器是復(fù)雜并且昂貴的任務(wù),特別是當(dāng)所需特征或者語言擴展是用于一種相對較少、但卻重要的特征的時候。而且,對于專用瀏覽器的依賴性也極大地限制了產(chǎn)品的可銷售性。消費者想要使用那些他們所熟悉的Web瀏覽器,這些瀏覽器已經(jīng)定制了他們的偏好,并且消費者不情愿使用專用瀏覽器,特別是當(dāng)那種瀏覽器僅用于訪問來自單個內(nèi)容源的信息的時候。
需要一種機制用于擴展標(biāo)記語言,以便可以規(guī)定并且使用新的標(biāo)簽、語言特征等,而無需修改瀏覽器源代碼。這種機制將允許開發(fā)者更容易地構(gòu)造標(biāo)記應(yīng)用。例如,設(shè)計者可以使用所提出的機制擴展標(biāo)記語言,而不必依靠基于語言約束腳本的“辛苦工作”。
所提出的機制還可以被用于增強用戶的瀏覽體驗。例如,使用該機制以擴展瀏覽器的支持標(biāo)記語言將產(chǎn)生更嚴(yán)格遵守用戶感知的“標(biāo)準(zhǔn)”的綜合擴展。
舉例說明,當(dāng)在瀏覽器中查看PDF文檔時用戶常常是迷惑的,因為必須使用專用于“PDF”插件的按鈕和特征而不是標(biāo)準(zhǔn)的瀏覽器按鈕和特征。例如,瀏覽器的查找、復(fù)制、剪切和粘貼特征對于包含在使用標(biāo)準(zhǔn)PDF插件的瀏覽器之中的PDF文檔不再起作用。相反地,想要執(zhí)行諸如查找、復(fù)制、剪切和粘貼功能的用戶必須使用/選擇插件專用的按鈕和功能。以禁止用戶使用瀏覽器按鈕/功能的方式實現(xiàn)插件會導(dǎo)致用戶的困惑和挫敗感。沒有已知的方案允許開發(fā)者在運行時間中擴展瀏覽器的支持標(biāo)記語言。
發(fā)明內(nèi)容
這里公開了根據(jù)本發(fā)明安排的實施例的用于通過插件框架擴展瀏覽器標(biāo)記的系統(tǒng)和方法。更具體地,支持定義的標(biāo)記語言的瀏覽器可以加載一個或多個包含語言擴展的包。這些擴展可以代表對于現(xiàn)有瀏覽器功能或者新瀏覽器功能的修改。該加載的語言擴展可以被鏈接到瀏覽器,以便瀏覽器可以解釋使用該語言擴展的標(biāo)記。該語言擴展的鏈接可以以多種方式產(chǎn)生。語言擴展例如可以修改與由瀏覽器進行呈現(xiàn)的標(biāo)記相關(guān)的模式、文檔類型定義(DTD)、和/或文檔對象模型(DOM)。無論如何實現(xiàn)該鏈接,瀏覽器語言擴展都可以以一種標(biāo)準(zhǔn)化的、獨立于瀏覽器的方式實現(xiàn),這允許第三方提供商來構(gòu)建包括標(biāo)記語言擴展的包。用戶可以在他們選擇的瀏覽器中利用那些擴展包。
本發(fā)明可以根據(jù)與這里給出的材料一致的多種方面來實現(xiàn)。例如,本發(fā)明的一個方面可以包括一種用于擴展由瀏覽器支持的標(biāo)記的方法。該方法可以包括對表示以標(biāo)記語言寫成的信息的瀏覽器進行識別的步驟。可以對包括至少一個對該標(biāo)記語言的擴展的擴展器進行識別,其中該瀏覽器通常并不支持該擴展??梢约虞d該擴展器,使得將該瀏覽器所支持的該標(biāo)記語言擴展到包括該擴展。
本發(fā)明的另一方面,可以包括瀏覽器。瀏覽器可以包括用于表示以標(biāo)記語言寫成的信息的裝置。瀏覽器可以是Web瀏覽器、語音瀏覽器和/或多模式瀏覽器。插件框架的實現(xiàn)可以包括在該瀏覽器中。用于利用符合該插件框架的插件包的裝置也可以包括在該瀏覽器中。每個插件包可以擴展由瀏覽器所支持的標(biāo)記語言,而無需改變?yōu)g覽器的源代碼。
應(yīng)該注意到,本發(fā)明的各個方面可以被實現(xiàn)為一種用于控制計算設(shè)備以實現(xiàn)這里描述的功能的程序,或者一種用于使計算設(shè)備能夠執(zhí)行對應(yīng)于這里所公開的步驟的處理的程序。該程序可以通過將該程序存儲在磁盤、光盤、半導(dǎo)體存儲器、任何其它記錄介質(zhì)中來提供,或者還可以作為經(jīng)由載波傳送的數(shù)字編碼的信號來提供。所述程序可以是單個程序,或者可以被實現(xiàn)為多個子程序,每個子程序在單個計算設(shè)備之中進行交互,或者通過網(wǎng)絡(luò)空間以分布的方式進行交互。
這里詳述的方法還可以是至少部分地由服務(wù)代理和/或由服務(wù)代理響應(yīng)于服務(wù)請求所操縱的機器來執(zhí)行的方法。
附圖中示出了當(dāng)前優(yōu)選的實施例,但是應(yīng)該理解,本發(fā)明不限于所示的確定安排和手段。
圖1是示出一個系統(tǒng)的示意圖,該系統(tǒng)包括根據(jù)這里公開的本發(fā)明安排的實施例、被配置為具有擴展其支持的標(biāo)記語言能力的瀏覽器。
圖2是根據(jù)這里公開的本發(fā)明安排的實施例的、用于擴展瀏覽器標(biāo)記語言的方法的流程圖。
具體實施例方式
圖1是示出了系統(tǒng)100的示意圖,該系統(tǒng)包括根據(jù)這里公開的本發(fā)明安排的實施例、被配置為具有擴展其支持的標(biāo)記語言能力的瀏覽器。系統(tǒng)100可以包括網(wǎng)絡(luò)設(shè)備110、表示設(shè)備140以及瀏覽器120。
網(wǎng)絡(luò)設(shè)備110可以是經(jīng)由網(wǎng)絡(luò)114向瀏覽器120傳送標(biāo)記文檔112或者插件包130的任何設(shè)備。網(wǎng)絡(luò)設(shè)備110可以是物理網(wǎng)絡(luò)設(shè)備、一組分布的但功能上相關(guān)的設(shè)備、虛擬計算設(shè)備等。在一個實施例中,網(wǎng)絡(luò)設(shè)備110可以代表響應(yīng)于基于超文本傳輸協(xié)議(HTTP)的請求提供標(biāo)記文檔112的Web服務(wù)器。網(wǎng)絡(luò)設(shè)備110還可以包括文件傳輸協(xié)議(FTP)服務(wù)器,其向瀏覽器120傳送一個或多個插件包130。本發(fā)明不應(yīng)被解釋為限于任何特定數(shù)據(jù)傳送協(xié)議,并且這里可以設(shè)想使用任何基于傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)的協(xié)議或者另一傳輸協(xié)議。
可以從相同的網(wǎng)絡(luò)設(shè)備110傳送標(biāo)記文檔112和插件包130和/或可以通過不同的網(wǎng)絡(luò)設(shè)備110傳送標(biāo)記文檔112和插件包130。在一個實施例中,標(biāo)記文檔112可以與相關(guān)的插件包130幾乎同時地進行傳送。另一個實施例中,標(biāo)記文檔112可以在相關(guān)插件包130被傳送之前或者之后進行傳送。
例如,當(dāng)加載或?qū)嵗?instantiate)瀏覽器120的時候,與標(biāo)記文檔112相關(guān)聯(lián)的且為瀏覽器120呈現(xiàn)標(biāo)記文檔112所需要的插件包130可以被傳送到瀏覽器120并且被加載到其中。在另一個示例中,可以向瀏覽器120傳送標(biāo)記文檔112,瀏覽器120可以在呈現(xiàn)該標(biāo)記文檔112之前確定對于相關(guān)插件包130的需求,并且響應(yīng)于該確定的需求可以自動地或者交互地獲取插件包130。
標(biāo)記文檔112是指根據(jù)描述文檔結(jié)構(gòu)和外表的標(biāo)記語言寫成的電子文檔。標(biāo)記文檔112可以是包括標(biāo)記標(biāo)簽的文檔,其中標(biāo)記標(biāo)簽描述了指定標(biāo)記文檔112的內(nèi)容將如何被呈現(xiàn)的獨立于平臺的樣式。標(biāo)記文檔112可包括任何基于標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)的文檔,包括基于SGML的派生語言、子集、超集的文檔。例如,標(biāo)記文檔112可包括但不限于超文本標(biāo)記語言(HTML)標(biāo)記文檔、可擴展標(biāo)記語言(XML)標(biāo)記文檔、無線標(biāo)記語言(WML)文檔、語音可擴展標(biāo)記語言(VoiceXML)文檔,等等。
插件包130是指定義了標(biāo)記語言擴展的電子消息。插件包130可以定義瀏覽器120通常所不支持的標(biāo)記語言擴展。瀏覽器120可加載插件包130,提取關(guān)于該所指定擴展的必要信息,并且然后能夠根據(jù)該包130規(guī)范來處理標(biāo)記文檔112。包130的加載可以在運行時間動態(tài)地發(fā)生。包130可以符合為擴展瀏覽器所定義的標(biāo)準(zhǔn)化的框架。因此,可以以獨立于瀏覽器的方式來實現(xiàn)包130,假設(shè)將被使用的瀏覽器符合為該標(biāo)準(zhǔn)化框架所規(guī)定的標(biāo)準(zhǔn)。
插件包130可以包括一個或多個擴展器132。擴展器132是一組與標(biāo)記語言相關(guān)的機器可讀指令。擴展器132可以定義新的語言標(biāo)簽、屬性、特性或者對象,它們不屬于先前瀏覽器120支持的標(biāo)記語言的部分。擴展器132還可以定義針對瀏覽器120現(xiàn)有功能的代替功能或者功能實現(xiàn)。
擴展器132可以包括擴展模塊134、一組鏈接指令136和/或?qū)傩?38。擴展模塊134可包括用于處理所定義的標(biāo)記功能的代碼。鏈接指令136可指定瀏覽器120鏈接到擴展模塊134所采用的方式。鏈接指令136能夠指定一種或多種該擴展模塊134被鏈接到瀏覽器120所采用的方式。鏈接可包括例如文檔類型定義(DTD)鏈接、模式鏈接、文檔對象模型(DOM)鏈接和/或其它鏈接。
瀏覽器120可包括駐留于計算設(shè)備上的軟件應(yīng)用,該計算設(shè)備能夠基于標(biāo)記文檔112產(chǎn)生輸出142。輸出142可被表示于表示設(shè)備140上。瀏覽器120可包括用于對以標(biāo)記語言寫成的信息進行表示的裝置,其中該表示裝置可包括視覺和/或聽覺信息。
例如,瀏覽器120可以是Web瀏覽器,其在表示設(shè)備140上可視地表示標(biāo)記文檔112。瀏覽器120還可以是語音瀏覽器,其生成在表示設(shè)備140上進行表示的語音輸出142。
應(yīng)該理解的是,使用瀏覽器120以便基于標(biāo)記文檔112可視地和/或可聽到地表示信息的技術(shù)是本領(lǐng)域公知的。瀏覽器120所使用的表示裝置包括任何以及所有已知的表示技術(shù)。
瀏覽器120可包括擴展加載器122、標(biāo)記呈現(xiàn)處理器124、語法處理器126和DOM處理器128。擴展加載器122可加載插件包130。擴展加載器122可根據(jù)鏈接指令136和屬性138將擴展模塊132鏈接或者附加到瀏覽器120。
在一個實施例中,擴展加載器122可將擴展模塊134放置到數(shù)據(jù)存儲129中。數(shù)據(jù)存儲129可位于瀏覽器120本地的存儲空間中,或者可以位于瀏覽器120遠(yuǎn)程的存儲空間中。當(dāng)位于遠(yuǎn)程時,可以通過網(wǎng)絡(luò)116訪問數(shù)據(jù)存儲129。
擴展加載器122可以在運行時間加載擴展器132。屬性138能夠指定擴展加載器122加載擴展器132的不同的時間。例如,擴展器132可以在加載瀏覽器120時進行加載,在解析標(biāo)記文檔112時進行加載,在呈現(xiàn)標(biāo)記文檔112時進行加載,在DOM事件發(fā)生時進行加載,等等。
標(biāo)記呈現(xiàn)處理器124可以是呈現(xiàn)或者解釋標(biāo)記文檔112的運行時間處理器。標(biāo)記呈現(xiàn)處理器124可以使用語法處理器126和/或DOM處理器128。到擴展模塊134的軟件掛鉤可以包括在標(biāo)記呈現(xiàn)處理器124的合適位置。
語法處理器126可包括包含在標(biāo)記文檔112中的元素、屬性、批注、注釋和實體的列表,以及它們之間彼此的關(guān)系。在一個實施例中,語法處理器126可以是文檔類型定義(DTD)處理器,其中通過DTD對于標(biāo)記文檔112的結(jié)構(gòu)和規(guī)則進行了定義。該語法處理器126還可以是XML模式處理器,其使用包含在標(biāo)記文檔112中的XML代碼對結(jié)構(gòu)和規(guī)則進行了定義。
語法處理器126可以具有動態(tài)生成DTD或者模式的能力。例如,鏈接指令136可以包括在功能上與擴展器132隔離的DTD片斷(snippet)。這些片斷可在運行時間自動并且動態(tài)地添加到預(yù)先存在的靜態(tài)DTD指令中。也就是說,該語法處理器126可以基于鏈接指令136產(chǎn)生將被用于解析標(biāo)記文檔112的可操作的DTD。
DOM處理器128可以處理遵照官方萬維網(wǎng)聯(lián)盟標(biāo)準(zhǔn)構(gòu)建的文件,該標(biāo)準(zhǔn)用于以不特別針對某一平臺和語音的方式表示所構(gòu)建的文檔。在一個實施例中,擴展器132可以被掛鉤到標(biāo)記文檔112的DOMAPI。DOM處理器128可以創(chuàng)建DOM事件處理器,在DOM中觸發(fā)這些處理器。在一個實施例中,這可以通過DOM節(jié)點方法“addEventHandler”來實現(xiàn)。例如,為處理由擴展器132定義的新標(biāo)簽的過程,可以創(chuàng)建用于那個標(biāo)簽的DOM事件,DOM事件處理器接著可以被添加到DOM節(jié)點。
表示設(shè)備140可以是任何能夠表示輸出142的設(shè)備。在一個實施例中,表示設(shè)備142可以是客戶端設(shè)備,基于該設(shè)備瀏覽器120得以執(zhí)行。例如表示設(shè)備142可以包括計算機、個人數(shù)字助理(PDA)、臺式電腦、智能電話。表示設(shè)備120還可以是能夠表示由語音瀏覽器生成的可聽見的輸出的電話設(shè)備。
網(wǎng)絡(luò)116和網(wǎng)絡(luò)140可以被配置為允許傳送在載波中編碼的數(shù)據(jù)。網(wǎng)絡(luò)116和網(wǎng)絡(luò)140可以包括一個或者多個局域網(wǎng)、廣域網(wǎng)、城域網(wǎng)等。網(wǎng)絡(luò)116和網(wǎng)絡(luò)140還可以包括基于分組的部件、和基于電路的部件。網(wǎng)絡(luò)116和網(wǎng)絡(luò)140可包括基于無線以及基于有線的通信通路。
進一步地,網(wǎng)絡(luò)116和網(wǎng)絡(luò)140可包括計算部件,以可通信的方式將包括單個機器的設(shè)備彼此進行鏈接。網(wǎng)絡(luò)116和網(wǎng)絡(luò)140還可包括以可通信的方式將用作虛擬機的或者用作分布計算設(shè)備的設(shè)備彼此進行鏈接的部件。網(wǎng)絡(luò)116和網(wǎng)絡(luò)140還可包括通過基于網(wǎng)絡(luò)的通信協(xié)議將兩個或更多遠(yuǎn)程計算設(shè)備彼此進行鏈接的部件和計算設(shè)備,該基于網(wǎng)絡(luò)的通信協(xié)議例如是傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)網(wǎng)絡(luò)協(xié)議。
通過以下的示例,系統(tǒng)100部件之間的交互可以變得清楚。應(yīng)該理解,以下示例是僅用于說明目的的,而不應(yīng)被解釋為限于這里使用的具體安排。在該示例中,Web瀏覽器120可訪問Web服務(wù)器(網(wǎng)絡(luò)設(shè)備110)以獲取標(biāo)記文檔112。標(biāo)記文檔112可以包括新標(biāo)記語言標(biāo)簽,稱為<data>,如下所示。
<html>
<head><title>Markup Extension Application</title></head>
<body>
<p>This is a sample application using markup extensions…<data uri=″http//myserver.domain/myservlet″namelist=″var1 var2 var3 var″/>
…</body>
</html>
代碼示例1具有數(shù)據(jù)標(biāo)簽的樣例HTML文檔數(shù)據(jù)標(biāo)簽可以提供發(fā)送消息到遠(yuǎn)程服務(wù)器的能力,而不會引起對HTML頁面的重新加載(這發(fā)生在使用“submit”標(biāo)簽的時候)。<data>標(biāo)簽可以包括“uri”和“namelist”的屬性,其中“uri”指定了用于推送數(shù)據(jù)的位置而“namelist”提供了將與請求一起發(fā)送出的變量列表。
插件包130可以包括用于實現(xiàn)該<data>標(biāo)簽的擴展器132。插件包可包括如下所述的描述符。所示的描述符使用JAVA存檔文件(JAR)來對DTD描述、擴展點、解析模塊和處理模塊進行封裝。
<pre listing-type="program-listing"> <?xml version=″1.0″encoding=″UTF-8″?> <vb_plugins version=″1.0″><plugin name=″data″> <dtd definition=″jar http//www.widgets.com/widges/vxml/data.jar!/data.dtd″ extension_point=″jarhttp//www.widgets.com/widges/vxml/ pause.jar!/insertdata.dtd″><parse_module uri=″jarhttp//www.widgets.com/widges/vxml/pause.jar!/parseModue.class″/><process_module uri=″jarhttp//www.widgets.com/widges/vxml/pause.jar!/processMoule.class″/> </plugin> </vb_plugins></pre>代碼示例2插件包的樣例描述符插件包130和標(biāo)記文檔112可以通過網(wǎng)絡(luò)114傳送到瀏覽器120。擴展器加載器122可以在瀏覽器120中加載插件包130。加載插件包可以包括建立用于觸發(fā)擴展模塊134的鏈接。擴展模塊134可以被加載到數(shù)據(jù)存儲129。當(dāng)引用擴展模塊134的指針由標(biāo)記呈現(xiàn)處理器124觸發(fā)時,可以執(zhí)行擴展模塊134。
在一個實施例中,用于瀏覽器120的插件框架可能需要表示將定義的新標(biāo)記的DTD。用于<data>特征的DTD片斷如下所示。
<!ELEMENT html(data)*>
代碼示例3用于數(shù)據(jù)擴展的DTD片斷可以自動地在運行時間將用于<data>擴展的DTD片斷添加到靜態(tài)適應(yīng)標(biāo)記DTD。語法處理器126可以在運行時間向標(biāo)記DTD添加該<data>擴展。也就是說,語法處理器126可以持有插件包130,并且可以動態(tài)的產(chǎn)生可操作的DTD以將其用于對標(biāo)記文檔112的解析。
在一個實施例中,用于瀏覽器120的插件框架可可能需要數(shù)據(jù)擴展掛鉤到標(biāo)記文檔112的DOM API。DOM處理器128可以創(chuàng)建DOM事件處理器,其中使用DOM節(jié)點方法(例如,“addEventHandler”)在DOM中觸發(fā)這些處理器。一個示例性的用于<data>擴展的DOM事件處理器如下所示。
<pre listing-type="program-listing"> class DataPluginProcessing implements Event throws DOMException { void process(Document dom,Node me, EcmaScriptExecutionContext context,IntpreterContext IC) { long namelist=Long.parseLong(me.getAttribute(″namelist″));URI uri=new URI(me.getAttribute(″uri″); if(uri ?。絥ull) { String namelistAsQueryString=processNameList (nameList,EcmaScriptExecutionContext); URL url=new URL(uri.toString() +″?″+ nameListAsQueryString); url.openConnection(); uri.connect(); //process stream,headers etc. else throw ProcessinException(″Illegal URI value″);}}}</pre>代碼示例4用于數(shù)據(jù)擴展的DOM事件處理器應(yīng)該理解,DOM事件處理是每個符合DOM規(guī)范的瀏覽器實現(xiàn)的一部分。因此,添加擴展點作為DOM事件能夠使得數(shù)據(jù)擴展無縫地集成到任何符合DOM的瀏覽器中。
圖2是根據(jù)這里公開的本發(fā)明安排的實施例的、用于擴展瀏覽器標(biāo)記語言的方法200的流程圖。在一個實施例中,方法200可以在系統(tǒng)100的環(huán)境中執(zhí)行。但是,方法200并不限于此,而是能夠在任何具有可擴展框架的瀏覽器的環(huán)境中執(zhí)行,而該可擴展框架用于在運行時間對所支持的標(biāo)記語言進行擴展。
方法200開始于步驟205,其中瀏覽器能夠接收包括擴展器的包。擴展器可以指定對于該瀏覽器的標(biāo)記語言擴展。在步驟210中,可以將擴展器加載到瀏覽器中。在步驟215中,更新由瀏覽器所支持的標(biāo)記,以便包括在該擴展器中指定的標(biāo)記語言擴展。在步驟220中,對于是否存在額外的擴展包進行確定。每個擴展包可以包括一個或者多個擴展器。如果存在擴展包,則該方法從步驟220到步驟210循環(huán)執(zhí)行,其中可以依次加載每個包以及所包括的擴展器。否則,該方法可從步驟220到步驟225繼續(xù)進行。
在步驟225中,可以由瀏覽器處理包含標(biāo)記語言擴展的標(biāo)記文檔。在步驟230中,可以觸發(fā)由擴展器提供的、用以處理該語言擴展的代碼。在步驟235中,可以執(zhí)行所觸發(fā)的代碼。在執(zhí)行了擴展器所提供的代碼之后,可以繼續(xù)以常規(guī)方式處理標(biāo)記文檔。如果擴展器所提供的代碼是在瀏覽器外部的位置上執(zhí)行的,則在步驟230中控制可傳遞到外部代碼段,在步驟235中可執(zhí)行該擴展器所提供的代碼,并且然后控制可以傳遞回瀏覽器。
在步驟240中,一旦已經(jīng)處理了該標(biāo)記文檔,所得輸出就可以在表示設(shè)備上進行表示。例如,當(dāng)瀏覽器是Web瀏覽器并且表示設(shè)備是計算機時,可以在計算機的顯示器上可視地呈現(xiàn)標(biāo)記文檔。在另一個實施例中,瀏覽器可以是語音瀏覽器并且表示設(shè)備可以是音頻設(shè)備??梢酝ㄟ^音頻設(shè)備的音頻收發(fā)器播放標(biāo)記的音頻呈現(xiàn)。
本發(fā)明可以以硬件、軟件或者硬件和軟件的結(jié)合來實現(xiàn)。本發(fā)明可以以集中方式在一個計算機系統(tǒng)中實現(xiàn);或者以分布方式實現(xiàn),其中不同的網(wǎng)元分布于多個互聯(lián)的計算機系統(tǒng)中。任何種類的計算機系統(tǒng)或其它適于執(zhí)行這里所述的方法的裝置都是適用的。典型的硬件和軟件的結(jié)合可以是具有計算機程序的通用計算機系統(tǒng),當(dāng)加載和執(zhí)行該計算機程序時,其控制該計算機系統(tǒng)以便該計算機系統(tǒng)執(zhí)行這里所述的方法。
本發(fā)明還可以被嵌入到計算機程序產(chǎn)品中,該計算機程序產(chǎn)品包括所有支持這里所述方法的實現(xiàn)的特征,并且當(dāng)將該計算機程序產(chǎn)品加載到計算機系統(tǒng)中時,可以執(zhí)行這些方法。在當(dāng)前上下文中,計算機程序意味著任何語言、代碼或者符號形式的指令集合的任何表達(dá),該指令集合旨在使得具有信息處理能力的系統(tǒng)直接地或者在以下兩項中的任一項或兩項之后,來執(zhí)行特定的功能a)到另一語言、代碼或者符號的轉(zhuǎn)換;b)以不同的實際形式進行再現(xiàn)。
權(quán)利要求
1.一種用于擴展由瀏覽器所支持的標(biāo)記的方法,包括對表示以標(biāo)記語言寫成的信息的瀏覽器進行識別;對包括至少一個對該標(biāo)記語言的擴展的擴展器進行識別,其中該瀏覽器通常并不支持該擴展;加載該擴展器;以及將由該瀏覽器所支持的該標(biāo)記語言擴展到包括該擴展。
2.根據(jù)權(quán)利要求1所述的方法,其中當(dāng)加載所述瀏覽器時,自動地發(fā)生所述識別該擴展器的步驟、所述加載步驟,以及所述擴展步驟。
3.根據(jù)權(quán)利要求1所述的方法,其中在運行時間中自動地并且動態(tài)地發(fā)生所述識別該擴展器的步驟、所述加載步驟,以及所述擴展步驟。
4.根據(jù)權(quán)利要求1所述的方法,其中所述瀏覽器是Web瀏覽器,并且其中所述擴展器是以獨立于Web瀏覽器的方式寫成并且實現(xiàn)的。
5.根據(jù)權(quán)利要求1所述的方法,其中發(fā)生所述擴展步驟而不改變該瀏覽器的源代碼。
6.根據(jù)權(quán)利要求1所述的方法,其中該擴展包括對于之前不屬于該標(biāo)記語言一部分的新標(biāo)記的定義、平臺對象的定義、以及平臺屬性的定義中的至少一個。
7.根據(jù)權(quán)利要求1所述的方法,其中該擴展將該瀏覽器的現(xiàn)有功能代替為對于該功能的不同實現(xiàn)。
8.根據(jù)權(quán)利要求1所述的方法,進一步包括為該瀏覽器定義插件框架,其中該擴展器是符合該插件框架的插件包的一部分,其中該插件包包括用于至少一個擴展的機器可讀代碼的代碼模塊,并且其中該插件包包括用于將該代碼模塊鏈接到該瀏覽器的程序指令。
9.根據(jù)權(quán)利要求1所述的方法,進一步包括對包括至少一個對于該標(biāo)記語言的不同擴展的不同擴展器進行識別;加載該不同的擴展器;以及將該瀏覽器所支持的該標(biāo)記語言擴展到包括該不同的擴展。
10.根據(jù)權(quán)利要求1所述的方法,其中所述方法加載多個擴展,并且然后將所述瀏覽器所支持的該標(biāo)記語言擴展到包括該多個擴展,其中對該多個擴展的所述加載幾乎同時發(fā)生,并且其中所述多個擴展包括所述至少一個擴展。
11.根據(jù)權(quán)利要求1所述的方法,進一步包括響應(yīng)于加載該擴展器,將至少一個擴展點掛鉤到該標(biāo)記瀏覽器;以及加載包括用于實現(xiàn)所述擴展的代碼的該擴展模塊,其中所述擴展點指向該擴展模塊的代碼。
12.根據(jù)權(quán)利要求11所述的方法,其中所述掛鉤步驟進一步包括將該擴展點掛鉤到文檔對象模型(DOM)應(yīng)用程序接口(API)。
13.根據(jù)權(quán)利要求1所述的方法,進一步包括添加由所述擴展器定義的擴展點作為文檔對象模型(DOM)事件,所述擴展點被用來執(zhí)行用于該擴展的代碼;以及所述瀏覽器觸發(fā)該DOM事件。
14.一種瀏覽器,包括用于表示以標(biāo)記語言寫成的信息的裝置;插件框架實現(xiàn);以及用于利用符合所述插件框架的插件包的裝置,其中所述插件包的每一個對該瀏覽器所支持的標(biāo)記語言進行擴展,而無需改變該瀏覽器的源代碼。
15.根據(jù)權(quán)利要求14所述的瀏覽器,其中所述插件框架允許對新標(biāo)記的定義以及對于該新標(biāo)記的屬性的定義和實現(xiàn)。
16.根據(jù)權(quán)利要求15所述的瀏覽器,其中該插件框架使用文檔類型定義(DTD)語言和XML模式中的至少一個來允許權(quán)利要求15中的定義。
17.根據(jù)權(quán)利要求14所述的瀏覽器,其中所述用于利用插件包的裝置被配置為幾乎在同時加載多個不同插件包,其中該不同插件包的每一個包括至少一個對于該瀏覽器所支持的該標(biāo)記語言的擴展,該擴展對于該插件包是特定的。
18.根據(jù)權(quán)利要求14所述的瀏覽器,其中該插件框架提供了用于定義器的能力,以附加并且執(zhí)行擴展該標(biāo)記語言的代碼,其中所述對代碼的附加發(fā)生在從包括以下時間的組中所選擇的至少一個時間處當(dāng)解析標(biāo)記時、當(dāng)呈現(xiàn)標(biāo)記時、當(dāng)文檔對象模型(DOM)事件發(fā)生時。
19.根據(jù)權(quán)利要求15所述的瀏覽器,其中所述瀏覽器實現(xiàn)DOM事件處理,并且其中所述用于利用插件包的裝置包括添加由每個插件包定義的擴展點作為文檔對象模型(DOM)事件的步驟。
全文摘要
一種用于對由瀏覽器支持的標(biāo)記進行擴展的方法可以包括對表示以標(biāo)記語言寫成的信息的瀏覽器進行識別的步驟??梢詫Πㄖ辽僖粋€對該標(biāo)記語言的擴展的擴展器進行識別,其中該瀏覽器通常并不支持該擴展。可以加載該擴展器,使得將該瀏覽器所支持的該標(biāo)記語言擴展到包括該擴展。
文檔編號G06F17/30GK1959675SQ200610139240
公開日2007年5月9日 申請日期2006年9月20日 優(yōu)先權(quán)日2005年11月2日
發(fā)明者溫迪·林恩·努斯比克爾, 布賴恩·亨利·馬斯切特 申請人:國際商業(yè)機器公司