午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

數(shù)據(jù)處理裝置和數(shù)據(jù)處理方法

文檔序號:6656961閱讀:243來源:國知局
專利名稱:數(shù)據(jù)處理裝置和數(shù)據(jù)處理方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù)。
背景技術(shù)
XML作為適用于通過網(wǎng)絡(luò)等與他人共享數(shù)據(jù)的格式受到人們的關(guān)注,且人們正開發(fā)用于編寫、顯示和編輯XML文檔的應(yīng)用軟件(例如,請參考專利文獻1)。XML文檔基于文檔類型定義等所定義的詞匯(標簽集)編寫。
專利文獻1特開2001-290804號公報發(fā)明內(nèi)容發(fā)明要解決的課題詞匯可以任意進行定義,在理論上可以存在無限多的詞匯。對應(yīng)于所有這些詞匯提供專用的顯示和編輯環(huán)境是不太現(xiàn)實的。在現(xiàn)有技術(shù)中,在對由專用編輯環(huán)境未準備的詞匯描述的文檔進行編輯的情況下,直接用文本編輯器等編輯由文本數(shù)據(jù)構(gòu)成的文檔的源。
本發(fā)明是鑒于這種狀況而做出的,其目的在于,提供一種在對利用標記語言的結(jié)構(gòu)化數(shù)據(jù)進行處理時可提高用戶的便利性的技術(shù)。
解決課題的方案本發(fā)明的一個方面涉及數(shù)據(jù)處理裝置。該數(shù)據(jù)處理裝置包括處理單元,處理數(shù)據(jù);記錄單元,將所述處理單元的操作歷史記錄到存儲單元中;用于接受來自用戶的操作狀態(tài)的記錄請求,將該操作狀態(tài)以能夠區(qū)別于其他操作狀態(tài)的形式記錄到所述存儲單元中的裝置;和提示單元,向用戶提示所述歷史。所述提示單元將所述用戶所請求記錄的操作狀態(tài)以能夠區(qū)別于其他操作狀態(tài)的形式提示。
本發(fā)明的另一個方面也涉及數(shù)據(jù)處理裝置。該裝置執(zhí)行由用戶指示的數(shù)據(jù)處理,生成并保存表示所指示的數(shù)據(jù)處理的內(nèi)容的處理對象。
該裝置參考被保持的處理對象,將伴隨數(shù)據(jù)處理的狀態(tài)轉(zhuǎn)移而產(chǎn)生的各狀態(tài)間的關(guān)系(包括狀態(tài)轉(zhuǎn)移的分支)以能夠區(qū)別的方式進行屏幕顯示。
該裝置在接收到執(zhí)行用于從數(shù)據(jù)處理執(zhí)行后的狀態(tài)返回到執(zhí)行前狀態(tài)的逆數(shù)據(jù)處理的指示時,參考已經(jīng)執(zhí)行后的數(shù)據(jù)處理所對應(yīng)的處理對象,生成表示所述逆數(shù)據(jù)處理的內(nèi)容的處理對象??梢詤⒖妓錾傻奶幚韺ο髞韴?zhí)行逆數(shù)據(jù)處理。
該裝置在執(zhí)行了所述逆數(shù)據(jù)處理后,也可以繼續(xù)保存所述已經(jīng)執(zhí)行的數(shù)據(jù)處理的處理對象和所述逆數(shù)據(jù)處理的處理對象。
該裝置參考在屏幕顯示的各個狀態(tài)中表示從被選擇狀態(tài)到當前狀態(tài)為止所執(zhí)行的數(shù)據(jù)處理內(nèi)容的處理對象,執(zhí)行與已經(jīng)執(zhí)行的該數(shù)據(jù)處理相反的逆數(shù)據(jù)處理,來再現(xiàn)被選擇的狀態(tài)。
所述處理對象可以既包含有表示數(shù)據(jù)處理的內(nèi)容的信息,也包含有表示該數(shù)據(jù)處理的逆數(shù)據(jù)處理的內(nèi)容的信息。
該裝置在把狀態(tài)轉(zhuǎn)移結(jié)果顯示在屏幕中時,可以將對應(yīng)于這些狀態(tài)所輸入的注釋數(shù)據(jù)進行屏幕顯示。
該裝置可以生成這樣的處理對象,所述處理對象作為表示根據(jù)用戶對文檔文件的編輯操作而應(yīng)執(zhí)行的處理內(nèi)容的對象。
該裝置可以生成這樣的處理對象,所述處理對象作為表示依照文檔對象模型的數(shù)據(jù)處理內(nèi)容的對象,所述文檔對象模型是為了提供將文檔作為數(shù)據(jù)進行處理時的存取方法而確定的。
該裝置可以生成這樣的處理對象,所述處理對象作為表示用于用戶切換應(yīng)顯示網(wǎng)頁的頁選擇操作的內(nèi)容的對象。
此外,作為本發(fā)明的實施方式,以上構(gòu)成要素的任意組合、以及在方法、裝置、系統(tǒng)等之間變換本發(fā)明的形式等也是有效的。
發(fā)明的效果根據(jù)本發(fā)明,可提高在對基于標記語言的結(jié)構(gòu)化數(shù)據(jù)進行處理時的用戶便利性。


