專利名稱:數(shù)據(jù)處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文檔處理技術(shù),特別涉及用于處理由標(biāo)記語言描述的結(jié) 構(gòu)化文檔文件的技術(shù)。
背景技術(shù):
XML作為適于通過網(wǎng)絡(luò)等與他人共享數(shù)據(jù)的形式備受關(guān)注,用于創(chuàng) 建、顯示和編輯XML文檔的應(yīng)用程序(例如,參照專利文獻l)目前凈皮 開發(fā)出來。XML文檔是根據(jù)由文檔類型定義等定義的詞匯(標(biāo)簽集)創(chuàng) 建的。專利文獻1:日本未決的專利申請No.2001 -290804發(fā)明內(nèi)容發(fā)明要解決的課題詞匯允許任意定義,因此理i侖上存在無限多的詞匯。而對這些詞匯 的全部提供專用的顯示/編輯環(huán)境是不現(xiàn)實的。目前,在編輯由不具有專 用編輯環(huán)境的詞匯所描繪的文檔時,直接使用文本編輯器等來編輯由文 本數(shù)據(jù)構(gòu)成的文檔源。本發(fā)明是鑒于這種狀況而做出的,其目的在于提供一種在對由標(biāo)記 語言構(gòu)造的數(shù)據(jù)進行處理時能夠提高用戶方便性的技術(shù)。解決課題的方案本發(fā)明的一方面涉及數(shù)據(jù)處理裝置。該裝置向外部數(shù)據(jù)庫發(fā)送用于 請求數(shù)據(jù)的查詢(Query),將通過查詢指定的數(shù)據(jù)當(dāng)作結(jié)構(gòu)化文檔文 件獲取,通過參照所述結(jié)構(gòu)化文檔文件規(guī)定元素結(jié)構(gòu)來獲取模式信息, 根據(jù)模式信息生成定義數(shù)據(jù),以顯示用于編輯結(jié)構(gòu)化文檔文件的用戶界 面屏幕。此外,以上構(gòu)成要素的任意組合,以及將本發(fā)明在方法、裝置和系 統(tǒng)等表現(xiàn)形式之間的變換都是本發(fā)明的附加實現(xiàn)方式。發(fā)明的效果根據(jù)本發(fā)明,可提高對由標(biāo)記語言構(gòu)造的數(shù)據(jù)進行處理時的用戶方 便性。
圖l是與前提技術(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示出了定義文件生成單元為使用戶創(chuàng)建定義文件而提示給用戶 的圖形用戶界面的實施例;圖7示出了利用定義文件生成單元創(chuàng)建的屏幕布局的另一個實施例;圖8示出了文檔處理裝置提供的XML文檔的編輯屏幕的實施例; 圖9示出了利用文檔處理裝置編輯的XML文檔的另 一實施例; 圖10示出了顯示圖9所示文檔的屏幕顯示的實施例; 圖ll (a)示出了文檔處理系統(tǒng)的基本構(gòu)成; 圖ll (b)示出了文檔處理系統(tǒng)的總體框圖; 圖ll (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示出了文檔及其表現(xiàn)的實施例;圖21示出了模型和控制器的關(guān)系;圖22示出了插件子系統(tǒng)、詞匯連接與連接器的細節(jié);圖23示出了 VCD文件的例子;圖24示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖25示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖26示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖27示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖28示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖29示出了命令流; 圖; , 、/ 、、 ,、、圖31示出了根據(jù)示例性實施方式的模式文件;圖32示出了與圖31的模式文件對應(yīng)的源文件;圖33示出了根據(jù)圖31的模式文件和圖32的源文件生成的定義文件;圖34示出了綁定文件的編輯屏幕;圖35示出了根據(jù)圖34中的綁定文件的編輯結(jié)果形成的布局文件的編 輯屏幕;圖36是用于根據(jù)圖35中的編輯結(jié)果顯示的目標(biāo)文件的屏幕圖; 圖37示出了綁定文件的編輯屏幕的另 一實施例; 圖38示出了根據(jù)圖37中的綁定文件編輯結(jié)果形成的布局文件的編輯 屏幕;圖39是顯示根據(jù)圖38中的編輯結(jié)果形成的目標(biāo)文件的屏幕圖; 圖40示出了用于綁定文件的編輯屏幕的另一實施例;圖41示出了根據(jù)圖40中的綁定文件編輯結(jié)果形成的布局文件編輯屏,圖42是根據(jù)圖41中的編輯結(jié)果顯示目標(biāo)文件時的屏幕圖; 圖43示出了用于綁定文件的編輯屏幕的另一實施例; 圖44示出了用于根據(jù)圖43中的綁定文件的編輯結(jié)果形成的布局文件 的編輯屏幕;圖45是根據(jù)圖44中的編輯結(jié)果顯示目標(biāo)文件時的屏幕圖; 圖46是用于進一步說明定義文件生成過程的示意圖;以及 圖47是用于說明示例性實施方式中的數(shù)據(jù)處理裝置和XML數(shù)據(jù)庫之 間相互操作的方法示意圖。符號說明 20文檔處理裝置 30 DOM單元 36輸出單元 44 CSS提供單元 52、 62控制單元 60 SVG單元22主控單元 32 DOM提供單元 40 CSS單元 46呈現(xiàn)單元 54、 64編輯單元 80 VC單元84定義文件獲取單元24編輯單元34 DOM生成單元42 CSS分析單元50 HTML單元56、 66顯示單元82:映射單元86定義文件生成單元具體實施方式
(前提技術(shù))圖l示出了與前提技術(shù)相關(guān)的文檔處理裝置20的結(jié)構(gòu)。文檔處理裝 置20對結(jié)構(gòu)化的文檔進行處理,該文檔中的數(shù)據(jù)被分為具有分級結(jié)構(gòu)的 多個構(gòu)成元素。在本前提技術(shù)中以對作為一種結(jié)構(gòu)化文檔的XML文檔進 行處理為例來說明。文檔處理裝置20包括主控單元22、編輯單元24、 DOM (文檔對象模塊)單元30、 CSS (層疊樣式表)單元40、 HTML (超文本標(biāo)記語言)單元50、 SVG (可縮;故矢量圖形)單元60以及作為 變換單元一個示例的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)的用于顯示和編輯的插件,/人而扭J亍顯示和編輯。例如,在文檔處理 裝置20中,對HTML文檔進行顯示和編輯的HTML單元50、以及對 SVG文檔進行顯示和編輯的SVG單元60等纟皮實現(xiàn)為用于各詞匯(標(biāo)簽 集)的顯示系統(tǒng)和編輯系統(tǒng)的插件,以分別在對HTML文檔進行編輯時 載入HTML單元50,和在對SVG文檔進行編輯時載入SVG單元60。 如以下將描述的那樣,在要對既包括HTML又包括SVG組件的復(fù)合文 檔進行處理時,既載入HTML單元50又載入SVG單元60。通過實現(xiàn)以上結(jié)構(gòu),由于用戶能夠僅選擇并安裝必要的功能,然后 可以增加或刪除適當(dāng)?shù)墓δ埽虼耍軌蛴行Ю糜涗浢浇榈拇鎯^(qū)域(例如硬盤),并且在執(zhí)行程序的時候還能夠避免存儲器的浪費。此 外,由于這一結(jié)構(gòu)有利于性能擴展,因此開發(fā)者自己能夠以插件的形式 處理新的詞匯,因而能夠促進開發(fā)過程;用戶也能夠通過增加插件而以 較低成本容易地增加功能。編輯單元24通過用戶界面從用戶處接收編輯指令的事件。編輯單元 24將該事件通知適當(dāng)?shù)牟寮?,并對包括事件的重?redo)以及撤消(undo)等的處理進行控制。DOM單元30包括DOM提供單元32、 DOM生成單元34以及輸出 單元36。 DOM單元30實現(xiàn)了與文檔對象模型(DOM)相符的功能, 所述文檔對象模型被定義以提供用于處理XML文檔形式的數(shù)據(jù)的訪問 方法。DOM提供單元32是滿足由編輯單元24定義的界面的DOM的實現(xiàn)。DOM生成單元34從XML文檔創(chuàng)建DOM樹。如以下將描述的那 樣,當(dāng)通過VC單元80將待處理的XML文檔映射為其它詞匯時,創(chuàng)建 與映射源中的XML文檔相對應(yīng)的源樹,以及與映射目的中的XML文檔 相對應(yīng)的目的樹。例如,在編輯結(jié)束時,輸出單元36輸出作為XML文 檔的DOM樹。CSS單元40提供與CSS相符的顯示功能,并包括CSS分析單元42、 CSS提供單元44以及呈現(xiàn)單元46。 CSS分析單元42具有用于分析CSS語法 的分析功能。CSS提供單元44是CSS對象的實現(xiàn),并對DOM樹執(zhí)行CSS 的層疊處理。呈現(xiàn)單元46是CSS的呈現(xiàn)引擎,并用來顯示利用CSS設(shè)置 的以諸如HTML等的詞匯描述的文檔。HTML單元50對以HTML描述的文檔進行顯示或編輯。SVG單元 60對以SVG描述的文檔進^f亍顯示或編輯。這些顯示/編輯系統(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)"。在本前提4支術(shù)的文檔處理裝置20 中,不僅能夠以樹型視圖顯示格式來編輯XML文檔,而且能夠根據(jù)相 應(yīng)的詞匯來完成編輯。例如,HTML單元50 ^是供能夠用來以一種類似 于Word處理器的方法對HTML文檔進4亍編輯的用戶界面,而SVG單 元60也提供了能夠用于以一種類似于圖像繪制工具的方法對SVG文檔 進行編輯的用戶界面。VC單元80包括映射單元82、定義文件獲取單元84以及定義文件 生成單元86。 VC單元80能夠?qū)⒁阅吃~匯描述的文檔映射為另一給定詞 匯,從而提供了一種能夠通過與被映射的詞匯相對應(yīng)的顯示或編輯插件來顯示或編輯文檔的框架。在本前提技術(shù)中,該功能被稱為VC (Vocabulary Connection,詞匯連接)。定義文件獲取單元84獲取描述 了映射定義的腳本文件。該定義文件逐個節(jié)點地描述了節(jié)點間的對應(yīng) (連接)。此時,可規(guī)定各節(jié)點的元素值或?qū)傩灾凳欠窨梢跃庉嫛R部?描述使用了節(jié)點的元素值或?qū)傩灾档倪\算表達式。這些功能將在稍后進 行描述。映射單元82使得DOM生成單元34通過參考VC定義文件獲 取單元84已經(jīng)獲取的腳本文件來創(chuàng)建目的樹,以管理源樹與目的樹之 間的對應(yīng)關(guān)系。定義文件生成單元86為用戶才是供圖形用戶界面,以創(chuàng) 建定義文件。VC單元80對源樹與目的樹之間的連接進行監(jiān)控。當(dāng)VC單元80通過 由負責(zé)顯示的插件提供的用戶界面從用戶處接收編輯指令時,它首先修 改源樹的相關(guān)節(jié)點。因此,DOM單元30將發(fā)出指示源樹已經(jīng)被修改的變 化事件。然后,VC單元80接收該變化事件,并修改目的樹中對應(yīng)于被修 改的節(jié)點的節(jié)點,以使得目的樹與源樹的修改同步。當(dāng)顯示/編輯目的樹 的插件(例如HTML單元50)接收了指示目的樹已經(jīng)被修改的變化事件 時,該插件通過參考被修改的目的樹而對顯示進行更新。通過執(zhí)行將詞 匯轉(zhuǎn)換為另 一主要詞匯的上述結(jié)構(gòu),即使是以少數(shù)用戶使用的局部詞匯 來描述文檔,也能夠顯示該文檔,并為其提供編輯環(huán)境。以下對文檔處理裝置20顯示或編輯文檔的操作進行描述。當(dāng)文檔 處理裝置20載入待處理的文檔時,DOM生成單元34從XML文檔創(chuàng)建 DOM樹。主控單元22或編輯單元24通過參考待處理的XML文檔的命 名空間來對描述XML文檔的詞匯進行判別。如果與詞匯相對應(yīng)的插件 安裝在文檔處理裝置20中,則該插件被載入以顯示/編輯文檔。另一方 面,如果插件并未安裝在其中,則進行檢查以確認是否存在映射的定義 文件。如果存在定義文件,則定義文件獲取單元84獲取該定義文件, 并根據(jù)定義創(chuàng)建目的樹,以使得能夠通過與要被映射的詞匯相對應(yīng)的插 件來顯示/編輯文檔。如果該文檔是包含多個詞匯的復(fù)合文檔,如后面所 述,則通過與各詞匯相對應(yīng)的插件來顯示/編輯該文檔的相關(guān)部分。如果 不存在定義文件,則顯示文檔的源或樹型結(jié)構(gòu),并在顯示屏中進行編 輯。圖2示出了作為處理對象的XML文檔的例子。該XML文檔用于管理 學(xué)生的成績數(shù)據(jù)。作為XML文檔的上部節(jié)點的構(gòu)成元素"成績"包括在 "成績"下方為各個學(xué)生設(shè)置的多個元素"生徒"。構(gòu)成元素"生徒"具有屬 性值"名前,,,以及子元素"國語,,(日語)、"數(shù)學(xué)"、"理科,,以及"社會" (社會科學(xué))。屬性值"名前"存儲學(xué)生的姓名。構(gòu)成元素"國語"、"數(shù) 學(xué)"、"理科"和"社會"分別存儲日語、數(shù)學(xué)、自然科學(xué)和社會科學(xué)的成 績。例如,姓名為"A"的學(xué)生的成績是日語為"90"、數(shù)學(xué)為"50"、自然 科學(xué)為"75"以及社會科學(xué)為"60"。下文中,該文檔中使用的詞匯(標(biāo)簽 集)被稱作"成績管理詞匯"。由于本前提技術(shù)的文檔處理裝置20不具有與成績管理詞匯的顯示和/ 或編輯相對應(yīng)的插件,因此,將使用以上描述的VC功能,而不使用源顯 示和樹顯示的其它顯示方法來顯示該文檔。也就是說,通過準(zhǔn)備定義文 件,使得成績管理詞匯可映射為已具有插件的另一詞匯,例如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ù)學(xué),,節(jié)點的元素值相對應(yīng),第四列與"理科,,節(jié)點的元素值相對 應(yīng),而第五列與"社會"節(jié)點的元素值相對應(yīng)。因此,圖2所示的XML文 檔能以HTML的列表格式來顯示。此外,這些屬性值和元素值被指定為 能夠編輯,以使得用戶能夠使用HTML單元50的編輯功能在利用HTML 顯示的屏幕上對這些值進行編輯。在第六列中,指定了用來計算日語、 數(shù)學(xué)、自然科學(xué)以及社會科學(xué)的分?jǐn)?shù)的加權(quán)平均的運算表達式,并顯示每個學(xué)生的分?jǐn)?shù)的平均值。以這種方式,通過在定義文件中指定運算表 達式來完成更靈活的顯示,從而提高用戶在進行編輯時的便利性。另 外,將對第六列的編輯指定為不允許,以使得不能單獨對平均值本身進 -f亍編輯。因此,在映射定義中,能夠指定可編輯或不能編輯,以避免用戶可能的錯誤操作。圖4(a)和4(b)表示定義文件的例子,以將圖2所示的XML文檔映射為 圖3所示的表。該定義文件通過被定義用于和定義文件一起使用的腳本 語言來描述。在圖4(a)和4(b)所示的例子中,"生徒O追加"和"生徒O削 除"被定義為命令,并分別涉及將節(jié)點"生徒"插入源樹中的操作以及將節(jié) 點"生徒"從源樹中刪除的操作。該定義文件以模板的形式描述了諸如"名 前"和"國語"的標(biāo)題顯示于表的第一行中,而節(jié)點"生徒"的內(nèi)容顯示于第 二行及其隨后的行中。在顯示節(jié)點"生徒"內(nèi)容的模板中,包含"text-of, 的項表示允許進行編輯,而包含"value-of,的項表示不允許進行編輯。在 這些顯示了節(jié)點"生徒,,內(nèi)容的行中,在第六列中描述了運算表達式"(src: 國語+ src:數(shù)學(xué)+ src:理科+ src:社會)div 4"。這意味著顯示學(xué)生成 績的平均值。圖5示出了將圖2所示的由成績管理詞匯描述的XML文檔利用圖3所 示的對應(yīng)關(guān)系映射為HTML以使其顯示在顯示屏上時,顯示屏的一個例 子。在表90各行中從左至右顯示的是各學(xué)生的姓名、日語成績、數(shù)學(xué)成 績、自然科學(xué)成績、社會科學(xué)成績及其平均值。用戶能夠在該屏幕上對 XML文檔進行編輯。例如,當(dāng)?shù)诙械谌兄械闹底優(yōu)?70"時,源樹中 與該節(jié)點相對應(yīng)的元素值(亦即學(xué)生"B"的數(shù)學(xué)成績)變?yōu)?70"。此時, 為了使目的樹與源樹一致,目的樹的相應(yīng)部分因此而改變,從而使得 HTML單元50能夠根據(jù)改變的目的樹來對顯示進行更新。因此,學(xué)生"B" 的學(xué)成績變?yōu)?70",而平均值相應(yīng)地變?yōu)?55"。在圖5所示的屏幕上,例如"生徒O追加"和"生徒O削除"的命令被顯 示為菜單,如圖4(a)、 (b)所示的定義文件中所定義的那樣。當(dāng)用戶/人這 些命令中選擇一個命令時,節(jié)點"生徒"增加至源樹中或從源樹中刪除。 以這種方式,利用根據(jù)本前提技術(shù)的文檔處理裝置20,不僅能夠?qū)Ψ旨?結(jié)構(gòu)末端中的組件的元素值進行編輯,而且能夠?qū)υ摲旨壗Y(jié)構(gòu)進行編 輯。具有上述樹型結(jié)構(gòu)的編輯功能能夠以命令的形式顯現(xiàn)給用戶。此 外,增加或刪除表中的行的命令可例如與增加或刪除節(jié)點"生徒"的操作 相關(guān)。嵌入其它詞匯中的命令可顯現(xiàn)給用戶。該表可用作輸入模板,以 使得對于新學(xué)生的成績數(shù)據(jù)能夠以填空的方式來增加。如上所述,在使用HTML單元50的顯示/編輯功能的同時,以成績管理詞匯描述的文檔可 通過VC功能來編輯。圖6示出了由定義文件生成單元86顯現(xiàn)給用戶的圖形用戶界面的例 子,以使用戶能夠創(chuàng)建定義文件。待映射的XML文檔在屏幕的左側(cè)區(qū)域 91顯示為樹。被映射成的XML文檔的屏幕布局顯示在屏幕的右側(cè)區(qū)域92 中。該屏幕布局可通過HTML單元50來編輯,用戶在屏幕的右側(cè)區(qū)域92 中確定并創(chuàng)建用于對文檔進行顯示的屏幕布局。然后,例如,使用諸如 鼠標(biāo)等的指示設(shè)備將屏幕的左側(cè)區(qū)域91中顯示的XML文檔的待映射的節(jié) 點拖動并放置到屏幕的左側(cè)區(qū)域91中的HTML屏幕布局中,以指定映射 源處的節(jié)點與映射目的處的節(jié)點之間的連接。例如,當(dāng)作為元素"生徒" 的子元素的"數(shù)學(xué),,被放置到HTML屏幕上的表90中第一行與第三列的交 叉處時,"數(shù)學(xué)"節(jié)點與第三列中的"TD"節(jié)點之間建立連接。各節(jié)點均 如此被指定為可編輯或者不可編輯。此外,可在顯示屏中嵌入運算表達 式。當(dāng)完成屏幕編輯時,定義文件生成單元86創(chuàng)建描述屏幕布局與節(jié)點 之間的連接的定義文件。已經(jīng)開發(fā)出了能夠處理主要詞匯(例如XHTML (可擴展超文本標(biāo) 記語言)、MathML (數(shù)學(xué)標(biāo)記語言)以及SVG (可縮放矢量圖形)) 的瀏覽器或編輯器。但是,不可能開發(fā)出適于以自創(chuàng)詞匯描述的所有文 檔(例如圖2中所示的文檔)的瀏覽器或編輯器。然而,如果如上所述 創(chuàng)建了用于映射為其它詞匯的定義文件,那么以自創(chuàng)詞匯描述的文檔就 能夠使用VC功能來顯示和/或編輯,而無需不斷開發(fā)新的瀏覽器或編輯 器。圖7示出了由定義文件生成單元86創(chuàng)建的屏幕布局的另一例子。在 圖7所示的例子中,在屏幕上產(chǎn)生表90和圓形圖93用于顯示以成績管理 詞匯描述的XML文檔。圓形圖93以SVG描述。如以下將討論的那樣,由 于根據(jù)本前提技術(shù)的文檔處理裝置20能夠?qū)υ趩蝹€XML文檔內(nèi)以多個詞 匯描述的復(fù)合文檔進行處理,因此,如該例子所示,以HTML描述的表 90以及以SVG描述的圓形圖93能夠顯示在同一屏幕上。圖8示出了用于由文檔處理裝置20處理的XML文檔的編輯屏幕的一 例。在圖8所示的例子中,單個屏幕被分割為多個區(qū)域,而待處理的XML文檔在各個區(qū)域以多種不同顯示格式顯示。該文檔的源在區(qū)域94中 顯示,該文檔的樹結(jié)構(gòu)在區(qū)域95中顯示,而以圖5所示的HTML描述的表 在區(qū)域96中顯示。該文檔在這些區(qū)域中的任意區(qū)域均可被編輯,當(dāng)用戶 對這些區(qū)域中的任意區(qū)域的內(nèi)容進行編輯時,源樹將被相應(yīng)修改,從而 負責(zé)各屏幕顯示的插件將更新屏幕,以反映源樹的變更。具體而言,負 責(zé)顯示對應(yīng)編輯屏幕的插件的顯示單元被預(yù)先注冊為變化事件的監(jiān)聽 器,所述變化事件提供源樹中發(fā)生了改變的通知。當(dāng)源樹被任意插件或 VC單元80修改時,顯示編輯屏幕的所有顯示單元接收發(fā)出的一個或多個 變化事件,并從而更新屏幕。此時,如果插件正在通過VC功能進行顯 示,則VC單元80根據(jù)對源樹的修改來修改目的樹。之后,插件的顯示單 元通過參考上述經(jīng)過修改的目的樹來對屏幕進行修改。例如,當(dāng)通過專用插件來實現(xiàn)源顯示和樹型視圖顯示時,源顯示插 件和樹顯示插件通過直接參考源樹而不是利用目的樹來實現(xiàn)它們的顯 示。在這種情況下,當(dāng)在屏幕的任何區(qū)域中完成編輯時,源顯示插件和 樹顯示插件通過參考修改后的源樹來更新屏幕。同樣,負責(zé)顯示區(qū)域96新屏幕。源顯示和樹顯示也可通過使用VC功能而實現(xiàn)。也就是說,例如,如 果HTMI^皮用于源和樹型結(jié)構(gòu)的布局,則XML文檔可映射為HTML以通 過HTML單元50來顯示。在這種情況下,將創(chuàng)建具有源格式、樹格式、 表格式的三個目的樹。如果在屏幕上的三個區(qū)域的任意一個中進行編 輯,則VC單元80對源樹進行修改,并在之后分別對源格式、樹格式、表 格式的三個目的樹進行修改。然后,HTML單元50通過參考這些目的樹 來更新屏幕的三個區(qū)域。以這種方式,在單個屏幕上以多種顯示格式顯示文檔,從而提高了 用戶的便利性。例如,用戶能夠利用表90等以視覺上易于理解的格式顯 示和編輯文檔,同時通過源顯示或樹顯示來理解文檔的分級結(jié)構(gòu)。在上述實施例中,單個屏幕被劃分為多個顯示格式,它們被同時顯示。但 是,也可在單個屏幕上顯示單個顯示格式,從而可通過用戶指令來切換 顯示格式。在這種情況下,主控單元22從用戶處接收用于切換顯示格式的請求,并隨后命令各插件進行顯示切換。圖9示出了由文檔處理裝置20編輯的XML文檔的另一例。在圖9所示 的XML文檔中,XHTML文檔被嵌入SVG文檔的"foreignObject"標(biāo)簽中, 而該XHTML文檔包含以MathML描述的公式。在這種情況下,編輯單元 24通過參考命名空間而將描繪任務(wù)分配或指派給適當(dāng)?shù)娘@示系統(tǒng)。在圖 9所示的實施例中,編輯單元24首先使SVG單元60描繪矩形,然后使 HTML單元50描繪XHTML文檔。此外,編輯單元24使MathML單元(未 示出)描繪公式。以這種方式,包含多個詞匯的復(fù)合文檔被適當(dāng)?shù)仫@ 示。圖10示出了顯示結(jié)果。在對文檔進行編輯期間,待顯示的菜單可根據(jù)光標(biāo)(* y !j少';;) 的位置被切換。也就是說,當(dāng)光標(biāo)位于顯示SVG文檔的區(qū)域中時,顯示 SVG單元60提供的菜單、或用于映射SVG文檔的定義文件中定義的命 令。當(dāng)光標(biāo)位于顯示XHTML文檔的區(qū)域中時,顯示HTML單元50提供的據(jù)編輯位置提供適當(dāng)?shù)挠脩艚缑妗H绻趶?fù)合文檔中不存在與某詞匯相符的適當(dāng)插件或映射定義,則 以該詞匯描述的部分可以源或樹格式顯示。在傳統(tǒng)實踐中,當(dāng)要打開在 某個文檔中嵌有其它文檔的復(fù)合文檔時,如果沒有安裝能夠顯示該嵌入 文檔的應(yīng)用程序,則它們的內(nèi)容不能顯示。但是,根據(jù)本前提技術(shù),即 使不存在用于顯示的應(yīng)用程序,也可以將由文本數(shù)據(jù)組成的XML文檔顯 示為源或樹格式,從而能夠確定其內(nèi)容。這是基于文本的XML文檔或類 似文檔的一個特征。以基于文本的語言來描述數(shù)據(jù)的另一個有益方面例如在于,在同一 文檔中以其它詞匯描述的部分的數(shù)據(jù)可被該復(fù)合文檔中以某個詞匯描述 的另一文檔所參考。此外,當(dāng)在該文檔中進行搜索時,嵌入SVG等圖片 中的字符串也可作為被搜索的對象。在以某個詞匯描述的文檔中,可使用其它詞匯的標(biāo)簽。雖然該XML 文檔通常并不有效,但只要它結(jié)構(gòu)良好(well-formed),就可作為有效 的XML文檔而被處理。在這種情況下,被插入的屬于其它詞匯的標(biāo)簽可 使用定義文件來進行映射。例如,在XHTML文檔中,可使用諸如"重要"和"最重要"的標(biāo)簽以通過強調(diào)的方式來顯示這些標(biāo)簽周圍的部分,或者 可將這些標(biāo)簽按重要性的順序來排序以進行相應(yīng)顯示。當(dāng)用戶在圖IO所示的編輯屏幕上對文檔進行編輯時,負責(zé)對被編輯 的部分進行處理的插件或VC單元80對源樹進行修改。能夠為源樹中的各 個節(jié)點注冊對于變化事件的監(jiān)聽器。通常,與各個節(jié)點所屬的詞匯相符 的插件的顯示單元或VC單元80被注冊為監(jiān)聽器。當(dāng)源樹被修改時, DOM提供單元32從被修改的節(jié)點向較高層次探索。如果存在注冊的監(jiān)聽 器,則DOM提供單元32向該監(jiān)聽器發(fā)出變化事件。例如,參考如圖9中 所示的文檔,如果位于〈html〉節(jié)點下方的節(jié)點被修改,那么該變化事件 被通報給被注冊為<html>節(jié)點的監(jiān)聽器的HTML單元50 。在同 一 時刻, 該變化事件被通報給4皮注冊為位于<html〉節(jié)點上方的<svg>節(jié)點中的監(jiān) 聽器的SVG單元60。此時,HTML單元50通過參考被修改的源樹而更新 顯示。由于屬于SVG單元60本身的詞匯的節(jié)點并未被修改,因此SVG單 元60可忽視該變化事件。根據(jù)編輯的內(nèi)容,可以隨著HTML單元50對顯示進行的修改來改變 總體布局。在這種情況下,對于各插件的各個顯示區(qū)域的布局將由管理 屏幕布局的組件(例如,負責(zé)顯示最高節(jié)點的插件)來更新。例如,當(dāng) 由HTML單元50顯示的區(qū)域較之以前變大時,HTML單元50首先描繪 HTML單元50本身所負責(zé)的區(qū)域,然后確定顯示區(qū)域的大小。然后,顯 示區(qū)域的大小被通報給管理屏幕布局的組件,以請求對布局進行更新。 負責(zé)屏幕布局的組件一收到該通知便為各個插件重新布置顯示區(qū)域。因此,被編輯的部分的顯示^皮適當(dāng)更新,且總體屏幕布局#:更新。接著,對實現(xiàn)前提技術(shù)的文檔處理裝置20的功能構(gòu)成進一步進行詳 細說明。在下面的說明中,使用英文名稱對類名等進行描述。 A.概要由于因特網(wǎng)的出現(xiàn),由用戶處理、管理的文檔的數(shù)量大致是成指數(shù) 函數(shù)形式在增加。形成因特網(wǎng)核心的Web (World Wide Web:萬維網(wǎng)) 成了接受這些文檔數(shù)據(jù)的大容器。除了文檔以外,Web還提供用于這些 文檔的信息檢索系統(tǒng)。這些文檔通常是由標(biāo)記語言描述的。作為標(biāo)記語 言的簡單且常用的例子,HTML (HyperText Markup Language:超文本標(biāo)記語言)是其中的一個。這樣的文檔還包括有指向記錄在Web的其它 位置的其他文檔的鏈接。XML ( extensible Markup Language:可擴展標(biāo) 記語言)是更高度普及的標(biāo)記語言。用于訪問和閱覽Web文檔的筒單的 瀏覽器是由像Java (注冊商標(biāo))那樣的面向?qū)ο蟮木幊陶Z言開發(fā)的。由標(biāo)記語言描述的文檔通常在瀏覽器或者其他應(yīng)用程序中以樹數(shù)據(jù) 結(jié)構(gòu)的形式來表現(xiàn)。該結(jié)構(gòu)相當(dāng)于對文檔進行語法分析結(jié)果的樹。DOM (Document Object Model:文檔目標(biāo)模型)是用于表述和操作文檔的、 眾所周知的基于樹的數(shù)據(jù)結(jié)構(gòu)模型。DOM提供表述含有HTML或XML文 檔等的對象集合。DOM包括兩個基本組件,即表述文檔內(nèi)的組件的對象 是如何連接在一起的標(biāo)準(zhǔn)模型,以及用于對這些對象進行訪問或者操作 的標(biāo)準(zhǔn)界面。應(yīng)用程序的開發(fā)者能夠支持DOM作為與其自身的數(shù)據(jù)結(jié)構(gòu)或者API (Application Program Interface:應(yīng)用禾呈序界面)的界面。另 一方面,創(chuàng)API的特定界面。因此,DOM提供標(biāo)準(zhǔn)界面的能力有效地促進了在各種 環(huán)境下對文檔進行共享,特別是用在Web上。DOM定義有幾個版本,根 據(jù)不同的編程環(huán)境及應(yīng)用程序來使用。DOM樹是基于對應(yīng)DOM的內(nèi)容的文檔的分級表述。DOM樹包括 "根"及由根生出的一個以上的"節(jié)點"。根有時表述全體文檔。中間節(jié)點 可表述元素,諸如表及表中的行和列。DOM樹的"葉"通常表述數(shù)據(jù),例 如不可進一步分解的文本或者圖像。DOM樹的各個節(jié)點也可以與描述字 形、大小、顏色、索引等由節(jié)點所表示的元素的參數(shù)的屬性關(guān)聯(lián)對應(yīng)。雖然HTML是一般的用于創(chuàng)建文檔所使用的語言,但它是用于格式 和布局的語言而不是用于描述數(shù)據(jù)的語言。表現(xiàn)HTML文檔的DOM樹的 節(jié)點是預(yù)先定義作為HTML的格式化標(biāo)簽的元素。通常,由于HTML不 提供用于數(shù)據(jù)的詳述或者對數(shù)據(jù)添標(biāo)簽/添標(biāo)注的功能,因而對HTML文 檔中的數(shù)據(jù)的查詢格式化在很多場合是困難的。網(wǎng)絡(luò)設(shè)計者們的目標(biāo)是,能夠把Web上的文檔通過軟件應(yīng)用程序進 行查詢或者處理。與顯示方法無關(guān),只要是分級結(jié)構(gòu)化的語言,可以同 才羊查詢處理。il"如XML (extensible Markup Language)這才羊的才示i己i吾言可以提供這類特征。眾所周知,與HTML相反,XML的優(yōu)點是文檔的設(shè)計者可以使用可 自由定義的"標(biāo)簽"對數(shù)據(jù)元素進行標(biāo)注。這樣的數(shù)據(jù)元素可以分級進行 結(jié)構(gòu)化。而且,XML文檔可以包含文檔類型定義,它描述文檔內(nèi)使用的 標(biāo)簽及其相互關(guān)系的"語法"。為了定義結(jié)構(gòu)化的XML文檔的顯示方法, 使用CSS (Cascading Style Sheet:層疊式樣式表)或者XSL (XML Style Language:可擴展標(biāo)記語言沖羊式語言)。關(guān)于DOM、 HTML、 XML、 CSS、 XSL及其有關(guān)語言特征的附加信息也可以從Web獲得。(例如, http:〃www. w3.org/TR/)Xpath為了指定XML文檔部分的位置,提供共同的語法及語義。作 為功能性的示例,是對應(yīng)于XML文檔的DOM樹的遍歷(移動)。這提 供了用于操作XML文檔的各種表述所關(guān)聯(lián)的字符串、數(shù)字及布爾型字符 的基本功能。Xpath不是XML文檔表現(xiàn)的語法(例如作為文本來看時是 第幾行或者是第幾字符這樣的語法),而是在DOM樹等抽象的、邏輯的 結(jié)構(gòu)中l(wèi)喿作。通過使用Xpath,例如,可以通過XML文檔的DOM樹內(nèi)的 分級結(jié)構(gòu)來定位。除了用于尋址的用途之外,XPath還被設(shè)計用來測試 DOM樹中的節(jié)點是否與某個模式相匹配。涉及XPath的細節(jié)可在 http:〃www.w3.org/TR/XPath中找到。希望有 一 種有效的文檔處理系統(tǒng),能夠利用XML的已知的優(yōu)點和特 征,處理由標(biāo)記語言(例如XML)描述的文檔,并能夠提供一種用于創(chuàng) 建和修改文檔的友好的用戶界面。在此說明的系統(tǒng)的構(gòu)成中的 一些將通過使用被稱作MVC ( Model-View-Controller: 模型-視圖-控制器)即眾所周知的GUI (Graphical User Interface:圖形用戶界面)范例進行說明。MVC范例將應(yīng)用程序或應(yīng)用 程序的界面的一部分分解為三部分,即,模型、視圖和控制器。最初開 發(fā)MVC是為了將傳統(tǒng)的輸入、處理和輸出任務(wù)分配到GUI區(qū)域。輸入-〉處理->輸出控制器->模型_>視圖根據(jù)MVC范例,外界的建模、對用戶的視覺反饋以及用戶輸入通過 模型(M)、視圖(V)以及控制器(C)對象來分離從而進行處理。控制器操作以解釋諸如用戶的鼠標(biāo)和鍵盤輸入的輸入,并將這些用戶動作 映射為發(fā)送至模型和/或視圖的命令,以實現(xiàn)適當(dāng)?shù)母淖?。模型發(fā)揮作用 以管理一個以上的數(shù)據(jù)元素、響應(yīng)對其狀態(tài)的詢問、并對改變狀態(tài)的指 示作出響應(yīng)。視圖操作以管理顯示的矩形區(qū)域,并有通過圖形和文本的 組合將數(shù)據(jù)顯現(xiàn)給用戶的功能。B.文檔處理系統(tǒng)的總配置文檔處理系統(tǒng)的實施例將結(jié)合圖11 -29進行清楚說明。圖ll (a)圖示了包括將在下面描述的能夠提供文檔處理系統(tǒng)的、根 據(jù)現(xiàn)有技術(shù)的基礎(chǔ)功能的配置結(jié)構(gòu)。裝置10包括通過通信路徑13連接到 存儲器12的CPU形式或微處理器等形式的處理器11。存儲器12可為當(dāng)前 或?qū)砟軌蚴褂玫娜我釸OM和/或RAM形式。通信路徑13作為典型的總 線而設(shè)置。對于鼠標(biāo)、鍵盤和語音識別系統(tǒng)等用戶輸入裝置14以及顯示 裝置15 (或者其他用戶界面)的輸入輸出界面16也連接在用于處理器11 和存儲器12通信的總線上。該結(jié)構(gòu)可以是獨立的形式,也可以是由多個 終端以及一 臺以上的服務(wù)器連接的網(wǎng)絡(luò)化的形式,也可以由公知的任何 方式來構(gòu)成。本發(fā)明并不受這些組件的配置、它們的集中式或分布式體 系結(jié)構(gòu)或者多種組件的通信方式的限制。此外,本系統(tǒng)以及在此討論的實施例將作為包括提供各種功能性的 若干組件以及子組件的例子來討論。為了提供期望的功能,這些組件以 及子組件可以是石更件和軟件的組合,也可以-f又由石更件或者4又由軟件來實 現(xiàn)。而且,硬件、軟件及其組合可以由通用計算裝置、專用硬件或者它 們的組合來實現(xiàn)。因此,組件或者子組件的構(gòu)成包括執(zhí)行用于提供組件 或者子組件功能的專用軟件的通用/專用的計算裝置。圖ll (b)示出了文檔處理系統(tǒng)一個例子的總體方框圖。文檔在這 種文檔處理系統(tǒng)中#:創(chuàng)建和編輯。這些文檔(例如XML等)能夠以具有 標(biāo)記語言特征的任何語言來表述。同樣,為方便起見,已經(jīng)創(chuàng)建了用于 特定的組件和子組件的術(shù)語和標(biāo)題。但是,這些不應(yīng)被視作對本文公開 的一般教導(dǎo)范圍的限制。文檔處理系統(tǒng)可被視為具有兩個基本構(gòu)成。 一 個構(gòu)成是"執(zhí)行環(huán)境"IOI,它是文檔處理系統(tǒng)運行的環(huán)境。例如,執(zhí)行環(huán)境在對文檔進行處理中和管理中不僅支持用戶,而且支持系統(tǒng),提供基本效用和功能。第二構(gòu)成是"應(yīng)用程序"102,它由在執(zhí)行環(huán)境中運行的應(yīng)用程序構(gòu)成。這 些應(yīng)用程序包括文檔本身及其各種表述。 1.執(zhí)行環(huán)境執(zhí)行環(huán)境101的關(guān)鍵組件是程序調(diào)用器(Programlnvoker,即程序啟 動單元)103。程序調(diào)用器103是用于啟動文檔處理系統(tǒng)而^t訪問的基本 程序。例如,當(dāng)用戶登錄并啟動文檔處理系統(tǒng)時,程序調(diào)用器103被執(zhí) 行。程序調(diào)用器103例如可以讀取并執(zhí)行作為插件增加至文檔處理系統(tǒng) 的功能、啟動并運行應(yīng)用程序、以及讀取與文檔相關(guān)的屬性。程序調(diào)用 器103的功能并不限于此。當(dāng)用戶希望啟動計劃在執(zhí)行環(huán)境中運行的應(yīng)用程序時,程序調(diào)用器 103找到并啟動該應(yīng)用程序,然后執(zhí)行該應(yīng)用程序。在程序調(diào)用器10 3上聯(lián)接有插件子系統(tǒng)10 4 、命令子系統(tǒng)10 5以及資 源模塊109等若干組件。這些構(gòu)成將隨后進行更詳細描述。a)插件子系統(tǒng)插件子系統(tǒng)10 4能夠高度靈活和有效地向文檔處理系統(tǒng)增加功能。 插件子系統(tǒng)104也可以用來修改和去除文檔處理系統(tǒng)中存在的功能。此 外,可使用插件子系統(tǒng)增加或修改多種功能。例如,可以增加編輯功能 (Editlet:編輯單元)以起到支持在屏幕上呈現(xiàn)文檔的作用。編輯插件 也支持對增加至系統(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 (ConnectXPath: XPath管理單元)月l務(wù)、CSS計算(CSSComputation:css計算單元)服務(wù)等。這些服務(wù)及其與系統(tǒng)其余部分的關(guān)系將隨后詳細描述,以更好地理解文檔處理系統(tǒng)。插件和服務(wù)之間的關(guān)系如下所述。插件是可包括一個以上的服務(wù)提供器(ServiceProvider:服務(wù)提供單元)的單元。各個服務(wù)提供器具有 與之相關(guān)服務(wù)的一個以上的類。例如,通過使用具有適當(dāng)軟件應(yīng)用程序 的單個插件,可將一個以上的服務(wù)增加至系統(tǒng),從而可向系統(tǒng)增加相應(yīng)的功能。b)命令子系統(tǒng)命令子系統(tǒng)105被用來執(zhí)行與文檔的處理相關(guān)的命令形式的指令。 用戶可通過執(zhí)行一系列指令而執(zhí)行對文檔的操作。例如,通過發(fā)出命令 形式的指令,用戶對文檔處理系統(tǒng)中的XML文檔相對應(yīng)的XML的DOM 樹編輯來處理XML文檔。這些命令可利用鍵盤擊鍵、鼠標(biāo)點擊或其它有 效的用戶界面動作來輸入。有時,也可通過一個命令來執(zhí)行一個以上的 指令。在這種情況下,這些指令被封裝(包含)成一個命令并連續(xù)執(zhí) 行。例如,用戶希望將錯誤詞語替換為正確詞語。在這種情況下,第一 個命令可用以在文檔中找尋錯誤詞語,第二個命令可用以刪除該錯誤詞 語,第三個命令可用以輸入正確詞語。這三個命令可被包裝成一個命 令。命令可具有相關(guān)功能,例如是下面將要詳細記述的"撤消"功能。這 些功能可分配給用來創(chuàng)建對象所使用的若干個基類。命令子系統(tǒng)105的關(guān)4定組件是命令調(diào)用器(Commandlnvoker,即命 令啟動單元)1051,命令調(diào)用器1051可操作以有選擇性地提供并執(zhí)行命 令。雖然圖ll (b)中僅示出了一個命令調(diào)用器,但也可使用一個以上 的命令調(diào)用器并可同時執(zhí)行一個以上的命令。命令調(diào)用器1051維護執(zhí)行 命令所需的功能和類。在操作中,要執(zhí)行的命令1052被置于隊列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)用器(Commandlnvoker ) 1051執(zhí)行的命令的類型包括但 不限于可撤消命令(UndoableCommand)1054 、 異步命令 (AsynchronousCommand)1055以及詞匯連接命令(VCCommand)1056???撤消命令1054是那些如果用戶希望就能夠撤銷其結(jié)果的命令。可撤消命 令的示例為剪切、復(fù)制、插入文本等。在操作中,當(dāng)用戶選擇文檔的 一部分并對該部分應(yīng)用剪切命令時,如果需要,通過使用可撤消命令, 可使被剪切的部分恢復(fù)至其未被剪切的狀態(tài)。詞匯連接命令1056#皮載入詞匯連接描述符(Vocabulary Connection Descriptor: VCD)腳本文件中。詞匯連接命令1056是能夠由程序員定義 的用戶指定命令。命令可以是例如用于增加XML片段、刪除XML片段、 以及設(shè)置屬性等更抽象命令的組合。這些命令特別涉及對文檔進行編 輯。異步命令1055是用于文檔的載入或保存等基于系統(tǒng)的命令,與可撤 消命令或詞匯連接命令不同,是異步執(zhí)行。由于異步命令不是可撤消命 令,所以其執(zhí)行的結(jié)果不能取消。c)資源資源109是向各種類提供某些功能的對象。例如,串資源、圖標(biāo)和 缺省鍵綁定是系統(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é)合在一起的"粘合劑"。例如,用戶可能希望創(chuàng)建作為項目的一部分的一套文檔。載入這些文檔后,將創(chuàng)建用于文檔的適當(dāng)表述。用戶界面功能作為用戶應(yīng)用程序106的一部分被追加。換言之,用戶應(yīng)用程 序106既保持文檔的表述也保持文檔的各種形式,這些文檔的表述使用 戶能夠與形成項目的 一部分的文檔進行交互。 一旦創(chuàng)建了用戶應(yīng)用程序 106,每當(dāng)用戶希望與形成項目 一部分的文檔進行交互時,用戶就能夠 簡單地將用戶應(yīng)用程序106載入到執(zhí)行環(huán)境中。b) 核心組件核心組件(CoreComponent) IIO提供在多個窗格(Pane)之間共享 文檔的一種方法。如后述的那樣,窗格顯示DOM樹,并處理屏幕的物理 布局。例如,物理屏幕包括在屏幕內(nèi)的多個描述信息的片斷的窗格。實 際上,由用戶在屏幕上看到的文檔可在一個或多個窗格中顯示。此外, 兩個不同的文檔可以出現(xiàn)在屏幕上的兩個不同窗格中。如圖ll (c)所示,屏幕的物理布局也具有樹型形式。因此,窗格可 被實現(xiàn)為根窗格(RootPane) 1084,也可以為子窗格(SubPane)1085。根 窗格1084是位于窗格樹的根部的窗格,而子窗格1085是除了根窗格1084 之外的任何窗格。核心組件110還提供字體,并充當(dāng)工具包等用于文檔的多個功能性 操作的源。由核心組件110執(zhí)行的任務(wù)的 一 個示例是在多個窗格之間移 動鼠標(biāo)光標(biāo)。作為被執(zhí)行的任務(wù)的另一個示例,標(biāo)記某窗格中文檔的一 部分,并將其復(fù)制到包含不同文檔的另一窗格上。c) 應(yīng)用程序核心如上所述,應(yīng)用程序組件102由系統(tǒng)處理和管理的文檔組成。其中 包括系統(tǒng)內(nèi)的文檔的多種邏輯和物理表述。應(yīng)用程序核心108是應(yīng)用程 序組件102的組件。其功能是保持實際文檔及其內(nèi)的所有數(shù)據(jù)。應(yīng)用程 序核心108包括文檔管理器(DocumentManager:文檔管理單元)1081和 文檔(Document)濯2本身。文檔管理器1081的多個方面將在隨后詳細描述。文檔管理器1081管 理文檔1082。文檔管理器1081也連4妻至一艮窗一各1084、子窗一各1085、剪貼板(ClipBoard)實用程序1087以及快照(SnapShot)實用程序1088。剪 貼板實用程序1087提供了保持用戶決定增加至剪貼板的部分文檔的方 法。例如,用戶可能希望剪切文檔的一部分,并將其保存到新的文檔 上,用于稍后查看。在這種情況下,剪切的部分被增加至剪貼板。接著,也對快照實用程序1088進行說明??煺諏嵱贸绦?088在應(yīng)用 程序從一個狀態(tài)變?yōu)榱?一狀態(tài)時,能夠記住應(yīng)用程序的當(dāng)前狀態(tài)。d)用戶界面應(yīng)用程序組件102的另 一組件是用戶界面107,其為用戶提供一種與 系統(tǒng)進行物理交互的方式。例如,用戶界面用于用戶上載、刪除、編輯 和管理文檔。用戶界面包括框架(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ū)域。C.文檔管理和相關(guān)的數(shù)據(jù)結(jié)構(gòu)圖12示出了文檔管理器1081的細節(jié)。其中包括用于在文檔處理系統(tǒng) 內(nèi)表述文檔的數(shù)據(jù)結(jié)構(gòu)和組件。為了更好的理解,在這部分描述的組件 將利用模型-視圖-控制器(MVC)表述范例來進行說明。文檔管理器1081包括文檔容器(DocumentContainer ) 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的組件, 不過并未在圖中特別示出和分配附圖標(biāo)記。根據(jù)MVC范例的表述,模型(M)包括文檔的DOM樹模型202。如 上所述,所有文檔均在文檔處理系統(tǒng)中被表述為DOM樹。此外,文檔也 形成文檔容器203的一部分。1. DOM模型和區(qū)表述文檔的DOM樹是具有節(jié)點(Node) 2021的樹。作為DOM樹的 子集的區(qū)(Zone) 209包括對應(yīng)于DOM樹內(nèi)部的一個或多個節(jié)點的區(qū) 域。例如,可能僅有文檔的一部分在屏幕上顯現(xiàn),文檔可見的這一部分 可使用"區(qū)"209來表述。利用被稱作區(qū)工廠(ZoneFactory:區(qū)生成單 元)205的插件來創(chuàng)建、操作和處理區(qū)。雖然區(qū)表述DOM的一部分,但_ 它也可使用 一個以上的"命名空間"。如本領(lǐng)域中公知的那樣,命名空間 是名稱的匯集或集合,這些名稱在該命名空間中是唯一的。換言之,一 個命名空間中不存在相同的名稱。2. "方面"及其與區(qū)的關(guān)系方面(Facet) 2022是MVC范例的才莫型(M)部分內(nèi)的另一組件。它 被用來編輯區(qū)中的節(jié)點。"方面"2022使用不會影響區(qū)本身的內(nèi)容的可執(zhí) 行過程(程序)來組織對于DOM的訪問。如下面將說明的那樣,這些過 程執(zhí)行與節(jié)點相關(guān)的重要且有用的操作。各個節(jié)點具有相應(yīng)的"方面"。通過利用"方面"執(zhí)行操作來代替直接 對DOM中的節(jié)點進行操作,DOM的完整性得以確保。否則,如果直接 對節(jié)點執(zhí)行操作,那么幾個插件可能同時對DOM進行改變,從而造成結(jié) 果的前后矛盾。雖然W3C構(gòu)建的DOM標(biāo)準(zhǔn)定義了用于對節(jié)點進行操作的標(biāo)準(zhǔn)界面, 實際上,由于對每個詞匯或每個節(jié)點有特定的操作,優(yōu)選將這些操作作 為API來準(zhǔn)備。文檔處理系統(tǒng)以"方面"的形式向各節(jié)點提供了特有的 API,并附加到各節(jié)點上。據(jù)此,可以提供符合DOM標(biāo)準(zhǔn)的有用的 API。此外,通過在標(biāo)準(zhǔn)DOM上后來增加特定的API而不是為每個詞匯 實現(xiàn)特定的DOM,可對多種詞匯進行統(tǒng)一處理,并且可以適當(dāng)?shù)靥幚碛?多種詞匯任意組合的混合文檔。詞匯是屬于命名空間的標(biāo)簽(例如XML標(biāo)簽)的集合。如上所述, 命名空間具有唯一的名稱(在此為標(biāo)簽)集。詞匯表現(xiàn)為表述XML文檔 的DOM樹的子樹。這種子樹包括區(qū)(Zone)。在特定實施例中,標(biāo)簽集 的邊界由區(qū)來限定。區(qū)209是利用被稱為"區(qū)工廠"205的服務(wù)創(chuàng)建的。如 上所述,區(qū)209是對表述文檔的DOM樹的一部分的內(nèi)部表述。為了提供 對該文檔的上述部分的訪問,需要邏輯表述。這種邏輯表述通知計算機 如何在屏幕上對文檔進行邏輯顯示。畫布(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 206來創(chuàng)建的。文檔的DOM 是利用Editlet 206和畫布210來編輯的。為了維護原始文檔的完整性, Editlet 206和畫布服務(wù)210使用與區(qū)209中的一個或多個節(jié)點相對應(yīng)的"方 面"。這些服務(wù)并不直接操作區(qū)和DOM中的節(jié)點。"方面"是利用命令207 來操作的。用戶通常通過例如移動屏幕上的光標(biāo)或鍵入命令而與屏幕進行交 互。提供屏幕的邏輯布局的畫布210接收這些光標(biāo)才喿作。畫布210可使"方 面"采取相應(yīng)的動作。根據(jù)這種關(guān)系,光標(biāo)子系統(tǒng)204作為用于文檔管理 器1081的MVC范例的控制器(C)。畫布210也提供處理事件的任務(wù)。例 如,畫布210處理諸如鼠標(biāo)點擊、焦點移動以及由用戶發(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)如上所述,人們希望對文檔的任何改變(例如,編輯)都可撤消。 例如,用戶可執(zhí)行編輯操作,然后決定撤消該改變。參照圖12,撤消子 系統(tǒng)212是文檔管理器的可進行撤消操作的組件。撤消管理器(UndoManager:撤銷管理單元)2121保存可被用戶撤消的、對文檔執(zhí) 行的所有操作。例如,用戶可執(zhí)行命令來將文檔中的詞語替換成另一個 詞語。之后,該用戶可改變主意并決定保留原來的詞語。撤消子系統(tǒng) 212協(xié)助上述操作。撤消管理器2121保存上述可撤消編輯(UndoableEdit:可撤消編輯)2122的操作。5. 光標(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)部分。6. 視圖如上所述,畫布210表述要顯現(xiàn)在屏幕上的文檔的邏輯布局。對于 XHTML文檔實施例而言,畫布210可包括盒樹(box tree) 208,該盒樹 是文檔在屏幕上如何被查看的邏輯表述。上述盒樹208可包含在與文檔 管理器1081有關(guān)的MVC范例的視圖(V)部分中。D.詞匯連4妄文檔處理系統(tǒng)的 一個重要特征是提供一種環(huán)境,該環(huán)境能夠把XML 文檔映射為其他表述來處理,而且對映射后的表述編輯時,將該編輯反 映到源XML文檔中,同時保持該XML文檔的完整性。由標(biāo)記語言描述的文檔,例如XML文檔,基于通過文檔類型定義的 詞匯創(chuàng)建。詞匯則是一組標(biāo)簽集。由于詞匯可以任意定義,這就使得詞匯的數(shù)量可能是無限的。但是,為多個可能的詞匯中的每一個都提供專 用的單獨處理和管理環(huán)境是不切實際的。詞匯連接提供解決這種問題的 一種方式。例如,文檔可以利用兩種以上的標(biāo)記語言來表述。這些文檔例如可以是XHTML (可擴展超文本標(biāo)記語言)、SVG (可縮;改矢量圖形)、 MathML (數(shù)學(xué)標(biāo)記語言)或其他的標(biāo)記語言。換句話說,標(biāo)記語言可 以牙見為和XML中的詞匯和標(biāo)簽集相同。詞匯使用詞匯插件來實現(xiàn)。在文檔處理系統(tǒng)中,通過將以插件不可 用的詞匯所描述的文檔映射為插件可用的另一詞匯來顯示。因此,對于 以未準(zhǔn)備有插件的詞匯描述的文檔仍然是可以正確顯示。詞匯連接包括獲取定義文件、和根據(jù)獲取的定義文件在兩個不同的 詞匯之間進行映射的能力。用某種詞匯描述的文檔能夠映射為另外的詞編輯插件來顯示或編輯文檔的能力。如上所述,各個文檔在文檔處理系統(tǒng)中被描述為通常具有多個節(jié)點 的DOM樹。"定義文件"為各個節(jié)點描述了該節(jié)點與其他節(jié)點之間的連 接。規(guī)定了是否可以對各個節(jié)點的元素值和屬性值進行編輯。還可以描 述使用節(jié)點的元素值和屬性值的運算表達式。利用映射特征,可以創(chuàng)建采用定義文件的目的DOM樹。由此建立并 維護源DOM樹和目的DOM樹之間的關(guān)系。詞匯連接監(jiān)一見源DOM樹和目 的DOM樹之間的連接。在/人用戶接收到編輯指令后,詞匯連接〗務(wù)改源 DOM樹中的相關(guān)節(jié)點。發(fā)出表示已經(jīng)修改了源DOM樹的"變化事件", 并且相應(yīng)地修改目的DOM樹。通過使用詞匯連接,使得僅有少量用戶知道的相對次要的詞匯可以 被轉(zhuǎn)換為其他主要的詞匯。因此,即便是對于那些僅有少量用戶使用的 次要詞匯,也可以準(zhǔn)確地顯示文檔,并提供理想的編輯環(huán)境。因此,作為文檔處理系統(tǒng)一部分的詞匯連接子系統(tǒng)提供能夠?qū)ξ臋n 進行多種表述的功能。圖13顯示了詞匯連4妻(VC: Vocabulary 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表述,則需要與HTML和SVG分別對應(yīng)的詞匯插件。詞匯連接插件301為區(qū)209或窗格211創(chuàng)建與適當(dāng)詞匯305的文檔相對 應(yīng)的適當(dāng)?shù)脑~匯連接畫布(VCCanvas) 310。使用詞匯連接301,根據(jù)轉(zhuǎn) 換規(guī)則,對源DOM樹的區(qū)209的改變被傳遞到另一DOM樹306的相應(yīng) 區(qū)。轉(zhuǎn)換規(guī)則以詞匯連接描述符(Vocabulary Connection Descriptor: VCD )的形式給出。對于與源DOM和目的DOM之間的這種轉(zhuǎn)換相對應(yīng) 的各個VCD文件,創(chuàng)建相應(yīng)的詞匯連接管理器(VCManager) 302。2. 連接器(Connector)連接器304連4妾源DOM樹中的源節(jié)點和目的DOM樹中的目的節(jié)點。 連接器304的作用是觀察源DOM樹中的源節(jié)點,和對與源節(jié)點相對應(yīng)的 源文檔進行的修改(變化)。接著,修改相應(yīng)的目的DOM樹中的節(jié)點。 連接器304是能夠?qū)δ康腄OM樹進行修改的唯一對象。例如,用戶可以 只對源文檔和相應(yīng)的源DOM樹進行修改。之后,連接器304對目的DOM 樹進4于相應(yīng)的々務(wù)改。連接器304被邏輯地鏈接在一起以形成樹結(jié)構(gòu)。連接器304形成的樹 被稱為連接器樹(Co皿ectorTree )。連接器304通過 一 種服務(wù) (Service)而創(chuàng)建,該服務(wù)被稱為連接器工廠(ConnectorFactory:連接 器生成單元)303的服務(wù)。連接器工廠303從源文檔創(chuàng)建連接器304,并 將其鏈接起來以形成連接器樹。詞匯連接管理器302維護連接器工廠 303。如上所述,詞匯是命名空間中的標(biāo)簽集。如圖所示,通過詞匯連接 301為文檔創(chuàng)建詞匯305。這通過分析文檔文件以及為源DOM和目的DOM之間的映射創(chuàng)建適當(dāng)?shù)脑~匯連接管理器302來實現(xiàn)。此外,在創(chuàng)建 連接器的連接器工廠303、創(chuàng)建區(qū)209的區(qū)工廠(ZoneFactory)205和創(chuàng)建與 區(qū)內(nèi)節(jié)點相對應(yīng)的畫布的Editlet 206之間建立適當(dāng)?shù)年P(guān)耳關(guān)。當(dāng)用戶乂人系 統(tǒng)中丟棄或刪除文檔時,對應(yīng)的詞匯連接管理器302將被刪除。詞匯305創(chuàng)建詞匯連接畫布310。此外,連接器304和目的DOM樹306 被相應(yīng)地創(chuàng)建。源DOM和畫布分別對應(yīng)于才莫型(M)和3見圖(V)。然而, <義當(dāng)目 標(biāo)詞匯能夠在屏幕上呈現(xiàn)時,這種表現(xiàn)才有意義。這種呈現(xiàn)通過詞匯插 件來進行。針對主要的詞匯(例如XHTML 、 SVG和MathML )提供詞匯 插件。詞匯插件與目標(biāo)詞匯關(guān)聯(lián)使用。它們提供了一種使用詞匯連接描 述符在詞匯之間進行映射的方式。僅在目標(biāo)詞匯可被映射并具有預(yù)先定義的屏幕呈現(xiàn)方式時,這種映 射才有意義。這種呈現(xiàn)方式例如是由諸如W3C組織定義的XHTML等之 類的標(biāo)準(zhǔn)規(guī)格。在需要詞匯連接時,使用詞匯連接畫布(VCCanvas)。在這種情況 下,由于不能夠為源直接創(chuàng)建視圖,因此,不創(chuàng)建源的畫布。在這種情 況下,使用連接器樹來創(chuàng)建詞匯連接畫布。這種詞匯連接畫布僅僅處理 事件轉(zhuǎn)換,而并不會有助于將文檔呈現(xiàn)在屏幕上。3.目的區(qū)(DestinationZone)、窗才各(Pane)以及畫布(Canvas)如上所述,詞匯連接子系統(tǒng)的目的在于同時創(chuàng)建并維護對同一文檔 的兩種表述。第二表述也是DOM樹形式,先前作為目的DOM樹已被說 明。為了瀏覽第二種表述的文檔,需要目的區(qū)、畫布和窗格。在創(chuàng)建詞匯連接畫布后,將創(chuàng)建相應(yīng)的目的窗格 (DestinationPane ) 307。 jt匕夕卜, 一目關(guān)6勺目6勺畫布(DestinationCanvas ) 308和相應(yīng)的盒樹(BoxTree)309被創(chuàng)建。同樣,詞匯連接畫布310還與源 文檔的窗格211和區(qū)209關(guān)聯(lián)。目的畫布308提供了文檔的第二種表述方式的邏輯布局。具體地, 目的畫布308提供了用戶界面功能,例如光標(biāo)和選擇,用于以目的表述 的方式呈現(xiàn)文檔。在目的畫布308中發(fā)生的事件被提供到連接器。目的畫布308向連接器304通知鼠標(biāo)事件、4建盤事件、拖動和放置事件、以及 通知文檔的目的(第二種)表述的詞匯的特有事件。4. 詞匯連接命令子系統(tǒng)作為詞匯連接(VC)子系統(tǒng)300的一部分是詞匯連接(VC)命令子 系統(tǒng)313。詞匯連接命令子系統(tǒng)313創(chuàng)建詞匯連接命令(VCCommand) 315,詞匯連接命令315用來執(zhí)行與詞匯連接子系統(tǒng)300相關(guān)的指令。可 通過內(nèi)建的命令模板(CommandTemplate )318來創(chuàng)建詞匯連接命令,和 /或可通過在腳本子系統(tǒng)314中使用腳本語言從無到有地創(chuàng)建命令而創(chuàng)建 詞匯連4妄命令。命令模板中包括,例如"If,命令模板、"When"命令模板、"Insert fragment"命令模板等。這些模板被用來創(chuàng)建詞匯連接命令。5. XPath子系統(tǒng)XPath子系統(tǒng)316是文檔處理系統(tǒng)的 一個重要組件,它有助于實現(xiàn)詞 匯連接。連接器304通常包括XPath信息。如上所述,詞匯連接的任務(wù)之 一是將源DOM樹的變化反映到目的DOM樹中。XPath信息包括一個或多 個XPath表述,用來確定對改變/修改加以監(jiān)視的源DOM樹的子集。6. 源DOM樹、目的DOM樹和連接器樹(ConnectorTree)的概述 源DOM樹是對轉(zhuǎn)換為另一種詞匯之前的詞匯表述的文檔進行表述的DOM樹或區(qū)。在源DOM樹中的節(jié)點被稱為源節(jié)點。另一方面,如已在前面結(jié)合詞匯連接描述的,目的DOM樹是通過映 射轉(zhuǎn)換后以不同詞匯表述的文檔的DOM樹或區(qū)。目的DOM樹中的節(jié)點 被稱為目的節(jié)點。連接器樹是基于用來表述源節(jié)點和目的節(jié)點之間的對應(yīng)關(guān)系的連接 器的分級表述。連接器監(jiān)視源節(jié)點和對源文檔進行的修改,修改目的 DOM樹。連接器是被允許修改目的DOM樹的唯一對象。E.文檔處理系統(tǒng)中的事件流為了能夠使用,程序必需對來自用戶的命令進行響應(yīng)。事件是一種描述和執(zhí)行用戶對程序?qū)嵤┑膭幼鞯姆椒?。許多高級語言例如Java (注 冊商標(biāo))依靠描述用戶動作的事件。在現(xiàn)有技術(shù)中,程序需要主動收集 信息以理解用戶操作和由程序自己執(zhí)行用戶的操作。這意味著,例如, 在對程序自身初始化后,為了在用戶對屏幕、鍵盤和鼠標(biāo)等執(zhí)行了任何 操作時進行適當(dāng)?shù)奶幚?,進入反復(fù)確認用戶操作的循環(huán)。然而,這種處 理難以操控。此外,這種處理在等候用戶作某些事情時,還需要執(zhí)行循 環(huán)的程序,從而消耗了CPU周期。許多語言通過包含不同的范例來解決這些問題。其中的一個范例即 事件驅(qū)動程序構(gòu)成了所有現(xiàn)代的視圖系統(tǒng)的基礎(chǔ)。在這種范例中,所有 的用戶動作屬于被稱為"事件"的抽象現(xiàn)象的集合。事件足夠詳細地描述 了特定的用戶動作。程序不是主動地收集用戶創(chuàng)建的事件,而是在要監(jiān) -阮的事件發(fā)生時,由系統(tǒng)通知程序。以這種方式處理用戶交互的程序4皮 稱為"事件驅(qū)動"。在多數(shù)場合,使用"事件(Event)"類來進行處理,其中事件類獲取 所有用戶創(chuàng)建事件的基本特性。文檔處理系統(tǒng)定義和使用其自身的事件以及處理這些事件的方式。 有幾種類型的事件被使用。例如,鼠標(biāo)事件是由用戶的鼠標(biāo)操作引起的 事件。與鼠標(biāo)有關(guān)的用戶操作由畫布210傳遞到鼠標(biāo)事件。因此,畫布 可以被認為是用戶與系統(tǒng)交互的最前沿。如果需要,作為最前沿的畫布 將把其與事件有關(guān)的內(nèi)容傳遞到其下(子)級。另一方面,按鍵事件從畫布210產(chǎn)生。按鍵事件具有瞬時的焦點。 即,按鍵事件總是涉及操作。輸入到畫布210的按鍵事件接著被傳遞到 其上級(父)。鍵盤輸入通過能夠處理字符串插入的不同事件而被處 理。處理字符串插入的事件將在使用鍵盤插入字符時發(fā)生。其他的"事 件"例如包括以與拖動事件、放置事件和鼠標(biāo)事件相似的方式處理的其他 事件。1.在詞匯連接之外的事件處理使用事件線程對事件進行傳遞。在接收到事件后,畫布210改變其狀態(tài)。如果需要,畫布210將命令(Command) 1052記入到命令隊列 (C ommandQueue ) 1053。2.在詞匯連4姿之內(nèi)的事件處理通過^f吏用詞匯連^l妄插件301,作為目的畫布一例的XHTML畫布 (XHTMLCanvas) 1106接收現(xiàn)有的事件,例如鼠標(biāo)事件、鍵盤事件、拖 動和放置事件、以及詞匯中的特有事件。這些事件接著被通知到連接器 304。更具體地說,如圖21 (b)所示,詞匯連接插件301內(nèi)的事件流經(jīng) 過源窗格(SourcePane) 1103、詞匯畫布1104、目的窗格1105、作為目 的畫布的實施例的目的畫布1106、目的DOM樹和連4妻器樹。F.程序調(diào)用器(Programlnvoker)及其與其他組件之間的關(guān)系 在圖14 (a)中更加詳細地顯示了程序調(diào)用器103及其與其他組件之 間的關(guān)系。程序調(diào)用器103是在執(zhí)行環(huán)境中被執(zhí)行以啟動文檔處理系統(tǒng) 的基本程序。如圖ll (b)及圖ll (c)所示,用戶應(yīng)用程序 (UserApplication ) 106 、服務(wù)代理(ServiceBroker) 1041 、命令調(diào)用器 (Commandlnvoker) 1051和資源(Resource) 109都被聯(lián)接到程序調(diào)用器103 。 如前所述,應(yīng)用程序102是在執(zhí)行環(huán)境中運行的組件。同樣,服務(wù)代理 1041管理向系統(tǒng)增加各種功能的插件。另一方面,命令調(diào)用器1051執(zhí)行 用戶提供的指令,維護用來執(zhí)行命令的類和函數(shù)。1.插件和服務(wù)下面將參照圖14 (b)詳細描述服務(wù)代理1041。如上所述,服務(wù)代 理1041管理向系統(tǒng)增加各種功能的插件(及相關(guān)服務(wù))。服務(wù)1042在最 底層,其能夠?qū)⑻卣髟黾拥轿臋n處理系統(tǒng)中或者改變文檔處理系統(tǒng)的特 征。"服務(wù)"由兩部分構(gòu)成服務(wù)種類(ServiceCategory)401和服務(wù)提供器 (ServiceProvider)402。如圖14(c)所示,單個服務(wù)種類401可具有多個 相關(guān)的服務(wù)提供器402。每個服務(wù)提供器都可操作以執(zhí)行所有或部分的 特定服務(wù)種類。另一方面,服務(wù)種類401則定義了服務(wù)的類型。服務(wù)可分為三種類型l)"特征服務(wù)",向文檔處理系統(tǒng)提供特定特征;2)"應(yīng)用程序服務(wù)",是由文檔處理系統(tǒng)運行的應(yīng)用程序;3)"環(huán) 境服務(wù)",提供在整個文檔處理系統(tǒng)中需要的特征。圖14 ( d )中示出了服務(wù)的例子。根據(jù)應(yīng)用程序服務(wù)的種類 (Category),系統(tǒng)實用程序是相應(yīng)服務(wù)提供器的示例。同樣,Editlet 206是一個種類,HTML Editlet和SVG Editlet是相應(yīng)的服務(wù)提供器。區(qū)工 廠205是服務(wù)的另一種,并具有相應(yīng)的服務(wù)提供器(未示出)。已經(jīng)描述的向文檔處理系統(tǒng)增加功能的插件,可以看作是由幾個服 務(wù)提供器402和與其相關(guān)的類構(gòu)成的單元。各個插件都具有在定義文件 中記載的從屬關(guān)系和服務(wù)種類401 。2.程序調(diào)用器(Programlnvoker )和應(yīng)用程序之間的關(guān)系 圖14 (e)詳細顯示了程序調(diào)用器103和用戶應(yīng)用程序106之間的關(guān) 系。所需的文檔、數(shù)據(jù)等從存儲器中載入。所有需要的插件載入到服務(wù) 代理1041。服務(wù)代理1041維護并管理所有的插件??蓪⒉寮锢淼卦黾?到系統(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)系結(jié)構(gòu)。作為命令子系統(tǒng)105組件的命令調(diào)用器1051調(diào)用或執(zhí)行程序調(diào)用 器103內(nèi)的命令1052。命令1052則是用來在文檔處理系統(tǒng)中處理XML等 文檔和編輯相應(yīng)的XML DOM樹的指令。命令調(diào)用器1051維護扭^于命令 1052所需的類和功能。服務(wù)調(diào)用器1041也在程序調(diào)用器103中執(zhí)行。用戶應(yīng)用程序106連接 到用戶界面107和核心組件110。核心組件110提供了一種在所有的窗格中 共享文檔的方式。核心組件110還提供字體并作為用于窗格的工具包。圖15 (b)顯示了框架(frame)1071、菜單欄(MenuBar)1072和狀態(tài)欄 (StatusBar)1073之間的關(guān)系。H. 應(yīng)用程序核心圖16 (a)進一步解釋了應(yīng)用程序核心108,其保持所有文檔以及作 為文檔 一部分及屬于文檔的數(shù)據(jù)。核心組件11 O聯(lián)接到管理文檔1082的 文檔管理器(DocumentManager) 1081。文檔管理器1081是存儲到與文檔處 理系統(tǒng)關(guān)聯(lián)的存儲器中的所有文檔1082的所有者。為了便于在屏幕上顯示文檔,文檔管理器1081還連接到根窗格 (RootPane)1084。剪貼板(ClipBoard)1087、快照(SnapShot)1088、拖拉和 放置(Drag&Drop)601以及重疊(Overlay)602的功能也被聯(lián)接到核心組件 110??煺?088用來撤消應(yīng)用程序狀態(tài)。在用戶啟動快照1088的功能時, 應(yīng)用程序的當(dāng)前狀態(tài)被檢測并存儲。之后,在應(yīng)用程序的狀態(tài)變?yōu)榱硪?狀態(tài)時,所存儲的狀態(tài)的內(nèi)容被保存下來。在圖16(b)中示出了快照 1088。在才喿作中,當(dāng)應(yīng)用程序/人一個URL移動到另一個時,快照1088記 住先前的狀態(tài),從而能夠無縫地執(zhí)行后退和前進操作。I. 在文檔管理器中組織文檔圖17 (a)更加詳細地描述了文檔管理器1081以及如何在文檔管理器 中組織并保存文檔。如圖ll (b)所示,文檔管理器1081管理文檔 1082。在圖17 ( a )顯示的實施例中,多個文檔中的一個為根文檔 (RootDocument) 701,其4也的文才當(dāng)為子文檔(SubDocument) 702。文 檔管理器1081連接到根文檔701,根文檔701則連接到所有的子文檔 702。如圖12和17 (a)所示,文檔管理器1081耦合到文檔容器203,文檔 容器203是管理所有文檔1082的對象。形成包括DOM服務(wù) (DOMService)703和IO管理器(IOManager ) 704的工具包201 (例如, XML工具包)的一部分的工具也提供給文檔管理器1081。再參照圖17 (a) , DOM服務(wù)703創(chuàng)建基于由文檔管理器1081管理的文檔的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)建撤消管理器706 (UndoManager:招"肖管理單元)和撤消封裝器(Undo Wrapper) 707。 撤消管理器706和撤消封裝器707用來執(zhí)行可撤消的命令。使用該特征, 可以撤消使用編輯操作對文檔所作的改變。子文檔中的改變也會涉及到 根文檔。撤消操作考慮到對分級結(jié)構(gòu)內(nèi)其他文檔產(chǎn)生影響的改變,例 如,如圖7(c)所示,確保維護在分級結(jié)構(gòu)鏈中的所有文檔之間的一致 性。并將它們和與根文檔相關(guān)的撤消對象耦合。撤消封裝器707收集可撤消 編輯接受器(UndoableEditAcceptor:可撤消編輯接受單元)709可利用 的撤消對象。撤消管理器706和撤消封裝器707連接到可撤消編輯接收器709和可 撤消編輯源(UndoableEditResource ) 708。本領(lǐng)域技術(shù)人員應(yīng)該理解, 文檔705可以是可〗敦消編輯源708 ,也可以是可4敬消編輯對象的源。J.撤消命令和撤消框架圖18 (a)和18 (b)進一步詳細地顯示了撤消框架和撤消命令。如 圖18 ( a )所示,4敎消命令(UndoCommand ) 801 、 重估支命令 (RedoCommand ) 802和可撤消編輯命令(UndoableEditCommand ) 803 是能夠排列在如圖ll (b)所示的命令調(diào)用器1051中的命令,并且被順 序扭j亍??沙废庉嬅?03還進一步聯(lián)接到可措t消編輯源708和可撤消 編輯接受器709。 "foo"編輯命令804和"bar"編輯命令805就是可撤消編輯 命令的例子。1.可撤消編輯命令的#1行圖18 (b)顯示了可撤消編輯命令的執(zhí)行。首先,假設(shè)用戶使用編 輯命令來編輯文檔705。在第一步驟S1,可撤消編輯接受器709被聯(lián)接到 可撤消編輯源708,而可4敬消編輯源708為文檔705的DOM樹。在第二步 驟S2,基于由用戶發(fā)出的命令,使用DOM API對文檔705進行編輯。在 第三步驟S3,向變化事件監(jiān)聽器通知已經(jīng)發(fā)生了改變。即,在該步驟, 監(jiān)視DOM樹中所有改變的監(jiān)聽器檢測編輯操作。在第四步驟S4,可撤消 的編輯作為撤消管理器706的對象被存儲。在第五步驟S5,可撤消編輯 接受器709與可撤銷編輯源708分開??沙废庉嬙?08也可以是文檔705 本身。K.與向系統(tǒng)載入文檔有關(guān)的步驟上述子部分描述了系統(tǒng)的各個組件和子組件。下面將描述在使用這 些組件時用到的方法。圖19 (a)顯示了如何將文檔載入到文檔處理系統(tǒng) 中的總體圖。在圖24-28中,結(jié)合特定的例子詳細地描述各個步驟。簡言之,文檔處理系統(tǒng)從文檔中包含的數(shù)據(jù)構(gòu)成的二進制數(shù)據(jù)流創(chuàng) 建DOM。為文檔中的感興趣的并屬于"區(qū)"中的一部分創(chuàng)建頂節(jié)點 (ApexNode:頂點節(jié)點)。接著確定相應(yīng)的"窗格"。所確定的窗格從頂 節(jié)點和物理屏幕表面創(chuàng)建"區(qū)"和"畫布"。接著,"區(qū)"為各個節(jié)點創(chuàng)建"方 面",并為它們提供所需信息。畫布創(chuàng)建用于呈現(xiàn)DOM樹的節(jié)點的數(shù)據(jù) 結(jié)構(gòu)。具體地,文檔從存儲器卯l載入。創(chuàng)建文檔的DOM樹902。創(chuàng)建保持 文檔的相應(yīng)文檔容器903。接著將文檔容器903聯(lián)接到文檔管理器904。 DOM樹包括根節(jié)點,在一些情況下可包括多個次級節(jié)點。這種文檔一般既包含文本也包含圖形。因此,DOM樹例如不僅具有 XHTML子樹也可以具有SVG子樹。XHTML子樹具有XHTML頂節(jié)點 (ApexNode)卯5。同樣,SVG子樹具有SVG頂節(jié)點906。在步驟l,將頂節(jié)點906聯(lián)接到窗格907,窗格907是屏幕的邏輯布 局。在步驟2,窗才各907向作為窗口擁有者(PaneOwner) 908的核心組件 請求用于頂節(jié)點的906區(qū)工廠。在步驟3,窗口擁有者908返回區(qū)工廠以 及用于頂節(jié)點906的Editlet。在步驟4,窗才各907創(chuàng)建區(qū)909,區(qū)909聯(lián)接至窗格907。在步驟5,區(qū) 909為各個節(jié)點創(chuàng)建"方面",并聯(lián)接到相應(yīng)的節(jié)點。在步驟6,窗格907創(chuàng) 建畫布910。畫布910聯(lián)接到窗格907。在畫布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)概要。在這種情況下,由 于區(qū)和"方面"是與文檔相關(guān)的輸入,模型(M)包括區(qū)和"方面"。由于 畫布和將文檔呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)是用戶在屏幕上看到的輸出,所 以視圖(V)對應(yīng)于畫布以及數(shù)據(jù)結(jié)構(gòu)體。由于命令對文檔及其各種關(guān) 系執(zhí)行控制操作,所以控制(C)包括畫布中所包含的命令。L.文檔的表述下面將使用圖20來描述文檔及其各種表述的實施例。在該實施例中 使用的文檔既包含文本也包含圖片。文本使用XHTML表述,而圖片用 SVG表述。圖20詳細顯示了文檔組件以及相應(yīng)對象的關(guān)系的MVC表述。 在該示例中,文檔1001聯(lián) 接到保持文檔1001的文檔容器1002。文檔通過 DOM樹1003表述。DOM樹包括頂節(jié)點1004。頂節(jié)點用陰影圓圈表示。非頂節(jié)點用非陰影圓圈表示。用來編輯節(jié) 點的"方面"用三角形表示,并被聯(lián)接到相應(yīng)的節(jié)點。由于文檔具有文本 和圖片,所以該文檔的DOM樹包括XHTML部分和SVG部分。頂節(jié)點 1004是XHTML子樹的最頂部的節(jié)點。該節(jié)點被聯(lián)接到XHTML窗格 1005, XHTML窗格(XHTMLPane) 1005是文檔XHTML部分的物理表 述的最頂部窗格。頂節(jié)點1004還聯(lián)接到XHTML區(qū)(XHTMLZone) 1006, 其中XHTML區(qū)1006是文檔的DOM樹的 一部分。與節(jié)點1004相對應(yīng)的"方面"還聯(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)建盒樹(BoxTree) 1009 。維護和呈現(xiàn)文檔的XHTML部分所需的各種命令1008 也被增加到XHTML畫布1007 。同樣,文檔的SVG子樹的頂節(jié)點1010被聯(lián)接到SVG區(qū)DOM樹的部分。頂節(jié)點1010被聯(lián)接到SVG窗格(SVGPane)1013, SVG窗 格1013是文檔的SVG部分的物理表述的最頂部窗格。表述文檔的SVG部 分的邏輯表述的SVG畫布(SVGCanvas) 1012通過SVGEditlet創(chuàng)建,并被聯(lián) 接到SVG窗格1013。用于將文檔的SVG部分呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)和 命令被聯(lián)接到SVG畫布。例如,如圖所示,這種數(shù)據(jù)結(jié)構(gòu)可包括圓圏、 線、矩形等。對于結(jié)合圖20描述的文檔例表述的一部分,參照圖21 (a)用已經(jīng)描 述的MVC范例來作進一步描述。圖21 (a)提供了文檔1001的XHTML組 件中的MV關(guān)系的簡化圖。模型是用于文檔1001的XHTML組件的 XHTML區(qū)(XHTMLZone) 1101。在XHTML區(qū)的樹中包括幾個節(jié)點及 其相應(yīng)的"方面"。相應(yīng)的XHTML區(qū)和窗才各是MVC范例的才莫型(M)部 分的一部分。MVC范例的視圖(V)部分是用于文檔1001的HTML組件 的相應(yīng)的XHTML畫布(XHTMLCanvas ) 1102和盒樹。通過畫布以及其 中所包含的命令,文檔的XHTML部分被呈現(xiàn)在屏幕上。鍵盤和鼠標(biāo)輸 入等事件如圖所示,向相反方向進行處理。源窗格(SourcePane)具有附加功能,也就是說,起到DOM保持器 的作用。圖21 (b)提供了在圖21 (a)中示出的用于文檔1001的組件的 詞匯連接。作為源DOM保持器的源窗纟各1103包含文檔的源DOM樹。連 接器樹通過連接器工廠創(chuàng)建,創(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ù)1201創(chuàng)建用于文檔的部分的區(qū)。Editlet服務(wù) (EditletService)1202也被聯(lián)接到服務(wù)代理1041。 Editlet服務(wù)1202創(chuàng)建與區(qū) 中的節(jié)點相對應(yīng)的畫布。區(qū)工廠的例子是分別創(chuàng)建XHTML區(qū)和SVG區(qū)的XHTML區(qū)工廠 (XHTMLZoneFactory ) 1211和SVG區(qū)工廠(SVGZoneFactory ) 1212。 如上文檔示例所述,文檔的文本組件可通過創(chuàng)建XHTML區(qū)來表述,而 圖片則可使用SVG區(qū)來表述。Editlet服務(wù)的示例包括XHTML Editlet 1221 和SVGEditlet 1222。圖22 (b)進一步詳細顯示了詞匯連接。如上所述,詞匯連接是文 檔處理系統(tǒng)的重要特征,其能夠使兩種不同方式的文檔的表述和顯示保 持一致。對連接器工廠303加以維護的詞匯連接管理器302是詞匯連接子 系統(tǒng)的一部分。連接器工廠303創(chuàng)建文檔的連接器304。如上所述,連接 器監(jiān)-見源DOM中的節(jié)點,并》務(wù)改目的DOM中的節(jié)點,以維護兩種表述 之間的一致性。模板(Template) 317表述用于一些節(jié)點的轉(zhuǎn)換規(guī)則。詞匯連接描述 符(VCD)文件是表示一些規(guī)則的模板列表,這些規(guī)則用于將滿足某種 路徑或規(guī)則的元素或元素集合轉(zhuǎn)換為其他的元素。模板317和命令模板 318都聯(lián)接到詞匯連接管理器302。詞匯連接管理器是管理VCD文件中所 有部分的對象。對一個VCD文件創(chuàng)建一個詞匯連接管理器對象。圖22 (c)提供了有關(guān)連接器的進一步的細節(jié)。連接器工廠303從源 文檔中創(chuàng)建連接器。連接器工廠303與詞匯、模板和元素模板聯(lián)接,并 分另'J創(chuàng)建詞匯連接器(VocabularyConnector )、 模板連接器 (TemplateConnector)和元素連接器(ElementConnector)。詞匯連接管理器302維護連接器工廠303,為了創(chuàng)建詞匯,讀取相應(yīng) 的VCD文件。接著創(chuàng)建連接器工廠303。該連接器工廠303與創(chuàng)建區(qū)的區(qū) 工廠和創(chuàng)建畫布的Editlet相關(guān)聯(lián)。接著,用于目標(biāo)詞匯的Editlet服務(wù)創(chuàng)建詞匯連接畫布。詞匯連接畫 布也創(chuàng)建源DOM樹或區(qū)中頂點的連接器。根據(jù)需要遞歸地創(chuàng)建子連接 器。通過VCD文件中的一組模板創(chuàng)建連接器樹。模板是用于將標(biāo)記語言的元素轉(zhuǎn)換為其他元素的規(guī)則的集合。例如,各個模板與源DOM樹或區(qū)相匹配。在正確匹配時,創(chuàng)建頂點連接 器。例如,模板"A/"D"匹配所有從節(jié)點A開始、在節(jié)點D結(jié)束的樹分 支,而不考慮節(jié)點A和節(jié)點D之間的節(jié)點。同樣,"〃B"對應(yīng)于所有來自 根節(jié)點的"B"節(jié)點。N.與VCD文件相關(guān)的連接器樹(ConnectorTree )的示例 下面將解釋與特定文檔相關(guān)的處理。名為"MySampleXML"的文檔 被載入到文檔處理系統(tǒng)。圖23顯示了用于"MySampleXJML"文件的使用 詞匯連接管理器及連接器工廠樹(ConnectorFactoryTree)的VCD腳本的實施例。在圖中顯示了腳本文件內(nèi)的詞匯部分、模板部分以及在詞匯連接管 理器中的相應(yīng)組件。在標(biāo)簽"vcd:vocabulary"下提供了屬性"match"為 "sample:root" , " label"為"MySampleXML", 以及"call-template"為 "sampleTemplate"。在該實施例中,在"MySampleXML"的詞匯連接管理器中,詞匯包括 頂點元素"sample:root"。相應(yīng)的UI標(biāo)注為"MySampleXML"。在模板部 分,標(biāo)簽為"vcd:template",名稱為"sample template"。O.將文件載入系統(tǒng)的方法的詳細實施例圖24 - 28顯示了載入文檔"MySampleXML"的詳細描述。在步驟 1 ,如圖24 ( a )所示,文檔從存儲器1405中載入。DOM服務(wù) (DOMService )創(chuàng)建DOM樹以及文檔管理器1406對應(yīng)的文檔容器 1401。文檔容器1401聯(lián)接到文檔管理器1406。文檔包括XHTML和 MySampleXML的子樹。XHTML頂節(jié)點1403是具有標(biāo)簽"xhtml:html"的 XHTML的最頂部的節(jié)點。"MySampleXML"的頂節(jié)點1404是具有標(biāo)簽 "sample:root"的"MySampleXML"的最頂部的節(jié)點。在步驟2,如圖24(b)所示,根窗格為文檔創(chuàng)建XTML區(qū)、"方面" 和畫布。創(chuàng)建與頂節(jié)點1403對應(yīng)的窗格1407、 XHTML區(qū)1408、 XHTML 畫布1409和盒杉t1410。在步驟3,如圖24 (c)所示,在發(fā)現(xiàn)XHTML區(qū)所不理解的標(biāo)簽"sample:root"后,從XHTML畫布上的區(qū)域創(chuàng)建子窗格。圖25顯示了步驟4,在步驟4中,子窗格獲取能夠處理"sample:root" 標(biāo)簽并可創(chuàng)建適當(dāng)?shù)膮^(qū)的區(qū)工廠。這種區(qū)工廠在能夠執(zhí)行區(qū)工廠的詞匯 中。區(qū)工廠包括"MySampleXML"中的詞匯部分(Vocabulary Section )的內(nèi)容。圖26顯示了步驟5,在步驟5中,與"MySampleXML"對應(yīng)的詞匯創(chuàng) 建缺省區(qū)(DefaultZone) 1061。創(chuàng)建相應(yīng)的Editlet并提供創(chuàng)建相應(yīng)的畫布的 子窗格1501。 Editlet創(chuàng)建詞匯連接畫布。接著,詞匯連接畫布調(diào)用包括 連接器工廠樹的模板部分(TemplateSection)。連接器工廠樹創(chuàng)建將構(gòu)成連 接器樹的所有的連接器。圖27所示的步驟6中,各個連接器創(chuàng)建目的DOM對象。 一些連接器 包括XPath信息。XPath信息包括 一 個以上的XPath表達式,XPath表達式 用來確定需要對是否發(fā)生了改變/修改加以監(jiān)測的源DOM樹的子集。在圖28所示的步驟7中,詞匯從源DOM的窗格形成目的DOM樹的目 的窗格。這基于源窗格(SourcePane)來完成。目的樹的頂節(jié)點聯(lián)接到 目的窗格(DestinationPane )以及相應(yīng)的區(qū)。目的窗格創(chuàng)建目的畫布 (DestinationCanvas )。而且,為目的窗格提供用于以目的格式呈現(xiàn)文 檔的數(shù)據(jù)結(jié)構(gòu)和命令,以及用于目的窗格自身的Editlet。圖29 (a)顯示了只是存在于目的樹上的節(jié)點上發(fā)生時的事件流,而 不具有相應(yīng)的源節(jié)點。如鼠標(biāo)事件和鍵盤事件等由畫布所獲取的事件是 通過目的樹而一皮傳遞到元素模板連接器(ElementTemplateConnector )。 元素模板連接器不具有相應(yīng)的源節(jié)點,因此被傳送的事件并不是對源節(jié) 點的編輯操作。如果所傳送的事件與命令模板(CommandTemplate)中 描述的命令相匹配,則元素模板連接器執(zhí)行相應(yīng)的動作。如果沒有相匹 配的命令,則元素模板連接器忽略所傳送的事件。圖29 ( b )顯示了在目的樹的節(jié)點上發(fā)生事件的情況下的流 (flow ),該目的樹的節(jié)點通過文本連接器(TextOfConnector )與源節(jié) 點相關(guān)聯(lián)。文本連接器從由源DOM樹的XPath規(guī)定的節(jié)點獲取文本節(jié) 點,并將該文本節(jié)點映射為目的DOM樹的節(jié)點。如鼠標(biāo)事件和鍵盤事件 等由畫布所獲取的事件通過目的樹而被傳送到文本連接器。文本連接器將所傳送的事件映射為相應(yīng)源節(jié)點的編輯命令,并將這些命令設(shè)置在隊列(Queue) 1053中。編輯命令是通過"方面"執(zhí)行的DOM的API調(diào)用集 合。當(dāng)執(zhí)行設(shè)置在隊列中的命令時,編輯源節(jié)點。在編輯源節(jié)點時,發(fā) 出變化事件,并且將對源節(jié)點的修改通知到注冊為監(jiān)聽器的文本連接 器。文本連接器重新建立目的樹,從而在相應(yīng)的目的節(jié)點中反映出對源 節(jié)點的修改。此時,如果包含文本連接器的模板包括控制聲明,例如 "for each"和"for loop",則連接器工廠重新評估控制聲明。在重建文本連 接器后,重建目的樹。(實施方式)根據(jù)本實施方式的數(shù)據(jù)處理裝置包括前提技術(shù)中說明的文檔處理裝 置20的功能作為其一部分,并能夠由前提技術(shù)中描述的詞匯連接器簡易 生成表示源樹和目的樹的對應(yīng)關(guān)系的定義文件。首先,在圖30中概述了 根據(jù)本實施例方式的定義文件生成過程,接著在參照圖32及其之后的圖主要詳細描述顯示模式。理裝置獲取將要編輯的XML文檔文件(以下稱作"源文件")、和用來 定義源文件的元素結(jié)構(gòu)的模式文件。這里所說的模式文件是指根據(jù) XML-Schema、 DTD (Document Type Definition,文檔類型定義)等規(guī)布局信息的目標(biāo)文件。目標(biāo)文件可以說是前提技術(shù)中描述的文件化的目 標(biāo)樹。當(dāng)有模式文件時,數(shù)據(jù)處理裝置從模式文件生成綁定文件(Binding File)。綁定文件用于編輯目標(biāo)文件中的顯示布局。如果沒有模式文 件,數(shù)據(jù)處理裝置則從源文件本身抽出元素及其結(jié)構(gòu)來生成綁定文件。 這種情況下,數(shù)據(jù)處理裝置以樹遍歷的方式,從源文件的根元素抽出子 元素,從而抽出元素及其構(gòu)造。此外,可由綁定文件重定義與源文件元 素相關(guān)的規(guī)則。例如,當(dāng)從源文件生成綁定文件時,源文件中的元素A 具有四個子元素B。此時,綁定文件中記載了元素A可具有的子元素B凄t 是4個的規(guī)則。用戶通過綁定文件提供的方法,可重定義該元素A和子元素B相關(guān)的MJ'J,例如,元素A可具有的子元素B的個數(shù)也可以定義為 1~10。即使在從模式文件生成綁定文件的情況下,只要在模式文件中定 義的規(guī)則范圍內(nèi),就可以重定義這種與元素相關(guān)的規(guī)則。由此,綁定文 件還提供與元素相關(guān)的規(guī)則,和用于定義規(guī)則的功能。在下文中,以從 模式文件獲取表示源文件元素結(jié)構(gòu)的模式信息進行說明。用戶可^f吏用it據(jù)處理裝置編輯綁定文件。通過GUI (Graphical User Interface,圖形用戶界面),用戶可在綁定文件中設(shè)定目標(biāo)文件的基本 顯示布局。由此,通過將綁定文件定義的顯示布局信息應(yīng)用到模式信息 的各元素創(chuàng)建布局文件。布局文件是表示模式文件中包括的各元素的具 體顯示布局的HTML文件。此外,布局文件并非局限于由標(biāo)記限定結(jié)構(gòu) 的結(jié)構(gòu)化文檔文件類型,只要是包括布局信息的文件即可,例如表計算 應(yīng)用程序、用于呈現(xiàn)的應(yīng)用程序。用戶通過編輯布局文件,可進一步精 致地編輯顯示布局。在本示例性的實施方式中,使用綁定文件進行目標(biāo) 文件顯示布局的基本設(shè)定,而使用布局文件對目標(biāo)文件顯示布局進行詳 細設(shè)定。成XSLT文件,以決定源文件和目標(biāo)文件之間的數(shù)據(jù)變換形式。最后,根 據(jù)該XSLT文件生成定義文件,該定義文件表示與綁定文件對應(yīng)的源文件 和與布局文件對應(yīng)的目標(biāo)文件之間的對應(yīng)關(guān)系。下面以用戶界面為中心說明它們的處理流程。圖31示出了該實施方式的模式文件。該圖中所示的模式文件描述了 后述的圖32所示源文件應(yīng)遵循的與元素結(jié)構(gòu)相關(guān)的規(guī)則。另外,該模式 文件是按照XML-Schema描述的。在圖31中,例如在從上第3行中對名為 "customerList,,的元素定義其數(shù)據(jù)型是"CustomerListType,,。在下行 中,"custmerListType ,,數(shù)據(jù)型在各自的名稱空間"sfa"中被定義為包 4舌"listID" 、 "totalEstimate" 、 "totalNumber" 、 "customer"四個子 元素。并且,"customer"元素的H據(jù)型是"customerType",還定義了 其內(nèi)容。另外,"customer"元素的個數(shù)定義為0或0個以上。源文件必 須按照模式文件所示規(guī)則描述。由于模式文件是用于規(guī)定源文件中包括 的各元素數(shù)據(jù)型和結(jié)構(gòu)的文件,因此相比于源文件本身,更容易理解與元素間結(jié)構(gòu)相關(guān)的規(guī)則。圖32示出了與圖31的模式文件對應(yīng)的源文件。在該源文件中,作為 "customerList ,,的子元素定義了 " listID " 、" totalNumber "、 "totalEstimate,,以及"customer"。另夕卜,這些元素中包括值。包括三個"customer"元素。圖33示出了根據(jù)圖31的模式文件和圖32的源文件生成的定義文件。圖33顯示了所述定義文件的一部分。在該圖所示的定義文件中,描述了用于將源文件中的各元素(例如,"sfa:customerList/sfa:listlD "和 "sfa:customerList/sfa:totalNumber")變換為XHTML形式的目標(biāo)文件的規(guī)則。該實施方式的數(shù)據(jù)處理裝置可在直觀的用戶界面中簡易生成該定義文件。圖34示出了綁定文件的編輯屏幕。數(shù)據(jù)處理裝置使從模式文件生成 的綁定文件以圖31所示的規(guī)定形式進行圖像顯示。在圖34下部區(qū)域(下 面稱作"屬性區(qū)域")中,模式文件中的各元素被以樹形結(jié)構(gòu)的方式顯 示,并且例如其數(shù)據(jù)型也可編輯地顯示。在屬性區(qū)域中,通過選中接近 于元素名的復(fù)選框能夠展開顯示其子元素。根據(jù)這種方式,即使當(dāng)模式 文件中定義了龐大數(shù)量的元素時,也可以僅顯示要編輯的元素。數(shù)據(jù)處理裝置對各元素設(shè)定獨特的ID。例如,"listID"元素的IDi殳 定為"L1" 。 ID是通過結(jié)合元素名的第一個文字"L"和序列號"1"來 決定。另外,數(shù)據(jù)處理裝置對各元素設(shè)定獨特的樣本值。"listID"元素 的樣本值被設(shè)定為"2005-G30182"。圖34的中央上部設(shè)置了用于定義 這些元素顯示形式的區(qū)域(以下稱作"布局區(qū)域")。用戶在布局區(qū)域 中通過配列各元素的ID,可在布局文件中反映其顯示格式。對布局區(qū)域 和布局文件的關(guān)系將參照圖43或其后的圖在下文中詳述。此外,在圖33 的屬性區(qū)域的中間行中,指定了顯示形式使得以表的形式顯示元素 "customer"。該指定反映在下面的圖35所示的布局文件中。圖35示出了根據(jù)圖34中的綁定文件得到的編輯結(jié)果形成的用于布局 文件的編輯屏幕。根據(jù)圖34中的指定,元素"customer"的子元素以表 形式顯示。例如,模式文件的元素 "customerList/customer/name ,, 與布 局文件中所示表的最左顯示區(qū)域?qū)?yīng)。另外,圖34的布局區(qū)域中的設(shè)定以提出的顯示形式被反映出來。用戶可在該編輯屏幕中以所謂WYSIWYG ( What You See Is What You Get,所見即所得)的方式編輯 布局文件。據(jù)處理裝置根據(jù)這種模式文件的元素和布局文件的元素之間的對應(yīng)關(guān)系 生成XSLT文件,并且生成前提技術(shù)中說明的定義文件。用戶可在布局文件的編輯屏幕中通過拖拉操作改變元素的顯示位 置。如果在已經(jīng)生成定義文件后進行編輯,則用戶通過使用數(shù)據(jù)處理裝 置,必須在定義文件中反映模式文件的元素和布局文件的顯示位置的對 應(yīng)關(guān)系變化。數(shù)據(jù)處理裝置監(jiān)視布局文件中的樣本值和模式文件的元素 之間的對應(yīng)關(guān)系。因此,即使改變了布局文件中的元素位置,也可根據(jù) 樣本值的位置更新定義文件。在此,布局文件中包括的各顯示元素可由 樣本值確定。為此,當(dāng)生成XSLT文件時,重定義對應(yīng)關(guān)系,并將布局文 件中的樣本值作為鍵值使用。圖36是顯示根據(jù)圖35中的編輯結(jié)果的目標(biāo)文件時的屏幕圖。所示出 的目標(biāo)文件是根據(jù)定義文件從源文件生成的。圖35是顯示該目標(biāo)文件的 屏幕。由于源文件的元素"customer" 具有三個,因此根據(jù)圖35的表形 式顯示三個"customer"元素。用戶可通過圖36的屏幕編輯源文件的凝: 據(jù)。該方式在前提技術(shù)中作為詞匯連接進行了說明。圖37示出了綁定文件編輯屏幕的另一實施例。在圖37的屬性區(qū)域的 中段中與圖34不同的是,元素"customer"被指定為以列表形式顯示。圖38示出了根據(jù)圖37的綁定文件的編輯結(jié)果形成的布局文件的編輯 屏幕。根據(jù)圖37中指定的顯示形式,元素"customer"的子元素以列表 形式顯示。由此,布局文件根據(jù)綁定文件中指定的顯示形式發(fā)生了變 化。在圖3 7中,才莫式文件的元素 "customerList/customer/name " 與布局 文件中所示的各列表的最先的元素對應(yīng)。數(shù)據(jù)處理裝置從這種模式文件 的元素和布局文件的元素的對應(yīng)關(guān)系生成前提技術(shù)中說明的定義文件。圖3 9是根據(jù)圖3 8中的編輯結(jié)果顯示目標(biāo)文件時的屏幕圖。由于源文 件的元素"customer"有三個,因此#4居圖37的列表形式,以列表的形 式顯示了三個元素"customer"的內(nèi)容。用戶可通過圖39的屏幕編輯源文件。圖40示出了綁定文件編輯屏幕的另一實施例。在圖40中,由來自用 戶的編輯操作設(shè)定用于計算元素"totalNumber "值的計算式 "count(Nl)"。由于"N1"即是元素"name"的ID,因此元素 "totalNumber"值是源文件中的元素"name"的數(shù)。另外,設(shè)定了用于 計算元素"totalEstimate,,值的計算式"sum(El)"。由于E1即是元素 "estimate "的ID ,因此元素"totalEstimate "值是源文件中的元素 "estimate"值的合計值。由此,在綁定文件的編輯屏幕中,能夠由ID值 而不是長的元素名以簡單的輸入形式處理各元素。圖41示出了根據(jù)圖40中的綁定文件的編輯結(jié)果形成的布局文件的編 輯屏幕。圖41與圖35沒有不同之處。圖42是根據(jù)圖41中的編輯結(jié)果顯示的目標(biāo)文件時的屏幕圖。 "totalNumber"的項目中顯示了 "3",即源文件中的元素"name"的 數(shù)。同樣,"totalEstimate"的項目中顯示了 "8000",即源文件中的元 素"estimate"的值的合計值(1000+3500+3500=8000)。圖43示出了綁定文件的編輯屏幕的另一實施例。在此,使用與圖31 所示的模式文件不同的模式文件為例進行說明。如圖43所示,用戶通過 在布局區(qū)域中排列ID,可設(shè)定布局文件中的基本布局。當(dāng)顯示綁定文件 時,布局區(qū)域中各元素ID以缺省的方式配列。此時的排列也可以是反映 了模式文件中的元素結(jié)構(gòu)的排列。例如,可以通過對具有親-子或兄弟關(guān) 系的元素進行排列以使得它們相互靠近。另外,當(dāng)元素名接近時,例如 "totalNumber" 、 "Number"和"subtotalNumber,,,這些元素也可以 通過排列而相互靠近。與需要初始ID設(shè)定并從最初開始創(chuàng)建排列相比, 本發(fā)明在實現(xiàn)布局創(chuàng)建時節(jié)省了工作。圖44示出了根據(jù)圖43的綁定文件的編輯結(jié)果形成的布局文件的編輯 屏幕。在該布局文件中,根據(jù)圖43的布局區(qū)域的編輯內(nèi)容顯示各元素。 圖45是顯示根據(jù)圖44中的編輯結(jié)果的目標(biāo)文件時的屏幕圖。 圖46也是用于進一步說明定義文件生成過程的示意圖。在圖46中, 通過用戶對綁定文件編輯操作,對綁定文件附加補充信息。補充信息例 如是與元素相關(guān)的規(guī)則定義、重定義等。以該綁定文件為基礎(chǔ)生成定義文件,^f旦是也可以生成XSLT文件來替代定義文件。除此之外,還可以生 成用于實現(xiàn)源文件和目標(biāo)文件之間數(shù)據(jù)映射的對象,例如Java (注冊商 標(biāo))對象》文檔文件也可以是從外部數(shù)據(jù)庫獲取。圖47是用于說明示例性實施方式中的數(shù)據(jù)處理裝置和XML數(shù)據(jù)庫之 間的相互工作的方法示意圖。首先,從數(shù)據(jù)處理裝置根據(jù)X查詢(XQuery)向外部的XML數(shù)據(jù)庫 (以下稱作"XML-DB")發(fā)送數(shù)據(jù)請求(以下簡稱作"查詢")。X 查詢是指為了對XML庫的文檔文件進行各種查詢而開發(fā)的語言。該 XML-DB是與處理X查詢的數(shù)據(jù)庫。XML-DB響應(yīng)于來自數(shù)據(jù)處理裝置 的查詢,將請求的數(shù)據(jù)當(dāng)作XML文檔文件(以下稱作"結(jié)果文件")返 回。該結(jié)果文件中的元素及其結(jié)構(gòu)是由初始的查詢規(guī)定的。通過查詢在 XML-DB中請求出的數(shù)據(jù)成為結(jié)果文件的元素。數(shù)據(jù)處理裝置也可以從 XML-DB發(fā)送的結(jié)果文件抽出元素及其結(jié)構(gòu),并執(zhí)行與圖30等關(guān)聯(lián)說明 的定義文件生成處理。或者根據(jù)通過查詢規(guī)定的元素結(jié)構(gòu)確定用于生成 編輯屏幕的模式,當(dāng)結(jié)果文件中不包括相應(yīng)元素時,也可以從該模式中刪除不需要的項目。以上根據(jù)實施方式對本發(fā)明進行了說明。所述的實施方式僅是示例些變形例也落入本發(fā)明的保護范圍,這對于本領(lǐng)域的技術(shù)人員來說都將 是可以理解的。根據(jù)本發(fā)明,可提高對由標(biāo)記語言構(gòu)造的數(shù)據(jù)進行處理時的用戶方 便性。
權(quán)利要求
1.數(shù)據(jù)處理裝置,包括模式信息獲取單元,獲取指示結(jié)構(gòu)化文檔文件中的元素結(jié)構(gòu)的模式信息,所述結(jié)構(gòu)化文檔文件以預(yù)定的標(biāo)簽集描述;定義數(shù)據(jù)生成單元,根據(jù)所述模式信息生成定義數(shù)據(jù),以顯示用于編輯所述結(jié)構(gòu)化文檔文件的用戶界面屏幕;以及數(shù)據(jù)請求單元,向外部數(shù)據(jù)庫發(fā)送用于請求數(shù)據(jù)的查詢,其中,所述模式信息獲取單元從所述數(shù)據(jù)庫獲取所述查詢指定為獲取對象的數(shù)據(jù),并將其當(dāng)作結(jié)構(gòu)化文檔文件,以及通過參照所述結(jié)構(gòu)化文檔文件確定元素結(jié)構(gòu)從而獲取所述模式信息。
2. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)處理裝置,其中,所述模式信息獲取 單元使用模式文件進一步獲取所述模式信息,在所述模式文件中規(guī)定了 與所述結(jié)構(gòu)化文檔文件的元素結(jié)構(gòu)相關(guān)的規(guī)則。
3. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)處理裝置,其中,所述模式信息獲取 模式信息:鄉(xiāng) A 、"
4. 根據(jù)權(quán)利要求1至3的任意一項所述的數(shù)據(jù)處理裝置,還包括 布局文件生成單元,生成表示所述模式信息中所示各元素的顯示布局的布局文件,所述定義數(shù)據(jù)生成單元根據(jù)所述布局文件,生成用于使所述結(jié)構(gòu)化 文檔文件變換為用于編輯的數(shù)據(jù)形式的定義文件,作為所述定義數(shù)據(jù)。
5. 根據(jù)權(quán)利要求4所述的數(shù)據(jù)處理裝置,還包括 編輯處理單元,顯示用于編輯在所述模式信息中所示元素的顯示布局的編輯屏幕,所述布局文件生成單元根據(jù)用戶對所述編輯屏幕的編輯操作生成所述布局文件。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中,所述編輯處理單元 在屏幕上還顯示所述布局文件,以及根據(jù)用戶對所述布局文件的編輯操 作更新所述布局文件。
7. 根據(jù)權(quán)利要求5或6所述的數(shù)據(jù)處理裝置,其中,所述編輯處理 單元在所述編輯屏幕中初始化并顯示所述模式信息中包括的各元素的顯 示布局。
8. 根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理裝置,其中,所述編輯處理單元 根據(jù)所述模式信息中所示的元素結(jié)構(gòu),初始化各元素的顯示布局。
9. 根據(jù)權(quán)利要求5至8的任意一項所述的數(shù)據(jù)處理裝置,其中,所 述編輯處理單元在所述編輯屏幕上顯示用于選擇所述布局文件的顯示形 式的輸入界面,所述布局文件生成單元根據(jù)選擇的顯示形式生成布局文件。
全文摘要
簡易地設(shè)計用于編輯結(jié)構(gòu)化文檔文件的用戶界面屏幕。從定義源文件元素結(jié)構(gòu)的模式文件生成綁定文件。通過綁定文件設(shè)計用于編輯源文件的顯示布局,其結(jié)果作為布局文件保存。用戶還可以編輯布局文件。從布局文件和綁定文件生成XSLT文件,從XSLT文件生成定義文件以生成用于編輯源文件的用戶界面屏幕。
文檔編號G06F17/21GK101278256SQ200680036930
公開日2008年10月1日 申請日期2006年10月13日 優(yōu)先權(quán)日2005年10月14日
發(fā)明者松家勝弘 申請人:佳思騰軟件公司