Powered by SmartDoc

XML、XSL-FOと「Antenna House XSL Formatter」

2000-11-16
アンテナハウス株式会社
XMLドキュメント・ファイルを表示したり、印刷したりする方法として今まで使われてきた方法を説明し、新らしい仕様であるXSL-FOとその組版エンジンXSL Formatter について説明します。

目次

はじめに

いままで、出版物を初めとするドキュメントは、紙に印刷して物流で配布すればそれで一応の役割を終えるものと考えられてきました。しかし、今後、ドキュメントは、印刷物としてのみでなく、WEBのホームページから配布されたり、CD-ROM、電子本などの様々な形態で配布されるようになります。

その場合、コンテンツをアプリケーションから独立したフォーマットで蓄積して管理することが大変重要になります。コンテンツとレイアウト指定がアプリケーションに依存した形式で蓄積されていますと、他のメディア用に編集する際に、まず、元のアプリケーション独自の制御情報を取り去るなどの前処理を行わねばならず、その負荷が非常に大きいからです。

このことは、もう10年以上前から指摘され、SGMLが提案されてきました。しかし、SGMLは普及しませんでした。SGMLは、仕様が複雑で、習得が難しく、ツールの開発が大変、ツールが極めて高価で種類も少なかったからです。

SGMLをベースに、1998年2月にXMLの仕様が決まりました。その後、まだ2年半ですが、短期間で様相が変わりつつあります。これからはドキュメントのコンテンツをXMLで作成して、蓄積するということが絵に書いた餅ではなく、現実に手の届くものになってきています。

今日は、ドキュメントをXML形式で作成し蓄積する際、必ず大きな障害になっていた、紙への印刷 の問題を解決する、新しい仕様「XSL Formatting Objects(XSL-FO)」とXSL-FOベースの組版エンジンについて説明致します。

これまでのXMLの印刷方法

最初に、これまでXMLの印刷がどのような方法でなされていたかを簡単に説明します。

従来のXMLドキュメントの印刷方法

XMLをRTFに変換

スクリプト(プログラム)を書いて、XMLをRTFファイルに変換します。RTFファイルをMicrosoft Wordで読み込み、Wordで最終的に体裁を整えて印刷します。Wordを組版ソフトの代わりに使う方法です。

FrameMaker+SGMLを使う

FrameMaker+SGMLは、印刷業界においてSGMLを組版するためのソフトして、一番人気があります。FrameMaker+SGMLで、SGML文書を読み込むには、独自のDTD対応付け定義を作成する必要があります。これは、簡単なものは数時間でできるそうです。難しいものは専門の会社に依頼して作成してもらいます。問題は、FrameMakerに読み込んだ後、文書がFrameMaker独自の形式になります。FrameMakerでレイアウトを変更・調整したりすると、元のXML文書とFrameMaker文書の2種類ができて管理が面倒です。

XMLからTeX

XMLをTeXに変換してTeXで組版する方法もあります。TeXに変換するスクリプトが必要です。TeXの組版ソフトは数式などに向いていますので、数式の印刷が必要な場合は良いかもしれません。

DSSSL

SGMLの印刷のための標準仕様でDSSSLというものがあります。これを使えばXMLも印刷できますが、DSSSLの組版ソフトは、非常に高価です。また、DSSSL用のスタイルシートは、Schemeというプログラム言語で作成する必要があります、とても難しいので簡単にはできません。専門の会社に作成してもらいますと、実用的なスタイルシートはひとつで150万位するようです。

従来のXML印刷方法の比較表

XMLを印刷する方法についてま整理します。この表からすぐお分かりいただけますように、XMLを印刷するには、前段の「変換」処理と後段の組版処理が必要です。これはXMLの仕様上、大抵の場合必要になります。

方法 スタイル形式 指定方法
RTFにして印刷 アプリケーション独自 変換処理→対話処理(WYSISYG)
FrameMaker+SGMLにして印刷 アプリケーション独自 変換処理→対話処理(WYSISYG)
TeXにして印刷 TeXファイルになる 変換処理+自動組版(バッチ組版)
DSSSLにして印刷 DSSSL方式:標準だが普及していない 変換処理+自動組版(バッチ組版)

