如今的XML,在文檔生成方面可謂大紅大紫。使用XML + XSLT可以動(dòng)態(tài)生成HTML文檔和表單。而XML + XSL +?FO更可以動(dòng)態(tài)生成PDF/RTF文檔。
所謂動(dòng)態(tài)生成,就是在運(yùn)行,才將數(shù)據(jù)放到具有指定DTD/schema的XML文檔中,使用預(yù)定義的XSL文檔生成可供瀏覽或打印的文檔。
一般來(lái)說(shuō),生成HTML和PDF的XSLT要分別定義。對(duì)于HTML和PDF表現(xiàn)差別較大的文檔,有必要使用這種方法。
但是,對(duì)于一些格式要求較高的表單和報(bào)表,在HTML和PDF下的表現(xiàn)是基本一致的。這個(gè)時(shí)候就有必要用同一個(gè)樣式表輸出HTML和PDF。要知道,手工定義一份XSLT可是很費(fèi)工夫的。
FO似乎能達(dá)到這個(gè)目標(biāo),它具備足夠精細(xì)的樣式定義,借助FOP等工具,可直接輸出PDF等格式??上У氖?,目前的主流瀏覽器,如IE和firefox,并不能直接顯示FO文檔。必須將其轉(zhuǎn)換成HTML或XHTML。然后,我沒(méi)有發(fā)現(xiàn)任何的開(kāi)源工具可以做到這一點(diǎn)。
?
Altove StyleVision,恰到好處的實(shí)現(xiàn)上述目標(biāo)。
顧名思義,StyleVision就是用來(lái)設(shè)計(jì)樣式表的,它提供一個(gè)非常友好的GUI設(shè)計(jì)界面。它使用一個(gè)私有的XML格式(SPS)來(lái)保存樣式表,這個(gè)樣式表可轉(zhuǎn)換成生成HTML的XSLT和生成FO的XSLT。
這樣,做為開(kāi)發(fā)方,購(gòu)買一份Altova StyleVision,用來(lái)設(shè)計(jì)樣式表,然后將其生成的XSLT發(fā)布給用戶,就可以實(shí)現(xiàn)同源輸出報(bào)表了。而最終用戶可以不購(gòu)買Altova StyleVision
附圖:兩種動(dòng)態(tài)文檔生成方案(在圖中體現(xiàn)為兩條可選的路線):
?