亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

處理以多種標(biāo)記語(yǔ)言表述的文檔的制作方法

文檔序號(hào):6655570閱讀:232來(lái)源:國(guó)知局

專利名稱::處理以多種標(biāo)記語(yǔ)言表述的文檔的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種文檔處理技術(shù),尤其涉及處理以多種標(biāo)記語(yǔ)言描述的文檔的技術(shù)。
背景技術(shù)
:互聯(lián)網(wǎng)的出現(xiàn)導(dǎo)致由用戶處理和管理的文檔的數(shù)目近乎指數(shù)增長(zhǎng)。形成互聯(lián)網(wǎng)核心的萬(wàn)維網(wǎng)聯(lián)合會(huì)(亦即通常所說(shuō)的Web)包括由這些文檔構(gòu)成的大規(guī)模數(shù)據(jù)中心庫(kù)。除了文檔,Web還提供用于這些文檔的信息檢索系統(tǒng)。這些文檔通常為標(biāo)記語(yǔ)言格式,一種簡(jiǎn)單且常用的標(biāo)記語(yǔ)言是超文本標(biāo)記語(yǔ)言(HTML)。這種文檔還包括指向可能位于該Web其它部分中的其它文檔的鏈接??蓴U(kuò)展標(biāo)記語(yǔ)言(XML)是另一種更高級(jí)、更常用的標(biāo)記語(yǔ)言。用于經(jīng)由Web來(lái)訪問(wèn)和查看該文檔的簡(jiǎn)單瀏覽器用面向?qū)ο蟮木幊陶Z(yǔ)言(例如Java)來(lái)開(kāi)發(fā)。以標(biāo)記語(yǔ)言為格式的文檔通常在瀏覽器和其它應(yīng)用程序中表述為樹(shù)型數(shù)據(jù)結(jié)構(gòu)的格式。這種表述與文檔的語(yǔ)法分析樹(shù)相對(duì)應(yīng)。文檔對(duì)象模型(DOM)是一種眾所周知的用于表述和操作文檔的基于樹(shù)的數(shù)據(jù)結(jié)構(gòu)模型。文檔對(duì)象模型提供了用于表述文檔的標(biāo)準(zhǔn)對(duì)象集合,包括HTML和XML文檔。DOM包括兩個(gè)基本組件,即,如何將表述文檔中組件的對(duì)象進(jìn)行組合的標(biāo)準(zhǔn)模型,以及用于訪問(wèn)和操作它們的標(biāo)準(zhǔn)接口。應(yīng)用程序開(kāi)發(fā)者能夠支持DOM作為其自身的特定數(shù)據(jù)結(jié)構(gòu)的接口和應(yīng)用程序接口(API)。另一方面,創(chuàng)建文檔的應(yīng)用程序開(kāi)發(fā)者可使用標(biāo)準(zhǔn)DOM接口而不是使用其自身API的特定接口。因此,由于這種能夠提供標(biāo)準(zhǔn)的能力,DOM能有效地增加各種環(huán)境中、尤其是Web上的文檔的互操作性。已經(jīng)定義了DOM的幾種變化,由不同的編程環(huán)境和應(yīng)用程序來(lái)使用。DOM樹(shù)是基于相應(yīng)的DOM的內(nèi)容對(duì)文檔的分級(jí)表述。DOM樹(shù)包括“根”以及從根產(chǎn)生的一個(gè)或多個(gè)“節(jié)點(diǎn)”。在某些情況下,根表述整個(gè)文檔。中間節(jié)點(diǎn)可表述元素,諸如表及表中的行和列。DOM樹(shù)的“葉子”通常表述數(shù)據(jù),例如不可進(jìn)一步分解的文本項(xiàng)目或圖像。DOM樹(shù)中的各個(gè)節(jié)點(diǎn)可與屬性相關(guān)聯(lián),屬性描述了由節(jié)點(diǎn)表述的元素的參數(shù),例如字體、大小、顏色、縮進(jìn)等。雖然HTML是一種創(chuàng)建文檔的常用語(yǔ)言,但它是格式和版式語(yǔ)言。HTML不是一種數(shù)據(jù)描述語(yǔ)言。表述HTML文檔的DOM樹(shù)的節(jié)點(diǎn)包括與HTML格式標(biāo)簽相對(duì)應(yīng)的預(yù)先定義的元素。由于HTML通常不提供任何數(shù)據(jù)描述,也不提供任何對(duì)數(shù)據(jù)的標(biāo)簽/標(biāo)注,因此,常常難以對(duì)HTML文檔中的數(shù)據(jù)進(jìn)行查詢。網(wǎng)絡(luò)設(shè)計(jì)者的目標(biāo)是使得Web文檔能夠被軟件應(yīng)用程序查詢或處理。獨(dú)立顯示的分級(jí)組織的語(yǔ)言能夠通過(guò)這種方式查詢和處理。諸如XML(可擴(kuò)展標(biāo)記語(yǔ)言)的標(biāo)記語(yǔ)言能夠提供這些特征。與HTML相反,眾所周知,XML的優(yōu)點(diǎn)是使得文檔設(shè)計(jì)者能夠使用可自由定義的“標(biāo)簽”來(lái)對(duì)數(shù)據(jù)元素進(jìn)行標(biāo)注。上述數(shù)據(jù)元素可進(jìn)行分級(jí)組織。另外,XML文檔可包含文檔類型定義(DTD),它是對(duì)文檔中所使用的“語(yǔ)法”(標(biāo)簽及其相互關(guān)系)的描述。使用CSS(層疊樣式表)或XSL(XML樣式語(yǔ)言),以定義結(jié)構(gòu)化的XML文檔的顯示方法。與DOM、HTML、XML、CSS、XSL有關(guān)的其它信息以及相關(guān)語(yǔ)言特征也可從Web獲取,例如,http://www.w3.org/TR/。Xpath提供了用于對(duì)XML文檔的部分進(jìn)行尋址的公共的語(yǔ)法和語(yǔ)義。Xpath的功能的一個(gè)示例是對(duì)與XML文檔相對(duì)應(yīng)的DOM樹(shù)進(jìn)行遍歷。它提供了用于操作與XML文檔的各種表述相關(guān)聯(lián)的字符串、數(shù)字和布爾字符的基本工具。Xpath對(duì)XML文檔的摘要、邏輯結(jié)構(gòu)(例如,DOM樹(shù))、而不是其表面語(yǔ)法(例如,描述哪根線或哪個(gè)字符位于序列中的語(yǔ)法)進(jìn)行操作。使用Xpath,能夠在分級(jí)結(jié)構(gòu)中(例如,在XML文檔的DOM樹(shù)中)進(jìn)行定位。除了用于尋址的用途之外,Xpath還被設(shè)計(jì)用來(lái)測(cè)試DOM樹(shù)中的節(jié)點(diǎn)是否與某個(gè)模式相匹配。其它涉及Xpath的細(xì)節(jié)可在http://www.w3.org/TR/中找到。假設(shè)XML的有益效果和特征已經(jīng)公知,需要一種能夠?qū)?biāo)記語(yǔ)言(例如,XML)構(gòu)建的文檔進(jìn)行處理的有效的文檔處理和管理系統(tǒng),并提供一種用于創(chuàng)建和修改這些文檔的友好的用戶界面。可擴(kuò)展標(biāo)記語(yǔ)言(XML)特別適合作為用于復(fù)合文檔(compounddocument)的格式,或者特別適合用于這種情況的格式,即,某個(gè)文檔的相關(guān)數(shù)據(jù)與其它文檔的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)等共用的情況。已經(jīng)開(kāi)發(fā)出許多用于創(chuàng)建、顯示和編輯XML文檔的應(yīng)用程序(例如,參見(jiàn)日本已公開(kāi)的專利申請(qǐng)No.2001-290804)??呻S意地定義詞匯。因此理論上,可能存在無(wú)限多個(gè)詞匯。然而,不可能單獨(dú)提供這些詞匯專用的顯示/編輯環(huán)境。在相關(guān)技術(shù)中,如果以不具有專用編輯環(huán)境的詞匯來(lái)描述文檔,那么由文本數(shù)據(jù)構(gòu)成的文檔的源代碼(source)可直接使用文本編輯器等進(jìn)行編輯。能夠處理XML文檔的現(xiàn)有的應(yīng)用程序在市場(chǎng)上能夠獲得,但是它們具有顯著的局限性,并且遇到了妨礙其被廣泛接受的障礙。本文描述的方法和裝置解決了迄今為止還未被上述現(xiàn)有產(chǎn)品及其所代表的現(xiàn)有技術(shù)所解決的問(wèn)題。例如,在現(xiàn)有的XML文檔處理裝置的實(shí)現(xiàn)中,作為一種內(nèi)容表達(dá)的XML文檔與其顯示方法無(wú)關(guān)的這一特征可能在表面上被視為一種優(yōu)勢(shì)。然而,上述特征實(shí)際上是不利的,這是因?yàn)橛脩舨荒苤苯訉?duì)其進(jìn)行編輯。為了解決這一問(wèn)題,現(xiàn)有的XML文檔處理產(chǎn)品特別設(shè)計(jì)了用于XML輸入的屏幕。但是,由于現(xiàn)有XML產(chǎn)品必須預(yù)先進(jìn)行硬編碼(hardcode),因此限制了屏幕設(shè)計(jì)的靈活性。由于這一局限性,XSLT在之前作為樣式表語(yǔ)言的標(biāo)準(zhǔn)之一被開(kāi)發(fā)。這是一種能夠?qū)⒂脩魪挠簿幋a工作中釋放出來(lái)的技術(shù),并且與顯示XML文檔的可應(yīng)用方法相兼容。然而,XSLT不能夠僅通過(guò)顯示XML文檔實(shí)現(xiàn)對(duì)該XML文檔的編輯。此外,現(xiàn)有XML產(chǎn)品主要依賴于“架構(gòu)(schema)”的設(shè)置。因此,只要確定了架構(gòu),便具有這樣的局限性,即,僅能處理與來(lái)自頂層的架構(gòu)結(jié)構(gòu)相對(duì)應(yīng)的XML文檔。換言之,該系統(tǒng)是一種硬性(rigid)系統(tǒng)。
發(fā)明內(nèi)容根據(jù)本發(fā)明,不存在上述限制。整個(gè)XML文檔的結(jié)構(gòu)不需要硬性確定。通過(guò)將具有各種結(jié)構(gòu)的復(fù)合XML文檔分為多個(gè)部分,并將該文檔分配到優(yōu)選地用插件表示的編輯模塊,能夠安全處理該復(fù)合XML文檔,從而能夠獲得靈活的系統(tǒng)。此外,不受硬編碼限制,用戶能夠?qū)崿F(xiàn)靈活的屏幕設(shè)計(jì),并利用WYSIWYG(所見(jiàn)即所得)對(duì)所實(shí)現(xiàn)的屏幕進(jìn)行編輯。本發(fā)明針對(duì)上述情況而提出,并相應(yīng)提供用于能夠有效地處理結(jié)構(gòu)數(shù)據(jù)以及通過(guò)一種或多種例如XML類型的語(yǔ)言的標(biāo)記語(yǔ)言描述文檔的的裝置、方法和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的一些示意性實(shí)施方案涉及文檔處理裝置,例如,一種包括文檔處理器的文檔處理系統(tǒng),其中,所述文檔處理器可操作以處理以第一標(biāo)記語(yǔ)言描述的文檔,所述第一標(biāo)記語(yǔ)言與所述文檔處理器相符。如果一文檔以與所述文檔處理器不相符的第二標(biāo)記語(yǔ)言描述,則文檔轉(zhuǎn)換器可操作以將該文檔映射為所述第一標(biāo)記語(yǔ)言。本發(fā)明的另一個(gè)方面是一種文檔處理方法,該方法可包括在待處理文檔以處理系統(tǒng)不能處理的標(biāo)記語(yǔ)言描述時(shí),將該文檔映射到可被處理系統(tǒng)處理的標(biāo)記語(yǔ)言,并顯示所映射成的文檔。本發(fā)明的另一個(gè)方面是這樣的計(jì)算機(jī)程序產(chǎn)品,它包括包含有使計(jì)算機(jī)能實(shí)現(xiàn)上述技術(shù)的指令的計(jì)算機(jī)可讀媒體。在這里應(yīng)該注意,上述的結(jié)構(gòu)組件的任意組合,以及在方法、裝置和系統(tǒng)等之間變化的表述都像在本發(fā)明的實(shí)施方案中一樣有效。根據(jù)本發(fā)明,能夠提供用于有效地處理以一種或多種標(biāo)記語(yǔ)言描述的文檔的技術(shù),以用于實(shí)現(xiàn)生成、編輯、顯示和/或存儲(chǔ)操作中的至少一種或多種。圖1以方框圖的方式示出了根據(jù)本發(fā)明的一個(gè)示例性而非限制性實(shí)施方案的文檔處理裝置;圖2示出了XML文檔的一個(gè)實(shí)施例;圖3示出了將圖2的XML文檔映射為HTML描述的表的一個(gè)實(shí)施例;圖4示出了用以將圖2的XML文檔映射為圖3的表的定義文件的一個(gè)實(shí)施例;圖5示出了當(dāng)利用圖3的對(duì)應(yīng)關(guān)系將圖2的XML文檔映射為HML時(shí)顯示屏的一個(gè)實(shí)施例;圖6示出了可與本發(fā)明一起使用的圖形用戶界面;圖7示出了根據(jù)本發(fā)明生成的屏幕布局(layout)的另一實(shí)施例;圖8示出了根據(jù)本發(fā)明的、用于XML文檔的編輯屏幕;圖9示出了根據(jù)本發(fā)明編輯的XML文檔的另一實(shí)施例;圖10示出了可與本發(fā)明一起使用的編輯屏幕;圖11(a)示出了能夠作為所公開(kāi)的文檔處理和管理系統(tǒng)的一個(gè)示例性實(shí)現(xiàn)基礎(chǔ)的組件的傳統(tǒng)結(jié)構(gòu);圖11(b)和11(c)是示例性的文檔處理和管理系統(tǒng)的總體方框圖;圖12示出了文檔管理器的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖13示出了詞匯連接子系統(tǒng)300的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖14(a)示出了程序調(diào)用器的示例性實(shí)現(xiàn)及其與其它組件的關(guān)系的進(jìn)一步細(xì)節(jié);圖14(b)示出了服務(wù)代理(broker)的示例性實(shí)現(xiàn)及其與其它組件的關(guān)系的進(jìn)一步細(xì)節(jié);圖14(c)示出了服務(wù)的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖14(d)示出了服務(wù)的實(shí)施例;圖14(e)示出了程序調(diào)用器與用戶應(yīng)用程序之間的關(guān)系的進(jìn)一步細(xì)節(jié);圖15(a)提供了載入程序調(diào)用器上的應(yīng)用程序服務(wù)的結(jié)構(gòu)的進(jìn)一步細(xì)節(jié);圖15(b)示出了框架、菜單欄和狀態(tài)欄之間的關(guān)系的實(shí)施例;圖16(a)示出了應(yīng)用程序核心的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖16(b)示出了涉及快照(snapshot)的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖17(a)示出了涉及文檔管理器的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖17(b)在右側(cè)示出了一組文檔A-E如何排列為分級(jí)結(jié)構(gòu)的實(shí)施例,在左側(cè)示出了右側(cè)所示的文檔的分級(jí)結(jié)構(gòu)在屏幕上如何顯示的實(shí)施例;圖18(a)和18(b)提供了撤消框架和撤消命令的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖19(a)示出了文檔如何載入如圖11(b)-(c)所示的文檔處理和管理系統(tǒng)中的總體圖;圖19(b)示出了使用MVC范例的區(qū)的結(jié)構(gòu)的概要;圖20示出了根據(jù)本發(fā)明的文檔及其多種表述的實(shí)施例;圖21(a)示出了如圖20所示的文檔的XHTML組件的MV關(guān)系的簡(jiǎn)化視圖;圖21(b)示出了用于如圖21(a)所示的文檔的詞匯連接;圖22(a)-22(c)示出了分別涉及插件子系統(tǒng)、詞匯連接與連接器的示例性實(shí)現(xiàn)的進(jìn)一步細(xì)節(jié);圖23示出了用于文件MySampleXML的使用詞匯連接管理器的VCD腳本和連接器工廠樹(shù)的實(shí)施例;圖24(a)-(c)示出了將示例文檔MySampleXML載入圖11(b)的示例性文檔處理和管理系統(tǒng)中的步驟0-3;圖25示出了將示例文檔MySampleXML載入圖11(b)的示例性文檔處理和管理系統(tǒng)中的步驟4;圖26示出了將示例文檔MySampleXML載入圖11(b)的示例性文檔處理和管理系統(tǒng)中的步驟5;圖27示出了將示例文檔MySampleXML載入圖11(b)的示例性文檔處理和管理系統(tǒng)中的步驟6;圖28示出了將示例文檔MySampleXML載入圖11(b)的示例性文檔處理和管理系統(tǒng)中的步驟7;圖29(a)示出了在不具有相應(yīng)的源節(jié)點(diǎn)而僅依賴于目的樹(shù)的節(jié)點(diǎn)上發(fā)生的事件流;圖29(b)示出了在通過(guò)TextOfConnector與源節(jié)點(diǎn)相關(guān)的目的樹(shù)的節(jié)點(diǎn)上發(fā)生的事件流。具體實(shí)施例方式圖1示出了根據(jù)本發(fā)明的一個(gè)示例性而非限制性實(shí)施方案的文檔處理裝置20的結(jié)構(gòu)。文檔處理裝置20對(duì)結(jié)構(gòu)化的文檔進(jìn)行處理,該文檔中的數(shù)據(jù)被分為具有分級(jí)結(jié)構(gòu)的多個(gè)組件。該實(shí)施方案中表示的是一個(gè)實(shí)施例,其中,對(duì)作為一種結(jié)構(gòu)化文檔的XML文檔進(jìn)行處理。文檔處理裝置20由主控單元22、編輯單元24、DOM(文檔對(duì)象模塊)單元30、CSS(層疊樣式表)單元40、HTML(超文本標(biāo)記語(yǔ)言)單元50、SVG(可縮放矢量圖形)單元60以及用作轉(zhuǎn)換單元一個(gè)示例的VC(詞匯連接)單元80。在硬件組件方面,這些單元結(jié)構(gòu)可由任意的傳統(tǒng)處理系統(tǒng)或設(shè)備(包括任意計(jì)算機(jī)的CPU或存儲(chǔ)器、存儲(chǔ)器載入的程序、硬連線芯片等)來(lái)實(shí)現(xiàn)。因此,如本領(lǐng)域技術(shù)人員能夠理解的那樣,本文以示例性結(jié)構(gòu)的方式描繪和記述了功能模塊,所述結(jié)構(gòu)實(shí)現(xiàn)為或可實(shí)現(xiàn)為任意的上述處理系統(tǒng)。因此,本領(lǐng)域技術(shù)人員能夠理解,這些功能模塊可僅通過(guò)硬件的方式、僅通過(guò)軟件的方式或通過(guò)二者相結(jié)合的方式以多種形式來(lái)實(shí)現(xiàn)。主控單元22提供插件的載入或提供執(zhí)行命令的框架。編輯單元24提供了用于編輯XML文檔的框架。文檔處理裝置20中的文檔的顯示和編輯功能是通過(guò)插件來(lái)實(shí)現(xiàn)的,而必要的插件是根據(jù)所處理的文檔類型、通過(guò)主控單元20或編輯單元24來(lái)載入的。主控單元22或編輯單元24通過(guò)參考待處理的文檔的命名空間來(lái)確定哪個(gè)或哪些詞匯描述了待處理的XML文檔的內(nèi)容,并且對(duì)應(yīng)于所確定的詞匯而載入用于顯示和編輯的插件,從而執(zhí)行顯示和編輯。例如,利用控制單元52、編輯單元54和顯示單元56對(duì)HTML文檔進(jìn)行顯示和編輯的HTML單元50,以及利用控制單元62、編輯單元64和顯示單元66對(duì)SVG文檔進(jìn)行顯示和編輯的SVG單元60在文檔處理裝置20中被實(shí)現(xiàn)為處理單元。也就是說(shuō),對(duì)于各個(gè)詞匯(標(biāo)簽集),將顯示系統(tǒng)和編輯系統(tǒng)實(shí)現(xiàn)為插件,以使得在對(duì)HTML文檔和SVG文檔進(jìn)行編輯時(shí),分別將HTML單元50和SVG單元60與其各自的控制單元進(jìn)行協(xié)同載入。如以下將描述的那樣,在要對(duì)既包括HTML又包括SVG組件的復(fù)合文檔進(jìn)行處理時(shí),既載入HTML單元50又載入SVG單元60。通過(guò)實(shí)現(xiàn)以上結(jié)構(gòu),用戶能夠僅選擇必要的功能以安裝該功能,如果需要,也能夠在稍后階段增加或刪除一個(gè)和多個(gè)功能。因此,能夠有效利用記錄媒介的存儲(chǔ)區(qū)域(例如硬盤),并能夠避免在執(zhí)行程序的時(shí)候存儲(chǔ)器使用的浪費(fèi)。此外,由于這一結(jié)構(gòu)有利于性能擴(kuò)展,因此開(kāi)發(fā)者自己能夠以插件的形式處理新的詞匯,因而能夠促進(jìn)開(kāi)發(fā)過(guò)程。因此,用戶也能夠通過(guò)增加一個(gè)或多個(gè)插件而以較低成本輕易地增加一個(gè)或多個(gè)功能。編輯單元24通過(guò)接口從用戶處接收(包括但不限于)輸入動(dòng)作(例如鼠標(biāo)點(diǎn)擊或鍵盤敲打)、編輯指令的事件(觸發(fā)事件),將事件通知適當(dāng)?shù)牟寮⒖刂铺幚?,所述處理可包括重新?zhí)行事件的重做(redo)處理以及取消事件的撤消(undo)處理。DOM單元30包括DOM提供器32、DOM構(gòu)造器34以及DOM編寫(xiě)器36。DOM單元30實(shí)現(xiàn)了與文檔對(duì)象模型(DOM)相符的功能,在XML文檔作為數(shù)據(jù)被處理時(shí),所述文檔對(duì)象模型被定義以提供訪問(wèn)方法。DOM提供器32是滿足由編輯單元24定義的接口的DOM的實(shí)現(xiàn)。DOM構(gòu)造器34從XML文檔生成DOM樹(shù)。如以下將描述的那樣,當(dāng)通過(guò)VC單元80將待處理的XML文檔映射為其它詞匯時(shí),生成與映射源中的XML文檔相對(duì)應(yīng)的源樹(shù)以及與映射目的中的XML文檔相對(duì)應(yīng)的目的樹(shù)。在編輯的末尾,例如DOM編寫(xiě)器36輸出作為XML文檔的DOM樹(shù)。CSS單元40提供與CSS相符的顯示功能,并包括CSS分析器42、CSS提供器44以及呈現(xiàn)單元46。CSS分析器42具有用于分析CSS語(yǔ)法的分析功能。CSS提供器44是CSS對(duì)象的實(shí)現(xiàn),并執(zhí)行對(duì)DOM樹(shù)的CSS層疊處理。呈現(xiàn)單元46是CSS的呈現(xiàn)引擎,并用來(lái)顯示以諸如HTML的詞匯描述的、利用CSS設(shè)置的文檔。HTML單元50對(duì)以HTML描述的文檔進(jìn)行顯示或編輯。SVG單元60對(duì)以SVG描述的文檔進(jìn)行顯示或編輯。這些顯示/編輯系統(tǒng)以插件的形式實(shí)現(xiàn),各個(gè)系統(tǒng)包括對(duì)文檔進(jìn)行顯示的顯示單元(本發(fā)明中也稱作“畫(huà)布(canvas)”)、發(fā)送和接收包括編輯命令的事件的控制單元(本發(fā)明中也稱作“editlet”)以及在接收到編輯命令時(shí)對(duì)DOM進(jìn)行編輯的編輯單元(本發(fā)明中也稱作“區(qū)(zone)”)。在控制單元從外部源接收到用于DOM樹(shù)的編輯命令時(shí),編輯單元修改DOM樹(shù),而顯示單元更新顯示。這些單元具有與被稱作MVC(Model-View-Controllers,模型-視圖-控制器)的框架相類似的結(jié)構(gòu),MVC是一種眾所周知的圖形用戶界面(GUI)范例。所述MVC范例提供了一種將應(yīng)用程序(或甚至是一個(gè)應(yīng)用程序的接口)分解為三部分(即,模型、視圖和控制器)的方法。最初開(kāi)發(fā)MVC是為了將傳統(tǒng)的輸入、處理和輸出任務(wù)映射到GUI領(lǐng)域。輸入->處理->輸出控制器->模型->視圖根據(jù)所述MVC范例,用戶輸入、外界建模、以及對(duì)用戶的視覺(jué)反饋被分離,并通過(guò)模型(M)、視窗(V)以及控制器(C)對(duì)象來(lái)處理。控制器可操作以解釋輸入(例如用戶的鼠標(biāo)和鍵盤輸入),并將這些用戶動(dòng)作映射為發(fā)送至模型和/或視窗的命令,以實(shí)現(xiàn)適當(dāng)?shù)母淖?。模型可操作以管理一個(gè)或多個(gè)數(shù)據(jù)元素、響應(yīng)對(duì)其狀態(tài)的詢問(wèn)、并響應(yīng)指令以改變狀態(tài)。視窗可操作以管理顯示的矩形區(qū)域,并負(fù)責(zé)通過(guò)圖形和文本的組合將數(shù)據(jù)顯現(xiàn)給用戶。通常,根據(jù)本文所公開(kāi)的本發(fā)明的示例性實(shí)施方案,顯示單元(V)對(duì)應(yīng)于“視圖”,控制單元(C)對(duì)應(yīng)于“控制器”,而編輯單元和DOM實(shí)體(M)對(duì)應(yīng)于“模型”。在圖1-10所示的示例性實(shí)施方案的文檔處理裝置20中,不僅能夠以樹(shù)型視圖顯示格式來(lái)編輯XML文檔,而且能夠根據(jù)相應(yīng)的詞匯來(lái)完成編輯。例如,HTML單元50提供了用戶界面,通過(guò)該用戶界面能夠以一種類似于word處理器的方法對(duì)HTML文檔進(jìn)行編輯,而SVG單元60提供了一種用戶界面,通過(guò)該用戶界面能夠以一種類似于圖像繪制工具的方法對(duì)SVG文檔進(jìn)行編輯。VC單元80包括映射單元82、定義文件獲取單元84以及定義文件生成單元86。通過(guò)將以某個(gè)詞匯描述的文檔映射為另一詞匯,VC單元80提供了一種框架,以通過(guò)與被映射成的詞匯相對(duì)應(yīng)的顯示和編輯插件來(lái)顯示或編輯文檔。在本實(shí)施方案中,該功能被稱為詞匯連接(VC)。在VC單元80中,定義文件獲取單元84獲取描述了映射定義的定義文件。在該實(shí)施方案中,定義文件為腳本文件。以第一詞匯描述的文檔被表述為具有節(jié)點(diǎn)的源樹(shù)。同樣地,以第二詞匯描述的文檔被表述為具有節(jié)點(diǎn)的目的樹(shù)。定義文件為各節(jié)點(diǎn)描述了源樹(shù)與目的樹(shù)的節(jié)點(diǎn)之間的連接。如W3C領(lǐng)域中所公知的那樣,可根據(jù)元素值和/或?qū)傩灾祦?lái)定義DOM樹(shù)中的節(jié)點(diǎn)。在該實(shí)施方案中,可規(guī)定各節(jié)點(diǎn)的元素值或?qū)傩灾凳欠窨梢跃庉?。此外,在該?shí)施方案中,也可描述使用節(jié)點(diǎn)的元素值或?qū)傩灾档倪\(yùn)算表達(dá)式。這些功能將在稍后進(jìn)行描述。映射單元82使得DOM構(gòu)個(gè)造器34通過(guò)參考定義文件獲取單元84已經(jīng)獲取的定義文件(腳本文件)來(lái)生成目的樹(shù),以使得映射單元82能夠管理源樹(shù)與目的樹(shù)之間的對(duì)應(yīng)關(guān)系。定義文件生成單元86為用戶提供圖形用戶界面,以生成定義文件。VC單元80對(duì)源樹(shù)與目的樹(shù)之間的連接進(jìn)行監(jiān)控。當(dāng)VC單元80通過(guò)由負(fù)責(zé)顯示的插件提供的用戶接口從用戶處接收編輯指令時(shí),它首先修改源樹(shù)的相關(guān)節(jié)點(diǎn)。因此,DOM單元30將發(fā)出指示源樹(shù)已經(jīng)被修改的變化事件。然后,VC單元80接收該變化事件,并對(duì)應(yīng)于被修改的節(jié)點(diǎn)而修改目的樹(shù)的節(jié)點(diǎn),以使得目的樹(shù)與源樹(shù)的修改同步。當(dāng)為顯示/編輯目的樹(shù)提供必要的處理的插件(例如HTML單元50)接收了指示目的樹(shù)已經(jīng)被修改的變化事件時(shí),該插件通過(guò)參考被修改的目的樹(shù)而對(duì)顯示進(jìn)行更新。通過(guò)執(zhí)行將詞匯轉(zhuǎn)換為另一主要詞匯的上述結(jié)構(gòu),即使是以少數(shù)用戶使用的局部詞匯來(lái)描述文檔,也能夠正確顯示文檔,并能夠相應(yīng)地提供理想的編輯環(huán)境。文檔處理裝置20顯示和/或編輯文檔的操作將在下文中描述。當(dāng)文檔處理裝置20載入待處理的文檔時(shí),DOM構(gòu)造器34從XML文檔生成DOM樹(shù)。主控單元22或編輯單元24通過(guò)參考待處理的XML文檔的命名空間來(lái)確定哪個(gè)詞匯描述XML文檔。如果與詞匯相對(duì)應(yīng)的插件安裝在文檔處理裝置20中,則該插件被載入以顯示/編輯文檔。另一方面,如果插件并未安裝其中,則進(jìn)行檢查以查看是否存在定義文件。如果存在定義文件,則定義文件獲取單元84獲取該定義文件,并根據(jù)定義生成目的樹(shù),以使得能夠通過(guò)與被映射成的詞匯相對(duì)應(yīng)的插件來(lái)顯示/編輯文檔。如果該文檔是包含多個(gè)詞匯的復(fù)合文檔,則通過(guò)與各詞匯相對(duì)應(yīng)的插件來(lái)顯示/編輯該文檔的相關(guān)部分,以下將詳細(xì)描述。如果不存在定義文件,則顯示文檔的源或樹(shù)型結(jié)構(gòu),并在顯示屏中進(jìn)行編輯。圖2示出了待處理的XML文檔的一個(gè)實(shí)施例。根據(jù)該示例性表示,XML文檔用于管理與學(xué)生已獲得的評(píng)分或分?jǐn)?shù)(marks)相關(guān)的數(shù)據(jù)。作為XML文檔的上部節(jié)點(diǎn)的組件“marks”包括在“marks”下方為各個(gè)學(xué)生設(shè)置的多個(gè)組件“student”。組件“student”具有屬性“name”,并包括作為子元素的學(xué)科“Japanese”、“Math”(數(shù)學(xué))、“Science”以及“Social”(社會(huì)科學(xué))。屬性“name”存儲(chǔ)學(xué)生的姓名。組件“Japanese”、“Math”、“Science”和“Social”存儲(chǔ)分別為日語(yǔ)、數(shù)學(xué)、自然科學(xué)和社會(huì)科學(xué)的學(xué)科的測(cè)試成績(jī)。例如,姓名為“A”的學(xué)生的分?jǐn)?shù)是日語(yǔ)為“90”、數(shù)學(xué)為“50”、自然科學(xué)為“75”以及社會(huì)科學(xué)為“60”。下文中,該文檔中使用的詞匯(標(biāo)簽集)被稱作“分?jǐn)?shù)管理詞匯”。由于根據(jù)本示例性實(shí)施方案的文檔處理裝置20不具有與分?jǐn)?shù)管理詞匯的顯示和/或編輯相符或能夠處理分?jǐn)?shù)管理詞匯的顯示和/或編輯的插件,因此,將使用以上描述的VC單元80,以不使用源顯示和樹(shù)顯示的其它顯示方法來(lái)顯示該文檔。也就是說(shuō),通過(guò)準(zhǔn)備定義文件,使得分?jǐn)?shù)管理詞匯可映射為已具有插件的另一詞匯,例如HTML或SVG。下面將要進(jìn)行的說(shuō)明是在假設(shè)已經(jīng)具備了定義文件的情況下進(jìn)行的,不過(guò)對(duì)于用戶本身用以創(chuàng)建定義文件所必需的用戶界面將在后面描述。圖3示出了圖2中所示的XML文檔映射為以HTML描述的表的一個(gè)實(shí)施例。在圖3所示的實(shí)施例中,以分?jǐn)?shù)管理詞匯描述的“student”節(jié)點(diǎn)與以HTML描述的表(“TABLE”節(jié)點(diǎn))的行(“TR”節(jié)點(diǎn))相關(guān)。各行的第一列與屬性值“name”相對(duì)應(yīng),第二列與“Japanese”節(jié)點(diǎn)的元素值相對(duì)應(yīng),第三列與“Math”節(jié)點(diǎn)的元素值相對(duì)應(yīng),第四列與“Science”節(jié)點(diǎn)的元素值相對(duì)應(yīng),而第五列與“Social”節(jié)點(diǎn)的元素值相對(duì)應(yīng)。因此,圖2所示的XML文檔能以HTML的列表格式來(lái)顯示。此外,這些屬性值和元素值被指定為能夠編輯,以使得用戶能夠使用HTML單元50的編輯功能在顯示屏上對(duì)這些值進(jìn)行編輯。在第六列中,指定了用來(lái)計(jì)算日語(yǔ)、數(shù)學(xué)、自然科學(xué)以及社會(huì)科學(xué)的分?jǐn)?shù)的加權(quán)平均的運(yùn)算表達(dá)式,并顯示每個(gè)學(xué)生的分?jǐn)?shù)的平均值。以這種方式,通過(guò)在定義文件中指定運(yùn)算表達(dá)式來(lái)完成更靈活的顯示,從而提高用戶在進(jìn)行編輯時(shí)的便利性。在圖3所示的實(shí)施例中,將對(duì)第六列的編輯指定為不允許,以使得不能單獨(dú)對(duì)平均值本身進(jìn)行編輯。因此,在映射定義中,能夠指定可編輯或不能編輯,以避免用戶可能的錯(cuò)誤操作。圖4表示定義文件的一個(gè)實(shí)施例,以將圖2所示的XML文檔映射為圖3所示的表。該定義文件通過(guò)被定義用于和定義文件一起使用的腳本語(yǔ)言來(lái)描述。在圖4所示的實(shí)施例中,“addstudent”和“deletestudent”被定義為命令,并分別涉及將節(jié)點(diǎn)“student”插入源樹(shù)中的操作以及將節(jié)點(diǎn)“student”從源樹(shù)中刪除的操作。模板描述了諸如“name”和“Japanese”的標(biāo)題顯示于表的第一行中,而節(jié)點(diǎn)“student”的內(nèi)容顯示于第二行及其隨后的行中。在顯示節(jié)點(diǎn)“student”內(nèi)容的模板中,包含“text-of”的項(xiàng)表示允許進(jìn)行編輯,而包含“value-of”的項(xiàng)表示不允許進(jìn)行編輯。在這些顯示了節(jié)點(diǎn)“student”內(nèi)容的行中,在第六行中描述了運(yùn)算表達(dá)式“(srcjapanese+srcmath+scrscience+scr;social)div4”。這意味著顯示學(xué)生的分?jǐn)?shù)的平均值。圖5示出了將圖2所示的由分?jǐn)?shù)管理詞匯描述的XML文檔利用圖3所示的對(duì)應(yīng)關(guān)系映射為HTML以使其顯示在顯示屏上時(shí),顯示屏的一個(gè)實(shí)施例。在表90各行中從左至右顯示的是各學(xué)生的姓名,以及日語(yǔ)分?jǐn)?shù)、數(shù)學(xué)分?jǐn)?shù)、自然科學(xué)分?jǐn)?shù)、社會(huì)科學(xué)分?jǐn)?shù)及其平均值。用戶能夠在屏幕上對(duì)XML文檔進(jìn)行編輯。例如,當(dāng)?shù)诙械谌兄械闹底優(yōu)椤?0”時(shí),源樹(shù)中與該節(jié)點(diǎn)相對(duì)應(yīng)的元素值(亦即學(xué)生“B”的數(shù)學(xué)分?jǐn)?shù))變?yōu)椤?0”。此時(shí),為了使目的樹(shù)與源樹(shù)一致,目的樹(shù)的相應(yīng)部分因此而改變,從而使得HTML單元50能夠根據(jù)改變的目的樹(shù)來(lái)對(duì)顯示進(jìn)行更新。因此,學(xué)生“B”的數(shù)學(xué)分?jǐn)?shù)變?yōu)椤?0”,而平均值相應(yīng)地變?yōu)椤?5”。在圖5所示的屏幕上,例如“addstudent”和“deletestudent”的命令被顯示為菜單,如圖4所示的定義文件中所定義的那樣。當(dāng)用戶從這些命令中選擇一個(gè)命令時(shí),節(jié)點(diǎn)“student”增加至源樹(shù)中或從源樹(shù)中刪除。以這種方式,利用根據(jù)本實(shí)施方案的文檔處理裝置20,不僅能夠?qū)Ψ旨?jí)結(jié)構(gòu)下端中的組件的元素值進(jìn)行編輯,而且能夠?qū)υ摲旨?jí)結(jié)構(gòu)進(jìn)行編輯。具有上述樹(shù)型結(jié)構(gòu)的編輯功能能夠以命令的形式顯現(xiàn)給用戶。此外,增加或刪除表中的行的命令可例如與增加或刪除節(jié)點(diǎn)“student”的操作相關(guān)。嵌入其它詞匯中的命令可顯現(xiàn)給用戶。該表可用作輸入模板,以使得對(duì)于新學(xué)生的分?jǐn)?shù)數(shù)據(jù)能夠以填空(fill-in-the-blank)的方式來(lái)增加。如上所述,在使用HTML單元50的顯示/編輯功能的同時(shí),以分?jǐn)?shù)管理詞匯描述的文檔可通過(guò)VC功能來(lái)編輯。圖6示出了由定義文件生成單元86顯現(xiàn)給用戶的圖形用戶界面的一個(gè)實(shí)施例,以使用戶能夠生成定義文件。待映射的XML文檔在屏幕的左側(cè)區(qū)域91顯示為樹(shù)。被映射成的XML文檔的屏幕布局顯示在屏幕的右側(cè)區(qū)域92中。該屏幕布局可通過(guò)HTML單元50來(lái)編輯,用戶在屏幕的右側(cè)區(qū)域92中確定并創(chuàng)建用于對(duì)文檔進(jìn)行顯示的屏幕布局。例如,使用諸如鼠標(biāo)等的指示設(shè)備將屏幕的左側(cè)區(qū)域91中顯示的XML文檔的待映射的節(jié)點(diǎn)拖動(dòng)并放置到屏幕的左側(cè)區(qū)域91中的HTML屏幕布局中,以指定映射源處的節(jié)點(diǎn)與映射目的處的節(jié)點(diǎn)之間的連接。例如,當(dāng)作為元素“student”的子元素的“math”被放置到HTML屏幕上的表90中第一行與第三行的交叉處時(shí),第三列中的“math”節(jié)點(diǎn)與“TD”節(jié)點(diǎn)之間建立連接。各節(jié)點(diǎn)均被如此被指定為可編輯或者不可編輯。此外,可在顯示屏中嵌入運(yùn)算表達(dá)式。當(dāng)完成屏幕編輯時(shí),定義文件生成單元86生成定義文件,其描述屏幕布局與節(jié)點(diǎn)之間的連接。已經(jīng)開(kāi)發(fā)出了能夠處理主要詞匯(例如XHTML(可擴(kuò)展超文本標(biāo)記語(yǔ)言)、MathML(數(shù)學(xué)標(biāo)記語(yǔ)言)以及SVG(可縮放矢量圖形))的瀏覽器或編輯器。但是,不可能開(kāi)發(fā)出適于以自創(chuàng)詞匯描述的所有文檔(例如圖2中所示的文檔)的瀏覽器或編輯器。然而,如果如上所述創(chuàng)建了用于映射為其它詞匯的定義文件,那么以自創(chuàng)詞匯描述的文檔就能夠使用VC功能來(lái)顯示和/或編輯,而不需不斷開(kāi)發(fā)新的瀏覽器或編輯器。圖7示出了由定義文件生成單元86生成的屏幕布局的另一實(shí)施例。在圖7所示的實(shí)施例中,在屏幕上產(chǎn)生表90和圓形圖92用于顯示以分?jǐn)?shù)管理詞匯描述的XML文檔。圓形圖93以SVG描述。如以下將討論的那樣,根據(jù)本示例性實(shí)施方案的文檔處理裝置20能夠?qū)υ趩蝹€(gè)XML文檔內(nèi)以多個(gè)詞匯描述的復(fù)合文檔進(jìn)行處理。這就是為什么以HTML描述的表90以及以SVG描述的圓形圖93能夠顯示在同一屏幕上的原因。圖8示出了用于由文檔處理裝置20處理的XML文檔的媒體顯示,在一個(gè)優(yōu)選但非限制性的實(shí)施方案中,其為編輯屏幕。在圖8所示的實(shí)施例中,單個(gè)屏幕被分割為多個(gè)區(qū)域,而待處理的XML文檔在各個(gè)區(qū)域以多種不同顯示格式顯示。該文檔的源在區(qū)域94中顯示,該文檔的樹(shù)結(jié)構(gòu)在區(qū)域95中顯示,而圖5所示的、以HTML描述的表在區(qū)域96中顯示。該文檔在這些區(qū)域中的任意區(qū)域均可被編輯,當(dāng)用戶對(duì)這些區(qū)域中的任意區(qū)域的內(nèi)容進(jìn)行編輯時(shí),源樹(shù)將被相應(yīng)修改,從而負(fù)責(zé)各屏幕顯示的各插件對(duì)屏幕進(jìn)行更新,以使得對(duì)源樹(shù)的上述修改有效。具體而言,負(fù)責(zé)顯示對(duì)應(yīng)編輯屏幕的插件的顯示單元被預(yù)先注冊(cè)為變化事件的監(jiān)聽(tīng)器,所述變化事件提供源樹(shù)中發(fā)生了改變的通知。當(dāng)源樹(shù)被任意插件或VC單元80修改時(shí),顯示編輯屏幕的所有顯示單元接收發(fā)出的一個(gè)或多個(gè)變化事件,并從而更新屏幕。此時(shí),如果插件正在通過(guò)VC功能進(jìn)行顯示,則VC單元80根據(jù)對(duì)源樹(shù)的修改來(lái)修改目的樹(shù)。之后,插件的顯示單元通過(guò)參考上述經(jīng)過(guò)修改的目的樹(shù)而對(duì)屏幕進(jìn)行修改。例如,當(dāng)通過(guò)專用插件來(lái)實(shí)現(xiàn)源顯示和樹(shù)型視圖顯示時(shí),源顯示插件和樹(shù)顯示插件通過(guò)直接參考源樹(shù)而不是利用目的樹(shù)來(lái)實(shí)現(xiàn)它們的顯示。在這種情況下,當(dāng)在屏幕的任何區(qū)域中完成編輯時(shí),源顯示插件和樹(shù)顯示插件通過(guò)參考修改后的源樹(shù)來(lái)更新屏幕。同樣,負(fù)責(zé)顯示區(qū)域96的HTML單元50通過(guò)參考目的樹(shù)來(lái)更新屏幕,該目的樹(shù)已根據(jù)對(duì)源樹(shù)的修改而做了修改。源顯示和樹(shù)型視圖顯示也可通過(guò)使用VC功能而實(shí)現(xiàn)。也就是說(shuō),例如,如果HTML被用于源和樹(shù)型結(jié)構(gòu)的布局,則XML文檔可映射為HTML以通過(guò)HTML單元50來(lái)顯示。在這種情況下,將生成具有源格式、樹(shù)格式、表格式的三個(gè)目的樹(shù)。如果在屏幕上的三個(gè)區(qū)域的任意一個(gè)中進(jìn)行編輯,則VC單元80對(duì)源樹(shù)進(jìn)行修改,并在之后分別對(duì)具有源格式、樹(shù)格式、表格式的三個(gè)目的樹(shù)進(jìn)行修改。然后,HTML單元50通過(guò)參考三個(gè)目的樹(shù)來(lái)更新屏幕的三個(gè)區(qū)域。以這種方式,在單個(gè)屏幕上以多種顯示格式顯示文檔,從而提高了用戶的便利性。例如,用戶能夠利用表90或類似物來(lái)以視覺(jué)上易于理解的格式顯示和編輯文檔,同時(shí)通過(guò)源顯示或樹(shù)顯示來(lái)理解文檔的分級(jí)結(jié)構(gòu)。在上述實(shí)施例中,單個(gè)屏幕被劃分為多個(gè)顯示格式,它們被同時(shí)顯示。但是,也可在單個(gè)屏幕上顯示單個(gè)顯示格式,從而可通過(guò)用戶指令來(lái)切換顯示格式。在這種情況下,主控單元22從用戶處接收用于切換顯示格式的請(qǐng)求,并隨后命令對(duì)應(yīng)的插件進(jìn)行顯示切換。圖9示出了由文檔處理裝置20編輯的XML文檔的另一實(shí)施例。在圖9所示的XML文檔中,XHTML文檔被嵌入SVG文檔的“foreignObject”標(biāo)簽中,而該XHTML文檔包含以MathML描述的公式。在這種情況下,編輯單元24通過(guò)參考命名空間而將描繪任務(wù)分配或指派給適當(dāng)?shù)娘@示系統(tǒng)。在圖9所示的實(shí)施例中,編輯單元24首先使SVG單元60描繪矩形,然后使HTML單元50描繪XHTML文檔。此外,編輯單元24使MathML單元(未示出)描繪公式。以這種方式,包含多個(gè)詞匯的復(fù)合文檔被適當(dāng)?shù)仫@示。圖10示出了顯示結(jié)果。在對(duì)文檔進(jìn)行編輯期間,可向用戶顯示編輯菜單。該菜單可對(duì)應(yīng)于復(fù)合文檔的待編輯部分。因此,當(dāng)用戶在顯示媒介上移動(dòng)光標(biāo)(或者托架(carriage))時(shí),待顯示的菜單可根據(jù)光標(biāo)的位置被切換。也就是說(shuō),當(dāng)光標(biāo)位于顯示SVG文檔的區(qū)域中時(shí),顯現(xiàn)給用戶的菜單響應(yīng)于SVG單元60或響應(yīng)于由用于映射SVG文檔的定義文件所定義的命令。當(dāng)光標(biāo)位于顯示XHTML文檔的區(qū)域中時(shí),顯現(xiàn)給用戶的菜單響應(yīng)于HTML單元50或響應(yīng)于由用于映射XHTML文檔的定義文件所定義的命令。因此,可根據(jù)編輯位置提供適當(dāng)?shù)挠脩艚缑妗H绻趶?fù)合文檔中不存在與詞匯相符的適當(dāng)插件或映射定義,則以該詞匯描述的部分可以源或樹(shù)格式顯示。在傳統(tǒng)實(shí)踐中,當(dāng)要打開(kāi)在某個(gè)文檔中嵌有其它文檔的復(fù)合文檔時(shí),如果沒(méi)有安裝能夠顯示該嵌入文檔的應(yīng)用程序,則它們的內(nèi)容不能顯示。但是,根據(jù)本實(shí)施方案,由文本數(shù)據(jù)組成的XML文檔可顯示為源或樹(shù)格式,從而能夠確定其內(nèi)容。這是基于文本的XML文檔或類似文檔的一個(gè)特征。以基于文本的語(yǔ)言來(lái)描述的數(shù)據(jù)的另一個(gè)有益方面例如在于,在同一文檔中以其它詞匯描述的部分的數(shù)據(jù)可被該復(fù)合文檔中以某個(gè)詞匯描述的另一文檔所參考。此外,當(dāng)在該文檔中進(jìn)行搜索時(shí),嵌入圖片(例如SVG)中的字符串也可作為被搜索的候選者。在以某個(gè)詞匯描述的文檔中,可使用屬于其它詞匯的標(biāo)簽。雖然該XML文檔通常并不有效,但只要它結(jié)構(gòu)良好(well-formed),就可作為有效的XML文檔而被處理。在這種情況下,被插入的屬于其它詞匯的標(biāo)簽可使用定義文件來(lái)進(jìn)行映射。例如,可使用諸如“Important”和“MostImportant”的標(biāo)簽以通過(guò)強(qiáng)調(diào)的方式來(lái)顯示這些標(biāo)簽周圍的部分,或者可將這些標(biāo)簽以重要性的順序來(lái)排序以進(jìn)行相應(yīng)顯示。當(dāng)用戶在編輯顯示器(例如,如圖10所示的屏幕)上對(duì)文檔進(jìn)行編輯時(shí),負(fù)責(zé)對(duì)被編輯的部分進(jìn)行處理的插件或VC單元80對(duì)源樹(shù)進(jìn)行修改。能夠?yàn)樵礃?shù)中的各個(gè)節(jié)點(diǎn)注冊(cè)對(duì)于變化事件的監(jiān)聽(tīng)器。通常,與屬于各個(gè)節(jié)點(diǎn)的詞匯相符的插件的顯示單元或VC單元80被注冊(cè)為監(jiān)聽(tīng)器。當(dāng)源樹(shù)被修改時(shí),DOM提供器32從被修改的節(jié)點(diǎn)向較高層次探索。如果存在注冊(cè)的監(jiān)聽(tīng)器,則DOM提供器32向該監(jiān)聽(tīng)器發(fā)出變化事件。例如,參考如圖9中所示的文檔,如果位于<html>節(jié)點(diǎn)下方的節(jié)點(diǎn)被修改,那么該變化事件被通報(bào)給被注冊(cè)為<html>節(jié)點(diǎn)的監(jiān)聽(tīng)器的HTML單元50。在同一時(shí)刻,該變化事件被通報(bào)給被注冊(cè)為位于<html>節(jié)點(diǎn)上方的<svg>節(jié)點(diǎn)中的監(jiān)聽(tīng)器的SVG單元60。此時(shí),HTML單元50通過(guò)參考被修改的源樹(shù)而更新顯示。由于屬于SVG單元60的詞匯的節(jié)點(diǎn)本身并未被修改,因此SVG單元60可忽視該變化事件。根據(jù)編輯的內(nèi)容,由HTML單元50對(duì)顯示進(jìn)行的修改可改變總體布局。在這種情況下,對(duì)于各插件的各個(gè)顯示區(qū)域的布局將由管理屏幕布局的組件(例如,負(fù)責(zé)顯示最高節(jié)點(diǎn)的插件)來(lái)更新。例如,當(dāng)由HTML單元50顯示的區(qū)域較之以前變大時(shí),HTML單元50首先描繪HTML單元50本身所負(fù)責(zé)的區(qū)域,然后確定顯示區(qū)域的大小。然后,顯示區(qū)域的大小被通報(bào)給管理屏幕布局的組件,以請(qǐng)求對(duì)布局進(jìn)行更新。負(fù)責(zé)屏幕布局的組件一收到該通知便為各個(gè)插件重新布置顯示區(qū)域。因此,被編輯的部分的顯示被適當(dāng)更新,且總體屏幕布局被更新。用以實(shí)現(xiàn)具有該先決條件技術(shù)的文檔處理裝置20的功能結(jié)構(gòu)將在下面詳細(xì)描述。文檔處理和管理系統(tǒng)的一個(gè)示例性實(shí)現(xiàn)將在本文中參照?qǐng)D11-29進(jìn)行討論。圖11(a)示出了能夠作為具有本文隨后描述的類型的文檔處理和管理系統(tǒng)的基礎(chǔ)的組件的傳統(tǒng)裝置。裝置10包括具有CPU形式或微處理器形式的處理器11,處理器11通過(guò)通信路徑13(通常實(shí)現(xiàn)為總線)耦合至可為任何當(dāng)前或?qū)?lái)能獲得的ROM和/或RAM存儲(chǔ)形式的存儲(chǔ)器12。用戶輸入14(例如鼠標(biāo)、鍵盤、語(yǔ)音識(shí)別系統(tǒng)或類似設(shè)備)的I/O接口16以及顯示設(shè)備15(或其它用戶接口)也耦合至總線用于與處理器11和存儲(chǔ)器12通信。如本領(lǐng)域所公知的那樣,諸如打印機(jī)、通信調(diào)制解調(diào)器等的其它設(shè)備可耦合至該裝置。該裝置可為獨(dú)立設(shè)備或者具有將多個(gè)終端以及一個(gè)或多個(gè)服務(wù)器耦合在一起的聯(lián)網(wǎng)形式,或者以本領(lǐng)域公知的多種設(shè)置方式的其中之一。本發(fā)明并不受這些組件的結(jié)構(gòu)、它們的集中式或分布式體系結(jié)構(gòu)或者多種組件的通信方式的限制。另外,應(yīng)該注意到,本文所討論的系統(tǒng)和示例性實(shí)現(xiàn)包括幾種具有多種功能的組件和子組件。應(yīng)該注意到,這些組件和子組件可僅使用硬件、僅使用軟件以及使用硬件和軟件的組合來(lái)實(shí)現(xiàn),以提供上述的多種功能。另外,硬件、軟件及其組合可使用通用計(jì)算裝置或使用專用硬件或使用通用計(jì)算裝置和專用硬件的組合來(lái)實(shí)現(xiàn)。因此,組件或子組件的結(jié)構(gòu)包括運(yùn)行特定軟件的通用/專用計(jì)算裝置,以提供該組件或子組件的功能。圖11(b)示出了一種示例性文檔處理和管理系統(tǒng)的總體方框圖。文檔在上述文檔處理和管理系統(tǒng)中被創(chuàng)建和編輯。這些文檔能夠以具有標(biāo)記語(yǔ)言的特征的任何語(yǔ)言來(lái)表述(例如XML)。同樣,為方便起見(jiàn),已經(jīng)創(chuàng)建了用于特定組件和子組件的術(shù)語(yǔ)和名稱。但是,這些不應(yīng)被視作對(duì)本文公開(kāi)的一般教導(dǎo)范圍造成了限制。所述文檔處理和管理系統(tǒng)可被視為具有兩個(gè)基本組件。一個(gè)組件是“執(zhí)行環(huán)境”101,它是處理和管理系統(tǒng)運(yùn)行的環(huán)境。例如,執(zhí)行環(huán)境提供了協(xié)助系統(tǒng)以及用戶對(duì)文檔進(jìn)行處理和管理的基本效用和功能。另一組件是“應(yīng)用程序組件”102,它由在執(zhí)行環(huán)境中運(yùn)行的應(yīng)用程序構(gòu)成。這些應(yīng)用程序包括文檔本身及其各種表述。1.執(zhí)行環(huán)境執(zhí)行環(huán)境101的關(guān)鍵組件是程序調(diào)用器103。程序調(diào)用器103是被訪問(wèn)以啟動(dòng)文檔處理和管理系統(tǒng)的基本程序。例如,當(dāng)用戶登錄并啟動(dòng)文檔處理和管理系統(tǒng)時(shí),程序調(diào)用器103被執(zhí)行。程序調(diào)用器103能夠(例如但并非限制)讀取并處理作為插件增加至文檔處理和管理系統(tǒng)的功能、啟動(dòng)并運(yùn)行應(yīng)用程序、以及讀取與文檔相關(guān)的性質(zhì)。當(dāng)用戶希望發(fā)起計(jì)劃在執(zhí)行環(huán)境中運(yùn)行的應(yīng)用程序時(shí),程序調(diào)用器103找到、發(fā)起然后執(zhí)行該應(yīng)用程序。例如,當(dāng)用戶希望對(duì)已經(jīng)載入到系統(tǒng)中的文檔進(jìn)行編輯(它是執(zhí)行環(huán)境中的一種應(yīng)用程序)時(shí),程序調(diào)用器103首先找到該文檔,然后執(zhí)行用于載入和編輯該文檔所必需的功能。程序調(diào)用器103聯(lián)接至幾個(gè)組件,例如插件子系統(tǒng)104、命令子系統(tǒng)105以及資源模塊109。這些組件將隨后進(jìn)行更詳細(xì)描述。1.a.插件子系統(tǒng)插件子系統(tǒng)104是向文檔處理和管理系統(tǒng)增加功能的一種高度靈活和有效的設(shè)備。插件子系統(tǒng)104也能夠被用來(lái)修改和去除文檔處理和管理系統(tǒng)中存在的功能。此外,可使用插件子系統(tǒng)增加或修改多種功能。例如,如之前所提以及隨后將詳細(xì)描述的那樣,插件子系統(tǒng)可用于增加功能“editlet”,其可操作以有助于在屏幕上呈現(xiàn)文檔。插件editlet也有助于對(duì)增加至系統(tǒng)的詞匯進(jìn)行編輯。插件子系統(tǒng)104包括服務(wù)代理1041。服務(wù)代理1041管理增加至文檔處理和管理系統(tǒng)的插件,從而代理已增加至文檔處理和管理系統(tǒng)的服務(wù)。代表期望功能的單個(gè)功能以“服務(wù)”1042的形式被增加至系統(tǒng)。服務(wù)1042的可用類型包括但不限于應(yīng)用程序服務(wù)、區(qū)工廠服務(wù)、editlet服務(wù)、命令工廠服務(wù)、連接xpath服務(wù)、CSS計(jì)算服務(wù)等。這些服務(wù)及其與系統(tǒng)其余部分的關(guān)系將隨后詳細(xì)描述,以更好地理解文檔處理和管理系統(tǒng)。插件和服務(wù)之間的關(guān)系是,插件是可包括一個(gè)或多個(gè)服務(wù)提供器的單元,各個(gè)服務(wù)提供器具有與之相關(guān)的一個(gè)或多個(gè)類別的服務(wù)。例如,使用具有適當(dāng)軟件應(yīng)用程序的單個(gè)插件,能將一個(gè)或多個(gè)服務(wù)增加至系統(tǒng),從而向系統(tǒng)增加相應(yīng)的功能。即使對(duì)于給定服務(wù)(例如editlet服務(wù)),也可在各自的插件中提供處理單個(gè)或多個(gè)詞匯的能力。1.b.命令子系統(tǒng)命令子系統(tǒng)105被用來(lái)執(zhí)行與文檔的處理相關(guān)的命令形式的指令。用戶可通過(guò)執(zhí)行一系列指令而執(zhí)行對(duì)文檔的操作。例如,通過(guò)發(fā)出命令形式的指令,用戶在文檔管理系統(tǒng)中處理XML文檔,并編輯與該XML文檔相對(duì)應(yīng)的XMLDOM樹(shù)。這些命令可利用鍵盤敲打、鼠標(biāo)點(diǎn)擊或其它有效的用戶接口動(dòng)作而輸入。有時(shí),能夠通過(guò)命令來(lái)執(zhí)行一個(gè)以上的指令。在這種情況下,這些指令被封裝成單個(gè)命令并連續(xù)執(zhí)行。例如,用戶可能希望將錯(cuò)誤詞語(yǔ)替換為正確詞語(yǔ)。在這種情況下,第一指令可用以在文檔中找尋錯(cuò)誤詞語(yǔ)。第二指令可用以刪除該錯(cuò)誤詞語(yǔ)。第三指令可用以輸入正確詞語(yǔ)。這三個(gè)指令可被封裝成單個(gè)命令。在某些示例中,命令可具有相關(guān)功能,例如,下面將要詳細(xì)討論的“撤消”功能。這些功能可隨后分配給用來(lái)創(chuàng)建對(duì)象的基類。命令子系統(tǒng)105的一個(gè)組件是命令調(diào)用器1051,命令調(diào)用器1051可操作為選擇性地提供并執(zhí)行命令。雖然圖11(b)中僅示出了一個(gè)命令調(diào)用器,但也可使用一個(gè)以上的命令調(diào)用器并同時(shí)執(zhí)行一個(gè)以上的命令。命令調(diào)用器1051維護(hù)執(zhí)行命令所需的功能和類。在操作中,要執(zhí)行的命令1052被置于隊(duì)列1053中。命令調(diào)用器創(chuàng)建連續(xù)執(zhí)行的命令線程。如果在命令調(diào)用器中沒(méi)有正在執(zhí)行的命令,則由命令調(diào)用器1051執(zhí)行待執(zhí)行的命令1052。如果命令調(diào)用器正在執(zhí)行命令,則新的命令被置于命令隊(duì)列1053的末尾。不過(guò),對(duì)于各命令調(diào)用器1051而言,一次僅執(zhí)行一個(gè)命令。如果指定的命令執(zhí)行失敗,則命令調(diào)用器1051執(zhí)行命令異常??捎擅钫{(diào)用器1051執(zhí)行的命令的類型包括但不限于可撤消命令1054、異步命令1055以及詞匯連接命令1056??沙废?054是那些如果用戶希望就能夠回退其效果的命令??沙废畹氖纠秊榧羟小?fù)制、插入文本等。在操作中,當(dāng)用戶突出文檔的一部分并向該部分應(yīng)用剪切命令時(shí),如果需要,通過(guò)使用可撤消命令,可使得被剪切的部分“恢復(fù)原樣(uncut)”。詞匯連接命令1056被載入詞匯連接描述符腳本文件中。詞匯連接命令1056是能夠由程序員定義的用戶指定命令。這些命令可以是更抽象命令的組合,例如,用于增加X(jué)ML片段、刪除XML片段、設(shè)置屬性等。這些命令特別涉及對(duì)文檔進(jìn)行編輯。異步命令1055是用于載入或保存由系統(tǒng)執(zhí)行的文檔的命令,異步命令1055與可撤消命令或VC命令異步地執(zhí)行。與可撤消命令不同,異步命令不能取消。1.c.資源資源109是向不同的類提供某些功能的對(duì)象。例如,串資源、圖標(biāo)和設(shè)定鍵綁定是系統(tǒng)中使用的資源。2.應(yīng)用程序組件應(yīng)用程序組件102,即文檔處理系統(tǒng)的第二個(gè)主要特征,在執(zhí)行環(huán)境101中運(yùn)行。概括而言,應(yīng)用程序組件102包括實(shí)際文檔,實(shí)際文檔包括其在系統(tǒng)內(nèi)的多個(gè)邏輯和物理表述。應(yīng)用程序組件102還包括系統(tǒng)的、用來(lái)管理文檔的組件。應(yīng)用程序組件102進(jìn)一步包括用戶應(yīng)用程序106、應(yīng)用程序核心108、用戶界面107以及核心組件110。2.a.用戶應(yīng)用程序用戶應(yīng)用程序106連同程序調(diào)用器103一起被載入到系統(tǒng)中。用戶應(yīng)用程序106是將文檔、文檔的多種表述以及與文檔進(jìn)行交互所需的用戶界面特征結(jié)合在一起的粘合劑(glue)。例如,用戶可能希望創(chuàng)建作為工程(project)一部分的一套文檔。載入這些文檔,創(chuàng)建用于文檔的適當(dāng)表述,增加作為用戶應(yīng)用程序106一部分的用戶界面功能。換言之,用戶應(yīng)用程序106將文檔及其表述的各個(gè)方面結(jié)合在一起使得用戶能夠與形成工程一部分的文檔進(jìn)行交互。一旦創(chuàng)建了用戶應(yīng)用程序106,每當(dāng)用戶希望與形成工程一部分的文檔進(jìn)行交互時(shí),用戶就能夠簡(jiǎn)單地將用戶應(yīng)用程序106載入到執(zhí)行環(huán)境中。2.b.核心組件核心組件110提供了在多個(gè)窗格之間共享文檔的一種方法。如將在隨后詳細(xì)討論的那樣,窗格表述DOM樹(shù),并處理屏幕的物理布局。例如,物理屏幕包括在屏幕內(nèi)的多個(gè)窗格用于描述各條信息。實(shí)際上,由用戶在屏幕上查看的文檔可在一個(gè)或多個(gè)窗格中顯示。此外,兩個(gè)不同的文檔可以出現(xiàn)在屏幕上的兩個(gè)不同窗格中。屏幕的物理布局還可以具有樹(shù)型形式,如圖11(c)所示。因此,如果組件1083要作為窗格顯示在屏幕上,則該窗格可被實(shí)現(xiàn)為根窗格1084。作為一種選擇,它也可以是子窗格1085。根窗格1084是窗格樹(shù)根部的窗格,而子窗格1085是除了根窗格1084之外的任何窗格。核心組件110也提供字體,并充當(dāng)用于文檔的多個(gè)功能性操作的源,例如,工具包(toolkit)。由核心組件110執(zhí)行的任務(wù)的一個(gè)示例是在多個(gè)窗格之間移動(dòng)鼠標(biāo)光標(biāo)。被執(zhí)行的任務(wù)的另一個(gè)示例是標(biāo)記一個(gè)窗格中的文檔的一部分,并將其復(fù)制到包含不同文檔的另一窗格上。2.c.應(yīng)用程序核心如上所述,應(yīng)用程序組件102由被系統(tǒng)處理和管理的文檔組成。應(yīng)用程序組件102包括對(duì)于系統(tǒng)內(nèi)的文檔的多種邏輯和物理表述。應(yīng)用程序核心108是應(yīng)用程序組件102的組件。其功能是保持實(shí)際文檔及其內(nèi)的所有數(shù)據(jù)。應(yīng)用程序核心108包括文檔管理器1081和文檔1082本身。文檔管理器1081的多個(gè)方面將在隨后更詳細(xì)描述。文檔管理器1081管理文檔1082。文檔管理器1081也連接至根窗格1084、子窗格1085、剪貼板實(shí)用程序1086以及快照實(shí)用程序1087。剪貼板實(shí)用程序1086提供了保持用戶決定增加至剪貼板的部分文檔的一種方法。例如,用戶可能希望剪切文檔的一部分,并將其保存到新的文檔上,用于稍后查看。在這種情況下,剪切的部分被增加至剪貼板1086??煺?snapshot)實(shí)用程序1087也將在稍后描述,從而當(dāng)應(yīng)用程序從一個(gè)狀態(tài)變?yōu)榱硪粻顟B(tài)時(shí),能夠記住應(yīng)用程序的當(dāng)前狀態(tài)。2.d.用戶界面應(yīng)用程序102的另一組件是用戶界面107,其為用戶提供一種與系統(tǒng)進(jìn)行物理交互的方式。例如,以物理接口1070來(lái)實(shí)現(xiàn)用戶界面時(shí),用戶使用用戶界面上載、刪除、編輯和管理文檔。用戶界面107包括框架1071、菜單欄1072、狀態(tài)欄1073以及URL欄1074。如通常公知的那樣,框架可被視為顯示(例如物理屏幕)的活動(dòng)區(qū)域。菜單欄1072是屏幕的、包括為用戶提供選項(xiàng)的菜單的區(qū)域。狀態(tài)欄1073是屏幕的、顯示應(yīng)用程序的執(zhí)行狀態(tài)的區(qū)域。URL欄1074提供了輸入用于在互聯(lián)網(wǎng)上定位的URL地址的區(qū)域。3.文檔管理器和相關(guān)的數(shù)據(jù)結(jié)構(gòu)圖12示出了文檔管理器1081的進(jìn)一步細(xì)節(jié)。圖12包括被用來(lái)在文檔處理和管理系統(tǒng)內(nèi)表述文檔的數(shù)據(jù)結(jié)構(gòu)和組件。為了更好的理解,在這部分描述的組件通過(guò)利用模型-視圖-控制器(MVC)表述范例來(lái)進(jìn)行描述。文檔管理器1081包括文檔容器(containter)203,文檔容器203保持并容納文檔處理和管理系統(tǒng)中的所有文檔。聯(lián)接至文檔管理器1081的工具包201為文檔管理器1081的使用提供了各種工具。例如,“DOM服務(wù)”是由工具包201提供的能夠提供創(chuàng)建、維護(hù)和管理與文檔相對(duì)應(yīng)的DOM所需的所有功能的工具。作為工具包201提供的另一工具的“IO管理器”分別管理向系統(tǒng)的輸入和來(lái)自系統(tǒng)的輸出。同樣地,“流處理器”是一種以比特流方式來(lái)處理文檔上載的工具。這些工具形成了工具包201的組件,不過(guò)并未在圖中明確示出或指定附圖標(biāo)記。根據(jù)MVC范例表述,模型(M)包括文檔的DOM樹(shù)模型202。如上所述,所有文檔均在文檔處理和管理系統(tǒng)中被表述為DOM樹(shù)。文檔也形成文檔容器203的一部分。3.a.DOM模型和區(qū)表述文檔的DOM樹(shù)是具有節(jié)點(diǎn)2021的樹(shù)。作為DOM樹(shù)的子集的區(qū)209包括該DOM樹(shù)內(nèi)部的一個(gè)或多個(gè)所關(guān)注的節(jié)點(diǎn)。例如,僅文檔的一部分可在屏幕上顯現(xiàn)。文檔可見(jiàn)的這一部分可使用“區(qū)”209來(lái)表述。利用被稱作“區(qū)工廠”205的插件來(lái)創(chuàng)建、操作和處理區(qū)。雖然區(qū)表述DOM的一部分,但它也可使用一個(gè)以上的“命名空間”。如本領(lǐng)域中公知的那樣,命名空間是名稱的匯集或集合,這些名稱在該命名空間中是唯一。換言之,一個(gè)命名空間中不能夠出現(xiàn)兩個(gè)相同的名稱。3.b.“方面”(facet)及其與區(qū)的關(guān)系“方面”2022是MVC范例的模型(M)部分內(nèi)的另一組件。它被用來(lái)編輯區(qū)中的節(jié)點(diǎn)?!胺矫妗?022使用不會(huì)影響區(qū)本身的內(nèi)容的執(zhí)行過(guò)程來(lái)組織對(duì)于DOM的訪問(wèn)。如以下將說(shuō)明的那樣,這些過(guò)程執(zhí)行與節(jié)點(diǎn)相關(guān)的有意義且有用的操作。各個(gè)節(jié)點(diǎn)2021具有相應(yīng)的2022。通過(guò)利用“方面”來(lái)執(zhí)行操作而不是直接對(duì)DOM中的節(jié)點(diǎn)進(jìn)行操作,DOM的完整性得以確保。否則,如果直接對(duì)節(jié)點(diǎn)執(zhí)行操作,那么幾個(gè)插件可能同時(shí)對(duì)DOM進(jìn)行改變,從而造成不一致性。盡管在每個(gè)詞匯或每個(gè)節(jié)點(diǎn)的基礎(chǔ)上提供了特定操作,并且這些操作優(yōu)選地提供為API,但是由W3C構(gòu)建的DOM標(biāo)準(zhǔn)定義了用于對(duì)節(jié)點(diǎn)進(jìn)行操作的標(biāo)準(zhǔn)接口。文檔處理/管理系統(tǒng)提供了這種作為“方面”的節(jié)點(diǎn)特定API,并將“方面”聯(lián)接至各個(gè)節(jié)點(diǎn)。這符合DOM標(biāo)準(zhǔn),同時(shí)增加了有用的API。通過(guò)在已應(yīng)用的標(biāo)準(zhǔn)DOM之上增加特定的API而不是為每個(gè)詞匯實(shí)現(xiàn)特定的DOM,可集中處理多種詞匯,并正確地處理其中具有詞匯任意組合的文檔。如上所述,“詞匯”是屬于命名空間的標(biāo)簽(例如XML標(biāo)簽)的集合。如上所述,命名空間具有唯一的名稱集(在該特定情況下為標(biāo)簽集)。詞匯表現(xiàn)為表述XML文檔的DOM樹(shù)的子樹(shù)。這種子樹(shù)包括區(qū)。在特定實(shí)施例中,標(biāo)簽集的邊界由區(qū)來(lái)限定。區(qū)209是利用被稱作“區(qū)工廠服務(wù)”205的服務(wù)而創(chuàng)建的。如上所述,區(qū)209是對(duì)表述文檔的DOM樹(shù)的僅僅一部分的內(nèi)部表述。為了提供對(duì)該文檔的上述部分的訪問(wèn),需要邏輯表述。這種邏輯表述通知計(jì)算機(jī)關(guān)于文檔如何在屏幕上進(jìn)行邏輯顯示。如上所述,“畫(huà)布”(例如畫(huà)布210)是一種可操作為提供與區(qū)相對(duì)應(yīng)的邏輯布局的服務(wù)。另一方面,窗格(例如窗格211)是與由畫(huà)布210提供的邏輯布局相對(duì)應(yīng)的物理屏幕布局。實(shí)際上,用戶僅能看見(jiàn)以字符和圖片形式呈現(xiàn)在顯示屏上的文檔。因此,文檔必須通過(guò)用于在屏幕上描繪字符和圖片的處理來(lái)呈現(xiàn)在屏幕上。根據(jù)由窗格211提供的物理布局,文檔由畫(huà)布210呈現(xiàn)在屏幕上。與區(qū)209相對(duì)應(yīng)的畫(huà)布210是利用“editlet服務(wù)”206來(lái)創(chuàng)建的。文檔的DOM是利用editlet服務(wù)206和畫(huà)布210來(lái)編輯的。為了維護(hù)原始文檔的完整性,editlet服務(wù)206和畫(huà)布服務(wù)210使用與區(qū)209中的一個(gè)或多個(gè)節(jié)點(diǎn)相對(duì)應(yīng)的“方面”2022。這些服務(wù)并不直接操作區(qū)和DOM中的節(jié)點(diǎn)。“方面”是利用來(lái)自MVC范例的(C)組件(即控制器)的命令207來(lái)操作的。用戶通常通過(guò)例如移動(dòng)屏幕上的光標(biāo)和/或鍵入命令而與屏幕進(jìn)行交互。提供屏幕的邏輯布局的畫(huà)布2010接收這些光標(biāo)操作。然后,畫(huà)布2010使得對(duì)“方面”采取相應(yīng)的動(dòng)作。給定這一關(guān)系,光標(biāo)子系統(tǒng)204即作為用于文檔管理器1081的MVC范例的控制器(C)。畫(huà)布2010也具有處理事件的任務(wù)。例如,畫(huà)布2010處理諸如鼠標(biāo)點(diǎn)擊、焦點(diǎn)移動(dòng)和類似的用戶發(fā)起的動(dòng)作等事件。3.c.區(qū)、“方面”、畫(huà)布和窗格之間的關(guān)系概述文檔管理和處理系統(tǒng)內(nèi)的文檔可從至少四個(gè)角度來(lái)觀察,即1)用來(lái)保持文檔管理系統(tǒng)中的文檔的內(nèi)容和結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu);2)不會(huì)影響文檔完整性就能編輯文檔內(nèi)容的方式;3)文檔在屏幕上的邏輯布局;以及4)文檔在屏幕上的物理布局。區(qū)、“方面”、畫(huà)布和窗格分別表述與上述四個(gè)方面相對(duì)應(yīng)的文檔管理系統(tǒng)的組件。3.d.撤消系統(tǒng)如上所述,人們希望對(duì)文檔的任何改變(例如,編輯)應(yīng)該是可撤消的。例如,用戶可執(zhí)行編輯操作,然后決定撤消該改變。參照?qǐng)D12,撤消子系統(tǒng)212是文檔管理器的可撤消組件。撤消管理器2121保存可能被用戶撤消的、對(duì)文檔執(zhí)行的所有操作。例如,用戶可執(zhí)行命令來(lái)將文檔中的詞匯替換成另一個(gè)詞語(yǔ)。之后,該用戶可改變主意并決定保留原來(lái)的詞語(yǔ)。撤消子系統(tǒng)212利用可撤消編輯2122來(lái)協(xié)助上述操作。撤消管理器2121保存上述可撤消編輯2122的操作。該操作可擴(kuò)展為超越單個(gè)XML操作類型,因此可能涉及文檔中多種語(yǔ)言(例如XHTML、SVG以及MathML)的變化特征,然后撤消對(duì)這些語(yǔ)言中每一個(gè)的改變。因此,在先進(jìn)后出的操作中,不論詞匯使用與否,最近的改變首先被取消,然后,下一個(gè)最近的改變被取消。因此,即使兩個(gè)或更多editlet被編輯,但仍可依照正確順序執(zhí)行聯(lián)合撤消,從而提供正常和合乎邏輯的操作。3.e.光標(biāo)子系統(tǒng)如上所述,MVC的控制器部分可包括光標(biāo)子系統(tǒng)204。該光標(biāo)子系統(tǒng)204從用戶處接收輸入。這些輸入通常具有命令和/或編輯操作的性質(zhì)。因此,光標(biāo)子系統(tǒng)204可被視作是與文檔管理器1081相關(guān)的MVC范例的控制器(C)部分。3.f.視圖如上所述,畫(huà)布2010表述要顯現(xiàn)在屏幕上的文檔的邏輯布局。對(duì)于XHTML文檔的特定實(shí)施例而言,畫(huà)布可包括盒樹(shù)(boxtree)208,盒樹(shù)208是文檔在屏幕上如何被查看的邏輯表述。上述盒樹(shù)208可包含在與文檔管理器1081有關(guān)的MVC范例的視圖(V)部分中。4.詞匯連接文檔處理管理系統(tǒng)的一個(gè)重要特征是,能夠以兩種不同的方式(例如,以兩種標(biāo)記語(yǔ)言)來(lái)表述和顯示文檔,從而使得兩種不同的表述自動(dòng)保持一致。標(biāo)記語(yǔ)言文檔(例如XML文檔)基于通過(guò)文檔類型定義限定的詞匯創(chuàng)建。詞匯則是一組標(biāo)簽集,并可以任意定義,這就使得詞匯的數(shù)量可能是無(wú)限的。但是,為多個(gè)可能的詞匯中的每一個(gè)都提供專用的單獨(dú)處理和管理環(huán)境是不切實(shí)際的。詞匯連接是解決這種問(wèn)題的一種方式。例如,文檔可以利用兩種或更多標(biāo)記語(yǔ)言來(lái)表述。這些文檔例如可以是XHTML(可擴(kuò)展超文本標(biāo)記語(yǔ)言)、SVG(可縮放矢量圖形)、MathML(數(shù)學(xué)標(biāo)記語(yǔ)言)或其他的標(biāo)記語(yǔ)言。換句話說(shuō),標(biāo)記語(yǔ)言可以視為和XML中的詞匯和標(biāo)簽集相同。詞匯可以使用詞匯插件來(lái)實(shí)現(xiàn)。在文檔處理和管理系統(tǒng)中,以插件不可用的詞匯所描述的文檔可以通過(guò)將該文檔映射為插件可用的另一詞匯來(lái)顯示。因此,以非插件的詞匯描述的文檔仍然是可以正確顯示的。詞匯連接包括獲取定義文件、在(隨后定義出的)定義文件之間進(jìn)行映射、以及生成定義文件的能力。用某種詞匯描述的文檔能夠映射為另外的詞匯。因此,詞匯連接提供了通過(guò)與文檔已被映射成的詞匯相對(duì)應(yīng)的顯示和編輯插件來(lái)顯示或編輯文檔的能力。應(yīng)該認(rèn)識(shí)到,各個(gè)文檔在文檔處理和管理系統(tǒng)中被描述為通常具有多個(gè)節(jié)點(diǎn)的DOM樹(shù)?!岸x文件”為各個(gè)節(jié)點(diǎn)描述了該節(jié)點(diǎn)與其他節(jié)點(diǎn)之間的連接。規(guī)定了是否可以對(duì)各個(gè)節(jié)點(diǎn)的元素值和屬性值進(jìn)行編輯。還描述了使用節(jié)點(diǎn)的元素值和屬性值的運(yùn)算表達(dá)式。利用映射特征,通過(guò)參考定義文件創(chuàng)建目的DOM樹(shù)。因此,源DOM樹(shù)和目的DOM樹(shù)之間的關(guān)系被建立并維護(hù)。詞匯連接監(jiān)控源DOM樹(shù)和目的DOM樹(shù)之間的連接。在從用戶接收到編輯指令后,詞匯連接修改源DOM樹(shù)中的相關(guān)節(jié)點(diǎn)。如上所述,發(fā)出表示已經(jīng)修改了源DOM樹(shù)的“變化事件”,并且相應(yīng)地修改目的DOM樹(shù)。通過(guò)使用詞匯連接,僅對(duì)于少量用戶熟知的相對(duì)次要的詞匯可以被轉(zhuǎn)換為其他主要的詞匯。因此,即便是對(duì)于那些僅有少量用戶使用的次要詞匯,也可以準(zhǔn)確地顯示文檔,并提供理想的編輯環(huán)境。因此,作為文檔管理系統(tǒng)一部分的詞匯連接子系統(tǒng)提供了能夠?qū)ξ臋n進(jìn)行多種表述的功能。圖13顯示了詞匯連接(VC)子系統(tǒng)300。VC子系統(tǒng)300提供了一種維護(hù)同一文檔的兩種可替換表述之間的一致性的方式。在圖中具有與上面描述和標(biāo)識(shí)相同的組件,這些組件相互連接從而實(shí)現(xiàn)上述目的。例如,兩種表述可以是同一文檔以兩種不同詞匯實(shí)現(xiàn)的可替換表述。如上所述,其中一種可以是源DOM樹(shù),而另一種是目DOM樹(shù)。4.a.詞匯連接子系統(tǒng)利用被稱為“詞匯連接”301的插件在文檔處理和管理系統(tǒng)中實(shí)現(xiàn)詞匯連接子系統(tǒng)300的功能。將被表述的文檔的各詞匯305都需要相應(yīng)的插件。例如,如果文檔的一部分以HTML表述,而其他部分以SVG表述,則需要相應(yīng)的HTML詞匯插件和SVG詞匯插件。詞匯連接插件301為區(qū)209或窗格211創(chuàng)建與適當(dāng)詞匯305的文檔相對(duì)應(yīng)的適當(dāng)?shù)脑~匯連接畫(huà)布310。使用詞匯連接301,利用轉(zhuǎn)換規(guī)則,對(duì)源DOM樹(shù)的區(qū)209的改變被轉(zhuǎn)換到另一DOM樹(shù)306的相應(yīng)區(qū)。轉(zhuǎn)換規(guī)則以詞匯連接描述符(VCD)的形式給出。對(duì)于與源和目的DOM之間的這種轉(zhuǎn)換相對(duì)應(yīng)的各個(gè)VCD文件,創(chuàng)建相應(yīng)的詞匯連接管理器302。4.b.連接器連接器304連接源DOM樹(shù)中的源節(jié)點(diǎn)和目的DOM樹(shù)中的目的節(jié)點(diǎn)。連接器304可操作以觀察源DOM樹(shù)中的源節(jié)點(diǎn),和與該源節(jié)點(diǎn)相對(duì)應(yīng)的、對(duì)源文檔的修改(變化)。接著,連接器304修改相應(yīng)的目的DOM樹(shù)中的節(jié)點(diǎn)。只有連接器304是能夠修改目的DOM樹(shù)的對(duì)象。例如,如果用戶僅能夠?qū)υ次臋n和相應(yīng)的源DOM樹(shù)進(jìn)行修改,則連接器304對(duì)目的DOM樹(shù)進(jìn)行相應(yīng)的修改。連接器304被邏輯地鏈接在一起以形成樹(shù)結(jié)構(gòu),如圖13所示。連接器304形成的樹(shù)被稱為“連接器樹(shù)”。連接器304通過(guò)一種服務(wù)而創(chuàng)建,該服務(wù)被稱為“連接器工廠”303服務(wù)。連接器工廠303從源文檔創(chuàng)建連接器304,并將連接器304以連接器樹(shù)的形式鏈接起來(lái)。詞匯連接管理器302維護(hù)連接器工廠303。如上所述,詞匯是命名空間中的標(biāo)簽集。如圖13所示,通過(guò)詞匯連接301為文檔創(chuàng)建詞匯305。這通過(guò)分析文檔文件以及為源DOM和目的DOM之間的轉(zhuǎn)換創(chuàng)建適當(dāng)?shù)脑~匯連接管理器302來(lái)實(shí)現(xiàn)。此外,在創(chuàng)建連接器的連接器工廠303、創(chuàng)建區(qū)209的區(qū)工廠服務(wù)205和創(chuàng)建與區(qū)中的節(jié)點(diǎn)相對(duì)應(yīng)的畫(huà)布的editlet服務(wù)206之間建立適當(dāng)?shù)年P(guān)聯(lián)。當(dāng)用戶從系統(tǒng)中除去或刪除文檔時(shí),對(duì)應(yīng)的詞匯連接管理器302被刪除。詞匯305接著創(chuàng)建詞匯連接畫(huà)布310。此外,連接器304和目的DOM樹(shù)306被相應(yīng)地創(chuàng)建。應(yīng)該理解,源DOM和畫(huà)布分別對(duì)應(yīng)于模型(M)和視圖(V)。然而,僅當(dāng)目標(biāo)詞匯能夠在屏幕上呈現(xiàn)時(shí),這種呈現(xiàn)才有意義。這種顯示通過(guò)詞匯插件來(lái)實(shí)現(xiàn)。詞匯插件提供用于主要的詞匯,例如XHTML、SVG和MathML。詞匯插件相對(duì)于目標(biāo)詞匯使用。它們提供了一種使用詞匯連接描述符在詞匯之間進(jìn)行映射的方式。僅在目標(biāo)詞匯可被映射并具有預(yù)定的屏幕呈現(xiàn)方式時(shí),這種映射才有意義。這種呈現(xiàn)方式為工業(yè)標(biāo)準(zhǔn),例如由諸如W3C組織定義的XHTML。在需要詞匯連接時(shí),使用詞匯連接畫(huà)布。在這種情況下,由于不能夠?yàn)樵粗苯觿?chuàng)建視圖,因此,不創(chuàng)建源畫(huà)布。在這種情況下,使用連接器樹(shù)來(lái)創(chuàng)建詞匯連接畫(huà)布。這種詞匯連接畫(huà)布僅僅處理事件轉(zhuǎn)換,而并不會(huì)有助于將文檔呈現(xiàn)在屏幕上。4.c.目的區(qū)、窗格以及畫(huà)布如上所述,詞匯連接子系統(tǒng)的目的在于創(chuàng)建并同時(shí)維護(hù)對(duì)同一文檔的兩種替換表述。第二替換表述還可以是先前被引入作為目的DOM樹(shù)的DOM樹(shù)形式。為了瀏覽第二種表述的文檔,需要目的區(qū)、畫(huà)布和窗格。在創(chuàng)建詞匯連接畫(huà)布后,創(chuàng)建相應(yīng)的目的窗格307,如圖13所示。此外,相關(guān)的目的畫(huà)布308和相應(yīng)的盒樹(shù)309被創(chuàng)建。同樣,詞匯連接畫(huà)布還與源文檔的窗格211和區(qū)209關(guān)聯(lián)。目的畫(huà)布308提供了文檔的第二種表述方式的邏輯布局。具體地,目的畫(huà)布308提供了用戶界面功能,例如光標(biāo)和選擇(selection),用于以目的表述的方式呈現(xiàn)文檔。在目的畫(huà)布308中發(fā)生的事件被提供到連接器。目的畫(huà)布308向連接器304通知鼠標(biāo)事件、鍵盤事件、拖動(dòng)和放置事件、以及通知文檔的目的(或第二種)表述的詞匯的特有事件。4.d.詞匯連接命令子系統(tǒng)圖13中的詞匯連接子系統(tǒng)300的一部分是詞匯連接命令子系統(tǒng)313。詞匯連接命令子系統(tǒng)313創(chuàng)建詞匯連接命令315,詞匯連接命令315用來(lái)執(zhí)行與詞匯連接子系統(tǒng)300相關(guān)的指令??赏ㄟ^(guò)內(nèi)建的命令模板3131來(lái)創(chuàng)建詞匯連接命令,和/或可通過(guò)在腳本系統(tǒng)314中使用腳本語(yǔ)言從無(wú)到有地創(chuàng)建命令而創(chuàng)建詞匯連接命令。命令模板的例子包括“If”命令模板、“When”命令模板、“Insertfragment”命令模板等。這些模板被用來(lái)創(chuàng)建詞匯連接命令。4.e.Xpath子系統(tǒng)Xpath子系統(tǒng)316是文檔處理和管理系統(tǒng)的一個(gè)重要組件,因?yàn)樗軌蛴兄趯?shí)現(xiàn)詞匯連接。連接器304通常包括xpath信息。如上所述,詞匯連接的任務(wù)是將源DOM樹(shù)中的變化反映到目的DOM樹(shù)中。xpath信息包括一個(gè)或多個(gè)用來(lái)確定源DOM樹(shù)中需要被觀察以確定改變/修改的子集的xpath表達(dá)式。4.f.源DOM樹(shù)、目的DOM樹(shù)和連接器樹(shù)的概述源DOM樹(shù)是對(duì)轉(zhuǎn)換為另一種詞匯之前以一種詞匯表述的文檔進(jìn)行表述的DOM樹(shù)或區(qū)。在源DOM樹(shù)中的節(jié)點(diǎn)被稱為源節(jié)點(diǎn)。另一方面,目的DOM樹(shù)則表示用于在利用映射進(jìn)行轉(zhuǎn)換之后以另一種詞匯表述的同一文檔的DOM樹(shù)或區(qū),該映射已在前面結(jié)合詞匯連接描述。目的DOM樹(shù)中的節(jié)點(diǎn)被稱為目的節(jié)點(diǎn)。連接器樹(shù)是基于連接器的分級(jí)表述,用來(lái)表述源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的連接。連接器觀察源節(jié)點(diǎn)和對(duì)源文檔進(jìn)行的修改。連接器隨后修改目的DOM樹(shù)。事實(shí)上,只有連接器是能夠修改目的DOM樹(shù)的對(duì)象。5.文檔處理和管理系統(tǒng)中的事件流為了能夠使用,程序必需對(duì)來(lái)自用戶的命令進(jìn)行響應(yīng)。事件是一種描述和執(zhí)行用戶對(duì)程序?qū)嵤┑膭?dòng)作的方式。許多高級(jí)語(yǔ)言例如JAVA依靠描述用戶動(dòng)作的事件。在現(xiàn)有技術(shù)中,程序不得不主動(dòng)收集用于理解用戶動(dòng)作和通過(guò)自身執(zhí)行用戶動(dòng)作的信息。這可能意味著,例如,在對(duì)程序初始化后,程序進(jìn)入重復(fù)地查看用戶是否對(duì)屏幕、鍵盤和鼠標(biāo)等執(zhí)行了任何動(dòng)作、并接著采取適當(dāng)動(dòng)作的循環(huán)。然而,這種處理可能難以操控。此外,這種處理在等候用戶作某些事情時(shí),還需要執(zhí)行循環(huán)的程序,從而消耗了CPU周期。許多語(yǔ)言通過(guò)包含不同的范例來(lái)解決這些問(wèn)題,其中的一個(gè)范例構(gòu)成了所有現(xiàn)代的window系統(tǒng)的基礎(chǔ)事件驅(qū)動(dòng)程序。在這種范例中,所有的用戶動(dòng)作屬于被稱為“事件”的事務(wù)的抽象集合。一種事件足夠詳細(xì)地描述了特殊的用戶動(dòng)作。在感興趣的事件發(fā)生時(shí),這種系統(tǒng)通知程序,而不是程序主動(dòng)地收集用戶生成的事件。以這種方式處理用戶交互的程序被稱為“事件驅(qū)動(dòng)”。這通常使用事件類來(lái)進(jìn)行處理,其中事件類捕獲了所有用戶生成事件的基礎(chǔ)特性。文檔處理和管理系統(tǒng)定義和使用其自身的事件以及處理這些事件的方式。幾種類型的事件被使用。例如,鼠標(biāo)事件是來(lái)自用戶的鼠標(biāo)動(dòng)作的事件。與鼠標(biāo)有關(guān)的用戶動(dòng)作由畫(huà)布210傳遞到鼠標(biāo)事件。因此,畫(huà)布可以被認(rèn)為是用戶與系統(tǒng)交互的最前沿。如果需要,最前沿的畫(huà)布將把其與事件有關(guān)的內(nèi)容傳遞到其下級(jí)(children)。另一方面,按鍵事件從畫(huà)布210產(chǎn)生。按鍵事件具有瞬時(shí)的焦點(diǎn),即,按鍵事件涉及任意瞬時(shí)的活動(dòng)。進(jìn)入到畫(huà)布210的按鍵事件接著被傳遞到其上級(jí)(parent)。鍵盤輸入通過(guò)能夠處理字符串插入的不同事件而被處理。在使用鍵盤插入字符時(shí),將觸發(fā)處理字符串插入的事件。其他的“事件”包括例如拖動(dòng)事件、放置事件和其他能夠以與鼠標(biāo)事件相似的方式處理的事件。5.a.在詞匯連接之外處理事件使用事件線程對(duì)事件進(jìn)行傳遞。在接收到事件后,畫(huà)布210改變其狀態(tài)。如果需要,畫(huà)布210將命令1052記入到命令隊(duì)列1053。5.b.在詞匯連接之內(nèi)處理事件通過(guò)使用詞匯連接插件301,目的畫(huà)布1106接收現(xiàn)有的事件,例如鼠標(biāo)事件、鍵盤事件、拖動(dòng)和放置事件、以及詞匯的特有事件。這些事件接著被通知到連接器1104。更具體地說(shuō),詞匯連接插件301內(nèi)的事件流經(jīng)過(guò)源窗格1103、詞匯畫(huà)布1104、目的窗格1105、目的畫(huà)布1106、目的DOM樹(shù)和連接器樹(shù)1104,如圖21所示。6.程序調(diào)用器及其與其他組件之間的關(guān)系。在圖14(a)中更加詳細(xì)地顯示了程序調(diào)用器103及其與其他組件之間的關(guān)系。程序調(diào)用器103是在執(zhí)行環(huán)境中被執(zhí)行以啟動(dòng)文檔處理和管理系統(tǒng)的基本程序。用戶應(yīng)用程序106、服務(wù)代理104、命令調(diào)用器1051和資源109都被聯(lián)接到程序調(diào)用器103,如圖14(b)所示。如前所述,應(yīng)用程序102是在執(zhí)行環(huán)境中運(yùn)行的組件。同樣,服務(wù)代理104管理向系統(tǒng)增加各種功能的插件。另一方面,命令調(diào)用器1051維護(hù)用來(lái)執(zhí)行命令的類和函數(shù),從而執(zhí)行用戶提供的指令。6.a.插件和服務(wù)下面將參照?qǐng)D14(b)詳細(xì)描述服務(wù)代理104。如上所述,服務(wù)代理104管理向系統(tǒng)增加各種功能的插件(及相關(guān)服務(wù))。服務(wù)1041在最底層,在該層中可以將特征增加到文檔處理和管理系統(tǒng),或改變?cè)撓到y(tǒng)中的特征?!胺?wù)”由兩部分構(gòu)成服務(wù)種類401和服務(wù)提供器402。如圖14(c)所示,單個(gè)的服務(wù)種類401可具有多個(gè)相關(guān)的服務(wù)提供器402,這些多個(gè)服務(wù)提供器402中的每一個(gè)都可操作以執(zhí)行所有或部分的特定服務(wù)種類。另一方面,服務(wù)種類401則定義了服務(wù)的類型。服務(wù)可分為三種類型1)向系統(tǒng)提供特定特征的特征服務(wù);2)應(yīng)用程序服務(wù),其是由文檔處理和管理系統(tǒng)運(yùn)行的應(yīng)用程序;以及3)提供在整個(gè)文檔處理和管理系統(tǒng)中需要的特征的環(huán)境服務(wù)。圖14(d)中示出了服務(wù)的例子。根據(jù)應(yīng)用程序服務(wù)的種類,系統(tǒng)實(shí)用程序是相應(yīng)服務(wù)提供器的示例。同樣,editlet206是一個(gè)種類,HTMLeditlet和SVGeditlet是相應(yīng)的服務(wù)提供器。區(qū)工廠205是服務(wù)的另一種,并具有相應(yīng)的服務(wù)提供器(未示出)。之前描述的向文檔處理和管理系統(tǒng)增加功能的插件可以看作是由幾個(gè)服務(wù)提供器402和與其相關(guān)的類構(gòu)成的單元,如圖14(c)和14(d)所示。各個(gè)插件都應(yīng)該具有在清單文件(manifestfile)中寫(xiě)入的從屬和服務(wù)種類。6.b.程序調(diào)用器和應(yīng)用程序之間的關(guān)系圖14(e)詳細(xì)顯示了程序調(diào)用器103和用戶應(yīng)用程序106之間的關(guān)系。所需的文檔、數(shù)據(jù)等從存儲(chǔ)中載入。所有需要的插件載入到服務(wù)代理104。服務(wù)代理104管理并維護(hù)所有的插件??晌锢淼貙⒉寮黾拥较到y(tǒng),或者可從存儲(chǔ)中載入其功能。在載入插件的內(nèi)容后,服務(wù)代理104定義相應(yīng)的插件。相應(yīng)的用戶應(yīng)用程序106被創(chuàng)建,接著被載入到執(zhí)行環(huán)境101并聯(lián)接到程序調(diào)用器103。7.應(yīng)用程序服務(wù)和環(huán)境之間的關(guān)系圖15(a)進(jìn)一步示出了載入程序調(diào)用器103中的應(yīng)用程序服務(wù)的結(jié)構(gòu)。作為命令子系統(tǒng)105組件的命令調(diào)用器1051調(diào)用或執(zhí)行程序調(diào)用器103內(nèi)的命令1052。命令1052則是用來(lái)在文檔處理和管理系統(tǒng)中處理文檔(例如,XML文檔)和編輯相應(yīng)的XMLDOM樹(shù)的指令。命令調(diào)用器1051維護(hù)執(zhí)行命令1052所需的功能和類。服務(wù)調(diào)用器1041也在程序調(diào)用器103中執(zhí)行。用戶應(yīng)用程序106連接到用戶界面107和核心組件110。核心組件110提供了一種在所有的窗格中共享文檔的方式。核心組件110還提供字體并作為用于窗格的工具包。圖15(a)和(b)顯示了框架1071、菜單欄1072和狀態(tài)欄1073之間的關(guān)系。8.應(yīng)用程序核心圖16(a)進(jìn)一步解釋了應(yīng)用程序核心110,其保持所有文檔以及作為文檔一部分并屬于文檔的數(shù)據(jù)。核心組件110聯(lián)接到管理文檔1082的文檔管理器1081。文檔管理器1081是存儲(chǔ)到與文檔處理和管理系統(tǒng)關(guān)聯(lián)的存儲(chǔ)器中的所有文檔1082的所有者(proprietor)。為了便于在屏幕上顯示文檔,文檔管理器1081還連接到根窗格1084。剪貼板1085、快照1087、拖拉和放置601,覆蓋602的功能也被聯(lián)接到核心組件。如圖16(b)所示,快照1087用來(lái)撤消應(yīng)用程序狀態(tài)。在用戶調(diào)用快照功能1087時(shí),應(yīng)用程序的當(dāng)前狀態(tài)被檢測(cè)并存儲(chǔ)。所存儲(chǔ)的狀態(tài)的內(nèi)容在應(yīng)用程序改變?yōu)榱硪粻顟B(tài)時(shí)被保存下來(lái)。在圖16(b)中示出了快照。在操作中,當(dāng)應(yīng)用程序從一個(gè)URL移動(dòng)到另一個(gè)時(shí),快照會(huì)記住先前的狀態(tài),從而能夠無(wú)縫地執(zhí)行后退和前進(jìn)操作。9.在文檔管理器中組織文檔圖17(a)更加詳細(xì)地描述了文檔管理器1081以及如何在文檔管理器中組織并保存文檔。如圖17(b)所示,文檔管理器1081管理文檔1082。在圖17(a)顯示的實(shí)施例中,多個(gè)文檔中的一個(gè)為根文檔701,其他的文檔為子文檔702。文檔管理器1081連接到根文檔701,根文檔701則連接到所有的子文檔702。如圖12和17(a)所示,文檔管理器1081耦合到文檔容器203,文檔容器203是容納所有文檔1082的對(duì)象。形成工具包(例如,XML工具包)201的一部分的工具(包括DOM服務(wù)703和IO管理器704)也提供給文檔管理器1081。再參照?qǐng)D17(a),DOM服務(wù)703基于由文檔管理器1081管理的文檔來(lái)創(chuàng)建DOM樹(shù)。各個(gè)文檔705,不管是根文檔701還是子文檔702都容納在相應(yīng)的文檔容器203中。圖17(b)顯示了一組文檔A-E是如何以分級(jí)結(jié)構(gòu)排列的實(shí)施例。文檔A為根文檔。文檔B-D是文檔A的子文檔。文檔E則是文檔D的子文檔。圖17(b)還顯示了如何將文檔的同一分級(jí)結(jié)構(gòu)顯示在屏幕上的實(shí)施例。作為根文檔的文檔A顯示為基礎(chǔ)框架。文檔A的子文檔B-D顯示為在基礎(chǔ)框架A內(nèi)的子框架。文檔D的子文檔E在屏幕上顯示為子框架D的子框架。再參照?qǐng)D17(a),為各個(gè)文檔容器203創(chuàng)建撤消管理器706和撤消封裝器(wrapper)707。撤消管理器706和撤消封裝器707用來(lái)執(zhí)行可撤消的命令。使用該特征,可以撤消使用編輯操作對(duì)文檔所作的改變。子文檔中的改變也會(huì)涉及到根文檔。撤消操作考慮到了影響分級(jí)結(jié)構(gòu)內(nèi)其他文檔的改變,并確保了在分級(jí)結(jié)構(gòu)鏈中的所有文檔之間所維護(hù)的一致性,例如,如圖17(b)所示。撤消封裝器707將與容器203中的子文檔相關(guān)的撤消對(duì)象進(jìn)行封裝,并將它們和與根文檔相關(guān)的撤消對(duì)象耦合。撤消封裝器707使得可撤消編輯接收器709能夠收集撤消對(duì)象。撤消管理器706和撤消封裝器707連接到可撤消編輯接收器708和可撤消編輯源708。本領(lǐng)域技術(shù)人員應(yīng)該理解,文檔705可以是可撤消編輯源708,并因此可以是可撤消編輯對(duì)象。10.撤消命令和撤消框架圖18(a)和(b)進(jìn)一步詳細(xì)地顯示了撤消框架和撤消命令。如圖18(a)所示,撤消命令801、重做命令802和可撤消編輯命令803是能夠排列在命令調(diào)用器1051中的命令(如圖11(b)所示)并且被相應(yīng)地執(zhí)行??沙废庉嬅?03還進(jìn)一步聯(lián)接到可撤消編輯源708和可撤消編輯接收器709。例如,可撤消編輯命令是“foo”編輯命令803和“bar”編輯命令804。圖18(b)顯示了可撤消編輯命令的執(zhí)行。首先,假設(shè)用戶使用編輯命令來(lái)編輯文檔705。在第一步驟S1,可撤消編輯接收器709被聯(lián)接到可撤消編輯源708,而可撤消編輯源708為文檔705的DOM樹(shù)。在第二步驟S2,基于由用戶發(fā)出的命令,使用DOMAPI對(duì)文檔705進(jìn)行編輯。在第三步驟S3,向變化事件監(jiān)聽(tīng)器通知已經(jīng)發(fā)生了改變。即,在該步驟,監(jiān)控DOM樹(shù)中所有改變的監(jiān)聽(tīng)器檢測(cè)編輯操作。在第四步驟S4,用撤消管理器706將可撤消的編輯存儲(chǔ)為對(duì)象。在第五步驟S5,可撤消編輯接收器709與源708分開(kāi),源708可以是文檔705本身。11.向系統(tǒng)載入文檔時(shí)需要的步驟上述幾個(gè)子部分描述了系統(tǒng)的各個(gè)組件和子組件。下面將描述在使用這些組件時(shí)用到的方法。圖19顯示了如何將文檔載入到文檔處理和管理系統(tǒng)中的總體圖。參照?qǐng)D24-28詳細(xì)地描述各個(gè)步驟。簡(jiǎn)言之,文檔處理和管理系統(tǒng)從由在文檔中包含的數(shù)據(jù)構(gòu)成的二進(jìn)制數(shù)據(jù)流創(chuàng)建DOM樹(shù)。為文檔中的感興趣的并位于“區(qū)”中的一部分創(chuàng)建頂節(jié)點(diǎn),接著確定相應(yīng)的“窗格”。所確定的窗格從頂節(jié)點(diǎn)和物理屏幕表面創(chuàng)建“區(qū)”和“畫(huà)布”?!皡^(qū)”為各個(gè)節(jié)點(diǎn)創(chuàng)建“方面”,并為它們提供所需信息。畫(huà)布創(chuàng)建用于呈現(xiàn)DOM樹(shù)的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。具體地,參照?qǐng)D19(a),在“步驟0”,表述SHTML和SVG內(nèi)容的復(fù)合文檔從存儲(chǔ)901載入。接著,為文檔創(chuàng)建DOM樹(shù)902。應(yīng)該注意,DOM樹(shù)具有頂節(jié)點(diǎn)905(XHTML),以及隨著DOM樹(shù)下降到其他分支,會(huì)遇到由雙線表示的邊界,接著是用于不同詞匯SVG的頂節(jié)點(diǎn)906。這種復(fù)合文檔的表述有助于理解用來(lái)呈現(xiàn)并最終顯示文檔的方式。接下來(lái),創(chuàng)建保持文檔的相應(yīng)文檔容器903。接著將文檔容器903聯(lián)接到文檔管理器904。DOM樹(shù)包括根節(jié)點(diǎn),并且可選地包括多個(gè)次級(jí)節(jié)點(diǎn)。典型地,這種文檔包括文本和圖形。因此,DOM樹(shù)例如能夠具有XHTML子樹(shù)以及SVG子樹(shù)。XHTML子樹(shù)具有XHTML頂節(jié)點(diǎn)905。同樣,SVG子樹(shù)具有SVG頂節(jié)點(diǎn)906。再次參照?qǐng)D19(a),在步驟1,將頂節(jié)點(diǎn)聯(lián)接到窗格907(窗格907是屏幕的物理布局)。在步驟2,窗格907向應(yīng)用程序核心908請(qǐng)求用于頂節(jié)點(diǎn)的區(qū)工廠。在步驟3,應(yīng)用程序核心908返回區(qū)工廠以及editlet(其為用于頂節(jié)點(diǎn)906的畫(huà)布工廠)。在步驟4,窗格907創(chuàng)建區(qū)909,區(qū)909聯(lián)接至窗格。在步驟5,區(qū)909為各個(gè)節(jié)點(diǎn)創(chuàng)建“方面”,并聯(lián)接到相應(yīng)的節(jié)點(diǎn)。在步驟6,窗格創(chuàng)建與其聯(lián)接的畫(huà)布910。在畫(huà)布910中包括各種命令。在步驟7中,畫(huà)布910則構(gòu)建用于將文檔呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)。在XHTML的情況下,這包括盒樹(shù)結(jié)構(gòu)。圖19(b)使用MVC范例顯示了區(qū)的結(jié)構(gòu)概要。在這種情況下,模型(M)包括區(qū)工廠創(chuàng)建的區(qū)和“方面”,這是因?yàn)樗鼈兪桥c文檔相關(guān)的輸入。視圖(V)對(duì)應(yīng)于畫(huà)布和數(shù)據(jù)結(jié)構(gòu),以利用editlet將文檔在屏幕上呈現(xiàn),這是由于這些呈現(xiàn)是用戶在屏幕上看到的輸出。控制(C)包括畫(huà)布中所包含的命令,這是由于這些命令對(duì)文檔及其關(guān)系執(zhí)行控制操作。12.文檔的表述下面將使用圖20來(lái)描述復(fù)合文檔及其各種表述的實(shí)施例。在該實(shí)施例中使用的文檔包括文本和圖片。文本使用XHTML表述,而圖片用SVG表述。圖20詳細(xì)顯示了用于文檔組件的MVC表述以及相應(yīng)對(duì)象的關(guān)系。對(duì)于該示例性的表述,文檔1001聯(lián)接到保持文檔1001的文檔容器1002。文檔用DOM樹(shù)1003表述。DOM樹(shù)1003包括頂節(jié)點(diǎn)1004和其他子節(jié)點(diǎn),如之前參照?qǐng)D19(a)所述這些節(jié)點(diǎn)具有相應(yīng)的“方面”。頂節(jié)點(diǎn)用陰影圓圈表示。非頂節(jié)點(diǎn)用非陰影圓圈表示。用來(lái)編輯節(jié)點(diǎn)的“方面”用三角形表示,并被聯(lián)接到相應(yīng)的節(jié)點(diǎn)。由于文檔具有文本和圖片,所以用于該文檔的DOM樹(shù)包括XHTML部分和SVG部分。頂節(jié)點(diǎn)1004是XHTML子樹(shù)的最頂部的節(jié)點(diǎn)。該節(jié)點(diǎn)被聯(lián)接到XHTML窗格1005,XHTML窗格1005是文檔XHTML部分的物理表述的最頂部窗格。該頂節(jié)點(diǎn)1004還聯(lián)接到XHTML區(qū)1006,其中XHTML區(qū)1006是文檔1001的DOM樹(shù)的一部分。與節(jié)點(diǎn)1004相對(duì)應(yīng)的“方面”1041還聯(lián)接到XHTML區(qū)1006。XHTML區(qū)1006則聯(lián)接到XHTML窗格1005。XHTMLeditlet創(chuàng)建XHTML畫(huà)布1007,XHTML畫(huà)布1007是文檔的邏輯表述。XHTML畫(huà)布1007聯(lián)接到XHTML窗格1005。XHTML畫(huà)布1007為文檔1001的XHTML組件創(chuàng)建盒樹(shù)1009。如圖所示,盒樹(shù)通過(guò)htmlBox、bodyBox、headBox和/或tableBox的適當(dāng)組合來(lái)表述。維護(hù)和呈現(xiàn)文檔的XHTML部分所需的各種命令1008也被增加到XHTML畫(huà)布1005。同樣,該文檔的SVG子樹(shù)的頂節(jié)點(diǎn)1010被聯(lián)接到SVG區(qū)1011,SVG區(qū)1011是文檔1001的DOM樹(shù)的、用于表述文檔的SVG組件的部分。頂節(jié)點(diǎn)1010被聯(lián)接到SVG窗格1013,SVG窗格1013是文檔的SVG部分的物理表述的最頂部窗格。表述文檔的SVG部分的邏輯表述的SVG畫(huà)布1012通過(guò)SVGeditlet創(chuàng)建,并被聯(lián)接到SVG窗格1013。用于將文檔的SVG部分呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)和命令1014被聯(lián)接到SVG畫(huà)布1012。例如,這種數(shù)據(jù)結(jié)構(gòu)可包括圓圈、線、矩形等,如圖所示。下面將使用先前描述的MVC范例,參照?qǐng)D21(a)和21(b)進(jìn)一步討論參照?qǐng)D20描述的、用于對(duì)該示例性文檔進(jìn)行表述的部件。圖21(a)提供了文檔1001的XHTM組件的MV關(guān)系的簡(jiǎn)化圖。圖中的模型是用于文檔1001的XHTML組件的XHTM區(qū)1103。包括在XHTML區(qū)樹(shù)中的是幾個(gè)節(jié)點(diǎn)及其相應(yīng)的“方面”。相應(yīng)的XHTML區(qū)和窗格是MVC范例的模型(M)部分的一部分。MVC范例的視圖(V)部分是用于文檔1001的HTML組件的相應(yīng)的XHTML畫(huà)布1102和盒樹(shù)。通過(guò)畫(huà)布以及其中所包含的命令,文檔的XHTML部分被呈現(xiàn)在屏幕上。例如鍵盤和鼠標(biāo)輸入的事件以如圖所示的相反方向進(jìn)行處理。也就是說(shuō),源窗格具有附加功能,以起到DOM保持器的作用。圖21(b)提供了在圖21(a)中示出的用于文檔1001的組件的詞匯連接。作為源DOM保持器的源窗格1103包含了用于文檔的源DOM樹(shù)。連接器樹(shù)1004通過(guò)連接器工廠創(chuàng)建,連接器樹(shù)1004又創(chuàng)建作為目的DOM樹(shù)保持器的目的窗格1105。目的窗格1105接著以盒樹(shù)的形式被布置為XHTML目的畫(huà)布1106。13.插件子系統(tǒng)、詞匯連接和連接器之間的關(guān)系圖22(a)-(c)分別顯示了與插件子系統(tǒng)、詞匯連接和連接器相關(guān)的附加細(xì)節(jié)。插件子系統(tǒng)被用來(lái)向文檔處理和管理系統(tǒng)增加功能,或與之交換功能。插件子系統(tǒng)包括服務(wù)代理1041。如圖22(a)所示,名稱為“MyOwnXMLvocabulary(我的XML詞匯)”VCD文件耦合至包括MyOwnXML連接器工廠樹(shù)和詞匯(區(qū)工廠,Editlet)的VC基本插件。聯(lián)接到服務(wù)代理1041的區(qū)工廠服務(wù)1201負(fù)責(zé)創(chuàng)建用于文檔的部分的區(qū)。editlet服務(wù)1202還被聯(lián)接到服務(wù)代理。editlet服務(wù)1202創(chuàng)建與區(qū)中的節(jié)點(diǎn)相對(duì)應(yīng)的畫(huà)布。區(qū)工廠的實(shí)施例是分別創(chuàng)建XHTML區(qū)和SVG區(qū)的XHTML區(qū)工廠1211和SVG區(qū)工廠1212。如上參照示例性文檔所述,文檔的文本組件可通過(guò)創(chuàng)建XHTML區(qū)來(lái)表述,而圖片則可使用SVG區(qū)來(lái)表述。editlet服務(wù)的示例包括XHTMLeditlet1221和SVGeditlet1222。圖22(b)進(jìn)一步詳細(xì)顯示了詞匯連接,如上所述,詞匯連接是文檔處理和管理系統(tǒng)的重要特征,其能夠使兩種不同方式的文檔的表述和顯示保持一致。能夠維護(hù)連接器工廠303的詞匯連接管理器是詞匯連接子系統(tǒng)的一部分,并耦合到VCD以接收詞匯連接描述符并生成詞匯連接命令301。如圖22(c)所示,連接器工廠303為文檔創(chuàng)建連接器304。如上所述,連接器觀察源DOM中的節(jié)點(diǎn),并修改目的DOM中的節(jié)點(diǎn),以維護(hù)兩種表述之間的一致性。模板表述用于一些節(jié)點(diǎn)的轉(zhuǎn)換規(guī)則。事實(shí)上,詞匯連接描述符文件是表示一些規(guī)則的一系列模板,這些規(guī)則用于將滿足某種路徑或規(guī)則的元素或元素集合轉(zhuǎn)換為其他的元素。詞匯模板305和命令模板3131都聯(lián)接到詞匯連接管理器302。詞匯連接管理器302是在VCD文件中所有部分的管理器對(duì)象。為一個(gè)VCD文件創(chuàng)建一個(gè)詞匯連接管理器對(duì)象。圖22(c)表示了連接器的附加細(xì)節(jié)。連接器工廠303從源文檔中創(chuàng)建連接器。連接器工廠聯(lián)接于詞匯、模板和元素模板,并分別創(chuàng)建詞匯連接器、模板連接器和元素連接器。詞匯連接管理器302維護(hù)連接器工廠303。為了創(chuàng)建詞匯,讀取相應(yīng)的VCD文件。接著創(chuàng)建連接器工廠303。該連接器工廠303與負(fù)責(zé)創(chuàng)建區(qū)的區(qū)工廠205和負(fù)責(zé)創(chuàng)建畫(huà)布的editlet服務(wù)206相關(guān)聯(lián)。接著,用于目標(biāo)詞匯的editlet服務(wù)創(chuàng)建詞匯連接畫(huà)布。詞匯連接畫(huà)布為目的DOM樹(shù)創(chuàng)建節(jié)點(diǎn)。詞匯連接畫(huà)布為源DOM樹(shù)或區(qū)中的頂點(diǎn)元素創(chuàng)建連接器。接著,根據(jù)需要遞歸地創(chuàng)建子連接器。通過(guò)VCD文件中的一組模板創(chuàng)建連接器樹(shù)。模板是用于將標(biāo)記語(yǔ)言的元素轉(zhuǎn)換為其他元素的規(guī)則集合。例如,各個(gè)模板與源DOM樹(shù)或區(qū)相匹配。在正確匹配時(shí),創(chuàng)建頂點(diǎn)連接器。例如,模板“A/*/D”監(jiān)測(cè)所有從節(jié)點(diǎn)A開(kāi)始、在節(jié)點(diǎn)D結(jié)束的樹(shù)分支,而不考慮節(jié)點(diǎn)A和節(jié)點(diǎn)D之間的節(jié)點(diǎn)。同樣,“//B”對(duì)應(yīng)于所有來(lái)自根節(jié)點(diǎn)的“B”節(jié)點(diǎn)。14.VCD文件相關(guān)的連接器樹(shù)的示例下面將解釋與特定文檔相關(guān)的處理。名為MySampleXML的文檔被載入到文檔處理系統(tǒng)。圖23顯示了使用詞匯連接管理器的VCD腳本和用于MySampleXJML的連接器工廠樹(shù)的實(shí)施例。在圖中顯示了腳本文件內(nèi)的詞匯部分、模板部分以及它們?cè)谠~匯連接管理器中的相應(yīng)組件。在標(biāo)簽“vcdvocabulary”下提供了屬性match=″sampleroot″、label=″MySampleXML″以及call-template=″sampleTemplate″。與該實(shí)施例相對(duì)應(yīng),在MySampleXML的詞匯連接管理器中,詞匯包括頂點(diǎn)元素“sampleroot”。相應(yīng)的UI標(biāo)注為“MySampleXML”。在模板部分,標(biāo)簽為vcdtemplate,名稱為“sampletemplate”。15.如何將文件載入系統(tǒng)的詳細(xì)實(shí)施例圖24-28顯示了載入文檔MySampleXML的詳細(xì)描述。在步驟1,如圖24(a)所示,文檔從存儲(chǔ)1405中載入。DOM服務(wù)創(chuàng)建DOM樹(shù)和文檔管理器1406以及對(duì)應(yīng)的文檔容器1401。文檔容器聯(lián)接到文檔管理器1406。文檔包括用于XHTML和MySampleXML的子樹(shù)。XHTML頂節(jié)點(diǎn)1403是用于XHTML的最頂部的節(jié)點(diǎn),并具有標(biāo)簽xhtmlhtml。另一方面,mysample頂節(jié)點(diǎn)1404對(duì)應(yīng)于MySampleXML,并具有標(biāo)簽sampleroot。在步驟2,如圖24(b)所示,根窗格為文檔創(chuàng)建XTML區(qū)、“方面”和畫(huà)布。根據(jù)圖中示出的關(guān)系,在步驟1-5中創(chuàng)建與頂節(jié)點(diǎn)1403、其他節(jié)點(diǎn)以及它們相關(guān)的“方面”相應(yīng)的窗格1407、XHTML區(qū)1408、XHTML畫(huà)布1409和盒樹(shù)1410。在步驟3,如圖24(c)所示,XHTML區(qū)域找到外來(lái)的標(biāo)簽“sampleroot”,并從html畫(huà)布上的區(qū)域創(chuàng)建子窗格。圖25顯示了步驟4,在步驟4中,子窗格1501獲取能夠處理“sampleroot”標(biāo)簽并創(chuàng)建適當(dāng)?shù)膮^(qū)的相應(yīng)的區(qū)工廠。這種區(qū)域工廠將在能夠?qū)崿F(xiàn)區(qū)域工廠的詞匯中。區(qū)域工廠包括MySampIeXML中的詞匯部分的內(nèi)容。圖26顯示了步驟5,在步驟5中,與MySampleXML對(duì)應(yīng)并與VC管理器相連的詞匯創(chuàng)建缺省的區(qū)1061。相應(yīng)的editlet被創(chuàng)建并被提供給子窗格1501,以創(chuàng)建相應(yīng)的畫(huà)布。editlet創(chuàng)建詞匯連接畫(huà)布。接著,editlet調(diào)用與連接器工廠樹(shù)耦合的模板部分。連接器工廠樹(shù)創(chuàng)建所有的連接器,接著將創(chuàng)建的連接器形成連接器樹(shù)(連接器樹(shù)形成VC畫(huà)布的一部分)。根據(jù)前面的描述,對(duì)于與文檔的XHTML內(nèi)容相關(guān)的頂節(jié)點(diǎn),根窗格和XHTML區(qū)的關(guān)系以及XHTML畫(huà)布和盒樹(shù)之間的關(guān)系是顯而易見(jiàn)的。圖27基于如上所述的源DOM樹(shù)、VC畫(huà)布和目的DOM樹(shù)之間的對(duì)應(yīng)關(guān)系顯示了步驟6。在步驟6中,各個(gè)連接器創(chuàng)建目的DOM對(duì)象。一些連接器包括xpath信息。xpath信息包括一個(gè)或多個(gè)xpath表達(dá)式,xpath表達(dá)式用來(lái)確定需要被監(jiān)測(cè)是否發(fā)生了改變/修改的源DOM樹(shù)的子集。圖28根據(jù)源、VC和目的關(guān)系顯示了步驟7。在步驟7中,詞匯從源DOM的窗格形成目的DOM樹(shù)的目的窗格。這基于源窗格來(lái)完成。接著,將目的樹(shù)的頂節(jié)點(diǎn)聯(lián)接到目的窗格以及相應(yīng)的區(qū)。接著為目的窗格設(shè)置其自身的editlet,editlet則創(chuàng)建目的畫(huà)布,并構(gòu)建數(shù)據(jù)結(jié)構(gòu)和命令,從而以目的格式呈現(xiàn)文檔。圖29(a)顯示了發(fā)生于某節(jié)點(diǎn)的事件流,該節(jié)點(diǎn)不具有相應(yīng)的源節(jié)點(diǎn)并僅依賴于目的樹(shù)。在第一步驟,畫(huà)布所獲取的事件(例如鼠標(biāo)事件和鍵盤事件)通過(guò)目的樹(shù),并被傳輸?shù)皆啬0暹B接器(ElementTemplateConnector)。元素模板連接器不具有相應(yīng)的源節(jié)點(diǎn),因此被傳送的事件并不是對(duì)源節(jié)點(diǎn)的編輯操作。如果所傳送的事件與命令模板(CommandTemplate)中描述的命令相匹配,則元素模板連接器在第二和第三步驟執(zhí)行相應(yīng)的動(dòng)作。否則,元素模板連接器忽略所傳送的事件。圖29(b)顯示了發(fā)生于某目的樹(shù)的節(jié)點(diǎn)的事件流,該目的樹(shù)的節(jié)點(diǎn)通過(guò)文本連接器(TextOfConnector)與源節(jié)點(diǎn)相關(guān)聯(lián)。文本連接器從由源DOM樹(shù)的XPath規(guī)定的節(jié)點(diǎn)獲取文本節(jié)點(diǎn),并將該文本節(jié)點(diǎn)映射為目的DOM樹(shù)的節(jié)點(diǎn)。在第一步驟,畫(huà)布所獲取的事件(例如鼠標(biāo)事件和鍵盤事件)通過(guò)目的樹(shù),并被傳送到文本連接器。文本連接器將所傳送的事件映射為相應(yīng)源節(jié)點(diǎn)的編輯命令,并將這些命令設(shè)置在隊(duì)列1053中。編輯命令是通過(guò)“方面”執(zhí)行的DOM的一組API調(diào)用。在第二步驟中,當(dāng)執(zhí)行設(shè)置在隊(duì)列中的命令時(shí),編輯源節(jié)點(diǎn)。在編輯源節(jié)點(diǎn)時(shí),在第三步驟發(fā)出變化事件,并且將對(duì)源節(jié)點(diǎn)的修改通知到注冊(cè)為監(jiān)聽(tīng)器的文本連接器。在第四步驟中,文本連接器重新建立目的樹(shù),從而在相應(yīng)的目的節(jié)點(diǎn)中反映出對(duì)源節(jié)點(diǎn)的修改。如果包含文本連接器的模板包括控制聲明,例如“foreach”和“forloop”,則連接器工廠重新評(píng)估控制聲明。在重建文本連接器后,重建目的樹(shù)。上面基于僅為說(shuō)明性的實(shí)施方案描述了本發(fā)明。本領(lǐng)域的技術(shù)人員應(yīng)該理解,還可以對(duì)上述的各個(gè)組件和處理組合進(jìn)行其他各種修改,并且這些修改落入本發(fā)明的保護(hù)范圍。盡管通過(guò)處理XML文檔的實(shí)施例解釋了上述實(shí)施方案,但根據(jù)這些實(shí)施方案的文檔處理裝置20還能夠類似地處理以其他標(biāo)記語(yǔ)言(例如SGML和HTML)描述的文檔。權(quán)利要求1.一種文檔處理裝置,包括文檔處理器,可操作以處理以第一標(biāo)記語(yǔ)言描述的文檔,所述第一標(biāo)記語(yǔ)言與所述文檔處理器相符;以及文檔轉(zhuǎn)換器,如果一文檔以與所述文檔處理器不相符的第二標(biāo)記語(yǔ)言描述,則所述文檔轉(zhuǎn)換器可操作以將該文檔映射為所述第一標(biāo)記語(yǔ)言。2.如權(quán)利要求1所述的文檔處理裝置,其中,所述第一標(biāo)記語(yǔ)言是結(jié)構(gòu)語(yǔ)言,所述結(jié)構(gòu)語(yǔ)言可操作以通過(guò)將文檔中的數(shù)據(jù)分類為具有分級(jí)結(jié)構(gòu)的多個(gè)組件來(lái)描述所述數(shù)據(jù);以及所述文檔轉(zhuǎn)換器可操作以將所述文檔以所述組件為單元映射為所述第一標(biāo)記語(yǔ)言。3.如權(quán)利要求1所述的文檔處理裝置,還包括定義文件,可操作以描述所述第一和第二標(biāo)記語(yǔ)言之間的映射,其中,所述文檔轉(zhuǎn)換器可操作以通過(guò)參考所述定義文件,在所述第一和第二標(biāo)記語(yǔ)言之間映射所述文檔。4.如權(quán)利要求3所述的文檔處理裝置,其中,所述多個(gè)組件中的至少一個(gè)在所述定義文件中被定義為能夠編輯。5.如權(quán)利要求3所述的文檔處理裝置,其中,所述定義文件包括至少一個(gè)運(yùn)算表達(dá)式;以及所述文檔轉(zhuǎn)換器可操作以將基于所述運(yùn)算表達(dá)式的計(jì)算結(jié)果代入所述文檔的、與所述運(yùn)算表達(dá)式相對(duì)應(yīng)的位置。6.如權(quán)利要求1所述的文檔處理裝置,還包括構(gòu)造器,可操作以從所述文檔生成數(shù)據(jù),所述數(shù)據(jù)具有這樣的形式,即,可操作以生成能夠提供對(duì)所述文檔的訪問(wèn)的文檔對(duì)象模型,其中,所述構(gòu)造器可操作以生成對(duì)應(yīng)于所述第二標(biāo)記語(yǔ)言的源文檔對(duì)象模型數(shù)據(jù),以及生成對(duì)應(yīng)于所述第一標(biāo)記語(yǔ)言的目的文檔對(duì)象模型數(shù)據(jù)。7.如權(quán)利要求6所述的文檔處理裝置,其中,所述處理裝置可操作以通過(guò)參考所述目的文檔對(duì)象模型數(shù)據(jù)來(lái)顯示所述文檔。8.如權(quán)利要求6所述的文檔處理裝置,其中,當(dāng)所述處理裝置接收編輯所述文檔的指令時(shí),所述文檔轉(zhuǎn)換器可操作以修改所述源文檔對(duì)象模型數(shù)據(jù)所述目的模型的相關(guān)部分;以及所述文檔處理裝置可操作以通過(guò)參考所述目的文檔對(duì)象模型數(shù)據(jù)來(lái)更新顯示。9.如權(quán)利要求1所述的文檔處理裝置,還包括連接器單元,所述連接器單元可操作以維持包含在所述源文檔對(duì)象模型數(shù)據(jù)中的數(shù)據(jù)與包含在所述目的文檔對(duì)象模型數(shù)據(jù)中的相應(yīng)數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系。10.如權(quán)利要求9所述的文檔處理裝置,其中,當(dāng)所述處理裝置接收編輯所述文檔的指令時(shí),所述連接器單元可操作以獲取所述編輯指令,基于所述對(duì)應(yīng)關(guān)系提取所述源文檔對(duì)象模型數(shù)據(jù)中待編輯的節(jié)點(diǎn),以及對(duì)所述節(jié)點(diǎn)執(zhí)行與所述編輯指令相對(duì)應(yīng)的修改操作。11.如權(quán)利要求9所述的文檔處理裝置,其中,當(dāng)所述連接器單元接收到所述源文檔對(duì)象數(shù)據(jù)模型的所述節(jié)點(diǎn)被修改的通知時(shí),所述連接器單元可操作以基于所述對(duì)應(yīng)關(guān)系提取所述目的文檔對(duì)象數(shù)據(jù)模型的、與所述被修改的節(jié)點(diǎn)相對(duì)應(yīng)的節(jié)點(diǎn),以及重新構(gòu)造所述目的文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)。12.如權(quán)利要求9所述的文檔處理裝置,其中,所述連接器單元包括與所述目的文檔對(duì)象數(shù)據(jù)模型的各個(gè)節(jié)點(diǎn)一一對(duì)應(yīng)的連接器,以及所述連接器包括第一連接器,所述第一連接器維持所述目的文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)與所述源文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系;以及第二連接器,所述第二連接器不具有所述源文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)。13.如權(quán)利要求11所述的文檔處理裝置,其中,當(dāng)所述處理裝置接收編輯所述文檔的指令時(shí),向被通知連接器通知所述編輯指令,該連接器與所述目的文檔對(duì)象數(shù)據(jù)模型的、文檔中編輯位置所屬的節(jié)點(diǎn)相對(duì)應(yīng);以及如果所述收到通知的連接器是所述第一連接器,則所述第一連接器將所述通知的編輯指令轉(zhuǎn)換為對(duì)所述相應(yīng)的源文檔對(duì)象數(shù)據(jù)模型進(jìn)行的修改操作。14.如權(quán)利要求12所述的文檔處理裝置,其中,當(dāng)所述連接器單元接收到所述源文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)被修改的通知時(shí),所述連接器單元可操作以重新構(gòu)造所述相應(yīng)的目的文檔對(duì)象模型數(shù)據(jù)。15.如權(quán)利要求12所述的文檔處理裝置,其中,所述連接器中的至少一個(gè)是文本連接器,其中所述文本連接器創(chuàng)建的對(duì)應(yīng)節(jié)點(diǎn)能夠被編輯。16.如權(quán)利要求12所述的文檔處理裝置,其中,所述連接器中的至少一個(gè)是值連接器,所述值連接器創(chuàng)建的對(duì)應(yīng)節(jié)點(diǎn)不能被編輯。17.如權(quán)利要求12所述的文檔處理裝置,其中,所述連接器中的至少一個(gè)是模板連接器,與所述模板連接器關(guān)聯(lián)的對(duì)應(yīng)節(jié)點(diǎn)是模板,與所述模板關(guān)聯(lián)的值能夠改變。18.如權(quán)利要求12所述的文檔處理裝置,其中,所述連接器中的至少一個(gè)可操作以到達(dá)所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)中的相應(yīng)節(jié)點(diǎn),即便是所述節(jié)點(diǎn)中的文本值被改變。19.如權(quán)利要求18所述的文檔處理裝置,其中,所述連接器中的至少一個(gè)可操作以識(shí)別所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)的最新結(jié)構(gòu)中的最新文本,并通知所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)。20.如權(quán)利要求18所述的文檔處理裝置,其中,到達(dá)所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)中的相應(yīng)節(jié)點(diǎn)是通過(guò)分析xpath表達(dá)式來(lái)實(shí)現(xiàn)的。21.如權(quán)利要求20所述的文檔處理裝置,其中,所述xpath表達(dá)式包括路徑。22.如權(quán)利要求20所述的文檔處理裝置,所述xpath表達(dá)式包括函數(shù)。23.一種用于處理文檔的文檔處理方法,包括當(dāng)復(fù)雜的文檔以第一標(biāo)記語(yǔ)言描述時(shí),將所述文檔映射為第二標(biāo)記語(yǔ)言,所述文檔由能夠處理所述第二標(biāo)記語(yǔ)言而不能處理所述第一標(biāo)記語(yǔ)言的文檔處理裝置來(lái)處理;以及顯示所映射成的文檔。24.一種計(jì)算機(jī)程序產(chǎn)品,包括具有指令的計(jì)算機(jī)可讀介質(zhì),所述指令可操作以使計(jì)算機(jī)執(zhí)行文檔處理操作,所述文檔處理操作使用的處理包括當(dāng)復(fù)雜的文檔以第一標(biāo)記語(yǔ)言描述時(shí),將所述文檔映射為第二標(biāo)記語(yǔ)言,所述文檔由能夠處理所述第二標(biāo)記語(yǔ)言而不能處理所述第一標(biāo)記語(yǔ)言的文檔處理裝置來(lái)處理;以及顯示所映射成的文檔。25.一種用于對(duì)具有至少一個(gè)不能由文檔處理裝置處理的詞匯的文檔進(jìn)行編輯的方法,包括載入所述文檔;為所述文檔生成源文檔對(duì)象數(shù)據(jù)模型樹(shù);以及通過(guò)樹(shù)轉(zhuǎn)換為所述文檔生成目的文檔對(duì)象數(shù)據(jù)模型樹(shù),從而使得所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)適于處理所述至少一個(gè)詞匯。26.如權(quán)利要求25所述的方法,還包括在接收編輯操作時(shí),改變所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù);以及對(duì)所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)進(jìn)行相應(yīng)的改變。27.如權(quán)利要求26所述的方法,其中,所述對(duì)源文檔對(duì)象數(shù)據(jù)模型樹(shù)的改變通過(guò)生成一系列修改所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)的命令來(lái)實(shí)現(xiàn)。28.如權(quán)利要求26所述的方法,其中,使用連接器單元維持所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)與所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)之間的關(guān)系。29.如權(quán)利要求28所述的方法,其中,所述連接器單元包括連接器的樹(shù),所述連接器中的每一個(gè)負(fù)責(zé)創(chuàng)建所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)中的對(duì)應(yīng)節(jié)點(diǎn)。30.如權(quán)利要求28所述的方法,其中,所述連接器包括第一連接器,所述第一連接器維持所述源文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)與所述目的文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系;以及第二連接器,所述第二連接器不具有所述源文檔對(duì)象數(shù)據(jù)模型的節(jié)點(diǎn)。31.如權(quán)利要求29所述的方法,其中,所述連接器中的至少一個(gè)是文本連接器,其中所述文本連接器創(chuàng)建的對(duì)應(yīng)節(jié)點(diǎn)能夠被編輯。32.如權(quán)利要求29所述的方法,其中,所述連接器中的至少一個(gè)是值連接器,所述值連接器創(chuàng)建的對(duì)應(yīng)節(jié)點(diǎn)不能被編輯。33.如權(quán)利要求29所述的方法,其中,所述連接器中的至少一個(gè)是模板連接器,與所述模板連接器關(guān)聯(lián)的對(duì)應(yīng)節(jié)點(diǎn)是模板,與所述模板關(guān)聯(lián)的值能夠改變。34.如權(quán)利要求29所述的方法,其中,所述連接器中的至少一個(gè)可操作以到達(dá)所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)中的相應(yīng)節(jié)點(diǎn),即便是所述節(jié)點(diǎn)中的文本值被改變。35如權(quán)利要求34所述的方法,其中,所述連接器中的至少一個(gè)可操作以識(shí)別所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)的最新結(jié)構(gòu)中的最新文本,并通知所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)。36.如權(quán)利要求34所述的方法,其中,到達(dá)所述源文檔對(duì)象數(shù)據(jù)模型樹(shù)中的相應(yīng)節(jié)點(diǎn)是通過(guò)分析xpath表達(dá)式來(lái)實(shí)現(xiàn)的。37.如權(quán)利要求35所述的方法,其中,所述xpath表達(dá)式包括路徑。38.如權(quán)利要求35所述的方法,所述xpath表達(dá)式包括函數(shù)。39.如權(quán)利要求27所述的方法,其中生成命令隊(duì)列。40.如權(quán)利要求25所述的方法,其中,所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)被指定第二源文檔對(duì)象數(shù)據(jù)模型樹(shù);以及使用樹(shù)轉(zhuǎn)換來(lái)生成第二目的文檔對(duì)象數(shù)據(jù)模型樹(shù)。41.如權(quán)利要求26所述的方法,其中,所述編輯操作作為事件來(lái)執(zhí)行。42.如權(quán)利要求41所述的方法,其中,所述事件為鼠標(biāo)事件或鍵盤事件。43.如權(quán)利要求25所述的方法,其中,所述樹(shù)轉(zhuǎn)換記錄在定義文件中。44.如權(quán)利要求43所述的方法,其中,所述定義文件包括在事件和至少一個(gè)命令之間的映射。45.如權(quán)利要求43所述的方法,其中,所述定義文件包括至少一個(gè)運(yùn)算表達(dá)式,將基于所述運(yùn)算表達(dá)式的計(jì)算結(jié)果代入所述文檔中的、與所述運(yùn)算表達(dá)式相對(duì)應(yīng)的位置。46.如權(quán)利要求25所述的方法,其中,所述文檔基于所述目的文檔對(duì)象數(shù)據(jù)模型樹(shù)來(lái)顯示。全文摘要一種文檔處理系統(tǒng),包括可操作以處理以第一標(biāo)記語(yǔ)言描述的文檔的文檔處理器,所述第一標(biāo)記語(yǔ)言與所述文檔處理器相符。如果提供的文檔以與所述文檔處理器不相符的第二標(biāo)記語(yǔ)言描述,則所述文檔轉(zhuǎn)換器可操作以將該文檔映射為所述第一標(biāo)記語(yǔ)言。文檔編號(hào)G06F17/21GK1950818SQ20058001204公開(kāi)日2007年4月18日申請(qǐng)日期2005年4月8日優(yōu)先權(quán)日2004年4月8日發(fā)明者和家伸明,大島教雄,藤卷祐介,檜山正幸申請(qǐng)人:佳思騰軟件公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1