問題点

では、いままでの方法でなにが問題だったのでしょうか?問題を大きくまとめますと、次の2つに集約されると思います。

変換処理のプログラミングがばらばら

XMLの変換処理に使われますのは、Perl、Scheme、Tcl/Tkなどのプログラム言語です。これを使って、XMLのDTD毎、場合によってはXMLインスタンス毎に変換プログラムを組む必要があります。そして、プログラムが標準化されていないため、それぞれの方法毎に学習が必要になります。大きな印刷会社などですと、専門のセクションを置くことが可能で、技術者もいますが、普通の印刷会社、出版社ではなかなか専門家がいないため手を出すのが難しくなります。

組版機能がアプリケーション依存を脱していない

組版機能が標準化されず、アプリケーション依存になっているということは危険性もあります。ご存知の方もいらっしゃると思いますが、Interleafという構造化文書の編集では有名なソフトがあり、大手企業でSGMLの編集に使われてきました。先年、Interleafは買収されました。ところが、買収先がDTP事業はしないということを決定し、最近、サポートが終了したそうです。このためInterleafで大量のドキュメントを作成したところはパニックに陥っているようです。大きな機械の操作説明書のように数千ページのマニュアルを作成している場合、マニュアルの原稿形式をアプリケーション独自形式にするということは、そういう危険性が付きまといます。

変換言語の標準化

XMLの印刷における最初の問題XMLの変換 は、新しい変換言語の仕様「XSLT」の標準化で解決されつつあります。

XSLTの仕組み

XSLTの仕様は、当初XSL-FOの仕様と一緒に検討されていましたが、一足先に1999年11月に勧告となりました。

XSLTでは、XML文書インスタンスとスタイルシートを「XSLTプロセサ」に入力します。XSLTプロセサは、2つの入力ファイルを処理して、新しいファイルを出力します。新しいファイルは、XML文書でも良いですし、XML文書以外の出力もできます。

大きなインパクトは、Microsoftが、上記の勧告仕様を実装したXSLTプロセサを標準的なものとして配布を始めたと言うことです。

Microsoft XML Parser V3.0 Release(MSXML3.DLL) 2000年11月1日配布開始。 (1)

それから、Sun、Oracle、Apacheなども自分達の環境で使えるXSLTプロセサを開発し、装備し始めています。MSXML3.DLLは、Internet Explorer 6には添付されるようですので、近い将来、標準仕様のXMLTはどこでも使えるようになります。XMLを変換するには、ひとつだけ変換言語を学べば良くなります。そして、出来あがったスタイルシートはどんな環境でも使用できる、というようになりつつあります。

XSLTの応用例:XMLをWebブラウザで表示する

XMLを「XSLT」と「スタイルシート」を使って変換するという方法は既にかなり使われ始めています。

Internet Explorer 5、5.5には、Microsoft独自仕様のXSLTプロセサが付いています。このXSLTでXMLファイルをHTML+CSSに変換してHTMLを表示する、という方法で、Internet Explorer を使ってXMLの表示と印刷ができます。現在、XMLをHTML+CSSに変換するスタイルシートを作成する人はかなり増えています。書籍も何冊か出版されました。

この方法は、Webで見るには良いですが、ブラウザの表示機能に依存します。ブラウザはページの概念がありませんので、奇麗に組版したページを作成するのは難しいことになります。ブラウザの場合、HTML+CSSをコンピュータの画面にあわせて組版するという設計で、それがいろいろな環境でHTMLのホームページを見ることができるという良さになりますが、A4のような紙のサイズに最適な組版ということはできません。

  1. Internet Explorer バージョン5、5.5にはMSXML.DLLが付いていますが、これは勧告以前の古いXSLT仕様を実装しています。Internet Exploler バージョン6には、上記のMSXML3.DLLが標準で添付されるようです。

XSL-FO 組版指定方法の標準化

