專利名稱:數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于編輯數(shù)據(jù)的技術(shù),特別涉及用于由多個(gè)用戶同步編 輯數(shù)據(jù)的技術(shù)。
背景技術(shù):
近年來(lái),伴隨著計(jì)算機(jī)的普及和網(wǎng)絡(luò)技術(shù)的進(jìn)步,通過(guò)網(wǎng)絡(luò)的電子 信息交換變得頻繁。由此,以前基于紙完成的大多數(shù)事務(wù)處理逐漸替換 為基于網(wǎng)絡(luò)的處理。在企業(yè)中,將個(gè)人知識(shí)和信息在整個(gè)組織中使用的、所謂的知識(shí)管 理也變成重要的經(jīng)營(yíng)手段。在多數(shù)企業(yè)中,公司具有內(nèi)部數(shù)據(jù)庫(kù)系統(tǒng), 將來(lái)自員工的信息在轉(zhuǎn)換為電子文件后蓄積。另一方面,員工也通過(guò)網(wǎng) 絡(luò)訪問(wèn)蓄積在該公司內(nèi)部數(shù)據(jù)庫(kù)中的文件。由此,在整體上提高組織的 業(yè)務(wù)效率。在近年中,蓄積在這種數(shù)據(jù)庫(kù)中的文件使用被稱作XML (extensible Markup Language:擴(kuò)展標(biāo)記語(yǔ)言)的語(yǔ)言制作的例子也逐 漸變多。XML是可定義文檔文件中包括的數(shù)據(jù)層次結(jié)構(gòu)的語(yǔ)言。由XML 制作的文檔文件,通過(guò)另外提供的顯示布局文件以網(wǎng)頁(yè)形式顯示。即 XML能夠?qū)?shù)據(jù)結(jié)構(gòu)及其顯示布局作為不同的內(nèi)容處理。XML文檔文件 是根據(jù)由文檔型定義等定義的詞匯(標(biāo)簽集)制作。XML作為適合通過(guò)網(wǎng)路等與他人共享數(shù)據(jù)的形式而備受關(guān)注。近年 來(lái),開發(fā)有用于制作、顯示、編輯XML文檔文件的各種應(yīng)用軟件(例如 參照專利文獻(xiàn)l)。專利文獻(xiàn)l:特開2001-2卯804號(hào)^^才艮發(fā)明內(nèi)容發(fā)明要解決的課題由標(biāo)簽集定義數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化文檔文件,如XML文檔文件,與數(shù) 據(jù)庫(kù)的親和性高。另外,當(dāng)將結(jié)構(gòu)化文檔中包括的數(shù)據(jù)對(duì)象化時(shí),可進(jìn) 行更有效的數(shù)據(jù)訪問(wèn)。對(duì)象不僅包括在將數(shù)據(jù)進(jìn)行結(jié)構(gòu)化后作為成員變 量的數(shù)據(jù),而且還包括作為訪問(wèn)成員變量的接口的成員函數(shù)。訪問(wèn)成員 變量的方法是由成員函數(shù)嚴(yán)格規(guī)定,因此容易保護(hù)數(shù)據(jù),并且能夠進(jìn)行 有效的數(shù)據(jù)訪問(wèn)。對(duì)象也容易適應(yīng)計(jì)算機(jī)程序進(jìn)行的處理。但是,與源數(shù)據(jù)的數(shù)據(jù)量相比,對(duì)象的數(shù)據(jù)量變得相當(dāng)大。特別 是,當(dāng)從大的源數(shù)據(jù)生成的對(duì)象部署在存儲(chǔ)器中時(shí),存儲(chǔ)器的存儲(chǔ)容量 被壓縮,反過(guò)來(lái)處理效率變得惡化。本發(fā)明是鑒于這種狀況而做出的,其主要目的在于提供一種用于多 個(gè)用戶有效地操作從源數(shù)據(jù)生成的對(duì)象的技術(shù)。解決課題的方案本發(fā)明一個(gè)實(shí)施方式的數(shù)據(jù)管理裝置是通過(guò)網(wǎng)絡(luò)與多個(gè)客戶終端連 接的裝置。該裝置包括源對(duì)象生成單元,生成用于操作要被編輯的一 組元素?cái)?shù)據(jù)的源對(duì)象,作為包括一組結(jié)構(gòu)化的元素?cái)?shù)據(jù)和用于訪問(wèn)各元 素?cái)?shù)據(jù)的成員函數(shù)的對(duì)象;部分對(duì)象生成單元,從所述源對(duì)象生成多個(gè) 部分對(duì)象,作為與所述源對(duì)象中包括的所述一組元素?cái)?shù)據(jù)的一部分對(duì)應(yīng) 的對(duì)象;訪問(wèn)請(qǐng)求4妻收單元,從客戶終端接收訪問(wèn)請(qǐng)求信息,該訪問(wèn)請(qǐng) 求信息用于請(qǐng)求在所述多個(gè)部分對(duì)象中指定的部分對(duì)象的編輯權(quán)或者閱 覽權(quán);訪問(wèn)權(quán)管理單元,根據(jù)從多個(gè)客戶終端接收的訪問(wèn)請(qǐng)求信息,向 各客戶終端分配每個(gè)所述部分對(duì)象的編輯權(quán)和閱覽權(quán);部分對(duì)象發(fā)送單 元,向請(qǐng)求對(duì)所述訪問(wèn)請(qǐng)求信息指定的部分對(duì)象進(jìn)行編輯或閱覽的客戶 終端發(fā)送該部分對(duì)象的數(shù)據(jù),以使得所述客戶終端本地保存所述的數(shù) 據(jù);編輯信息接收單元,當(dāng)在獲取了所述部分對(duì)象的編輯權(quán)的客戶終端 中編輯本地保持的該部分對(duì)象時(shí),從獲取所述述編輯權(quán)的客戶終端接收 表示所述部分對(duì)象的編輯內(nèi)容的編輯信息;源對(duì)象更新單元,按照接收 的所述編輯信息中所示的編輯內(nèi)容,更新所述源對(duì)象的相關(guān)部分;以及 編輯信息發(fā)送單元,將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到獲取了所述閱覽權(quán)的客戶終端,從而使得所述編輯內(nèi)容反映在所述客戶 終端本地保持的部分對(duì)象的相關(guān)部分中。部分對(duì)象還可以是包括在源對(duì)象中包括的元素?cái)?shù)據(jù)的一部分,和用 于訪問(wèn)這些元素?cái)?shù)據(jù)的成員函數(shù)的對(duì)象。編輯信息例如可以是顯示通過(guò) 成員函數(shù)訪問(wèn)部分對(duì)象的訪問(wèn)操作以及訪問(wèn)內(nèi)容的信息?;蛘撸庉嬓?息也可以是由編輯操作更新后的部分對(duì)象數(shù)據(jù)本身。編輯信息是至少用 于將部分對(duì)象的更新反映在源對(duì)象所必須的信息。對(duì)于發(fā)送到客戶終端 的編輯信息也是如此。源對(duì)象生成單元還可以從由多個(gè)標(biāo)簽確定的元素?cái)?shù)據(jù)的結(jié)構(gòu)化文檔 文件生成源對(duì)象。源對(duì)象生成單元參照用于將預(yù)定數(shù)據(jù)庫(kù)中包括的多個(gè)元素?cái)?shù)據(jù)進(jìn)行 結(jié)構(gòu)化的預(yù)定結(jié)構(gòu)定義信息,將多個(gè)元素?cái)?shù)據(jù)中要被編輯的一組元素?cái)?shù) 據(jù)進(jìn)行結(jié)構(gòu)化,并從結(jié)構(gòu)化的一組元素?cái)?shù)據(jù)生成源對(duì)象。該裝置也可以進(jìn)一步具備結(jié)構(gòu)化的管理信息保持單元,保持表示 源對(duì)象中包括的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu)的結(jié)構(gòu)管理信息;結(jié)構(gòu)化的管 理信息發(fā)送單元,將結(jié)構(gòu)化的管理信息發(fā)送到客戶終端;結(jié)構(gòu)化的管理 信息更新單元,根據(jù)源對(duì)象的更新來(lái)更新結(jié)構(gòu)化的管理信息。當(dāng)結(jié)構(gòu)化的管理信息所示的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu)變化時(shí),結(jié)構(gòu) 化的管理信息接收單元可以將更新后的結(jié)構(gòu)管理信息重新發(fā)送到客戶終 端。本發(fā)明另一實(shí)施方式的數(shù)據(jù)編輯裝置與管理源對(duì)象的外部數(shù)據(jù)管理 裝置通過(guò)網(wǎng)絡(luò)連接。所述的數(shù)據(jù)編輯裝置包括訪問(wèn)請(qǐng)求信息發(fā)送單 元,將用于請(qǐng)求編輯權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置,所述 訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在所述數(shù)據(jù) 管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;部分對(duì)象接收單 元,從所述數(shù)據(jù)管理裝置接收被指定的部分對(duì)象的數(shù)據(jù);部分對(duì)象保持 單元,保持已接收的所述部分對(duì)象的數(shù)據(jù);編輯輸入單元,接收用戶對(duì) 保持的部分對(duì)象的編輯搡作;部分對(duì)象更新單元,根據(jù)對(duì)所述部分對(duì)象 的編輯操作更新所述部分對(duì)象;以及編輯信息發(fā)送單元,將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到所述數(shù)據(jù)管理裝置,從而使得所述編輯內(nèi)容反映在所述數(shù)據(jù)管理裝置的源對(duì)象中該裝置也可以進(jìn)一步包括結(jié)構(gòu)化的管理信息接收單元,從所述數(shù) 據(jù)管理裝置接收結(jié)構(gòu)化的管理信息,該結(jié)構(gòu)化的管理信息表示源對(duì)象中 包括的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu);結(jié)構(gòu)化的管理信息顯示單元,顯示所 述結(jié)構(gòu)化的管理信息;編輯位置指定單元,接受用戶對(duì)所顯示的結(jié)構(gòu)化 的管理信息希望編輯的數(shù)據(jù)位置的輸入。所述訪問(wèn)請(qǐng)求信息發(fā)送單元參 照所述結(jié)構(gòu)化的管理信息識(shí)別與所指定的位置對(duì)應(yīng)的部分對(duì)象,并發(fā)送 用于請(qǐng)求所識(shí)別的部分對(duì)象的編輯權(quán)的訪問(wèn)請(qǐng)求信息。訪問(wèn)請(qǐng)求信息發(fā) 送單元也可以參照結(jié)構(gòu)管理信息確定與指定位置對(duì)應(yīng)的部分對(duì)象,發(fā)送 用于請(qǐng)求已確定的部分對(duì)象的編輯權(quán)的訪問(wèn)請(qǐng)求信息。源對(duì)象也可以由多個(gè)數(shù)據(jù)管理裝置分割為多個(gè)來(lái)保持,并且結(jié)構(gòu)化 的管理信息還表示源對(duì)象中包括的各元素?cái)?shù)據(jù)的實(shí)體位于哪個(gè)數(shù)據(jù)管理 裝置中。而且,該裝置的所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理 信息識(shí)別保持被指定為要被編輯的部分對(duì)象的數(shù)據(jù)管理裝置,并向所識(shí) 別出的數(shù)據(jù)管理裝置發(fā)送訪問(wèn)請(qǐng)求信息。該裝置的部分對(duì)象保持單元可保持多個(gè)部分對(duì)象。部分對(duì)象保持單 元也可以包括第1保持單元,保持要被閱覽的部分對(duì)象;以及第2保持 單元,當(dāng)部分對(duì)象未被閱覽時(shí)保存在所述第2保持單元中。當(dāng)指定為要 被閱覽的部分對(duì)象保持在所述第2保持單元中時(shí),所述訪問(wèn)請(qǐng)求信息發(fā) 送單元將該部分對(duì)象從所述第2保持單元加載到所述第1保持單元中,而 不發(fā)送訪問(wèn)請(qǐng)求信息。本發(fā)明的另一實(shí)施方式的數(shù)據(jù)閱覽裝置也與管理源對(duì)象的外部數(shù)據(jù) 管理裝置通過(guò)網(wǎng)絡(luò)連接。該裝置包括訪問(wèn)請(qǐng)求信息發(fā)送單元,將用于 請(qǐng)求閱覽權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置,所述訪問(wèn)請(qǐng)求信 息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在所述數(shù)據(jù)管理裝置生 成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;部分對(duì)象接收單元,從所述 數(shù)據(jù)管理裝置接收所指定的部分對(duì)象的數(shù)據(jù);部分對(duì)象保持單元,保持 已接收的部分對(duì)象的數(shù)據(jù);編輯信息接收單元,當(dāng)與所保持的部分對(duì)象 相當(dāng)?shù)摹⒃磳?duì)象的一部分在所述數(shù)據(jù)管理裝置中更新時(shí),接收從所述數(shù)據(jù)管理裝置發(fā)送的編輯信息以表示所更新的內(nèi)容;以及部分對(duì)象更新單 元,根據(jù)所述編輯信息更新所述保持的部分對(duì)象。該裝置也可以進(jìn)一步包括結(jié)構(gòu)化的管理信息接收單元,從所述數(shù) 據(jù)管理裝置接收結(jié)構(gòu)化的管理信息,該結(jié)構(gòu)化的管理信息表示源對(duì)象中 包括的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu);結(jié)構(gòu)化的管理信息顯示單元,顯示所 述結(jié)構(gòu)化的管理信息;以及閱覽位置指定單元,從用戶接收輸入以指定 所顯示的結(jié)構(gòu)化的管理信息的所述用戶期望閱覽的數(shù)據(jù)位置。所述訪問(wèn) 請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信息識(shí)別與所指定數(shù)據(jù)位置對(duì) 應(yīng)的部分對(duì)象,以及發(fā)送用于請(qǐng)求所識(shí)別的部分對(duì)象的閱覽權(quán)的訪問(wèn)請(qǐng) 求信息。源對(duì)象也可以由多個(gè)數(shù)據(jù)管理裝置分割為多個(gè)來(lái)保持,并且結(jié)構(gòu)化 的管理信息還表示源對(duì)象中包括的各元素?cái)?shù)據(jù)的實(shí)體位于哪個(gè)數(shù)據(jù)管理 裝置中。該裝置的所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信 息識(shí)別保持有被指定為要被閱覽的部分對(duì)象的數(shù)據(jù)管理裝置,并向所識(shí) 別的數(shù)據(jù)管理裝置發(fā)送訪問(wèn)請(qǐng)求信息。應(yīng)該認(rèn)識(shí)到,以上結(jié)構(gòu)元素的任意組合,以及本發(fā)明的表現(xiàn)在方 法、裝置、系統(tǒng)、記錄介質(zhì)、計(jì)算機(jī)程序等之間變換的內(nèi)容作為本發(fā)明 方式也是有效的。發(fā)明的效果根據(jù)本發(fā)明,多個(gè)用戶容易有效地操作從源數(shù)據(jù)生成的對(duì)象。
圖l是與前提技術(shù)相關(guān)的文檔處理裝置的構(gòu)成示意圖; 圖2示出了成為處理對(duì)象的XML文檔的實(shí)施例;圖3示例性地示出了將圖2所示的XML文檔映射為由HTML描述的表;圖4(a)示出了用于將圖2所示的XML文檔映射為圖3所示的表的定義 文件的實(shí)施例;圖4(b)示出了用于將圖2所示的XML文檔映射為圖3所示的表的定義文件的實(shí)施例;圖5示出了通過(guò)圖3所示的對(duì)應(yīng)關(guān)系將圖2所示的成績(jī)管理詞描述的 XML文檔映射為HTML并顯示的屏幕的實(shí)施例;圖6示出了為使用戶創(chuàng)建定義文件而定義文件生成單元提供給用戶 的圖形用戶界面的實(shí)施例;圖7示出了利用定義文件生成單元?jiǎng)?chuàng)建的屏幕布局的另一個(gè)實(shí)施例;圖8示出了文檔處理裝置提供的XML文檔的編輯屏幕的實(shí)施例;圖9示出了利用文檔處理裝置編輯的XML文檔的另一實(shí)施例;圖10示出了顯示圖9所示文檔的屏幕的實(shí)施例;圖ll (a)示出了文檔處理系統(tǒng)的基本構(gòu)成;圖ll (b)示出了文檔處理系統(tǒng)的總體框圖;圖ll (c)示出了文檔處理系統(tǒng)的總體框圖;圖12示出了文檔管理單元的細(xì)節(jié);圖13示出了詞匯連接子系統(tǒng)的細(xì)節(jié);圖14示出了程序調(diào)用單元與其它組件之間的關(guān)系的細(xì)節(jié);圖15示出了由程序調(diào)用單元載入的應(yīng)用程序服務(wù)的結(jié)構(gòu)細(xì)節(jié);圖16示出了核心組件的細(xì)節(jié);圖17示出了文檔管理單元的細(xì)節(jié);圖18示出了撤消框架和撤消命令的細(xì)節(jié);圖19示出了在文檔處理系統(tǒng)中載入文檔的操作;圖20示出了文檔及其表現(xiàn)的實(shí)施例;圖21示出了模型和控制器的關(guān)系;圖22示出了插件子系統(tǒng)、詞匯連接與連接器的細(xì)節(jié);圖23示出了VCD文件的例子;圖24示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖25示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖26示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖27示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作; 圖28示出了用于將復(fù)合文檔載入到文檔處理系統(tǒng)中的操作;圖29示出了命令流;圖30是用于說(shuō)明本實(shí)施例中的數(shù)據(jù)處理內(nèi)容的示意圖; 圖31是用于說(shuō)明對(duì)某部分對(duì)象提出多個(gè)訪問(wèn)要求時(shí)的控制方法的序 列圖;圖32是數(shù)據(jù)管理裝置的功能框圖; 圖33是數(shù)據(jù)處理終端的功能框圖;圖34是用于說(shuō)明從源對(duì)象生成部分對(duì)象的過(guò)程的示意圖;圖35是結(jié)構(gòu)化的管理文件的數(shù)據(jù)結(jié)構(gòu)圖;圖36是在數(shù)據(jù)處理終端中選擇要訪問(wèn)的數(shù)據(jù)時(shí)的屏幕圖。符號(hào)說(shuō)明20文檔處理裝置 22主控單元24編輯單元30 DOM單元 32 DOM提供單元34 DOM生成單元36輸出單元 40CSS單元42 CSS分析單元44CSS提供單元 46呈現(xiàn)單元50 HTML單元52、 62控制單元 54、 64編輯單元56、 66顯示單元60 SVG單元80 VC單元82映射單元84定義文件獲取單元86定義文件生成單元3100文檔管理裝置3110用戶4妻口處理單元3120通信單元3130數(shù)據(jù)處理單元3140數(shù)據(jù)保存單元3142訪問(wèn)請(qǐng)求接收單元3144部分對(duì)象發(fā)送單元3146結(jié)構(gòu)化的管理文件發(fā)送單元3148編輯信息接收單元3150編輯信息發(fā)送單元3152對(duì)象處理單元3154訪問(wèn)4又管理單元3156源對(duì)象生成單元3158源對(duì)象更新單元3160部分對(duì)象生成單元3162結(jié)構(gòu)化的管理文件處理單元3166源數(shù)據(jù)保持單元3168對(duì)象保持單元3170訪問(wèn)權(quán)信息保持單元3172結(jié)構(gòu)化的管理文件保持單元3200數(shù)據(jù)處理終端3210用戶4矣口處理單元3220通信單元3230數(shù)據(jù)處理單元3240數(shù)據(jù)保存單元3242訪問(wèn)請(qǐng)求發(fā)送單元3246結(jié)構(gòu)化的管理文件接收單元3250編輯信息接收單元3254訪問(wèn)權(quán)管理單元3258第l保持單元3262結(jié)構(gòu)化的管理文件保持單元3244部分對(duì)象接收單元 3248編輯信息發(fā)送單元 3252部分對(duì)象更新單元 3256部分對(duì)象保持單元 3260第2保持單元3264訪問(wèn)標(biāo)記保持單元具體實(shí)施方式
(前提技術(shù))圖l示出了與前提技術(shù)相關(guān)的文檔處理裝置20的結(jié)構(gòu)。文檔處理裝 置20對(duì)結(jié)構(gòu)化的文檔進(jìn)行處理,該文檔中的數(shù)據(jù)被分為具有分級(jí)結(jié)構(gòu)的 多個(gè)構(gòu)成元素。在本前提技術(shù)中以對(duì)作為一種結(jié)構(gòu)化文檔的XML文檔進(jìn) 行處理為例來(lái)說(shuō)明。文檔處理裝置20包括主控單元22、編輯單元24、 DOM (文檔對(duì)象模塊)單元30、 CSS (層疊樣式表)單元40、 HTML (超文本標(biāo)記語(yǔ)言)單元50、 SVG (可縮放矢量圖形)單元60以及作為 變換單元一個(gè)示例的VC (詞匯連接)單元80。在石更件組件方面,這些單 元結(jié)構(gòu)可由任意計(jì)算機(jī)的CPU、存儲(chǔ)器、載入存儲(chǔ)器中的程序等來(lái)實(shí) 現(xiàn)。這里,描述了由它們的協(xié)作而實(shí)現(xiàn)的功能模塊。因此,本領(lǐng)域技術(shù) 人員能夠理解,這些功能模塊可僅通過(guò)硬件的方式、僅通過(guò)軟件的方式 或通過(guò)二者相結(jié)合的方式等以多種形式來(lái)實(shí)現(xiàn)。主控單元22提供插件的載入或提供執(zhí)行命令的框架。編輯單元24 提供了用于編輯XML文檔的框架。文檔處理裝置20中的文檔的顯示和 編輯功能是通過(guò)插件來(lái)實(shí)現(xiàn)的,而必要的插件是根據(jù)所處理的文檔類 型、通過(guò)主控單元22或編輯單元24來(lái)栽入的。主控單元22或編輯單 元24通過(guò)參考作為處理對(duì)象的XML文檔的命名空間,來(lái)確定哪個(gè)或哪 些詞匯描述了待處理的XML文檔的內(nèi)容,并且載入與所確定的詞匯對(duì) 應(yīng)的用于顯示和編輯的插件,從而執(zhí)行顯示和編輯。例如,在文檔處理 裝置20中,對(duì)HTML文檔進(jìn)行顯示和編輯的HTML單元50、以及對(duì) SVG文檔進(jìn)4于顯示和編輯的SVG單元60等^皮實(shí)現(xiàn)為用于各詞匯(標(biāo)簽集)的顯示系統(tǒng)和編輯系統(tǒng)的插件,以分別在對(duì)HTML文檔進(jìn)行編輯時(shí) 載入HTML單元50,和在對(duì)SVG文檔進(jìn)行編輯時(shí)載入SVG單元60。 如以下將描述的那樣,在要對(duì)既包括HTML又包括SVG組件的復(fù)合文 檔進(jìn)行處理時(shí),既載入HTML單元50又載入SVG單元60。通過(guò)實(shí)現(xiàn)以上結(jié)構(gòu),由于用戶能夠僅選擇并安裝必要的功能,然后 可以增加或刪除適當(dāng)?shù)墓δ?,因此,能夠有效利用記錄媒介的存?chǔ)區(qū)域 (例如硬盤),并且在執(zhí)行程序的時(shí)候還能夠避免存儲(chǔ)器的浪費(fèi)。此 外,由于這一結(jié)構(gòu)有利于性能擴(kuò)展,因此開發(fā)者自己能夠以插件的形式 處理新的詞匯,因而能夠促進(jìn)開發(fā)過(guò)程;用戶也能夠通過(guò)增加插件而以 較低成本容易地增加功能。編輯單元24通過(guò)用戶接口從用戶處接收編輯指令的事件。編輯單元 24將該事件通知適當(dāng)?shù)牟寮?,并?duì)包括事件的重做(redo)以及撤消 (undo)等的處理進(jìn)行控制。DOM單元30包括DOM提供單元32、 DOM生成單元34以及輸出 單元36。 DOM單元30實(shí)現(xiàn)了與文檔對(duì)象模型(DOM)相符的功能, 所述文檔對(duì)象模型被定義以提供用于處理XML文檔形式的數(shù)據(jù)的訪問(wèn) 方法。DOM提供單元32是滿足由編輯單元24定義的接口的DOM的實(shí) 現(xiàn)。DOM生成單元34從XML文檔創(chuàng)建DOM樹。如以下將描述的那 樣,當(dāng)通過(guò)VC單元80將待處理的XML文檔映射為其它詞匯時(shí),創(chuàng)建 與映射源中的XML文檔相對(duì)應(yīng)的源樹,以及與映射目的中的XML文檔 相對(duì)應(yīng)的目的樹。例如,在編輯結(jié)束時(shí),輸出單元36輸出作為XML文 檔的DOM樹。CSS單元40提供與CSS相符的顯示功能,并包括CSS分析單元42、 CSS提供單元44以及呈現(xiàn)單元46。 CSS分析單元42具有用于分析CSS語(yǔ)法 的分析功能。CSS提供單元44是CSS對(duì)象的實(shí)現(xiàn),并對(duì)DOM樹執(zhí)行CSS 的層疊處理。呈現(xiàn)單元46是CSS的呈現(xiàn)引擎,并用來(lái)顯示利用CSS設(shè)置 的以諸如HTML等的詞匯描述的文檔。HTML單元50對(duì)以HTML描述的文檔進(jìn)行顯示或編輯。SVG單元 60對(duì)以SVG描述的文檔進(jìn)4亍顯示或編輯。這些顯示/編輯系統(tǒng)以插件的 形式實(shí)現(xiàn),各個(gè)系統(tǒng)包括對(duì)文檔進(jìn)行顯示的顯示單元(在本文中還稱為"畫布(Canvas) ) "56、 66,發(fā)送和接收包括編輯命令的事件的控制單 元(在本文中還稱為"Editlet") 52、 62,以及在接收到編輯命令時(shí)對(duì) DOM進(jìn)行編輯的編輯單元(在本文中還稱為"區(qū)(zone) ) "54、 64。在 控制單元52或62從外部源接收到用于DOM樹的編輯命令時(shí),編輯單 元54或64 <務(wù)改DOM樹,而顯示單元56或66更新顯示。這些單元具 有與被稱作MVC (Model-View-Controllers,模型-視圖-控制器)的框 架相類似的結(jié)構(gòu),通常,顯示單元56及66對(duì)應(yīng)于 見圖(View)",控 制單元52及62對(duì)應(yīng)于"控制器(Controller),,,而編輯單元54及64和 DOM實(shí)體對(duì)應(yīng)于"模型(Model)"。在本前提技術(shù)的文檔處理裝置20 中,不僅能夠以樹型視圖顯示格式來(lái)編輯XML文檔,而且能夠根據(jù)相 應(yīng)的詞匯來(lái)完成編輯。例如,HTML單元50提供能夠用來(lái)以一種類似 于Word處理器的方法對(duì)HTML文檔進(jìn)行編輯的用戶界面,而SVG單 元60也提供了能夠用于以一種類似于圖像繪制工具的方法對(duì)SVG文檔 進(jìn)行編輯的用戶界面。
VC單元80包括映射單元82、定義文件獲取單元84以及定義文件 生成單元86。 VC單元80能夠?qū)⒁阅吃~匯描述的文檔映射為另一給定詞 匯,從而提供了一種能夠通過(guò)與被映射的詞匯相對(duì)應(yīng)的顯示或編輯插件 來(lái)顯示或編輯文檔的框架。在本前提技術(shù)中,該功能被稱為VC
(Vocabulary Connection,詞匯連接)。定義文件獲取單元84獲取描述 了映射定義的腳本文件。該定義文件逐個(gè)節(jié)點(diǎn)地描述了節(jié)點(diǎn)間的對(duì)應(yīng)
(連接)。此時(shí),可規(guī)定各節(jié)點(diǎn)的元素值或?qū)傩灾凳欠窨梢跃庉?。也?描述使用了節(jié)點(diǎn)的元素值或?qū)傩灾档倪\(yùn)算表達(dá)式。這些功能將在稍后進(jìn) 行描述。映射單元82使得DOM生成單元34通過(guò)參考VC定義文件獲 取單元84已經(jīng)獲取的腳本文件來(lái)創(chuàng)建目的樹,以管理源樹與目的樹之 間的對(duì)應(yīng)關(guān)系。定義文件生成單元86為用戶提供圖形用戶界面,以創(chuàng) 建定義文件。
VC單元80對(duì)源樹與目的樹之間的連接進(jìn)行監(jiān)控。當(dāng)VC單元80通過(guò) 由負(fù)責(zé)顯示的插件提供的用戶接口從用戶處接收編輯指令時(shí),它首先修 改源樹的相關(guān)節(jié)點(diǎn)。因此,DOM單元30將發(fā)出指示源樹已經(jīng)被修改的變 化事件。然后,VC單元80接收該變化事件,并修改目的樹中對(duì)應(yīng)于被修改的節(jié)點(diǎn)的節(jié)點(diǎn),以使得目的樹與源樹的修改同步。當(dāng)顯示/編輯目的樹
的插件(例如HTML單元50)接收了指示目的樹已經(jīng)被修改的變化事件 時(shí),該插件通過(guò)參考被修改的目的樹而對(duì)顯示進(jìn)行更新。通過(guò)執(zhí)行將詞 匯轉(zhuǎn)換為另 一主要詞匯的上述結(jié)構(gòu),即使是以少數(shù)用戶使用的局部詞匯 來(lái)描述文檔,也能夠顯示該文檔,并為其提供編輯環(huán)境。
以下對(duì)文檔處理裝置20顯示或編輯文檔的操作進(jìn)行描述。當(dāng)文檔 處理裝置20載入待處理的文檔時(shí),DOM生成單元34從XML文檔創(chuàng)建 DOM樹。主控單元22或編輯單元24通過(guò)參考纟寺處理的XML文檔的命 名空間來(lái)對(duì)描述XML文檔的詞匯進(jìn)行判別。如果與詞匯相對(duì)應(yīng)的插件 安裝在文檔處理裝置20中,則該插件被載入以顯示/編輯文檔。另一方 面,如果插件并未安裝在其中,則進(jìn)行檢查以確認(rèn)是否存在映射的定義 文件。如果存在定義文件,則定義文件獲取單元84獲取該定義文件, 并根據(jù)定義創(chuàng)建目的樹,以使得能夠通過(guò)與要被映射的詞匯相對(duì)應(yīng)的插 件來(lái)顯示/編輯文檔。如果該文檔是包含多個(gè)詞匯的復(fù)合文檔,如后面所
不存在定義文件,則顯示文檔的源或樹型結(jié)構(gòu),并在顯示屏中進(jìn)行編 輯。
圖2示出了作為處理對(duì)象的XML文檔的例子。該XML文檔用于管理 學(xué)生的成績(jī)數(shù)據(jù)。作為XML文檔的上部節(jié)點(diǎn)的構(gòu)成元素"成績(jī)"包括在 "成績(jī)"下方為各個(gè)學(xué)生設(shè)置的多個(gè)元素"生徒"。構(gòu)成元素"生徒"具有屬 性值"名前",以及子元素"國(guó)語(yǔ),,(日語(yǔ))、"數(shù)學(xué)"、"理科,,以及"社會(huì),, (社會(huì)科學(xué))。屬性值"名前"存儲(chǔ)學(xué)生的姓名。構(gòu)成元素"國(guó)語(yǔ)"、"數(shù) 學(xué)"、"理科"和"社會(huì)"分別存儲(chǔ)日語(yǔ)、數(shù)學(xué)、自然科學(xué)和社會(huì)科學(xué)的成 績(jī)。例如,姓名為"A"的學(xué)生的成績(jī)是日語(yǔ)為"90"、數(shù)學(xué)為"50"、自然 科學(xué)為"75"以及社會(huì)科學(xué)為"60"。下文中,該文檔中使用的詞匯(標(biāo)簽 集)被稱作"成績(jī)管理詞匯"。
由于本前提技術(shù)的文檔處理裝置20不具有與成績(jī)管理詞匯的顯示和/ 或編輯相對(duì)應(yīng)的插件,因此,將使用以上描述的VC功能,而不使用源顯 示和樹顯示的其它顯示方法來(lái)顯示該文檔。也就是說(shuō),通過(guò)準(zhǔn)備定義文 件,使得成績(jī)管理詞匯可映射為已具有插件的另一詞匯,例如HTML或SVG。下面將要進(jìn)行的說(shuō)明是在假設(shè)已經(jīng)具備了定義文件的情況下進(jìn)行 的,不過(guò)對(duì)于用戶本身用以創(chuàng)建定義文件所必需的用戶界面將在后面描 述。圖3示出了將圖2中所示的XML文檔映射為以HTML描述的表的例 子。在圖3所示的例子中,使以成績(jī)管理詞匯描述的"生徒"節(jié)點(diǎn)與以 HTML描述的表("TABLE"節(jié)點(diǎn))的行("TR"節(jié)點(diǎn))相對(duì)應(yīng)。各行的第 一列與屬性值"名前"相對(duì)應(yīng),第二列與"國(guó)語(yǔ)"節(jié)點(diǎn)的元素值相對(duì)應(yīng),第 三列與"數(shù)學(xué),,節(jié)點(diǎn)的元素值相對(duì)應(yīng),第四列與"理科,,節(jié)點(diǎn)的元素值相對(duì) 應(yīng),而第五列與"社會(huì)"節(jié)點(diǎn)的元素值相對(duì)應(yīng)。因此,圖2所示的XML文 檔能以HTML的列表格式來(lái)顯示。此外,這些屬性值和元素值被指定為 能夠編輯,以使得用戶能夠使用HTML單元50的編輯功能在利用HTML 顯示的屏幕上對(duì)這些值進(jìn)行編輯。在第六列中,指定了用來(lái)計(jì)算日語(yǔ)、 數(shù)學(xué)、自然科學(xué)以及社會(huì)科學(xué)的分?jǐn)?shù)的加權(quán)平均的運(yùn)算表達(dá)式,并顯示 每個(gè)學(xué)生的分?jǐn)?shù)的平均值。以這種方式,通過(guò)在定義文件中指定運(yùn)算表 達(dá)式來(lái)完成更靈活的顯示,從而提高用戶在進(jìn)行編輯時(shí)的便利性。另 外,將對(duì)第六列的編輯指定為不允許,以使得不能單獨(dú)對(duì)平均值本身進(jìn) 行編輯。因此,在映射定義中,能夠指定可編輯或不能編輯,以避免用 戶可能的錯(cuò)誤操作。圖4(a)和4(b)表示定義文件的例子,以將圖2所示的XML文檔映射為 圖3所示的表。該定義文件通過(guò)被定義用于和定義文件一起使用的腳本 語(yǔ)言來(lái)描述。在圖4(a)和4(b)所示的例子中,"生徒O追加"和"生徒O削 除"被定義為命令,并分別涉及將節(jié)點(diǎn)"生徒"插入源樹中的操作以及將節(jié) 點(diǎn)"生徒"從源樹中刪除的操作。該定義文件以模板的形式描述了諸如"名 前"和"國(guó)語(yǔ)"的標(biāo)題顯示于表的第一行中,而節(jié)點(diǎn)"生徒"的內(nèi)容顯示于第 二行及其隨后的行中。在顯示節(jié)點(diǎn)"生徒"內(nèi)容的模板中,包含"text-of, 的項(xiàng)表示允許進(jìn)行編輯,而包含"value-of,的項(xiàng)表示不允許進(jìn)行編輯。在 這些顯示了節(jié)點(diǎn)"生徒"內(nèi)容的行中,在第六列中描述了運(yùn)算表達(dá)式"(src: 國(guó)語(yǔ)+ src:數(shù)學(xué)+ src:理科+ src:社會(huì))div 4"。這意味著顯示學(xué)生成 績(jī)的平均值。圖5示出了將圖2所示的由成績(jī)管理詞匯描述的XML文檔利用圖3所示的對(duì)應(yīng)關(guān)系映射為HTML以4吏其顯示在顯示屏上時(shí),顯示屏的一個(gè)例 子。在表90各行中從左至右顯示的是各學(xué)生的姓名、日語(yǔ)成績(jī)、數(shù)學(xué)成 績(jī)、自然科學(xué)成績(jī)、社會(huì)科學(xué)成績(jī)及其平均值。用戶能夠在該屏幕上對(duì) XML文檔進(jìn)行編輯。例如,當(dāng)?shù)诙械谌兄械闹底優(yōu)?70"時(shí),源樹中 與該節(jié)點(diǎn)相對(duì)應(yīng)的元素值(亦即學(xué)生"B"的數(shù)學(xué)成績(jī))變?yōu)?70"。此時(shí), 為了使目的樹與源樹一致,目的樹的相應(yīng)部分因此而改變,從而使得 HTML單元50能夠根據(jù)改變的目的樹來(lái)對(duì)顯示進(jìn)行更新。因此,學(xué)生"B" 的數(shù)學(xué)成績(jī)變?yōu)?70",而平均值相應(yīng)地變?yōu)?55"。在圖5所示的屏幕上,例如"生徒O追加"和"生徒O削除"的命令被顯 示為菜單,如圖4(a)、 (b)所示的定義文件中所定義的那樣。當(dāng)用戶從這 些命令中選擇一個(gè)命令時(shí),節(jié)點(diǎn)"生徒"增加至源樹中或從源樹中刪除。 以這種方式,利用根據(jù)本前提技術(shù)的文檔處理裝置20,不僅能夠?qū)Ψ旨?jí) 結(jié)構(gòu)末端中的組件的元素值進(jìn)行編輯,而且能夠?qū)υ摲旨?jí)結(jié)構(gòu)進(jìn)行編 輯。具有上述樹型結(jié)構(gòu)的編輯功能能夠以命令的形式顯現(xiàn)給用戶。此 外,增加或刪除表中的行的命令可例如與增加或刪除節(jié)點(diǎn)"生徒,,的操作 相關(guān)。嵌入其它詞匯中的命令可顯現(xiàn)給用戶。該表可用作輸入模板,以 使得對(duì)于新學(xué)生的成績(jī)數(shù)據(jù)能夠以填空的方式來(lái)增加。如上所述,在使 用HTML單元50的顯示/編輯功能的同時(shí),以成績(jī)管理詞匯描述的文檔可 通過(guò)VC功能來(lái)編輯。圖6示出了由定義文件生成單元86顯現(xiàn)給用戶的圖形用戶界面的例 子,以使用戶能夠創(chuàng)建定義文件。待映射的XML文檔在屏幕的左側(cè)區(qū)域 91顯示為樹。被映射成的XML文檔的屏幕布局顯示在屏幕的右側(cè)區(qū)域92 中。該屏幕布局可通過(guò)HTML單元50來(lái)編輯,用戶在屏幕的右側(cè)區(qū)域92 中確定并創(chuàng)建用于對(duì)文檔進(jìn)行顯示的屏幕布局。然后,例如,使用諸如 鼠標(biāo)等的指示設(shè)備將屏幕的左側(cè)區(qū)域91中顯示的XML文檔的待映射的節(jié) 點(diǎn)拖動(dòng)并放置到屏幕的左側(cè)區(qū)域91中的HTML屏幕布局中,以指定映射 源處的節(jié)點(diǎn)與映射目的處的節(jié)點(diǎn)之間的連接。例如,當(dāng)作為元素"生徒" 的子元素的"數(shù)學(xué)"被放置到HTML屏幕上的表90中第一行與第三列的交 叉處時(shí),"數(shù)學(xué)"節(jié)點(diǎn)與第三列中的"TD,,節(jié)點(diǎn)之間建立連接。各節(jié)點(diǎn)均 如此被指定為可編輯或者不可編輯。此外,可在顯示屏中嵌入運(yùn)算表達(dá)式。當(dāng)完成屏幕編輯時(shí),定義文件生成單元86創(chuàng)建描述屏幕布局與節(jié)點(diǎn) 之間的連接的定義文件。已經(jīng)開發(fā)出了能夠處理主要詞匯(例如XHTML (可擴(kuò)展超文本標(biāo) 記語(yǔ)言)、MathML (數(shù)學(xué)標(biāo)記語(yǔ)言)以及SVG (可縮放矢量圖形)) 的瀏覽器或編輯器。但是,不可能開發(fā)出適于以自創(chuàng)詞匯描述的所有文 檔(例如圖2中所示的文檔)的瀏覽器或編輯器。然而,如果如上所述 創(chuàng)建了用于映射為其它詞匯的定義文件,那么以自創(chuàng)詞匯描述的文檔就 能夠使用VC功能來(lái)顯示和/或編輯,而無(wú)需不斷開發(fā)新的瀏覽器或編輯 器。圖7示出了由定義文件生成單元86創(chuàng)建的屏幕布局的另一例子。在 圖7所示的例子中,在屏幕上產(chǎn)生表90和圓形圖93用于顯示以成績(jī)管理 詞匯描述的XML文檔。圓形圖93以SVG描述。如以下將討論的那樣,由 于根據(jù)本前提技術(shù)的文檔處理裝置20能夠?qū)υ趩蝹€(gè)XML文檔內(nèi)以多個(gè)詞 匯描述的復(fù)合文檔進(jìn)行處理,因此,如該例子所示,以HTML描述的表 90以及以SVG描述的圓形圖93能夠顯示在同一屏幕上。圖8示出了用于由文檔處理裝置20處理的XML文檔的編輯屏幕的一 例。在圖8所示的例子中,單個(gè)屏幕被分割為多個(gè)區(qū)域,而待處理的 XML文檔在各個(gè)區(qū)域以多種不同顯示格式顯示。該文檔的源在區(qū)域94中 顯示,該文檔的樹結(jié)構(gòu)在區(qū)域95中顯示,而以圖5所示的HTML描述的表 在區(qū)域96中顯示。該文檔在這些區(qū)域中的任意區(qū)域均可被編輯,當(dāng)用戶 對(duì)這些區(qū)域中的任意區(qū)域的內(nèi)容進(jìn)行編輯時(shí),源樹將被相應(yīng)修改,從而負(fù)責(zé)各屏幕顯示的插件將更新屏幕,以反映源樹的變更。具體而言,負(fù) 責(zé)顯示對(duì)應(yīng)編輯屏幕的插件的顯示單元被預(yù)先注冊(cè)為變化事件的監(jiān)聽 器,所述變化事件提供源樹中發(fā)生了改變的通知。當(dāng)源樹被任意插件或 VC單元80修改時(shí),顯示編輯屏幕的所有顯示單元接收發(fā)出的一個(gè)或多個(gè) 變化事件,并從而更新屏幕。此時(shí),如果插件正在通過(guò)VC功能進(jìn)行顯 示,則VC單元80根據(jù)對(duì)源樹的修改來(lái)修改目的樹。之后,插件的顯示單 元通過(guò)參考上述經(jīng)過(guò)修改的目的樹來(lái)對(duì)屏幕進(jìn)行修改。例如,當(dāng)通過(guò)專用插件來(lái)實(shí)現(xiàn)源顯示和樹型視圖顯示時(shí),源顯示插 件和樹顯示插件通過(guò)直接參考源樹而不是利用目的樹來(lái)實(shí)現(xiàn)它們的顯示。在這種情況下,當(dāng)在屏幕的任何區(qū)域中完成編輯時(shí),源顯示插件和樹顯示插件通過(guò)參考修改后的源樹來(lái)更新屏幕。同樣,負(fù)責(zé)顯示區(qū)域96 的HTML單元50通過(guò)參考已根據(jù)對(duì)源樹的修改而做了修改的目的樹來(lái)更 新屏幕。源顯示和樹顯示也可通過(guò)使用VC功能而實(shí)現(xiàn)。也就是說(shuō),例如,如 果HTMI^皮用于源和樹型結(jié)構(gòu)的布局,則XML文檔可映射為HTML以通 過(guò)HTML單元50來(lái)顯示。在這種情況下,將創(chuàng)建具有源格式、樹格式、 表格式的三個(gè)目的樹。如果在屏幕上的三個(gè)區(qū)域的任意一個(gè)中進(jìn)行編 輯,則VC單元80對(duì)源樹進(jìn)行修改,并在之后分別對(duì)源格式、樹格式、表 格式的三個(gè)目的樹進(jìn)行修改。然后,HTML單元50通過(guò)參考這些目的樹 來(lái)更新屏幕的三個(gè)區(qū)域。以這種方式,在單個(gè)屏幕上以多種顯示格式顯示文檔,從而提高了 用戶的便利性。例如,用戶能夠利用表90等以視覺上易于理解的格式顯 示和編輯文檔,同時(shí)通過(guò)源顯示或樹顯示來(lái)理解文檔的分級(jí)結(jié)構(gòu)。在上 述實(shí)施例中,單個(gè)屏幕被劃分為多個(gè)顯示格式,它們被同時(shí)顯示。但 是,也可在單個(gè)屏幕上顯示單個(gè)顯示格式,從而可通過(guò)用戶指令來(lái)切換 顯示格式。在這種情況下,主控單元22從用戶處接收用于切換顯示格式 的請(qǐng)求,并隨后命令各插件進(jìn)行顯示切換。圖9示出了由文檔處理裝置20編輯的XML文檔的另一例。在圖9所示 的XML文檔中,XHTML文檔被嵌入SVG文檔的"foreignObject"標(biāo)簽中, 而該XHTML文檔包含以MathML描述的公式。在這種情況下,編輯單元 24通過(guò)參考命名空間而將描繪任務(wù)分配或指派給適當(dāng)?shù)娘@示系統(tǒng)。在圖 9所示的實(shí)施例中,編輯單元24首先〗吏SVG單元60描繪矩形,然后偵_ HTML單元50描繪XHTML文檔。此外,編輯單元24使MathML單元(未 示出)描繪公式。以這種方式,包含多個(gè)詞匯的復(fù)合文檔被適當(dāng)?shù)仫@ 示。圖10示出了顯示結(jié)果。在對(duì)文檔進(jìn)行編輯期間,待顯示的菜單可根據(jù)光標(biāo)(* \ !i少) 的位置被切換。也就是說(shuō),當(dāng)光標(biāo)位于顯示SVG文檔的區(qū)域中時(shí),顯示 SVG單元60提供的菜單、或用于映射SVG文檔的定義文件中定義的命 令。當(dāng)光標(biāo)位于顯示XHTML文檔的區(qū)域中時(shí),顯示HTML單元50提供的菜單、或用于映射XHTML文檔的定義文件中定義的命令。因此,可根 據(jù)編輯位置提供適當(dāng)?shù)挠脩艚缑?。如果在?fù)合文檔中不存在與某詞匯相符的適當(dāng)插件或映射定義,則 以該詞匯描述的部分可以源或樹格式顯示。在傳統(tǒng)實(shí)踐中,當(dāng)要打開在 某個(gè)文檔中嵌有其它文檔的復(fù)合文檔時(shí),如果沒有安裝能夠顯示該嵌入 文檔的應(yīng)用程序,則它們的內(nèi)容不能顯示。但是,根據(jù)本前提技術(shù),即 使不存在用于顯示的應(yīng)用程序,也可以將由文本數(shù)據(jù)組成的XML文檔顯 示為源或樹格式,從而能夠確定其內(nèi)容。這是基于文本的XML文檔或類 4以文檔的一個(gè)特征。以基于文本的語(yǔ)言來(lái)描述數(shù)據(jù)的另一個(gè)有益方面例如在于,在同一 文檔中以其它詞匯描述的部分的數(shù)據(jù)可被該復(fù)合文檔中以某個(gè)詞匯描述 的另一文檔所參考。此外,當(dāng)在該文檔中進(jìn)行搜索時(shí),嵌入SVG等圖片 中的字符串也可作為被搜索的對(duì)象。在以某個(gè)詞匯描述的文檔中,可使用其它詞匯的標(biāo)簽。雖然該XML 文檔通常并不有效,但只要它結(jié)構(gòu)良好(well-formed),就可作為有效 的XML文檔而被處理。在這種情況下,被插入的屬于其它詞匯的標(biāo)簽可 使用定義文件來(lái)進(jìn)行映射。例如,在XHTML文檔中,可使用諸如"重要" 和"最重要"的標(biāo)簽以通過(guò)強(qiáng)調(diào)的方式來(lái)顯示這些標(biāo)簽周圍的部分,或者 可將這些標(biāo)簽按重要性的順序來(lái)排序以進(jìn)行相應(yīng)顯示。當(dāng)用戶在圖IO所示的編輯屏幕上對(duì)文檔進(jìn)行編輯時(shí),負(fù)責(zé)對(duì)被編輯 的部分進(jìn)行處理的插件或VC單元80對(duì)源樹進(jìn)行修改。能夠?yàn)樵礃渲械母?個(gè)節(jié)點(diǎn)注冊(cè)對(duì)于變化事件的監(jiān)聽器。通常,與各個(gè)節(jié)點(diǎn)所屬的詞匯相符 的插件的顯示單元或VC單元80被注冊(cè)為監(jiān)聽器。當(dāng)源樹被修改時(shí), DOM提供單元32從被修改的節(jié)點(diǎn)向較高層次探索。如果存在注冊(cè)的監(jiān)聽 器,則DOM提供單元32向該監(jiān)聽器發(fā)出變化事件。例如,參考如圖9中 所示的文檔,如果位于〈html〉節(jié)點(diǎn)下方的節(jié)點(diǎn)被修改,那么該變化事件 被通報(bào)給被注冊(cè)為<html>節(jié)點(diǎn)的監(jiān)聽器的HTML單元50。在同 一 時(shí)刻, 該變化事件被通報(bào)給被注冊(cè)為位于<html>節(jié)點(diǎn)上方的<svg>節(jié)點(diǎn)中的監(jiān) 聽器的SVG單元60。此時(shí),HTML單元50通過(guò)參考被修改的源樹而更新 顯示。由于屬于SVG單元60本身的詞匯的節(jié)點(diǎn)并未被修改,因此SVG單元60可忽視該變化事件。根據(jù)編輯的內(nèi)容,可以隨著HTML單元50對(duì)顯示進(jìn)行的修改來(lái)改變 總體布局。在這種情況下,對(duì)于各插件的各個(gè)顯示區(qū)域的布局將由管理 屏幕布局的組件(例如,負(fù)責(zé)顯示最高節(jié)點(diǎn)的插件)來(lái)更新。例如,當(dāng) 由HTML單元50顯示的區(qū)域較之以前變大時(shí),HTML單元50首先描繪 HTML單元50本身所負(fù)責(zé)的區(qū)域,然后確定顯示區(qū)域的大小。然后,顯 示區(qū)域的大小被通報(bào)給管理屏幕布局的組件,以請(qǐng)求對(duì)布局進(jìn)行更新。 負(fù)責(zé)屏幕布局的組件一收到該通知便為各個(gè)插件重新布置顯示區(qū)域。因 此,被編輯的部分的顯示被適當(dāng)更新,且總體屏幕布局被更新。接著,對(duì)實(shí)現(xiàn)前提技術(shù)的文檔處理裝置20的功能構(gòu)成進(jìn)一步進(jìn)行詳 細(xì)說(shuō)明。在下面的說(shuō)明中,使用英文名稱對(duì)類名等進(jìn)行描述。A.概要由于因特網(wǎng)的出現(xiàn),由用戶處理、管理的文檔的數(shù)量大致是成指數(shù) 函數(shù)形式在增加。形成因特網(wǎng)核心的Web (World Wide Web:萬(wàn)維網(wǎng)) 成了接受這些文檔數(shù)據(jù)的大容器。除了文檔以外,Web還提供用于這些 文檔的信息檢索系統(tǒng)。這些文檔通常是由標(biāo)記語(yǔ)言描述的。作為標(biāo)記語(yǔ) 言的簡(jiǎn)單且常用的例子,HTML (HyperText Markup Language:超文本 標(biāo)記語(yǔ)言)是其中的一個(gè)。這樣的文檔還包括有指向記錄在Web的其它 位置的其他文檔的鏈4妻。XML ( extensible Markup Language:可擴(kuò)展標(biāo) 記語(yǔ)言)是更高度普及的標(biāo)記語(yǔ)言。用于訪問(wèn)和閱覽Web文檔的筒單的 瀏覽器是由像Java (注冊(cè)商標(biāo))那樣的面向?qū)ο蟮木幊陶Z(yǔ)言開發(fā)的。由標(biāo)記語(yǔ)言描述的文檔通常在瀏覽器或者其他應(yīng)用程序中以樹數(shù)據(jù) 結(jié)構(gòu)的形式來(lái)表現(xiàn)。該結(jié)構(gòu)相當(dāng)于對(duì)文檔進(jìn)行語(yǔ)法分析結(jié)果的樹。DOM (Document Object Model:文檔目標(biāo)模型)是用于表述和操作文檔的、 眾所周知的基于樹的數(shù)據(jù)結(jié)構(gòu)模型。DOM提供表述含有HTML或XML文 檔等的對(duì)象集合。DOM包括兩個(gè)基本組件,即表述文檔內(nèi)的組件的對(duì)象 是如何連接在一起的標(biāo)準(zhǔn)模型,以及用于對(duì)這些對(duì)象進(jìn)行訪問(wèn)或者操作 的標(biāo)準(zhǔn)4妄口。應(yīng)用程序的開發(fā)者能夠支持DOM作為與其自身的數(shù)據(jù)結(jié)構(gòu)或者API (Application Program Interface:應(yīng)用禾呈序4妄口)的接口。另一方面,創(chuàng)建文檔的應(yīng)用程序的開發(fā)者可以使用DOM的標(biāo)準(zhǔn)接口而不是其自身的 API的特定接口。因此,DOM提供標(biāo)準(zhǔn)接口的能力有效地促進(jìn)了在各種 環(huán)境下對(duì)文檔進(jìn)行共享,特別是用在Web上。DOM定義有幾個(gè)版本,根 據(jù)不同的編程環(huán)境及應(yīng)用程序來(lái)使用。DOM樹是基于對(duì)應(yīng)DOM的內(nèi)容的文檔的分級(jí)表述。DOM樹包括 "根"及由根生出的一個(gè)以上的"節(jié)點(diǎn)"。根有時(shí)表述全體文檔。中間節(jié)點(diǎn) 可表述元素,諸如表及表中的行和列。DOM樹的"葉,,通常表述數(shù)據(jù),例 如不可進(jìn)一步分解的文本或者圖像。DOM樹的各個(gè)節(jié)點(diǎn)也可以與描述字 形、大小、顏色、索引等由節(jié)點(diǎn)所表示的元素的參數(shù)的屬性關(guān)聯(lián)對(duì)應(yīng)。雖然HTML是一般的用于制作文檔所使用的語(yǔ)言,但它是用于格式 和布局的語(yǔ)言而不是用于描述數(shù)據(jù)的語(yǔ)言。表現(xiàn)HTML文檔的DOM樹的 節(jié)點(diǎn)是預(yù)先定義作為HTML的格式化標(biāo)簽的元素。通常,由于HTML不 提供用于數(shù)據(jù)的詳述或者對(duì)數(shù)據(jù)添標(biāo)簽/添標(biāo)注的功能,因而對(duì)HTML文 檔中的數(shù)據(jù)的查詢格式化在很多場(chǎng)合是困難的。網(wǎng)絡(luò)設(shè)計(jì)者們的目標(biāo)是,能夠把Web上的文檔通過(guò)軟件應(yīng)用程序進(jìn) 行查詢或者處理。與顯示方法無(wú)關(guān),只要是分級(jí)結(jié)構(gòu)化的語(yǔ)言,可以同 樣查詢處理。-渚如XML (extensible Markup Language)這樣的標(biāo)記i吾言 可以提供這類特征。眾所周知,與HTML相反,XML的優(yōu)點(diǎn)是文檔的設(shè)計(jì)者可以使用可 自由定義的"標(biāo)簽"對(duì)數(shù)據(jù)元素進(jìn)行標(biāo)注。這樣的數(shù)據(jù)元素可以分級(jí)進(jìn)行 結(jié)構(gòu)化。而且,XML文檔可以包含文檔類型定義,它描述文檔內(nèi)4吏用的 標(biāo)簽及其相互關(guān)系的"語(yǔ)法"。為了定義結(jié)構(gòu)化的XML文檔的顯示方法, 使用CSS (Cascading Style Sheet:層疊式樣式表)或者XSL (XML Style Language:可擴(kuò)展標(biāo)記語(yǔ)言樣式語(yǔ)言)。關(guān)于DOM、 HTML、 XML、 CSS、 XSL及其有關(guān)語(yǔ)言特征的附加信息也可以從Web獲得。(例如, http:〃www. w3.org/TR/)Xpath為了指定XML文檔部分的位置,提供共同的語(yǔ)法及語(yǔ)義。作 為功能性的示例,是對(duì)應(yīng)于XML文檔的DOM樹的遍歷(移動(dòng))。這提 供了用于操作XML文檔的各種表述所關(guān)聯(lián)的字符串、數(shù)字及布爾型字符 的基本功能。Xpath不是XML文檔表現(xiàn)的語(yǔ)法(例如作為文本來(lái)看時(shí)是第幾行或者是第幾字符這樣的語(yǔ)法),而是在DOM樹等抽象的、邏輯的 結(jié)構(gòu)中操作。通過(guò)使用Xpath,例如,可以通過(guò)XML文檔的DOM樹內(nèi)的 分級(jí)結(jié)構(gòu)來(lái)定位。除了用于尋址的用途之外,XPath還被設(shè)計(jì)用來(lái)測(cè)試 DOM樹中的節(jié)點(diǎn)是否與某個(gè)模式相匹配。涉及XPath的細(xì)節(jié)可在 http:〃www.w3.org/TR/XPath中找到。希望有一種有效的文檔處理系統(tǒng),能夠利用XML的已知的優(yōu)點(diǎn)和特 征,處理由標(biāo)記語(yǔ)言(例如XML)描述的文檔,并能夠提供一種用于創(chuàng) 建和修改文檔的友好的用戶界面。在此說(shuō)明的系統(tǒng)的構(gòu)成中的 一 些將通過(guò)使用被稱作MVC ( Model-View-Controller: 模型-視圖-控制器)即眾所周知的GUI (Graphical User Interface:圖形用戶界面)范例進(jìn)行說(shuō)明。MVC范例將應(yīng)用程序或應(yīng)用 程序的接口的一部分分解為三部分,即,模型、視圖和控制器。最初開 發(fā)MVC是為了將傳統(tǒng)的輸入、處理和輸出任務(wù)分配到GUI區(qū)域。輸入->處理->輸出控制器-〉模型- >視圖根據(jù)MVC范例,外界的建模、對(duì)用戶的視覺反饋以及用戶輸入通過(guò) 模型(M)、視圖(V)以及控制器(C)對(duì)象來(lái)分離從而進(jìn)行處理???制器操作以解釋諸如用戶的鼠標(biāo)和鍵盤輸入的輸入,并將這些用戶動(dòng)作 映射為發(fā)送至模型和/或視圖的命令,以實(shí)現(xiàn)適當(dāng)?shù)母淖儭DP桶l(fā)揮作用 以管理一個(gè)以上的數(shù)據(jù)元素、響應(yīng)對(duì)其狀態(tài)的詢問(wèn)、并對(duì)改變狀態(tài)的指 示作出響應(yīng)。^L圖操作以管理顯示的矩形區(qū)域,并有通過(guò)圖形和文本的 組合將數(shù)據(jù)顯現(xiàn)給用戶的功能。B.文檔處理系統(tǒng)的總配置文檔處理系統(tǒng)的實(shí)施例將結(jié)合圖11 -29進(jìn)行清楚說(shuō)明。 圖ll (a)圖示了包括將在下面描述的能夠提供文檔處理系統(tǒng)的、根 據(jù)現(xiàn)有技術(shù)的基礎(chǔ)功能的配置結(jié)構(gòu)。裝置10包括通過(guò)通信路徑13連接到 存儲(chǔ)器12的CPU形式或微處理器等形式的處理器11。存儲(chǔ)器12可為當(dāng)前 或?qū)?lái)能夠使用的任意ROM和/或RAM形式。通信路徑13作為典型的總 線而設(shè)置。對(duì)于鼠標(biāo)、鍵盤和語(yǔ)音識(shí)別系統(tǒng)等用戶輸入裝置14以及顯示裝置15 (或者其他用戶接口 )的輸入輸出接口16也連接在用于處理器11 和存儲(chǔ)器12通信的總線上。該結(jié)構(gòu)可以是獨(dú)立的形式,也可以是由多個(gè) 終端以及一臺(tái)以上的月良務(wù)器連接的網(wǎng)絡(luò)化的形式,也可以由公知的任何 方式來(lái)構(gòu)成。本發(fā)明并不受這些組件的配置、它們的集中式或分布式體 系結(jié)構(gòu)或者多種組件的通信方式的限制。此外,本系統(tǒng)以及在此討論的實(shí)施例將作為包括提供各種功能性的 若干組件以及子組件的例子來(lái)討論。為了提供期望的功能,這些組件以 及子組件可以是硬件和專欠件的組合,也可以僅由石更件或者4又由軟件來(lái)實(shí) 現(xiàn)。而且,硬件、軟件及其組合可以由通用計(jì)算裝置、專用硬件或者它 們的組合來(lái)實(shí)現(xiàn)。因此,組件或者子組件的構(gòu)成包括執(zhí)行用于提供組件 或者子組件功能的專用軟件的通用/專用的計(jì)算裝置。圖ll (b)示出了文檔處理系統(tǒng)一個(gè)例子的總體方框圖。文檔在這 種文檔處理系統(tǒng)中凈皮創(chuàng)建和編輯。這些文檔(例如XML等)能夠以具有 標(biāo)記語(yǔ)言特征的任何語(yǔ)言來(lái)表述。同樣,為方便起見,已經(jīng)創(chuàng)建了用于 特定的組件和子組件的術(shù)語(yǔ)和標(biāo)題。但是,這些不應(yīng)被視作對(duì)本文公開 的一般教導(dǎo)范圍的限制。文檔處理系統(tǒng)可被視為具有兩個(gè)基本構(gòu)成。 一個(gè)構(gòu)成是"執(zhí)行環(huán) 境"IOI,它是文檔處理系統(tǒng)運(yùn)行的環(huán)境。例如,執(zhí)行環(huán)境在對(duì)文檔進(jìn)行 處理中和管理中不僅支持用戶,而且支持系統(tǒng),提供基本效用和功能。第二構(gòu)成是"應(yīng)用程序"102,它由在執(zhí)行環(huán)境中運(yùn)行的應(yīng)用程序構(gòu)成。這 些應(yīng)用程序包括文檔本身及其各種表述。 1.執(zhí)行環(huán)境執(zhí)行環(huán)境101的關(guān)鍵組件是程序調(diào)用器(Programlnvoker,即程序啟 動(dòng)單元)103。程序調(diào)用器103是用于啟動(dòng)文檔處理系統(tǒng)而^L訪問(wèn)的基本 程序。例如,當(dāng)用戶登錄并啟動(dòng)文檔處理系統(tǒng)時(shí),程序調(diào)用器103被執(zhí) 行。程序調(diào)用器103例如可以讀取并執(zhí)行作為插件增加至文檔處理系統(tǒng) 的功能、啟動(dòng)并運(yùn)行應(yīng)用程序、以及讀取與文檔相關(guān)的屬性。程序調(diào)用 器103的功能并不限于此。當(dāng)用戶希望啟動(dòng)計(jì)劃在執(zhí)行環(huán)境中運(yùn)行的應(yīng)用程序時(shí),程序調(diào)用器 103找到并啟動(dòng)該應(yīng)用禾呈序,然后執(zhí)4亍該應(yīng)用程序。在程序調(diào)用器103上聯(lián)接有插件子系統(tǒng)104 、命令子系統(tǒng)105以及資 源模塊109等若干組件。這些構(gòu)成將隨后進(jìn)行更詳細(xì)描述。a) 插件子系統(tǒng)插件子系統(tǒng)104能夠高度靈活和有效地向文檔處理系統(tǒng)增加功能。 插件子系統(tǒng)104也可以用來(lái)^f奮改和去除文檔處理系統(tǒng)中存在的功能。此 外,可使用插件子系統(tǒng)增加或修改多種功能。例如,可以增加編輯功能 (Editlet:編輯單元)以起到支持在屏幕上呈現(xiàn)文檔的作用。編輯插件 也支持對(duì)增加至系統(tǒng)的詞匯進(jìn)行編輯。插件子系統(tǒng)104包括服務(wù)代理(ServiceBroker:服務(wù)中介單元) 1041。服務(wù)代理1041通過(guò)管理增加至文檔處理系統(tǒng)的插件,作為增加至 文檔處理系統(tǒng)的服務(wù)的中介。期望的每個(gè)功能以月良務(wù)(Service) 1042的形式增加至系統(tǒng)。服務(wù)1042 的可用類型包括但不限于應(yīng)用程序(Application)服務(wù)、區(qū)工廠 (ZoneFactory,即區(qū)生成單元)服務(wù)、Editlet (編輯單元)服務(wù)、命令工 廠 (CommandFactory : 命令生成單元)服務(wù)、連接xpath (ConnectXPath: XPath管理單元)服務(wù)、CSS計(jì)算(CSSComputation: CSS計(jì)算單元)服務(wù)等。這些服務(wù)及其與系統(tǒng)其余部分的關(guān)系將隨后詳 細(xì)描述,以更好地理解文檔處理系統(tǒng)。插件和服務(wù)之間的關(guān)系如下所述。插件是可包括一 個(gè)以上的服務(wù)提 供器(ServiceProvider:服務(wù)提供單元)的單元。各個(gè)服務(wù)提供器具有 與之相關(guān)服務(wù)的一個(gè)以上的類。例如,通過(guò)使用具有適當(dāng)軟件應(yīng)用程序 的單個(gè)插件,可將一個(gè)以上的服務(wù)增加至系統(tǒng),從而可向系統(tǒng)增加相應(yīng) 的功能。b) 命令子系統(tǒng)命令子系統(tǒng)105被用來(lái)執(zhí)行與文檔的處理相關(guān)的命令形式的指令。 用戶可通過(guò)執(zhí)行一系列指令而執(zhí)行對(duì)文檔的操作。例如,通過(guò)發(fā)出命令 形式的指令,用戶對(duì)文檔處理系統(tǒng)中的XML文檔相對(duì)應(yīng)的XML的DOM 樹編輯來(lái)處理XML文檔。這些命令可利用鍵盤擊^:、鼠標(biāo)點(diǎn)擊或其它有 效的用戶接口動(dòng)作來(lái)輸入。有時(shí),也可通過(guò)一個(gè)命令來(lái)執(zhí)行一個(gè)以上的指令。在這種情況下,這些指令被封裝(包含)成一個(gè)命令并連續(xù)執(zhí) 行。例如,用戶希望將錯(cuò)誤詞語(yǔ)替換為正確詞語(yǔ)。在這種情況下,第一 個(gè)命令可用以在文檔中找尋錯(cuò)誤詞語(yǔ),第二個(gè)命令可用以刪除該錯(cuò)誤詞 語(yǔ),第三個(gè)命令可用以輸入正確詞語(yǔ)。這三個(gè)命令可被包裝成一個(gè)命 令。命令可具有相關(guān)功能,例如是下面將要詳細(xì)記述的"撤消"功能。這 些功能可分配給用來(lái)創(chuàng)建對(duì)象所使用的若干個(gè)基類。命令子系統(tǒng)105的關(guān)鍵組件是命令調(diào)用器(Commandlnvoker,即命 令啟動(dòng)單元)1051,命令調(diào)用器1051可操作以有選擇性地提供并執(zhí)行命 令。雖然圖ll (b)中僅示出了一個(gè)命令調(diào)用器,但也可使用一個(gè)以上 的命令調(diào)用器并可同時(shí)執(zhí)行一個(gè)以上的命令。命令調(diào)用器1051維護(hù)執(zhí)行 命令所需的功能和類。在操作中,要執(zhí)行的命令1052被置于隊(duì)列1053 中。命令調(diào)用器創(chuàng)建連續(xù)執(zhí)行的命令線程。如果在命令調(diào)用器中沒有正 在執(zhí)行的命令,則由命令調(diào)用器1051執(zhí)行待執(zhí)行的命令1052。如果命令 調(diào)用器正在執(zhí)行命令,則新的命令被置于命令隊(duì)列1053的末尾。不過(guò), 對(duì)于各命令調(diào)用器1051而言, 一次僅執(zhí)行一個(gè)命令。如果指定的命令執(zhí) 行失敗,則命令調(diào)用器1051將執(zhí)行異常處理??捎擅钫{(diào)用器(Commandlnvoker) 1051執(zhí)行的命令的類型包括但 不限于可撤消命令(UndoableCommand)1054 、 異步命令 (AsynchronousCommand) 1055以及詞匯連4妄命令(VCCommand)1056 ???撤消命令1054是那些如果用戶希望就能夠撤銷其結(jié)果的命令。可撤消命 令的示例為剪切、復(fù)制、插入文本等。在操作中,當(dāng)用戶選擇文檔的 一部分并對(duì)該部分應(yīng)用剪切命令時(shí),如果需要,通過(guò)使用可撤消命令, 可使被剪切的部分恢復(fù)至其未被剪切的狀態(tài)。詞匯連接命令1056被載入詞匯連接描述符(Vocabulary Connection Descriptor: VCD)腳本文件中。詞匯連接命令1056是能夠由程序員定義 的用戶指定命令。命令可以是例如用于增加XML片段、刪除XML片段、 以及設(shè)置屬性等更抽象命令的組合。這些命令特別涉及對(duì)文檔進(jìn)行編 輯。異步命令1055是用于文檔的載入或保存等基于系統(tǒng)的命令,與可撤消命令或詞匯連接命令不同,是異步執(zhí)行。由于異步命令不是可撤消命 令,所以其執(zhí)行的結(jié)果不能取消。 C)資源資源109是向各種類提供某些功能的對(duì)象。例如,串資源、圖標(biāo)和 缺省鍵綁定是系統(tǒng)中使用的資源的例子。2.應(yīng)用程序組件應(yīng)用程序組件102作為文檔處理系統(tǒng)的第二個(gè)主要特征,在執(zhí)行環(huán) 境101中運(yùn)行。應(yīng)用程序組件102包括實(shí)際文檔和系統(tǒng)內(nèi)的各種邏輯和物 理表述。應(yīng)用程序組件102還包括用來(lái)管理文檔所使用的系統(tǒng)組件。應(yīng) 用程序組件102進(jìn)一步包括用戶應(yīng)用程序(UserApplication ) 106、應(yīng)用 程序核心108、用戶界面107以及核心組件(CoreComponent) 110。a) 用戶應(yīng)用程序用戶應(yīng)用程序106連同程序調(diào)用器103—起被載入到系統(tǒng)中。用戶應(yīng) 用程序106是將文檔、文檔的各種表述以及與文檔進(jìn)行交互所需的用戶 界面結(jié)合在一起的"粘合劑"。例如,用戶可能希望創(chuàng)建作為項(xiàng)目的一 部分的一套文檔。載入這些文檔后,將創(chuàng)建用于文檔的適當(dāng)表述。用戶 界面功能作為用戶應(yīng)用程序106的一部分被追加。換言之,用戶應(yīng)用程 序106既保持文檔的表述也保持文檔的各種形式,這些文檔的表述使用 戶能夠與形成項(xiàng)目的一部分的文檔進(jìn)行交互。 一旦創(chuàng)建了用戶應(yīng)用程序 106,每當(dāng)用戶希望與形成項(xiàng)目 一部分的文檔進(jìn)行交互時(shí),用戶就能夠 簡(jiǎn)單地將用戶應(yīng)用程序106載入到執(zhí)行環(huán)境中。b) 核心組件核心組件(CoreComponent) 110提供在多個(gè)窗格(Pane)之間共享 文檔的一種方法。如后述的那樣,窗格顯示DOM樹,并處理屏幕的物理 布局。例如,物理屏幕包括在屏幕內(nèi)的多個(gè)描述信息的片斷的窗格。實(shí) 際上,由用戶在屏幕上看到的文檔可在一個(gè)或多個(gè)窗格中顯示。此外, 兩個(gè)不同的文檔可以出現(xiàn)在屏幕上的兩個(gè)不同窗格中。如圖11(C)所示,屏幕的物理布局也具有樹型形式。因此,窗格可被實(shí)現(xiàn)為根窗格(RootPane) 1084,也可以為子窗格(SubPane)1085。根 窗格1084是位于窗格樹的根部的窗格,而子窗格1085是除了根窗格1084 之外的任何窗格。核心組件110還提供字體,并充當(dāng)工具包等用于文檔的多個(gè)功能性 操作的源。由核心組件110執(zhí)行的任務(wù)的 一個(gè)示例是在多個(gè)窗格之間移 動(dòng)鼠標(biāo)光標(biāo)。作為被執(zhí)行的任務(wù)的另一個(gè)示例,標(biāo)記某窗格中文檔的一 部分,并將其復(fù)制到包含不同文檔的另一窗格上。c) 應(yīng)用程序核心如上所述,應(yīng)用程序組件102由系統(tǒng)處理和管理的文檔組成。其中 包括系統(tǒng)內(nèi)的文檔的多種邏輯和物理表述。應(yīng)用程序核心108是應(yīng)用程 序組件102的組件。其功能是保持實(shí)際文檔及其內(nèi)的所有數(shù)據(jù)。應(yīng)用程 序核心108包括文檔管理器(DocumentManager:文檔管理單元)1081和 文檔(Document) 1082本身。文檔管理器1081的多個(gè)方面將在隨后詳細(xì)描述。文檔管理器1081管 理文檔1082。文檔管理器1081也連接至一艮窗格1084、子窗格1085、剪貼 板(ClipBoard)實(shí)用程序1087以及快照(SnapShot)實(shí)用程序1088。剪 貼板實(shí)用程序1087提供了保持用戶決定增加至剪貼板的部分文檔的方 法。例如,用戶可能希望剪切文檔的一部分,并將其保存到新的文檔 上,用于稍后查看。在這種情況下,剪切的部分被增加至剪貼板。接著,也對(duì)快照實(shí)用程序1088進(jìn)行說(shuō)明??煺諏?shí)用程序1088在應(yīng)用 程序從一個(gè)狀態(tài)變?yōu)榱硪粻顟B(tài)時(shí),能夠記住應(yīng)用程序的當(dāng)前狀態(tài)。d) 用戶界面應(yīng)用程序組件102的另 一組件是用戶界面107,其為用戶提供一種與 系統(tǒng)進(jìn)行物理交互的方式。例如,用戶界面用于用戶上載、刪除、編輯 和管理文檔。用戶界面包括框架(Frame) 1071、菜單欄(MenuBar) 1072、狀態(tài)欄(StatusBar) 1073以及URL欄(URLBar) 1074。如通常公知的那樣,框架1071被視為物理屏幕的活動(dòng)區(qū)域。菜單欄1072是包含有為用戶提供選項(xiàng)菜單的屏幕區(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的細(xì)節(jié)。其中包括用于在文檔處理系統(tǒng) 內(nèi)表述文檔的數(shù)據(jù)結(jié)構(gòu)和組件。為了更好的理解,在這部分描述的組件 將利用模型-視圖-控制器(MVC)表述范例來(lái)進(jìn)行說(shuō)明。文檔管理器1081包括文檔容器(DocumentContainer ) 203,文檔容 器203保持并容納文檔處理系統(tǒng)中的所有文檔。聯(lián)接至文檔管理器1081 的工具包201提供了由文檔管理器1081使用的各種工具。例如,DOM服 務(wù)(DOMService)是由工具包201提供的能夠提供創(chuàng)建、維護(hù)和管理與 文檔相對(duì)應(yīng)的DOM所需的所有功能的工具。作為工具包201提供的另一 工具的IO管理器(IOManager:輸入輸出管理部)分別管理向系統(tǒng)的輸 入和來(lái)自系統(tǒng)的輸出。同樣地,流處理器(StreamHandler)是一種處理 將比特流形式的文檔上載的工具。這些工具形成了工具包201的組件, 不過(guò)并未在圖中特別示出和分配附圖標(biāo)記。根據(jù)MVC范例的表述,模型(M)包括文檔的DOM樹模型202。如 上所述,所有文檔均在文檔處理系統(tǒng)中凈皮表述為DOM樹。此外,文檔也 形成文檔容器203的一部分。1. DOM模型和區(qū)表述文檔的DOM樹是具有節(jié)點(diǎn)(Node) 2021的樹。作為DOM樹的 子集的區(qū)(Zone) 209包括對(duì)應(yīng)于DOM樹內(nèi)部的一個(gè)或多個(gè)節(jié)點(diǎn)的區(qū) 域。例如,可能僅有文檔的一部分在屏幕上顯現(xiàn),文檔可見的這一部分 可使用"區(qū)"209來(lái)表述。利用被稱作區(qū)工廠(ZoneFactory:區(qū)生成單 元)205的插件來(lái)創(chuàng)建、操作和處理區(qū)。雖然區(qū)表述DOM的一部分,但 它也可使用一個(gè)以上的"命名空間"。如本領(lǐng)域中公知的那樣,命名空間 是名稱的匯集或集合,這些名稱在該命名空間中是唯一的。換言之,一 個(gè)命名空間中不存在相同的名稱。2."方面"及其與區(qū)的關(guān)系方面(Facet) 2022是MVC范例的才莫型(M)部分內(nèi)的另一組件。它 被用來(lái)編輯區(qū)中的節(jié)點(diǎn)。"方面"2022使用不會(huì)影響區(qū)本身的內(nèi)容的可執(zhí) 行過(guò)程(程序)來(lái)組織對(duì)于DOM的訪問(wèn)。如下面將說(shuō)明的那樣,這些過(guò) 程執(zhí)行與節(jié)點(diǎn)相關(guān)的重要且有用的操作。各個(gè)節(jié)點(diǎn)具有相應(yīng)的"方面"。通過(guò)利用"方面"執(zhí)行操作來(lái)代替直接 對(duì)DOM中的節(jié)點(diǎn)進(jìn)行操作,DOM的完整性得以確保。否則,如果直接 對(duì)節(jié)點(diǎn)執(zhí)行操作,那么幾個(gè)插件可能同時(shí)對(duì)DOM進(jìn)行改變,從而造成結(jié) 果的前后矛盾。雖然W3 C構(gòu)建的DOM標(biāo)準(zhǔn)定義了用于對(duì)節(jié)點(diǎn)進(jìn)行操作的標(biāo)準(zhǔn)接口 , 實(shí)際上,由于對(duì)每個(gè)詞匯或每個(gè)節(jié)點(diǎn)有特定的操作,優(yōu)選將這些操作作 為API來(lái)準(zhǔn)備。文檔處理系統(tǒng)以"方面"的形式向各節(jié)點(diǎn)提供了特有的 API,并附加到各節(jié)點(diǎn)上。據(jù)此,可以提供符合DOM標(biāo)準(zhǔn)的有用的 API。此外,通過(guò)在標(biāo)準(zhǔn)DOM上后來(lái)增加特定的API而不是為每個(gè)詞匯 實(shí)現(xiàn)特定的DOM,可對(duì)多種詞匯進(jìn)行統(tǒng)一處理,并且可以適當(dāng)?shù)靥幚碛?多種詞匯任意組合的混合文檔。詞匯是屬于命名空間的標(biāo)簽(例如XML標(biāo)簽)的集合。如上所述, 命名空間具有唯一的名稱(在此為標(biāo)簽)集。詞匯表現(xiàn)為表述XML文檔 的DOM樹的子樹。這種子樹包括區(qū)(Zone)。在特定實(shí)施例中,標(biāo)簽集 的邊界由區(qū)來(lái)限定。區(qū)209是利用被稱為"區(qū)工廠"205的服務(wù)創(chuàng)建的。如 上所述,區(qū)209是對(duì)表述文檔的DOM樹的一部分的內(nèi)部表述。為了提供 對(duì)該文檔的上述部分的訪問(wèn),需要邏輯表述。這種邏輯表述通知計(jì)算機(jī) 如何在屏幕上對(duì)文檔進(jìn)行邏輯顯示。畫布(Canvas) 210是一種可操作為 提供與區(qū)相對(duì)應(yīng)的邏輯布局的服務(wù)。另一方面,窗才各211是與由畫布210提供的與邏輯布局相對(duì)應(yīng)的物理 屏幕布局。實(shí)際上,用戶只是看以字符和圖片形式呈現(xiàn)在顯示屏上的文 檔。因此,文檔必須通過(guò)用于在屏幕上描繪字符和圖片的處理來(lái)呈現(xiàn)在 屏幕上。根據(jù)由窗格211提供的物理布局,文檔由畫布210呈現(xiàn)在屏幕 上。與區(qū)209相對(duì)應(yīng)的畫布210是利用Editlet 206來(lái)創(chuàng)建的。文檔的DOM 是利用Editlet 206和畫布210來(lái)編輯的。為了維護(hù)原始文檔的完整性, Editlet 206和畫布服務(wù)210使用與區(qū)209中的一個(gè)或多個(gè)節(jié)點(diǎn)相對(duì)應(yīng)的"方 面"。這些服務(wù)并不直接操作區(qū)和DOM中的節(jié)點(diǎn)。"方面"是利用命令207 來(lái)操作的。用戶通常通過(guò)例如移動(dòng)屏幕上的光標(biāo)或鍵入命令而與屏幕進(jìn)行交 互。提供屏幕的邏輯布局的畫布210接收這些光標(biāo)操作。畫布210可使"方 面"采取相應(yīng)的動(dòng)作。根據(jù)這種關(guān)系,光標(biāo)子系統(tǒng)204作為用于文檔管理 器1081的MVC范例的控制器(C)。畫布210也提供處理事件的任務(wù)。例 如,畫布210處理諸如鼠標(biāo)點(diǎn)擊、焦點(diǎn)移動(dòng)以及由用戶發(fā)起的類似的操 作等事件。3. 區(qū)、"方面"、畫布和窗格之間的關(guān)系積克述文檔處理系統(tǒng)內(nèi)的文檔可從至少四個(gè)角度來(lái)描述。即1)用來(lái)保 持文檔處理系統(tǒng)中的文檔的內(nèi)容和結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu);2)在不影響文檔 完整性的同時(shí)編輯文檔內(nèi)容的方式;3)文檔在屏幕上的邏輯布局;以 及4)文檔在屏幕上的物理布局。"區(qū)"、"方面"、"畫布"和"窗格" 分別表述與上述四個(gè)方面相對(duì)應(yīng)的文檔處理系統(tǒng)的組件。4. 撤消子系統(tǒng)如上所述,人們希望對(duì)文檔的任何改變(例如,編輯)都可撤消。 例如,用戶可執(zhí)行編輯操作,然后決定撤消該改變。參照?qǐng)D12,撤消子 系統(tǒng)212是文檔管理器的可進(jìn)行撤消操作的組件。撤消管理器(UndoManager: 4敎銷管理單元)2121保存可#1用戶招t消的、對(duì)文檔執(zhí) 行的所有操作。例如,用戶可執(zhí)行命令來(lái)將文檔中的詞語(yǔ)替換成另一個(gè) 詞語(yǔ)。之后,該用戶可改變主意并決定保留原來(lái)的詞語(yǔ)。撤消子系統(tǒng) 212協(xié)助上述操作。撤消管理器2121保存上述可撤消編輯(UndoableEdit:可撤消編輯)2122的操作。5. 光 標(biāo)子系統(tǒng)如上所述,MVC的控制器部分可包括光標(biāo)子系統(tǒng)204。該光標(biāo)子系 統(tǒng)204接受來(lái)自用戶的輸入。這些輸入通常具有命令和/或編輯操作的性 質(zhì)。因此,光標(biāo)子系統(tǒng)204可被視作是與文檔管理器1081相關(guān)的MVC范 例的控制器(C)部分。6.視圖如上所述,畫布210表述要顯現(xiàn)在屏幕上的文檔的邏輯布局。對(duì)于 XHTML文檔實(shí)施例而言,畫布210可包括盒樹(box tree) 208,該盒樹 是文檔在屏幕上如何被查看的邏輯表述。上述盒樹208可包含在與文檔 管理器1081有關(guān)的MVC范例的視圖(V)部分中。D.詞匯連才妄文檔處理系統(tǒng)的一個(gè)重要特征是提供一種環(huán)境,該環(huán)境能夠把XML 文檔映射為其他表述來(lái)處理,而且對(duì)映射后的表述編輯時(shí),將該編輯反 映到源XML文檔中,同時(shí)保持該XML文檔的完整性。由標(biāo)記語(yǔ)言描述的文檔,例如XML文檔,基于通過(guò)文檔類型定義的 詞匯創(chuàng)建。詞匯則是一組標(biāo)簽集。由于詞匯可以任意定義,這就4吏得詞 匯的數(shù)量可能是無(wú)限的。但是,為多個(gè)可能的詞匯中的每一個(gè)都提供專 用的單獨(dú)處理和管理環(huán)境是不切實(shí)際的。詞匯連接提供解決這種問(wèn)題的 一種方式。例如,文檔可以利用兩種以上的標(biāo)記語(yǔ)言來(lái)表述。這些文檔例如可 以是XHTML (可擴(kuò)展超文本標(biāo)記語(yǔ)言)、SVG (可縮放矢量圖形)、 MathML (數(shù)學(xué)標(biāo)記語(yǔ)言)或其他的標(biāo)記語(yǔ)言。換句話說(shuō),標(biāo)記語(yǔ)言可 以-現(xiàn)為和XML中的詞匯和標(biāo)簽集相同。詞匯使用詞匯插件來(lái)實(shí)現(xiàn)。在文檔處理系統(tǒng)中,通過(guò)將以插件不可 用的詞匯所描述的文檔映射為插件可用的另一詞匯來(lái)顯示。因此,對(duì)于 以未準(zhǔn)備有插件的詞匯描述的文檔仍然是可以正確顯示。詞匯連接包括獲取定義文件、和根據(jù)獲取的定義文件在兩個(gè)不同的 詞匯之間進(jìn)行映射的能力。用某種詞匯描述的文檔能夠映射為另外的詞 匯。因此,詞匯連接提供通過(guò)與文檔已被映射成的詞匯相對(duì)應(yīng)的顯示和編輯插件來(lái)顯示或編輯文檔的能力。如上所述,各個(gè)文檔在文檔處理系統(tǒng)中被描述為通常具有多個(gè)節(jié)點(diǎn)的DOM樹。"定義文件"為各個(gè)節(jié)點(diǎn)描述了該節(jié)點(diǎn)與其他節(jié)點(diǎn)之間的連 接。規(guī)定了是否可以對(duì)各個(gè)節(jié)點(diǎn)的元素值和屬性值進(jìn)行編輯。還可以描 述使用節(jié)點(diǎn)的元素值和屬性值的運(yùn)算表達(dá)式。利用映射特征,可以創(chuàng)建采用定義文件的目的DOM樹。由此建立并 維護(hù)源DOM樹和目的DOM樹之間的關(guān)系。詞匯連接監(jiān)視源DOM樹和目 的DOM樹之間的連接。在從用戶接收到編輯指令后,詞匯連接〗奮改源 DOM樹中的相關(guān)節(jié)點(diǎn)。發(fā)出表示已經(jīng)修改了源DOM樹的"變化事件", 并且相應(yīng)地ff"改目的DOM樹。通過(guò)使用詞匯連接,使得僅有少量用戶知道的相對(duì)次要的詞匯可以 被轉(zhuǎn)換為其他主要的詞匯。因此,即便是對(duì)于那些僅有少量用戶使用的 次要詞匯,也可以準(zhǔn)確地顯示文檔,并提供理想的編輯環(huán)境。因此,作為文檔處理系統(tǒng)一部分的詞匯連接子系統(tǒng)提供能夠?qū)ξ臋n 進(jìn)行多種表述的功能。圖13顯示了詞匯連接(VC: Vocabulary Connection )子系統(tǒng)300。 VC子系統(tǒng)300提供了 一種維護(hù)同 一文檔的兩種可替換表述之間的 一致性 的方式。例如,兩種表述可以是同一文檔以兩種不同詞匯來(lái)表現(xiàn)的。如 上所述,其中一種可以是源DOM樹,而另一種可以是目的DOM樹。1.詞匯連接子系統(tǒng)利用^皮稱為詞匯連接(VocabularyCo皿ection ) 301的插件在文檔處 理系統(tǒng)中實(shí)現(xiàn)詞匯連接子系統(tǒng)300的功能。表述文檔的各詞匯305都需要 相應(yīng)的插件。例如,如果文檔的一部分以HTML表述,而其4也部分以 SVG表述,則需要與HTML和SVG分別對(duì)應(yīng)的詞匯插件。詞匯連接插件301為區(qū)209或窗格211創(chuàng)建與適當(dāng)詞匯305的文檔相對(duì) 應(yīng)的適當(dāng)?shù)脑~匯連接畫布(VCCanvas) 310。使用詞匯連接301,根據(jù)轉(zhuǎn) 換規(guī)則,對(duì)源DOM樹的區(qū)209的改變被傳遞到另一 DOM樹306的相應(yīng) 區(qū)。轉(zhuǎn)換身見則以詞匯連接描述符(Vocabulary Connection Descriptor: VCD)的形式給出。對(duì)于與源DOM和目的DOM之間的這種轉(zhuǎn)換相對(duì)應(yīng)的各個(gè)VCD文件,創(chuàng)建相應(yīng)的詞匯連接管理器(VCManager) 302。 2.連接器(Connector)連接器304連接源DOM樹中的源節(jié)點(diǎn)和目的DOM樹中的目的節(jié)點(diǎn)。 連接器304的作用是觀察源DOM樹中的源節(jié)點(diǎn),和對(duì)與源節(jié)點(diǎn)相對(duì)應(yīng)的 源文檔進(jìn)行的修改(變化)。接著,修改相應(yīng)的目的DOM樹中的節(jié)點(diǎn)。 連接器304是能夠?qū)δ康腄OM樹進(jìn)行修改的唯一對(duì)象。例如,用戶可以 只對(duì)源文檔和相應(yīng)的源DOM樹進(jìn)行修改。之后,連接器304對(duì)目的DOM 樹進(jìn)行相應(yīng)的修改。連接器304被邏輯地鏈接在一起以形成樹結(jié)構(gòu)。連接器304形成的樹 被稱為連接器樹(ConnectorTree )。連接器304通過(guò) 一 種服務(wù) (Service)而創(chuàng)建,該服務(wù)被稱為連接器工廠(ConnectorFactory:連接 器生成單元)303的服務(wù)。連接器工廠303從源文檔創(chuàng)建連接器304,并 將其鏈接起來(lái)以形成連接器樹。詞匯連接管理器302維護(hù)連接器工廠 303。如上所述,詞匯是命名空間中的標(biāo)簽集。如圖所示,通過(guò)詞匯連接 301為文檔創(chuàng)建詞匯305。這通過(guò)分析文檔文件以及為源DOM和目的 DOM之間的映射創(chuàng)建適當(dāng)?shù)脑~匯連接管理器302來(lái)實(shí)現(xiàn)。此外,在創(chuàng)建 連接器的連接器工廠303 、創(chuàng)建區(qū)209的區(qū)工廠(ZoneFactory)205和創(chuàng)建與 區(qū)內(nèi)節(jié)點(diǎn)相對(duì)應(yīng)的畫布的Editlet 206之間建立適當(dāng)?shù)年P(guān)聯(lián)。當(dāng)用戶從系 統(tǒng)中丟棄或刪除文檔時(shí),對(duì)應(yīng)的詞匯連接管理器302將被刪除。詞匯305創(chuàng)建詞匯連接畫布310。此外,連4妄器304和目的DOM樹306 被相應(yīng)地創(chuàng)建。源DOM和畫布分別對(duì)應(yīng)于才莫型(M)和4見圖(V)。然而,4又當(dāng)目 標(biāo)詞匯能夠在屏幕上呈現(xiàn)時(shí),這種表現(xiàn)才有意義。這種呈現(xiàn)通過(guò)詞匯插 件來(lái)進(jìn)行。針對(duì)主要的詞匯(例如XHTML、 SVG和MathML)提供詞匯 插件。詞匯插件與目標(biāo)詞匯關(guān)聯(lián)使用。它們提供了一種使用詞匯連接描 述符在詞匯之間進(jìn)行映射的方式。僅在目標(biāo)詞匯可被映射并具有預(yù)先定義的屏幕呈現(xiàn)方式時(shí),這種映 射才有意義。這種呈現(xiàn)方式例如是由諸如W3C組織定義的XHTML等之類的標(biāo)準(zhǔn)規(guī)格。在需要詞匯連接時(shí),使用詞匯連接畫布(VCCanvas)。在這種情況 下,由于不能夠?yàn)樵粗苯觿?chuàng)建視圖,因此,不創(chuàng)建源的畫布。在這種情 況下,使用連接器樹來(lái)創(chuàng)建詞匯連接畫布。這種詞匯連接畫布僅僅處理 事件轉(zhuǎn)換,而并不會(huì)有助于將文檔呈現(xiàn)在屏幕上。3. 目的區(qū)(DestinationZone)、窗格(Pane)以及畫布(Canvas) 如上所述,詞匯連接子系統(tǒng)的目的在于同時(shí)創(chuàng)建并維護(hù)對(duì)同一文檔的兩種表述。第二表述也是DOM樹形式,先前作為目的DOM樹已被說(shuō) 明。為了瀏覽第二種表述的文檔,需要目的區(qū)、畫布和窗格。在創(chuàng)建詞匯連接畫布后,將創(chuàng)建相應(yīng)的目的窗格 (DestinationPane ) 307。此夕卜,相關(guān)的目的畫布(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)事件、鍵盤事件、拖動(dòng)和放置事件、以及 通知文檔的目的(第二種)表述的詞匯的特有事件。4. 詞匯連接命令子系統(tǒng)作為詞匯連接(VC)子系統(tǒng)300的一部分是詞匯連接(VC)命令子 系統(tǒng)313。詞匯連接命令子系統(tǒng)313創(chuàng)建詞匯連接命令(VCCommand) 315,詞匯連接命令315用來(lái)執(zhí)行與詞匯連接子系統(tǒng)300相關(guān)的指令???通過(guò)內(nèi)建的命令模板(CommandTemplate) 318來(lái)創(chuàng)建詞匯連接命令,和 /或可通過(guò)在腳本子系統(tǒng)314中使用腳本語(yǔ)言從無(wú)到有地創(chuàng)建命令而創(chuàng)建 詞匯連接命令。命令模板中包括,例如"If ,命令模板、"When"命令模板、"Insert fragment"命令模板等。這些模板被用來(lái)創(chuàng)建詞匯連接命令。5. XPath子系統(tǒng)XPath子系統(tǒng)316是文檔處理系統(tǒng)的 一個(gè)重要組件,它有助于實(shí)現(xiàn)詞 匯連接。連接器304通常包括XPath信息。如上所述,詞匯連接的任務(wù)之 一是將源DOM樹的變化反映到目的DOM樹中。XPath信息包括一個(gè)或多 個(gè)XPath表述,用來(lái)確定對(duì)改變/修改加以監(jiān)視的源DOM樹的子集。6. 源DOM樹、目的DOM樹和連接器樹(ConnectorTree)的概述 源DOM樹是對(duì)轉(zhuǎn)換為另一種詞匯之前的詞匯表述的文檔進(jìn)行表述的DOM樹或區(qū)。在源DOM樹中的節(jié)點(diǎn)被稱為源節(jié)點(diǎn)。另一方面,如已在前面結(jié)合詞匯連接描述的,目的DOM樹是通過(guò)映 射轉(zhuǎn)換后以不同詞匯表述的文檔的DOM樹或區(qū)。目的DOM樹中的節(jié)點(diǎn) 被稱為目的節(jié)點(diǎn)。連接器樹是基于用來(lái)表述源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系的連接 器的分級(jí)表述。連接器監(jiān)視源節(jié)點(diǎn)和對(duì)源文檔進(jìn)行的修改,修改目的 DOM樹。連接器是被允許修改目的DOM樹的唯一對(duì)象。E.文檔處理系統(tǒng)中的事件流為了能夠使用,程序必需對(duì)來(lái)自用戶的命令進(jìn)行響應(yīng)。事件是一種 描述和執(zhí)行用戶對(duì)程序?qū)嵤┑膭?dòng)作的方法。許多高級(jí)語(yǔ)言例如Java (注 冊(cè)商標(biāo))依靠描述用戶動(dòng)作的事件。在現(xiàn)有技術(shù)中,程序需要主動(dòng)收集 信息以理解用戶操作和由程序自己執(zhí)行用戶的操作。這意味著,例如, 在對(duì)程序自身初始化后,為了在用戶對(duì)屏幕、鍵盤和鼠標(biāo)等執(zhí)行了任何 操作時(shí)進(jìn)行適當(dāng)?shù)奶幚?,進(jìn)入反復(fù)確認(rèn)用戶操作的循環(huán)。然而,這種處 理難以操控。此外,這種處理在等候用戶作某些事情時(shí),還需要執(zhí)行循 環(huán)的程序,從而消耗了CPU周期。許多語(yǔ)言通過(guò)包含不同的范例來(lái)解決這些問(wèn)題。其中的 一 個(gè)范例即 事件驅(qū)動(dòng)程序構(gòu)成了所有現(xiàn)代的視圖系統(tǒng)的基礎(chǔ)。在這種范例中,所有 的用戶動(dòng)作屬于被稱為"事件"的抽象現(xiàn)象的集合。事件足夠詳細(xì)地描述 了特定的用戶動(dòng)作。程序不是主動(dòng)地收集用戶創(chuàng)建的事件,而是在要監(jiān) -亂的事件發(fā)生時(shí),由系統(tǒng)通知程序。以這種方式處理用戶交互的禾呈序3皮稱為"事件驅(qū)動(dòng)"。在多數(shù)場(chǎng)合,使用"事件(Event)"類來(lái)進(jìn)行處理,其中事件類獲取 所有用戶創(chuàng)建事件的基本特性。文檔處理系統(tǒng)定義和使用其自身的事件以及處理這些事件的方式。 有幾種類型的事件被使用。例如,鼠標(biāo)事件是由用戶的鼠標(biāo)操作引起的 事件。與鼠標(biāo)有關(guān)的用戶操作由畫布210傳遞到鼠標(biāo)事件。因此,畫布 可以被認(rèn)為是用戶與系統(tǒng)交互的最前沿。如果需要,作為最前沿的畫布 將把其與事件有關(guān)的內(nèi)容傳遞到其下(子)級(jí)。另一方面,按鍵事件從畫布210產(chǎn)生。按鍵事件具有瞬時(shí)的焦點(diǎn)。 即,按鍵事件總是涉及操作。輸入到畫布210的按鍵事件接著被傳遞到 其上級(jí)(父)。鍵盤輸入通過(guò)能夠處理字符串插入的不同事件而被處 理。處理字符串插入的事件將在使用鍵盤插入字符時(shí)發(fā)生。其他的"事 件"例如包括以與拖動(dòng)事件、放置事件和鼠標(biāo)事件相似的方式處理的其他 事件。1. 在詞匯連接之外的事件處理使用事件線程對(duì)事件進(jìn)行傳遞。在接收到事件后,畫布210改變其 狀態(tài)。如果需要,畫布210將命令(Command) 1052記入到命令隊(duì)列 (CommandQueue ) 1053。2. 在詞匯連接之內(nèi)的事件處理通過(guò)使用詞匯連接插件301,作為目的畫布一例的XHTML畫布 (XHTMLCanvas) 1106接收現(xiàn)有的事件,例如鼠標(biāo)事件、鍵盤事件、拖 動(dòng)和放置事件、以及詞匯中的特有事件。這些事件接著被通知到連接器 304。更具體地說(shuō),如圖21 (b)所示,詞匯連接插件301內(nèi)的事件流經(jīng) 過(guò)源窗格(SourcePane) 1103、詞匯畫布1104、目的窗格1105、作為目 的畫布的實(shí)施例的目的畫布1106、目的DOM樹和連4妄器樹。F.程序調(diào)用器(Programlnvoker)及其與其他組件之間的關(guān)系 在圖14 (a)中更加詳細(xì)地顯示了程序調(diào)用器103及其與其他組件之間的關(guān)系。程序調(diào)用器103是在執(zhí)行環(huán)境中被執(zhí)行以啟動(dòng)文檔處理系統(tǒng) 的基本程序。如圖ll (b)及圖ll (c)所示,用戶應(yīng)用程序 (User Application ) 106、月良務(wù)代理(ServiceBroker) 1041 、命令調(diào)用器 (Commandlnvoker) 1051和資源(Resource) 109都被聯(lián)接到程序調(diào)用器103 。 如前所述,應(yīng)用程序102是在執(zhí)行環(huán)境中運(yùn)行的組件。同樣,服務(wù)代理 1041管理向系統(tǒng)增加各種功能的插件。另一方面,命令調(diào)用器1051執(zhí)行 用戶提供的指令,維護(hù)用來(lái)執(zhí)行命令的類和函數(shù)。1. 插件和服務(wù)下面將參照?qǐng)D14 (b)詳細(xì)描述服務(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)所示,單個(gè)服務(wù)種類401可具有多個(gè) 相關(guān)的服務(wù)提供器402。每個(gè)服務(wù)提供器都可操作以執(zhí)行所有或部分的 特定服務(wù)種類。另一方面,服務(wù)種類401則定義了服務(wù)的類型。服務(wù)可分為三種類型l)"特征服務(wù)",向文檔處理系統(tǒng)提供特定特 征;2)"應(yīng)用程序服務(wù)",是由文檔處理系統(tǒng)運(yùn)行的應(yīng)用程序;3)"環(huán) 境服務(wù)",提供在整個(gè)文檔處理系統(tǒng)中需要的特征。圖14 ( d )中示出了服務(wù)的例子。根據(jù)應(yīng)用程序服務(wù)的種類 (Category),系統(tǒng)實(shí)用程序是相應(yīng)服務(wù)提供器的示例。同樣,Editlet 206是一個(gè)種類,HTML Editlet和SVG Editlet是相應(yīng)的服務(wù)提供器。區(qū)工 廠205是服務(wù)的另一種,并具有相應(yīng)的服務(wù)提供器(未示出)。已經(jīng)描述的向文檔處理系統(tǒng)增加功能的插件,可以看作是由幾個(gè)服 務(wù)提供器402和與其相關(guān)的類構(gòu)成的單元。各個(gè)插件都具有在定義文件 中記載的從屬關(guān)系和服務(wù)種類401 。2. 程序調(diào)用器(Programlnvoker)和應(yīng)用程序之間的關(guān)系圖14 (e)詳細(xì)顯示了程序調(diào)用器103和用戶應(yīng)用程序106之間的關(guān) 系。所需的文檔、數(shù)據(jù)等從存儲(chǔ)器中載入。所有需要的插件載入到服務(wù)代理1041。服務(wù)代理1041維護(hù)并管理所有的插件。可將插件物理地增加 到系統(tǒng),或者可從存儲(chǔ)器中載入其功能。在載入插件的內(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)更詳細(xì)地示出了載入程序調(diào)用器103中的應(yīng)用程序服務(wù)的 結(jié)構(gòu)。作為命令子系統(tǒng)105組件的命令調(diào)用器1051調(diào)用或執(zhí)行程序調(diào)用 器103內(nèi)的命令1052。命令1052則是用來(lái)在文檔處理系統(tǒng)中處理XML等 文檔和編輯相應(yīng)的XML DOM樹的指令。命令調(diào)用器1051維護(hù)執(zhí)4于命令 1052所需的類和功能。服務(wù)調(diào)用器1041也在程序調(diào)用器103中執(zhí)行。用戶應(yīng)用程序106連接 到用戶界面107和核心組件110。核心組件11 O提供了一種在所有的窗格中 共享文檔的方式。核心組件110還提供字體并作為用于窗格的工具包。圖15 (b)顯示了框架(frame)1071、菜單欄(MenuBar)1072和狀態(tài)欄 (StatusBar)1073之間的關(guān)系。H. 應(yīng)用禾呈序核心圖16 (a)進(jìn)一步解釋了應(yīng)用程序核心108,其保持所有文檔以及作 為文檔一部分及屬于文檔的數(shù)據(jù)。核心組件1 IO聯(lián)接到管理文檔1082的 文檔管理器(DocumentManager) 1081。文檔管理器1081是存儲(chǔ)到與文檔處 理系統(tǒng)關(guān)聯(lián)的存儲(chǔ)器中的所有文檔1082的所有者。為了便于在屏幕上顯示文檔,文檔管理器1081還連接到根窗格 (RootPane)1084。剪貼板(ClipBoard)1087、快照(SnapShot)1088、拖拉和 放置(Drag&Drop)601以及重疊(Overlay)602的功能也被聯(lián)接到核心組件 110。快照1088用來(lái)撤消應(yīng)用程序狀態(tài)。在用戶啟動(dòng)快照1088的功能時(shí), 應(yīng)用程序的當(dāng)前狀態(tài)被檢測(cè)并存儲(chǔ)。之后,在應(yīng)用程序的狀態(tài)變?yōu)榱硪?狀態(tài)時(shí),所存儲(chǔ)的狀態(tài)的內(nèi)容被保存下來(lái)。在圖16(b)中示出了快照 1088。在操作中,當(dāng)應(yīng)用程序從一個(gè)URL移動(dòng)到另一個(gè)時(shí),快照1088記住先前的狀態(tài),從而能夠無(wú)縫地執(zhí)行后退和前進(jìn)操作。 I.在文檔管理器中組織文檔圖17 (a)更加詳細(xì)地描述了文檔管理器1081以及如何在文檔管理器 中組織并保存文檔。如圖ll (b)所示,文檔管理器1081管理文檔 1082。在圖17 ( a)顯示的實(shí)施例中,多個(gè)文檔中的一個(gè)為根文檔 (RootDocument) 701 ,其他的文檔為子文檔(SubDocument) 702。文 檔管理器1081連接到根文檔701,根文檔701則連接到所有的子文檔 702。如圖12和17 (a)所示,文檔管理器1081耦合到文檔容器203,文檔 容器203是管理所有文檔1082的對(duì)象。形成包括DOM服務(wù) (DOMService)703和IO管理器(IOManager ) 704的工具包201 (例如, XML工具包)的一部分的工具也提供給文檔管理器1081。再參照?qǐng)D17 (a) , DOM服務(wù)703創(chuàng)建基于由文檔管理器1081管理的文檔的DOM 樹。各個(gè)文檔705,不管是根文檔701還是子文檔702都由相應(yīng)的文檔容 器203管理。圖17 (b)顯示了一組文檔A-E是如何以分級(jí)結(jié)構(gòu)排列的實(shí)施例。文 檔A為根文檔。文檔B-D是文檔A的子文檔。文檔E則是文檔D的子文 檔。圖17(b)的左側(cè)顯示了與此相同文檔的分級(jí)結(jié)構(gòu)顯示在屏幕上的 實(shí)施例。作為根文檔的文檔A顯示為基礎(chǔ)框架。文檔A的子文檔B-D顯示 為在基礎(chǔ)框架A內(nèi)的子框架。文檔D的子文檔E在屏幕上顯示為子框架D 的子框架。再參照?qǐng)D17(a),為各個(gè)文檔容器203創(chuàng)建撤消管理器706 (UndoManager:撤消管理單元)和撤消封裝器(Undo Wrapper) 707。 撤消管理器706和撤消封裝器707用來(lái)執(zhí)行可撤消的命令。使用該特征, 可以撤消使用編輯操作對(duì)文檔所作的改變。子文檔中的改變也會(huì)涉及到 根文檔。撤消操作考慮到對(duì)分級(jí)結(jié)構(gòu)內(nèi)其他文檔產(chǎn)生影響的改變,例 如,如圖7 (c)所示,確保維護(hù)在分級(jí)結(jié)構(gòu)鏈中的所有文檔之間的一致 性。撤消封裝器707將與容器203中的子文檔相關(guān)的撤消對(duì)象進(jìn)行封裝,并將它們和與根文檔相關(guān)的撤消對(duì)象耦合。撤消封裝器707收集可撤消 編輯接受器(UndoableEditAcceptor:可撤消編輯接受單元)709可利用 的撤消對(duì)象。撤消管理器706和撤消封裝器707連接到可撤消編輯接收器709和可 撤消編輯源(UndoableEditResource ) 708。本領(lǐng)域技術(shù)人員應(yīng)該理解, 文檔705可以是可撤消編輯源708 ,也可以是可撤消編輯對(duì)象的源。J.撤消命令和撤消框架圖18 (a)和18 (b)進(jìn)一步詳細(xì)地顯示了撤消框架和撤消命令。如 圖18 ( a )所示,撒消命令(UndoCommand ) 801 、重{故命令 (RedoCommand ) 802和可4敬消編輯命令(UndoableEditCommand ) 803 是能夠排列在如圖ll (b)所示的命令調(diào)用器1051中的命令,并且被順 序執(zhí)行??沙废庉嬅?03還進(jìn)一步聯(lián)接到可撤消編輯源708和可撤消 編輯接受器709。 "foo"編輯命令804和"bar"編輯命令805就是可撤消編輯 命令的例子。1.可撤消編輯命令的執(zhí)行圖18 (b)顯示了可撤消編輯命令的執(zhí)行。首先,假設(shè)用戶使用編 輯命令來(lái)編輯文檔705。在第一步驟S1,可撤消編輯接受器709被聯(lián)接到 可才敬消編輯源708,而可4歆消編輯源708為文檔705的DOM樹。在第二步 驟S2,基于由用戶發(fā)出的命令,使用DOM API對(duì)文檔705進(jìn)行編輯。在 第三步驟S3,向變化事件監(jiān)聽器通知已經(jīng)發(fā)生了改變。即,在該步驟, 監(jiān)視DOM樹中所有改變的監(jiān)聽器檢測(cè)編輯操作。在第四步驟S4,可撤消 的編輯作為撤消管理器706的對(duì)象被存儲(chǔ)。在第五步驟S5,可撤消編輯 接受器709與可撤銷編輯源708分開??沙废庉嬙?08也可以是文檔705 本身。K.與向系統(tǒng)載入文檔有關(guān)的步驟上述子部分描述了系統(tǒng)的各個(gè)組件和子組件。下面將描述在使用這 些組件時(shí)用到的方法。圖19 (a)顯示了如何將文檔載入到文檔處理系統(tǒng)中的總體圖。在圖24-28中,結(jié)合特定的例子詳細(xì)地描述各個(gè)步驟。簡(jiǎn)言之,文檔處理系統(tǒng)從文檔中包含的數(shù)據(jù)構(gòu)成的二進(jìn)制數(shù)據(jù)流創(chuàng) 建DOM。為文檔中的感興趣的并屬于"區(qū)"中的 一部分創(chuàng)建頂節(jié)點(diǎn) (ApexNode:頂點(diǎn)節(jié)點(diǎn))。接著確定相應(yīng)的"窗格"。所確定的窗格從頂 節(jié)點(diǎn)和物理屏幕表面創(chuàng)建"區(qū)"和"畫布"。接著,"區(qū)"為各個(gè)節(jié)點(diǎn)創(chuàng)建"方 面",并為它們提供所需信息。畫布創(chuàng)建用于呈現(xiàn)DOM樹的節(jié)點(diǎn)的數(shù)據(jù) 結(jié)構(gòu)。具體地,文檔從存儲(chǔ)器901載入。創(chuàng)建文檔的DOM樹902。創(chuàng)建保持 文檔的相應(yīng)文檔容器903。接著將文檔容器903聯(lián)接到文檔管理器904。 DOM樹包括根節(jié)點(diǎn),在一些情況下可包括多個(gè)次級(jí)節(jié)點(diǎn)。這種文檔一般既包含文本也包含圖形。因此,DOM樹例如不僅具有 XHTML子樹也可以具有SVG子樹。XHTML子樹具有XHTML頂節(jié)點(diǎn) (ApexNode) 905。同樣,SVG子樹具有SVG頂節(jié)點(diǎn)906。在步驟l,將頂節(jié)點(diǎn)906聯(lián)接到窗格907,窗格907是屏幕的邏輯布 局。在步驟2,窗格907向作為窗口擁有者(PaneOwner) 908的核心組件 請(qǐng)求用于頂節(jié)點(diǎn)的906區(qū)工廠。在步驟3,窗口擁有者908返回區(qū)工廠以 及用于頂節(jié)點(diǎn)906的Editlet。在步驟4,窗格907創(chuàng)建區(qū)909,區(qū)909聯(lián)接至窗格907。在步驟5,區(qū) 909為各個(gè)節(jié)點(diǎn)創(chuàng)建"方面",并聯(lián)接到相應(yīng)的節(jié)點(diǎn)。在步驟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)對(duì)應(yīng)于畫布以及數(shù)據(jù)結(jié)構(gòu)體。由于命令對(duì)文檔及其各種關(guān) 系執(zhí)行控制操作,所以控制(C)包括畫布中所包含的命令。L.文檔的表述下面將使用圖20來(lái)描述文檔及其各種表述的實(shí)施例。在該實(shí)施例中 使用的文檔既包含文本也包含圖片。文本使用XHTML表述,而圖片用 SVG表述。圖20詳細(xì)顯示了文檔組件以及相應(yīng)對(duì)象的關(guān)系的MVC表述。 在該示例中,文檔1001聯(lián)接到保持文檔1001的文檔容器1002。文檔通過(guò) DOM樹1003表述。DOM樹包括頂節(jié)點(diǎn)1004。頂節(jié)點(diǎn)用陰影圓圏表示。非頂節(jié)點(diǎn)用非陰影圓圏表示。用來(lái)編輯節(jié) 點(diǎn)的"方面"用三角形表示,并被聯(lián)接到相應(yīng)的節(jié)點(diǎn)。由于文檔具有文本 和圖片,所以該文檔的DOM樹包括XHTML部分和SVG部分。頂節(jié)點(diǎn) 1004是XHTML子樹的最頂部的節(jié)點(diǎn)。該節(jié)點(diǎn)被聯(lián)接到XHTML窗格 1005 , XHTML窗格(XHTMLPane ) 1005是文檔XHTML部分的物理表 述的最頂部窗格。頂節(jié)點(diǎn)1004還聯(lián)接到XHTML區(qū)(XHTMLZone) 1006 , 其中XHTML區(qū)1006是文檔的DOM樹的 一 部分。與節(jié)點(diǎn)1004相對(duì)應(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。維護(hù)和呈現(xiàn)文檔的XHTML部分所需的各種命令1008 也被增加到XHTML畫布1007 。同樣,文檔的SVG子樹的頂節(jié)點(diǎn)1010被聯(lián)接到SVG區(qū) (SVGZone)lOl 1 , SVG區(qū)101 l是用于表述文檔的SVG組件的文檔1001的 DOM樹的部分。頂節(jié)點(diǎn)1010被聯(lián)接到SVG窗格(SVGPane)1013, SVG窗 格IOI3是文檔的SVG部分的物理表述的最頂部窗格。表述文檔的SVG部 分的邏輯表述的SVG畫布(SVGCanvas)1012通過(guò)SVGEditlet創(chuàng)建,并被聯(lián) 接到SVG窗格1013。用于將文檔的SVG部分呈現(xiàn)在屏幕上的數(shù)據(jù)結(jié)構(gòu)和 命令被聯(lián)接到SVG畫布。例如,如圖所示,這種數(shù)據(jù)結(jié)構(gòu)可包括圓圏、 線、矩形等。對(duì)于結(jié)合圖20描述的文檔例表述的一部分,參照?qǐng)D21 (a)用已經(jīng)描 述的MVC范例來(lái)作進(jìn)一步描述。圖21 (a)提供了文檔1001的XHTML組 件中的MV關(guān)系的簡(jiǎn)化圖。4莫型是用于文檔1001的XHTML組件的XHTML區(qū)(XHTMLZone) 1101。在XHTML區(qū)的樹中包括幾個(gè)節(jié)點(diǎn)及 其相應(yīng)的"方面"。相應(yīng)的XHTML區(qū)和窗格是MVC范例的模型(M)部 分的一部分。MVC范例的視圖(V)部分是用于文檔1001的HTML組件 的相應(yīng)的XHTML畫布(XHTMLCanvas ) 1102和盒樹。通過(guò)畫布以及其 中所包含的命令,文檔的XHTML部分被呈現(xiàn)在屏幕上。鍵盤和鼠標(biāo)輸 入等事件如圖所示,向相反方向進(jìn)行處理。源窗格(SourcePane)具有附加功能,也就是說(shuō),起到DOM保持器 的作用。圖21 (b)提供了在圖21 (a)中示出的用于文檔1001的組件的 詞匯連接。作為源DOM保持器的源窗格1103包含文檔的源DOM樹。連 接器樹通過(guò)連接器工廠創(chuàng)建,創(chuàng)建還起到目的DOM的保持器作用的目的 窗格(DestinationPane ) 1105。目的窗格1105以盒樹的形式被布置為 XHTML目的畫布(XHTMLDestinationCanvas ) 1106。M.插件子系統(tǒng)、詞匯連接和連接器之間的關(guān)系圖22 (a) - (c)分別顯示了與插件子系統(tǒng)、詞匯連接和連接器相關(guān) 的進(jìn)一步的細(xì)節(jié)。插件子系統(tǒng)被用來(lái)向文檔處理系統(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é)點(diǎn)相對(duì)應(yīng)的畫布。區(qū)工廠的例子是分別創(chuàng)建XHTML區(qū)和SVG區(qū)的XHTML區(qū)工廠 (XHTMLZoneFactory ) 1211和SVG區(qū)工廠(SVGZoneFactory ) 1212。 如上文檔示例所述,文檔的文本組件可通過(guò)創(chuàng)建XHTML區(qū)來(lái)表述,而 圖片則可使用SVG區(qū)來(lái)表述。Editlet服務(wù)的示例包括XHTML Editlet 1221 和SVGEditlet 1222。圖22 (b)進(jìn)一步詳細(xì)顯示了詞匯連接。如上所述,詞匯連接是文 檔處理系統(tǒng)的重要特征,其能夠使兩種不同方式的文檔的表述和顯示保 持一致。對(duì)連接器工廠303加以維護(hù)的詞匯連接管理器302是詞匯連接子 系統(tǒng)的一部分。連接器工廠303創(chuàng)建文檔的連接器304。如上所述,連接 器監(jiān)3見源DOM中的節(jié)點(diǎn),并^多改目的DOM中的節(jié)點(diǎn),以維護(hù)兩種表述之間的一致性。模板(Template) 317表述用于一些節(jié)點(diǎn)的轉(zhuǎn)換規(guī)則。詞匯連接描述 符(VCD)文件是表示一些規(guī)則的模板列表,這些規(guī)則用于將滿足某種 路徑或規(guī)則的元素或元素集合轉(zhuǎn)換為其他的元素。模板317和命令模板 318都聯(lián)接到詞匯連接管理器302。詞匯連接管理器是管理VCD文件中所 有部分的對(duì)象。對(duì)一個(gè)VCD文件創(chuàng)建一個(gè)詞匯連接管理器對(duì)象。圖22 (c)提供了有關(guān)連接器的進(jìn)一步的細(xì)節(jié)。連接器工廠303從源 文檔中創(chuàng)建連接器。連接器工廠303與詞匯、模板和元素模板聯(lián)接,并 分別創(chuàng)建詞匯連接器(VocabularyConnector )、模板連接器 (TemplateConnector)和元素連接器(ElementConnector)。詞匯連接管理器302維護(hù)連接器工廠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ū)中頂點(diǎn)的連接器。根據(jù)需要遞歸地創(chuàng)建子連接 器。通過(guò)VCD文件中的一組模板創(chuàng)建連接器樹。模板是用于將標(biāo)記語(yǔ)言的元素轉(zhuǎn)換為其他元素的規(guī)則的集合。例 如,各個(gè)模板與源DOM樹或區(qū)相匹配。在正確匹配時(shí),創(chuàng)建頂點(diǎn)連接 器。例如,模板"A/"D"匹配所有從節(jié)點(diǎn)A開始、在節(jié)點(diǎn)D結(jié)束的樹分 支,而不考慮節(jié)點(diǎn)A和節(jié)點(diǎn)D之間的節(jié)點(diǎn)。同樣,"〃B"對(duì)應(yīng)于所有來(lái)自 根節(jié)點(diǎn)的"B"節(jié)點(diǎn)。N.與VCD文件相關(guān)的連接器樹(ConnectorTree )的示例 下面將解釋與特定文檔相關(guān)的處理。名為"MySampleXML"的文檔 :故載入到文檔處理系統(tǒng)。圖23顯示了用于"MySampleXJML"文件的^f吏用 詞匯連接管理器及連接器工廠樹(ConnectorFactoryTree)的VCD腳本的實(shí)施例。在圖中顯示了腳本文件內(nèi)的詞匯部分、才莫板部分以及在詞匯連接管 理器中的相應(yīng)組件。在標(biāo)簽"vcd:vocabulary"下提供了屬性"match"為 "sample:root" ," label"為"MySampleXML", 以及"call-template"為"sampleTemplatc"。在該實(shí)施例中,在"MySampleXML"的詞匯連接管理器中,詞匯包括 頂點(diǎn)元素"sample:root"。相應(yīng)的UI標(biāo)注為"MySampleXML"。在模板部 分,標(biāo)簽為"vcd:template",名稱為"sample template"。O.將文件載入系統(tǒng)的方法的詳細(xì)實(shí)施例圖24 - 28顯示了載入文檔"MySampleXML"的詳細(xì)描述。在步驟 1 ,如圖24 ( a )所示,文檔從存儲(chǔ)器1405中載入。DOM服務(wù) (DOMService )創(chuàng)建DOM樹以及文檔管理器1406對(duì)應(yīng)的文檔容器 1401。文檔容器1401聯(lián)接到文檔管理器1406。文檔包括XHTML和 MySampleXML的子樹。XHTML頂節(jié)點(diǎn)1403是具有標(biāo)簽"xhtml:html"的 XHTML的最頂部的節(jié)點(diǎn)。"MySampleXML"的頂節(jié)點(diǎn)1404是具有標(biāo)簽 "sample:root"的"MySampleXML"的最頂部的節(jié)點(diǎn)。在步驟2,如圖24(b)所示,根窗格為文檔創(chuàng)建XTML區(qū)、"方面" 和畫布。創(chuàng)建與頂節(jié)點(diǎn)1403對(duì)應(yīng)的窗格1407、 XHTML區(qū)1408、 XHTML 畫布1409和盒樹1410。在步驟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"對(duì)應(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中,各個(gè)連接器創(chuàng)建目的DOM對(duì)象。 一些連接器 包括XPath信息。XPath信息包括一個(gè)以上的XPath表達(dá)式,XPath表達(dá)式 用來(lái)確定需要對(duì)是否發(fā)生了改變/修改加以監(jiān)測(cè)的源DOM樹的子集。在圖28所示的步驟7中,詞匯從源DOM的窗格形成目的DOM樹的目 的窗格。這基于源窗格(SourcePane)來(lái)完成。目的樹的頂節(jié)點(diǎn)聯(lián)接到 目的窗格(DestinationPane )以及相應(yīng)的區(qū)。目的窗格創(chuàng)建目的畫布 (DestinationCanvas)。而且,為目的窗格提供用于以目的格式呈現(xiàn)文 檔的數(shù)據(jù)結(jié)構(gòu)和命令,以及用于目的窗格自身的Editlet。圖29 (a)顯示了只是存在于目的樹上的節(jié)點(diǎn)上發(fā)生時(shí)的事件流,而 不具有相應(yīng)的源節(jié)點(diǎn)。如鼠標(biāo)事件和鍵盤事件等由畫布所獲取的事件是 通過(guò)目的樹而被傳遞到元素才莫板連接器(ElementTemplateConnector)。 元素模板連接器不具有相應(yīng)的源節(jié)點(diǎn),因此被傳送的事件并不是對(duì)源節(jié) 點(diǎn)的編輯操作。如果所傳送的事件與命令模板(CommandTemplate)中 描述的命令相匹配,則元素模板連接器執(zhí)行相應(yīng)的動(dòng)作。如果沒有相匹 配的命令,則元素模板連接器忽略所傳送的事件。圖29 ( b )顯示了在目的樹的節(jié)點(diǎn)上發(fā)生事件的情況下的流 (flow),該目的樹的節(jié)點(diǎn)通過(guò)文本連接器(TextOfConnector)與源節(jié) 點(diǎn)相關(guān)聯(lián)。文本連接器從由源DOM樹的XPath規(guī)定的節(jié)點(diǎn)獲取文本節(jié) 點(diǎn),并將該文本節(jié)點(diǎn)映射為目的DOM樹的節(jié)點(diǎn)。如鼠標(biāo)事件和鍵盤事件 等由畫布所獲取的事件通過(guò)目的樹而被傳送到文本連接器。文本連接器將所傳送的事件映射為相應(yīng)源節(jié)點(diǎn)的編輯命令,并將這些命令設(shè)置在隊(duì) 列(Queue) 1053中。編輯命令是通過(guò)"方面"執(zhí)行的DOM的API調(diào)用集 合。當(dāng)執(zhí)行設(shè)置在隊(duì)列中的命令時(shí),編輯源節(jié)點(diǎn)。在編輯源節(jié)點(diǎn)時(shí),發(fā) 出變化事件,并且將對(duì)源節(jié)點(diǎn)的修改通知到注冊(cè)為監(jiān)聽器的文本連接 器。文本連接器重新建立目的樹,從而在相應(yīng)的目的節(jié)點(diǎn)中反映出對(duì)源 節(jié)點(diǎn)的修改。此時(shí),如果包含文本連接器的模板包括控制聲明,例如 "for each"和"for loop",則連接器工廠重新評(píng)估控制聲明。在重建文本連 接器后,重建目的樹。(實(shí)施例)圖30是用于說(shuō)明本實(shí)施例中的數(shù)據(jù)處理內(nèi)容的示意圖。服務(wù)器裝置 通過(guò)控制使得被對(duì)象化的數(shù)據(jù)能夠由多個(gè)用戶編輯。用戶通過(guò)客戶終端 操作服務(wù)器裝置的數(shù)據(jù)。首先,服務(wù)器裝置獲取要被編輯/閱覽的源數(shù)據(jù)。源數(shù)據(jù)也可以是XML文檔文件中包括的數(shù)據(jù),也可以是保存在數(shù)據(jù) 庫(kù)中的數(shù)據(jù)等任意數(shù)據(jù)。源數(shù)據(jù)也可以從多個(gè)源文件抽出。服務(wù)器裝置 將這些源數(shù)據(jù)作為 一個(gè)源對(duì)象進(jìn)行對(duì)象化。源對(duì)象具有作為成員變量的源數(shù)據(jù),并提供用于訪問(wèn)這些成員變量 的成員函數(shù)。用戶不是直接訪問(wèn)源文件,而是通過(guò)源對(duì)象的成員函數(shù)訪 問(wèn)作為成員變量保持的源數(shù)據(jù)。當(dāng)從XML文檔文件生成源對(duì)象時(shí),還可 以提供遵循DOM規(guī)格的接口 。另外,通過(guò)前提技術(shù)中敘述的VC功能, 源對(duì)象的成員變量也可以各種形式層次結(jié)構(gòu)化。例如,還可以準(zhǔn)備用于 將數(shù)據(jù)庫(kù)中包括的源數(shù)據(jù)結(jié)構(gòu)化的結(jié)構(gòu)定義文件,將這些源數(shù)據(jù)結(jié)構(gòu) 化。由此,生成將層次結(jié)構(gòu)化的源數(shù)據(jù)設(shè)為成員變量的源對(duì)象。源對(duì)象由來(lái)自客戶終端的訪問(wèn)來(lái)操作。 一種用于將源對(duì)象從客戶終 端操作的方法如下1. 下載源對(duì)象到客戶終端2. 在客戶終端中對(duì)源對(duì)象編輯操作3. 將由編輯操作更新的源對(duì)象上載到服務(wù)器裝置,或者將表示編 輯內(nèi)容的編輯信息發(fā)送到服務(wù)器裝置,在服務(wù)器裝置中更新源對(duì)象。上述的操作是可能實(shí)現(xiàn)的。但是,源對(duì)象的數(shù)據(jù)量相對(duì)于客戶終端 的存儲(chǔ)器容量來(lái)說(shuō)較大時(shí),將源對(duì)象完全部署在客戶終端的本地存儲(chǔ)器中是不現(xiàn)實(shí)的。大多是用戶訪問(wèn)源對(duì)象的成員函數(shù)中 一部分就足夠了 。因此,為了提高對(duì)源對(duì)象訪問(wèn)的效率,服務(wù)器裝置從一個(gè)源對(duì)象生 成多個(gè)部分對(duì)象。部分對(duì)象中包括源數(shù)據(jù)作為成員變量,并提供用于訪 問(wèn)這些源數(shù)據(jù)的成員函數(shù)。但是,部分對(duì)象只將源數(shù)據(jù)中的一部分設(shè)為 成員變量,因此與源對(duì)象相比,數(shù)據(jù)量特別小??蛻艚K端下載將要訪問(wèn) 的作為成員變量的源數(shù)據(jù)的部分對(duì)象,從而代替下載源對(duì)象整體。當(dāng)編 輯下載到客戶終端中的部分對(duì)象時(shí),服務(wù)器裝置根據(jù)其編輯內(nèi)容更新源 對(duì)象。根據(jù)這種方法,能夠抑制客戶終端的存儲(chǔ)器使用量。另外,當(dāng)用戶 A訪問(wèn)部分對(duì)象oc時(shí),用戶B幾乎不影響用戶A的訪問(wèn)就能夠訪問(wèn)部分對(duì) 象p。因此,多個(gè)用戶能夠有效地訪問(wèn)源對(duì)象。然而,也有多個(gè)用戶希 望同時(shí)訪問(wèn)同一部分對(duì)象的情況。這種情況下,服務(wù)器裝置需要調(diào)整多個(gè)訪問(wèn)請(qǐng)求。圖31用于說(shuō)明對(duì)某部分對(duì)象進(jìn)行多個(gè)訪問(wèn)要求時(shí)的控制方法的序列 圖。在此,將要訪問(wèn)對(duì)象的部分對(duì)象稱作部分對(duì)象cc。圖31示出了從客 戶終端A、 B、 C對(duì)該部分對(duì)象ct進(jìn)行訪問(wèn)請(qǐng)求的情況。首先,當(dāng)客戶終 端A向部分對(duì)象ct請(qǐng)求訪問(wèn)時(shí),對(duì)部分對(duì)象oc生成寫標(biāo)記(Write Token)和讀標(biāo)記(Read Token)的一對(duì)標(biāo)記。以下,將客戶終端A的寫 標(biāo)記稱作"AW",讀標(biāo)記稱作"AR"。對(duì)客戶終端B、 C也以同樣方式 標(biāo)記。對(duì)每個(gè)部分對(duì)象都生成標(biāo)記,當(dāng)訪問(wèn)不同于部分對(duì)象oc的部分對(duì) 象P時(shí),生成新的標(biāo)記對(duì)。寫標(biāo)記是表示對(duì)部分對(duì)象的編輯權(quán)的標(biāo)記。讀標(biāo)記是表示對(duì)部分對(duì) 象的閱覽權(quán)的標(biāo)記。編輯權(quán)是指通過(guò)部分對(duì)象的成員函數(shù)變更成員變量 的權(quán)利。閱覽權(quán)是指當(dāng)部分對(duì)象的成員變量變更時(shí)實(shí)時(shí)閱覽最新數(shù)據(jù)的 權(quán)利。在下文中,將編輯權(quán)和閱覽權(quán)稱作"訪問(wèn)權(quán)"。讀標(biāo)記和寫標(biāo)記 對(duì)生成后,其中一個(gè)標(biāo)記保持在服務(wù)器裝置,另一標(biāo)記保持在客戶終 端。在圖31中,首先客戶終端A請(qǐng)求部分對(duì)象oc的閱覽權(quán)。這種情況下,客戶終端A保持AR,而將AW發(fā)送到服務(wù)器(S10)。 客戶終端A通過(guò)剩下的AR認(rèn)為保持著閱覽權(quán)。另一方面,接受AW的服 務(wù)器裝置認(rèn)為擔(dān)負(fù)著將部分對(duì)象a的最新數(shù)據(jù)通知客戶終端A的義務(wù)。 當(dāng)服務(wù)器裝置接受AW時(shí),將部分對(duì)象a的數(shù)據(jù)發(fā)送到客戶終端A (S12)。接著,客戶終端B也請(qǐng)求部分對(duì)象a的閱覽權(quán)。客戶終端B將 BW發(fā)送到服務(wù)器,而保持BR(S14)。當(dāng)服務(wù)器裝置接受BW時(shí),將部 分對(duì)象a的數(shù)據(jù)發(fā)送到客戶終端B (S16)??蛻艚K端C請(qǐng)求部分對(duì)象a的編輯權(quán)。這種情況下,客戶終端C將 CR發(fā)送給服務(wù)器裝置,并保持CW(S18)??蛻艚K端C通過(guò)剩下的CW 認(rèn)為保持著編輯權(quán)。另一方面,接受CR的服務(wù)器裝置認(rèn)為其擔(dān)負(fù)著從客 戶終端C接收更新部分對(duì)象oc的義務(wù)。當(dāng)服務(wù)器裝置接受CR時(shí),將部分 對(duì)象ct的數(shù)據(jù)發(fā)送到客戶終端C (S20)。由此,服務(wù)器裝置向獲取訪問(wèn) 權(quán)的客戶終端發(fā)送部分對(duì)象ct的數(shù)據(jù)。各客戶終端將在本地保持部分對(duì) 象a的數(shù)據(jù)。 一個(gè)部分對(duì)象的閱覽權(quán)提供給多個(gè)客戶終端,但是提供編 輯權(quán)的客戶終端是一個(gè)或者零個(gè)。因此,即使未圖示的客戶終端D重新請(qǐng)求部分對(duì)象a的編輯權(quán),服務(wù)器裝置也會(huì)拒絕該請(qǐng)求。在獲取了編輯權(quán)的客戶終端C中,當(dāng)編輯操作本地中保持的部分對(duì) 象a時(shí),更新部分對(duì)象a的內(nèi)容,即成員變量(S22)。從客戶終端C向 服務(wù)器裝置發(fā)送表示其編輯內(nèi)容的編輯信息(S24)。服務(wù)器裝置更新 源對(duì)象使得編輯內(nèi)容反映在源對(duì)象的相應(yīng)部分(S26)。服務(wù)器裝置向 具有閱覽權(quán)的客戶終端A、 B發(fā)送編輯信息(S28、 S30)??蛻艚K端A和 B分別根據(jù)編輯信息更新本地中保持的部分對(duì)象oc (S32、 S34)。由 此,客戶終端C中的部分對(duì)象a的編輯內(nèi)容也反映在服務(wù)器裝置的源對(duì) 象、以及客戶終端A、 B的部分對(duì)象a中。在圖31中,之后客戶終端C放棄編輯權(quán),取而代之請(qǐng)求閱覽權(quán)。當(dāng) 客戶終端C將表示編輯權(quán)的CW發(fā)送到服務(wù)器裝置時(shí)(S36),服務(wù)器裝 置將CR返回客戶終端C (S38)。由此,客戶終端C代替放棄編輯權(quán)而獲 取閱覽權(quán)。由于》文棄了部分對(duì)象ct的編輯權(quán),客戶終端B通過(guò)發(fā)送BR (S40),接受BW(S42)來(lái)重新獲取編輯權(quán)。此外,在客戶終端C放棄 了對(duì)部分對(duì)象a的訪問(wèn)權(quán)的情況下,客戶終端C將CW發(fā)送到服務(wù)器裝 置,服務(wù)器裝置將CW和CR對(duì)刪除。接著,將參照具體的實(shí)施方式說(shuō)明 作為服務(wù)器裝置和客戶終端的這些裝置。圖32是數(shù)據(jù)管理裝置的功能框圖。數(shù)據(jù)管理裝置3100是作為與圖 30、圖31關(guān)聯(lián)說(shuō)明的服務(wù)器裝置工作的裝置。這里所說(shuō)的各模塊,硬件 能夠由以計(jì)算機(jī)CPU為首的元件、機(jī)械裝置實(shí)現(xiàn),軟件是由計(jì)算機(jī)程序 等實(shí)現(xiàn),但是這里描繪了由這些協(xié)同實(shí)現(xiàn)的功能模塊。因而,這些功能 模塊能夠由硬件、軟件的組合以各種形式實(shí)現(xiàn),這對(duì)于本領(lǐng)域從業(yè)人員 是可以理解的。對(duì)于下面的圖33所示功能框圖也相同。數(shù)據(jù)管理裝置3100包括用戶接口處理單元3110、通信單元3120、數(shù) 據(jù)處理單元3130以及數(shù)據(jù)保存單元3140。用戶接口處理單元3110擔(dān)當(dāng)著 如來(lái)自用戶的輸入處理、對(duì)用戶的信息顯示的用戶接口相關(guān)的全部處 理。通信單元3120擔(dān)當(dāng)著與作為客戶終端工作的數(shù)據(jù)處理終端3200之間 的通信處理。對(duì)于數(shù)據(jù)處理終端3200將參照?qǐng)D33在下面詳述。在本實(shí)施 例中,以由用戶接口處理單元31 IO提供數(shù)據(jù)管理裝置3100的用戶接口服 務(wù)為例進(jìn)行說(shuō)明。作為其他例子,也可以是用戶通過(guò)因特網(wǎng)操作數(shù)據(jù)管理裝置3100。基于通過(guò)用戶接口處理單元3110的輸入操作以及從通信單元3120獲 取的數(shù)據(jù),數(shù)據(jù)處理單元3130執(zhí)行各種數(shù)據(jù)處理。數(shù)據(jù)處理單元3130還 起到用戶接口處理單元3110、通信單元3120以及數(shù)據(jù)保存單元3140之間 接口的作用。數(shù)據(jù)保存單元3140保存各種數(shù)據(jù),例如預(yù)先準(zhǔn)備的各種設(shè) 定數(shù)據(jù),以及從數(shù)據(jù)處理單元3130接收的數(shù)據(jù)。數(shù)據(jù)保存單元3140包括源數(shù)據(jù)保持單元3166、對(duì)象保持單元3168、 訪問(wèn)權(quán)信息保持單元3170以及結(jié)構(gòu)化的管理文件保持單元3172。源數(shù)據(jù) 保持單元3166保存作為源對(duì)象源的XML文檔文件等源數(shù)據(jù)。對(duì)象保持單 元3168保存例如源對(duì)象和部分對(duì)象等的對(duì)象數(shù)據(jù)。訪問(wèn)權(quán)信息保持單元 3170保持從數(shù)據(jù)處理終端3200接收,的讀標(biāo)記和寫標(biāo)記。結(jié)構(gòu)化的管理文 件保持單元3172保存結(jié)構(gòu)化的管理文件。結(jié)構(gòu)化的管理文件是指表示源 對(duì)象中的節(jié)點(diǎn)層次結(jié)構(gòu)。詳細(xì)情況將后述。通信單元3120包括訪問(wèn)請(qǐng)求接收單元3142、部分對(duì)象發(fā)送單元 3144、結(jié)構(gòu)化的管理文件發(fā)送單元3146、編輯信息接收單元3148以及編 輯信息發(fā)送單元3150。訪問(wèn)請(qǐng)求接收單元3142從數(shù)據(jù)處理終端3200接收 訪問(wèn)請(qǐng)求信息。這里所說(shuō)的訪問(wèn)請(qǐng)求信息是用于向部分對(duì)象請(qǐng)求編輯權(quán) 或者閱覽權(quán)的數(shù)據(jù)。作為訪問(wèn)請(qǐng)求信息發(fā)送的數(shù)據(jù)是在其中將要訪問(wèn)的 部分對(duì)象、請(qǐng)求訪問(wèn)的數(shù)據(jù)處理終端3200、以及讀標(biāo)記或?qū)憳?biāo)記的任何 一個(gè)標(biāo)記進(jìn)行打包的數(shù)據(jù)。部分對(duì)象發(fā)送單元3144向請(qǐng)求訪問(wèn)的數(shù)據(jù)處理終端3200發(fā)送指定了 部分對(duì)象的數(shù)據(jù)。結(jié)構(gòu)化的管理文件發(fā)送單元3146向各數(shù)據(jù)處理終端 3200發(fā)送結(jié)構(gòu)化的管理文件。結(jié)構(gòu)化的管理文件發(fā)送單元3146可以向各 數(shù)據(jù)處理終端3200發(fā)送結(jié)構(gòu)化的管理文件,而與是否存在訪問(wèn)請(qǐng)求無(wú) 關(guān)。編輯信息接收單元3148從獲取了編輯權(quán)的數(shù)據(jù)處理終端3200接收編 輯信息。編輯信息發(fā)送單元3150向獲取了閱覽權(quán)的數(shù)據(jù)處理終端3200發(fā) 送編輯信息。數(shù)據(jù)處理單元3130包括對(duì)象處理單元3152和訪問(wèn)權(quán)管理單元3154。 對(duì)象處理單元3152執(zhí)行例如對(duì)源數(shù)據(jù)進(jìn)行對(duì)象化等的面向?qū)ο筇幚怼TL 問(wèn)^又管理單元3154通過(guò)讀標(biāo)記和寫標(biāo)記管理每個(gè)部分對(duì)象的訪問(wèn)權(quán)。即訪問(wèn)權(quán)管理單元3154根據(jù)從數(shù)據(jù)處理終端3200接收的讀標(biāo)記和寫標(biāo)記, 執(zhí)行基于訪問(wèn)權(quán)的判定處理,例如通過(guò)選擇確定編輯信息應(yīng)向那個(gè)客戶 端發(fā)送、以及是否執(zhí)行源對(duì)象更新處理。對(duì)象處理單元3152進(jìn)一步包括源對(duì)象生成單元3156、源對(duì)象更新單 元3158、部分對(duì)象生成單元3160以及結(jié)構(gòu)化的管理文件處理單元3162。 源對(duì)象生成單元3156將源數(shù)據(jù)結(jié)構(gòu)化來(lái)生成源對(duì)象。生成的源對(duì)象保存 在源對(duì)象保持單元3168中。部分對(duì)象生成單元3160從源對(duì)象生成多個(gè)部 分對(duì)象。生成的多個(gè)部分對(duì)象也保存在對(duì)象保持單元3168中。當(dāng)在具有 編輯斥又的數(shù)據(jù)處理終端3200中更新部分對(duì)象時(shí),編輯信息接收單元3148 從該數(shù)據(jù)處理終端3200接收編輯信息。源對(duì)象更新單元3158#4居編輯信 息更新源對(duì)象。根據(jù)來(lái)自源對(duì)象更新單元3158的指示,部分對(duì)象生成單 元3160也更新相應(yīng)的部分對(duì)象。結(jié)構(gòu)化的管理文件處理單元3162生成表 示源對(duì)象節(jié)點(diǎn)層次結(jié)構(gòu)的結(jié)構(gòu)化的管理文件。當(dāng)節(jié)點(diǎn)層次結(jié)構(gòu)由于源對(duì) 象更新而變化時(shí),結(jié)構(gòu)化的管理文件處理單元3162更新結(jié)構(gòu)化的管理文 件。當(dāng)更新了結(jié)構(gòu)管理信息時(shí),結(jié)構(gòu)化的管理文件發(fā)送單元3146向各數(shù) 據(jù)處理終端3200重新發(fā)送更新后的結(jié)構(gòu)化的管理文件。圖33是數(shù)據(jù)處理終端的功能框圖。數(shù)據(jù)處理終端3200是作為與圖 30、圖31關(guān)聯(lián)而說(shuō)明的客戶終端工作的裝置。數(shù)據(jù)處理終端3200包括用 戶接口處理單元3210、通信單元3220、數(shù)據(jù)處理單元3230以及數(shù)據(jù)保存 單元3240。數(shù)據(jù)處理終端3200的用戶接口處理單元3210也擔(dān)當(dāng)關(guān)于用戶 接口的全部處理,例如,用戶的輸入處理、或向用戶顯示信息的處理。 數(shù)據(jù)處理終端3200擔(dān)當(dāng)與作為服務(wù)器裝置連接的數(shù)據(jù)管理裝置3100之間 的通信處理。在本實(shí)施例中,以由用戶接口處理單元3210提供H據(jù)處理 終端3200的用戶接口服務(wù)為例進(jìn)行說(shuō)明。作為其他例,也可以是用戶通 過(guò)因特網(wǎng)操作數(shù)據(jù)處理終端3200。基于通過(guò)用戶接口處理單元3210進(jìn)行的輸入操作、或從通信單元 3220獲取的數(shù)據(jù),數(shù)據(jù)處理單元3230執(zhí)行各種數(shù)據(jù)處理。數(shù)據(jù)處理單元 3230還起到用戶接口處理單元3210、通信單元3220以及數(shù)據(jù)保存單元 3240之間接口的作用。數(shù)據(jù)保存單元3240保存各種數(shù)據(jù),例如,預(yù)先準(zhǔn) 備的各種設(shè)定數(shù)據(jù)或從數(shù)據(jù)處理單元3230接收的數(shù)據(jù)。數(shù)據(jù)保存單元3240包括部分對(duì)象保持單元3256、結(jié)構(gòu)化的管理文件 保持單元3262、訪問(wèn)標(biāo)記保持單元3264。部分對(duì)象保持單元3256保存從 數(shù)據(jù)管理裝置3100接收的部分對(duì)象。部分對(duì)象保持單元3256包括第1保 持單元3258和第2保持單元3260。要被編輯或閱覽等操作的部分對(duì)象保 存在第1保持單元3258中。另外,當(dāng)不對(duì)部分對(duì)象進(jìn)行編輯或預(yù)覽操作 時(shí),該部分對(duì)象保存在第2保持單元3260中。更具體地說(shuō),第l保持單元 3258可以由小容量且可高速訪問(wèn)的主存儲(chǔ)裝置(main memory)實(shí)現(xiàn)。 另一方面,第2保持單元3260可以由大容量且訪問(wèn)速度相對(duì)低速的石更盤 等輔助存儲(chǔ)裝置(auxiliary storage unit)實(shí)現(xiàn)。結(jié)構(gòu)化的管理文件保持 單元3262保持結(jié)構(gòu)化的管理文件。訪問(wèn)標(biāo)記保持單元3264對(duì)獲取了訪問(wèn) 權(quán)的每個(gè)部分對(duì)象保持標(biāo)記。通信單元3220包括訪問(wèn)請(qǐng)求發(fā)送單元3242、部分對(duì)象接收單元 3244、結(jié)構(gòu)化的管理文件接收單元3246、編輯信息發(fā)送單元3248以及編 輯信息接收單元3250。訪問(wèn)請(qǐng)求發(fā)送單元3242向數(shù)據(jù)管理裝置3100發(fā)送 訪問(wèn)請(qǐng)求信息。部分對(duì)象接收單元3244從數(shù)據(jù)管理裝置3100接收部分對(duì) 象。結(jié)構(gòu)化的管理文件接收單元3246從數(shù)據(jù)管理裝置3100接收結(jié)構(gòu)化的 管理文件。編輯信息發(fā)送單元3248從數(shù)據(jù)管理裝置3100接收與要被閱覽 的部分對(duì)象相關(guān)的編輯信息。編輯信息接收單元3250將與要被編輯的部 分對(duì)象相關(guān)的編輯信息發(fā)送到數(shù)據(jù)管理裝置3100。數(shù)據(jù)處理單元3230包括部分對(duì)象更新單元3252和訪問(wèn)權(quán)管理單元 3254。部分對(duì)象更新單元3252根據(jù)對(duì)獲取了編輯權(quán)的部分對(duì)象的編輯操 作,更新部分對(duì)象保持單元3256的部分對(duì)象。另外,當(dāng)接收了與獲取了 閱覽權(quán)的部分對(duì)象相關(guān)的編輯信息時(shí),根據(jù)編輯信息更新部分對(duì)象保持 單元3256的部分對(duì)象。訪問(wèn)權(quán)管理單元3254通過(guò)標(biāo)記管理對(duì)各部分對(duì)象 的訪問(wèn)權(quán)。在下面,示例從源對(duì)象生成部分對(duì)象的過(guò)程,說(shuō)明訪問(wèn)源對(duì) 象時(shí)的用戶接口。圖34是用于說(shuō)明從源對(duì)象生成部分對(duì)象的過(guò)程的示意圖。在圖31中 示意性地示出了節(jié)點(diǎn)1~16的形成樹狀結(jié)構(gòu)的源對(duì)象。該源對(duì)象是包括16 個(gè)以上節(jié)點(diǎn)的巨大對(duì)象,但是這里將圖31所示的16個(gè)節(jié)點(diǎn)作為對(duì)象說(shuō) 明。當(dāng)源數(shù)據(jù)是XML文檔文件數(shù)據(jù)時(shí),由標(biāo)簽確定的元素(element)對(duì)應(yīng)一個(gè)節(jié)點(diǎn)。另外,當(dāng)源數(shù)據(jù)是規(guī)定的數(shù)據(jù)庫(kù)中包括的數(shù)據(jù)時(shí),成為其 元素的數(shù)據(jù)對(duì)應(yīng)一個(gè)節(jié)點(diǎn)。但是,源對(duì)象中的節(jié)點(diǎn)和源數(shù)據(jù)的對(duì)應(yīng)關(guān)系 可以任意決定。在圖34中,16個(gè)節(jié)點(diǎn)分配到pl至p8的八個(gè)部分對(duì)象。例如,部分對(duì) 象pl是作為成員變量只包括節(jié)點(diǎn)l,提供用于操作與節(jié)點(diǎn)l相關(guān)聯(lián)的數(shù)據(jù) 的成員函數(shù)的對(duì)象。另一方面,與p6對(duì)應(yīng)的部分對(duì)象包括節(jié)點(diǎn)8、 9、 10、 11、 24五個(gè)節(jié)點(diǎn),提供用于操作這些節(jié)點(diǎn)的成員函數(shù)。節(jié)點(diǎn)和部分 對(duì)象的對(duì)應(yīng)關(guān)系也可以由用戶〗壬意身見定。例如一個(gè)節(jié)點(diǎn)也可以對(duì)應(yīng)一個(gè) 部分對(duì)象。圖35是結(jié)構(gòu)化的管理文件的數(shù)據(jù)結(jié)構(gòu)圖。圖34所示的各部分對(duì)象和 各節(jié)點(diǎn)的層次結(jié)構(gòu)作為結(jié)構(gòu)化的管理文件而被管理。部分對(duì)象欄3270表 示部分對(duì)象的名。上對(duì)象欄3272表示位置處于處于與部分對(duì)象欄3270中 對(duì)應(yīng)的部分對(duì)象之上的部分對(duì)象。下對(duì)象欄3274表示位置處于與部分對(duì) 象欄3270中對(duì)應(yīng)的部分對(duì)象之下的部分對(duì)象。成員節(jié)點(diǎn)欄3276表示部分 對(duì)象中包括的節(jié)點(diǎn)名。由此,結(jié)構(gòu)化的管理文件是用于表示不包括每個(gè) 節(jié)點(diǎn)數(shù)據(jù)內(nèi)容的源對(duì)象層次結(jié)構(gòu)的文件。當(dāng)源對(duì)象的層次結(jié)構(gòu)由節(jié)點(diǎn)的 追加、刪除而變化時(shí),數(shù)據(jù)管理裝置3100的結(jié)構(gòu)化的管理文件處理單元 3162更新結(jié)構(gòu)化的管理文件。結(jié)構(gòu)化的管理文件發(fā)送單元3146向各數(shù)據(jù) 處理終端3200發(fā)送更新后的結(jié)構(gòu)化的管理文件。此外,部分對(duì)象欄3270、上對(duì)象欄3272、下對(duì)象欄3274也可以表示 用于各部分對(duì)象的指針。另外,源對(duì)象的全部數(shù)據(jù)沒有必要保存在單一 的數(shù)據(jù)管理裝置3100中。例如,在源對(duì)象數(shù)據(jù)分散保持在多個(gè)數(shù)據(jù)管理 裝置3100中的情況下,結(jié)構(gòu)化的管理文件還可以包括與數(shù)據(jù)管理裝置 3100有關(guān)的信息,即各部分對(duì)象實(shí)體存在哪里。這種情況下,數(shù)據(jù)處理 終端3200根據(jù)請(qǐng)求訪問(wèn)的部分對(duì)象,參照結(jié)構(gòu)化的管理文件判斷應(yīng)該向 哪個(gè)數(shù)據(jù)管理裝置3 IOO發(fā)送訪問(wèn)請(qǐng)求信息。圖36是在數(shù)據(jù)處理終端中選擇要被閱訪問(wèn)的數(shù)據(jù)時(shí)的屏幕圖。數(shù)據(jù) 處理終端3200的用戶4姿口處理單元3210參照結(jié)構(gòu)化的管理文件顯示節(jié)點(diǎn) 結(jié)構(gòu)顯示屏幕3280,以示出源對(duì)象中的節(jié)點(diǎn)層次結(jié)構(gòu)。用戶通過(guò)用鼠標(biāo) 點(diǎn)擊滾動(dòng)按鈕3284、滾動(dòng)按鈕3282,從而可滾動(dòng)屏幕來(lái)觀看整體層次結(jié)構(gòu)。與其他部分對(duì)象相比,強(qiáng)調(diào)顯示部分對(duì)象p3和部分對(duì)象p7。這表示 部分對(duì)象p3和部分對(duì)象p7已經(jīng)下載完成。換句話說(shuō),對(duì)于部分對(duì)象p3和 部分對(duì)象p7,獲取了訪問(wèn)權(quán)。部分對(duì)象p3上顯示的"W"表示獲取了部 分對(duì)象p3的編輯權(quán)。部分對(duì)象p7右上顯示的"R"表示獲取了部分對(duì)象 p7的閱覽權(quán)。當(dāng)部分對(duì)象p3管理的節(jié)點(diǎn)4被指定要被訪問(wèn)時(shí),部分對(duì)象 保持單元3256的部分對(duì)象p3的數(shù)據(jù)加載到第l保持單元3258。此時(shí),暫 時(shí)未被訪問(wèn)的部分對(duì)象p7可以保存到第2保持單元3260。另外,當(dāng)未保持在本地中的部分對(duì)象p4被指定為要被訪問(wèn)時(shí),數(shù)據(jù) 處理終端3200的訪問(wèn)權(quán)管理單元3254生成部分對(duì)象p4的寫標(biāo)記和讀標(biāo)記 對(duì)。在用戶請(qǐng)求編輯權(quán)時(shí),讀標(biāo)記被打包為訪問(wèn)請(qǐng)求信息并^皮發(fā)送到數(shù) 據(jù)管理裝置3100。當(dāng)請(qǐng)求閱覽權(quán)時(shí),寫標(biāo)記被打包為訪問(wèn)請(qǐng)求信息,并 被發(fā)送到數(shù)據(jù)管理裝置3100。該數(shù)據(jù)處理終端3200從數(shù)據(jù)管理裝置3100 接收部分對(duì)象p4的數(shù)據(jù),并將其保存在部分對(duì)象保持單元3256的第1保 持單元3258中。此時(shí),部分對(duì)象p4的顯示部分重新變換為強(qiáng)調(diào)顯示。在用戶放棄對(duì)部分對(duì)象p3的編輯權(quán)來(lái)刪除訪問(wèn)權(quán)本身的情況下,訪 問(wèn)請(qǐng)求發(fā)送單元3242將訪問(wèn)標(biāo)記保持單元3264所保持的寫標(biāo)記發(fā)送到數(shù) 據(jù)管理裝置3100。數(shù)據(jù)管理裝置3100的訪問(wèn)權(quán)管理單元3154將已經(jīng)保持 的讀標(biāo)記和重新接收的寫標(biāo)記刪除,解除對(duì)應(yīng)于部分對(duì)象p3的數(shù)據(jù)處理 終端3200的訪問(wèn)權(quán)。另外,數(shù)據(jù)處理終端3200的部分對(duì)象更新單元3252 將部分對(duì)象p4的數(shù)據(jù)從部分對(duì)象保持單元3256中刪去。此時(shí),與部分對(duì) 象p3相關(guān)的顯示部分從強(qiáng)調(diào)顯示改變?yōu)槠胀@示。放棄部分對(duì)象的閱覽 權(quán)來(lái)刪除訪問(wèn)權(quán)的情況也與此相同。以上,在本實(shí)施例中說(shuō)明了由數(shù)據(jù)管理裝置3100和數(shù)據(jù)處理終端 3200構(gòu)成的數(shù)據(jù)管理系統(tǒng)。數(shù)據(jù)處理終端3200的用戶查看節(jié)點(diǎn)結(jié)構(gòu)顯示 畫面3280的同時(shí),可選擇希望訪問(wèn)的數(shù)據(jù)。當(dāng)以DOM處理XML文檔文 件時(shí),按照層次結(jié)構(gòu)順序?yàn)g覽節(jié)點(diǎn)來(lái)確定要處理的節(jié)點(diǎn)。在這種被稱作 遍歷樹(tree traverse)的處理方法的情況下,當(dāng)前節(jié)點(diǎn)是圖36的節(jié)點(diǎn)4 時(shí),為了處理節(jié)點(diǎn)6,經(jīng)過(guò)節(jié)點(diǎn)l、 2、 3、到達(dá)節(jié)點(diǎn)6。因此,將產(chǎn)生需 要臨時(shí)訪問(wèn)本來(lái)不是訪問(wèn)對(duì)象的節(jié)點(diǎn)l、 2、 3的必要。但是,根據(jù)如本實(shí)施例所示的訪問(wèn)方法,能夠直接獲取訪問(wèn)對(duì)象的部分對(duì)象p4。另外,即使源對(duì)象很大,由于是以部分對(duì)象為單位進(jìn)行訪問(wèn)管理, 因此能夠有效地處理多個(gè)用戶的訪問(wèn)。數(shù)據(jù)處理終端3200根據(jù)獲取的部分對(duì)象是否是要處理的對(duì)象,將第 l保持單元3258和第2保持單元3260的任何一個(gè)作為對(duì)其進(jìn)行保存的裝置 而進(jìn)行切換。因此,在訪問(wèn)多個(gè)部分對(duì)象的情況下,數(shù)據(jù)處理終端3200 可最大限度地利用存儲(chǔ)區(qū)域。此外,權(quán)利要求書中所述的數(shù)據(jù)編輯裝置和數(shù)據(jù)閱覽裝置的各功 能,在本實(shí)施例中是由數(shù)據(jù)處理終端3200單體實(shí)現(xiàn)的。本領(lǐng)域的技術(shù)人 員來(lái)應(yīng)該理解,權(quán)利要求書中描述的各元素執(zhí)行的功能,可以由在本實(shí) 施方式中所示的各功能模塊的單體或者它們的協(xié)同操作來(lái)實(shí)現(xiàn)。以上以實(shí)施方式為基礎(chǔ)對(duì)本發(fā)明節(jié)進(jìn)行了描述。該實(shí)施方式是示 例,本領(lǐng)域技術(shù)人員應(yīng)該理解,在本發(fā)明的范圍內(nèi),可以對(duì)它們的各結(jié) 構(gòu)元素、各處理流程的組合進(jìn)行各種改變。在本實(shí)施方式中,說(shuō)明了處理XML文檔的例子,但是對(duì)于用其他標(biāo) 記語(yǔ)言,例如SGML、 HTML等描述的文檔,也能夠同樣地進(jìn)行處理。在對(duì)本實(shí)施方式的說(shuō)明中假設(shè)了 ,當(dāng)對(duì)象保持單元3256中不存在包 括數(shù)據(jù)處理終端3200的用戶指定要訪問(wèn)的節(jié)點(diǎn)的部分對(duì)象時(shí),數(shù)據(jù)處理 終端3200向數(shù)據(jù)管理裝置3100請(qǐng)求相應(yīng)的部分對(duì)象。作為變形例,數(shù)據(jù) 管理裝置3IOO不僅可以提供與請(qǐng)求要訪問(wèn)的部分對(duì)象相關(guān)的訪問(wèn)權(quán),而 且可以提供與要訪問(wèn)對(duì)象周邊的部分對(duì)象(例如,上部分對(duì)象或下部分 對(duì)象)相關(guān)的訪問(wèn)權(quán)。此時(shí),共同下載要訪問(wèn)的多個(gè)部分對(duì)象。根據(jù)這 種方式,不僅可以獲取當(dāng)前請(qǐng)求要訪問(wèn)的部分對(duì)象,而且還能夠獲取與 認(rèn)為將來(lái)有可能訪問(wèn)的部分對(duì)象有關(guān)的訪問(wèn)權(quán),因此將容易抑制通信處 理次數(shù)。另外,在本實(shí)施例中的說(shuō)明中假設(shè)了數(shù)據(jù)管理裝置3100從源對(duì)象預(yù) 先生成部分對(duì)象。作為變形例,數(shù)據(jù)管理裝置3100也能夠以數(shù)據(jù)處理終 端3200的訪問(wèn)請(qǐng)求為契機(jī),從源對(duì)象的相應(yīng)部分適當(dāng)生成部分對(duì)象。產(chǎn)業(yè)上利用的可能性根據(jù)本發(fā)明,多個(gè)用戶容易有效地操作從源數(shù)據(jù)生成的對(duì)象
權(quán)利要求
1.通過(guò)網(wǎng)絡(luò)與多個(gè)客戶終端連接的數(shù)據(jù)管理裝置,包括源對(duì)象生成單元,生成用于操作要被編輯的一組元素?cái)?shù)據(jù)的源對(duì)象,作為包括一組結(jié)構(gòu)化的元素?cái)?shù)據(jù)和用于訪問(wèn)各元素?cái)?shù)據(jù)的成員函數(shù)的對(duì)象;部分對(duì)象生成單元,從所述源對(duì)象生成多個(gè)部分對(duì)象,作為與所述源對(duì)象中包括的所述一組元素?cái)?shù)據(jù)的一部分對(duì)應(yīng)的對(duì)象;訪問(wèn)請(qǐng)求接收單元,從客戶終端接收訪問(wèn)請(qǐng)求信息,該訪問(wèn)請(qǐng)求信息用于請(qǐng)求在所述多個(gè)部分對(duì)象中指定的部分對(duì)象的編輯權(quán)或者閱覽權(quán);訪問(wèn)權(quán)管理單元,根據(jù)從多個(gè)客戶終端接收的訪問(wèn)請(qǐng)求信息,向各客戶終端分配每個(gè)所述部分對(duì)象的編輯權(quán)和閱覽權(quán);部分對(duì)象發(fā)送單元,向請(qǐng)求對(duì)所述訪問(wèn)請(qǐng)求信息指定的部分對(duì)象進(jìn)行編輯或閱覽的客戶終端發(fā)送該部分對(duì)象的數(shù)據(jù),以使得所述客戶終端本地保存所述的數(shù)據(jù);編輯信息接收單元,當(dāng)在獲取了所述部分對(duì)象的編輯權(quán)的客戶終端中編輯本地保持的該部分對(duì)象時(shí),從獲取所述述編輯權(quán)的客戶終端接收表示所述部分對(duì)象的編輯內(nèi)容的編輯信息;源對(duì)象更新單元,按照接收的所述編輯信息中所示的編輯內(nèi)容,更新所述源對(duì)象的相關(guān)部分;以及編輯信息發(fā)送單元,將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到獲取了所述閱覽權(quán)的客戶終端,從而使得所述編輯內(nèi)容反映在所述客戶終端本地保持的部分對(duì)象的相關(guān)部分中。
2. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)管理裝置,其中,所述源對(duì)象生成單 元從由多個(gè)標(biāo)簽標(biāo)識(shí)元素?cái)?shù)據(jù)的結(jié)構(gòu)化文檔文件生成所述源對(duì)象。
3. 根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)管理裝置,其中,所述源對(duì)象生 成單元參照用于將預(yù)定數(shù)據(jù)庫(kù)中包括的多個(gè)元素?cái)?shù)據(jù)進(jìn)行結(jié)構(gòu)化的預(yù)定結(jié)構(gòu)定義信息,將所述多個(gè)元素?cái)?shù)據(jù)中將要被編輯的 一組元素?cái)?shù)據(jù)進(jìn)行 結(jié)構(gòu)化,并從所結(jié)構(gòu)化的一組元素?cái)?shù)據(jù)生成源對(duì)象。
4. 根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的數(shù)據(jù)管理裝置,還包括 結(jié)構(gòu)化的管理信息保持單元,保持表示源對(duì)象中包括的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu)的結(jié)構(gòu)化的管理信息;結(jié)構(gòu)化的管理信息發(fā)送單元,將所述結(jié)構(gòu)化的管理信息發(fā)送到客戶 終端;以及結(jié)構(gòu)化的管理信息更新單元,根據(jù)源對(duì)象的更新來(lái)更新所述結(jié)構(gòu)化 的管理信息,其中,當(dāng)所述結(jié)構(gòu)化的管理信息所示的一組元素?cái)?shù)據(jù)的層次結(jié)構(gòu)變 化時(shí),所述結(jié)構(gòu)化的管理信息發(fā)送單元將更新后的結(jié)構(gòu)管理信息重新發(fā) 送到所述客戶終端。
5. 數(shù)據(jù)編輯裝置,其與管理源對(duì)象的外部數(shù)據(jù)管理裝置通過(guò)網(wǎng)絡(luò) 連接,該源對(duì)象用于操作要被編輯的一組元素?cái)?shù)據(jù),其中,所述數(shù)據(jù)編 輯裝置包括訪問(wèn)請(qǐng)求信息發(fā)送單元,將用于請(qǐng)求編輯權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到 所述數(shù)據(jù)管理裝置,所述訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù) 據(jù)的一部分,在所述數(shù)據(jù)管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部 分對(duì)象;部分對(duì)象接收單元,從所述數(shù)據(jù)管理裝置接收被指定的部分對(duì)象的 數(shù)據(jù);部分對(duì)象保持單元,保持已接收的所述部分對(duì)象的數(shù)據(jù); 編輯輸入單元,接收用戶對(duì)保持的部分對(duì)象的編輯操作; 部分對(duì)象更新單元,根據(jù)對(duì)所述部分對(duì)象的編輯操作更新所述部分 對(duì)象;以及編輯信息發(fā)送單元,將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā) 送到所述數(shù)據(jù)管理裝置,從而使得所述編輯內(nèi)容反映在所述數(shù)據(jù)管理裝 置的源對(duì)象中。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)編輯裝置,還包括 結(jié)構(gòu)化的管理信息接收單元,從所述數(shù)據(jù)管理裝置接收結(jié)構(gòu)化的管理信息,該結(jié)構(gòu)化的管理信息表示源對(duì)象中包括的 一組元素?cái)?shù)據(jù)的層次 結(jié)構(gòu);結(jié)構(gòu)化的管理信息顯示單元,顯示所述結(jié)構(gòu)化的管理信息; 編輯位置指定單元,接受用戶對(duì)所顯示的結(jié)構(gòu)化的管理信息希望編輯的數(shù)據(jù)位置的輸入;其中,所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信息識(shí)別與所指定的位置對(duì)應(yīng)的部分對(duì)象,并發(fā)送用于請(qǐng)求所識(shí)別的部分對(duì)象的編輯權(quán)的訪問(wèn)請(qǐng)求信息。
7. 根據(jù)權(quán)利要求6所述的數(shù)據(jù)編輯裝置,其中,所述源對(duì)象由多個(gè) 數(shù)據(jù)管理裝置分割為多個(gè)來(lái)保持,并且所述結(jié)構(gòu)化的管理信息還表示所 述源對(duì)象中包括的各元素?cái)?shù)據(jù)的實(shí)體位于哪個(gè)數(shù)據(jù)管理裝置中,所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信息識(shí)別保持被 指定為要被編輯的部分對(duì)象的數(shù)據(jù)管理裝置,并向所識(shí)別出的數(shù)據(jù)管理 裝置發(fā)送訪問(wèn)請(qǐng)求信息。
8. 根據(jù)權(quán)利要求5至7任意一項(xiàng)所述的數(shù)據(jù)編輯裝置,其中,所述 部分對(duì)象保持單元能夠保持多個(gè)部分對(duì)象,并包括第1保持單元,保持要被編輯的部分對(duì)象;第2保持單元,當(dāng)部分對(duì)象未被編輯時(shí)保存在所述第2保持單元中; 當(dāng)指定為要被編輯的部分對(duì)象保持在所述第2保持單元中時(shí),所述訪問(wèn)請(qǐng)求信息發(fā)送單元將該部分對(duì)象從所述第2保持單元加載到所述第1保持單元中,而不發(fā)送訪問(wèn)請(qǐng)求信息。
9. 數(shù)據(jù)閱覽裝置,與管理源對(duì)象的外部數(shù)據(jù)管理裝置通過(guò)網(wǎng)絡(luò)連 接,該源對(duì)象用于操作要被編輯的一組元素?cái)?shù)據(jù),所述數(shù)據(jù)閱覽裝置包 括訪問(wèn)請(qǐng)求信息發(fā)送單元,將用于請(qǐng)求閱覽權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到 所述數(shù)據(jù)管理裝置,所述訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù) 據(jù)的一部分,在所述數(shù)據(jù)管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;部分對(duì)象接收單元,從所述數(shù)據(jù)管理裝置接收所指定的部分對(duì)象的 數(shù)據(jù);部分對(duì)象保持單元,保持已接收的部分對(duì)象的數(shù)據(jù); 編輯信息接收單元,當(dāng)與所保持的部分對(duì)象相當(dāng)?shù)?、源?duì)象的一部分在所述數(shù)據(jù)管理裝置中更新時(shí),接收從所述數(shù)據(jù)管理裝置發(fā)送的編輯信息以表示所更新的內(nèi)容;以及部分對(duì)象更新單元,根據(jù)所述編輯信息更新所述保持的部分對(duì)象。
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)閱覽裝置,還包括 結(jié)構(gòu)化的管理信息接收單元,從所述數(shù)據(jù)管理裝置接收結(jié)構(gòu)化的管理信息,該結(jié)構(gòu)化的管理信息表示源對(duì)象中包括的一組元素?cái)?shù)據(jù)的層次 結(jié)構(gòu);結(jié)構(gòu)化的管理信息顯示單元,顯示所述結(jié)構(gòu)化的管理信息;以及 閱覽位置指定單元,從用戶接收輸入以指定所顯示的結(jié)構(gòu)化的管理信息的所述用戶期望閱覽的數(shù)據(jù)位置;其中所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信息識(shí)另'J與所指定數(shù)據(jù)位置對(duì)應(yīng)的部分對(duì)象,以及發(fā)送用于請(qǐng)求所識(shí)別的部分對(duì)象的閱覽權(quán)的訪問(wèn)請(qǐng)求信息。
11. 根據(jù)權(quán)利要求10所述的數(shù)據(jù)閱覽裝置,其中,源對(duì)象由多個(gè)數(shù) 據(jù)管理裝置分割為多個(gè)來(lái)保持,并且所述結(jié)構(gòu)化的管理信息還表示所述 源對(duì)象中包括的各元素?cái)?shù)據(jù)的實(shí)體位于哪個(gè)數(shù)據(jù)管理裝置中,所述訪問(wèn)請(qǐng)求信息發(fā)送單元參照所述結(jié)構(gòu)化的管理信息識(shí)別保持有 被指定為要被閱覽的部分對(duì)象的數(shù)據(jù)管理裝置,并向所識(shí)別的數(shù)據(jù)管理 裝置發(fā)送訪問(wèn)請(qǐng)求信息。
12. 根據(jù)權(quán)利要求9至11任意一項(xiàng)所述的數(shù)據(jù)閱覽裝置,其中,所 述部分對(duì)象保持單元能夠保持多個(gè)部分對(duì)象,其進(jìn)一步包括第1保持單元,保持要被閱覽的部分對(duì)象;第2保持單元,當(dāng)部分對(duì)象未被閱覽時(shí)保存在所述第2保持單元中; 當(dāng)指定為要被閱覽的部分對(duì)象保持在所述第2保持單元中時(shí),所述訪問(wèn)請(qǐng)求信息發(fā)送單元將該部分對(duì)象從所述第2保持單元加載到所述第1保持單元中,而不發(fā)送訪問(wèn)請(qǐng)求信息。
13. 數(shù)據(jù)管理方法,所述方法在通過(guò)網(wǎng)絡(luò)與多個(gè)客戶終端連接的裝 置中執(zhí)行,并包括生成用于操作要被編輯的一組元素?cái)?shù)據(jù)的源對(duì)象,作為包括一組結(jié) 構(gòu)化的元素?cái)?shù)據(jù)和用于訪問(wèn)各元素?cái)?shù)據(jù)的成員函數(shù)的對(duì)象;從所述源對(duì)象生成多個(gè)部分對(duì)象,作為與所述源對(duì)象中包括的所述 一組元素?cái)?shù)據(jù)的一部分對(duì)應(yīng)的對(duì)象;從客戶終端接收訪問(wèn)請(qǐng)求信息,該訪問(wèn)請(qǐng)求信息用于請(qǐng)求在所述多 個(gè)部分對(duì)象中指定的部分對(duì)象的編輯權(quán)或者閱覽權(quán);根據(jù)從多個(gè)客戶終端接收的訪問(wèn)請(qǐng)求信息,向各客戶終端分配每個(gè) 所述部分對(duì)象的編輯權(quán)和閱覽權(quán);向請(qǐng)求對(duì)所述訪問(wèn)請(qǐng)求信息指定的部分對(duì)象進(jìn)行編輯或閱覽的客戶 終端發(fā)送所述訪問(wèn)請(qǐng)求信息指定的部分對(duì)象的數(shù)據(jù),以使得所述客戶終 端本地保存所述的數(shù)據(jù);當(dāng)在獲取了所述部分對(duì)象的編輯權(quán)的客戶終端中編輯本地保持的該 部分對(duì)象時(shí),從獲取所述述編輯權(quán)的客戶終端接收表示所述部分對(duì)象的 編輯內(nèi)容的編輯信息;按照接收的所述編輯信息中所示的編輯內(nèi)容,更新所述源對(duì)象的相 關(guān)部分;以及將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到獲取了所述閱覽 權(quán)的客戶終端,從而使得所述編輯內(nèi)容反映在所述客戶終端本地保持的 部分對(duì)象的相關(guān)部分中。
14. 數(shù)據(jù)編輯方法,在與管理源對(duì)象的外部數(shù)據(jù)管理裝置通過(guò)網(wǎng)絡(luò) 連接的裝置中執(zhí)行,該源對(duì)象用于操作要被編輯的一組元素?cái)?shù)據(jù),所述 方法包括將用于請(qǐng)求編輯權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置,所述 訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在所述數(shù)據(jù) 管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象; 從所述數(shù)據(jù)管理裝置接收被指定的部分對(duì)象的數(shù)據(jù); 保持已接收的所述部分對(duì)象的數(shù)據(jù); 接收用戶對(duì)保持的部分對(duì)象的編輯操作; 根據(jù)對(duì)所述部分對(duì)象的編輯操作更新所述部分對(duì)象;以及 將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到所述數(shù)據(jù)管理裝 置,從而使得所述編輯內(nèi)容反映在所述數(shù)據(jù)管理裝置的源對(duì)象中。
15. 數(shù)據(jù)閱覽方法,在與管理源對(duì)象的外部數(shù)據(jù)管理裝置通過(guò)網(wǎng)絡(luò) 連接的裝置中執(zhí)行,該源對(duì)象用于操作要被編輯的一組元素?cái)?shù)據(jù),所述 方法包4舌將用于請(qǐng)求閱覽權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置,所述 訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在所述數(shù)據(jù) 管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;從所述數(shù)據(jù)管理裝置接收所指定的部分對(duì)象的數(shù)據(jù);保持已接收的部分對(duì)象的數(shù)據(jù);當(dāng)與所保持的部分對(duì)象相當(dāng)?shù)摹⒃磳?duì)象的一部分在所述數(shù)據(jù)管理裝 置中更新時(shí),接收從所述數(shù)據(jù)管理裝置發(fā)送的編輯信息以表示所更新的 內(nèi)容;以及根據(jù)所述編輯信息更新所述保持的部分對(duì)象。
16. 數(shù)據(jù)管理程序,所述數(shù)據(jù)管理程序?yàn)樵谕ㄟ^(guò)網(wǎng)絡(luò)與多個(gè)客戶終 端連接的裝置中執(zhí)行的計(jì)算機(jī)程序并包括源對(duì)象生成模塊,生成用于操作要被編輯的 一 組元素?cái)?shù)據(jù)的源對(duì) 象,作為包括一組結(jié)構(gòu)化的元素?cái)?shù)據(jù)和用于訪問(wèn)各元素?cái)?shù)據(jù)的成員函數(shù)的對(duì)象;部分對(duì)象生成模塊,從所述源對(duì)象生成多個(gè)部分對(duì)象,作為與所述 源對(duì)象中包括的所述一組元素?cái)?shù)據(jù)的一部分對(duì)應(yīng)的對(duì)象;訪問(wèn)請(qǐng)求接收模塊,從客戶終端接收訪問(wèn)請(qǐng)求信息,該訪問(wèn)請(qǐng)求信 息用于請(qǐng)求在所述多個(gè)部分對(duì)象中指定的部分對(duì)象的編輯權(quán)或者閱覽 權(quán);訪問(wèn)權(quán)管理模塊,根據(jù)從多個(gè)客戶終端接收的訪問(wèn)請(qǐng)求信息,向各 客戶終端分配每個(gè)所述部分對(duì)象的編輯權(quán)和閱覽權(quán);部分對(duì)象發(fā)送模塊,向請(qǐng)求對(duì)所述訪問(wèn)請(qǐng)求信息指定的部分對(duì)象進(jìn) 行編輯或閱覽的客戶終端發(fā)送該部分對(duì)象的數(shù)據(jù),以使得所述客戶終端 本地保存所述的數(shù)據(jù);編輯信息接收模塊,當(dāng)在獲取了所述部分對(duì)象的編輯權(quán)的客戶終端 中編輯本地保持的該部分對(duì)象時(shí),從獲取所述述編輯權(quán)的客戶終端接收 表示所述部分對(duì)象的編輯內(nèi)容的編輯信息;源對(duì)象更新模塊,按照接收的所述編輯信息中所示的編輯內(nèi)容,更 新所述源對(duì)象的相關(guān)部分;以及編輯信息發(fā)送模塊,將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā) 送到獲取了所述閱覽權(quán)的客戶終端,從而使得所述編輯內(nèi)容反映在所述 客戶終端本地保持的部分對(duì)象的相關(guān)部分中。
17.數(shù)據(jù)編輯程序,所述是在與管理源對(duì)象的外部數(shù)據(jù)管理裝置通 過(guò)網(wǎng)絡(luò)連接的裝置中執(zhí)行的計(jì)算機(jī)程序,該源對(duì)象用于操作要被編輯的 一組元素?cái)?shù)據(jù),所述計(jì)算機(jī)程序包括將用于請(qǐng)求編輯權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置的模 塊,所述訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在 所述數(shù)據(jù)管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;從所述數(shù)據(jù)管理裝置接收被指定的部分對(duì)象的數(shù)據(jù)的模塊;保持已接收的所述部分對(duì)象的數(shù)據(jù)的模塊;接收用戶對(duì)保持的部分對(duì)象的編輯操作的模塊;根據(jù)對(duì)所述部分對(duì)象的編輯操作更新所述部分對(duì)象的模塊;以及將表示所述部分對(duì)象的編輯內(nèi)容的編輯信息發(fā)送到所述數(shù)據(jù)管理裝 置,從而使得所述編輯內(nèi)容反映在所述數(shù)據(jù)管理裝置的源對(duì)象中的模 塊。
18.數(shù)據(jù)閱覽程序,所述數(shù)據(jù)閱覽程序是在與管理源對(duì)象的外部數(shù) 據(jù)管理裝置通過(guò)網(wǎng)絡(luò)連接的裝置中執(zhí)行的計(jì)算機(jī)程序,該源對(duì)象用于操 作要被編輯的一組元素?cái)?shù)據(jù),所述數(shù)據(jù)閱覽程序包括將用于請(qǐng)求閱覽權(quán)的訪問(wèn)請(qǐng)求信息發(fā)送到所述數(shù)據(jù)管理裝置的模 塊,所述訪問(wèn)請(qǐng)求信息根據(jù)源對(duì)象中包括的一組元素?cái)?shù)據(jù)的一部分,在 所述數(shù)據(jù)管理裝置生成的多個(gè)部分對(duì)象中指定相應(yīng)的部分對(duì)象;從所述數(shù)據(jù)管理裝置接收所指定的部分對(duì)象的數(shù)據(jù)的模塊;保持已接收的部分對(duì)象的數(shù)據(jù)的模塊;當(dāng)與所保持的部分對(duì)象相當(dāng)?shù)?、源?duì)象的一部分在所述數(shù)據(jù)管理裝 置中更新時(shí),接收從所述數(shù)據(jù)管理裝置發(fā)送的編輯信息以表示所更新的 內(nèi)容的模塊;以及根據(jù)所述編輯信息更新所述保持的部分對(duì)象的模塊。
全文摘要
由多個(gè)用戶有效地編輯數(shù)據(jù)文件。從結(jié)構(gòu)化文檔文件等各種數(shù)據(jù)文件生成源對(duì)象。從源對(duì)象生成多個(gè)部分對(duì)象??蛻艚K端下載與用戶希望編輯或閱覽的數(shù)據(jù)對(duì)應(yīng)的部分對(duì)象。當(dāng)獲取了編輯權(quán)的客戶終端編輯本地部分對(duì)象時(shí),將表示編輯內(nèi)容的編輯信息發(fā)送到服務(wù)器裝置。根據(jù)該編輯信息更新源對(duì)象。另外,當(dāng)其他客戶終端下載相同的部分對(duì)象時(shí),用于反映編輯內(nèi)容的編輯信息從服務(wù)器裝置發(fā)送到客戶終端。
文檔編號(hào)G06F12/00GK101268458SQ20068003420
公開日2008年9月17日 申請(qǐng)日期2006年9月21日 優(yōu)先權(quán)日2005年9月22日
發(fā)明者本橋大輔, 樋浦秀樹 申請(qǐng)人:佳思騰軟件公司