殷克濤 張煊
[摘 要] 當(dāng)前,大多數(shù)電子書制作商、加工商專注于擴(kuò)充電子書庫(kù)的容量,忽略了電子書排版的質(zhì)量,造成其制作、加工的電子書普遍存在閱讀體驗(yàn)差、閱讀效果不理想的問(wèn)題。面對(duì)差異化的用戶需求,如何在電子書自動(dòng)排版基礎(chǔ)上實(shí)現(xiàn)專業(yè)的排版效果是當(dāng)前面臨的重要問(wèn)題。本文在XML基礎(chǔ)上構(gòu)建電子書E-book,并利用專業(yè)設(shè)計(jì)的參數(shù)文檔結(jié)合XSL轉(zhuǎn)化實(shí)現(xiàn)電子書自排版,基本達(dá)到了專業(yè)排版的效果。
[關(guān)鍵詞] 電子書 自排版 可擴(kuò)展標(biāo)記語(yǔ)言
[中圖分類號(hào)] G238 [文獻(xiàn)標(biāo)識(shí)碼] A [文章編號(hào)] 1009-5853 (2017) 04-0040-05
Realization of the E-Book Self-Publishing System Based on XML
Yin ketao Zhang xuan
(School of Humanities, Zhejiang Gongshang University, Hangzhou, 310018)(School of Information Management, Central China Normal University, Wuhan, 430072)
[Abstract] At present, most of the book publishers focus on the expansion of their e-books library capacity, ignoring the quality of e-book typesetting, which results poor reading experience and effects. Facing the difference of user's demand, how to realize an e-book publishing system which have professional typesetting effects is the most important question that we have to deal with. In this paper, the e-book self-publishing system is built based on the XML. The system can realize the the effect of professional typesetting by using the professional design of the e-book typesetting parameters and XSL conversion.
[Key words] E-book Self-typesetting XML
1 引 言
在亞馬遜Kindle開啟電子書熱潮后,一些國(guó)內(nèi)出版企業(yè)以及電商巨頭也在積極開展電子書業(yè)務(wù)。與此同時(shí),移動(dòng)閱讀、社交媒體也在加速推動(dòng)電子書的傳播與影響,強(qiáng)化人們的讀書興趣?!半娮訒鵁帷痹鰪?qiáng)了電子書內(nèi)容提供商和加工商對(duì)于電子書市場(chǎng)良好的預(yù)期,促使他們不斷將手中的資源數(shù)字化,擴(kuò)充自身電子書的容量。在擴(kuò)充電子書資源的同時(shí),一些電子書制作、加工企業(yè)也在積極深化電子書加工層次,挖掘其潛在價(jià)值,進(jìn)一步開發(fā)電子書資源。當(dāng)前,電子書內(nèi)容的深加工趨向愈發(fā)明顯,從數(shù)字化到內(nèi)容聚合、語(yǔ)義抽取,體現(xiàn)著電子書制作與加工由淺層次的粗加工轉(zhuǎn)向深層次的內(nèi)容挖掘。特別是在未來(lái)一段時(shí)間內(nèi),電子書深層次加工變得尤其重要。
盡管在2010年,原新聞出版總署在《關(guān)于發(fā)展電子書產(chǎn)業(yè)的意見》中明確提出,我們要豐富電子書內(nèi)容資源,優(yōu)化傳統(tǒng)出版資源數(shù)字化轉(zhuǎn)換質(zhì)量[1]。然而,當(dāng)前的電子書加工普遍存在版面設(shè)計(jì)不夠?qū)I(yè)、無(wú)法構(gòu)建人性化閱讀體驗(yàn)的問(wèn)題[2]。許多電子書僅僅是傳統(tǒng)書籍的掃描版或者內(nèi)容文字的簡(jiǎn)單再現(xiàn),忽略了排版質(zhì)量。其結(jié)果就是閱讀體驗(yàn)差、閱讀效果不理想。而純粹的人工精細(xì)排版又耗時(shí)、費(fèi)力,并不被大家認(rèn)可。因此,如何將專業(yè)的排版與計(jì)算機(jī)程序自動(dòng)排版相結(jié)合,成為在電子書制作、加工過(guò)程中面臨的重要問(wèn)題。本文正是針對(duì)這一問(wèn)題展開研究,利用可擴(kuò)展標(biāo)記語(yǔ)言(Extensible Markup Language, XML)實(shí)現(xiàn)電子書自動(dòng)排版與專業(yè)排版相結(jié)合,基本達(dá)到電子書自排版的專業(yè)化效果。
2 電子書自排版的需求
電子書在制作、加工過(guò)程中實(shí)現(xiàn)自動(dòng)排版,是電子書深加工中的重要一環(huán)。其不僅可以自動(dòng)實(shí)現(xiàn)專業(yè)排版效果,還可以實(shí)現(xiàn)電子書個(gè)性化輸出,提供符合用戶需求偏好的文檔。因此,電子書自動(dòng)排版不僅符合電子書制作數(shù)字化的要求,同時(shí)是用戶終端多元需求的體現(xiàn),能夠帶給用戶最佳的數(shù)字內(nèi)容體驗(yàn)。
2.1 滿足“一次制作、多元發(fā)布”的需求
電子書自動(dòng)排版離不開用戶的需求。用戶需求的差異使得電子書生產(chǎn)商面臨多種類型文檔與跨終端排版的需求,而“一次制作、多元發(fā)布”是電子書內(nèi)容生產(chǎn)商滿足用戶差異化需求的最佳方案。所謂“一次制作、多元發(fā)布”,并不單純是介質(zhì)的不同而多元發(fā)布,有時(shí)還會(huì)因?yàn)闀r(shí)間、人物、地點(diǎn)的不同,需要以不同的風(fēng)貌和方式展示,其內(nèi)容本身有一個(gè)體系,能根據(jù)閱讀內(nèi)容產(chǎn)生新的、更為專業(yè)的內(nèi)容[3]。其中,“一次制作”要求電子書在制作過(guò)程中一次性完成電子書文檔內(nèi)容的描述,“多元發(fā)布”則能根據(jù)用戶的終端和需求發(fā)布不同樣式或內(nèi)容差異化的產(chǎn)品。前者需要我們采取通用語(yǔ)言來(lái)描述電子書內(nèi)容,在發(fā)布的時(shí)候能夠被識(shí)別、調(diào)取,而后者則需要自動(dòng)判別用戶需求,將排好的版面內(nèi)容發(fā)布給用戶。
當(dāng)前許多電子書加工企業(yè)并沒(méi)有采取“一次制作、多元發(fā)布”模式,而更多的是采用分別制作多種類型電子書的方式來(lái)滿足供不同用戶需要的解決方案。這不僅耗費(fèi)人力與資源,增加不必要的成本,同時(shí)降低了電子書制作的效率。電子書實(shí)現(xiàn)自排版則滿足多種終端用戶的多種類型文檔需求,也大大減少了電子書內(nèi)容生產(chǎn)商、加工商的工作量,降低了制作、發(fā)布成本。
2.2 內(nèi)容重組、動(dòng)態(tài)重排的需要
電子書內(nèi)容的加工實(shí)際上是將電子書的內(nèi)容按照某一主題或某一特性重新組織起來(lái)展示給終端用戶。電子書的內(nèi)容再組織需要將其內(nèi)容碎片化、片段化,為內(nèi)容重組提供再組織單元。同樣,某些特定的碎片化內(nèi)容也可以按照某一特定主題需求來(lái)形成一本新書。這使得資源之間原本存在的界限變得越來(lái)越模糊,資源之間的轉(zhuǎn)換組合變得更加容易[4]。高效率的內(nèi)容重組是將電子書內(nèi)容按照某種通用的語(yǔ)言如XML來(lái)表述,并實(shí)現(xiàn)動(dòng)態(tài)重組。通用語(yǔ)言能夠保持內(nèi)容交換的一致性,這也符合美國(guó)國(guó)家信息標(biāo)準(zhǔn)組織(National Information Sstandards Organization,NISO)開放發(fā)現(xiàn)倡議的要求[5]。動(dòng)態(tài)重組使電子書提供平臺(tái)能實(shí)現(xiàn)內(nèi)容動(dòng)態(tài)的自由組合,其實(shí)質(zhì)是電子書內(nèi)容動(dòng)態(tài)的更新過(guò)程。
電子書的內(nèi)容需要重組,而重組則需要重排。重排是將內(nèi)容根據(jù)重組要求、按照某種特定樣式輸出。重組為自動(dòng)重組,而重排則需要專業(yè)化排版與自動(dòng)排版相結(jié)合。自動(dòng)排版可以適應(yīng)內(nèi)容重組的需要,能根據(jù)用戶需求的轉(zhuǎn)變而變化。專業(yè)化排版能夠制定精美的版面效果,這往往是自動(dòng)排版欠缺的。因此,在電子書內(nèi)容的動(dòng)態(tài)更新中需要將二者相結(jié)合。通過(guò)設(shè)定專業(yè)的樣式文檔,再利用可靠的轉(zhuǎn)換文檔,將電子書內(nèi)容按照樣式文檔要求自動(dòng)轉(zhuǎn)換成帶格式的輸出文檔,從而實(shí)現(xiàn)電子書的自排版。
當(dāng)前,我們正處在電子書交互平臺(tái)2.0時(shí)代,人們的讀、寫、評(píng)論、分享等交互性行為變得極其簡(jiǎn)單[6]。這使一些新的電子書類型如交互式電子書、增強(qiáng)型電子書(Enhanced book)等新的類型在不斷呈現(xiàn),也使一些新的技術(shù)與方法也不斷在集成一些新的內(nèi)容融入到電子書中,形成新型電子書[7]。 這都需要我們充分發(fā)揮計(jì)算機(jī)自動(dòng)處理能力,使電子書實(shí)現(xiàn)自動(dòng)生成、自動(dòng)排版,動(dòng)態(tài)適應(yīng)時(shí)代的需求。
2.3 數(shù)字內(nèi)容體驗(yàn)的需求
廣義的電子書,是指以傳播知識(shí)為目的,把特定的主題和內(nèi)容以一定的電子格式呈現(xiàn)在各類電子設(shè)備形態(tài)上,以方便讀者閱讀的“著作物”[8]。其中,“一定的電子格式”要求電子書不僅要注重內(nèi)容質(zhì)量,還要注重用戶的閱讀體驗(yàn)和審美效果。盡管在閱讀2.0環(huán)境下,共享性和互動(dòng)性對(duì)閱讀而言十分重要[9],但是良好的排版結(jié)構(gòu)往往具有更好的口碑,能夠更廣泛地在社交媒體中散播,吸引更多讀者的青睞。
電子書相對(duì)于傳統(tǒng)書籍而言是一個(gè)新事物,它一直在不斷地應(yīng)用創(chuàng)新型技術(shù)于電子書的制作、加工、發(fā)布之中。借助這些技術(shù),它為讀者帶來(lái)了全新的數(shù)字內(nèi)容體驗(yàn),也增強(qiáng)了自身對(duì)用戶的吸引力。電子書自排版將數(shù)字化內(nèi)容與用戶偏好的樣式結(jié)合起來(lái),根據(jù)特殊需求,在設(shè)置特定排版條件下自動(dòng)實(shí)現(xiàn)電子書輸出。它使電子書更具有可讀性與交互性。目前,一些公司如多看、亞馬遜等已經(jīng)認(rèn)識(shí)到當(dāng)前電子書閱讀體驗(yàn)差的問(wèn)題,正在積極著手改善排版效果,追求極致的用戶體驗(yàn),以實(shí)現(xiàn)看電子書勝于傳統(tǒng)書籍的目標(biāo)。
3 本文的解決思路
要實(shí)現(xiàn)電子書自排版,首先需要符合“數(shù)字第一”工作流程的要求。該流程是先制作一個(gè)數(shù)字文檔,通過(guò)這個(gè)電子文檔再產(chǎn)生出不同的出版格式,如EPUB電子版、蘋果電子版、網(wǎng)絡(luò)版、手機(jī)版和印刷版[10]?;谶@種解決思路,本文采取分段式方法處理電子書。首先將需要處理的文本內(nèi)容細(xì)化至段,以段為出發(fā)點(diǎn),以段所包含的圖片、文字、表格等為基本處理單元,將文本內(nèi)容細(xì)化為單元塊,為以后文檔的處理提供基礎(chǔ)?!皵?shù)字第一”工作流程的基礎(chǔ)是XML標(biāo)識(shí)語(yǔ)言。因此,利用XML語(yǔ)言來(lái)描述電子書的內(nèi)容,采用XSL將其轉(zhuǎn)化為所需輸出的文檔類型,再采取參數(shù)模板形式規(guī)定樣式參數(shù),并通過(guò)調(diào)取實(shí)現(xiàn)參數(shù)傳遞,從而實(shí)現(xiàn)電子書的自排版。在整個(gè)流程中,對(duì)電子書采取“文檔—章—節(jié)—小節(jié)—段”這種結(jié)構(gòu)進(jìn)行切分,而將段放置在內(nèi)容塊中,以內(nèi)容作為描述的基本單元,將文檔層層細(xì)化,最后利用樣式參數(shù)進(jìn)行描述。
XML是以文本為基礎(chǔ)展示結(jié)構(gòu)信息的描述語(yǔ)言,也是應(yīng)用最廣泛的分享結(jié)構(gòu)信息的格式化語(yǔ)言之一。XML文檔采取樹形結(jié)構(gòu),具有良好的結(jié)構(gòu)性。利用XML描述電子書的優(yōu)點(diǎn)是能夠利用其樹形結(jié)構(gòu)來(lái)獲取它的任何枝節(jié),符合電子書內(nèi)容碎片化的要求。同時(shí),還能增加語(yǔ)義方面的描述,為電子書內(nèi)容的語(yǔ)義檢索與進(jìn)一步開發(fā)利用提供便利和支持。
電子書自排版的實(shí)現(xiàn)主要依賴獨(dú)立的參數(shù)模板來(lái)實(shí)現(xiàn)。利用XSLT中的para參數(shù)將排版的格式值設(shè)置為參數(shù)值,形成獨(dú)立的參數(shù)文檔。再利用XSL的調(diào)取功能實(shí)現(xiàn)參數(shù)調(diào)取,進(jìn)而將參數(shù)值傳遞給XSLT文檔。最后利用XSLT的轉(zhuǎn)換文檔功能,將XSL文檔轉(zhuǎn)換為帶格式的FO文檔。FO文檔最終被FO處理器轉(zhuǎn)換成用戶所需類型的格式文檔輸出。獨(dú)立的參數(shù)文檔能夠根據(jù)用戶的偏好與用戶的閱讀終端設(shè)置不同的參數(shù),從而達(dá)到個(gè)性化設(shè)置,也可以采取專業(yè)的排版參數(shù)設(shè)計(jì),實(shí)現(xiàn)專業(yè)化的自排版。本文采取專業(yè)的排版參數(shù)設(shè)計(jì),最終輸出HTML和PDF兩種通用的電子書。
4 電子書自排版系統(tǒng)的實(shí)現(xiàn)
4.1 電子書自排版整體的結(jié)構(gòu)
整個(gè)自排版體系包含五個(gè)組成部分,如圖1所示。各個(gè)部分的功能具體如下。
基于XML的電子書。主要利用XML標(biāo)識(shí)語(yǔ)言來(lái)描述電子書內(nèi)容,形成基于XML標(biāo)識(shí)的電子書。在描述電子書過(guò)程中最重要的是必須建立一套有效的電子書內(nèi)容結(jié)構(gòu)體系,系統(tǒng)、完整地描述整個(gè)電子書涉及的內(nèi)容。
XSL模板庫(kù)。它由一系列模板組成,包括轉(zhuǎn)換模板、基礎(chǔ)模板、參數(shù)模板等。模板庫(kù)負(fù)責(zé)將基于XML的電子書描述為其他標(biāo)識(shí)語(yǔ)言所描述的文檔,實(shí)現(xiàn)基于XML的電子書到其他類型文檔的轉(zhuǎn)換描述。模板庫(kù)因轉(zhuǎn)換的對(duì)象不同而不同。本文的模板庫(kù)包含兩套,分別為HTML模板庫(kù)、FO模板庫(kù)。
轉(zhuǎn)換文檔。轉(zhuǎn)換文檔為XSLT處理器根據(jù)XSL模板庫(kù)的描述要求,將基于XML的電子書轉(zhuǎn)化為帶格式的目標(biāo)類型文檔。它是轉(zhuǎn)換描述的實(shí)現(xiàn)。本文的轉(zhuǎn)換文檔主要是HTML文檔和FO文檔。
處理器。處理器主要包含兩部分,一是轉(zhuǎn)換處理器,二是顯示處理器。轉(zhuǎn)換處理器負(fù)責(zé)將原電子書文檔轉(zhuǎn)換為轉(zhuǎn)換文檔,也將轉(zhuǎn)換文檔轉(zhuǎn)換為其他語(yǔ)言,如ps描述的文檔。顯示處理器負(fù)責(zé)將轉(zhuǎn)換好的文檔顯示出來(lái),主要是PDF閱讀器、IE瀏覽器。
輸出文檔。輸出文檔為最終的顯示文檔,它由相應(yīng)的處理器自動(dòng)生成。
4.2 基于XML的電子書結(jié)構(gòu)設(shè)計(jì)
本文對(duì)于電子書(E-book)的設(shè)計(jì)依據(jù)傳統(tǒng)的中文書籍的編排體例分為四部分:元信息(Meta)部分、頁(yè)面信息(Page-info)部分、章(Chapter)部分和其他信息部分,如圖2所示。元信息部分主要存放電子書的元數(shù)據(jù),主要包含作者、年份、出版社、版權(quán)等內(nèi)容信息。頁(yè)面信息部分主要包含在顯示頁(yè)面上的頁(yè)眉、頁(yè)腳部分的內(nèi)容,對(duì)應(yīng)頁(yè)面的上留白、下留白的內(nèi)容。章部分是電子書內(nèi)容的主體,它包含有章標(biāo)題、章副標(biāo)題以及節(jié)(Section)。節(jié)是由節(jié)標(biāo)題、內(nèi)容塊、小節(jié)(Part)組成。因?yàn)楹芏鄷谡孪屡c節(jié)前都有章內(nèi)容的簡(jiǎn)介或者是引導(dǎo)性的闡述,所以章也包含有內(nèi)容塊。小節(jié)是電子書存放內(nèi)容塊的主體部分,也就是包含有主要內(nèi)容的單元模塊。
內(nèi)容塊是頁(yè)面內(nèi)容的基本單元,其內(nèi)存放的是段落形式的具體內(nèi)容,是電子書主要內(nèi)容的具體存放地。內(nèi)容塊既是存放顯示內(nèi)容的地方,也是排版的對(duì)象。本系統(tǒng)需要顯示的內(nèi)容都存放在內(nèi)容塊中。段落是電子書的基本內(nèi)容。在段落里是由文本單元、圖片單元、表格單元、列表單元等組成的供顯示內(nèi)容單元。這些內(nèi)容單元對(duì)應(yīng)傳統(tǒng)書籍中的文本、圖片、表格等。
4.3 模板庫(kù)的設(shè)計(jì)
轉(zhuǎn)換模板的設(shè)計(jì)。主要是電子書內(nèi)容的XSL處理部分。轉(zhuǎn)換模板負(fù)責(zé)轉(zhuǎn)換文檔的描述、文檔結(jié)構(gòu)設(shè)計(jì)、頁(yè)面布局設(shè)計(jì)等方面的內(nèi)容,并根據(jù)不同的結(jié)果文檔構(gòu)建不同的轉(zhuǎn)換模板。本文因?yàn)檩敵鯬DF和HTML,所以轉(zhuǎn)換模板包含HTML轉(zhuǎn)換模板和FO轉(zhuǎn)換模板。
由于可以不用分頁(yè),HTML模板庫(kù)的轉(zhuǎn)換模板比較簡(jiǎn)單,內(nèi)容直接放在頭(Head)部分和體(Body)部分,并利用分割元素
而FO模板庫(kù)則相對(duì)比較復(fù)雜。它包含有頁(yè)面模板(layout-mast-set)、文檔樹(bookmark-tree)以及頁(yè)面排序(page-sequence)等模塊。負(fù)責(zé)文檔頁(yè)面結(jié)構(gòu)的描述,它由多個(gè)單頁(yè)面模板(simple-page-master)以及一個(gè)頁(yè)面排序模板(page-sequence-master)組成。單頁(yè)面模板通過(guò)分區(qū),主要包含有主體區(qū)(region-body)、頂部區(qū)域(region-before)、底部區(qū)域(region-after)、左部區(qū)域(region-start)、右部區(qū)域(region-end)來(lái)確定頁(yè)面布局,并利用相應(yīng)的屬性來(lái)設(shè)置區(qū)域大小。頁(yè)面排序模板來(lái)確定重復(fù)出現(xiàn)的頁(yè)面。電子書的主要內(nèi)容放置的頁(yè)面都是由它來(lái)確定的。文檔樹負(fù)責(zé)對(duì)書簽的描述,通過(guò)屬性關(guān)聯(lián)屬性(internal-destination)的值與對(duì)應(yīng)的章、節(jié)、小節(jié)的id值來(lái)建立對(duì)應(yīng)書簽聯(lián)系。頁(yè)面排序是文檔內(nèi)容的主要存放地。一部電子書可以有多個(gè)頁(yè)面排序,每個(gè)頁(yè)面排序定義一個(gè)顯示的內(nèi)容范圍。本文定了三個(gè),分別是首頁(yè)、尾頁(yè)和可重復(fù)的中間頁(yè)。首頁(yè)對(duì)應(yīng)于傳統(tǒng)的封面頁(yè),尾頁(yè)主要用于標(biāo)示文檔結(jié)束,可重復(fù)的中間頁(yè)是內(nèi)容存放地。每個(gè)都包含有一個(gè)流元素(flow)和多個(gè)靜態(tài)內(nèi)容元素(static-content)。在流元素中,本文利用“文檔—章—節(jié)—小節(jié)—段”這種結(jié)構(gòu),結(jié)合XSL的循環(huán)描述語(yǔ)句,采取文檔調(diào)取相應(yīng)的章的章(template),而章調(diào)取對(duì)應(yīng)的節(jié)的節(jié),節(jié)調(diào)取對(duì)應(yīng)的段將文檔內(nèi)容逐層描述。頁(yè)眉、頁(yè)腳的內(nèi)容放在靜態(tài)內(nèi)容區(qū)中顯示。
基礎(chǔ)模板的設(shè)計(jì)。這是電子書自排版最基本的部分,也是內(nèi)容塊中涉及段的描述部分。它負(fù)責(zé)確定段內(nèi)容的各個(gè)元素顯示的內(nèi)容以及樣式,包含文字處理、圖片處理、表格處理、列表處理等內(nèi)容。在基礎(chǔ)模板中,通過(guò)為元素設(shè)立屬性來(lái)確定樣式,而屬性的值與外部的參數(shù)模板中的參數(shù)相對(duì)應(yīng)。在這一部分我們還可以設(shè)置相應(yīng)的排版規(guī)則來(lái)約束內(nèi)容排版的設(shè)計(jì)。
參數(shù)模板的設(shè)計(jì)。參數(shù)模板由一系列參數(shù)(param)組成。它獨(dú)立于轉(zhuǎn)換模板與基礎(chǔ)模板之外。參數(shù)模板作用是向轉(zhuǎn)換模板和基礎(chǔ)模板提供排版參數(shù)。參數(shù)模板中包含文檔參數(shù)、頁(yè)面參數(shù)、段落參數(shù)、文本參數(shù)等。各個(gè)參數(shù)對(duì)應(yīng)轉(zhuǎn)換模板與基礎(chǔ)模板中元素屬性的值。參數(shù)的值決定電子書頁(yè)面的樣式與內(nèi)容顯示的效果?;A(chǔ)模板與參數(shù)模板都通過(guò)XSL 的導(dǎo)入元素(import)導(dǎo)入到轉(zhuǎn)換模板中。
本文的參數(shù)模板中參數(shù)的值采取專業(yè)軟件的對(duì)比設(shè)計(jì),再將設(shè)計(jì)涉及的樣式值轉(zhuǎn)換成對(duì)應(yīng)參數(shù)的值,形成參數(shù)文檔。具體的做法是:首先利用專業(yè)的排版軟件對(duì)版面進(jìn)行設(shè)計(jì),并通過(guò)大量測(cè)試,產(chǎn)生專業(yè)的排版樣式表。再通過(guò)建立XSL參數(shù)模板與樣式表映射關(guān)系,實(shí)現(xiàn)專業(yè)排版的樣式與參數(shù)模板中的參數(shù)相互對(duì)應(yīng)。最后通過(guò)映射關(guān)系,將樣式表的值轉(zhuǎn)換為參數(shù)模板中的參數(shù)值,形成參數(shù)文檔。本文在設(shè)計(jì)過(guò)程中,設(shè)計(jì)了多套參數(shù)文檔,通過(guò)改變導(dǎo)入(import)的文檔名實(shí)現(xiàn)多重樣式的選擇。同時(shí),也允許用戶建立自己的參數(shù)文檔,利用與用戶的信息關(guān)聯(lián)達(dá)到符合自排版的效果。
4.4 轉(zhuǎn)換處理器的使用
XSLT處理器負(fù)責(zé)讀取基于XML的電子書內(nèi)容,并按照XSL文檔的處理要求生成相應(yīng)的文檔。目前相關(guān)的XSLT處理器主要有MSXML、Saxon等,本文使用的是基于GNOME項(xiàng)目的libxslt。
FO處理器負(fù)責(zé)讀取FO文檔,并將其轉(zhuǎn)換為其他文檔。因?yàn)镕O文檔是基于XML的格式描述文檔,并不是常見的PDF文檔,需要使用FO處理器將其轉(zhuǎn)換為PDF文檔。本文使用的Apach公司開發(fā)的FOP處理器,來(lái)實(shí)現(xiàn)FO文檔到PDF文檔的轉(zhuǎn)換。
5 結(jié) 語(yǔ)
本文基于前面設(shè)計(jì)的XML電子書,再利用模板庫(kù)中的三類模板,實(shí)現(xiàn)HTML和PDF格式的電子書的輸出,如圖3所示。輸出的電子書帶有設(shè)計(jì)的排版參數(shù),基本上滿足格式的自排版輸出。但也存在一些不足之處,主要是自動(dòng)排版采取模板模式存在靈活性不足的問(wèn)題。同時(shí),F(xiàn)OP處理器并沒(méi)有完全支持XSL-FO,因此,有些樣式因缺乏支持而沒(méi)有達(dá)到理想效果。這些都有待改進(jìn)。