9月17日EDUPUB Tokyo 2014にてライトニング・トークをさせていただきました。そのスライドとナレーション(日本語の原文)です。実は英文は日本語から翻訳してもらったものなのでした。
Antenna House(AH)Formatter V6.2はXMLを組版してPDFなどを出力するツールです。
2000年11月に最初のバージョンを発売し、その後14年に渡り機能強化を続けています。次にいくつか機能を紹介します。
特徴1は多言語サポートです。縦書き文字、アラビア文字、ヘブライ文字のような右から左へ書く文字、チベット文字を除く主なインドの文字、主要な東南アジアの文字を組版できます。
特徴2は拡張したフロート機能です。オブジェクト配置を最適化できます。JIS X4051の仕様に従って、図版の位置を自動調整できます。
フロート拡張の多くは、IRS(米国財務省の内国歳入庁)の要求で追加されました。
※この写真は納税ガイドとは関係ありません。
特徴3はMathML V3.0のサポートです。MathMLV3.0では新しい機能として初等数学(算数)表現が追加されました。
レイアウトの指定はXSL-FOまたはCSSのどちらかの方式を用います。どちらを使ったら良いでしょうか?
FOのプロパティはCSS2から引用したものが多いです。また、AH FormatterはFOとCSSを並行して独自に拡張しています。従って、大よそどちらでも同じレイアウトを指定できます。
FOとCSSの主な相違点はスタイルを適用する仕組みです。
FOは印刷のための技術であり、サーバー上のバッチ処理を前提とします。印刷対象XMLをXSLTなどでFOに変換します。レイアウト・プロパティを変換後のFOに対して適用します。
XSLTではXPathで要素や属性を指定します。プロパティは属性セットとして用意します。そしてプロパティを適用する条件を厳密にきめ細かく指定できます。XSLTではFOを作るための複雑な処理を記述できます。
CSSはWebの技術であり、簡単な指定で、高速な処理、ダイナミック・レイアウトが求められています。
現在のCSSはページ媒体に対するレイアウト指定機能は弱く、W3C CSSの作業グループで、現在、ページ媒体に対するレイアウト指定の方法が議論されています。現時点でAH Formatterのページ媒体出力はAHの独自拡張です。
CSSではレイアウトを適用するXHTMLの要素や属性をselectorで選択します。また、カスケーディング規則とやや複雑な優先順位の規則があります。
この仕組みはレイアウトの適用条件が簡単な場合に向いています。しかし、レイアウト適用条件が複雑になると記述が難しくなります。
以上により、Antenna Houseは、高度で複雑なレイアウトの頁を作るにはFO、シンプルなレイアウトの頁を作るにはCSSを用いることを推奨します。
※レイアウトが複雑かどうかということよりも、XMLから組版オブジェクトを作り出すロジックが簡単かどうかということです。CSSのセレクタとカスケードの仕組みでは複雑なロジックを記述するのは不可能でしょう。Javascriptを書いたらどうかという説もありますが、CSSのロジックの弱点をJavascriptで補うのならば、XSLTを学ぶ方が生産的ではないかと思います。