圖1示出了與前提技術(shù)相關(guān)的文檔處理裝置的構(gòu)成;圖2示出了由文檔處理裝置編輯的XML文檔的例子;圖3示出了將圖2的XML文檔映射為HTML描述的表的一個例子;圖4(a)示出了用以將圖2的XML文檔映射為圖3的表的定義文件的一個例子;圖4(b)示出了用以將圖2的XML文檔映射為圖3的表的定義文件的一個例子;圖5示出了當利用圖3的對應(yīng)關(guān)系將圖2的XML文檔映射為HTML時顯示屏的一個例子;圖6示出了用于在用戶生成定義文件時,由定義文件生成單元向用戶提示的圖形用戶界面的例子;圖7示出了定義文件生成單元生成的屏幕布局(layout)的另一例子;圖8示出了利用文檔處理裝置的XML文檔編輯屏幕的一例;圖9示出了利用文檔處理裝置編輯的XML文檔的另一例子;圖10示出了顯示圖9所示文檔的屏幕的例子;圖11(a)示出了文檔處理系統(tǒng)基本構(gòu)成;圖11(b)示出了文檔處理系統(tǒng)的總體方框圖;圖11(c)示出了文檔處理系統(tǒng)的總體方框圖;圖12示出了文檔管理器的細節(jié);圖13示出了詞匯連接子系統(tǒng)的細節(jié);圖14示出了程序調(diào)用器與其它組件的關(guān)系的細節(jié);圖15提供了載入程序調(diào)用器上的應(yīng)用程序服務(wù)的結(jié)構(gòu)的細節(jié);圖16示出了核心組件的細節(jié);圖17示出了涉及文檔管理器的細節(jié);圖18提供了撤消框架和撤消命令的細節(jié);圖19示出了文檔處理系統(tǒng)中載入文檔的情況;圖20示出了文檔及其表述的實施例;
圖21示出了模型與控制器的關(guān)系;圖22示出了分別涉及插件子系統(tǒng)、詞匯連接與連接器的細節(jié);圖23示出了VCD文檔的例子;圖24示出了在文檔處理系統(tǒng)中載入復合文檔的步驟順序;圖25示出了在文檔處理系統(tǒng)中載入復合文檔的步驟順序;圖26示出了在文檔處理系統(tǒng)中載入復合文檔的步驟順序;圖27示出了在文檔處理系統(tǒng)中載入復合文檔的步驟順序;圖28示出了在文檔處理系統(tǒng)中載入復合文檔的步驟順序;圖29示出了命令流;圖30示出了與實施方式有關(guān)的文檔處理裝置結(jié)構(gòu)的圖;圖31(a)示出了操作歷史分支的情況的圖;圖31(b)示出了分支的操作歷史表示為樹狀的情況的圖;圖32是表示文檔處理裝置所顯示的屏幕的例子的圖;圖33是用于說明實施方式的例子的圖;圖34是圖30所示的撤消管理單元的詳細功能模塊圖;圖35是用于說明對文檔文件的歷史信息的管理的示意圖;圖36是以時間序列排列了圖35所示的狀態(tài)轉(zhuǎn)移的圖;圖37是用于說明在圖35或圖36中刪除分支狀態(tài)的S4情況下的操作歷史管理的示意圖;圖38是用于參照處理對象文檔編輯的屏幕顯示圖;圖39是圖33所示的個人計算機商品選擇相關(guān)的用戶界面的屏幕顯示圖;圖40是示出了與萬維網(wǎng)瀏覽器的頁切換相關(guān)的狀態(tài)轉(zhuǎn)移的屏幕顯示圖;圖41是用于通過時基管理狀態(tài)轉(zhuǎn)移的屏幕顯示圖。
標號說明20文檔處理裝置22主控制單元24編輯單元30DOM單元 32DOM提供器 34DOM構(gòu)造器36輸出部 40CSS單元 42CSS分析器
44CSS提供器 46呈現(xiàn)單元 50HTML單元52、62控制單元 54、64編輯單元 56、66顯示單元60SVG單元 80VC單元82映射單元84定義文件獲取單元 86定義文件生成單元3000文檔處理裝置3120撤消管理單元3140撤消堆棧3020數(shù)據(jù)處理單元3040用戶接口處理單元3042顯示單元3044輸入單元3060歷史處理單元3062狀態(tài)數(shù)據(jù)獲取單元3064對象生成單元3068壓縮單元。
具體實施例方式
在說明本發(fā)明的前提技術(shù)之后將說明本發(fā)明的實施例。
(前提技術(shù))圖1示出了與前提技術(shù)相關(guān)的文檔處理裝置20的結(jié)構(gòu)。文檔處理裝置20對結(jié)構(gòu)化的文檔進行處理,該文檔中的數(shù)據(jù)被分為具有分級結(jié)構(gòu)的多個組件。在本前提技術(shù)中以對作為結(jié)構(gòu)化文檔一例的XML文檔進行處理為例來說明。文檔處理裝置20包括主控單元22、編輯單元24、DOM(文檔對象模塊)單元30、CSS(層疊樣式表)單元40、HTML(超文本標記語言)單元50、SVG(可縮放矢量圖形)單元60以及用作轉(zhuǎn)換單元一個示例的VC(詞匯連接)單元80。在硬件組件方面,這些單元結(jié)構(gòu)可由任意計算機的CPU、存儲器、載入存儲器中的程序等來實現(xiàn)。這里,描述了由它們的協(xié)作而實現(xiàn)的功能模塊。因此,本領(lǐng)域技術(shù)人員能夠理解,這些功能模塊可僅通過硬件的方式、僅通過軟件的方式或通過二者相結(jié)合的方式以多種形式來實現(xiàn)。
主控單元22提供插件的載入或提供執(zhí)行命令的框架。編輯單元24提供了用于編輯XML文檔的框架。文檔處理裝置20中的文檔的顯示和編輯功能是通過插件來實現(xiàn)的,而必要的插件是根據(jù)所處理的文檔類型、通過主控單元22或編輯單元24來載入的。主控單元22或編輯單元24通過參考作為處理對象的XML文檔的命名空間來確定哪個或哪些詞匯描述了待處理的XML文檔的內(nèi)容,并且對應(yīng)于所確定的詞匯而載入用于顯示和編輯的插件,從而執(zhí)行顯示和編輯。例如,利用對HTML文檔進行顯示和編輯的HTML單元50,以及對SVG文檔進行顯示和編輯的SVG單元60等在文檔處理裝置20中被實現(xiàn)為處理單元。也就是說,對于各個詞匯(標簽集),將顯示系統(tǒng)和編輯系統(tǒng)實現(xiàn)為插件,以使得在對HTML文檔和SVG文檔進行編輯時,分別將HTML單元50和SVG單元60與其各自的控制單元進行協(xié)同載入。如以下將描述的那樣,在要對既包括HTML又包括SVG組件的復合文檔進行處理時,既載入HTML單元50又載入SVG單元60。
通過實現(xiàn)以上結(jié)構(gòu),用戶能夠僅選擇必要的功能以安裝該功能,如果需要,也能夠在稍后階段增加或刪除一個和多個功能。因此,能夠有效利用記錄媒介的存儲區(qū)域(例如硬盤),并能夠避免在執(zhí)行程序的時候存儲器使用的浪費。此外,由于這一結(jié)構(gòu)有利于性能擴展,因此開發(fā)者自己能夠以插件的形式處理新的詞匯,因而能夠促進開發(fā)過程。因此,用戶也能夠通過增加插件而以較低成本輕易地增加功能。
編輯單元24通過用戶接口從用戶處接收編輯指令的事件,將事件通知適當?shù)牟寮⒖刂铺幚?,所述處理可包括重新?zhí)行事件的重做(redo)處理以及取消事件的撤消(undo)處理。
DOM單元30包括DOM提供器32、DOM構(gòu)造器34以及輸出部36。DOM單元30實現(xiàn)了與文檔對象模型(DOM)相符的功能,在XML文檔作為數(shù)據(jù)被處理時,所述文檔對象模型被定義以提供訪問方法。DOM提供器32是滿足由編輯單元24定義的接口的DOM的實現(xiàn)。DOM構(gòu)造器34從XML文檔生成DOM樹。如以下將描述的那樣,當通過VC單元80將待處理的XML文檔映射為其它詞匯時,生成與映射源中的XML文檔相對應(yīng)的源樹以及與映射目的中的XML文檔相對應(yīng)的目的樹。在編輯的末尾,例如輸出部36輸出作為XML文檔的DOM樹。
CSS單元40提供與CSS相符的顯示功能,并包括CSS分析器42、CSS提供器44以及呈現(xiàn)單元46。CSS分析器42具有用于分析CSS語法的分析功能。CSS提供器44是CSS對象的實現(xiàn),并執(zhí)行對DOM樹的CSS層疊處理。呈現(xiàn)單元46是CSS的呈現(xiàn)引擎,并用來顯示以諸如HTML的詞匯描述的、利用CSS設(shè)置的文檔。
HTML單元50對以HTML描述的文檔進行顯示或編輯。SVG單元60對以SVG描述的文檔進行顯示或編輯。這些顯示/編輯系統(tǒng)以插件的形式實現(xiàn),各個系統(tǒng)包括對文檔進行顯示的顯示單元“畫布(Canvas)”56、66、發(fā)送和接收包括編輯命令的事件的控制單元“Editlet”52、62以及在接收到編輯命令時對DOM進行編輯的編輯單元“區(qū)(zone)”54、64。在控制單元52或62從外部源接收到用于DOM樹的編輯命令時,編輯單元54或64修改DOM樹,而顯示單元56或66更新顯示。這些單元具有與被稱作MVC(Model-View-Controllers,模型-視圖-控制器)的框架相類似的結(jié)構(gòu),通常,顯示單元56及66對應(yīng)于“視圖(View)”,控制單元52及62對應(yīng)于“控制器(Controller)”,而編輯單元54及64和DOM實體對應(yīng)于“模型(Model)”。在本前提技術(shù)的文檔處理裝置20中,不僅能夠以樹型視圖顯示格式來編輯XML文檔,而且能夠根據(jù)相應(yīng)的詞匯來完成編輯。例如,HTML單元50提供了用戶界面,通過該用戶界面能夠以一種類似于Word處理器的方法對HTML文檔進行編輯,而SVG單元60提供了一種用戶界面,通過該用戶界面能夠以一種類似于圖像繪制工具的方法對SVG文檔進行編輯。
VC單元80包括映射單元82、定義文件獲取單元84以及定義文件生成單元86。通過將以某個詞匯描述的文檔映射為另一詞匯,VC單元80提供了一種框架,以通過與被映射的詞匯相對應(yīng)的顯示和編輯插件來顯示或編輯文檔。在本前提技術(shù)中,該功能被稱為詞匯連接(VocabularyConnectionVC)。在VC單元80中,定義文件獲取單元84獲取描述了映射定義的腳本文件。該定義文件逐個節(jié)點地描述了節(jié)點間的對應(yīng)(連接)。此時,可規(guī)定各節(jié)點的元素值或?qū)傩灾凳欠窨梢跃庉嫛R部擅枋鍪褂昧斯?jié)點的元素值或?qū)傩灾档倪\算表達式。這些功能將在稍后進行描述。映射單元82使得DOM構(gòu)造器34通過參考VC定義文件獲取單元84已經(jīng)獲取的腳本文件來生成目的樹,以管理源樹與目的樹之間的對應(yīng)關(guān)系。定義文件生成單元86為用戶提供圖形用戶界面,以生成定義文件。
VC單元80對源樹與目的樹之間的連接進行監(jiān)控。當VC單元80通過由負責顯示的插件提供的用戶接口從用戶處接收編輯指令時,它首先修改源樹的相關(guān)節(jié)點。因此,DOM單元30將發(fā)出指示源樹已經(jīng)被修改的變化事件。然后,VC單元80接收該變化事件,并對應(yīng)于被修改的節(jié)點而修改目的樹的節(jié)點,以使得目的樹與源樹的修改同步。當為顯示/編輯目的樹提供必要的處理的插件(例如HTML單元50)接收了指示目的樹已經(jīng)被修改的變化事件時,該插件通過參考被修改的目的樹而對顯示進行更新。通過執(zhí)行將詞匯轉(zhuǎn)換為另一主要詞匯的上述結(jié)構(gòu),即使是以少數(shù)用戶使用的局部詞匯來描述文檔,也能夠顯示文檔,并提供編輯環(huán)境。
文檔處理裝置20顯示和/或編輯文檔的操作將在下文中描述。當文檔處理裝置20載入待處理的文檔時,DOM構(gòu)造器34從XML文檔生成DOM樹。主控單元22或編輯單元24通過參考待處理的XML文檔的命名空間來確定哪個詞匯描述XML文檔。如果與詞匯相對應(yīng)的插件安裝在文檔處理裝置20中,則該插件被載入以顯示/編輯文檔。另一方面,如果插件并未安裝其中,則進行檢查以查看是否存在定義文件。如果存在定義文件,則定義文件獲取單元84獲取該定義文件,并根據(jù)定義生成目的樹,以使得能夠通過與被映射成的詞匯相對應(yīng)的插件來顯示/編輯文檔。如果該文檔是包含多個詞匯的復合文檔,則通過與各詞匯相對應(yīng)的插件來顯示/編輯該文檔的相關(guān)部分,以下將詳細描述。如果不存在定義文件,則顯示文檔的源或樹型結(jié)構(gòu),并在顯示屏中進行編輯。
圖2示出了待處理的XML文檔的例子。根據(jù)該示例性表示,XML文檔用于管理與學生已獲得的評分或分數(shù)(成績)相關(guān)的數(shù)據(jù)。作為XML文檔的上部節(jié)點的組件“成績”包括在“成績”下方為各個學生設(shè)置的多個元素“生徒”。元素“生徒”具有屬性“名前”,并包括作為子元素的學科“國語”、“數(shù)學”(數(shù)學)、“理科”以及“社會”(社會科學)。屬性“名前”存儲學生的姓名。組件“國語”、“數(shù)學”、“理科”和“社會”存儲分別為日語、數(shù)學、自然科學和社會科學的學科的測試成績。例如,姓名為“A”的學生的成績是日語為“90”、數(shù)學為“50”、自然科學為“75”以及社會科學為“60”。下文中,該文檔中使用的詞匯(標簽集)被稱作“成績管理詞匯”。
由于根據(jù)本前提技術(shù)的文檔處理裝置20不具有與成績管理詞匯的顯示和/或編輯相符或能夠處理成績管理詞匯的顯示和/或編輯的插件,因此,將使用以上描述的VC單元80,以不使用源顯示和樹顯示的其它顯示方法來顯示該文檔。也就是說,通過準備定義文件,使得成績管理詞匯可映射為已具有插件的另一詞匯,例如HTML或SVG。下面將要進行的說明是在假設(shè)已經(jīng)具備了定義文件的情況下進行的,不過對于用戶本身用以創(chuàng)建定義文件所必需的用戶界面將在后面描述。
圖3示出了圖2中所示的XML文檔映射為以HTML描述的表的例子。在圖3所示的例子中,使以成績管理詞匯描述的“生徒”節(jié)點與以HTML描述的表(“TABLE”節(jié)點)的行(“TR”節(jié)點)相對應(yīng)。各行的第一列與屬性值“名前”相對應(yīng),第二列與“國語”節(jié)點的元素值相對應(yīng),第三列與“數(shù)學”節(jié)點的元素值相對應(yīng),第四列與“理科”節(jié)點的元素值相對應(yīng),而第五列與“社會”節(jié)點的元素值相對應(yīng)。因此,圖2所示的XML文檔能以HTML的列表格式來顯示。此外,這些屬性值和元素值被指定為能夠編輯,以使得用戶能夠使用HTML單元50的編輯功能在顯示屏上對這些值進行編輯。在第六列中,指定了用來計算日語、數(shù)學、自然科學以及社會科學的分數(shù)的加權(quán)平均的運算表達式,并顯示每個學生的分數(shù)的平均值。以這種方式,通過在定義文件中指定運算表達式來完成更靈活的顯示,從而提高用戶在進行編輯時的便利性。另外,將對第六列的編輯指定為不允許,以使得不能單獨對平均值本身進行編輯。因此,在映射定義中,能夠指定可編輯或不能編輯,以避免用戶可能的錯誤操作。
圖4(a)和4(b)表示定義文件的例子,以將圖2所示的XML文檔映射為圖3所示的表。該定義文件通過被定義用于和定義文件一起使用的腳本語言來描述。在圖4(a)和4(b)所示的例子中,“生徒の追加”和“生徒の削除”被定義為命令,并分別涉及將節(jié)點“生徒”插入源樹中的操作以及將節(jié)點“生徒”從源樹中刪除的操作。模板描述了諸如“名前”和“國語”的標題顯示于表的第一行中,而節(jié)點“生徒”的內(nèi)容顯示于第二行及其隨后的行中。在顯示節(jié)點“生徒”內(nèi)容的模板中,包含“text-of”的項表示允許進行編輯,而包含“value-of”的項表示不允許進行編輯。在這些顯示了節(jié)點“生徒”內(nèi)容的行中,在第六列中描述了運算表達式“(src國語+src數(shù)學+scr理科+scr社會)div 4”。這意味著顯示學生成績的平均值。
圖5示出了將圖2所示的由成績管理詞匯描述的XML文檔利用圖3所示的對應(yīng)關(guān)系映射為HTML以使其顯示在顯示屏上時,顯示屏的一個例子。在表90各行中從左至右顯示的是各學生的姓名,以及日語成績、數(shù)學成績、自然科學成績、社會科學成績及其平均值。用戶能夠在該屏幕上對XML文檔進行編輯。例如,當?shù)诙械谌兄械闹底優(yōu)椤?0”時,源樹中與該節(jié)點相對應(yīng)的元素值(亦即學生“B”的數(shù)學成績)變?yōu)椤?0”。此時,為了使目的樹與源樹一致,目的樹的相應(yīng)部分因此而改變,從而使得HTML單元50能夠根據(jù)改變的目的樹來對顯示進行更新。因此,學生“B”的數(shù)學成績變?yōu)椤?0”,而平均值相應(yīng)地變?yōu)椤?5”。
在圖5所示的屏幕上,例如“生徒の追加”和“生徒の削除”的命令被顯示為菜單,如圖4(a)、(b)所示的定義文件中所定義的那樣。當用戶從這些命令中選擇一個命令時,節(jié)點“生徒”增加至源樹中或從源樹中刪除。以這種方式,利用根據(jù)本前提技術(shù)的文檔處理裝置20,不僅能夠?qū)Ψ旨壗Y(jié)構(gòu)下端中的組件的元素值進行編輯,而且能夠?qū)υ摲旨壗Y(jié)構(gòu)進行編輯。具有上述樹型結(jié)構(gòu)的編輯功能能夠以命令的形式顯現(xiàn)給用戶。此外,增加或刪除表中的行的命令可例如與增加或刪除節(jié)點“生徒”的操作相關(guān)。嵌入其它詞匯中的命令可顯現(xiàn)給用戶。該表可用作輸入模板,以使得對于新學生的成績數(shù)據(jù)能夠以填空的方式來增加。如上所述,在使用HTML單元50的顯示/編輯功能的同時,以成績管理詞匯描述的文檔可通過VC功能來編輯。
圖6示出了由定義文件生成單元86顯現(xiàn)給用戶的圖形用戶界面的例子,以使用戶能夠生成定義文件。待映射的XML文檔在屏幕的左側(cè)區(qū)域91顯示為樹。被映射成的XML文檔的屏幕布局顯示在屏幕的右側(cè)區(qū)域92中。該屏幕布局可通過HTML單元50來編輯,用戶在屏幕的右側(cè)區(qū)域92中確定并創(chuàng)建用于對文檔進行顯示的屏幕布局。例如,使用諸如鼠標等的指示設(shè)備將屏幕的左側(cè)區(qū)域91中顯示的XML文檔的待映射的節(jié)點拖動并放置到屏幕的左側(cè)區(qū)域91中的HTML屏幕布局中,以指定映射源處的節(jié)點與映射目的處的節(jié)點之間的連接。例如,當作為元素“生徒”的子元素的“數(shù)學”被放置到HTML屏幕上的表90中第一行與第三列的交叉處時,第三列中的“數(shù)學”節(jié)點與“TD”節(jié)點之間建立連接。各節(jié)點均被如此被指定為可編輯或者不可編輯。此外,可在顯示屏中嵌入運算表達式。當完成屏幕編輯時,定義文件生成單元86生成定義文件,其描述屏幕布局與節(jié)點之間的連接。
已經(jīng)開發(fā)出了能夠處理主要詞匯(例如XHTML(可擴展超文本標記語言)、MathML(數(shù)學標記語言)以及SVG(可縮放矢量圖形))的瀏覽器或編輯器。但是,不可能開發(fā)出適于以自創(chuàng)詞匯描述的所有文檔(例如圖2中所示的文檔)的瀏覽器或編輯器。然而,如果如上所述創(chuàng)建了用于映射為其它詞匯的定義文件,那么以自創(chuàng)詞匯描述的文檔就能夠使用VC功能來顯示和/或編輯,而不需不斷開發(fā)新的瀏覽器或編輯器。
圖7示出了由定義文件生成單元86生成的屏幕布局的另一例子。在圖7所示的例子中,在屏幕上產(chǎn)生表90和圓形圖92用于顯示以成績管理詞匯描述的XML文檔。圓形圖93以SVG描述。如以下將討論的那樣,根據(jù)本前提技術(shù)的文檔處理裝置20能夠?qū)υ趩蝹€XML文檔內(nèi)以多個詞匯描述的復合文檔進行處理。這就是為什么以HTML描述的表90以及以SVG描述的圓形圖93能夠顯示在同一屏幕上的原因。
圖8示出了用于由文檔處理裝置20處理的XML文檔的編輯屏幕的一例。在圖8所示的例子中,單個屏幕被分割為多個區(qū)域,而待處理的XML文檔在各個區(qū)域以多種不同顯示格式顯示。該文檔的源在區(qū)域94中顯示,該文檔的樹結(jié)構(gòu)在區(qū)域95中顯示,而圖5所示的、以HTML描述的表在區(qū)域96中顯示。該文檔在這些區(qū)域中的任意區(qū)域均可被編輯,當用戶對這些區(qū)域中的任意區(qū)域的內(nèi)容進行編輯時,源樹將被相應(yīng)修改,從而負責各屏幕顯示的插件更新應(yīng)反映源樹變更的屏幕。具體而言,負責顯示對應(yīng)編輯屏幕的插件的顯示單元被預先注冊為變化事件的監(jiān)聽器,所述變化事件提供源樹中發(fā)生了改變的通知。當源樹被任意插件或VC單元80修改時,顯示編輯屏幕的所有顯示單元接收發(fā)出的一個或多個變化事件,并從而更新屏幕。此時,如果插件正在通過VC功能進行顯示,則VC單元80根據(jù)對源樹的修改來修改目的樹。之后,插件的顯示單元通過參考上述經(jīng)過修改的目的樹而對屏幕進行修改。
例如,當通過專用插件來實現(xiàn)源顯示和樹型視圖顯示時,源顯示插件和樹顯示插件通過直接參考源樹而不是利用目的樹來實現(xiàn)它們的顯示。在這種情況下,當在屏幕的任何區(qū)域中完成編輯時,源顯示插件和樹顯示插件通過參考修改后的源樹來更新屏幕。同樣,負責顯示區(qū)域96的HTML單元50通過參考目的樹來更新屏幕,該目的樹已根據(jù)對源樹的修改而做了修改。
源顯示和樹型視圖顯示也可通過使用VC功能而實現(xiàn)。也就是說,例如,如果HTML被用于源和樹型結(jié)構(gòu)的布局,則XML文檔可映射為HTML以通過HTML單元50來顯示。在這種情況下,將生成具有源格式、樹格式、表格式的三個目的樹。如果在屏幕上的三個區(qū)域的任意一個中進行編輯,則VC單元80對源樹進行修改,并在之后分別對具有源格式、樹格式、表格式的三個目的樹進行修改。然后,HTML單元50通過參考三個目的樹來更新屏幕的三個區(qū)域。
以這種方式,在單個屏幕上以多種顯示格式顯示文檔,從而提高了用戶的便利性。例如,用戶能夠利用表90或類似物來以視覺上易于理解的格式顯示和編輯文檔,同時通過源顯示或樹顯示來理解文檔的分級結(jié)構(gòu)。在上述實施例中,單個屏幕被劃分為多個顯示格式,它們被同時顯示。但是,也可在單個屏幕上顯示單個顯示格式,從而可通過用戶指令來切換顯示格式。在這種情況下,主控單元22從用戶處接收用于切換顯示格式的請求,并隨后命令對應(yīng)的插件進行顯示切換。
圖9示出了由文檔處理裝置20編輯的XML文檔的另一例。在圖9所示的XML文檔中,XHTML文檔被嵌入SVG文檔的“foreignObject”標簽中,而該XHTML文檔包含以MathML描述的公式。在這種情況下,編輯單元24通過參考命名空間而將描繪任務(wù)分配或指派給適當?shù)娘@示系統(tǒng)。在圖9所示的實施例中,編輯單元24首先使SVG單元60描繪矩形,然后使HTML單元50描繪XHTML文檔。此外,編輯單元24使MathML單元(未示出)描繪公式。以這種方式,包含多個詞匯的復合文檔被適當?shù)仫@示。圖10示出了顯示結(jié)果。
在對文檔進行編輯期間,可向用戶顯示編輯菜單。該菜單可對應(yīng)于復合文檔的待編輯部分。因此,當用戶在顯示媒介上移動光標(キヤリツジ)時,待顯示的菜單可根據(jù)光標的位置被切換。也就是說,當光標位于顯示SVG文檔的區(qū)域中時,顯現(xiàn)給用戶的菜單響應(yīng)于SVG單元60或響應(yīng)于由用于映射SVG文檔的定義文件所定義的命令。當光標位于顯示XHTML文檔的區(qū)域中時,顯現(xiàn)給用戶的菜單響應(yīng)于HTML單元50或響應(yīng)于由用于映射XHTML文檔的定義文件所定義的命令。因此,可根據(jù)編輯位置提供適當?shù)挠脩艚缑妗?br> 如果在復合文檔中不存在與詞匯相符的適當插件或映射定義,則以該詞匯描述的部分可以源或樹格式顯示。在傳統(tǒng)實踐中,當要打開在某個文檔中嵌有其它文檔的復合文檔時,如果沒有安裝能夠顯示該嵌入文檔的應(yīng)用程序,則它們的內(nèi)容不能顯示。但是,根據(jù)本前提技術(shù),由文本數(shù)據(jù)組成的XML文檔可顯示為源或樹格式,從而能夠確定其內(nèi)容。這是基于文本的XML文檔或類似文檔的一個特征。
以基于文本的語言來描述的數(shù)據(jù)的另一個有益方面例如在于,在同一文檔中以其它詞匯描述的部分的數(shù)據(jù)可被該復合文檔中以某個詞匯描述的另一文檔所參考。此外,當在該文檔中進行搜索時,嵌入圖片(例如SVG)中的字符串也可作為被搜索的對象。
在以某個詞匯描述的文檔中,可使用屬于其它詞匯的標簽。雖然該XML文檔通常并不有效,但只要它結(jié)構(gòu)良好(well-formed),就可作為有效的XML文檔而被處理。在這種情況下,被插入的屬于其它詞匯的標簽可使用定義文件來進行映射。例如,在XML文檔中,可使用諸如“重要”和“最重要”的標簽以通過強調(diào)的方式來顯示這些標簽周圍的部分,或者可將這些標簽按重要性的順序來排序以進行相應(yīng)顯示。
當用戶在圖10所示的編輯屏幕上對文檔進行編輯時,負責對被編輯的部分進行處理的插件或VC單元80對源樹進行修改。能夠為源樹中的各個節(jié)點注冊對于變化事件的監(jiān)聽器。通常,與屬于各個節(jié)點的詞匯相符的插件的顯示單元或VC單元80被注冊為監(jiān)聽器。當源樹被修改時,DOM提供器32從被修改的節(jié)點向較高層次探索。如果存在注冊的監(jiān)聽器,則DOM提供器32向該監(jiān)聽器發(fā)出變化事件。例如,參考如圖9中所示的文檔,如果位于<html>節(jié)點下方的節(jié)點被修改,那么該變化事件被通報給被注冊為<html>節(jié)點的監(jiān)聽器的HTML單元50。在同一時刻,該變化事件被通報給被注冊為位于<html>節(jié)點上方的<svg>節(jié)點中的監(jiān)聽器的SVG單元60。此時,HTML單元50通過參考被修改的源樹而更新顯示。由于屬于SVG單元60本身的詞匯的節(jié)點并未被修改,因此SVG單元60可忽視該變化事件。
根據(jù)編輯的內(nèi)容,由HTML單元50對顯示進行的修改可改變總體布局。在這種情況下,對于各插件的各個顯示區(qū)域的布局將由管理屏幕布局的組件(例如,負責顯示最高節(jié)點的插件)來更新。例如,當由HTML單元50顯示的區(qū)域較之以前變大時,HTML單元50首先描繪HTML單元50本身所負責的區(qū)域,然后確定顯示區(qū)域的大小。然后,顯示區(qū)域的大小被通報給管理屏幕布局的組件,以請求對布局進行更新。負責屏幕布局的組件一收到該通知便為各個插件重新布置顯示區(qū)域。因此,被編輯的部分的顯示被適當更新,且總體屏幕布局被更新。
用以實現(xiàn)具有該先決條件技術(shù)的文檔處理裝置20的功能結(jié)構(gòu)將在下面詳細描述。以下的說明中,在描述類名等的情況下,使用原來的英字符母。
A.概述互聯(lián)網(wǎng)的出現(xiàn)導致由用戶處理和管理的文檔的數(shù)目近乎成指數(shù)函數(shù)地增長。形成互聯(lián)網(wǎng)核心的萬維網(wǎng)聯(lián)合會(World Wide Web)包括由這些文檔數(shù)據(jù)構(gòu)成的大規(guī)模數(shù)據(jù)中心庫。除了文檔,Web還提供用于這些文檔的信息檢索系統(tǒng)。這些文檔通常用標記語言描述,一種簡單且常用的標記語言是HTML(HypeText Markup Language超文本標記語言)。這種文檔還包括指向可能位于該Web其它部分中的其它文檔的鏈接。XML(eXtensible Markup Language可擴展標記語言)是另一種更高級、更常用的標記語言。用于訪問和查看該Web文檔的簡單瀏覽器使用面向?qū)ο蟮木幊陶Z言(例如Java(注冊商標))來開發(fā)。
以標記語言描述的文檔通常在瀏覽器和其它應(yīng)用程序中表述為樹型數(shù)據(jù)結(jié)構(gòu)的格式。這種結(jié)構(gòu)與文檔的語法分析樹相對應(yīng)。DOM(DocumentObject Model文檔對象模型)是一種眾所周知的用于表述和操作文檔的基于樹的數(shù)據(jù)結(jié)構(gòu)模型。文檔對象模型提供了用于表述文檔的標準對象集合,包括HTML和XML文檔等。DOM包括兩個基本組件,即,如何將表述文檔中組件的對象進行組合的標準模型,以及用于訪問和操作這些對象的標準接口。
應(yīng)用程序開發(fā)者能夠支持DOM作為其自身的特定數(shù)據(jù)結(jié)構(gòu)的API(Application Program Interface接口和應(yīng)用程序接口)。另一方面,創(chuàng)建文檔的應(yīng)用程序開發(fā)者可使用標準DOM接口而不是使用其自身API的特定接口。因此,由于這種能夠提供標準的能力,DOM能有效地增加各種環(huán)境中、尤其是Web上的文檔的相互利用。已經(jīng)定義了DOM的幾種變化,由不同的編程環(huán)境和應(yīng)用程序來使用。
DOM樹是基于相應(yīng)的DOM的內(nèi)容對文檔的分級表述。DOM樹包括“根”以及從根產(chǎn)生的一個或多個“節(jié)點”。在某些情況下,根表述整個文檔。中間節(jié)點可表述元素,諸如表及表中的行和列。DOM樹的“葉子”通常表述數(shù)據(jù),例如不可進一步分解的文本項目或圖像。DOM樹中的各個節(jié)點可與屬性相關(guān)聯(lián),屬性描述了由節(jié)點表述的元素的參數(shù),例如字體、大小、顏色、縮進等。
雖然HTML是一種創(chuàng)建文檔的常用語言,但它是格式和版式語言。HTML不是一種數(shù)據(jù)描述語言。表述HTML文檔的DOM樹的節(jié)點包括與HTML格式標簽相對應(yīng)的預先定義的元素。由于HTML通常不提供任何數(shù)據(jù)描述,也不提供任何對數(shù)據(jù)的標簽/標注,因此,常常難以對HTML文檔中的數(shù)據(jù)進行查詢。
網(wǎng)絡(luò)設(shè)計者的目標是使得Web文檔能夠被軟件應(yīng)用程序查詢或處理。獨立顯示的分級組織的語言能夠通過這種方式查詢和處理。諸如XML(可擴展標記語言)的標記語言能夠提供這些特征。
與HTML相反,眾所周知,XML的優(yōu)點是使得文檔設(shè)計者能夠使用可自由定義的“標簽”來對數(shù)據(jù)元素進行標注。上述數(shù)據(jù)元素可進行分級組織。另外,XML文檔可包含文檔類型定義(DTD),它是對文檔中所使用的“語法”(標簽及其相互關(guān)系)的描述。使用CSS(Cascading StyleSheet層疊樣式表)或XSL(XML Style LanguageXML樣式語言),以定義結(jié)構(gòu)化的XML文檔的顯示方法。與DOM、HTML、XML、CSS、XSL有關(guān)的其它信息以及相關(guān)語言特征也可從Web獲取(例如,http://www.w3.org/TR/)。
Xpath提供了用于對XML文檔的部分進行尋址的公共的語法和語義。Xpath的功能的一個示例是對與XML文檔相對應(yīng)的DOM樹進行遍歷。它提供了用于操作與XML文檔的各種表述相關(guān)聯(lián)的字符串、數(shù)字和布爾字符的基本工具。Xpah對XML文檔的摘要、邏輯結(jié)構(gòu)(例如,DOM樹)、而不是其表面語法(例如,描述哪個行或哪個字符位于序列中的語法)進行操作。使用Xpath,能夠在分級結(jié)構(gòu)中(例如,在XML文檔的DOM樹中)進行定位。除了用于尋址的用途之外,Xpath還被設(shè)計用來測試DOM樹中的節(jié)點是否與某個模式相匹配。其它涉及Xpath的細節(jié)可在http://www.w3.org/TR/中找到。
利用XML公知的有益效果和特征,需要一種有效的文檔處理系統(tǒng),其能夠?qū)擞浾Z言(例如,XML)描述的文檔進行處理,并能夠提供一種用于創(chuàng)建和修改這些文檔的友好的用戶界面。
此處說明的系統(tǒng)構(gòu)成中的一些將使用MVC(Model-View-Controllers,模型-視圖-控制器)來說明,MVC是一種眾所周知的圖形用戶界面(GUI)范例。MVC范例提供了一種將應(yīng)用程序(或甚至是一個應(yīng)用程序的接口)分解為三部分(即,模型、視圖和控制器)的方法。最初開發(fā)MVC是為了將傳統(tǒng)的輸入、處理和輸出任務(wù)映射到GUI環(huán)境中。
輸入->處理->輸出控制器->模型->視圖根據(jù)所述MVC范例,用戶輸入、外界建模、以及對用戶的視覺反饋利用模型(M)、視窗(V)以及控制器(C)對象被分離和處理??刂破骺刹僮饕越忉屳斎?例如用戶的鼠標和鍵盤輸入),并將這些用戶動作映射為發(fā)送至模型和/或視窗的命令,以實現(xiàn)適當?shù)母淖儭DP涂刹僮饕怨芾硪粋€或多個數(shù)據(jù)元素、響應(yīng)對其狀態(tài)的詢問、并響應(yīng)改變狀態(tài)的指令。視窗可操作以管理顯示的矩形區(qū)域,并負責通過圖形和文本的組合將數(shù)據(jù)顯現(xiàn)給用戶。
B.文檔處理系統(tǒng)的總體構(gòu)成文檔處理系統(tǒng)的一個實施例將在本文中參照圖11-29進行討論。
圖11(a)示出了能夠作為具有本文隨后描述的類型的文檔處理系統(tǒng)的基礎(chǔ)的要素的傳統(tǒng)裝置的例子。裝置10包括具有CPU形式或微處理器11等形式的處理器,處理器11通過通信路徑13耦合至存儲器12。存儲器12可為任何當前或?qū)砟塬@得的ROM和/或RAM存儲形式。通信路徑13通常實現(xiàn)為總線。用戶輸入裝置14(例如鼠標、鍵盤、語音識別系統(tǒng)或類似設(shè)備)的I/O接口16以及顯示設(shè)備15(或其它用戶接口)也耦合至總線用于與處理器11和存儲器12通信。如本領(lǐng)域所公知的那樣,諸如打印機、通信調(diào)制解調(diào)器等的其它設(shè)備可耦合至該裝置。該裝置可為獨立設(shè)備或者具有將多個終端以及一個或多個服務(wù)器耦合在一起的聯(lián)網(wǎng)形式,或者以本領(lǐng)域公知的多種設(shè)置方式的其中之一。本發(fā)明并不受這些組件的結(jié)構(gòu)、它們的集中式或分布式體系結(jié)構(gòu)或者多種組件的通信方式的限制。
另外,應(yīng)該注意到,本系統(tǒng)和此處討論的實施例包括幾種具有多種功能的組件和子組件。應(yīng)該注意到,這些組件和子組件可僅使用硬件、僅使用軟件以及使用硬件和軟件的組合來實現(xiàn),以提供上述的多種功能。另外,硬件、軟件及其組合可使用通用計算裝置或使用專用硬件或使用通用計算裝置和專用硬件的組合來實現(xiàn)。因此,組件或子組件的結(jié)構(gòu)包括運行特定軟件的通用/專用計算裝置,以提供該組件或子組件的功能。
圖11(b)示出了一種示例性文檔處理系統(tǒng)的總體方框圖。文檔在上述文檔處理系統(tǒng)中被創(chuàng)建和編輯。這些文檔能夠以具有標記語言的特征的任何語言來表述(例如XML)。同樣,為方便起見,已經(jīng)創(chuàng)建了用于特定組件和子組件的術(shù)語和名稱。但是,這些不應(yīng)被視作對本文公開的一般教導范圍造成了限制。
所述文檔處理系統(tǒng)可被視為具有兩個基本組件。第一個組件是“執(zhí)行環(huán)境”101,它是文檔處理系統(tǒng)運行的環(huán)境。例如,執(zhí)行環(huán)境提供了協(xié)助系統(tǒng)以及用戶對文檔進行處理和管理的基本效用和功能。第二個組件是“應(yīng)用程序組件”102,它由在執(zhí)行環(huán)境中運行的應(yīng)用程序構(gòu)成。這些應(yīng)用程序包括文檔本身及其各種表述。
1.執(zhí)行環(huán)境執(zhí)行環(huán)境101的關(guān)鍵組件是程序調(diào)用器(ProgramInvoker程序啟動單元)103。程序調(diào)用器103是被訪問以啟動文檔處理系統(tǒng)的基本程序。例如,當用戶登錄并啟動文檔處理系統(tǒng)時,程序調(diào)用器103被執(zhí)行。能夠例如讀取并處理作為插件增加至文檔處理系統(tǒng)的功能、啟動并運行應(yīng)用程序、以及讀取與文檔相關(guān)的屬性。程序調(diào)用器103的功能并不限于此。當用戶希望發(fā)起計劃在執(zhí)行環(huán)境中運行的應(yīng)用程序時,程序調(diào)用器103找到、發(fā)起然后執(zhí)行該應(yīng)用程序。
程序調(diào)用器103聯(lián)接至幾個組件,例如插件子系統(tǒng)104、命令子系統(tǒng)105以及資源(Resource)模塊109。隨后將對這些組件進行更詳細描述。
a)插件子系統(tǒng)插件子系統(tǒng)104是向文檔處理系統(tǒng)增加功能的一種高度靈活和有效的設(shè)備。插件子系統(tǒng)104也能夠被用來修改和去除文檔處理系統(tǒng)中存在的功能。此外,可使用插件子系統(tǒng)增加或修改多種功能。例如,如之前所提以及隨后將詳細描述的那樣,插件子系統(tǒng)可用于增加功能“Editlet”,其可操作以有助于在屏幕上呈現(xiàn)文檔。插件Editlet也有助于對增加至系統(tǒng)的詞匯進行編輯。
插件子系統(tǒng)104包括服務(wù)代理(ServiceBroker服務(wù)中介單元)1041。服務(wù)代理1041管理增加至文檔處理系統(tǒng)的插件,從而代理已增加至文檔處理系統(tǒng)的服務(wù)。
代表期望功能的單個功能以“服務(wù)(Service)”1042的形式被增加至系統(tǒng)。服務(wù)1042的可用類型包括但不限于應(yīng)用程序(Application)服務(wù)、區(qū)工廠(ZoneFactory區(qū)生成單元)服務(wù)、編輯器(Editlet編輯單元)服務(wù)、命令工廠(CommandFactory命令生成單元)服務(wù)、連接Xpath(ConnectionXPathXpath管理單元)服務(wù)、CSS計算(CSSComputationCSS計算單元)服務(wù)等。這些服務(wù)及其與系統(tǒng)其余部分的關(guān)系將隨后詳細描述,以更好地理解文檔處理系統(tǒng)。
插件和服務(wù)之間的關(guān)系是,插件是可包括一個或多個服務(wù)提供器(ServiceProvider服務(wù)提供單元)的單元,各個服務(wù)提供器具有與之相關(guān)的一個或多個類別的服務(wù)。例如,使用具有適當軟件應(yīng)用程序的單個插件,能將一個或多個服務(wù)增加至系統(tǒng),從而向系統(tǒng)增加相應(yīng)的功能。
b)命令子系統(tǒng)命令子系統(tǒng)105被用來執(zhí)行與文檔的處理相關(guān)的命令形式的指令。用戶可通過執(zhí)行一系列指令而執(zhí)行對文檔的操作。例如,通過發(fā)出命令形式的指令,用戶在文檔處理系統(tǒng)中處理XML文檔,并編輯與該XML文檔相對應(yīng)的XML DOM樹。這些命令可利用鍵盤敲打、鼠標點擊或其它有效的用戶接口動作而輸入。有時,能夠通過命令來執(zhí)行一個以上的指令。在這種情況下,這些指令被封裝成單個命令并連續(xù)執(zhí)行。例如,用戶可能希望將錯誤詞語替換為正確詞語。在這種情況下,第一指令可用以在文檔中找尋錯誤詞語。第二指令可用以刪除該錯誤詞語。第三指令可用以輸入正確詞語。這三個指令可被封裝成單個命令。
在某些示例中,命令可具有相關(guān)功能,例如,下面將要詳細討論的“撤消”功能。這些功能可隨后分配給用來創(chuàng)建對象的基類。
命令子系統(tǒng)105的一個組件是命令調(diào)用器(CommandInvoker命令啟動單元)1051,命令調(diào)用器1051可操作為選擇性地提供并執(zhí)行命令。雖然圖11(b)中僅示出了一個命令調(diào)用器,但也可使用一個以上的命令調(diào)用器并同時執(zhí)行一個以上的命令。命令調(diào)用器1051維護執(zhí)行命令所需的功能和類。在操作中,要執(zhí)行的命令(Command)1052被置于隊列(Queue)1053中。命令調(diào)用器創(chuàng)建連續(xù)執(zhí)行的命令線程。如果在命令調(diào)用器中沒有正在執(zhí)行的命令,則由命令調(diào)用器1051執(zhí)行待執(zhí)行的命令1052。如果命令調(diào)用器正在執(zhí)行命令,則新的命令被置于命令隊列1053的末尾。不過,對于各命令調(diào)用器1051而言,一次僅執(zhí)行一個命令。如果指定的命令執(zhí)行失敗,則命令調(diào)用器1051執(zhí)行例外處理。
可由命令調(diào)用器1051執(zhí)行的命令的類型包括但不限于可撤消命令(UndoableCommand)1054、異步命令(AsynchronousCommand)1055以及詞匯連接命令(VCCommand)1056。可撤消命令1054是那些如果用戶希望就能夠回退其效果的命令??沙废畹氖纠秊榧羟?、復制、插入文本等。在操作中,當用戶突出文檔的一部分并向該部分應(yīng)用剪切命令時,如果需要,通過使用可撤消命令,可使得被剪切的部分“恢復原樣(uncut)”。
詞匯連接命令1056被載入詞匯連接描述符(Vocabulary ConnectionDescriptorVCD)腳本文件中。詞匯連接命令1056是能夠由程序員定義的用戶指定命令。這些命令可以是更抽象命令的組合,例如,用于增加XML片段、刪除XML片段、設(shè)置屬性等。這些命令特別集中于對文檔進行編輯。
異步命令(AsynchronousCommand)1055是用于載入或保存由系統(tǒng)執(zhí)行的文檔的命令,異步命令1055與可撤消命令(UndoableCommand)或VC命令(VCCommand)異步地執(zhí)行。與可撤消命令不同,異步命令不能取消。
c)資源資源(Resource)109是向不同的類提供某些功能的對象。例如,串資源、圖標和設(shè)定鍵綁定是系統(tǒng)中使用的資源。
2.應(yīng)用程序組件應(yīng)用程序組件102,即文檔處理系統(tǒng)的第二個主要特征,在執(zhí)行環(huán)境101中運行。概括而言,應(yīng)用程序組件102包括實際文檔,實際文檔包括其在系統(tǒng)內(nèi)的多個邏輯和物理表述。應(yīng)用程序組件102還包括用來管理文檔系統(tǒng)組件。應(yīng)用程序組件102進一步包括用戶應(yīng)用程序(UserApplication)106、應(yīng)用程序核心108、用戶界面107以及核心組件(CoreComponent)110。
a)用戶應(yīng)用程序用戶應(yīng)用程序106連同程序調(diào)用器103一起被載入到系統(tǒng)中。用戶應(yīng)用程序106是將文檔、文檔的多種表述以及與文檔進行交互所需的用戶界面特征結(jié)合在一起的粘合劑(glue)。例如,用戶可能希望創(chuàng)建作為工程(project)一部分的一套文檔。載入這些文檔,創(chuàng)建用于文檔的適當表述,增加作為用戶應(yīng)用程序106一部分的用戶界面功能。換言之,用戶應(yīng)用程序106將文檔及其表述的各個方面結(jié)合在一起使得用戶能夠與形成工程一部分的文檔進行交互。一旦創(chuàng)建了用戶應(yīng)用程序106,每當用戶希望與形成工程一部分的文檔進行交互時,用戶就能夠簡單地將用戶應(yīng)用程序106載入到執(zhí)行環(huán)境中。
b)核心組件核心組件(CoreComponent)110提供了在多個窗格(Pane)之間共享文檔的一種方法。如將在隨后詳細討論的那樣,窗格表述DOM樹,并處理屏幕的物理布局。例如,物理屏幕包括在屏幕內(nèi)的多個窗格用于描述各條信息。實際上,由用戶在屏幕上查看的文檔可在一個或多個窗格中顯示。此外,兩個不同的文檔可以出現(xiàn)在屏幕上的兩個不同窗格中。
屏幕的物理布局還可以具有樹型形式,如圖11(c)所示。因此,如果組件1083要作為窗格顯示在屏幕上,則該窗格可被實現(xiàn)為根窗格(RootPane)1084。作為一種選擇,它也可以是子窗格(Subpane)1085。根窗格1084是窗格樹根部的窗格,而子窗格1085是除了根窗格1084之外的任何窗格。
核心組件110也提供字體,并充當用于文檔的多個功能性操作的源,例如,工具包(toolkit)。由核心組件110執(zhí)行的任務(wù)的一個示例是在多個窗格之間移動鼠標光標。被執(zhí)行的任務(wù)的另一個示例是標記一個窗格中的文檔的一部分,并將其復制到包含不同文檔的另一窗格上。
c)應(yīng)用程序核心如上所述,應(yīng)用程序組件102由被系統(tǒng)處理和管理的文檔組成。應(yīng)用程序組件102包括對于系統(tǒng)內(nèi)的文檔的多種邏輯和物理表述。應(yīng)用程序核心108是應(yīng)用程序組件102的組件。其功能是保存實際文檔及其內(nèi)的所有數(shù)據(jù)。應(yīng)用程序核心108包括文檔管理器(DocumentManager;文檔管理單元)1081和文檔1082本身。
文檔管理器1081的多個方面將在隨后更詳細描述。文檔管理器1081管理文檔1082。文檔管理器1081也連接至根窗格(RootPane)1084、子窗格(SubPane)1085、剪貼板(ClipBoard)實用程序1087以及快照(SnapShot)實用程序1088。剪貼板實用程序1087提供了保存用戶決定增加至剪貼板的部分文檔的一種方法。例如,用戶可能希望剪切文檔的一部分,并將其保存到新的文檔上,用于稍后查看。在這種情況下,剪切的部分被增加至剪貼板。
快照實用程序1088也將在稍后描述,從而當應(yīng)用程序從一個狀態(tài)變?yōu)榱硪粻顟B(tài)時,能夠記住應(yīng)用程序的當前狀態(tài)。
d)用戶界面應(yīng)用程序102的另一組件是用戶界面107,其為用戶提供一種與系統(tǒng)進行物理交互的方式。例如,以物理接口1070來實現(xiàn)用戶界面時,用戶使用用戶界面上載、刪除、編輯和管理文檔。用戶界面107包括框架(Frame)1071、菜單欄(MenuBar)1072、狀態(tài)欄(StatusBar)1073以及URL(URLBar)欄1074。
如通常公知的那樣,框架1071可被視為顯示(例如物理屏幕)的活動區(qū)域。菜單欄1072是包括為用戶提供選項的菜單的屏幕區(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的進一步細節(jié)。圖12包括被用來在文檔處理系統(tǒng)內(nèi)表述文檔的數(shù)據(jù)結(jié)構(gòu)和組件。為了更好的理解,在這部分描述的組件通過利用模型-視圖-控制器(MVC)表述范例來進行描述。
文檔管理器1081包括文檔容器(DocumentContainter)203,文檔容器203保存并容納文檔處理系統(tǒng)中的所有文檔。聯(lián)接至文檔管理器1081的工具包201為文檔管理器1081的使用提供了各種工具。例如,“DOM服務(wù)(DomService)”是由工具包201提供的能夠提供創(chuàng)建、維護和管理與文檔相對應(yīng)的DOM所需的所有功能的工具。作為工具包201提供的另一工具的“IO管理器(IOManager)”分別管理向系統(tǒng)的輸入和來自系統(tǒng)的輸出。同樣地,“流處理器(StreamHandler)”是一種以比特流方式來處理文檔上載的工具。這些工具形成了工具包201的組件,不過并未在圖中明確示出或指定附圖標記。
根據(jù)MVC范例表述,模型(M)包括文檔的DOM樹模型202。如上所述,所有文檔均在文檔處理系統(tǒng)中被表述為DOM樹。文檔也形成文檔容器203的一部分。
1.DOM模型和區(qū)表述文檔的DOM樹是具有節(jié)點(Node)2021的樹。作為DOM樹的子集的區(qū)(Zone)209包括該DOM樹內(nèi)部的一個或多個節(jié)點所關(guān)聯(lián)的區(qū)。例如,僅文檔的一部分可在屏幕上顯現(xiàn)。文檔可見的這一部分可使用“區(qū)”209來表述。利用被稱作“區(qū)工廠(ZoneFactory區(qū)生成單元)”205的插件來創(chuàng)建、操作和處理區(qū)。雖然區(qū)表述DOM的一部分,但它也可使用一個以上的“命名空間”。如本領(lǐng)域中公知的那樣,命名空間是名稱的匯集或集合,這些名稱在該命名空間中是唯一的。換言之,一個命名空間中不能夠出現(xiàn)兩個相同的名稱。
2.“方面”(Facet)及其與區(qū)的關(guān)系“方面”2022是MVC范例的模型(M)部分內(nèi)的另一組件。它被用來編輯區(qū)中的節(jié)點?!胺矫妗?022使用不會影響區(qū)本身的內(nèi)容的執(zhí)行過程來組織對于DOM的訪問。如以下將說明的那樣,這些過程執(zhí)行與節(jié)點相關(guān)的有意義且有用的操作。
各個節(jié)點2021具有相應(yīng)的2022。通過利用“方面”來執(zhí)行操作而不是直接對DOM中的節(jié)點進行操作,DOM的完整性得以確保。否則,如果直接對節(jié)點執(zhí)行操作,那么幾個插件可能同時對DOM進行改變,從而造成不一致性。
由W3C構(gòu)建的DOM標準定義了用于對節(jié)點進行操作的標準接口。實際上,對每個詞匯或每個節(jié)點提供了特定操作,并且這些操作優(yōu)選地提供為API。文檔處理系統(tǒng)提供了這種作為“方面”的節(jié)點特定API,并將“方面”聯(lián)接至各個節(jié)點。這符合DOM標準,同時增加了有用的API。通過在已應(yīng)用的標準DOM之上增加特定的API而不是為每個詞匯實現(xiàn)特定的DOM,可集中處理多種詞匯,并正確地處理其中具有多個詞匯任意組合的混合的文檔。
“詞匯”是屬于命名空間的標簽(例如XML標簽)的集合。如上所述,命名空間具有唯一的名稱集(在該特定情況下為標簽集)。詞匯表現(xiàn)為表述XML文檔的DOM樹的子樹。這種子樹包括區(qū)。在特定實施例中,標簽集的邊界由區(qū)來限定。區(qū)209是利用被稱作“區(qū)工廠服務(wù)”205的服務(wù)而創(chuàng)建的。如上所述,區(qū)209是對表述文檔的DOM樹的僅僅一部分的內(nèi)部表述。為了提供對該文檔的上述部分的訪問,需要邏輯表述。這種邏輯表述通知計算機關(guān)于文檔如何在屏幕上進行邏輯顯示。如上所述,“畫布(Canvas)”(例如畫布210)是一種可操作為提供與區(qū)相對應(yīng)的邏輯布局的服務(wù)。
另一方面,窗格(例如窗格211)是與由畫布210提供的邏輯布局相對應(yīng)的物理屏幕布局。實際上,用戶僅能看見以字符和圖片形式呈現(xiàn)在顯示屏上的文檔。因此,文檔必須通過用于在屏幕上描繪字符和圖片的處理來呈現(xiàn)在屏幕上。根據(jù)由窗格211提供的物理布局,文檔由畫布210呈現(xiàn)在屏幕上。
與區(qū)209相對應(yīng)的畫布210是利用“Editlet服務(wù)”206來創(chuàng)建的。文檔的DOM是利用Editlet服務(wù)206和畫布210來編輯的。為了維護原始文檔的完整性,Editlet服務(wù)206和畫布服務(wù)210使用與區(qū)209中的一個或多個節(jié)點相對應(yīng)的“方面”2022。這些服務(wù)并不直接操作區(qū)和DOM中的節(jié)點?!胺矫妗笔抢妹?07來操作的。
用戶通常通過例如移動屏幕上的光標和/或鍵入命令而與屏幕進行交互。提供屏幕的邏輯布局的畫布2010接收這些光標操作。然后,畫布2010使得對“方面”采取相應(yīng)的動作。給定這一關(guān)系,光標子系統(tǒng)204即作為用于文檔管理器1081的MVC范例的控制器(C)。畫布2010也具有處理事件的任務(wù)。例如,畫布2010處理諸如鼠標點擊、焦點移動和類似的用戶發(fā)起的動作等事件。
3.區(qū)、“方面”、畫布和窗格之間的關(guān)系概述文檔管理和處理系統(tǒng)內(nèi)的文檔可從至少四個角度來觀察,即1)用來保存文檔管理系統(tǒng)中的文檔的內(nèi)容和結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu);2)不會影響文檔完整性就能編輯文檔內(nèi)容的手段;3)文檔在屏幕上的邏輯布局;以及4)文檔在屏幕上的物理布局。區(qū)、“方面”、畫布和窗格分別表述與上述四個方面相對應(yīng)的文檔處理系統(tǒng)的組件。
4.撤消子系統(tǒng)如上所述,人們希望對文檔的任何改變(例如,編輯)應(yīng)該是可撤消的。例如,用戶可執(zhí)行編輯操作,然后決定撤消該改變。參照圖12,撤消子系統(tǒng)212是文檔管理器的可撤消組件。撤消管理器(UndoManager)2121保存可能被用戶撤消的、對文檔執(zhí)行的所有操作。
例如,用戶可執(zhí)行命令來將文檔中的詞語替換成另一個詞語。之后,該用戶可改變主意并決定保留原來的詞語。撤消子系統(tǒng)212利用可撤消編輯(UndoableEdit)2122來支持上述操作。撤消管理器2121保存上述可撤消編輯2122的操作。
5.光標子系統(tǒng)如上所述,MVC的控制器部分可包括光標子系統(tǒng)204。該光標子系統(tǒng)204接收用戶輸入。這些輸入通常具有命令和/或編輯操作的性質(zhì)。因此,光標子系統(tǒng)204可被視作是與文檔管理器1081相關(guān)的MVC范例的控制器(C)部分。
6.視圖如上所述,畫布210表述要顯現(xiàn)在屏幕上的文檔的邏輯布局。對于XHTML文檔的特定實施例而言,畫布210可包括盒樹(box tree)208,盒樹208是文檔在屏幕上如何被查看的邏輯表述。上述盒樹208可包含在與文檔管理器1081有關(guān)的MVC范例的視圖(V)部分中。
D.詞匯連接文檔處理系統(tǒng)的一個重要特征是,提供這樣一種環(huán)境,能夠?qū)ML文檔映射成另外的表述,并且在對映射后的表述進行編輯時,保持其與映射前XML文檔的一致性。
標記語言文檔(例如XML文檔)基于通過文檔類型定義限定的詞匯創(chuàng)建。詞匯則是一組標簽集,并可以任意定義,這就使得詞匯的數(shù)量可能是無限的。但是,為多個可能的詞匯中的每一個都提供專用的單獨處理和管理環(huán)境是不切實際的。詞匯連接是解決這種問題的一種方法。
例如,文檔可以利用兩種或更多標記語言來表述。這些文檔例如可以是XHTML(可擴展超文本標記語言)、SVG(可縮放矢量圖形)、MathML(數(shù)學標記語言)或其他的標記語言。換句話說,標記語言可以視為和XML中的詞匯和標簽集相同。
詞匯可以使用詞匯插件來處理。在文檔處理系統(tǒng)中,以插件不可用的詞匯所描述的文檔可以通過將該文檔映射為插件可用的另一詞匯來顯示。因此,以未準備有插件的詞匯描述的文檔仍然是可以正確顯示的。
詞匯連接包括獲取定義文件、在(所得到的定義文件的基礎(chǔ)上在兩個不同的詞匯之間進行映射的能力。用某種詞匯描述的文檔能夠映射為另外的詞匯。因此,詞匯連接能夠通過與文檔已被映射成的詞匯相對應(yīng)的顯示和編輯插件來顯示或編輯文檔。
應(yīng)該認識到,各個文檔在文檔處理系統(tǒng)中被描述為通常具有多個節(jié)點的DOM樹?!岸x文件”為各個節(jié)點描述了該節(jié)點與其他節(jié)點之間的連接。規(guī)定了是否可以對各個節(jié)點的元素值和屬性值進行編輯。還描述了使用節(jié)點的元素值和屬性值的運算表達式。
利用映射特征,通過參考定義文件創(chuàng)建目的DOM樹。因此,源DOM樹和目的DOM樹之間的關(guān)系被建立并維護。詞匯連接監(jiān)控源DOM樹和目的DOM樹之間的對應(yīng)。在從用戶接收到編輯指令后,詞匯連接修改源DOM樹中的相關(guān)節(jié)點。如上所述,發(fā)出表示已經(jīng)修改了源DOM樹的“變化事件”,并且相應(yīng)地修改目的DOM樹。
通過使用詞匯連接,僅對于少量用戶熟知的相對次要的詞匯可以被轉(zhuǎn)換為其他主要的詞匯。因此,即便是對于那些僅有少量用戶使用的次要詞匯,也可以準確地顯示文檔,并提供理想的編輯環(huán)境。
因此,作為文檔管理系統(tǒng)一部分的詞匯連接子系統(tǒng)提供了能夠?qū)ξ臋n進行多種表述的功能。
圖13顯示了詞匯連接(VCVocabulary Connection)子系統(tǒng)300。VC子系統(tǒng)300提供了一種維護同一文檔的兩種可替換表述之間的一致性的方法。例如,兩種表述可以是同一文檔以兩種不同詞匯實現(xiàn)的可替換表述。如上所述,其中一種可以是源DOM樹,而另一種是目的DOM樹。
1.詞匯連接子系統(tǒng)利用被稱為“詞匯連接(VocabularyConnection)”301的插件在文檔處理系統(tǒng)中實現(xiàn)詞匯連接子系統(tǒng)300的功能。將被表述的文檔的各詞匯305都需要相應(yīng)的插件。例如,如果文檔的一部分以HTML表述,而其他部分以SVG表述,則需要相應(yīng)的HTML詞匯插件和SVG詞匯插件。
詞匯連接插件301為區(qū)209或窗格211創(chuàng)建與適當詞匯305的文檔相對應(yīng)的適當?shù)脑~匯連接畫布310。使用詞匯連接301,利用轉(zhuǎn)換規(guī)則,對源DOM樹的區(qū)209的改變被轉(zhuǎn)換到另一DOM樹306的相應(yīng)區(qū)。轉(zhuǎn)換規(guī)則以詞匯連接描述符(Vocabulary Connection DescriptorVCD)的形式給出。對于與源和目的DOM之間的這種轉(zhuǎn)換相對應(yīng)的各個VCD文件,創(chuàng)建相應(yīng)的詞匯連接管理器(VocabularyConnectionManager)302。
2.連接器連接器(Connector)304連接源DOM樹中的源節(jié)點和目的DOM樹中的目的節(jié)點。連接器304可操作以觀察源DOM樹中的源節(jié)點,和與該源節(jié)點相對應(yīng)的、對源文檔的修改(變化)。接著,連接器304修改相應(yīng)的目的DOM樹中的節(jié)點。只有連接器304是能夠修改目的DOM樹的對象。例如,如果用戶僅能夠?qū)υ次臋n和相應(yīng)的源DOM樹進行修改,則連接器304對目的DOM樹進行相應(yīng)的修改。
連接器304被邏輯地鏈接在一起以形成樹結(jié)構(gòu)。連接器304形成的樹被稱為“連接器樹(ConnectorTree)”。連接器304通過一種服務(wù)而創(chuàng)建,該服務(wù)被稱為“連接器工廠(ConnectorFactory連接器生成單元)”303服務(wù)。連接器工廠303從源文檔創(chuàng)建連接器304,并將連接器304以連接器樹的形式鏈接起來。詞匯連接管理器302維護連接器工廠303。
如上所述,詞匯是命名空間中的標簽集。如圖所示,通過詞匯連接301為文檔創(chuàng)建詞匯305。這通過分析文檔文件以及為源DOM和目的DOM之間的轉(zhuǎn)換創(chuàng)建適當?shù)脑~匯連接管理器302來實現(xiàn)。此外,在創(chuàng)建連接器的連接器工廠303、創(chuàng)建區(qū)209的區(qū)工廠(ZoneFactory)205和創(chuàng)建與區(qū)中的節(jié)點相對應(yīng)的畫布的Editlet服務(wù)206之間建立適當?shù)年P(guān)聯(lián)。當用戶從系統(tǒng)中除去或刪除文檔時,對應(yīng)的詞匯連接管理器302被刪除。
詞匯305接著創(chuàng)建詞匯連接畫布310。此外,連接器304和目的DOM樹306被相應(yīng)地創(chuàng)建。
應(yīng)該理解,源DOM和畫布分別對應(yīng)于模型(M)和視圖(V)。然而,僅當目標詞匯能夠在屏幕上呈現(xiàn)時,這種呈現(xiàn)才有意義。這種顯示通過詞匯插件來實現(xiàn)。詞匯插件提供用于主要的詞匯,例如XHTML、SVG和MathML。詞匯插件與目標詞匯關(guān)聯(lián)地使用。它們提供了一種使用詞匯連接描述符在詞匯之間進行映射的方式。
僅在目標詞匯可被映射并具有預定的屏幕呈現(xiàn)方式時,這種映射才有意義。這種呈現(xiàn)方式為工業(yè)標準,例如由諸如W3C組織定義的XHTML。
在需要詞匯連接時,使用詞匯連接畫布。在這種情況下,由于不能夠為源直接創(chuàng)建視圖,因此,不創(chuàng)建源畫布。在這種情況下,使用連接器樹來創(chuàng)建詞匯連接畫布。這種詞匯連接畫布僅僅處理事件轉(zhuǎn)換,而并不會有助于將文檔呈現(xiàn)在屏幕上。
3.目的區(qū)、窗格以及畫布如上所述,詞匯連接子系統(tǒng)的目的在于創(chuàng)建并同時維護對同一文檔的兩種表述。第二表述還可以是先前被引入作為目的DOM樹的DOM樹形式。為了瀏覽第二種表述的文檔,需要目的區(qū)(DestinationZone)、畫布和窗格。
在創(chuàng)建詞匯連接畫布后,創(chuàng)建相應(yīng)的目的窗格(DestinationPane)307,如圖13所示。此外,相關(guān)的目的畫布(DestinationCanvas)308和相應(yīng)的盒樹309被創(chuàng)建。同樣,詞匯連接畫布310還與源文檔的窗格211和區(qū)209關(guān)聯(lián)。
目的畫布308提供了文檔的第二種表述方式的邏輯布局。具體地,目的畫布308提供了用戶界面功能,例如光標和選擇,用于以目的表述的方式呈現(xiàn)文檔。在目的畫布308中發(fā)生的事件被提供到連接器。目的畫布308向連接器304通知鼠標事件、鍵盤事件、拖動和放置事件、以及通知文檔的目的(或第二種)表述的詞匯的特有事件。
4.詞匯連接命令子系統(tǒng)圖13中的詞匯連接(VC)子系統(tǒng)300的一部分是詞匯連接(VC)命令子系統(tǒng)313。詞匯連接命令子系統(tǒng)313創(chuàng)建詞匯連接命令315,詞匯連接命令315用來執(zhí)行與詞匯連接子系統(tǒng)300相關(guān)的指令??赏ㄟ^內(nèi)建的命令模板(CommandTemplate)318來創(chuàng)建詞匯連接命令,和/或可通過在腳本系統(tǒng)314中使用腳本語言從無到有地創(chuàng)建命令而創(chuàng)建詞匯連接命令。
命令模板的例子包括“If”命令模板、“When”命令模板、“插入(Insert)”命令模板等。這些模板被用來創(chuàng)建詞匯連接命令。
5.Xpath子系統(tǒng)Xpath子系統(tǒng)316是文檔處理系統(tǒng)的一個重要組件,因為它能夠有助于實現(xiàn)詞匯連接。連接器304通常包括xpath信息。如上所述,詞匯連接的任務(wù)是將源DOM樹中的變化反映到目的DOM樹中。xpath信息包括一個或多個用來確定源DOM樹中需要被觀察以確定改變/修改的子集的xpath表達式。
6.源DOM樹、目的DOM樹和連接器樹的概述源DOM樹是對轉(zhuǎn)換為另一種詞匯之前以一種詞匯表述的文檔進行表述的DOM樹或區(qū)。在源DOM樹中的節(jié)點被稱為源節(jié)點。
另一方面,目的DOM樹則表示用于在利用映射進行轉(zhuǎn)換之后以另一種詞匯表述的同一文檔的DOM樹或區(qū),該映射已在前面結(jié)合詞匯連接描述。目的DOM樹中的節(jié)點被稱為目的節(jié)點。
連接器樹(ConnectorTree)是基于連接器的分級表述,用來表述源節(jié)點和目的節(jié)點之間的對應(yīng)關(guān)系。連接器觀察源節(jié)點和對源文檔進行的修改。連接器隨后修改目的DOM樹。事實上,只有連接器是能夠修改目的DOM樹的唯一對象。
E.文檔處理系統(tǒng)中的事件流為了能夠使用,程序必須對來自用戶的命令進行響應(yīng)。事件是一種描述和執(zhí)行用戶對程序?qū)嵤┑膭幼鞯姆椒āTS多高級語言例如JAVA(注冊商標)依靠描述用戶動作的事件。在現(xiàn)有技術(shù)中,程序不得不主動收集用于理解用戶動作和通過自身執(zhí)行用戶動作的信息。這可能意味著,例如,在對程序初始化后,程序進入重復地查看用戶是否對屏幕、鍵盤和鼠標等執(zhí)行了任何動作、并接著采取適當動作的循環(huán)。然而,這種處理可能難以操控。此外,這種處理在等候用戶做某些事情時,還需要執(zhí)行循環(huán)的程序,從而消耗了CPU周期。
許多語言通過包含不同的范例來解決這些問題,其中的一個范例構(gòu)成了所有現(xiàn)代的視窗系統(tǒng)的基礎(chǔ)事件驅(qū)動程序。在這種范例中,所有的用戶動作屬于被稱為“事件”的事務(wù)的抽象集合。事件足夠詳細地描述了特殊的用戶動作。在感興趣的事件發(fā)生時,這種系統(tǒng)通知程序,而不是程序主動地收集用戶生成的事件。以這種方式處理用戶交互的程序被稱為“事件驅(qū)動”。
這通常使用事件(Event)類來進行處理,其中事件類捕獲了所有用戶生成事件的基礎(chǔ)特性。
文檔處理系統(tǒng)定義和使用其自身的事件以及處理這些事件的方式。幾種類型的事件被使用。例如,鼠標事件是來自用戶的鼠標動作的事件。與鼠標有關(guān)的用戶動作由畫布210傳遞到鼠標事件。因此,畫布可以被認為是用戶與系統(tǒng)交互的最前沿。如果需要,最前沿的畫布將把其與事件有關(guān)的內(nèi)容傳遞到其下級。
另一方面,按鍵事件從畫布210產(chǎn)生。按鍵事件具有瞬時的焦點,即,按鍵事件涉及任意瞬時的活動。進入到畫布210的按鍵事件接著被傳遞到其上級。鍵盤輸入通過能夠處理字符串插入的不同事件而被處理。在使用鍵盤插入字符時,將觸發(fā)處理字符串插入的事件。其他的“事件”包括例如拖動事件、放置事件和其他能夠以與鼠標事件相似的方式處理的事件。
1.在詞匯連接之外處理事件使用事件線程對事件進行傳遞。在接收到事件后,畫布210改變其狀態(tài)。如果需要,畫布210將命令1052記入到命令隊列(CommandQueue)1053。
2.在詞匯連接之內(nèi)處理事件通過使用詞匯連接插件301,作為目的畫布(DestinationCanvas)一例的XHTMLCanvas 1106接收現(xiàn)有的事件,例如鼠標事件、鍵盤事件、拖動和放置事件、以及詞匯的特有事件。這些事件接著被通知到連接器304。更具體地說,詞匯連接插件301內(nèi)的事件流經(jīng)過源窗格1103、詞匯連接畫布VCCanvas1104、目的窗格(DestinationPane)1105、作為目的畫布一例的DestinationCanvas 1106、目的DOM樹和連接器樹,如圖21(b)所示。
F.程序調(diào)用器(ProgramInvoker)及其與其他組件之間的關(guān)系。
在圖14(a)中更加詳細地顯示了程序調(diào)用器103及其與其他組件之間的關(guān)系。程序調(diào)用器103是在執(zhí)行環(huán)境中被執(zhí)行以啟動文檔處理系統(tǒng)的基本程序。用戶應(yīng)用程序(UserApplication)106、服務(wù)代理(ServiceBroker)1041、命令調(diào)用器(CommandInvoker)1051和資源(Resource)109都被聯(lián)接到程序調(diào)用器103,如圖11(b)所示。如前所述,應(yīng)用程序102是在執(zhí)行環(huán)境中運行的組件。同樣,服務(wù)代理1041管理向系統(tǒng)增加各種功能的插件。另一方面,命令調(diào)用器1051維護用來執(zhí)行命令的類和函數(shù),從而執(zhí)行用戶提供的指令。
1.插件和服務(wù)下面將參照圖14(b)詳細描述服務(wù)代理1041。如上所述,服務(wù)代理1041管理向系統(tǒng)增加各種功能的插件(及相關(guān)服務(wù))。服務(wù)(Service)1042在最底層,在該層中可以將特征增加到文檔處理系統(tǒng),或改變該系統(tǒng)中的特征?!胺?wù)”由兩部分構(gòu)成服務(wù)種類401和服務(wù)提供器402(ServiceProvider)。如圖14(c)所示,單個的服務(wù)種類(ServiceCategory)401可具有多個相關(guān)的服務(wù)提供器402,這些多個服務(wù)提供器402中的每一個都可操作以執(zhí)行所有或部分的特定服務(wù)種類。另一方面,服務(wù)種類401則定義了服務(wù)的類型。
服務(wù)可分為三種類型1)向系統(tǒng)提供特定特征的特征服務(wù);2)應(yīng)用程序服務(wù),其是由文檔處理系統(tǒng)運行的應(yīng)用程序;以及3)提供在整個文檔處理系統(tǒng)中需要的特征的環(huán)境服務(wù)。
圖14(d)中示出了服務(wù)的例子。根據(jù)應(yīng)用程序服務(wù)的種類,系統(tǒng)實用程序是相應(yīng)服務(wù)提供器的示例。同樣,Editlet 206是一個種類,HTMLEditlet和SVGEditlet是相應(yīng)的服務(wù)提供器。區(qū)工廠205是服務(wù)的另一種,并具有相應(yīng)的服務(wù)提供器(未示出)。
之前描述的向文檔處理系統(tǒng)增加功能的插件可以看作是由幾個服務(wù)提供器402和與其相關(guān)的類構(gòu)成的單元,如圖14(c)和14(d)所示。各個插件都應(yīng)該具有在聲明文件中寫入的從屬性和服務(wù)種類401。
2.程序調(diào)用器和應(yīng)用程序之間的關(guān)系圖14(e)詳細顯示了程序調(diào)用器103和用戶應(yīng)用程序106之間的關(guān)系。所需的文檔、數(shù)據(jù)等從存儲器中載入。所有需要的插件載入到服務(wù)代理1041。服務(wù)代理1041管理并維護所有的插件??晌锢淼貙⒉寮黾拥较到y(tǒng),或者可從存儲器中載入其功能。在載入插件的內(nèi)容后,服務(wù)代理1041定義相應(yīng)的插件。相應(yīng)的用戶應(yīng)用程序106被創(chuàng)建,接著被載入到執(zhí)行環(huán)境101并聯(lián)接到程序調(diào)用器103。
G.應(yīng)用程序服務(wù)和環(huán)境之間的關(guān)系圖15(a)進一步示出了載入程序調(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則是用來在文檔處理系統(tǒng)中處理文檔(例如,XML文檔)和編輯相應(yīng)的XMLDOM樹的指令。命令調(diào)用器1051維護執(zhí)行命令1052所需的功能和類。
服務(wù)調(diào)用器1041也在程序調(diào)用器103中執(zhí)行。用戶應(yīng)用程序106連接到用戶界面107和核心組件(CoreComponent)110。核心組件110提供了一種在所有的窗格之間共享文檔的方式。核心組件110還提供字體并作為用于窗格的工具包。
圖15(b)顯示了框架(Frame)1071、菜單欄(MenuBar)1072和狀態(tài)欄(StatusBar)1073之間的關(guān)系。
H.應(yīng)用程序核心圖16(a)進一步解釋了應(yīng)用程序核心110,其保存所有文檔以及作為文檔一部分并屬于文檔的數(shù)據(jù)。核心組件(CoreComponent)110聯(lián)接到管理文檔1082的文檔管理器(DocumentManager)1081。文檔管理器1081是存儲到與文檔處理系統(tǒng)關(guān)聯(lián)的存儲器中的所有文檔1082的所有者。
為了便于在屏幕上容易地顯示文檔,文檔管理器1081還連接到根窗格1084。剪貼板(ClipBoard)1087、快照(SnapShot)1088、拖放工具(Drag&Drop)601,以及覆蓋(Overlay)602的功能也被聯(lián)接到核心組件110。
快照1088用來將應(yīng)用程序狀態(tài)復原。在用戶調(diào)用快照功能1088時,應(yīng)用程序的當前狀態(tài)被檢測并存儲。其后,在應(yīng)用程序改變?yōu)榱硪粻顟B(tài)時,所存儲的狀態(tài)的內(nèi)容被保存下來。在圖16(b)中示出了快照1088。在操作中,當應(yīng)用程序從一個URL移動到另一個時,快照1088會記住先前的狀態(tài),從而能夠無縫地執(zhí)行回退和前進操作。
I.在文檔管理器中文檔的構(gòu)成圖17(a)更加詳細地描述了文檔管理器1081以及如何在文檔管理器中構(gòu)成并保存文檔。如圖11(b)所示,文檔管理器1081管理文檔1082。在圖17(a)顯示的實施例中,多個文檔中的一個為根文檔(RootDocument)701,其他的文檔為子文檔(SubDocument)702。文檔管理器1081連接到根文檔701,根文檔701則連接到所有的子文檔702。
如圖12和17(a)所示,文檔管理器1081耦合到文檔容器(DocumentContainer)203,文檔容器203是管理所有文檔1082的對象。形成工具包(例如,XML工具包)201的一部分的工具(包括DOM服務(wù)703和IO管理器(IOManager)704)也提供給文檔管理器1081。再參照圖17(a),DOM服務(wù)703基于由文檔管理器1081管理的文檔來創(chuàng)建DOM樹。各個文檔705,不管是根文檔701還是子文檔702都容納在相應(yīng)的文檔容器203中。
圖17(b)顯示了一組文檔A-E是如何以分級結(jié)構(gòu)排列的實施例。文檔A為根文檔。文檔B-D是文檔A的子文檔。文檔E則是文檔D的子文檔。圖17(b)的左側(cè)還顯示了如何將文檔的同一分級結(jié)構(gòu)顯示在屏幕上的實施例。作為根文檔的文檔A顯示為基礎(chǔ)框架。文檔A的子文檔B-D顯示為在基礎(chǔ)框架A內(nèi)的子框架。文檔D的子文檔E在屏幕上顯示為子框架D的子框架。
再參照圖17(a),為各個文檔容器203創(chuàng)建撤消管理器(UndoManager)706和撤消封裝器(UndoWrapper)707。撤消管理器706和撤消封裝器707用來執(zhí)行可撤消的命令。使用該特征,可以撤消使用編輯操作對文檔所作的改變。子文檔中的改變也會涉及到根文檔。撤消操作考慮到了影響分級結(jié)構(gòu)內(nèi)其他文檔的改變,并確保了在分級結(jié)構(gòu)鏈中的所有文檔之間所維護的一致性,例如,如圖17(b)所示。
撤消封裝器707將與容器203中的子文檔相關(guān)的撤消對象進行封裝,并將它們和與根文檔相關(guān)的撤消對象耦合。撤消封裝器707使得可撤消編輯接收器(UndoableEditAcceptor可撤消編輯接受單元)709能夠收集撤消對象。
撤消管理器706和撤消封裝器707連接到可撤消編輯接收器709和可撤消編輯源(UndoableEditSource)708。本領(lǐng)域技術(shù)人員應(yīng)該理解,文檔705可以是可撤消編輯源708,并因此可以是可撤消編輯對象的源。
J.撤消命令和撤消框架圖18(a)和(b)進一步詳細地顯示了撤消框架和撤消命令。如圖18(a)所示,撤消命令(UndoCommand)801、重做命令(RedoCommand)802和可撤消編輯命令(UndoableEditCommand)803是能夠排列在命令調(diào)用器1051中的命令(如圖11(b)所示)并且被相應(yīng)地執(zhí)行。可撤消編輯命令803還進一步聯(lián)接到可撤消編輯源708和可撤消編輯接收器709。例如,可撤消編輯命令是“foo”編輯命令804和“bar”編輯命令805。
圖18(b)顯示了可撤消編輯命令的執(zhí)行。首先,假設(shè)用戶使用編輯命令來編輯文檔705。在第一步驟S1,可撤消編輯接收器709被聯(lián)接到可撤消編輯源708,可撤消編輯源708為文檔705的DOM樹。在第二步驟S2,基于由用戶發(fā)出的命令,使用DOM的API對文檔705進行編輯。在第三步驟S3,向變化事件監(jiān)聽器通知已經(jīng)發(fā)生了改變。即,在該步驟,監(jiān)控DOM樹中所有改變的監(jiān)聽器檢測編輯操作。在第四步驟S4,將可撤消的編輯存儲為撤消管理器706的對象。在第五步驟S5,可撤消編輯接收器709與可撤消編輯源708分開,可撤消編輯源708可以是文檔705本身。
K.向系統(tǒng)載入文檔時需要的步驟上述幾個子部分描述了系統(tǒng)的各個組件和子組件。下面將描述在使用這些組件時用到的方法。圖19(a)顯示了如何將文檔載入到文檔處理系統(tǒng)中的總體圖。參照圖24-28詳細地描述各個步驟的特定的例子。
簡言之,文檔處理系統(tǒng)從由在文檔中包含的數(shù)據(jù)構(gòu)成的二進制數(shù)據(jù)流創(chuàng)建DOM樹。為文檔中的感興趣的并位于“區(qū)”中的一部分創(chuàng)建頂節(jié)點(ApexNode),接著確定相應(yīng)的“窗格”。所確定的窗格從頂節(jié)點和物理屏幕表面創(chuàng)建“區(qū)”和“畫布”?!皡^(qū)”為各個節(jié)點創(chuàng)建“方面”,并為它們提供所需信息。畫布創(chuàng)建用于呈現(xiàn)DOM樹的節(jié)點的數(shù)據(jù)結(jié)構(gòu)。
具體地,文檔從存儲器901載入。接著,創(chuàng)建文檔的DOM樹902。創(chuàng)建保存文檔的相應(yīng)文檔容器903。接著將文檔容器903聯(lián)接到文檔管理器904。DOM樹包括根節(jié)點,并且可選地包括多個次級節(jié)點。
典型地,這種文檔包括文本和圖形。因此,DOM樹例如能夠具有XHTML子樹以及SVG子樹。XHTML子樹具有XHTML頂節(jié)點905。同樣,SVG子樹具有SVG頂節(jié)點906。
在步驟1,將頂節(jié)點906聯(lián)接到窗格907(窗格907是屏幕的邏輯布局)。在步驟2,窗格907向應(yīng)用程序核心(即窗格所有者(PaneOwner)908)請求用于頂節(jié)點906的區(qū)工廠。在步驟3,窗格所有者908返回區(qū)工廠以及作為用于頂節(jié)點906的畫布工廠的Editlet。
在步驟4,窗格907創(chuàng)建區(qū)909,區(qū)909聯(lián)接至窗格。在步驟5,區(qū)909為各個節(jié)點創(chuàng)建“方面”,并聯(lián)接到相應(yīng)的節(jié)點。在步驟6,窗格907創(chuàng)建畫布910。畫布910與窗格907聯(lián)接。在畫布910中包括各種命令。在步驟7中,畫布910則構(gòu)建用于將文檔呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)。在XHTML的情況下,這包括盒樹結(jié)構(gòu)。
1.區(qū)的MVC圖19(b)使用MVC范例顯示了區(qū)的結(jié)構(gòu)概要。在這種情況下,模型(M)包括區(qū)工廠創(chuàng)建的區(qū)和“方面”,這是因為它們是與文檔相關(guān)的輸入。用于將文檔呈現(xiàn)在屏幕上的畫布和數(shù)據(jù)結(jié)構(gòu)是為用戶顯示在屏幕上的輸出,因此,視圖(V)對應(yīng)于畫布和數(shù)據(jù)結(jié)構(gòu)。控制(C)包括畫布中所包含的命令,這是由于這些命令對文檔及其關(guān)系執(zhí)行控制操作。
L.文檔的表述下面將使用圖20來描述復合文檔及其各種表述的實施例。在該實施例中使用的文檔包括文本和圖片。文本使用XHTML表述,而圖片用SVG表述。圖20詳細顯示了用于文檔組件的MVC表述以及相應(yīng)對象的關(guān)系。對于該示例性的表述,文檔1001聯(lián)接到保存文檔1001的文檔容器1002。文檔用DOM樹1003表述。DOM樹1003包括頂節(jié)點1004。
頂節(jié)點用陰影圓圈表示。非頂節(jié)點用非陰影圓圈表示。用來編輯節(jié)點的“方面”用三角形表示,并被聯(lián)接到相應(yīng)的節(jié)點。由于文檔具有文本和圖片,所以用于該文檔的DOM樹包括XHTML部分和SVG部分。頂節(jié)點1004是XHTML子樹的最頂部的節(jié)點。該頂節(jié)點被聯(lián)接到XHTML窗格1005,XHTML窗格1005是文檔XHTML部分的物理表述的最頂部窗格。該頂節(jié)點1004還聯(lián)接到XHTML區(qū)1006,其中XHTML區(qū)1006是文檔DOM樹的一部分。
與節(jié)點1004相對應(yīng)的“方面”1041還聯(lián)接到XHTML區(qū)1006。XHTML區(qū)1006則聯(lián)接到XHTML窗格1005。XHTML的Editlet創(chuàng)建XHTML畫布1007,XHTML畫布1007是文檔的邏輯表述。XHTML畫布1007聯(lián)接到XHTML窗格1005。XHTML畫布1007為文檔1001的XHTML組件創(chuàng)建盒樹1009。維護和呈現(xiàn)文檔的XHTML部分所需的各種命令1008也被增加到XHTML畫布1007。
同樣,該文檔的SVG子樹的頂節(jié)點1010被聯(lián)接到SVG區(qū)1011,SVG區(qū)1011是文檔1001的DOM樹的、用于表述文檔的SVG組件的部分。頂節(jié)點1010被聯(lián)接到SVG窗格1013,SVG窗格1013是文檔的SVG部分的物理表述的最頂部窗格。表述文檔的SVG部分的邏輯表述的SVG畫布1012通過SVGEditlet創(chuàng)建,并被聯(lián)接到SVG窗格(SVGPane)1013。用于將文檔的SVG部分呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)和命令1014被聯(lián)接到SVG畫布(SVGCanvas)1012。例如,這種數(shù)據(jù)結(jié)構(gòu)可包括圓圈、線、矩形等,如圖所示。
下面將使用先前描述的MVC范例,參照圖21(a)進一步討論參照圖20描述的、用于對該示例性文檔進行表述的部件。圖21(a)提供了文檔1001的XHTM組件的MV關(guān)系的簡化圖。圖中的模型是用于文檔1001的XHTML組件的XHTML(XHTMLZone)區(qū)1101。包括在XHTML區(qū)樹中的是幾個節(jié)點及其相應(yīng)的“方面”。相應(yīng)的XHTML區(qū)和窗格是MVC范例的模型(M)部分的一部分。MVC范例的視圖(V)部分是用于文檔1001的HTML組件的相應(yīng)的XHTML畫布1102和盒樹。通過畫布以及其中所包含的命令,文檔的XHTML部分被呈現(xiàn)在屏幕上。例如鍵盤和鼠標輸入的事件以如圖所示的相反方向進行處理。
也就是說,源窗格(SourcePane)具有附加功能,以起到DOM保持器的作用。圖21(b)提供了在圖21(a)中示出的用于文檔1001的組件的詞匯連接。作為源DOM保持器的源窗格1103包含了用于文檔的源DOM樹。連接器樹(ConnectorTree)1004通過連接器工廠(ConnectorFactory)創(chuàng)建,連接器樹1004又創(chuàng)建作為目的DOM樹保持器的目的窗格(DestinationPane)1105。目的窗格1105接著以盒樹的形式被布置為XHTML目的畫布(XHTMLDestinationCanvas)1106。
M.插件子系統(tǒng)、詞匯連接和連接器之間的關(guān)系圖22(a)-(c)分別顯示了與插件子系統(tǒng)、詞匯連接和連接器相關(guān)的附加細節(jié)。插件子系統(tǒng)被用來向文檔處理系統(tǒng)增加功能,或與之交換功能。插件子系統(tǒng)包括服務(wù)代理(ServiceBroker)1041。聯(lián)接到服務(wù)代理1041的區(qū)工廠服務(wù)(ZoneFactoryService)1201負責創(chuàng)建用于文檔的部分的區(qū)。Editlet服務(wù)(EditletService)1202還被聯(lián)接到服務(wù)代理1041。Editlet服務(wù)(EditletService)1202創(chuàng)建與區(qū)中的節(jié)點相對應(yīng)的畫布。
區(qū)工廠的例子是分別創(chuàng)建XHTML區(qū)和SVG區(qū)的XHTML區(qū)工廠1211和SVG區(qū)工廠(SVGZoneFactory)1212。如上參照示例性文檔所述,文檔的文本組件可通過創(chuàng)建XHTML區(qū)來表述,而圖片則可使用SVG區(qū)來表述。Editlet服務(wù)(EditletService)的示例包括XHTMLEditlet 1221和SVGEditlet 1222。
圖22(b)進一步詳細顯示了詞匯連接,如上所述,詞匯連接是文檔處理系統(tǒng)的重要特征,其能夠使兩種不同方式的文檔的表述和顯示保持一致。能夠維護連接器工廠303的詞匯連接管理器(VCManager)302是詞匯連接子系統(tǒng)的一部分。連接器工廠303為文檔創(chuàng)建連接器304。如上所述,連接器觀察源DOM中的節(jié)點,并修改目的DOM中的節(jié)點,以維護兩種表述之間的一致性。
模板(Template)317表述用于一些節(jié)點的轉(zhuǎn)換規(guī)則。事實上,詞匯連接描述符(VCD)文件是表示一些規(guī)則的一系列模板,這些規(guī)則用于將滿足某種路徑或規(guī)則的元素或元素集合轉(zhuǎn)換為其他的元素。模板317和命令模板(CommandTemplate)318都聯(lián)接到詞匯連接管理器302。詞匯連接管理器302是管理VCD文件中的所有部分的對象。為一個VCD文件創(chuàng)建一個詞匯連接管理器對象。
圖22(c)表示了連接器的附加細節(jié)。連接器工廠303從源文檔中創(chuàng)建連接器。連接器工廠303聯(lián)接于詞匯、模板和元素模板,并分別創(chuàng)建詞匯連接器(VocabularyConnector)、模板連接器(TemplateConnector)和元素連接器(ElementConnector)。
詞匯連接管理器302維護連接器工廠303。為了創(chuàng)建詞匯,讀取相應(yīng)的VCD文件。接著創(chuàng)建連接器工廠303。該連接器工廠303與負責創(chuàng)建區(qū)的區(qū)工廠205和負責創(chuàng)建畫布的Editlet服務(wù)206相關(guān)聯(lián)。
接著,用于目標詞匯的Editlet服務(wù)創(chuàng)建詞匯連接畫布。詞匯連接畫布為源DOM樹或區(qū)中的頂節(jié)點創(chuàng)建連接器。接著,根據(jù)需要遞歸地創(chuàng)建子連接器。通過VCD文件中的一組模板創(chuàng)建連接器樹。
模板是用于將標記語言的元素轉(zhuǎn)換為其他元素的規(guī)則集合。例如,各個模板與源DOM樹或區(qū)相匹配。在正確匹配時,創(chuàng)建頂點連接器。例如,模板“A/*/D”監(jiān)測所有從節(jié)點A開始、在節(jié)點D結(jié)束的樹分支,而不考慮節(jié)點A和節(jié)點D之間的節(jié)點。同樣,“//B”對應(yīng)于所有來自根節(jié)點的“B”節(jié)點。
N.VCD文件相關(guān)的連接器樹的示例下面將解釋與特定文檔相關(guān)的處理。名為MySampleXML的文檔被載入文檔處理系統(tǒng)。圖23顯示了使用詞匯連接管理器的VCD腳本和用于MySampleXML的連接器工廠樹的實施例。在圖中顯示了腳本文件內(nèi)的詞匯部分、模板部分以及它們在詞匯連接管理器中的相應(yīng)組件。在標簽“vcd:vocabulary”下提供了屬性match=″sample:root″、label=″MySampleXML″以及call-template=″sampleTemplate″。
與該實施例相對應(yīng),在MySampleXML的詞匯連接管理器中,詞匯包括頂點元素“sample:root”。相應(yīng)的UI標注為“MySampleXML”。在模板部分,標簽為vcd:template,名稱為“sample template”。
O.將文件載入系統(tǒng)的詳細例子圖24-28顯示了載入文檔MySampleXML的詳細描述。在步驟1,如圖24(a)所示,文檔從存儲器1405中載入。DOM服務(wù)創(chuàng)建DOM樹和文檔管理器1406以及對應(yīng)的文檔容器1401。文檔容器1401聯(lián)接到文檔管理器1406。文檔包括用于XHTML和MySampleXML的子樹。XHTML頂節(jié)點1403是用于XHTML的最頂部的節(jié)點,并具有標簽xhtml:html。另一方面,頂節(jié)點1404對應(yīng)于MySampleXML的最頂部的節(jié)點,并具有標簽sample:root。
在步驟2,如圖24(b)所示,根窗格(RootPane)為文檔創(chuàng)建XTML區(qū)、“方面”和畫布。創(chuàng)建與頂節(jié)點1403相應(yīng)的窗格(Pane)1407、XHTML區(qū)(XHTMLZone)1408、XHTML畫布(XHTMLCanvas)1409和盒樹(BoxTree)1410。
在步驟3,如圖24(c)所示,XHTML區(qū)找到外來的標簽“sample:root”,并從XHTML畫布的區(qū)創(chuàng)建子窗格。
圖25顯示了步驟4,在步驟4中,子窗格1501獲取能夠處理“sample:root”標簽并創(chuàng)建適當?shù)膮^(qū)的相應(yīng)的區(qū)工廠。這種區(qū)工廠將在能夠?qū)崿F(xiàn)區(qū)工廠的詞匯中。區(qū)工廠包括MySampleXML中的詞匯部分(VocabularySection)的內(nèi)容。
圖26顯示了步驟5,在步驟5中,與MySampleXML對應(yīng)的詞匯創(chuàng)建缺省的區(qū)(DefaultZone)1601。相應(yīng)的Editlet被創(chuàng)建并被提供給子窗格1501,以創(chuàng)建相應(yīng)的畫布。Editlet創(chuàng)建詞匯連接畫布,稱為模板部分(TemplateSection)還包括連接器工廠樹(ConnectorFactoryTree)。連接器工廠樹創(chuàng)建所有的連接器,創(chuàng)建的連接器形成連接器樹。
圖27顯示了步驟6,,各個連接器創(chuàng)建目的DOM對象。一些連接器包括xpath信息。xpath信息包括一個或多個xpath表達式,xpath表達式用來確定需要被監(jiān)測是否發(fā)生了改變/修改的源DOM樹的子集。
在圖28所示步驟7中,詞匯從源DOM的窗格形成目的DOM樹的目的窗格(DestinationPane)。這基于源窗格(SourcePane)來完成。接著,將目的樹的頂節(jié)點(ApexNode)聯(lián)接到目的窗格以及相應(yīng)的區(qū)。接著為目的窗格設(shè)置其自身的Editlet,Editlet則創(chuàng)建目的畫布(DestinationCanvas),并構(gòu)建數(shù)據(jù)結(jié)構(gòu)和命令,從而以目的格式呈現(xiàn)文檔。
圖29(a)顯示了發(fā)生于某節(jié)點的事件流,該節(jié)點不具有相應(yīng)的源節(jié)點并僅依賴于目的樹。在第一步驟,畫布所獲取的事件(例如鼠標事件和鍵盤事件)通過目的樹,并被傳輸?shù)皆啬0暹B接器(ElementTemplateConnector)。元素模板連接器不具有相應(yīng)的源節(jié)點,因此被傳送的事件并不是對源節(jié)點的編輯操作。如果所傳送的事件與命令模板(CommandTemplate)中描述的命令相匹配,則執(zhí)行相應(yīng)的動作。否則,元素模板連接器忽略所傳送的事件。
圖29(b)顯示了發(fā)生于某目的樹的節(jié)點的事件流,該目的樹的節(jié)點通過文本連接器(TextOfConnector)與源節(jié)點相關(guān)聯(lián)。文本連接器從由源DOM樹的XPath規(guī)定的節(jié)點獲取文本節(jié)點,并將該文本節(jié)點映射為目的DOM樹的節(jié)點。畫布所獲取的事件(例如鼠標事件和鍵盤事件)通過目的樹,并被傳送到文本連接器。文本連接器將所傳送的事件映射為相應(yīng)源節(jié)點的編輯命令,并將這些命令設(shè)置在隊列(Queue)1053中。編輯命令是通過“方面”執(zhí)行的DOM的一組API調(diào)用。當執(zhí)行設(shè)置在隊列中的命令時,編輯源節(jié)點。在編輯源節(jié)點時,發(fā)出變化事件,并且將對源節(jié)點的修改通知到注冊為監(jiān)聽器的文本連接器。文本連接器重新建立目的樹,從而在相應(yīng)的目的節(jié)點中反映出對源節(jié)點的修改。如果包含文本連接器的模板包括控制聲明,例如“for each”和“for loop”,則連接器工廠重新評估控制聲明。在重建文本連接器后,重建目的樹。
(第一實施方式)在實施方式中,提出了保存文檔的操作歷史從而能夠追溯到任意時刻的操作狀態(tài)、或重現(xiàn)操作經(jīng)過的技術(shù)。
圖30示出了與實施方式有關(guān)的文檔處理裝置3000的結(jié)構(gòu)。文檔處理裝置3000除了具有前提技術(shù)中說明的文檔處理裝置20的結(jié)構(gòu)之外,還增加了撤消管理單元3120以及撤消堆棧3140。文檔處理裝置20中的編輯命令是對從文檔生成的DOM樹的操作集合。因而,如果對每個DOM操作都準備逆操作,則可以容易地實現(xiàn)編輯命令的逆操作。當HTML單元150等功能模塊發(fā)出可撤消的命令時,撤消管理單元3120將正操作和逆操作成對地壓入撤消堆棧3140中。以命令為單位,如果使壓入撤消堆棧3140中的逆操作與時間軸逆方向地進行,則實現(xiàn)撤消,如果使正操作沿時間軸方向進行,則實現(xiàn)重做。由此,HTML單元150等功能模塊能夠?qū)⒊废墓芾硗耆唤o撤消管理單元3120。在重新開發(fā)插件的情況下,只要以DOM操作為單位制作編輯命令即可,沒有必要單獨開發(fā)撤消命令。
在保存并關(guān)閉文檔時,撤消管理單元3120將壓入撤消堆棧3140中的操作歷史保存在文件等中。即,對文檔執(zhí)行的操作被全部保存。因而撤消管理單元3120通過執(zhí)行到任意時刻的撤消操作,可以追溯到該時刻從而恢復操作狀態(tài)。另外,撤消管理單元3120通過在追溯到任意時刻后重復執(zhí)行重做操作,能夠重現(xiàn)從該時刻之后的操作經(jīng)過。
用戶在文檔編輯中執(zhí)行撤消返回到某時刻的文檔狀態(tài),從該時刻開始進行與以前不同的操作的情況下,以再編輯開始的時刻為起點,在操作歷史上產(chǎn)生分支。在現(xiàn)有的一般應(yīng)用程序中,在由撤消返回到某時刻從而重新開始操作的情況下,到此為止的操作歷史被廢棄,但是本實施方式的撤消管理單元3120將包括執(zhí)行撤消的操作在內(nèi)的全部操作以時間序列保存。由此,操作歷史的分支也可以重現(xiàn)。例如可以容易地實現(xiàn)返回到開始前次再編輯的時刻的文檔、或返回到進行再編輯前的文檔。
圖31(a)示出了操作歷史分支的情況,圖31(b)示出了將分支的操作歷史表示為樹狀的情況。在圖31(a)中,從制作新文檔的狀態(tài)(0)開始操作,至操作進行到狀態(tài)(1)后,執(zhí)行撤消返回到狀態(tài)(2)。之后從狀態(tài)(2)重開操作,至操作進行到狀態(tài)(3)后,再次執(zhí)行撤消返回到狀態(tài)(2)。之后在如圖31(a)所示進行操作的情況下,撤消堆棧3140中按時間序列保存從狀態(tài)(0)至狀態(tài)(8)的操作。
當用戶要求提示操作歷史時,撤消管理單元3120讀出保存在撤消堆棧3140或者文件中的操作歷史,如圖31(b)所示地顯示為樹狀。在圖31(b)中,以連接操作開始時刻(0)和當前狀態(tài)(8)的路徑為干而顯示了分支。在該撤消樹中,也可以強調(diào)顯示分支時刻、或保存文檔的時刻等重要狀態(tài)。例如,這些狀態(tài)也可以由圖標顯示,也可以簡易顯示該時刻中編輯的部分的周邊等。也可以在撤消堆棧3140中記錄好執(zhí)行操作的日期時間,在撤消樹上的重要時刻添加標記日期時間。
當用戶通過鼠標等指定撤消樹上的一點時,撤消管理單元3120也可以執(zhí)行撤消返回到該時刻的狀態(tài),從而重現(xiàn)該狀態(tài)。也可以使其當用戶在撤消樹上單擊鼠標時,顯示該時刻的狀態(tài),而當雙擊時,確定到該時刻為止的撤消。
撤消管理單元3120以分支的時刻為開始點,也可以并行再生分支的多個操作路徑并提示給用戶。例如,當接受來自(2)狀態(tài)的再生指示時,也可以并行再生從(2)至(1)的操作(第一次)、從(2)至(3)的操作(第二次)、以及從(2)至(4)的操作(第三次)。
(第二實施方式)在第二實施方式中,提出了如下技術(shù)當保存第一實施方式中說明的操作歷史時,留下重要的狀態(tài),將中途的不太重要的操作路徑壓縮。
例如,當輸入文章時,設(shè)為用戶按下10次刪除鍵來刪除10個字符。此時,如果記錄刪除10個字符的前后狀態(tài),則量非常大,并且中途的逐個刪除字符的經(jīng)過不太重要。由此,當保存第一實施方式中說明的分支撤消樹時,也可以記錄分支的開始時刻(節(jié))狀態(tài)、和分支的末端(葉)狀態(tài),而刪除枝部分的狀態(tài)轉(zhuǎn)移。由此,能夠確保操作歷史的重要度,并且減少數(shù)據(jù)量。即使是處于枝部分的中途操作狀態(tài),例如進行保存文檔的操作時刻等重要時刻中的狀態(tài),也希望不刪除而進行保存。另外,即使是處于節(jié)或葉的狀態(tài),在判斷為不重要的情況下,也可以刪除。用于判斷留下哪些狀態(tài)和刪除哪些狀態(tài)的條件也可以預先設(shè)定或者用戶自己設(shè)定。例如,也可以確定條件為必須留下進行打印或保存時刻的狀態(tài)。撤消管理單元3120根據(jù)該條件壓縮壓入撤消堆棧3140中的操作歷史,并保存在文件中。由此通過將細粒度的狀態(tài)整理為更粗粒度的狀態(tài),當給用戶提示操作歷史時,能夠提供容易理解且高效的UI。
當保存文檔時,撤消管理單元3120也可以壓縮保存撤消堆棧3140的操作歷史,即使是文檔編輯中,當撤消堆棧3140的剩余量少于規(guī)定閾值時,也可以壓縮操作歷史。
(第三實施方式)在第三實施方式中,提出了第一實施方式中說明的操作歷史表示在時間軸上的UI。
當操作歷史被壓入撤消堆棧3140時,撤消管理單元3120相應(yīng)地記錄操作日期時間。當從用戶指示顯示操作歷史時,讀出保存在撤消堆棧3140或者文件中的操作歷史并顯示在時間軸上。時間軸可以直線表示,也可以曲線表示,由具有某種連續(xù)性的顯示表示即可??梢燥@示時間軸的全體,也可以詳細顯示時間軸的一部分并設(shè)置向沒有顯示的軸移動的單元。例如也可以提供如將時間軸以卷形物來表示,在卷取卷形物的同時移動時間軸上的UI。作為時間軸上的移動單元,也可以設(shè)置滑塊并通過將滑塊左右或者上下滑動來使其移動,也可以通過由鼠標拖放來使其移動,也可以通過在軸上顯示成為節(jié)目的點并點擊該點來使其移動,也可以顯示成轉(zhuǎn)盤等并使其旋轉(zhuǎn)來移動,也可以接受從方向鍵、轉(zhuǎn)盤、棒桿、以及鼠標的移動等用于輸入表示方向的信息的輸入單元的輸入來使其移動。
撤消管理單元3120可以將保存著的全部操作顯示在時間軸上,也可以抽出一部分操作顯示。例如,也可以如第二實施方式中所說明的,只顯示重要狀態(tài)。也可以能夠容易識別狀態(tài)地以圖標或圖形等來表示狀態(tài),在其附近顯示該狀態(tài)的日期時間、文檔版本號、此時的操作內(nèi)容、此時編輯的字符串等。撤消管理單元3120在時間軸長度上,可以反映實際的操作日期時間,也可以反映各個操作所需的時間,還可以反映編輯的數(shù)據(jù)容量、字符數(shù)、DOM的變更量等。
圖32示出了文檔處理裝置3000顯示的屏幕4000的例子。屏幕4000的下方通過撤消管理單元3120顯示有撤消UI屏幕4020。撤消UI屏幕4020中顯示有時間軸4040,時間軸4040上顯示操作歷史。時間軸4040上顯示有滑塊4060,當用戶使用鼠標左右移動滑塊4060時,與之相隨,如重放動畫那樣地將操作經(jīng)過顯示在屏幕4000中。在圖32的例子中,時間軸上反映有操作日期時間,因此沒有顯示分支。即通過撤消,包括復原狀態(tài)的操作在內(nèi)按時間序列排為一列。在其他例子中,例如圖31(b)所示,撤消管理單元3120也可以將時間軸表示為樹狀。
撤消管理單元3120也可以接受操作歷史的檢索要求,并將檢索結(jié)果表示在時間軸上。例如當用戶想知道打印的日期時間、或者想返回到打印的時間點時,撤消管理單元3120從操作歷史中檢索打印操作,并將檢索結(jié)果表示在時間軸上。由此,能夠提供容易理解且便利性高的UI。另外,能夠提供例如通過顯示文檔的保存歷史而能夠容易進行文檔版本管理的UI。
在上述的例子中,說明了將文檔處理裝置3000中的操作歷史表示在時間軸上的UI,但是本實施方式的技術(shù)還能夠應(yīng)用于一般的應(yīng)用程序。應(yīng)用程序?qū)⒏鶕?jù)來自用戶的指示等進行的操作內(nèi)容與進行操作的日期時間對應(yīng)地保存,當用戶有要求時,將保存的操作歷史表示在時間軸上。管理操作歷史的應(yīng)用程序,例如可以是編輯文檔的文檔處理器等,也可以是成為多個應(yīng)用程序平臺的OS等。在后者的情況下,可以是OS將多個應(yīng)用程序的操作歷史保存在每個應(yīng)用程序中,將多個應(yīng)用程序的操作歷史并列表示在多個撤消UI屏幕上,也可以在表示某個應(yīng)用程序的操作歷史的撤消UI屏幕上附加其他應(yīng)用程序的操作歷史。
(第四實施方式)本實施方式提出了利用第一至第三實施方式中說明的技術(shù),提供按意愿做出決定的支持環(huán)境等的技術(shù)。
根據(jù)XML的信息結(jié)構(gòu)化技術(shù),能夠應(yīng)用在各種場景中,因此能夠?qū)⒂糜诮鉀Q各種問題的狀態(tài)轉(zhuǎn)移還原到XML的狀態(tài)轉(zhuǎn)移。通過保存這種狀態(tài)轉(zhuǎn)移,用第一至第三實施方式說明的技術(shù)提示用戶,提供用戶能夠容易地考察過去的狀態(tài)轉(zhuǎn)移、或向過去狀態(tài)返回的環(huán)境,從而能夠支持按照意愿做出決定。
例如假想用戶在個人計算機的網(wǎng)上銷售站點中選擇自己喜歡的商品,決定規(guī)格最適合自己目的的商品的場景。用戶嘗試錯誤的各種商品組合,最終決定并訂購適合的組合。撤消管理單元3120將該嘗試錯誤過程記錄在撤消堆棧3140中,如第二實施方式中說明的,適當刪除不重要的狀態(tài)轉(zhuǎn)移,留下重要的狀態(tài)。即剪掉枝,留下節(jié)和葉。例如,對于無法同時滿足的候選的商品組合,分別留下分叉后的枝端的葉,如第一或者第三實施方式中說明的那樣提示給用戶,則用戶可以通盤考慮候選的商品組合,決定最終組合。撤消管理單元3120也可以接受用戶對重要狀態(tài)的指定。例如當用戶在嘗試錯誤的過程中想保存候選的商品組合時,也可以從用戶接受保存要點的指示來保存。
在用戶已保存的狀態(tài)中,通過附加評價等而做成列表,能夠更易于被理解地提示給用戶,能夠有效支持按意愿做出決定。并且,能夠?qū)⒈4娴哪碃顟B(tài)作為下次做決定的開始點使用。另外,從網(wǎng)上銷售站點的運營者的角度看,通過統(tǒng)計處理多個用戶保存的狀態(tài),可以推斷出潛在的產(chǎn)品規(guī)格,應(yīng)用于市場銷售等。進而,使用該結(jié)果,可以作為典型的規(guī)格的例子提示給用戶等,發(fā)揮推薦引擎的功能。
圖33是用于說明上述例子的圖。圖33的上部示出了用戶經(jīng)過的狀態(tài)轉(zhuǎn)移的路線。圖33的左下方示出了對重要狀態(tài)(節(jié))添加注解來制表的情況。通過這種提示,能夠支持用戶做決定。圖33的右下示出了以用戶經(jīng)過的狀態(tài)轉(zhuǎn)移為基礎(chǔ),判斷推薦引擎被推薦的狀態(tài)而提示用戶的情況。這樣,綜合多個用戶的狀態(tài)轉(zhuǎn)移,可以將狀態(tài)的例子提示給其他用戶。
在其他方面,本實施方式的技術(shù)還可以廣泛地應(yīng)用于處理數(shù)據(jù)的應(yīng)用程序、和萬維網(wǎng)瀏覽器等。在文本編輯器和圖像制作應(yīng)用程序等處理數(shù)據(jù)的應(yīng)用程序中,準備用戶將當前狀態(tài)作為節(jié)保存的命令,能夠在以后提供用戶可以回顧操作歷史的UI。另外,當通過萬維網(wǎng)瀏覽器經(jīng)過超鏈接等瀏覽萬維網(wǎng)頁時,將頁的移動路徑保存為樹狀,通過添加縮略圖等提示給用戶,在再次閱覽以前閱覽過的站點時,能夠提供便利的UI。
下面將就實施方式1至4進一步進行說明。
圖34是圖30所示的撤消管理單元的詳細功能框圖。
文檔處理裝置3000中的撤消管理單元3120或撤消堆棧3140接受來自用戶的編輯操作,管理關(guān)于文檔文件的數(shù)據(jù)處理歷史。
撤消管理單元3120包括數(shù)據(jù)處理單元3020、用戶接口處理單元3040以及歷史處理單元3060。
用戶接口處理單元3040全面負責與用戶接口有關(guān)的處理。數(shù)據(jù)處理單元3020起到用于文檔處理裝置20、用戶接口處理單元3040以及歷史處理單元3060相互發(fā)送接收數(shù)據(jù)的接口作用。在本實施例中,數(shù)據(jù)處理單元3020對文檔處理裝置20指示數(shù)據(jù)處理內(nèi)容,文檔處理裝置20執(zhí)行實際處理。例如,當用戶輸入了字符時,數(shù)據(jù)處理單元3020將字符的輸入通知給文檔處理裝置20。文檔處理裝置20按照該通知執(zhí)行所述的各種處理。另外,處理結(jié)果通過數(shù)據(jù)處理單元3020通知給用戶接口處理單元3040。歷史處理單元3060管理基于從用戶接口處理單元3040接受的各種操作所做的數(shù)據(jù)處理的歷史信息。歷史信息記錄在撤消堆棧3140。
用戶接口處理單元3040包括顯示單元3042和輸入單元3044。
顯示單元3042將數(shù)據(jù)處理的結(jié)果顯示在屏幕畫面上。輸入單元3044檢測用戶通過鍵盤或鼠標等輸入設(shè)備的輸入。
歷史處理單元3060包括對象生成單元3064、狀態(tài)數(shù)據(jù)獲取單元3062以及壓縮單元3068。
對象生成單元3064生成處理對象,其表示根據(jù)來自用戶的輸入應(yīng)該執(zhí)行的數(shù)據(jù)處理內(nèi)容。處理對象不僅包括表示數(shù)據(jù)處理的內(nèi)容,還包括用于執(zhí)行將該數(shù)據(jù)從處理執(zhí)行后的狀態(tài)復原到原來的狀態(tài)的逆數(shù)據(jù)處理的信息。另外,處理對象包括表示已執(zhí)行數(shù)據(jù)處理的日期時間的日期時間信息。處理對象可以生成用于表示數(shù)據(jù)處理內(nèi)容而定義的類、或者繼承該類的子類的實例。處理對象也可以是記載了數(shù)據(jù)處理內(nèi)容的數(shù)據(jù)表單。關(guān)于處理對象將結(jié)合后面的圖35進一步進行說明。
狀態(tài)數(shù)據(jù)獲取單元3062獲取表示作為數(shù)據(jù)處理的結(jié)果出現(xiàn)的操作狀態(tài)的狀態(tài)數(shù)據(jù)。處理對象或狀態(tài)數(shù)據(jù)作為歷史信息保存在撤消堆棧3140中。壓縮單元3068壓縮應(yīng)該保存在撤消堆棧3140中的處理對象和狀態(tài)數(shù)據(jù)中所需的數(shù)據(jù)量。關(guān)于具體的壓縮方法將結(jié)合圖36等進行詳述。
圖35是用于說明對文檔文件的歷史信息的管理的模式圖。
每當用戶執(zhí)行字符的輸入或刪除等編輯操作,文檔編輯的狀態(tài)(State)即發(fā)生變化。在此,示出了狀態(tài)在S1至S7的7種狀態(tài)間變化的情況。該圖所示的S1至S7各狀態(tài)如下。此外,開始狀態(tài)的情況也可以表現(xiàn)為S0。
S1表示輸入了1個字符“E”的狀態(tài)。
S2表示輸入了2個字符“Ex”的狀態(tài)。
S3表示輸入了3個字符“Ext”的狀態(tài)。
S4表示輸入了4個字符“Exta”的狀態(tài)。
S5表示輸入了5個字符“Extan”的狀態(tài)。
S6表示輸入了4個字符“Exte”的狀態(tài)。
S7表示輸入了5個字符“Exten”的狀態(tài)。
當處于S0的開始狀態(tài)時,用戶輸入字符“E”。當用戶輸入了字符“E”時,狀態(tài)數(shù)據(jù)獲取單元3062獲取關(guān)于S1的狀態(tài)數(shù)據(jù)。在輸入該字符“E”后,從S0到S1的狀態(tài)轉(zhuǎn)移的時間點表示為T1。該圖所示的T1至T11按時間順序表現(xiàn)了伴隨用戶編輯操作的狀態(tài)轉(zhuǎn)移經(jīng)過。該圖所示的T1至T11的各時間點中的狀況如下。此外,開始時間點也可以表現(xiàn)為T0。
T1在開始狀態(tài)S0中輸入了“E”,狀態(tài)轉(zhuǎn)移到S1。生成S1。
T2在S1中輸入了“x”,狀態(tài)轉(zhuǎn)移到S2。生成S2。
T3在S2中輸入了”t”,狀態(tài)轉(zhuǎn)移到S3。生成S3。
T4在S3中刪除了”t”,狀態(tài)轉(zhuǎn)移到S2。
T5在S2中輸入了”t”,狀態(tài)轉(zhuǎn)移到S3。
T6在S3中輸入了“a”,狀態(tài)轉(zhuǎn)移到S4。生成S4。
T7在S4中輸入了“n”,狀態(tài)轉(zhuǎn)移到S5。生成S5。
T8在S5中刪除了“n”,狀態(tài)轉(zhuǎn)移到S4。
T9在S4中刪除了“a”,狀態(tài)轉(zhuǎn)移到S3。
T10在S3中輸入了“e”,狀態(tài)轉(zhuǎn)移到S6。生成S6。
T11在S6中輸入了“n”,狀態(tài)轉(zhuǎn)移到S7。生成S7。
每當狀態(tài)轉(zhuǎn)移執(zhí)行時,狀態(tài)數(shù)據(jù)獲取單元3062獲取表示從S1至S7所示的各狀態(tài)內(nèi)容的狀態(tài)數(shù)據(jù)。撤消堆棧3140保存這種狀態(tài)數(shù)據(jù)。
在此,從Tn轉(zhuǎn)移到Tn+1的正操作表現(xiàn)為Cn(n是0以上的整數(shù))。另外,從Tn+1逆行到Tn的逆操作表現(xiàn)為-Cn。
對象生成單元3064對應(yīng)這些從C1到C11的各個操作生成處理對象,記錄在撤消堆棧3140中。下面為了使表述簡單,將關(guān)于Cn的處理對象稱為“第n處理對象”。
例如,在關(guān)于該圖中C2的處理對象、即第二處理對象中,作為數(shù)據(jù)處理內(nèi)容包含以下內(nèi)容。
1.移動光標到字符“E”后。
2.輸入字符“x”。
即,包括表示成為操作對象的位置的信息、和表示操作種類以及對象數(shù)據(jù)的信息。在此成為操作對象的位置是“字符“E”后”,操作種類是“字符輸入”,成為輸入對象的數(shù)據(jù)是“x”。成為操作對象的位置也可以由文檔文件中的行號或列號等表示。另外,該處理對象還包括執(zhí)行C2時的日期時間信息。
此外,關(guān)于-C2的數(shù)據(jù)處理內(nèi)容如下。
1.移動光標到字符“x”后。
2.刪除光標前的字符。
第二處理對象也可以包括關(guān)于-C2的數(shù)據(jù)。
在T3中,撤消堆棧3140中存儲有第一至第三處理對象。在此,當用戶指示撤消操作時,用戶接口處理單元3040向歷史處理單元3060指示執(zhí)行撤消操作。歷史處理單元3060從撤消堆棧3140讀出關(guān)于C3的處理對象。對象生成單元3064生成關(guān)于與-C3相當?shù)腃4的第四處理對象。第四處理對象可以說是第三處理對象中的正好與逆數(shù)據(jù)處理對應(yīng)的處理對象。
對象生成單元3064生成的處理對象即使是關(guān)于撤消操作的處理對象,也追加到撤消堆棧3140中。因此,在T4的時間點中,第一~第四處理對象將按其生成順序保存在撤消堆棧3140中。
此外,在T3中,當用戶指示刪除字符“t”而不是撤消操作時,對象生成單元3064也生成關(guān)于C4的處理對象。此時,對象生成單元3064在判定為第三處理對象的逆操作的基礎(chǔ)上,也可以生成第四處理對象。或者作為刪除“t”時的數(shù)據(jù)處理也可以不參照第三處理對象而生成第四處理對象。
每當執(zhí)行用戶的編輯操作時,撤消管理單元3120在撤消堆棧3140中增加處理對象。通過參照壓入到撤消堆棧3140的處理對象,用戶能夠重現(xiàn)任意時間點、即任意Tn的操作狀態(tài)。例如在Tn中,如果執(zhí)行-Cn-1,則變化到Tn-1中的狀態(tài),因此能夠重現(xiàn)過去的操作狀態(tài)。另外在Tn-1中,如果執(zhí)行Cn-1,再次變化到Tn中的狀態(tài),因此還能夠進行重做操作。
對象生成單元3064除了字符的輸入或刪除之外,也可以接受對嵌入文檔文件的圖形對象等組件的操作、激活窗口的變更和菜單的選擇等各種操作,生成處理對象。
在圖35所示的狀態(tài)轉(zhuǎn)移中,從開始狀態(tài)S0到S5和S7的兩種“葉”的狀態(tài)。換句話說,S1~S4以及S6可以說是到達S5及S7的其中之一的某個狀態(tài)的中途狀態(tài)。但是,S3是應(yīng)該成為S5或者S7的分支點的狀態(tài)。
以下,將如S3那樣的成為向多個狀態(tài)分支點的狀態(tài)稱為“節(jié)”或者“分叉狀態(tài)”。換句話說,分叉狀態(tài)是能夠變化到三個以上已有狀態(tài)的狀態(tài)。在該圖中,從S3能夠變化到S2、S4以及S6的三個狀態(tài)。另外,如S5或S7那樣的只能夠變化到一個已有狀態(tài)的狀態(tài),稱為“葉”或者“端點狀態(tài)”。在該圖中,從S5只能夠變化到S4,從S7只能夠變化到S6。另外,如S1或S2、S4、S6那樣的只能夠變化到兩個已有狀態(tài)的狀態(tài),稱為“枝狀態(tài)”。
當伴隨編輯操作生成了新的端點狀態(tài)時,還有已有的端點狀態(tài)被變更到枝狀態(tài)處理的情況。
圖36是圖35所示的按時間序列排列狀態(tài)轉(zhuǎn)移的圖。
文檔編輯過程中的狀態(tài)轉(zhuǎn)移可以作為伴隨各編輯操作的時間上的狀態(tài)轉(zhuǎn)移來把握。如該圖所示可知,當按時間序列排列Cn時,通過從C1到C11的11次操作,狀態(tài)轉(zhuǎn)移發(fā)生在從S1到S11的7種狀態(tài)之間。在此,C4的操作是撤消操作。即C4=-C3。同樣地,C8=-C7,C9=-C6。在這種情況下,為了節(jié)減保存處理對象所需的數(shù)據(jù)量,壓縮單元3068也可以將C3和C4的處理對象成對地從撤消堆棧3140中刪除。對于C7和C8、C6和C10也相同。由此,壓縮單元3068也可以通過將某數(shù)據(jù)處理和該數(shù)據(jù)處理的逆數(shù)據(jù)處理的處理對象從撤消堆棧3140中成對地刪除,以減少數(shù)據(jù)量。
參照圖35或圖36,最新狀態(tài)是S7。即S5為不是最新狀態(tài)的端點狀態(tài)。在這種情況下,壓縮單元3068也可將從分叉狀態(tài)到達不是最新狀態(tài)的端點狀態(tài)的過程中生成的處理對象作為節(jié)減處理的對象。此時,在圖35中,關(guān)于C6、C7、C8以及C9的處理對象成為節(jié)減對象。
關(guān)于S4的狀態(tài)數(shù)據(jù),也可以包括用于確定關(guān)于C6、C7、C8以及C9的處理對象的信息。此時,壓縮單元3068對到達不是最新狀態(tài)的端點狀態(tài)的過程的枝狀態(tài)的S4,通過參照狀態(tài)數(shù)據(jù)能夠?qū)㈥P(guān)于C6、C7、C8以及C9的處理對象確定為節(jié)減對象。
圖37是用于說明在圖35或圖36中刪除枝狀態(tài)的S4的情況中的操作歷史管理的模式圖。
當將關(guān)于C6、C7、C8以及C9的處理對象設(shè)為節(jié)減對象時,即當作為枝狀態(tài)的S4成為刪除對象時,通過撤消管理單元3120將舊S5作為新S4來重新分配表示狀態(tài)的編號。此時,對于如舊S6或舊S7那樣的在舊S4以后生成的狀態(tài)也一樣。因而撤消管理單元3120如該圖所示,對表示時間點的Tn或表示操作的Cn也進行整理。
在該圖中,T1到T9的各時間點中的狀況如下地進行整理。
T1在開始狀態(tài)中輸入了“E”,狀態(tài)轉(zhuǎn)移到S1。生成S1。
T2在S1中輸入了“x”,狀態(tài)轉(zhuǎn)移到S2。生成S2。
T3在S2中輸入了”t”,狀態(tài)轉(zhuǎn)移到S3。生成S3。
T4在S3中刪除了”t”,狀態(tài)轉(zhuǎn)移到S2。
T5在S2中輸入了”t”,狀態(tài)轉(zhuǎn)移到S3。
T6在S3中輸入了“an”,狀態(tài)轉(zhuǎn)移到S4。生成S4。
T7在S4中刪除了“an”,狀態(tài)轉(zhuǎn)移到S3。
T8在S3中輸入了“e”,狀態(tài)轉(zhuǎn)移到S5。生成S5。
T9在S5中輸入了“n”,狀態(tài)轉(zhuǎn)移到S6。生成S6。
此時,C6與輸入字符串“an”的操作對應(yīng)。另外C7=-C6。由此節(jié)減了保存處理對象所需的數(shù)據(jù)量。
如已說明的那樣,C3和C4是成對地處理。因此,在T3、T4、T5中,不新生成狀態(tài),而是從S3經(jīng)由S2再次回到S3。在這種情況下,壓縮單元3068也可以刪除關(guān)于C3和C4的處理對象。此時,從T1和到T7的各時間點中的信息如下地進行整理。
T1在開始狀態(tài)中輸入了“E”,狀態(tài)轉(zhuǎn)移到S1。生成S1。
T2在S1中輸入了“x”,狀態(tài)轉(zhuǎn)移到S2。生成S2。
T3在S2中輸入了“t”,狀態(tài)轉(zhuǎn)移到S3。生成S3。
T4在S3中輸入了“an”,狀態(tài)轉(zhuǎn)移到S4。生成S4。
T5在S4中刪除了“an”,狀態(tài)轉(zhuǎn)移到S3。
T6在S3中輸入了“e”,狀態(tài)轉(zhuǎn)移到S5。生成S5。
T7在S5中輸入了“n”,狀態(tài)轉(zhuǎn)移到S6。生成S6。
由此,也可以節(jié)減撤消堆棧3140的數(shù)據(jù)量。
撤消管理單元3120也可以將由用戶明確指示的、或者沒有明確指示的處理對象設(shè)為刪除對象。
當連續(xù)輸入了多個字符時,也可以將通過各字符的輸入生成的處理對象設(shè)為刪除對象。另外,當連續(xù)刪除了多個字符時,也可以將在該刪除過程中生成的處理對象設(shè)為刪除對象。例如,當連續(xù)輸入了10個字符“extensible”時,也可以將在輸入了第2個字符x到第9個字符1的時間點中生成的8個處理對象設(shè)為節(jié)減對象。在這種情況下,例如可將處理對象節(jié)減為如下1.關(guān)于當輸入最初字符“e”時的數(shù)據(jù)處理的處理對象2.關(guān)于當輸入字符串“xtensibl”時的數(shù)據(jù)處理的處理對象3.關(guān)于當輸入最后字符“e”時的數(shù)據(jù)處理的處理對象。
另外,當該10個字符通過刪除鍵等刪除時,也可以集約到刪除最后的“e”時的處理對象、刪除字符串“xtensibl”時的處理對象、以及刪除最初的“e”時的處理對象。
另外對于輸入如句號點或特殊記號等與通常字符不同的字符時所生成的處理對象,也可以不設(shè)為刪除對象。
圖38是用于參照處理對象編輯文檔的屏幕圖。
顯示單元3042在文檔編輯時顯示屏幕3200。屏幕3200被分割為編輯區(qū)域3220和狀態(tài)顯示區(qū)域3260兩個區(qū)域。編輯區(qū)域3220是用于文檔編輯的區(qū)域。光標3240示出了輸入位置。狀態(tài)顯示區(qū)域3260將關(guān)于編輯文檔的狀態(tài)轉(zhuǎn)移用如圖35或圖37所示的方式表示。在該圖中以黑圓表示的狀態(tài)中的編輯內(nèi)容顯示在編輯區(qū)域3220中。每當用戶在編輯區(qū)域3220中進行編輯操作時,即生成處理對象,狀態(tài)發(fā)生變化。顯示單元3042根據(jù)狀態(tài)轉(zhuǎn)移更新顯示在狀態(tài)顯示區(qū)域3260的內(nèi)容。
當用戶在狀態(tài)顯示區(qū)域3260中點擊表示狀態(tài)的對象時,撤消管理單元3120使與該選擇的狀態(tài)對應(yīng)的操作狀態(tài)重現(xiàn)在編輯區(qū)域3220中。如圖36所示,撤消堆棧3140依次生成并保存各處理對象。從當前狀態(tài)返回到其指定的狀態(tài),數(shù)據(jù)處理單元3020讀出處理對象,通過重復撤消操作,使指定狀態(tài)重現(xiàn)。
例如,當在圖35中選擇了S4時,通過執(zhí)行-C11、-C10、-C9重現(xiàn)S4的狀態(tài)。各處理對象保存有表示該數(shù)據(jù)處理的逆數(shù)據(jù)處理內(nèi)容的信息,因此歷史處理單元3060從撤消堆棧3140讀出C11、C10、C10的處理對象,只要數(shù)據(jù)處理單元3020執(zhí)行其逆數(shù)據(jù)處理即可。
即使在編輯操作中撤消管理單元3120也可以適當執(zhí)行如前所述的節(jié)減處理。用戶還能夠選擇在狀態(tài)顯示區(qū)域3260中要被刪除的狀態(tài)。或者,還能夠?qū)⒃跔顟B(tài)顯示區(qū)域3260中包括多個狀態(tài)的枝從歷史信息刪除。這種指示例如也可以由如“ctrl+d”的預定快捷鍵執(zhí)行。
對象生成單元3064按照編輯操作繼續(xù)生成處理對象,并且不是適當節(jié)減它們,而是對象生成單元3064也可以根據(jù)需要生成處理對象。例如,即使用戶在編輯區(qū)域3220中執(zhí)行編輯操作,對象生成單元3064也不生成處理對象。當用戶明確指示處理對象時,對象生成單元3064生成表示從生成以前的處理對象到當前為止的數(shù)據(jù)處理內(nèi)容的處理對象。這種處理對象生成指示也可以由預定快捷鍵執(zhí)行。
歷史處理單元3060也可以根據(jù)狀態(tài)數(shù)據(jù)管理文檔文件的編輯歷史。下面的圖39是用于對這種情況進行說明的圖。
圖39是與圖33所示的個人計算機的商品選擇相關(guān)的用戶接口的屏幕圖。
在此,在提供網(wǎng)上銷售站點提供的萬維網(wǎng)頁中,用戶進行輸入以選擇所喜好商品的組合。由萬維網(wǎng)瀏覽器顯示的屏幕3300示出了關(guān)于各種商品構(gòu)成的選擇狀態(tài)。在此,文檔處理裝置3000的功能作為萬維網(wǎng)瀏覽器的功能的一部分提供。每當用戶變更商品組合,狀態(tài)數(shù)據(jù)獲取單元3062獲取其變更后的狀態(tài),即獲取表示商品構(gòu)成的狀態(tài)數(shù)據(jù)。
當通過用戶的選擇操作產(chǎn)生狀態(tài)轉(zhuǎn)移時,顯示單元3042更新屏幕3300的顯示內(nèi)容。在此,“4”表示的狀態(tài)是端點狀態(tài)。用戶能夠選擇“3”表示的狀態(tài)作為刪除對象。此時,壓縮單元3068通過從撤消堆棧3140刪除與“3”相應(yīng)的狀態(tài)數(shù)據(jù),也可以節(jié)減撤消堆棧3140中的數(shù)據(jù)量。由此,除了以處理對象為單位執(zhí)行節(jié)儉處理之外,還能夠進行以狀態(tài)數(shù)據(jù)為單位執(zhí)行節(jié)儉處理的方法。壓縮單元3068也可以檢測分支,將從分叉狀態(tài)到終端狀態(tài)的過程的枝狀態(tài)判定為刪除對象。
當用戶將光標3320結(jié)合在表示規(guī)定狀態(tài)的對象時,顯示表示關(guān)于該狀態(tài)的注釋的注解區(qū)域3340。用戶對各狀態(tài)能夠?qū)⑦x擇了該狀態(tài)的意圖等作為注解區(qū)域3340記錄。例如,當在屏幕3300中某一狀態(tài)被雙擊選擇時,顯示單元3042也可以顯示用于輸入注解區(qū)域3340的屏幕。用戶由該屏幕輸入信息。歷史處理單元3060作為歷史信息的一部分,將注解信息與狀態(tài)數(shù)據(jù)對應(yīng)而記錄在撤消堆棧3140中。
通過注解區(qū)域3340的顯示,用戶能夠確認對該狀態(tài)的選擇意圖。注解區(qū)域3340調(diào)節(jié)用戶界面,以使用戶在文檔處理裝置3000中嘗試各種狀態(tài)選擇。當光標3320放在表示狀態(tài)的對象上時,也可以對該狀態(tài)顯示狀態(tài)數(shù)據(jù)。
在該圖中的R1示出的狀態(tài)是在撤消堆棧3140中預先定義的狀態(tài)。R1是結(jié)合圖33進行說明的推薦組件構(gòu)成(以下稱為“推薦狀態(tài)”)。顯示單元3042當遷移到接近R1的狀態(tài)時,使這種推薦狀態(tài)顯示在屏幕3300上,這里所說的“接近R1的狀態(tài)”,是指通過規(guī)定次數(shù)、例如1次選擇操作能夠變化到R1的狀態(tài)。
文檔處理裝置3000不僅是最終的選擇狀態(tài),而且還可以將其他端點狀態(tài)發(fā)送到網(wǎng)上銷售站點的服務(wù)器。網(wǎng)上銷售站點的運營者,通過接收與這些端點狀態(tài)有關(guān)的信息,不僅能夠獲得用戶的最終選擇形式,還能夠獲取關(guān)于可能進行最終選擇的組合的信息。因此,能夠?qū)崿F(xiàn)更細致周到的市場銷售。
進一步示出本發(fā)明的應(yīng)用例。
圖40是與表示萬維網(wǎng)瀏覽器的頁切換相關(guān)的狀態(tài)轉(zhuǎn)移的屏幕圖。
當由萬維網(wǎng)瀏覽器使各種站點提供的主頁顯示時,用戶通過作為主頁數(shù)據(jù)的一部分而嵌入的超鏈接(Hyperlink)跳轉(zhuǎn)到其他主頁。萬維網(wǎng)瀏覽器保存有頁的切換歷史。而且,通過“返回”按鈕等用戶界面,能夠使過去已顯示的主頁再次顯示。
在此,從頁A跳轉(zhuǎn)到頁B后,返回到頁A,從頁A跳轉(zhuǎn)到頁C。在這種情況下,作為來自頁A的分叉端的頁B的選擇歷史,通常不作為管理的對象。
本發(fā)明人得出結(jié)論,對萬維網(wǎng)瀏覽器的頁選擇應(yīng)用如上所述的狀態(tài)轉(zhuǎn)移的管理方法是有效的。
屏幕3400示出了網(wǎng)頁選擇歷史。該圖所示的P1至P7是用于識別網(wǎng)頁的記號。從P1通過超鏈接跳轉(zhuǎn)到P2。接著,從P2跳轉(zhuǎn)到P3。另一方面,留下從P2還跳轉(zhuǎn)到P4的歷史。
當用戶將光標3420結(jié)合在P3時,該網(wǎng)頁的縮小圖像顯示在縮略區(qū)域3440?;蛘咭部梢燥@示網(wǎng)頁的標題或運營站點名等。
從P4至P5,以不是超鏈接的方法過渡。例如與在P4中直接指定URL(Uniform Resource Locator統(tǒng)一資源定位符)來過渡到P5的情況相當。或者也與從預先登錄的書簽指定P5的情況相當。
根據(jù)這種萬維網(wǎng)瀏覽器的頁顯示歷史管理方法,不根據(jù)頁面選擇過程,能夠保存過去的顯示歷史信息。
對象生成單元3064按照網(wǎng)頁選擇操作生成處理對象。而且,通過參照了這些處理對象的撤消操作或重做操作,能夠使任意時間點中的顯示內(nèi)容重現(xiàn)。
或者也可以參照切換顯示對象的網(wǎng)頁時獲取的狀態(tài)數(shù)據(jù),使任意時間點中的顯示內(nèi)容重現(xiàn)。
由此,對網(wǎng)頁的操作也與文檔處理相同,能夠按處理對象單位或者狀態(tài)數(shù)據(jù)單位管理。
此外,撤消管理單元3120也可以記錄各頁中的用戶操作的內(nèi)容。例如在具有用戶能夠?qū)φ军c運營者發(fā)送數(shù)據(jù)的雙方向性的頁面情況下,也可以記錄該操作內(nèi)容。這種操作內(nèi)容也可以作為處理對象管理。
圖41是用于按時間基準管理狀態(tài)轉(zhuǎn)移的屏幕圖。
屏幕3500被分割為編輯區(qū)域3520和時間軸顯示區(qū)域3540。編輯區(qū)域3520是用于文檔編輯的區(qū)域。光標3240示出了輸入位置。時間軸顯示區(qū)域3540圖示了關(guān)于編輯文檔的時間序列的歷史信息。在此,如圖36所示那樣,根據(jù)Tn按時間序列顯示操作歷史。
在圖32中,示出了由滑塊條控制的形式。在圖41中,代替時間軸4040,顯示操作日期時間本身。這里所說明的操作日期時間,也可以是記錄在各處理對象中的日期時間信息。當用戶從時間軸顯示區(qū)域3540選擇某個操作日期時間時,顯示單元3042使與該操作日期時間相當?shù)牟僮鲀?nèi)容顯示在編輯區(qū)域3520。
當用戶在時間軸顯示區(qū)域3540中選擇某個操作日期時間時,為了追溯到該操作日期時間中的操作狀態(tài)而重復撤消操作。例如,在圖36中指示追溯到C5的執(zhí)行日期時間為止。此時,數(shù)據(jù)處理單元3020通過執(zhí)行-C11、-C10、...、-C6,能夠使執(zhí)行C5時的操作狀態(tài)重現(xiàn)。
根據(jù)這種方式,用戶能夠以時間單位呼出過去的操作歷史。當在規(guī)定的操作日期時間中表示多個文檔文件時,也可以在編輯區(qū)域3520中顯示多個文檔文件。
此外,時間軸顯示區(qū)域3540中,除了操作日期時間本身之外,也可以顯示表示該操作日期時間中的編輯位置的提取圖像。
根據(jù)以上所示的文檔處理裝置3000,能夠如圖39等所示地以狀態(tài)為基準來管理操作歷史。另外,還能夠如圖41等所示地以時間為基準管理操作歷史。另外如上所述,不僅是一般的文檔管理,本發(fā)明還能夠應(yīng)用在萬維網(wǎng)瀏覽器的顯示歷史管理。
作為前提技術(shù)所示的文檔處理裝置20將諸如XML之類的結(jié)構(gòu)化的文檔文件按節(jié)點單位管理。因此,對于處理對象,也能夠以對節(jié)點的操作為單位進行管理。
以上對本發(fā)明的實施方式進行了說明,但該實施方式只是舉例說明。所屬領(lǐng)域的技術(shù)人員可以知道,在各構(gòu)成要素和各處理程序的組合中可以有各種變化例,且這種變化例也屬于本發(fā)明的范圍。
在實施方式中雖然對處理XML文檔的例子進行了說明,但是,本實施方式的文檔處理裝置20同樣可以處理由其它標記語言,例如SGML、HTML等描述的文檔。
產(chǎn)業(yè)上的利用可行性根據(jù)本發(fā)明,能夠提高對利用標記語言的結(jié)構(gòu)化數(shù)據(jù)進行處理時的用戶的便利性。
權(quán)利要求
1.數(shù)據(jù)處理裝置,其特征在于包括處理單元,處理數(shù)據(jù);記錄單元,將所述處理單元的操作歷史記錄到存儲單元中;用于從用戶接受對操作狀態(tài)的記錄請求,將該操作狀態(tài)以能夠區(qū)別于其他操作狀態(tài)的形式記錄到所述存儲單元中的裝置;和提示單元,向用戶提示所述歷史,其中,所述提示單元將所述用戶所請求記錄的操作狀態(tài)以能夠區(qū)別于其他操作狀態(tài)的形式提示。
2.數(shù)據(jù)處理裝置,其特征在于包括數(shù)據(jù)處理單元,執(zhí)行由用戶指示的數(shù)據(jù)處理;處理對象生成單元,生成表示所指示的數(shù)據(jù)處理的內(nèi)容的處理對象;處理對象保存單元,保存所生成的處理對象;狀態(tài)顯示單元,其參考被保持的處理對象,用能夠區(qū)別的形式將伴隨數(shù)據(jù)處理的狀態(tài)轉(zhuǎn)移而產(chǎn)生的各狀態(tài)間的關(guān)系,包括狀態(tài)轉(zhuǎn)移的分支,進行屏幕顯示。
3.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,所述處理對象生成單元在接受到執(zhí)行用于把數(shù)據(jù)處理執(zhí)行后的狀態(tài)返回到執(zhí)行前狀態(tài)的逆數(shù)據(jù)處理的指示時,參考已經(jīng)執(zhí)行后的數(shù)據(jù)處理所對應(yīng)的處理對象,生成表示所述逆數(shù)據(jù)處理的內(nèi)容的處理對象;所述數(shù)據(jù)處理單元參考關(guān)于所述逆數(shù)據(jù)處理而生成的處理對象來執(zhí)行所述的逆數(shù)據(jù)處理;和所述處理對象保存單元在執(zhí)行了所述逆數(shù)據(jù)處理后,繼續(xù)保存所述已經(jīng)執(zhí)行的數(shù)據(jù)處理的處理對象和所述逆數(shù)據(jù)處理的處理對象。
4.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,還包括狀態(tài)選擇檢測單元,檢測在所述屏幕顯示的各狀態(tài)中由用戶選擇輸入的狀態(tài),所述數(shù)據(jù)處理單元參考表示從被選擇狀態(tài)到當前狀態(tài)為止所執(zhí)行的數(shù)據(jù)處理內(nèi)容的處理對象,執(zhí)行與已經(jīng)執(zhí)行的該數(shù)據(jù)處理相反的逆數(shù)據(jù)處理,來再現(xiàn)被選擇的狀態(tài)。
5.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,所述處理對象既包含有表示數(shù)據(jù)處理的內(nèi)容的信息,也包含有表示該數(shù)據(jù)處理的逆數(shù)據(jù)處理的內(nèi)容的信息。
6.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,還包括注釋輸入單元,檢測由用戶對與所述屏幕顯示的狀態(tài)相關(guān)的注釋數(shù)據(jù)的輸入;所述狀態(tài)顯示單元在把狀態(tài)轉(zhuǎn)移結(jié)果顯示在屏幕中時,將對應(yīng)于這些狀態(tài)所輸入的注釋數(shù)據(jù)進行屏幕顯示。
7.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,所述處理對象生成單元生成所述處理對象,其作為表示根據(jù)用戶對文檔文件的編輯操作而應(yīng)執(zhí)行的處理內(nèi)容的對象。
8.權(quán)利要求7所述的數(shù)據(jù)處理裝置,其特征在于,所述處理對象生成單元生成所述處理對象,所述處理對象作為表示依照文檔對象模型的數(shù)據(jù)處理內(nèi)容的對象,所述文檔對象模型是為了提供將文檔作為數(shù)據(jù)進行處理時的存取方法而確定的。
9.權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于,所述處理對象生成單元生成所述處理對象,所述處理對象作為表示用于用戶切換應(yīng)顯示網(wǎng)頁的頁選擇操作的內(nèi)容的對象。
10.數(shù)據(jù)處理方法,其特征在于包括執(zhí)行用戶所指示的數(shù)據(jù)處理的步驟;生成表示所指示的數(shù)據(jù)處理的內(nèi)容的處理對象的步驟;保存生成的處理對象的步驟;和參考保存的處理對象,用能夠區(qū)別的形式將伴隨數(shù)據(jù)處理的狀態(tài)轉(zhuǎn)移而產(chǎn)生的各狀態(tài)間的關(guān)系,包括狀態(tài)轉(zhuǎn)移的分支,進行屏幕顯示的步驟。
11.數(shù)據(jù)處理程序,其特征在于在計算機中實現(xiàn)如下功能執(zhí)行用戶所指示的數(shù)據(jù)處理的功能;生成表示由所指示的數(shù)據(jù)處理的內(nèi)容的處理對象的功能;保存生成的處理對象的功能;和參考保存的處理對象,用能夠區(qū)別的方式將伴隨數(shù)據(jù)處理的狀態(tài)轉(zhuǎn)移而產(chǎn)生的各狀態(tài)間的關(guān)系,包括狀態(tài)轉(zhuǎn)移的分支,進行屏幕顯示的功能。
全文摘要
本發(fā)明提供一種具有優(yōu)良的便利性的撤消技術(shù)。文檔處理裝置執(zhí)行對文檔文件的編輯、打印、以及保存等操作。撤消管理單元將文檔處理裝置的操作歷史記錄在撤消堆棧。撤消管理單元接受由用戶發(fā)出的記錄操作狀態(tài)的請求,用可以區(qū)別于其他操作狀態(tài)的形式,把該操作狀態(tài)記錄到撤消堆棧中。撤消管理單元在向用戶提示操作歷史時,可以把用戶所請求的操作狀態(tài)以區(qū)別于其他操作狀態(tài)的形式提示。
文檔編號G06F17/24GK101031873SQ20058003327
公開日2007年9月5日 申請日期2005年11月14日 優(yōu)先權(quán)日2004年11月12日
發(fā)明者浮川和宣 申請人:佳思騰軟件公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1