本記事は、アーカイブに保存されている過去の記事です。最新の情報は、公益社団法人日本印刷技術協会(JAGAT)サイトをご確認ください。

XSLと組版

テキスト&グラフィックス研究会4月のミーティングは「XSLを利用した組版」と題して,アンテナハウス(株)の小林徳滋氏にお話しいただいた。氏のお話はXSL-FOの仕様および同社のXSL-FOプロセッサXSL Formatterに関する詳しい説明が中心だったが,ここでは当日のお話や配布資料,アンテナハウスのwebページを参考に,XSLを使った組版処理について概観する。

XSL(eXtensible Stylesheet Language)はXML文書のスタイルシートを記述する言語だが,単一の言語ではなく,XML文書を他の文書形式に変換するためのXSLT(XSL Transformation)と,文書をフォーマットするためのXSL-FO(XSL Formatting Objects)からなる。このうち,XSLTはW3Cの勧告が成立して仕様も固まっているが,XSL-FOは2000年11月に勧告候補となった段階であり,これから実用へ向けての動きが活発化すると思われる。

XMLの印刷方法

XML文書を組版して印刷するにはいろいろな方法がある。
第1にスクリプトを書いてXMLをRTFファイルに変換し,Microsoft Wordなどで読み込んで体裁を整えて印刷する方法がある。第2にFrameMaker+SGMLなどのSGML/XML対応レイアウトソフトを使う方法があるが,この場合は文書は基本的にアプリケーション独自の形式になるため,元のXML文書との整合性を考えなければならない。第3にTeXに変換して組版する方法があるが,この場合も変換のためのスクリプトが必要となる。第4にSGMLのスタイル指定言語DSSSLを使う方法がある。しかし,この場合もDSSSL用のスタイルシートをプログラム言語で作成しなければならない。
以上のように,XML文書を印刷するには,いずれにしてもいったんターゲットとなる文書形式に変換し,そのうえで組版処理を行うという2段階の処理をお粉わな得ればならない。XMLの変換処理には現在PerlやSchemeなどの言語が使われているが,いずれも専門知識が必要だし,プログラム自体が標準化されていないという問題もある。また,組版処理においても,やはり組版機能が標準化されておらず,アプリケーションに依存しているという問題がある。

XSLの周辺

XSLは,XML文書をHTMLなどの形式で表示するためのルールを定義する言語であり,そのルールが集まってスタイルシートを構成する。たとえばwebブラウザがXSLを解釈してその指示どおりの形でXML文書を表示するという仕組みである。
XSL関連の仕様の形成には複雑な経緯があり,その意味もかなり混乱して使われている。もともとXSLはマイクロソフト,インソ,アーバーテキストがw3cに提案したものだが,このときの仕様は現在とはまったく異なるもので,XSL-FOに変換するための変換言語であるXSLTの仕様とXSL-FO自体の仕様とから構成されていた。ところがその後,XSLTがXSLTとXPath(XML Path Language)に分離するなどの経緯があり,先にこのふたつがw3cの勧告となった。たとえばマイクロソフトは,InternetExplorerでXML文書を表示するためにXSLT/XPathを実装したMSXML3.DLLを無償配布している。
というわけで,XML文書を変換するための仕様であるXSLTはすでに実装が進んでいるが,文書のレイアウトを決める仕様であるXSL-FOの利用はその緒についたところといってよいだろう。マイクロソフトなどが行っているのは,XMLをいったんXSLTでHTMLに変換し,HTMLをそのままあるいはCSSを適用して表示する方法である。

XML-FOとは

当初のXSL仕様からすればXML文書の組版を行う部分に相当するのがXSL-FOである。
上述の勧告候補(Candidate Recommendation)とは,仕様として実装してよい段階になったというもので,このあとProposed Recommendation(勧告案),そしてRecommendation(勧告)と進むことになっている。
XSL-FOのFOとはFormatting Objectsという意味で,段落やリスト,表など組版の対象になるものを指す。XSL-FOの仕様では,ページマスターの記述方法やマージン,本文領域の設定,XSL-FOの種類,配置方法,パラメータなど設定できる属性値を標準化しようとしている。

XSL-FOによる組版

1. XMLからXSL-FOへ
XSL-FOを使う場合でも,最初にXML文書をXSL-FO文書に変換し,次にXSL-FO文書を組版するという2段階の処理を行うことは他の方法と同じである。
第1段階で使うプログラムがXSLTプロセッサである。XSLTプロセッサは変換ルールを記述したXSLTスタイルシートを参照して,XML文書をXSL-FO文書に変換する。XSLTというのはもともとXML文書をXSL-FOに変換するための仕様で,XML文書のツリー構造を別の形式のツリー構造に変換するのだが,上述のような経緯で,現在ではHTMLなど他の文書への変換にも汎用的に利用されている。XSLTプロセッサはたくさんあり,多くは無償配布されている。なかでも強力なのはマイクロソフトのMSXML3.DLLで,これはXSL変換機能を備えたXMLプロセッサである。ちなみに,XSXML3.DLL自体はエンドユーザには直接扱えないのでMSXSL.EXEをインストールしてコマンドラインで操作する。一方,参照するXSLTスタイルシートだが,現在簡単にスタイルシートを作成するツールはなく,エディタを使って作成している状況である。

2. XSL-FOから組版へ
XML文書から生成されたXSL-FO文書はレイアウトを指定した状態であって,レイアウトされた状態にはなっているわけではない。そのレイアウト処理を行うのがXSL-FOプロセッサ,すなわち組版エンジンである。これによって初めて,文書はレイアウトされて画面表示したり,紙に出力したり,PDFに出力したりできることになる。
現在,いくつかのXSL-FOプロセッサが公開されている。XSL Formatterはアンテナハウスの組版エンジンである。アパッチ社のFOPはJAVA版の組版エンジンでXML-FOからPDFを出力する。日本語対応ではないが日本語のためのパッチが公開されている。RenderXというベンチャー企業からはXEPというやはりJAVA版のPDFを出力するエンジンが公開されている。その他,TeXを組版エンジンとするPassiveTeX,UFOなどのツールがある。
アンテナハウスのXSL FormatterはWindows上でXSL-FOを作成し組版するプログラムで,組版エンジンとそれを制御するGUIから構成される。組版エンジンはAxtiveXControlとして作成され,またGUIは各種の組版オプションを設定して組版エンジンを動かす。

アンテナハウスの製品情報はアンテナハウスのwebページを,XML/XSL関連情報はw3cのwebページを参照されたい。
(テキスト&グラフィックス研究会)

[関連テックセミナー]
印刷会社のXMLへの取り組み事例と組版ソフト4社によるXMLへの対応などを取り上げたテキスト&グラフィックス研究会主催のテックセミナーを,下記のように開催いたします。
ご参加をお待ちしております。 日時:5月25日(金)10:00〜17:00 テーマ:「XMLと印刷」

2001/05/14 00:00:00


公益社団法人日本印刷技術協会