欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種文檔處理的方法

文檔序號(hào):6599740閱讀:181來源:國知局
專利名稱:一種文檔處理的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種對(duì)文檔進(jìn)行處理的系統(tǒng)和方法,特別涉及一種文檔處理方法。
背景技術(shù)
實(shí)際社會(huì)中的文檔處理可以認(rèn)為是建立在紙張的基礎(chǔ)上的,在將文檔電子化的過 程中,如果能完整模擬紙張的特性,就能滿足現(xiàn)有應(yīng)用的需求,具備足夠的實(shí)用價(jià)值。但是 目前的電子文檔并不能完整的模擬紙張的特性,特別是在對(duì)電子文檔進(jìn)行修改和刪除更為 符合紙張的特性。

發(fā)明內(nèi)容
本發(fā)明的目的在于一種文檔處理方法,以更好的模擬紙張的特性。本發(fā)明提供的一種文檔處理方法,其中,所述文檔包括一個(gè)或多個(gè)按順序排列的 層;在編輯所述文檔時(shí),所述方法包括在文檔上新增加一層,將新編輯的內(nèi)容保存到所述新增加的層中,不允許修改和 刪除其余各層的內(nèi)容。通過本發(fā)明實(shí)施例提供的方法,每個(gè)應(yīng)用軟件都只在現(xiàn)有文檔內(nèi)容基礎(chǔ)上添加新 的內(nèi)容,但不修改、不刪除已有的內(nèi)容,使文檔的一個(gè)頁面就象一張紙一樣,可以由不同的 人用不同的筆在紙上不斷寫寫畫畫,但誰都不能修改、刪除已有內(nèi)容,從而使得本文檔處理 系統(tǒng)能更好地模擬紙張的特性。


