馬永起,蒙立榮,余 杰,吳家菊,程 錚
(1.中國工程物理研究院計算機(jī)應(yīng)用研究所,四川 綿陽 621900; 2.國防科技大學(xué) 計算機(jī)學(xué)院,湖南 長沙 410073)
面向IETM的PDF文檔發(fā)布模型研究*
馬永起1,蒙立榮1,余 杰2,吳家菊1,程 錚1
(1.中國工程物理研究院計算機(jī)應(yīng)用研究所,四川 綿陽621900;2.國防科技大學(xué) 計算機(jī)學(xué)院,湖南 長沙410073)
針對IETM中PDF文檔發(fā)布需求,提出了技術(shù)出版物模型,并對技術(shù)出版物模型進(jìn)行延伸,提出了PDF文檔發(fā)布模型。該模型對技術(shù)出版物結(jié)構(gòu)樹進(jìn)行邏輯轉(zhuǎn)換,生成數(shù)據(jù)模塊順序清單,依據(jù)清單將所有數(shù)據(jù)模型文件合并為一個XML文檔,并結(jié)合對應(yīng)的XSL樣式,通過XEP工具生成PDF文檔,實(shí)現(xiàn)了IETM中從技術(shù)出版物直接生成PDF文檔。
IETM;技術(shù)出版物模型;PDF文檔發(fā)布模型;XEP
技術(shù)資料和手冊是現(xiàn)代武器裝備系統(tǒng)的重要組成部分,與武器裝備系統(tǒng)的操作使用、維護(hù)管理以及人員技能密切相關(guān)。IETM(Interactive Electronic Technical Manual)通過對裝備的大量書面技術(shù)材料進(jìn)行數(shù)字化,形成電子化文檔,并加入了表格、圖像、圖紙、聲音、視頻、動畫等內(nèi)容豐富、形式多樣的信息技術(shù),為終端用戶提供交互式電子屏幕顯示,其優(yōu)越性越來越明顯[1]。根據(jù) GJB6600 和S1000D[2]標(biāo)準(zhǔn)規(guī)定,XML 在 IETM 中可以發(fā)布成 HTML格式和 PDF 格式發(fā)布[3]。文獻(xiàn)[4]中為了更好地進(jìn)行HTML格式和PDF格式發(fā)布,提出在表示層使用XSL技術(shù)代替JSP技術(shù),實(shí)現(xiàn)了IETM發(fā)布系統(tǒng),但未說明PDF發(fā)布模型。文獻(xiàn)[5]和文獻(xiàn)[6]使用了DocBook XML 發(fā)布模型,實(shí)現(xiàn)了在IETM中PDF文檔發(fā)布,其中DocBook XML 發(fā)布模型主要基于XML和XSLT生成中間文檔DocBook,再基于DocBook和DocBook FO XSL生成PDF文檔,但文獻(xiàn)中對IETM出版物模塊沒有進(jìn)行數(shù)據(jù)建模,也未描述IETM出版物與DocBook XML 發(fā)布模型的銜接關(guān)系。文獻(xiàn)[7]中主要面向HTML格式的發(fā)布,提出了通過出版物模塊(Publication Module,PM)目錄樹進(jìn)行組織內(nèi)容和發(fā)布顯示,但文中未具體說明出版物模塊目錄樹的模型表示。本文為解決IETM中PDF格式文檔發(fā)布,首先對技術(shù)出版物模塊進(jìn)行建模,然后以該模型為基礎(chǔ),提出了PDF文檔發(fā)布模型。
在IETM中XML和XSL技術(shù)是發(fā)展主流,XML表示內(nèi)容,XSL描述呈現(xiàn)的樣式[8],在文獻(xiàn)[9]中描述了XML技術(shù)在IETM中如何應(yīng)用。將XML文件轉(zhuǎn)化為PDF文件,需要利用樣式表。樣式表為XML文件添加表示。將內(nèi)容(XML數(shù)據(jù))與表示(樣式表)分離,是“模型-視圖-控制器”(MVC)成功的范例[10]。數(shù)據(jù)(模型)、數(shù)據(jù)如何展示(視圖)和它們之間框架(控制器)的分離有助于資源的最大重用。使用這個技術(shù),XML數(shù)據(jù)僅僅是數(shù)據(jù),樣式表能夠?qū)?shù)據(jù)轉(zhuǎn)化成不同的格式[10],將數(shù)據(jù)的維護(hù)與表示的維護(hù)分離開來。
基于MVC框架,控制器可以是一個樣式表處理器,用于提取一個XML文件和一個樣式表生成一個結(jié)果。XSL樣式表包括兩個部分[10]:提供一種機(jī)制將一個XML文件轉(zhuǎn)化為一個新的XML文件(XSLT),提供一個詞匯表用于樣式化對象(XSLFO)。在XSLT中用模塊規(guī)則規(guī)定樣式表處理器怎么轉(zhuǎn)化為其他文件。XSLFO是一種編頁碼置標(biāo)語言,在XSL中它是定義的形式化詞匯。PDF文檔發(fā)布時,將XML文件和FO.XLS文件轉(zhuǎn)化為XSLFO文件,并對XSLFO文件進(jìn)行進(jìn)一步轉(zhuǎn)化,生成PDF文檔。XML文件和XSL樣式表轉(zhuǎn)化為XSLFO文件原理如圖1所示。
圖1 XSLT處理引擎轉(zhuǎn)換原理
一個樣式表引擎(XSL引擎)將一個原始的XML文件裝在一個DOM源樹中,并通過樣式表中給定的命令對文件進(jìn)行轉(zhuǎn)化[10]。在規(guī)定這些命令時,樣式表運(yùn)行Xpath表達(dá)式置于源樹的參考部分,并將信息置于結(jié)果樹中,結(jié)果樹形式化后就產(chǎn)生了XML結(jié)果文件。對結(jié)果文件一般需要進(jìn)行后處理,利用后處理器轉(zhuǎn)化為不同的格式(如PDF)。在文獻(xiàn)[11]提到了基于XML和XSL樣式轉(zhuǎn)化HTML的流程,文獻(xiàn)[12]提出了基于XML和XSLT的模型驅(qū)動構(gòu)架。
由XSLFO文件生成PDF文檔分為以下三個步驟,如圖2所示:
(1)解析:讀取XSLFO文件,在內(nèi)存中存儲XSLFO文件;
(2)格式化:給XSLFO文件添加格式化信息,生成新的XML文件,以便以后進(jìn)一步處理;
(3)生成文檔:將XSLFO文件轉(zhuǎn)化為期望的文件格式。
圖2 XSLFO文件生成PDF文檔過程
XEP[13]是一個將XML數(shù)據(jù)轉(zhuǎn)化為PDF文檔的Java類庫。它可以將XMLFO文件或者XML以及對應(yīng)的XSL樣式表單轉(zhuǎn)化為PDF文檔。它內(nèi)置了XSLT處理器來處理XML和XSL文件,把XML和XSL文件轉(zhuǎn)化為XSLFO文件。XSLFO文件可以通過XEP Engine引擎生成PDF文檔。
根據(jù)ASD S1000D國際規(guī)范,在IETM中編著的技術(shù)出版物以數(shù)據(jù)模塊(Data Module,DM)為基本信息單元來組織技術(shù)信息,以公共源數(shù)據(jù)庫(Comment Source Data Base,CSDB)管理數(shù)據(jù)模塊和相關(guān)信息對象,以出版物模塊組織技術(shù)信息的發(fā)布[7]。研究基于IETM的PDF文檔發(fā)布技術(shù),首先必須對技術(shù)出版物進(jìn)行建模,通過模型描述該技術(shù)出版物的業(yè)務(wù)邏輯和內(nèi)容;其次,基于該技術(shù)出版模型研究PDF文檔發(fā)布模型,實(shí)現(xiàn)IETM技術(shù)出版物的PDF格式發(fā)布。
一般情況下,技術(shù)出版物的構(gòu)成由章、節(jié)、正文組成,它可以抽象為由若干個“單層結(jié)構(gòu)”組合組成,每個“層次結(jié)構(gòu)”由一個父親和從屬于父親的一個或多個孩子組成,技術(shù)出版物構(gòu)成如圖3所示。
圖3 技術(shù)手冊構(gòu)成
以圖3所示的技術(shù)出版物為例,技術(shù)出版物作為最上層的父親是一個技術(shù)手冊,它由第1章、第n章兩個孩子組成。技術(shù)出版物同第1章、第n章組成一個“單層結(jié)構(gòu)”。圖3中,第1章對于技術(shù)出版物來講是孩子,但它對于第1節(jié)、第n節(jié)來講又是父親,并一起組成一個第二個層次的單層結(jié)構(gòu)。同理,第1節(jié)同Process0、Process1,Process0同數(shù)據(jù)模塊DM(文本)、數(shù)據(jù)模塊DM(圖形)、數(shù)據(jù)模塊DM(鏈接)又組成位于不同層次的單層結(jié)構(gòu)。任何一個技術(shù)手冊都是這樣由無數(shù)個“單層結(jié)構(gòu)”組成的。父親同孩子的關(guān)系是唯一的,如果章節(jié)不同,將視為有不同的單層結(jié)構(gòu)。技術(shù)出版物數(shù)據(jù)模型如圖4所示。
圖4 技術(shù)出版物數(shù)據(jù)模型
模型描述如下:
輸入:技術(shù)出版物id
輸出:技術(shù)出版物結(jié)構(gòu)樹
(1)根據(jù)技術(shù)出版物id,在目錄層次結(jié)構(gòu)中判斷該節(jié)點(diǎn)是否是根節(jié)點(diǎn),如果該節(jié)點(diǎn)的父節(jié)點(diǎn)pid為空則該節(jié)點(diǎn)為根節(jié)點(diǎn),獲取根節(jié)點(diǎn)的目錄層次標(biāo)識id,執(zhí)行步驟(2),否則返回技術(shù)出版物結(jié)構(gòu)樹為空。
(2)根據(jù)根目錄層次標(biāo)識id,在目錄層次結(jié)構(gòu)中判斷根節(jié)點(diǎn)是否存在子節(jié)點(diǎn),如果根節(jié)點(diǎn)存在子節(jié)點(diǎn),則獲取根節(jié)點(diǎn)的所有子節(jié)點(diǎn),對根節(jié)點(diǎn)的所有子節(jié)點(diǎn)循環(huán)執(zhí)行步驟(3),當(dāng)所有子節(jié)點(diǎn)循環(huán)完畢后返回技術(shù)出版物;否則將根節(jié)點(diǎn)添加到技術(shù)出版物結(jié)構(gòu)樹中并返回技術(shù)出版物結(jié)構(gòu)樹。
(3)根據(jù)節(jié)點(diǎn)的目錄層次標(biāo)識id在目錄層次內(nèi)容中判斷該節(jié)點(diǎn)是否為葉子節(jié)點(diǎn)。若是葉子節(jié)點(diǎn),則將該節(jié)點(diǎn)以及先輩節(jié)點(diǎn)添加到技術(shù)出版物結(jié)構(gòu)樹中;否則取得該節(jié)點(diǎn)的目錄層次id后執(zhí)行步驟(4)。
(4)根據(jù)節(jié)點(diǎn)的目錄層次標(biāo)識id獲取該節(jié)點(diǎn)的所有子節(jié)點(diǎn),對該節(jié)點(diǎn)的所有子節(jié)點(diǎn)循環(huán)執(zhí)行步驟(3)。
為了能在IETM中發(fā)布PDF文檔,本文采用XEP工具包來實(shí)現(xiàn)PDF文檔的發(fā)布。XEP可以將XML文檔以及對應(yīng)XSL樣式文件生成為PDF文檔。所以,需要構(gòu)建一個模型將技術(shù)出版物結(jié)構(gòu)樹轉(zhuǎn)化為XML文檔。由于技術(shù)出版物結(jié)構(gòu)樹包含了技術(shù)出版的目錄層次結(jié)構(gòu)信息,在生成XML文檔過程中需要保持內(nèi)容上的先后順序,這樣才能保證PDF文檔內(nèi)容先后順序的正確性,否則會出現(xiàn)內(nèi)容先后順序顛倒的情況。
圖5 PDF文檔發(fā)布模型
模型中最重要的是通過技術(shù)出版物結(jié)構(gòu)樹生成數(shù)據(jù)模塊順序清單,當(dāng)獲得到數(shù)據(jù)模塊順序清單后,從數(shù)據(jù)庫讀取所有XML文件,如數(shù)據(jù)模塊清單順序?yàn)镈MO、DM1、…、DMN,對應(yīng)XML的文件為DM0.XML、DM1.XML、…、DMN.XML。將所有的數(shù)據(jù)模塊XML文件合并為一個數(shù)據(jù)模塊XML文件DM.XML。DM.XSL不是模型產(chǎn)生的文件,它是與DM.XML相對應(yīng)的樣式文件,由XSL樣式文件編寫者提供。
模型描述如下:
輸入:技術(shù)出版物id
輸出:PDF文檔
(1)根據(jù)技術(shù)出版物id,在目錄層次結(jié)構(gòu)中判斷該節(jié)點(diǎn)是否是根節(jié)點(diǎn),如果該節(jié)點(diǎn)的父節(jié)點(diǎn)pid為空則該節(jié)點(diǎn)為根節(jié)點(diǎn),獲取根節(jié)點(diǎn)的目錄層次標(biāo)識id,執(zhí)行步驟(2),否則返回PDF文檔為空。
(2)根據(jù)根目錄層次標(biāo)識id,在目錄層次結(jié)構(gòu)中判斷根節(jié)點(diǎn)是否存在子節(jié)點(diǎn),如果根節(jié)點(diǎn)存在子節(jié)點(diǎn),則則獲取根節(jié)點(diǎn)的所有子節(jié)點(diǎn),對根節(jié)點(diǎn)的所有子節(jié)點(diǎn)循環(huán)執(zhí)行步驟(3),當(dāng)所有子節(jié)點(diǎn)循環(huán)完畢后返回數(shù)據(jù)模塊順序清單,執(zhí)行步驟(6);否則返回PDF文檔為空。
(3)根據(jù)節(jié)點(diǎn)的目錄層次標(biāo)識id在目錄層次內(nèi)容中判斷該節(jié)點(diǎn)是否為葉子節(jié)點(diǎn),若是葉子節(jié)點(diǎn),則執(zhí)行步驟(5);否則取得該節(jié)點(diǎn)的目錄層次id后執(zhí)行步驟(4)。
試驗(yàn)1:毒餌噴撒機(jī)掛接在JDT-654型拖拉機(jī)后,在發(fā)動機(jī)空載情況下,分別操縱力、位調(diào)節(jié)手柄升降毒餌噴撒機(jī)10次(升降角度范圍0~36°),試驗(yàn)次數(shù)2次,記下試驗(yàn)數(shù)據(jù)。
(4)根據(jù)節(jié)點(diǎn)的目錄層次標(biāo)識id獲取該節(jié)點(diǎn)的所有子節(jié)點(diǎn),對該節(jié)點(diǎn)的所有子節(jié)點(diǎn)循環(huán)執(zhí)行步驟(3)。
(5)判斷該葉子節(jié)點(diǎn)是否為數(shù)據(jù)模塊,若是數(shù)據(jù)模塊,則將該節(jié)點(diǎn)添加到數(shù)據(jù)模塊順序清單中;否則該節(jié)點(diǎn)不添加到數(shù)據(jù)模塊順序清單中。
(6)根據(jù)數(shù)據(jù)模塊順序清單循環(huán)生成XML文件列表。
(7)將XML文件列表中的所有XML文件合并為一個XML文件。
(8)以XML文件和XSL文件作為輸入,以XEP工具包為函數(shù),生成PDF文檔。
本實(shí)驗(yàn)采用Java語言開發(fā),開發(fā)工具為MyEclipse 10.0,表示層采用MiniUI 3.0,數(shù)據(jù)庫為Oracle 11g。
該實(shí)驗(yàn)的主要目的是驗(yàn)證模型的技術(shù)可行性,驗(yàn)證模型能否支持在IETM中PDF文檔的發(fā)布,準(zhǔn)備的數(shù)據(jù)如表1~表4所示,DMC是數(shù)據(jù)模塊的唯一標(biāo)識碼[15]。
表1 技術(shù)出版物表
表2 目錄層次結(jié)構(gòu)表(SNS)
表3 目錄層次結(jié)構(gòu)內(nèi)容表(SNS-DM)
表4 數(shù)據(jù)模塊表(dm)
因?yàn)閄SL文件比較多,這里省略。實(shí)驗(yàn)結(jié)果顯示PDF文檔可以正常發(fā)布。與文獻(xiàn)[5]和文獻(xiàn)[6]相比,該模型都能滿足技術(shù)可行性要求,支持在IETM中進(jìn)行PDF文檔發(fā)布。
測試環(huán)境:操作系統(tǒng)為Windows 7旗艦版64位;CPU為core i5-3470,主頻為3.2 GHz;內(nèi)存為4.0 GB。在文獻(xiàn)[5]給出IETM發(fā)布系統(tǒng)性能對比,如表5所示。
表5 IETM 發(fā)布系統(tǒng)性能對比
因?yàn)槲墨I(xiàn)[5]中對比項(xiàng)為特定XML文件,本文沒有該XML文件,但是為了進(jìn)行比較,本文以XML文件大小為對比項(xiàng)進(jìn)行性能對比,性能對比分別按文件步進(jìn)大約為8 KB、17 KB、74 KB以及較大數(shù)據(jù)進(jìn)行了性能測試,性能測試結(jié)果如表6~表9所示。
通過實(shí)驗(yàn)表明,本模型能支持發(fā)布的XML文件最大約為7 511 KB,發(fā)布的PDF文檔最大頁數(shù)為3 070頁左右。文獻(xiàn)[5]中性能測試數(shù)據(jù)比較少,測試所使用的XML文件大小比較小,而且XML文件本文不一致,故本文只能進(jìn)行大概的性能數(shù)據(jù)比對。經(jīng)過比較,本文所使用PDF文檔發(fā)布模型在性能要優(yōu)于文獻(xiàn)[5]、Bridge工程轉(zhuǎn)換工具、martavioniscs 轉(zhuǎn)換工具的發(fā)布性能。
表6 按文件步進(jìn)大約8 KB時PDF文檔發(fā)布性能
表7 按文件步進(jìn)大約17 KB時PDF文檔發(fā)布性能
表8 按文件步進(jìn)大約74 KB時PDF文檔發(fā)布性能
表9 較大數(shù)據(jù)時PDF文檔發(fā)布性能
本文提出的PDF文檔發(fā)布模型可以滿足IETM中PDF格式文檔發(fā)布技術(shù)可行性要求,性能較好,能支持單個文件上千頁的發(fā)布。不足之處是:(1)基于技術(shù)出版物模型生成數(shù)據(jù)模塊順序清單時,不能反映出章節(jié)正文等層次結(jié)構(gòu),即不能反映數(shù)據(jù)模塊是屬于哪個章哪一節(jié),這將導(dǎo)致數(shù)據(jù)模塊的章節(jié)劃分任務(wù)傳遞到XSL樣式編寫人員身上,而且樣式編寫人員只能依靠人工對比進(jìn)行劃分;(2)技術(shù)出版物與XSL樣式文件強(qiáng)耦合, 技術(shù)出版物內(nèi)容或章節(jié)層次改變后,相應(yīng)的XSL也要跟著改變,否則無法正確地生成PDF文檔內(nèi)容;(3)當(dāng)XML文件大于7 511 KB時,經(jīng)常出現(xiàn)無法正常發(fā)布的情況。下一步將對模型繼續(xù)優(yōu)化,設(shè)計通過基于技術(shù)出版物模型生成具有章、節(jié)、正文層次結(jié)構(gòu)的PM.XML,生成的PM.XML文件滿足PM.XSD要求,在PM.XML中可以使用到數(shù)據(jù)模塊與章節(jié)結(jié)構(gòu)掛接起來,針對PM.XML文件編寫一套XSL樣式文件,解決本文提到PDF文檔發(fā)布模型的缺點(diǎn)。
[1] 徐宗昌. 基于公共源數(shù)據(jù)庫的裝備IETM技術(shù)[M]. 北京:國防工業(yè)出版社,2014.
[2] TPSMG. ASD S1000D: international specification for technical publications utilizing a common source database,Issue 2.3[S]. 2007.
[3] 李萬勇,許豐娟. 基于Docbook標(biāo)準(zhǔn)的IETM發(fā)布平臺[J]. 軟件,2014,35(5):111-113.
[4] Wang Tao,Jiang Lili. Research on IETM publishing system based on MVC pattern[C]. Wase International Conference on Information Engineering,IEEE,2010:129-132.
[5] 李紅靜. 基于S1000D標(biāo)準(zhǔn)的IETM發(fā)布系統(tǒng)研究與實(shí)現(xiàn)[D]. 成都:電子科技大學(xué),2014.
[6] 石景愷. IETM發(fā)布系統(tǒng)設(shè)計與測試[D]. 成都:電子科技大學(xué),2015.
[7] 雷育生,胡梁勇,王煉.IETM數(shù)據(jù)資源組織與發(fā)布研究[C].全國信息管理與工業(yè)工程學(xué)術(shù)會議, 2008.
[8] Liang Weijie,Jia Jinna,Cai Liying,et al. A survey of common technology and data model standard of equipment IETM[J]. Advanced Materials Research,2014,998-999:553-557.
[9] Sheng Wenping,Wang Ruiqi,Lin Yu,et al. Application and research of XML technology in IETM[J]. Advanced Materials Research,2012,424-425:1062-1064.
[10] DOCONTA M C,OBRST L J,SMITH K T,等. 語義網(wǎng):XML、Web服務(wù)和知識管理的未來[M]. 岳高峰,刑立法,孫文峰,等,譯. 北京:中國科學(xué)技術(shù)出版社,2009.
[11] Huang Guoliang,Jiang Lili. Research on IETM Data processing based on XML[C]. International Conference on Electrical and Control Engineering,IEEE,2010:2941-2943.
[12] 於良偉,袁泉,霍劍青,等. 基于XML和XSLT的模型驅(qū)動構(gòu)架[J]. 計算機(jī)工程,2010,36(6):49-51.
[13] XEP Engine[EB/OL].(2015-09-25)[2017-06-20]http://www.renderx.com/tools/xep.html.
[14] 許彩,胡柏青,羅銀波. 基于GJB6600的IETM通用開發(fā)平臺設(shè)計研究[J]. 艦船電子工程,2012,32(11):81-83.
[15] 高萬春,楊彥明,張銳麗. CGM智能圖形在IETM中的應(yīng)用研究[J]. 計算機(jī)與現(xiàn)代化,2013(3):179-183.
Research on PDF document publishing model in IETM
Ma Yongqi1,Meng Lirong1,Yu Jie2,Wu Jiaju1,Cheng Zheng1
(1. Institute of Computer Application,CAEP,Mianyang 621900,China;2. School of Computer,National University of Defense Technology,Changsha 410073,China)
Approach to the requirement of the PDF document issuing in IETM,this paper proposes the model of technique publication,and proposes the model of PDF document issuing based on the technique publication model. The model converts the tree of technique publication structure into the sequence list of the data module,combines all DMs into one XML file based on the sequence list,and corresponding to the XSL style,generates PDF file by XEP kit.
IETM; techique publication model; PDF document publishing model; XEP
NSAF聯(lián)合基金資助項(xiàng)目(U1630115)
P315.69
A
10.19358/j.issn.1674-7720.2017.24.025
馬永起,蒙立榮,余杰,等.面向IETM的PDF文檔發(fā)布模型研究J.微型機(jī)與應(yīng)用,2017,36(24):87-91.
2017-06-21)
馬永起(1986-),男,碩士,主要研究方向:交互式電子手冊,裝備綜合保障。
蒙立榮(1985-),男,碩士,主要研究方向:交互式電子手冊,裝備綜合保障。
余杰(1982-),男,博士,主要研究方向:軟件理論與軟件工程。