高瑾宇 曹 平 陳 潤 王博甲
(中航工業(yè)綜合技術(shù)研究所,北京 100028)
基于XML的文件結(jié)構(gòu)化方法研究
高瑾宇 曹 平 陳 潤 王博甲
(中航工業(yè)綜合技術(shù)研究所,北京 100028)
針對航空產(chǎn)品單一型號研制過程中遇到的技術(shù)文件格式要求嚴(yán)格、編制工作量巨大、引用關(guān)系及技術(shù)指標(biāo)錯綜復(fù)雜等問題,提出了基于XML的文件結(jié)構(gòu)化存儲方法,建立了文件結(jié)構(gòu)特征描述,研究了文件結(jié)構(gòu)特征處理,討論了基于XML的文件存儲和讀取技術(shù)。最后,通過一個實例驗證了所提方法的正確性。
Word;結(jié)構(gòu)化文件;智能編輯
隨著信息技術(shù)進(jìn)步與電子技術(shù)文檔編制復(fù)雜性增加,航空產(chǎn)品型號研制過程中,各類型技術(shù)文件編制過程的標(biāo)準(zhǔn)化工作已經(jīng)成為一項艱巨任務(wù)。由于技術(shù)文件數(shù)量繁多,設(shè)計人員經(jīng)常要受困于這些技術(shù)文檔重復(fù)而繁瑣的編寫工作。在現(xiàn)有技術(shù)條件下,通常針對此類問題的解決方案是對于每一個文件,做一個文件模板。這種方法在一定程度上緩解了該類問題,提高了文件編寫效率。但是在文件模板編制工作上又花費(fèi)了大量精力,并且一旦標(biāo)準(zhǔn)發(fā)生更改對應(yīng)技術(shù)文件模板更改工作量很大。
本文提出了基于XML存儲技術(shù)的文件結(jié)構(gòu)化設(shè)計方法,將文件模板分別用文本文件和樣式文件存儲起來。這樣不但實現(xiàn)了模板中文本和樣式相分離,同時XML存儲技術(shù)使文本結(jié)構(gòu)可以結(jié)構(gòu)化存儲,為文件內(nèi)容查找、重用、審查奠定了理論基礎(chǔ)。
可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)是一種用于標(biāo)記電子文件,使其具有結(jié)構(gòu)性的標(biāo)記語言。通過此種標(biāo)記,文件模板中文字化內(nèi)容可以被結(jié)構(gòu)化表達(dá)。因此,基于XML的文件結(jié)構(gòu)特征描述有利于實現(xiàn)文件交換、傳遞和共享。
文件結(jié)構(gòu)特征是組成文件的基本單元,通過對文件內(nèi)容分析,將文件主要分為結(jié)構(gòu)要素、特征要素、編輯要素3大類,如圖1所示。其中:
結(jié)構(gòu)要素:任何一個整體可以看作是由若干結(jié)構(gòu)模塊組成,文件中結(jié)構(gòu)模塊稱之為結(jié)構(gòu)要素。在一份具體的文件中,封面、目次、正文、附錄等要素就是一份文件具體的結(jié)構(gòu)要素。
特征要素:每一個結(jié)構(gòu)要素中,包含若干特征單元,稱之為特征要素。在具體的文件中表格、圖片、文本等都稱之為特征要素。
編輯要素:文件編輯過程中對文本的編輯操作統(tǒng)稱為編輯要素。在具體操作中,列項、示例、注釋等都稱為編輯要素。
一般來說,在一份完整文件中一定包含若干結(jié)構(gòu)要素、若干特征要素與若干編輯要素,并且結(jié)構(gòu)要素、特征要素與編輯要素是多對多關(guān)系,如圖2所示。
在文件文本中,有一類特殊文本內(nèi)容——圖、表特征要素,對于此類特征要素,不能直接以文本格式存儲起來,需要對其進(jìn)行格式轉(zhuǎn)換。
對于表格來講,要提取表格行列尺寸,單元格合并情況,以及表格填寫情況等屬性,首先將表格屬性記錄下來,再通過對表格單元格記錄完成表格存儲。讀取時首先通過解析表格屬性添加表,然后通過操作表格單元格完善表,最后通過填寫表格單元格完成表。
對于圖片來講,Word圖片采用Base64編碼格式,要想對Word圖片進(jìn)行存儲,首先要將Word圖片解碼處理并存放到一個指定文件夾,然后在文本中記錄圖片全路徑。讀取圖片時,首先通過圖片全路徑找到對應(yīng)Word圖片,然后將Word圖片導(dǎo)入并設(shè)置相應(yīng)格式。
在文件文本中,為了方便處理文中多次出現(xiàn)并且頻繁需要修改的文本,引入一種特殊結(jié)構(gòu)特征——書簽。其最大特點(diǎn)是可以實現(xiàn)相同內(nèi)容書簽中文本統(tǒng)一,具體表現(xiàn)為某一位置書簽內(nèi)容發(fā)生修改,其他位置書簽同步修改。在具體處理中,將文中滿足此特點(diǎn)的文本用一組前綴相同的書簽封裝起來。并且在文件處理中,為了把一套文件中不同文件的基本信息統(tǒng)一,將記錄文件基本信息的書簽用一個XML文件保存起來,以備其他文件使用,這樣大大提高了文件修改效率和統(tǒng)一性。
在具體結(jié)構(gòu)要素中,以封面要素為例,由于封面結(jié)構(gòu)布局固定且“編號”、“密級”、“標(biāo)題”等內(nèi)容術(shù)語在文中多處出現(xiàn)字段,所以可以利用表格技術(shù)來設(shè)計封面格式布局,利用書簽技術(shù)來填寫相應(yīng)文本內(nèi)容。這種類型的結(jié)構(gòu)要素稱作為表格型結(jié)構(gòu)要素。
以普通文本內(nèi)容為例,將每一個段落看作是一個最小文件元。在進(jìn)行文件存儲時,首先判斷文件元中是否有特殊格式文本,如果沒有,提取文本格式信息,并將格式記錄;如果有,則需要進(jìn)行特殊格式轉(zhuǎn)化,將特殊格式轉(zhuǎn)化為可存儲文本,然后再進(jìn)行格式記錄。這種類型的結(jié)構(gòu)要素稱作結(jié)構(gòu)型結(jié)構(gòu)要素。
以目次為例,由于目次內(nèi)容是提取文件中大綱級別層級來自動生成,這種類型的結(jié)構(gòu)要素稱作創(chuàng)生型結(jié)構(gòu)要素。
根據(jù)上述對文件結(jié)構(gòu)特征的描述和處理,對于一份文件,基于XML的存儲原理可按照3級結(jié)構(gòu)來存儲。一級結(jié)構(gòu)存儲文件結(jié)構(gòu)要素構(gòu)建文件整體框架,二級結(jié)構(gòu)存儲文件文本屬性,三級結(jié)構(gòu)存儲文本內(nèi)容。
在一級結(jié)構(gòu)中,將文件中各個結(jié)構(gòu)要素依次存儲,在各個節(jié)點(diǎn)屬性中設(shè)置結(jié)構(gòu)要素的名稱、書簽等屬性。在二級結(jié)構(gòu)下,存放每個結(jié)構(gòu)要素整體架構(gòu),并規(guī)定架構(gòu)特征屬性。在三級結(jié)構(gòu)下,將文件結(jié)構(gòu)要素中具體內(nèi)容依次存放。
因此,將Word文件轉(zhuǎn)換為XML結(jié)構(gòu)化文件時,首先需要縱觀全文提煉文件結(jié)構(gòu)要素,其次判斷結(jié)構(gòu)要素類型。如果是表格型結(jié)構(gòu)要素,需要確定表格的行、列、行寬、列寬、合并單元格、是否填寫內(nèi)容等基本屬性,并且在需要修改的地方添加書簽;如果是結(jié)構(gòu)型結(jié)構(gòu)要素,需要先確定文本結(jié)構(gòu)層級,并確定每一層級樣式及書簽位置;如果是創(chuàng)生型結(jié)構(gòu)要素,需要記錄其在文本中存放位置,并且記錄文本與內(nèi)容的關(guān)聯(lián)關(guān)系。
在文本存放中,主要采用節(jié)點(diǎn)式存放方式,將文件中每一個段落看作是一個最小單元,節(jié)點(diǎn)內(nèi)容存放文本內(nèi)容,節(jié)點(diǎn)屬性存放文本樣式,如果遇到特殊格式的表格、圖片就在節(jié)點(diǎn)下按照表格、圖片的存放方式來進(jìn)行存放。
在XML文件解析時,首先要事先打開該文件所對應(yīng)的dot文件,然后基于根節(jié)點(diǎn)循環(huán)。在每個結(jié)構(gòu)要素節(jié)點(diǎn)下,通過循環(huán)其中子節(jié)點(diǎn)將結(jié)構(gòu)要素內(nèi)的內(nèi)容依次輸出,然后根據(jù)具體屬性將文本刷新編輯,這樣按節(jié)點(diǎn)將文件全部輸出,就形成了一份符合標(biāo)準(zhǔn)的結(jié)構(gòu)化模板。
根據(jù)以上描述,本文以GJB/Z 170.2-2013 《軍工產(chǎn)品設(shè)計定型文件編制指南 第2部分:設(shè)計定型審查意見書》為例。
通過對文件結(jié)構(gòu)的分析和處理,確定文件結(jié)構(gòu)要素分別為封面、簽署頁、目錄、目次、附錄,并且文件第1章有特殊格式圖片、文件第6章有特殊格式表格,因此導(dǎo)出的結(jié)構(gòu)化模板如圖3所示。
從圖3中可以清楚地看出,文件結(jié)構(gòu)化模板結(jié)構(gòu)要素清晰,可閱讀性強(qiáng),這樣既有利于文件內(nèi)容重復(fù)利用,又方便文件模板修改。并且通過對結(jié)構(gòu)化模板解析,同樣可以得到與之前模板一樣的Word模板。
本文以文件結(jié)構(gòu)化的存儲和讀取為研究目標(biāo),著眼于實際應(yīng)用需求,分析了現(xiàn)有解決方案的不足,提出了基于XML的文件結(jié)構(gòu)化存儲方案,討論了其主要技術(shù)路線,并給出了關(guān)鍵問題的解決方案,最后用一個實際案例證明了方案的可行性。利用該技術(shù)開發(fā)出來的文件模板,體積小、格式準(zhǔn)確、編寫效率高、調(diào)用速度快,明顯提高了文件編制和管理效率。
雖然基于XML的文件結(jié)構(gòu)化存儲方案,在文件編制過程中大大提高了編制效率,但是要想完全實現(xiàn)文件智能編輯,需要引入知識重用和挖掘,而結(jié)構(gòu)化的文件設(shè)計可以完全解決文件中關(guān)鍵字搜索這一技術(shù)難點(diǎn)。因此,在后續(xù)研究中可以將知識挖掘考慮進(jìn)來,使得文件編輯更加智能化。
[1] 曹平,楊文宏,朱亮. 基于XML的開放電子文檔標(biāo)準(zhǔn)分析[J]. 航空標(biāo)準(zhǔn)化與質(zhì)量,2011(6).
[2] 關(guān)巍. 利用VSTO實現(xiàn)文檔的智能化[J]. 開發(fā)應(yīng)用,2006(6).
[3] 惠怡靜,邵學(xué)彬,程旭. 基于VSTO的Word數(shù)據(jù)自動化提取及報告生成系統(tǒng)的設(shè)計與開發(fā)[J]. 計算機(jī)光盤軟件和應(yīng)用,2013(19).
[4] 宋向瑛,朱嘉賢. 基于VSTO的文檔格式處理系統(tǒng)設(shè)計與實現(xiàn)[J]. 電腦編程技巧與維護(hù),2013(10).
[5] 王瑾. 基于VSTO的文檔智能化實現(xiàn)[J]. 科技咨詢導(dǎo)報,2007(18).
[6] 關(guān)巍. 基于VSTO自動批量生成WORD文檔的設(shè)計與實現(xiàn)[J]. 信息與電腦,2010(11).
[7] 程旭輝. GJB 0《軍用標(biāo)準(zhǔn)文件編制工作導(dǎo)則》實施指南[M]. 北京:國防工業(yè)出版社,2002.
[8] 張方紀(jì),劉洪星. 結(jié)構(gòu)化自動化Word文檔的集成化應(yīng)用技術(shù)[J]. 電腦知識與技術(shù),2011(28).
(編輯:勞邊)
T-65
C
1003-6660(2017)01-0045-03
10.13237/j.cnki.asq.2017.01.011
[收修訂稿日期] 2016-11-23