圖1為依照本發(fā)明的文檔處理系統(tǒng)的結(jié)構(gòu)框圖。圖2為以UOML接口為例子的文檔處理系統(tǒng)。
具體實(shí)施例方式下面,參照附圖,描述依照本發(fā)明的文檔操作系統(tǒng)。如圖1所示,依照本發(fā)明的文檔處理系統(tǒng)主要由三個(gè)部分組成應(yīng)用軟件、文檔庫 系統(tǒng)和存儲(chǔ)器。其中應(yīng)用軟件有一個(gè)上接口部,文檔庫系統(tǒng)有一個(gè)下接口部。存儲(chǔ)器常用的是硬盤或者內(nèi)存,也可以是光盤、閃存、軟盤、磁帶,甚至還可以是遠(yuǎn) 程的存儲(chǔ)設(shè)備,總之只要具備數(shù)據(jù)的存儲(chǔ)能力即可。在存儲(chǔ)器中存儲(chǔ)有多個(gè)文檔,但對(duì)應(yīng)用 軟件而言并不需要關(guān)心文檔的具體存儲(chǔ)方式,只需要按照預(yù)定的文檔模型進(jìn)行操作。各個(gè)軟件的功能千差萬別,對(duì)文檔的操作和記錄的數(shù)據(jù)也各自不同,例如Word和 Excel處理的文檔就大相迥異。為了能夠定義出通用的文檔模型,我們可以參考紙張的特
4性,這是因?yàn)橐约垙堊鳛槲臋n信息的記錄手段是通行至今的標(biāo)準(zhǔn)方法,只要能具備紙張的 所有功能,就能滿足工作、生活等實(shí)際應(yīng)用的需求。根據(jù)這個(gè)思路,我們把文檔中的一頁當(dāng)成一張紙,凡是能畫到紙上的就記錄下 來,即該文檔模型能夠描述頁面上的所有可見內(nèi)容?,F(xiàn)有技術(shù)中的頁面描述語言(如 PostScript)可以描述所有能印在紙上的信息,因此這一部分就不再詳細(xì)闡述。一般說來, 頁面上的可見內(nèi)容最終都可以歸為文字、圖形、圖像三類。如果文檔中涉及到特定字體或特殊字符的話,為了保證在各臺(tái)電腦上都能有相同 的效果,就需要在文檔中嵌入相應(yīng)字庫。為了提高存儲(chǔ)效率,字庫資源應(yīng)當(dāng)共享,這樣即使 在多處使用了同一字符,也只需要嵌入一個(gè)字庫。圖像有時(shí)也是可能在多處出現(xiàn)的,例如每 一頁共同的底圖,或經(jīng)常出現(xiàn)的公司標(biāo)識(shí),這種情況下最好也能共享這些圖像。當(dāng)然,作為更加先進(jìn)的信息處理工具,不能僅僅模擬紙張的特性,還可以增加一些 增強(qiáng)的數(shù)字特性,例如元數(shù)據(jù)、導(dǎo)航、導(dǎo)讀、微縮版面。元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),例如作者、 出版社、出版時(shí)間、ISBN號(hào)等就是圖書的元數(shù)據(jù)。元數(shù)據(jù)是業(yè)內(nèi)通用名詞,也不在此贅述。 導(dǎo)航是類似圖書目錄的信息,也是業(yè)內(nèi)通用名詞。導(dǎo)讀信息描述了一篇文章所在的區(qū)域和 閱讀順序,這樣當(dāng)閱讀者讀完一屏后就可以根據(jù)該信息自動(dòng)判斷下一屏應(yīng)該顯示什么,這 樣還能做到自動(dòng)換欄、自動(dòng)轉(zhuǎn)版,而不用閱讀者再手工指定位置。微縮版面是事先生成的各 頁面的微縮圖,閱讀者可以通過查看微縮版面來指定閱讀哪一頁。文檔模型包含文檔倉庫、文檔庫、文檔集、文檔、頁、層、對(duì)象組、版面對(duì)象等多個(gè)層 次。其中,文檔倉庫由一個(gè)或多個(gè)文檔庫組成,文檔庫之間的關(guān)系相對(duì)于文檔厙之下 的層次之間的關(guān)系相對(duì)要松散一些,文檔庫之間可以非常簡單地組合和拆離,而不用對(duì)文 檔庫本身的數(shù)據(jù)做改動(dòng),該多個(gè)文檔庫之間往往沒有建立統(tǒng)一索引(特別是全文索引),很 多對(duì)文檔倉庫的檢索操作一般都需要遍歷各文檔庫的索引,而沒有統(tǒng)一的索引可用。每個(gè) 文檔庫由一個(gè)或多個(gè)文檔集組成,每個(gè)文檔集由一個(gè)或多個(gè)文檔組成,還可以包含任意數(shù) 量的子文檔集。這里所說的文檔相當(dāng)于目前普通的一個(gè)文檔文件(例如DOC文檔),文檔模 型可以規(guī)定一個(gè)文檔只能屬于一個(gè)文檔集,但允許一個(gè)文檔屬于多個(gè)文檔集也是一種不錯(cuò) 的選擇。文檔庫不是多個(gè)文檔的簡單組合,它把多個(gè)文檔緊密地組織起來,特別是為文檔內(nèi) 容統(tǒng)一建立了各種檢索索引后就能帶來更大的便利性。每個(gè)文檔由一頁或存在一定順序(如前后順序)的多頁組成,每頁的版心可以不 同,而且版心也不一定是矩形的,可以是任意形狀,可以用一條或多條封閉曲線表示版心。每頁又由一層或按一定順序(如上下順序)的多層組成,各層之間如同玻璃板的 疊加關(guān)系。層由任意數(shù)量的版面對(duì)象和對(duì)象組組成,版面對(duì)象是指狀態(tài)(如字體、字號(hào)、顏 色、ROP等)、文字(包括符號(hào))、圖形(如直線、曲線、填充了指定顏色的閉合區(qū)域、漸變色 等)、圖象(如TIF、JPEG、BMP、JBIG等)、語義信息(如標(biāo)題開始、標(biāo)題結(jié)束、換行等)、源文 件、腳本、插件、嵌入式對(duì)象、書簽、鏈接、流媒體、二進(jìn)制數(shù)據(jù)流等。一個(gè)或多個(gè)版面對(duì)象可 以組成一個(gè)對(duì)象組。對(duì)象組也可以包含任意數(shù)量的子對(duì)象組。文檔庫、文檔集、文檔、頁、層都可以還包括元數(shù)據(jù)(如名稱、最后修改時(shí)間等,其 類型可以根據(jù)應(yīng)用需求來設(shè)置)和/或歷史痕跡;文檔中還可以包括導(dǎo)航信息、導(dǎo)讀信息、 微縮版面;也可以把微縮版面放在頁或者層這個(gè)層次;文檔庫、文檔集、文檔、頁、層、對(duì)象
5組都可以還包括數(shù)字簽名;語義信息最好跟著版面信息走,這樣可以避免數(shù)據(jù)冗余,也比較 容易與版面建立對(duì)應(yīng)關(guān)系;文檔庫、文檔還可以包括字庫、圖像等共享對(duì)象。該文檔模型還可以定義一個(gè)或多個(gè)角色,為每個(gè)角色分配一定權(quán)限。權(quán)限以文檔 庫、文檔集、文檔、頁、層、對(duì)象組、元數(shù)據(jù)為單元進(jìn)行分配,定義每個(gè)角色對(duì)該單元是否可 讀、是否可寫、是否可復(fù)制、是否可打?。辉撐臋n模型是一個(gè)超越以往單個(gè)文檔對(duì)應(yīng)單個(gè)文件的方式,文檔庫中包含多個(gè)文 檔集、文檔集中包含多個(gè)文檔,而對(duì)于文檔庫中文檔內(nèi)容,采用了細(xì)粒度的訪問和安全控 制,我們可以具體訪問文檔庫中某個(gè)文字或者矩形,而不像現(xiàn)在的文檔管理系統(tǒng)只能訪問 到文件名。以下詳細(xì)介紹一種符合本發(fā)明的文檔模型。文檔倉庫對(duì)象是由一個(gè)或多個(gè)文檔庫對(duì)象組成。文檔庫對(duì)象是由一個(gè)或多個(gè)文檔 集對(duì)象、任意數(shù)量文檔庫輔助對(duì)象和任意數(shù)量的文檔庫共享對(duì)象組成。其中,文檔庫輔助對(duì) 象是指元數(shù)據(jù)對(duì)象、角色對(duì)象、權(quán)限對(duì)象、插件對(duì)象、索引信息對(duì)象、腳本對(duì)象、數(shù)字簽名對(duì) 象、歷史痕跡對(duì)象等,文檔庫共享對(duì)象是指文檔庫中的不同文檔可能共同使用的對(duì)象,如字 庫對(duì)象、圖像對(duì)象等。其中,每個(gè)文檔集對(duì)象由一個(gè)或多個(gè)文檔對(duì)象、任意數(shù)量的文檔集對(duì)象和任意數(shù) 量的文檔集輔助對(duì)象組成。文檔集輔助對(duì)象是指元數(shù)據(jù)對(duì)象、數(shù)字簽名對(duì)象、歷史痕跡對(duì) 象。當(dāng)文檔集對(duì)象包括多個(gè)文檔集對(duì)象時(shí),其類似于文件夾包括多個(gè)文作夾的形式。并且,每個(gè)文檔對(duì)象由一個(gè)或多個(gè)頁面對(duì)象、任意數(shù)量的文檔輔助對(duì)象和任意數(shù) 量的文檔共享對(duì)象組成。文檔輔助對(duì)象是指元數(shù)據(jù)對(duì)象、字庫對(duì)象、導(dǎo)航信息對(duì)象、導(dǎo)讀信 息對(duì)象、微縮版面對(duì)象、數(shù)字簽名對(duì)象、歷史痕跡對(duì)象等,文檔共享對(duì)象是指文檔中的不同 頁面可能共同使用的對(duì)象,如圖像對(duì)象、印章對(duì)象等。每個(gè)頁面對(duì)象由一個(gè)或多個(gè)層對(duì)象和任意數(shù)量的頁面輔助對(duì)象組成。頁面輔助對(duì) 象是指元數(shù)據(jù)對(duì)象、數(shù)字簽名對(duì)象、歷史痕跡對(duì)象。每個(gè)層對(duì)象由一個(gè)或多個(gè)版面對(duì)象、任意數(shù)量的對(duì)象組和任意數(shù)量的層輔助對(duì)象 組成。層輔助對(duì)象是指元數(shù)據(jù)對(duì)象、數(shù)字簽名對(duì)象、歷史痕跡對(duì)象。對(duì)象組由任意數(shù)量的版 面對(duì)象、任意數(shù)量的對(duì)象組和可選的數(shù)字簽名對(duì)象組成。當(dāng)對(duì)象組包括多個(gè)對(duì)象組時(shí),其類 似于文件夾包括多個(gè)文件夾的形式。進(jìn)一步,版面對(duì)象是指狀態(tài)對(duì)象、文字對(duì)象、直線對(duì)象、曲線對(duì)象、圓弧對(duì)象、路徑 對(duì)象、漸變色對(duì)象、圖像對(duì)象、流媒體對(duì)象、元數(shù)據(jù)對(duì)象、批注對(duì)象、語義信息對(duì)象、源文件對(duì) 象、腳本對(duì)象、插件對(duì)象、二進(jìn)制數(shù)據(jù)流對(duì)象、書簽對(duì)象以及超鏈接對(duì)象。其中,狀態(tài)對(duì)象又是由任意數(shù)量的字符集對(duì)象、字體對(duì)象、字號(hào)對(duì)象、文字顏色對(duì) 象,光柵操作對(duì)象、背景色對(duì)象、線顏色對(duì)象、填充色對(duì)象、線型對(duì)象、線寬對(duì)象、線接頭對(duì) 象、畫刷對(duì)象、陰影對(duì)象、陰影顏色對(duì)象、旋轉(zhuǎn)對(duì)象、空心字對(duì)象、勾邊字對(duì)象、透明對(duì)象、渲 染模式對(duì)象組成。在具體實(shí)施過程中,可以在上述文檔模型基礎(chǔ)上進(jìn)一步增強(qiáng)或簡化。如果在簡化 模型中省略了文檔集對(duì)象,則文檔庫對(duì)象直接由文檔對(duì)象組成;如果在簡化模型中省略了 層對(duì)象,則頁面對(duì)象直接由版面對(duì)象組成。最簡化的文檔模型是只有文檔對(duì)象、頁面對(duì)象、 版面對(duì)象,其中版面對(duì)象只有文字對(duì)象、直線對(duì)象、圖像對(duì)象、字體對(duì)象、字號(hào)對(duì)象。完整模
6型和最簡化模型之間的各種中間模型都屬于本實(shí)施例的變形。為了滿足各種應(yīng)用對(duì)文檔安全性的需求,我們還需要定義一種通用的文檔安全模 型。由于現(xiàn)有軟件的文檔安全功能不夠強(qiáng),或者是安全管理機(jī)制與文檔處理模塊脫節(jié),因此 不難定義一個(gè)涵蓋并超越現(xiàn)有應(yīng)用軟件的通用文檔安全模型1.在文檔庫中定義了若干角色,角色對(duì)象是文檔庫的子對(duì)象。如果對(duì)應(yīng)的文檔模 型中沒有文檔庫對(duì)象,則角色是在文檔中定義的,即角色對(duì)象是文檔對(duì)象的子對(duì)象,此時(shí)本 文檔安全模型中所說的文檔庫均用文檔替代。2.可以指定任意角色對(duì)任意對(duì)象(文檔庫、文檔集、文檔、頁、層、對(duì)象組、版面對(duì) 象等)的訪問權(quán)限。如果指定了對(duì)某個(gè)對(duì)象的訪問權(quán)限,則該權(quán)限將適用于其所有子對(duì)象。3.文檔庫系統(tǒng)實(shí)現(xiàn)的訪問權(quán)限包括是否可讀、是否可寫、是否可再授權(quán)(使其他 角色擁有自己的部分或全部權(quán)限)、是否可收回授權(quán)(去掉其他角色的部分或全部授權(quán))及 上述權(quán)限的排列組合??梢远x更多權(quán)限(如不可打印),但需要由應(yīng)用軟件來配合實(shí)現(xiàn)。4.可以用某個(gè)角色的身份對(duì)各對(duì)象進(jìn)行簽名。簽名范圍將包括該對(duì)象的子對(duì)象, 以及引用到的對(duì)象。5.文檔庫的初始創(chuàng)建者具有對(duì)該文檔庫的所有權(quán)限。6.任何應(yīng)用軟件都可以創(chuàng)建新角色。新角色的初始權(quán)限是對(duì)任何對(duì)象都沒有任何 權(quán)限。可以用具有再授權(quán)權(quán)限的角色對(duì)新角色授予一定的權(quán)限。7.創(chuàng)建角色對(duì)象的指令返回一個(gè)密鑰,作為今后登錄該角色的依據(jù),需要應(yīng)用軟 件妥善保管。該密鑰通常是PKI的私鑰。8.當(dāng)應(yīng)用軟件以某一角色身份登錄時(shí),通常采用“挑戰(zhàn)-應(yīng)答”機(jī)制,即文檔庫系 統(tǒng)用保存的角色公鑰加密一塊數(shù)據(jù)發(fā)給應(yīng)用軟件,應(yīng)用軟件解密后返回給文檔庫系統(tǒng),如 果正確表明應(yīng)用軟件確實(shí)擁有該角色對(duì)應(yīng)的私鑰(為保險(xiǎn)起見該認(rèn)證過程可能會(huì)重復(fù)幾 次)。采用“挑戰(zhàn)_應(yīng)答”機(jī)制可以更好地保護(hù)私鑰的安全性9.可以創(chuàng)建一個(gè)特殊的缺省角色。當(dāng)存在缺省角色時(shí),任何應(yīng)用軟件一打開文檔 庫就視為自動(dòng)以缺省角色身份登錄。10.可以同時(shí)以多個(gè)角色身份登錄,此時(shí)擁有的權(quán)限是各角色權(quán)限的并集。在具體實(shí)施過程中,可以在上述安全模型基礎(chǔ)上進(jìn)一步增強(qiáng)、簡化或合并步驟,都 屬于本實(shí)施例的變形。根據(jù)上述文檔模型、文檔安全模型和常用的文檔操作,可以定義相應(yīng)接口標(biāo)準(zhǔn),用 于發(fā)送對(duì)文檔模型中各對(duì)象進(jìn)行操作的指令。特別地,如果在接口標(biāo)準(zhǔn)中定義了獲取版面 應(yīng)圖的指令,將對(duì)保障版面一致性和文檔互操作性起到非常關(guān)鍵的作用。通過獲取版面位圖的指令,應(yīng)用軟件可以直接獲取指定頁面的指定位圖格式的版 面位圖(用位圖方式表示的該頁面的顯示效果),而不用自行解釋處理每一個(gè)版面對(duì)象。也 就是說,應(yīng)用軟件可以直接獲得準(zhǔn)確的版面位圖用于顯示/打印文檔,而不再需要自己挨 個(gè)讀取頁面上每一層的每一個(gè)版面對(duì)象、自行解釋該對(duì)象的含義并在版面上體現(xiàn)出來。如 果采用后一種方式的話,就又難免出現(xiàn)有的軟件解釋的比較全、比較準(zhǔn)確,有的軟件解釋的 不全或不準(zhǔn)確,導(dǎo)致同一個(gè)文檔在不同軟件出現(xiàn)不同的顯示/打印效果,影響了文檔互操 作的用戶體驗(yàn)。通過由文檔庫系統(tǒng)統(tǒng)一生成版面位圖的方式,將保持版面一致性的關(guān)鍵點(diǎn) 從應(yīng)用軟件移到了文檔庫系統(tǒng),從而為不同的應(yīng)用軟件打開同一文檔都能出現(xiàn)同樣的版面
7效果提供了可行之路。這一方面是因?yàn)槲臋n庫系統(tǒng)是統(tǒng)一的基礎(chǔ)技術(shù)平臺(tái),由少數(shù)幾家專 業(yè)的技術(shù)廠商開發(fā),肯定比各應(yīng)用軟件廠商實(shí)現(xiàn)得完整、準(zhǔn)確,要求各文檔庫系統(tǒng)都能完整 準(zhǔn)確地解釋處理各版面對(duì)象是可行的,而同樣的要求對(duì)應(yīng)用軟件來說就不太可行了 ;另一 方面是因?yàn)椴煌瑧?yīng)用軟件都可以與同一個(gè)文檔庫系統(tǒng)配套使用,這樣就更能確保顯示/打 印效果的一致性了。簡單來說,就是要求應(yīng)用軟件之間保持一致不太可行,而要求文檔庫系 統(tǒng)之間保持一致則是可行的,要求同一個(gè)文檔庫系統(tǒng)保持一致就更沒問題了。因此,為了保 持同一文檔在不同應(yīng)用軟件之間的版面一致性,就需要把相關(guān)責(zé)任從應(yīng)用軟件轉(zhuǎn)移到文檔 庫系統(tǒng),而由文檔庫系統(tǒng)來統(tǒng)一生成版面位圖是其中一個(gè)簡單易行的辦法。更進(jìn)一步,獲取版面位圖的指令還可以指定頁面上的一個(gè)區(qū)域,可用于只顯示頁 面的一個(gè)區(qū)域(例如當(dāng)頁面比屏幕大時(shí)就不需要顯示整頁,滾動(dòng)頁面時(shí)也只需要重畫滾動(dòng) 的區(qū)域);當(dāng)該指令還允許指定獲取特定層組成的版面位圖,特別是可以指定由特定層以 及該層下的所有層組成的版面位圖時(shí),就可以很好地用于展現(xiàn)歷史痕跡,即可以看看在添 加最近這一層以前是什么樣,再往前又是什么樣。如果需要的話,還可以具體指定哪一層參 與位圖的生成,哪一層不參與。在檢索查詢指令中,除了常規(guī)的關(guān)鍵詞檢索外,還可以提供更加豐富的檢索手段。 在常規(guī)的搜索技術(shù)中,搜索是和文檔處理分離的,搜索程序只能從文檔中提取純文本信息, 而無法獲取更多信息,只能基于文本信息檢索。但在本發(fā)明中,檢索查詢功能是集成在文檔 處理的核心層(即文檔庫系統(tǒng))的,這樣就可以更充分地利用文檔中蘊(yùn)含的信息來提供更 為強(qiáng)大的檢索手段,如1.基于字體信息的檢索,如檢索黑體字的“書生”,Times New Roman字體的 “Sursen"ο2.基于字號(hào)信息的檢索,如檢索三號(hào)字的“書生”,20磅以上的‘‘Sursen”,長字(即 字高超過字寬)的“文檔庫”。3.基于顏色的檢索,如檢索紅色的“書生”,藍(lán)色的“Sursen”。4.基于版面位置的檢索,如檢索位于頁面上半部分的“書生”,位于頁腳的 “Sursen"ο5.基于特殊修飾效果的檢索,如檢索斜體字的“書生”,順時(shí)針旋轉(zhuǎn)30度至90度 之間的“Sursen”,空心字的“SEP”,勾邊字的“文檔庫”。6.根據(jù)類似的思路,還可以進(jìn)一步提供其它類型的檢索,如檢索反白(黑底白字) 的“書生”,壓圖的“Sursen”等。7.可以檢索多個(gè)版面對(duì)象的組合,如“書生”距離“Sursen”不超過5厘米。8.上述檢索條件的任意組合?,F(xiàn)在介紹接口標(biāo)準(zhǔn)的實(shí)現(xiàn)方式。接口標(biāo)準(zhǔn)可以是上接口部按照預(yù)先定義的標(biāo)準(zhǔn)格 式生成命令串(如“<U0ML_INSERT(0BJ = PAGE,PARENT = 123. 456. 789,POS = 3)/>”),將 該命令串發(fā)送給下接口部,并從下接口部接收?qǐng)?zhí)行結(jié)果或其它反饋信息;或者是下接口部 提供一些具有標(biāo)準(zhǔn)名稱和參數(shù)的接口函數(shù)(如“BOOL U0I_InsertPage(U0I_Doc*pDoc,int nPage) ”),上接口部直接調(diào)用這些標(biāo)準(zhǔn)函數(shù);或者是上述方法的組合。接口標(biāo)準(zhǔn)還可以用“動(dòng)作+對(duì)象”的方式來定義,這樣便于學(xué)習(xí)和理解,也便于保 持接口標(biāo)準(zhǔn)的穩(wěn)定性。例如,對(duì)20種不同對(duì)象進(jìn)行10種操作,可以定義20x10 = 200種指
8令,也可以定義20種對(duì)象和10種動(dòng)作,但顯然后一種方式大大減輕了記憶的負(fù)擔(dān),而且今 后在對(duì)接口標(biāo)準(zhǔn)進(jìn)行擴(kuò)充時(shí),增加一個(gè)對(duì)象或動(dòng)作也很簡單。例如,我們定義以下7種動(dòng)作打開用于創(chuàng)建或打開文檔庫;關(guān)閉用于關(guān)閉會(huì)話句柄、關(guān)閉文檔庫;獲取用于獲取對(duì)象列表、對(duì)象相關(guān)屬性和數(shù)據(jù);設(shè)置用于設(shè)置/修改對(duì)象數(shù)據(jù);插入插入指定對(duì)象或數(shù)據(jù);刪除用于刪除對(duì)象的某個(gè)子對(duì)象;檢索查詢用于根據(jù)定義條件在文檔中找到符合條件的內(nèi)容,這些條件既可以是 準(zhǔn)確的信息,也可以是不準(zhǔn)確的信息(模糊查找)。我們?cè)俣x如下對(duì)象文檔庫、文檔集、文檔、頁、層、對(duì)象組、文字、圖像、圖形、路 徑(由一組順序圖形連接組成,可以是閉合也可以不閉合的)、源文件、腳本、插件、音頻、視 頻、角色等。對(duì)象還包括下列狀態(tài)對(duì)象背景色、線的顏色、填充色、線型、線寬、R0P、畫刷、陰 影、陰影顏色、字符高、字符寬、旋轉(zhuǎn)、透明、渲染模式等。在采用“動(dòng)作+對(duì)象”方式時(shí),不能自動(dòng)理解為每一個(gè)對(duì)象和每一個(gè)動(dòng)作的所有組 合都一定能構(gòu)成有實(shí)際意義的操作指令,在很多實(shí)施例中會(huì)存在一些組合是沒有意義的, 就象不是所有動(dòng)詞和所有名詞都能組成以意義的詞組一樣。以下是用“動(dòng)作+對(duì)象”的格式定義命令的一種實(shí)施例,該實(shí)施例被稱為U0ML,是 用XML描述的一系列的命令。上接口部生成符合UOML格式的字符串,并將該字符串發(fā)送給 下接口部,就將相應(yīng)的操作指令發(fā)送給了文檔庫系統(tǒng)。文檔庫系統(tǒng)執(zhí)行這些命令后,下接口 部將執(zhí)行結(jié)果也生成一個(gè)符合UOML格式的字符串,返回給上接口部,使應(yīng)用軟件能夠知曉 操作執(zhí)行結(jié)果。所有執(zhí)行結(jié)果都由U0ML_RET表示,其定義如下屬性SUCCESS 為true時(shí)表明操作成功,為false表明操作失敗。子元素ERR_INF0 可選,僅當(dāng)操作失敗時(shí)出現(xiàn),描述了相應(yīng)的錯(cuò)誤信息。其它子元素根據(jù)具體動(dòng)作確定,可參考以下各動(dòng)作說明。UOML動(dòng)作包括1. U0ML_0PEN創(chuàng)建或打開文檔庫1. 1 屬性1. 1. Icreate 為true時(shí)是創(chuàng)建,否則是打開已有文檔庫1.2 子元素1.2. Ipath 文檔庫路徑??梢允谴疟P文件名,也可以是URL,或者是內(nèi)存指針,或 者是網(wǎng)絡(luò)路徑,或者是文檔庫的邏輯名稱,或者其它能夠指定文檔庫的表示方法??梢杂?不同特征的字符串區(qū)分上述各種情況,即不用改變命令格式,只要給字符串設(shè)置不同特征, 就可以用不同的方法指定文檔庫。例如,磁盤文件名采用設(shè)備名稱(如盤符)和“”開頭
9(如“C: ”、"D:,,),而且緊跟著“,,不會(huì)是“//”,也不會(huì)是又一個(gè)“ ,,;URL采用協(xié)議名稱和 “//”開頭(如“http://”);內(nèi)存指針用“MEM:”開頭,后面是指針的字符串表示方式,例 如“MEM: 1234:5678”;網(wǎng)絡(luò)路徑是“\\”開頭,后面是服務(wù)器名,以及服務(wù)器上的路徑,如 "\\server\abc\def. s印”;文檔庫的邏輯名稱可以用“*”開頭,如“^MyDocBasel”。在下接口 解析時(shí),如果第一個(gè)字母是“*”就表明該字符串代表文檔庫的邏輯名稱;否則如果頭兩個(gè) 字母是“\\”就表明該字符串代表網(wǎng)絡(luò)路徑;否則如果頭五個(gè)字母是“MEM: ”就表明該字符 串代表內(nèi)存指針;否則尋找字符串的第一個(gè)“”,如果該“”后面是“//”該就表明字符串代 表URL,否則就代表本地設(shè)備上的文件。對(duì)于打開服務(wù)器上的文檔庫的情形,可以設(shè)立一個(gè) 專門的URL協(xié)議來區(qū)分,例如用“Docbase://myserver/mydoc2”指明打開服務(wù)器myserver 上運(yùn)行的文檔庫系統(tǒng)服務(wù)器系統(tǒng)所管理的mydoC2文檔庫??傊?,只要能給字符串設(shè)置不同特征,就可以用不同的方式來指定文檔庫。根據(jù)上 述說明,我們還可以定義各種不同的字符串特征;該方式不僅能應(yīng)用于指定文檔庫路徑,還 能應(yīng)用于其它場合,特別是用來指定特定資源位置的應(yīng)用場合。在很多情況下,我們希望能 夠用一種新方式來指定相關(guān)資源,但又不能或不希望改變現(xiàn)有的協(xié)議或函數(shù),這時(shí)就可以 通過在字符串中設(shè)置不同特征的方式來指定,因?yàn)檫@種方法具有最好的通用性(任何協(xié)議 或函數(shù),只要支持磁盤文件名或URL,就支持字符串)。1. 3返回值如果成功,則在U0ML_RET中包含一個(gè)“handle”子元素,記錄句柄。2.關(guān)閉(U0ML_CL0SE)2. 1 屬性無2. 2 子元素2. 2. Ihandle 對(duì)象句柄,是一個(gè)字符串表示的對(duì)象的引用指針。2. 2. 2db_handle 文檔庫句柄,字符串表示的文檔庫的引用指針。2. 3返回值無返回值3. U0ML_GET 獲取3. 1 屬性3. 1. Iusage 用途,為” GetHandle”(獲取指定對(duì)象句柄)、” GetOb j ”(獲取指定 對(duì)象數(shù)據(jù))、"GetPageBmp” (獲取版面位圖)中的一個(gè)3. 2子元素3. 2. Iparent 父對(duì)象句柄,usage 屬性為”GetHandle” 時(shí)使用。3. 2. 2pos 位置順序號(hào),usage屬性為”GetHandle”時(shí)使用。3. 2. 3handle 指定對(duì)象的句柄,當(dāng)usage屬性為”GetObj”時(shí)使用。3. 2. 4page 需要顯示的頁面的句柄,當(dāng)usage屬性為”GetPageBmp”時(shí)使用。3. 2. 5input 描述了對(duì)輸入頁面的約束,其中可以指定顯示一層或者多層的內(nèi)容 (可以顯示的層一定是當(dāng)前角色有權(quán)限訪問的層);也可以通過指定Clip區(qū)域來指定顯示 區(qū)域的大小。當(dāng)usage屬性為” GetPageBmp”時(shí)使用。3. 2. 6output 描述了版面位圖的輸出方式,當(dāng)usage屬性為”GetPageBmp”時(shí)使用。3. 3 返回值
10
3. 3. 1當(dāng)usage屬性為”GetHandle”時(shí),執(zhí)行成功時(shí)在U0ML_RET中包含一個(gè) "handle"子元素,記錄parent下第pos個(gè)子對(duì)象的句柄。3. 3. 2當(dāng)usage屬性為” GetObj ”時(shí),執(zhí)行成功時(shí)在U0ML_RET中包含一個(gè)‘‘xobj” 子元素,含有handle對(duì)象的數(shù)據(jù)的xml表示。3.3. 3當(dāng)usage屬性為”GetPageBmp”時(shí),執(zhí)行成功時(shí)在output指定位置輸出版面位圖。
4.U0ML_SET 設(shè)置(
4.1屬性無
4.2子元素
4.2. IHandle 設(shè)置對(duì)象的句柄
4.2. 2xobj 對(duì)象的描述
4.3返回值無返回值
5.U0ML_INSERT 插入
5.1屬性無
5.2子元素
5.2. Iparent 父對(duì)象句柄
5.2. 2xobj 對(duì)象的描述
5.2. 3pos 插入位置
5.3返回值如果執(zhí)行成功,則將xobj參數(shù)表示的對(duì)象,插入到parent中成為其
第pos個(gè)子對(duì)象,并在U0ML_RET中包含一個(gè)”handle”子元素,表示新插入對(duì)象的句柄。6. U0ML_DELETE 刪除6.1 屬性無6. 2 子元素6. 2. Ihandle 需要?jiǎng)h除的對(duì)象的句柄。6. 3返回值無返回值7. U0ML_QUERY 檢索查詢7.1 屬性無7. 2 子元素7. 2. Ihandle 需要查詢的文檔庫句柄7. 2. 2condition 查詢條件7. 3返回值如果成功,在U0ML_RET中包含一個(gè)“handle”子元素代表查詢結(jié)果的 句柄,一個(gè)“number”子元素代表查詢結(jié)果的數(shù)量,可以用U0ML_GET來獲取每一個(gè)查詢結(jié)^ οUOML對(duì)象包括文檔庫(U0ML_D0CBASE)、文檔集(U0ML_D0CSET)、文檔(U0ML_D0C)、頁(U0ML_ PAGE)、層(U0ML_LAYER)、對(duì)象組(U0ML_0BJGR0UP)、文字(U0ML_TEXT)、圖像(U0ML_IMAGE)、 直線(U0ML_LINE)、曲線(U0ML_BEIZER)、圓弧(U0ML_ARC)、路徑(U0ML_PATH)、源文件 (U0ML_SRCFILE)、背景色(U0ML_BACKC0L0R)、前景顏色(U0ML_C0L0R)、ROP (U0ML_R0P)、字 符尺寸(U0ML_CHARSIZE)、字體(U0ML_TYPEFACE)、角色(U0ML_R0LE)、權(quán)限(U0ML_PRIV)等。
11
以下我們以部分對(duì)象為例說明其定義方式1. U0ML_D0C1.1 屬性無1.2 子元素1. 2. Imetadata 元數(shù)據(jù)1. 2. 2pageset 各頁面1. 2. 3fontinfo 嵌入字庫1. 2. 4navigation 導(dǎo)航信息1. 2. 5thread 導(dǎo)讀信息1. 2. 6minipage 微縮版面1. 2. 7signiture 數(shù)字簽名1. 2. 81og 歷史痕跡1. 2. 9shareobj 文檔共享對(duì)象2. U0ML_PAGE 2. 1 屬性2. 1. Iresolution 邏輯分辨率2. 1. 2size 版心大小,用寬高表示2. 1. 3rotaion 旋轉(zhuǎn)角度2. 1. 41og 歷史痕跡2. 2 子元素2.2. IGS 初始圖形狀態(tài),包括charstyle(字符風(fēng)格)、Iinestyle (線型)、 Iinecap (線頭類型)、Iinejoint (接頭類型)、Iinewidth (線寬)、fillrule (填充規(guī)測(cè))、 charspace (字間距)、Iinespace (行間距)、charroate (字符旋轉(zhuǎn)角度)、charslant (字 符傾斜方向)、charweight (字色重)、chardirect (字符方向)、textdirect (文本方向)、 shadowwidth (陰影寬度)、shadowdirect (陰影方向)、shadowboderwidth (陰影邊線寬 度)、outlinewidth (輪廓寬度)、outlineboderwidth (輪廓邊線寬度)、linecolor (線的顏 色)、f illcolor ( ±真充色)、backcolor (背景色)、textcolor (文字顏色)、shadowcolor (陰 影顏色)、outlinecolor (輪廓線顏色)、matrix (變換矩陣)、cliparea(裁減區(qū))。2· 2· 2metadata 元數(shù)據(jù)2. 2. 31ayerset 屬于該頁的各層2. 2. 4signiture 數(shù)字簽名2. 2. 51og 歷史痕跡3. U0ML_TEXT3.1 屬性:3. 1. IEncoding 文字編碼方式3. 2 子元素3. 2. ITextData 文字內(nèi)容3. 2. 2CharSpacingList 對(duì)非等間距文字的字間距列表3. 2. 3StartPos 起點(diǎn)位置
12
4. U0ML_CHARSIZE4.1 屬性4. 1. Iwidth 字符寬度4. 1. 2height 字符高度4. 2子元素?zé)o5. U0ML_LINE5.1 屬性5. 1. ILineStyle 線型5. 1. 2LineCap 線的接頭類型5. 2 子元素5. 2. IStartPoint 線的起點(diǎn)坐標(biāo)5. 2. 2EndPoint 線的終點(diǎn)坐標(biāo)6. U0ML_BEIZER6.1 屬性6. 1. ILineStyle 線型6. 2 子元素6. 2. IStartPoint 貝塞爾曲線的起點(diǎn)坐標(biāo)6. 2. 2Controll_Point 貝塞爾曲線的第一控制點(diǎn)6. 2. 3Control2_Point 貝塞爾曲線的第二控制點(diǎn)6. 2. 4EndPoint 貝塞爾曲線的終點(diǎn)坐標(biāo)7. U0ML_ARC7.1 屬性:7. 1. IClockWise 弧的方向7. 2 子元素7. 2. IStartPoint 弧的起點(diǎn)坐標(biāo)7. 2. 2EndPoint 弧線的終點(diǎn)坐標(biāo)7. 2. 3Center 弧的圓心坐標(biāo)8. U0ML_C0L0R8.1 屬性8. 1. IType 顏色類型,RGB 或 CMYK8. 2 子元素RGB 模式8. 2. IRed:紅色8. 2. 2Green 綠色8.2.3Blue:藍(lán)色8. 2. 4Alpha 透明度CMYK 模式8.2.5Cyan:青色8. 2. 6Magenta 品紅
13
8. 2. 7Yellow 黃色8. 2. SBlackjnk 黑色以此類推,我們可以用同樣的方法來描述所有的UOML對(duì) 象。當(dāng)應(yīng)用軟件對(duì)文檔庫進(jìn)行操作時(shí),由上述UOML動(dòng)作與UOML對(duì)象依照XML語法生成相 應(yīng)的UOML命令。具體地,在本發(fā)明中,采用XML元素來描述動(dòng)作,該元素下的子元素來描述 具體對(duì)象,采用字符串來表示數(shù)值,并且對(duì)象的詳細(xì)信息采用屬性描述。通過這種形式,可 以實(shí)現(xiàn)對(duì)功能調(diào)用和調(diào)用返回結(jié)果的XML描述。對(duì)該XML描述語義上的約束,采用DTD或 schema。然后,將該UOML命令發(fā)給文檔庫系統(tǒng)即代表向文檔庫系統(tǒng)發(fā)出了相應(yīng)操作指令。 例如,對(duì)創(chuàng)建文檔庫操作,可以用以下命令來完成<U0ML_0PEN create = “ true“ ><path val = “ f\\data\\docbasel. sep" /></U0ML_0PEN>需要說明的是,雖然UOML是用XML定義的,但為了顯得更加簡潔,我們?cè)谇懊媸?略了類似“〈? xml version = ” 1.0〃 encoding = ” UTF-8 〃 ? >”以及“xmlns:xsi =“http //www. w3. org/2001/XMLSchema-instance “ ”之類的常規(guī) XML 格式,只要是熟悉 XML語法的實(shí)施者都可以自行補(bǔ)充完整。我們也可以不用XML方式定義命令串,例如改用類似PostScript那樣的方式,這 樣上例變成這樣的1.〃 f:\\data\\docbasel. sep" . /Open/docset. 1,“123. 456. 789”,/Insert根據(jù)同樣的思路,我們還可以定義出其它類型的命令串格式,甚至我們還可以不 用文本方式,而用二進(jìn)制方式來定義命令串。除了 “動(dòng)作+對(duì)象”方式外,我們也可以用其它方式定義命令串。例如,對(duì)每一個(gè) 對(duì)象的每一個(gè)操作都用一個(gè)命令來表示,即用“U0ML_INSERT_D0CSET ”來表示插入一個(gè)文檔 集,我們以這樣的方式來定義每個(gè)命令U0ML_INSERT_D0CSET在文檔庫中創(chuàng)建一個(gè)文檔集屬性無子元素parent 文檔庫句柄pos 插入位置返回值如果執(zhí)行成功,則在U0ML_RET中包含一個(gè)”handle”子元素,表示新插入 文檔集的句柄這樣上例就變?yōu)?lt;U0ML_INSERT_D0CSET>〈parent val =〃 123.456.789〃 /><pos val = 〃 I" /></U0ML_INSERT_D0CSET>用這種方法定義命令格式的話就需要對(duì)每個(gè)對(duì)象的每種合法操作都單獨(dú)定義一 條命令,會(huì)比較繁瑣。接口標(biāo)準(zhǔn)也可以用函數(shù)調(diào)用的方式來實(shí)施,即通過上接口調(diào)用下接口的接口函數(shù)
14的方式來發(fā)送操作指令給文檔庫系統(tǒng)的我們還可以用非“動(dòng)作+對(duì)象”的函數(shù)方式來定義接口標(biāo)準(zhǔn),例如對(duì)每一個(gè)對(duì)象的 每一種操作都定義一個(gè)接口函數(shù),這樣插入文檔集的操作指令就是上接口以下列方式調(diào)用 下接口的接口函數(shù)來發(fā)送給文檔庫系統(tǒng)的UOI_InsertDocset (pDocbase,0)我們還可以封裝各個(gè)對(duì)象類(如文檔庫類),把該對(duì)象可以進(jìn)行的操作定義成該 類的方法。這樣插入文檔集的操作指令就是上接口以下列方式調(diào)用下接口的接口函數(shù)來發(fā) 送給文檔庫系統(tǒng)的。我們還可以用同樣的方法為Java、C#、VB、Delphi等各種編程語言開發(fā)的應(yīng)用軟 件設(shè)計(jì)各種不同的接口標(biāo)準(zhǔn)。只要在接口標(biāo)準(zhǔn)中不含有與特定的操作系統(tǒng)(如WINDOWS、UNIX/LINUX、MAC OS、 SYMBIAN)或特定的硬件平臺(tái)(如x86CPU、MIPS、POWER PC等)相關(guān)連的特征,該接口標(biāo)準(zhǔn) 就可以具有跨平臺(tái)性,使得不同平臺(tái)上運(yùn)行的應(yīng)用軟件和文檔庫系統(tǒng)都可以統(tǒng)一使用同樣 的接口標(biāo)準(zhǔn),特別是可以讓一個(gè)平臺(tái)上運(yùn)行的應(yīng)用軟件可以調(diào)用另一個(gè)平臺(tái)上運(yùn)行的文檔 庫系統(tǒng)來執(zhí)行相應(yīng)操作。例如,應(yīng)用軟件部署在客戶端,使用的是PC機(jī),Windows操作系統(tǒng), 文檔庫系統(tǒng)部署在服務(wù)器端,使用的是大型機(jī),Linux操作系統(tǒng),但應(yīng)用軟件依然可以像調(diào) 用本地文檔庫系統(tǒng)一樣調(diào)用服務(wù)器上的文檔庫系統(tǒng)來執(zhí)行相應(yīng)文檔操作。如果在接口標(biāo)準(zhǔn)中不含有與特定編程語言相關(guān)的特征,則該接口標(biāo)準(zhǔn)還能做到與 編程語言無關(guān)。可以看出,用命令串的方式容易構(gòu)造與平臺(tái)無關(guān)、與編程語言無關(guān)的接口標(biāo) 準(zhǔn),更具有通用性。特別是用XML來構(gòu)造命令串的話,由于目前在各種不同平臺(tái)、不同編程 語言都存在易于獲得的XML生成解析工具,因此不僅該接口標(biāo)準(zhǔn)具有很好的跨平臺(tái)性和與 編程語言無關(guān)性,也非常便于工程師開發(fā)上接口部和下接口部。以上列舉了多種接口標(biāo)準(zhǔn)的實(shí)施方法,按照類似的思路,不難設(shè)計(jì)出更多種類的 接口標(biāo)準(zhǔn)。接口標(biāo)準(zhǔn)可以在上述實(shí)施例的基礎(chǔ)上按同樣的思路增加操作指令,也可以簡化操 作指令,特別是文檔模型被簡化時(shí)操作指令也會(huì)相應(yīng)被簡化。最簡化情況下只有文檔的創(chuàng) 建、頁面的創(chuàng)建、各版面對(duì)象的創(chuàng)建這幾個(gè)操作指令?,F(xiàn)在,返回圖1,繼續(xù)描述依照本發(fā)明的文檔操作系統(tǒng)的工作過程。應(yīng)用軟件可以是具有符合接口標(biāo)準(zhǔn)的上接口部的任意軟件,例如Office軟件、內(nèi) 容管理、資源采集等。任一應(yīng)用軟件在需要對(duì)文檔進(jìn)行操作時(shí),依照前述方法將指令傳遞給 文檔庫系統(tǒng),文檔庫系統(tǒng)根據(jù)指令來完成具體操作過程。文檔庫系統(tǒng)可以自由地存儲(chǔ)、組織文檔庫數(shù)據(jù),例如可以把一個(gè)文檔庫的文件全 部都存儲(chǔ)在一個(gè)磁盤文件中;可以一個(gè)文檔對(duì)應(yīng)一個(gè)磁盤文件,利用操作系統(tǒng)中的文件系 統(tǒng)功能實(shí)現(xiàn)多文檔組織;也可以一頁對(duì)應(yīng)一個(gè)磁盤文件還可以完全拋開操作系統(tǒng),在磁 盤上留出一塊空間后直接對(duì)磁道、扇區(qū)進(jìn)行管理。對(duì)文檔庫數(shù)據(jù)的存儲(chǔ)格式,可以用二進(jìn)制 格式保存,可以用XML,還可以用二進(jìn)制XML。頁面描述語言(定義頁面上的文字、圖形、圖 像等對(duì)象的方法)可以用PostScript,可以用PDF,可以用SPD (書生公司使用的頁面描述 語言),當(dāng)然也可以自定義??傊?,只要能夠?qū)崿F(xiàn)接口標(biāo)準(zhǔn)所定義的功能,任何實(shí)現(xiàn)方式都是
15可以的。例如,我們可以用XML來描述文檔庫數(shù)據(jù),當(dāng)文檔模型是層次型的時(shí)候,可以完全 對(duì)照建立相應(yīng)的XML樹。執(zhí)行創(chuàng)建操作時(shí)就在XML樹中增加一個(gè)結(jié)點(diǎn),執(zhí)行刪除操作就刪 掉相應(yīng)結(jié)點(diǎn),執(zhí)行設(shè)置操作就設(shè)置相應(yīng)結(jié)點(diǎn)的屬性,執(zhí)行獲取操作就取出相應(yīng)結(jié)點(diǎn)的屬性 并返回給應(yīng)用軟件,執(zhí)行查詢操作時(shí)就遍歷相關(guān)結(jié)點(diǎn)查找。以下是該實(shí)施例的進(jìn)一步說明1.用XML來描述每個(gè)對(duì)象。也就是說,為每個(gè)對(duì)象按照其XML Schema建立一個(gè)對(duì) 應(yīng)的XML樹。有的對(duì)象屬性比較簡單,其對(duì)應(yīng)的XML樹就只有根結(jié)點(diǎn),有的對(duì)象比較復(fù)雜, 其對(duì)應(yīng)的XML樹還有子結(jié)點(diǎn)。具體描述方法可以參見前面用XML來定義操作對(duì)象的說明。2.當(dāng)新建一個(gè)文檔庫時(shí)就新建一個(gè)根結(jié)點(diǎn)為文檔庫對(duì)象的XML文件。3.每當(dāng)在文檔庫中插入一個(gè)對(duì)象時(shí)(如文字對(duì)象),就將該對(duì)象對(duì)應(yīng)的XML樹插 入到插入位置的父結(jié)點(diǎn)(如層)之下。這樣,文檔庫中的每個(gè)對(duì)象都在文檔庫為根結(jié)點(diǎn)的 XML樹中有一個(gè)對(duì)應(yīng)的結(jié)點(diǎn)。4.當(dāng)刪除一個(gè)對(duì)象時(shí),就刪除該對(duì)象對(duì)應(yīng)的結(jié)點(diǎn),其下屬所有子結(jié)點(diǎn)也都被刪除。 刪除過程是從葉子結(jié)點(diǎn)開始自下而上遍歷的。5.設(shè)置一個(gè)對(duì)象屬性時(shí),將該對(duì)象對(duì)應(yīng)的結(jié)點(diǎn)的屬性設(shè)置成該屬性。如果該屬性 是用子結(jié)點(diǎn)表示的,則設(shè)置對(duì)應(yīng)的子結(jié)點(diǎn)。6.獲取一個(gè)對(duì)象屬性時(shí),訪問該對(duì)象對(duì)應(yīng)的結(jié)點(diǎn),根據(jù)該結(jié)點(diǎn)的屬性和子結(jié)點(diǎn)獲 得該對(duì)象的屬性。7.獲取一個(gè)對(duì)象的句柄時(shí),返回該對(duì)象對(duì)應(yīng)結(jié)點(diǎn)的XML路徑,8.復(fù)制一個(gè)對(duì)象(如頁面)到指定位置時(shí),就將該對(duì)象對(duì)應(yīng)的結(jié)點(diǎn)開始的整個(gè)子 樹都復(fù)制到目標(biāo)位置對(duì)應(yīng)的父結(jié)點(diǎn)(如文檔)之下。如果是復(fù)制到另一個(gè)文檔庫中,則需 要將該子樹引用的對(duì)象(如嵌入字庫)也一起復(fù)制過去。9.執(zhí)行獲取版面信息指令時(shí),先生成一個(gè)指定位圖格式的空白位圖,其尺寸和指 定區(qū)域相同,然后遍歷指定頁面的所有版面對(duì)象,凡是位于指定區(qū)域內(nèi)(包括只有一部分 在該區(qū)域內(nèi))的版面對(duì)象,都解釋其含義,并在版面上相應(yīng)體現(xiàn)。具體過程雖然比較復(fù)雜比 較專業(yè),但均屬于現(xiàn)有RIP技術(shù)范疇,不在此贅述。為了提高工作效率,在實(shí)施時(shí)還可以對(duì)上述方法進(jìn)行增強(qiáng)、簡化和變化,例如分解 或合并各組成單元、將某個(gè)組成單元的某個(gè)功能調(diào)整為由另一各組成單元來完成、將各角 色私鑰緩存在會(huì)話數(shù)據(jù)中(會(huì)話結(jié)束后刪除),而不用每次都需要發(fā)到應(yīng)用軟件進(jìn)行解密, 或者省略一些安全措施,或者減少一些功能??傊?,任何對(duì)上述方法進(jìn)行簡化、變化的方法 都是本方法的變形。在本發(fā)明中,為了使本文檔處理系統(tǒng)能很好地模擬紙張的特性,提供了一種“只加 不改”的技術(shù)方案。也就是說,每個(gè)應(yīng)用軟件都只在現(xiàn)有文檔內(nèi)容基礎(chǔ)上添加新的內(nèi)容,但 不修改、不刪除已有的內(nèi)容,使文檔的一個(gè)頁面就象一張紙一樣,可以由不同的人用不同的 筆在紙上不斷寫寫畫畫,但誰都不能修改、刪除已有內(nèi)容。具體方法是每個(gè)文檔的每一層只 由一個(gè)應(yīng)用軟件來管理和維護(hù),即每一個(gè)應(yīng)用軟件在編輯其它軟件生成的文檔時(shí),都在現(xiàn) 有文檔基礎(chǔ)上新增加一層,將本軟件新編輯的內(nèi)容都放到這一層中,不修改和刪除前面各 層的內(nèi)容。由于現(xiàn)有社會(huì)就是基于紙張來運(yùn)轉(zhuǎn)的,因此只要能符合紙張的特性就能滿足現(xiàn)
16有應(yīng)用的需求,具備是夠的實(shí)用價(jià)值。為了確保每一層內(nèi)容在生成后沒有被修改、刪除,我們可以利用每一層的數(shù)字簽 名對(duì)象。數(shù)字簽名可以是對(duì)本層內(nèi)容進(jìn)行簽名,更可以是對(duì)本層以及本層下面(即更早創(chuàng) 建的)的所有層的內(nèi)容一起簽名。簽名以后并不妨礙對(duì)文檔做進(jìn)一步的批注等編輯,只要 新的內(nèi)容是位于新建的層,沒有修改破壞簽名時(shí)存在的各層,簽名依然足有效的,但簽名者 只對(duì)簽名以前的內(nèi)容負(fù)責(zé),不對(duì)簽名以后的內(nèi)容負(fù)責(zé)。這是一個(gè)非常符合應(yīng)用需求的技術(shù) 方案,具有很大的實(shí)用價(jià)值。相比之下,現(xiàn)有的其它技術(shù)或者簽名后不允許編輯,或者編輯 后(盡管是“只加不改”的編輯)簽名被破壞。前述技術(shù)方案不允許修改文檔中的已有內(nèi)容,即使不考慮與紙張?zhí)匦缘募嫒菀约?數(shù)字簽名問題,需要修改的話也只能做版面級(jí)編輯,即對(duì)每個(gè)版面對(duì)象的編輯(增、刪、改) 都不會(huì)改變其它版面對(duì)象(這是由于通用文檔模型是基于可見部分為基礎(chǔ)構(gòu)建的,不包含 大量不可見的、關(guān)于版面對(duì)象之間的關(guān)系,因此修改任何一個(gè)版面對(duì)象時(shí),其它版面對(duì)象不 會(huì)產(chǎn)生相應(yīng)的調(diào)整,例如刪掉一個(gè)字,就會(huì)在其位置留下空白,右邊的文字不會(huì)自動(dòng)左移)。 如果用戶需要對(duì)文檔中的已有內(nèi)容進(jìn)行編輯,并且還希望能像在原來那樣編輯的話,有一 個(gè)技術(shù)方案可以很好地滿足這個(gè)應(yīng)用需求。該方案是當(dāng)應(yīng)用軟件完成初始編輯時(shí),除了新 建一層存放當(dāng)前編輯的內(nèi)容外,還將源文件(按照應(yīng)用軟件自有的格式存儲(chǔ),記錄了各對(duì) 象之間完整關(guān)系的文件,例如.doc文件)嵌入到文檔中。當(dāng)下次需要進(jìn)行繼續(xù)編輯時(shí),從 文檔中取出該源文件,并使用該源文件繼續(xù)編輯。編輯完成后清除該軟件所管理的那一層, 重新生成該層的內(nèi)容,并繼續(xù)將新修改的源文件嵌入到文檔中。具體方法如下1.應(yīng)用軟件第一次處理該文檔時(shí),新建一層,將新編輯內(nèi)容對(duì)應(yīng)的版面對(duì)象插入 到新建層中,同時(shí)用自身格式另存一份新編輯的內(nèi)容(即源文件);2.在文檔對(duì)象中新建一個(gè)源文件子對(duì)象,用來嵌入源文件(例如用二進(jìn)制數(shù)據(jù)的 方式整體嵌入),并記錄是哪一層對(duì)應(yīng)該源文件對(duì)象;3.用同一應(yīng)用軟件再次編輯該文檔時(shí),從對(duì)應(yīng)的源文件對(duì)象中取出對(duì)應(yīng)的源文 件;4.使用該源文件繼續(xù)編輯該層內(nèi)容。由于該源文件是該應(yīng)用軟件自身的格式,可 以按照該應(yīng)用軟件自身的功能繼續(xù)對(duì)該層內(nèi)容進(jìn)行編輯;5.再次編輯結(jié)束后,根據(jù)新編輯后的結(jié)果更新該層內(nèi)容(例如用全部清除后全部 重新生成的方式),同時(shí)將新修改后的源文件重新嵌入到文檔對(duì)象中;6.如此循環(huán)往復(fù),就可以用原有應(yīng)用軟件按照原有方式對(duì)文檔中的已有內(nèi)容進(jìn)行 編輯。采用上述技術(shù)方案,可以最大程度地實(shí)現(xiàn)文檔的互操作性。在應(yīng)用軟件、文檔都采 用本發(fā)明技術(shù)時(shí),可以實(shí)現(xiàn)(如果有足夠安全權(quán)限的話)1.對(duì)任何文檔,用任何應(yīng)用軟件都可以正確打開、顯示、打??;2.對(duì)任文檔,用任何應(yīng)用軟件都可以新添加任何內(nèi)容,而且不會(huì)破壞文檔已有簽 名;3.對(duì)任何文檔,在不必考慮文檔已有簽名(沒有簽名或者雖有簽名但允許破壞) 的前提下,用任何應(yīng)用軟件都可以對(duì)文檔已有內(nèi)容進(jìn)行版面級(jí)編輯;
17
4.對(duì)任何文檔,使用文檔已有內(nèi)容的原始編輯軟件可以對(duì)該內(nèi)容進(jìn)行正常編輯。由此可見,通過本發(fā)明中對(duì)層的管理,對(duì)文檔的管理、互操作、安全設(shè)置都帶來極 大的便利。下面我們以A軟件創(chuàng)建一個(gè)文檔并且B軟件對(duì)其進(jìn)行編輯為例說明其工作過程。 為了節(jié)約篇幅起見,在本例中我們選用UOI作為接口標(biāo)準(zhǔn)1.A軟件發(fā)出指令,創(chuàng)建文檔庫c:\sample\mydocbase. s印,將其句柄存放在 hDocBase U0I_0pen( "c\\sample\\mydocbase. s印”,TRUE, &hDocBase);文檔庫系統(tǒng)執(zhí)行該指令,創(chuàng)建一個(gè)文件名為c:\sample\mydocbase. sep的新的 XML文件,其根結(jié)點(diǎn)為文檔庫對(duì)象,將其句柄返回給應(yīng)用軟件。2. A軟件發(fā)出指令,在文檔庫hDocBase中新建文檔集,將其句柄存放在hDocSet hDocSet = InsertNewObj(hDocBase, 0, U0I_0bjTYPE_D0CSET);文檔庫系統(tǒng)執(zhí)行該指令,在文檔庫對(duì)象結(jié)點(diǎn)下添加一個(gè)文檔集子結(jié)點(diǎn),,將其句柄 返回給應(yīng)用軟件。3. A軟件發(fā)出指令,在文檔集hDocBase中新建文檔,將其句柄存放在hDoc hDoc = InsertNewObj(hDocSet, 0, U0I_0bjTYPE_D0C);文檔庫系統(tǒng)執(zhí)行該指令,在hDocBase對(duì)應(yīng)的結(jié)點(diǎn)下添加一個(gè)文檔結(jié)點(diǎn),將其句柄 返回給應(yīng)用軟件。4. A軟件發(fā)出指令,在文檔hDoc中新建一頁,版心大小是寬w,高h(yuǎn),將其句柄存放 在 hPage U0I_Page page ;page. size, w = w ;page. size, h = h ; U0I_Insert (hDoc, 0,&page,&hPage);文檔庫系統(tǒng)執(zhí)行該指令,在hDoc對(duì)應(yīng)的結(jié)點(diǎn)下添加一個(gè)頁結(jié)點(diǎn),其版心屬性按寬 w高h(yuǎn)設(shè)置,將其句柄返回給應(yīng)用軟件。5. A軟件發(fā)出指令,在頁hPage中創(chuàng)建一層,將其句柄存放在hLayer :hLayer = InertNewObj(hPage,0,U0I_0bjTYPE_LAYER);文檔庫系統(tǒng)執(zhí)行該指令,在hPage對(duì)應(yīng)的結(jié)點(diǎn)下添加一個(gè)層結(jié)點(diǎn),將其句柄返回 給應(yīng)用軟件。6. A軟件發(fā)出指令,設(shè)置字號(hào)為s U0I_CharSize charSize ;charSize. m_ffidth = charSize. m_Height = s ;U0I_Insert(hLayer,0,&charSize);文檔庫系統(tǒng)執(zhí)行該指令,在hLayer對(duì)應(yīng)的結(jié)點(diǎn)下添加一個(gè)字號(hào)結(jié)點(diǎn),其寬高屬性 都設(shè)置為s,將其句柄返回給應(yīng)用軟件。7. A軟件發(fā)出指令,在坐標(biāo)(xl,yl)位置插入文字串“書生意氣揮斥方遒”U0I_Text text ;text. m_pText = Duplicate ( “書生意氣揮斥方遒”);
18
text. m_Encoding = U0I_TextENC0DE_GB13000 ;text. m_Start. χ = xl // 起點(diǎn)坐標(biāo)的 X 坐標(biāo)text. m_Start. y = yl ;// 起點(diǎn)坐標(biāo)的 Y 坐標(biāo)UOI_Insert(hLayer, 1, &text);文檔庫系統(tǒng)執(zhí)行該指令,在hLayer對(duì)應(yīng)的結(jié)點(diǎn)下再添加一個(gè)文字子結(jié)點(diǎn),其文字 數(shù)據(jù)為“書生意氣揮斥方遒”,其字符編碼方式為GB13000,文字起點(diǎn)為(xl,yl),并將其句 柄返回給應(yīng)用軟件。8. A軟件發(fā)出指令,關(guān)閉文檔厙hDocBase U0I_Close(NULL, hDocBase);文檔庫系統(tǒng)執(zhí)行該指令,關(guān)閉文件c: \sample\mydocbase. s印。9. B軟件發(fā)出指令,打開文檔庫c:\sample\mydocbase. s印,將其句柄存放在 hDocBase U0I_0pen( "c\\sample\\mydocbase. sep", FALSE, &hDocBase);文檔庫系統(tǒng)執(zhí)行該指令,打開文件c: \sample\mydocbase. s印。10. B軟件發(fā)出指令,獲取文檔庫hDocBase第一個(gè)文檔集的指針,將其句柄存放在 hDocSet U0I_GetHandle(hDocBase, 0, &hDocSet);文檔庫系統(tǒng)執(zhí)行該指令,尋找根結(jié)點(diǎn)下第一個(gè)類型為文檔集的子結(jié)點(diǎn),將其句柄 返回給應(yīng)用軟件。11. B軟件發(fā)出指令,獲取文檔集hDocSet第一個(gè)文檔的指針,將其句柄存放在 hDoc U0I_GetHandle (hDocSet. 0, &hDoc);文檔庫系統(tǒng)執(zhí)行該指令,尋找hDocSet對(duì)應(yīng)的結(jié)點(diǎn)下第一個(gè)類型為文檔的子結(jié) 點(diǎn),將其句柄返回給應(yīng)用軟件。12. B軟件發(fā)出指令,獲取文檔hDoc第一頁的指針,將其句柄存放在hPage :U0I_ GetHandle(hDoc, 0, &hPage);文檔庫系統(tǒng)執(zhí)行該指令,尋找hDoc對(duì)應(yīng)的結(jié)點(diǎn)下第一個(gè)類型為頁的子結(jié)點(diǎn),將其 句柄返回給應(yīng)用軟件。13. B軟件獲取該頁版面位圖,用于顯示該頁U0I_GetPageBmp(hPage, rect,buf);文檔庫系統(tǒng)執(zhí)行該指令,按照前述方法(文檔庫系統(tǒng)實(shí)施例說明第9條)生成 hPage對(duì)應(yīng)的頁的版面位圖,將其返回給應(yīng)用軟件。14. B軟件發(fā)出指令,獲取hPage第一層的指針,將其句柄存放在hLayer :U0I_ GetHandle(hPage,0,&hLayer);文檔庫系統(tǒng)執(zhí)行該指令,尋找hPage對(duì)應(yīng)的結(jié)點(diǎn)下第一個(gè)類型為層的子結(jié)點(diǎn),將 其句柄返回給應(yīng)用軟件。15. B軟件發(fā)出指令,獲取第一個(gè)版面對(duì)象的句柄hObj U0I_GetHandle(hLayer,0. &h0bj);文檔庫系統(tǒng)執(zhí)行該指令,尋找hDocSet對(duì)應(yīng)的結(jié)點(diǎn)下第一個(gè)子結(jié)點(diǎn),將其句柄返
19回給應(yīng)用軟件。16. B軟件發(fā)出指令,獲取hOb j的類型U0I_Get0bjType(h0bj,&type);文檔庫系統(tǒng)執(zhí)行該指令,獲取hObj對(duì)應(yīng)的結(jié)點(diǎn)的類型,將其返回給應(yīng)用軟件。17. B軟件發(fā)現(xiàn)這是一個(gè)字號(hào)對(duì)象,獲取該對(duì)象U0I_Get0bj(h0bj,&charSize);文檔庫系統(tǒng)執(zhí)行該指令,獲取hObj對(duì)應(yīng)的結(jié)點(diǎn)的數(shù)據(jù),將其返回給應(yīng)用軟件。18. B軟件將字高放大一倍charSize. m_Height氺=2 ;U0I_Set0bj(h0bj,&charSize);文檔庫系統(tǒng)執(zhí)行該指令,設(shè)置hObj對(duì)應(yīng)的結(jié)點(diǎn)的屬性。19. B軟件重新獲取版面位圖并顯示,這時(shí)會(huì)發(fā)現(xiàn)屏幕上的“書生意氣揮斥方遒”變 成長體字了。下面,參照?qǐng)D2描述依照本發(fā)明的文檔操作系統(tǒng)執(zhí)行一操作的一個(gè)例子。在該例 子中,應(yīng)用軟件通過統(tǒng)一的接口標(biāo)準(zhǔn)(U0ML接口)請(qǐng)求對(duì)文檔的操作。文檔庫系統(tǒng)可能會(huì) 有不同廠商的不同型號(hào),但是對(duì)于應(yīng)用開發(fā)廠商來說面向的都是同一個(gè)接口標(biāo)準(zhǔn),因此都 可以與之配套使用。在本發(fā)明中,不同的應(yīng)用軟件可以同時(shí)或不同時(shí)調(diào)用同一個(gè)文檔庫系統(tǒng),同一應(yīng) 用軟件可以同時(shí)或不同時(shí)調(diào)用不同的文檔庫系統(tǒng)。依照本發(fā)明,使得應(yīng)用層和數(shù)據(jù)處理層分離,使得同一文檔能在不同的應(yīng)用軟件 之間通用,使不同應(yīng)用軟件之間具有良好的文檔互操作性。依照本發(fā)明,形成產(chǎn)業(yè)分工,減少重復(fù)開發(fā),并更加專業(yè)、完備、正確;對(duì)文檔的基 本操作都在文檔庫系統(tǒng)中處理,各應(yīng)用軟件不必重復(fù)開發(fā)。而且由于文檔庫系統(tǒng)是由專業(yè) 廠商開發(fā),相關(guān)技術(shù)的專業(yè)性、完備性、正確性較有保障,而且應(yīng)用軟件廠商和用戶可以選 擇做的最好的一家文檔庫系統(tǒng)廠商,從而保證處理效果的正確性和一致性。依照本發(fā)明,提供多文檔甚至海量文檔的管理機(jī)制,使文檔之間能夠有效組織起 來,便于檢索、查詢、保管,便于嵌入較強(qiáng)的信息安全機(jī)制。依照本發(fā)明的對(duì)文檔庫進(jìn)行處理的文檔處理系統(tǒng),其包括文檔庫系統(tǒng)、存儲(chǔ)器、應(yīng) 用軟件,其中,文檔庫的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,文檔庫系統(tǒng)和應(yīng)用軟件通過一種標(biāo)準(zhǔn)調(diào)用接 口連接起來,該標(biāo)準(zhǔn)調(diào)用接口采用與平臺(tái)無關(guān)的描述方式進(jìn)行描述,應(yīng)用軟件對(duì)文檔的操 作都統(tǒng)一成對(duì)一種預(yù)定義的通用文檔模型進(jìn)行的操作,并通過該標(biāo)準(zhǔn)調(diào)用接口向文檔庫系 統(tǒng)發(fā)出指令,文檔庫系統(tǒng)按照應(yīng)用軟件的指令,對(duì)存儲(chǔ)在存儲(chǔ)器中的文檔庫執(zhí)行相應(yīng)的操 作。依照本發(fā)時(shí)的對(duì)文檔庫進(jìn)行處理的文檔處理系統(tǒng),其包括文檔庫系統(tǒng)、存儲(chǔ)器、應(yīng) 軟件,其中,文檔庫的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,文檔庫系統(tǒng)和應(yīng)用軟件通過一種標(biāo)準(zhǔn)調(diào)用接口 連接起來,該標(biāo)準(zhǔn)調(diào)用接口采用與平臺(tái)無關(guān)的描述方式進(jìn)行描述。應(yīng)用軟件對(duì)文檔的操作 都統(tǒng)一成對(duì)一種預(yù)定義的通用文檔模型進(jìn)行的操作,并通過該標(biāo)準(zhǔn)調(diào)用接口向文檔庫系統(tǒng) 發(fā)出指令,文檔庫系統(tǒng)按照應(yīng)用軟件的指令,對(duì)存儲(chǔ)在存儲(chǔ)器中的文檔庫執(zhí)行相應(yīng)的操作。依照本發(fā)明的文檔處理方法,該方法包括以下步驟應(yīng)用軟件通過標(biāo)準(zhǔn)調(diào)用接口
20向文檔庫系統(tǒng)發(fā)出指令,其對(duì)文檔的操作都統(tǒng)一成對(duì)一種預(yù)定義的通用文檔模型進(jìn)行的操 作;文檔庫系統(tǒng)按照應(yīng)用軟件的指令,對(duì)存儲(chǔ)在存儲(chǔ)器中的文檔庫執(zhí)行相應(yīng)的操作。其中, 文檔庫系統(tǒng)和應(yīng)用軟件通過上述標(biāo)準(zhǔn)調(diào)用接口連接起來,該標(biāo)準(zhǔn)調(diào)用接口采用與平臺(tái)無關(guān) 的描述方式進(jìn)行描述。本發(fā)明改變了從用戶界面到文檔存儲(chǔ)都由一個(gè)軟件來完成的現(xiàn)狀,將其劃分為應(yīng) 用軟件和文檔庫系統(tǒng)兩層,并定義了一個(gè)接口標(biāo)準(zhǔn)。文檔庫系統(tǒng)是具備各種文檔操作功能 的通用技術(shù)平臺(tái),并具有符合該標(biāo)準(zhǔn)的接口部,應(yīng)用軟件要對(duì)文檔進(jìn)行操作時(shí)就通過該接 口部來向文檔庫系統(tǒng)發(fā)出相應(yīng)指令,文檔庫系統(tǒng)根據(jù)該指令執(zhí)行相應(yīng)操作。這樣,只要各應(yīng) 用軟件和各文檔庫系統(tǒng)都遵循同樣的標(biāo)準(zhǔn),不同應(yīng)用軟件就可以通過同一個(gè)文檔庫系統(tǒng)對(duì) 同一文檔操作,即可實(shí)現(xiàn)對(duì)文檔的互操作。同樣,同一個(gè)應(yīng)用軟件也可以通過不同文檔庫系 統(tǒng)對(duì)不同文檔進(jìn)行操作,而不用分別對(duì)每種文檔格式都進(jìn)行單獨(dú)開發(fā)。本發(fā)明還包括一個(gè)通用文檔模型,該模型能與各應(yīng)用軟件所需要處理的文檔相符 合。接口標(biāo)準(zhǔn)就是基于該文檔模型來設(shè)計(jì)的,這樣才能實(shí)現(xiàn)不同的應(yīng)用軟件都可以通過同 一個(gè)接口部來對(duì)文檔進(jìn)行操作。該通用文檔模型也適用于各種文檔格式,這樣同一個(gè)應(yīng)用 軟件才可以通過同一個(gè)接口部來對(duì)不同文檔格式進(jìn)行操作。該通用文檔模型的具體內(nèi)容請(qǐng) 參見后面的實(shí)施例。本發(fā)明還包括一個(gè)通用文檔安全模型,該通用文檔安全模型符合各應(yīng)用軟件對(duì)文 檔安全的需求,使不同的應(yīng)用軟件都可以通過同一個(gè)接口部實(shí)現(xiàn)對(duì)文檔的安全控制。該通 用文檔安全模型的具體內(nèi)容請(qǐng)參見后面的實(shí)施例說明。接口標(biāo)準(zhǔn)定義了基于該通用文檔模型和通用文檔安全模型對(duì)文檔進(jìn)行操作的各 種指令,以及應(yīng)用軟件向文檔庫系統(tǒng)發(fā)送指令的方式。文檔庫系統(tǒng)具備實(shí)現(xiàn)這些指令的功 能,以供應(yīng)用軟件調(diào)用。接口標(biāo)準(zhǔn)可以用命令串該通用文檔模型還包括由多個(gè)文檔組成的文檔集、文檔庫和文檔倉庫等層次,接 口標(biāo)準(zhǔn)中也包含對(duì)多文檔的組織管理、查詢檢索、安全控制等指令。該通用模型還包括將頁由具有上下順序的層組成,接口標(biāo)準(zhǔn)中也包含對(duì)層的各種 操作指令,以及對(duì)一個(gè)文檔某一層所對(duì)應(yīng)源文件的存儲(chǔ)和提取。文檔庫系統(tǒng)還具備對(duì)文檔的信息安全管理控制功能,如基于角色的細(xì)粒度權(quán)限管 理,并在接口標(biāo)準(zhǔn)中定義了相關(guān)的操作指令。依照本發(fā)明的系統(tǒng)由存儲(chǔ)器、文檔庫系統(tǒng)和應(yīng)用軟件組成。其中,文檔數(shù)據(jù)存儲(chǔ)在 存儲(chǔ)器中,文檔庫系統(tǒng)有一個(gè)下接口部,應(yīng)用軟件有一個(gè)上接口部。當(dāng)應(yīng)用軟件需要對(duì)文檔 庫進(jìn)行操作時(shí),通過其上接口部向文檔庫系統(tǒng)的下接口部發(fā)出指令,文檔庫系統(tǒng)按照應(yīng)用 軟件發(fā)出的指令,對(duì)存儲(chǔ)在存儲(chǔ)器中的文檔數(shù)據(jù)執(zhí)行相應(yīng)的操作。依照本發(fā)明,使得應(yīng)用層和數(shù)據(jù)處理層分離。這樣應(yīng)用軟件不再直接跟具體的文 檔格式打交道,文檔也不再與特定應(yīng)用軟件綁定,從而使得同一文檔能在不同的應(yīng)用軟件 之間通用,同一應(yīng)用軟件也能對(duì)不同文檔進(jìn)行操作,實(shí)現(xiàn)了文檔的互操作;整個(gè)文檔處理系 統(tǒng)還具備多文檔處理功能,而不局限在單文檔處理;將頁分成多層后,可以實(shí)現(xiàn)對(duì)不同層實(shí) 施不同管理和控制,更便于不同應(yīng)用軟件對(duì)同一頁的操作(可以設(shè)計(jì)成不同應(yīng)用軟件管理 和維護(hù)不同層),為以源文件方式進(jìn)行編輯提供了便利,也是一種很好的保留歷史痕跡的方 式;通過將信息安全集成在文檔處理的核心層,可以消滅安全縫隙,還能使安全機(jī)制與文檔
21操作緊密地結(jié)合為一體,而不是可以分離的兩個(gè)模塊,同時(shí)有更多的空間部署安全管理技 術(shù),相關(guān)代碼也能隱藏得更深,能更有效地防御非法攻擊,提高安全可靠度,另外還能提供 細(xì)粒度的安全管理手段,如更多的權(quán)限類別,更小的管理單元。依照本發(fā)明,提供更好的安全機(jī)制,可以設(shè)置多種角色,細(xì)粒度地設(shè)置每個(gè)角色的 權(quán)限。其中細(xì)粒度是雙重的,一方面可以對(duì)整個(gè)文檔或文檔的一個(gè)細(xì)微之處進(jìn)行權(quán)限設(shè)置, 另一方面可以設(shè)置種類非常多的權(quán)限,而不僅僅是傳統(tǒng)的讀/寫/不可訪問三級(jí)。依照本發(fā)明,鼓勵(lì)創(chuàng)新,合理競爭。形成合理的產(chǎn)業(yè)分工后,各文檔庫系統(tǒng)廠商和 各應(yīng)用軟件廠商就會(huì)在領(lǐng)域展開競爭,而不會(huì)再出現(xiàn)Microsoft Word—樣靠文檔格式來壟 斷應(yīng)用軟件的情形發(fā)生。各文檔庫系統(tǒng)廠商也可以在標(biāo)準(zhǔn)之外增加新的功能以吸引用戶, 標(biāo)準(zhǔn)并不會(huì)對(duì)創(chuàng)新形成束縛。依照本發(fā)明,便于優(yōu)化性能,有更好的可移植性和可伸縮性。無論是什么平臺(tái),什 么樣的性能,都可以遵循同樣的調(diào)用接口,使得在不改變接口標(biāo)準(zhǔn)的情況下可以不斷優(yōu)化 性能,并移植到不同的平臺(tái)。
權(quán)利要求
一種文檔處理方法,其特征在于,所述文檔包括一個(gè)或多個(gè)按順序排列的層;在編輯所述文檔時(shí),所述方法包括在文檔上新增加一層,將新編輯的內(nèi)容保存到所述新增加的層中,不允許修改和刪除其余各層的內(nèi)容。
2.如權(quán)利要求1所述的方法,其特征在于,應(yīng)用軟件通過向文檔庫系統(tǒng)發(fā)送指令指示 編輯所述文檔,文檔庫系統(tǒng)按照應(yīng)用軟件發(fā)出的指令,對(duì)文檔執(zhí)行相應(yīng)的操作,其中,所述文檔庫系統(tǒng)是具備文檔操作功能的技術(shù)平臺(tái)。
3.如權(quán)利要求2所述的方法,其特征在于,所述文檔庫系統(tǒng)和應(yīng)用軟件通過一種符合 接口標(biāo)準(zhǔn)的標(biāo)準(zhǔn)調(diào)用接口連接起來。
4.如權(quán)利要求3所述的方法,其特征在于,所述接口標(biāo)準(zhǔn)基于一種預(yù)定義文檔模型定 義對(duì)文檔數(shù)據(jù)進(jìn)行操作的指令;其中,所述文檔模型能夠描述頁面上的任意可見內(nèi)容。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述指令將應(yīng)用軟件對(duì)文檔的操作部統(tǒng) 一成對(duì)所述預(yù)定義文檔模型的操作。
6.如權(quán)利要求1至5任一所述的方法,其特征在于,所述文檔包括一個(gè)或多個(gè)按順序排 列的頁,所述頁包括一個(gè)或多個(gè)按順序排列的層,在對(duì)所述文檔的一頁進(jìn)行編輯時(shí),在所述 頁中新增加一個(gè)層,將新編輯的內(nèi)容插入到所述新增加的層中。
7.如權(quán)利要求1至5任一所述的方法,其特征在于,所述將新編輯的內(nèi)容插入到所述新 增加的層中包括將所述新編輯的內(nèi)容對(duì)應(yīng)的版面對(duì)象插入到所述新增加的層中。
8.如權(quán)利要求1至5任一所述的方法,其特征在于,所述不允許修改和刪除其余各層的 內(nèi)容包括對(duì)所述其余各層的每一層單獨(dú)進(jìn)行數(shù)字簽名;或者對(duì)所述其余各層的每一層及其之前所有的層一起進(jìn)行數(shù)字簽名,作為該層的數(shù)字簽名。
9.如權(quán)利要求8所述的方法,其特征在于,不同層的數(shù)字簽名由不同的角色進(jìn)行簽名。
10.如權(quán)利要求1至5任一所述的方法,其特征在于,所述每一層由一個(gè)應(yīng)用軟件來管 理和控制。
11.如權(quán)利要求10所述的方法,其特征在于,所述每一層由一個(gè)應(yīng)用軟件來管理和控 制包括所述每一層的數(shù)據(jù)由一個(gè)應(yīng)用軟件來設(shè)置。
12.如權(quán)利要求1至5任一所述的方法,其特征在于,進(jìn)一步包括將所述新增加的內(nèi)容以源文件的形式嵌入到所述文檔中,其中所述源文件為所述新增 加的層對(duì)應(yīng)的源文件;同一應(yīng)用軟件對(duì)所述文檔再次編輯時(shí),從所述文檔中取出所述新增加的層對(duì)應(yīng)的源文 件進(jìn)行編輯;并在源文件編輯結(jié)束后更新所述新增加的層的內(nèi)容;保存并重新嵌入所述源文件到所述文檔。
13.如權(quán)利要求12所述的方法,其特征在于,更新所述新增加的層的內(nèi)容包括將所述新增加的層原有的內(nèi)容全部清除后,按照所述編輯后的源文件,重新生成所述新增加的層的內(nèi)容。
14.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述將所述新增加的內(nèi)容以源文件的 形式嵌入到所述文檔中包括在對(duì)應(yīng)于所述文檔的對(duì)象中新建一個(gè)對(duì)應(yīng)于所述源文件的于對(duì)象,將所述源文件嵌入 到其對(duì)應(yīng)的所述子對(duì)象。
15.如權(quán)利要求1至5任一所述的方法,其特征在于,所述各層中至少有兩個(gè)層用不同 的頁面描述語言描述。
全文摘要
本發(fā)明提供一種文檔處理的方法,所述文檔包括一個(gè)或多個(gè)按順序排列的層;在編輯所述文檔時(shí),所述方法包括在文檔上新增加一層,將新編輯的內(nèi)容保存到所述新增加的層中,不允許修改和刪除其余各層的內(nèi)容。利用本發(fā)明提供的文檔處理方法,可以更好的模擬紙張編輯的特性。
文檔編號(hào)G06F21/00GK101982818SQ20101013214
公開日2011年3月2日 申請(qǐng)日期2005年12月9日 優(yōu)先權(quán)日2005年12月9日
發(fā)明者王東臨 申請(qǐng)人:北京書生國際信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
建阳市| 应用必备| 深州市| 新营市| 无棣县| 扶绥县| 讷河市| 平阴县| 安多县| 永年县| 和林格尔县| 名山县| 呼伦贝尔市| 漳平市| 扎囊县| 大英县| 海门市| 简阳市| 甘孜| 衡南县| 获嘉县| 普兰店市| 洛隆县| 遵化市| 太仓市| 汤原县| 莲花县| 沅江市| 无极县| 会理县| 芮城县| 光山县| 太仆寺旗| 黄龙县| 石林| 东至县| 朝阳区| 开封市| 双柏县| 辽宁省| 平陆县|