XMLを印刷するにはもうひとつの課題があります。それは、従来で、WordやFrameMakerの組版機能、あるいは、DSSSLやTeXの組版機能を使っていた「組版」の標準化です。

XSL-FOとは?

XSL-FOは、Webの標準を定める団体であるW3Cで、「XMLを奇麗にレイアウトして組版するための仕様」として、現在、策定が進んでいます。

XSL-FO仕様は、今年の3月27日にラスト・コールになり、その後10月18日に少し改訂されています。そろそろCandidate Recommendation になる見込みです。

XSL-FOで検討されているFormatting Objectsとは、段落、リスト、表などの組版の対象になるもののことです。仕様では、ページマスターの記述方法、マージンや本文領域の設定方法、XSL-FOの種類、配置方法、パラメータなど設定できる属性値を標準化しようとしています。

XSL-FOベースの組版プロセス

組版は、2つのステップで行います。

XMLファイルとスタイルシートからXSL-FOに変換

これは、XSL-FOを作り出す処理です。通常は、先ほど説明しました「XSLT」を使って行います。XSL-FOに変換するスタイルシートの文法は、XMLをHTMLに変換する場合と同じです。違いは出力するタグが、HTMLの時は、h1、h2、table、などのhtmlのタグであるに対し、XSL-FOにする時は、XSL-FOで定義しているFormatting Objectsを指定するタグである、ということです。

XSL-FOを組版する処理

XSL-FOが出来あがりますと、次にそれを組版する処理になります。これは、XSL-FO組版エンジンの仕事です。XSL-FO組版エンジンに付きましては後で説明致します。

XSL-FOの標準化が完了すれば、XMLファイルを奇麗にレイアウトして紙に印刷するプロセスが標準化されることになります。標準的なプロセスで組版できるということは、非常に大きなインパクトであると思います。

XSL-FO 組版エンジン

仕様が標準化されても、プログラムによる処理系が実現しないと絵に描いた餅に過ぎません。次に、XSL-FOの組版エンジンには、どのようなものがあるかを説明致します。

『Antenna House XSL Formatter』について

弊社では、1999年12月に最初のα版XSL-FO組版エンジンを日本で初めて公開しました。その後、今年初めにα2版を公開。現在は、ホームページよりプレ・リリース版を配布中です。今月末に「製品版」を出荷開始するべく準備中です。

『Antenna House XSL Formatter』は、Windows上でXMLとXSLスタイルシートからXSL-FOを作成し、次いでXSL-FOを組版します。

実装レベルですが、XSL仕様の最新ドラフトであります、2000年3月27日、10月18日の仕様に準拠しています。仕様で定めているFormatting Objectsの中で基本部分は全て実装しており、拡張部分も一部実装しています。XSL-FOの仕様ではまだ高度なページレイアウトは困難ですが、操作説明書、報告書などのレベルであれば充分実用に耐えると考えています。

世界のXSL-FO組版エンジン

名称 特徴
Antenna House XSL Formatter アンテナハウスのXSL-FO組版エンジンとユーザ・インターフェイス。組版エンジンはWindows版ActiveXControl。
FOP Webサーバの開発で有名なApacheが取り組んでいるXSL-FO組版エンジン。FOからPDFを出力する。日本語は使えない。
XEP 米国のRenderXというベンチャー企業のXSL-FO組版エンジン。やはり、FOからPDFを出力する。1999年4月のXSL-FO仕様に準拠。日本語は使えない。
PassiveTeX FOを処理するTeXのマクロライブラリー(組版エンジンはTeXを使用)。
UFO Unicorn社のFOをTeXのマクロに変換する開発ツール(組版エンジンはTeXを使用)。

実演

実演1

どの程度の組版ができるか?

実演2

Avenue.Quarkは奇麗なXMLファイル書き出すことができます。Avenue.Quarkで作成した、XMLをAntenna House XSL Formatterで組版します。同じXMLにスタイルシートを切り替えて、横書き2段組、縦書き2段組する組版の実演。

実演3

XSLチュートリアルの例