スタイルシート概説

スタイルシート概説
アンテナハウス株式会社
2001 年 2 月
Table of Contents
スタイルシートとは........................................................................................................
3
XML 文書の例........................................................................................................................................
3
スタイルシートはなぜ必要?...............................................................................................................
3
スタイルシート仕様の種類 ...................................................................................................................
4
XSL 仕様小史 ......................................................................................................................................... 4
CSS で XML を表示する................................................................................................
5
CSSってどんなもの?...........................................................................................................................
5
HTML+CSS とブラウザ........................................................................................................................
6
CSS による XML 表示...........................................................................................................................
7
CSS の限界..............................................................................................................................................
8
XSLT で XML を HTML(+CSS)にして表示する.........................................................
9
IE5 で XML を表示する仕組み.............................................................................................................
9
IE5 用スタイルシート............................................................................................................................
9
XSLT スタイルシート作成法................................................................................................................ 10
XSLT プロセサ....................................................................................................................................... 11
XML を HTML に変換する................................................................................................................... 11
XML を XSL-FO にして印刷する.................................................................................. 14
XSL-FO とはなにか?........................................................................................................................... 14
XSL-FO を使う組版プロセス................................................................................................................ 14
XSL-FO 用 XSLT スタイルシート........................................................................................................ 15
スタイルシートの使い回し................................................................................................................... 17
参考資料........................................................................................................................... 18
ドキュメント.......................................................................................................................................... 18
プログラム、ツール............................................................................................................................... 18
スタイルシート概説
スタイルシートとは
XML 文書の例
XML 文書の構成単位は要素です。要素とは、開始タグと終了タグで内容を囲ったものでタグには
要素名を付けます。XML 文書の全体構造は、要素をツリー構造になるように配置したものです。要
素のツリーは、通常、文書の論理的構造に従って構築します。
次の例は XML 文書の一部(この文書の先頭)です。
XML 文書の一部(例)
<doc>
<head>
<title>
スタイルシート解説
</title>
<author>
アンテナハウス株式会社
</author>
<date>
2001 年 2 月
</date>
</head>
<body>
<section>
<title>
スタイルシートとは
</title>
...(略)...
</section>
...(略)...
</body>
</doc>
この例の中で、doc、 head、 title、 author、 date が要素名です。要素名は自由に決めることができ
ます。
スタイルシートはなぜ必要?
このように XML 文書は、主に論理的構造に従って構築します。文書のレイアウト指定は XML 文
書のツリーからは分離されています。このことによって、文書の内容をいろいろな目的に使うことが
簡単にできる、すなわち「ワンソース・マルチユース」に最適という XML 文書の利点が生れます。
しかし、このようなタグと本文が複雑に交錯した XML 文書は人間には理解しにくいですので、XML
文書を表示・印刷するためのプログラムを使って人間が理解しやすいように整形する必要がありま
す。
ところが、要素名だけでは、要素の内容を大きな文字で表示するべきか、あるいはどこで改行を入
れるべきかなど、画面に表示したり、紙に印刷する際のレイアウト指定の情報を得ることができませ
ん。このため XML の表示・印刷プログラムは、XML 文書が与えられても、それだけでは、要素の
内容を適切に整形して表示・印刷することができません。
このような事情から、XML を表示したり印刷したりする技術は簡単ではありません。いままで
は、XML を表示・印刷するアプリケーションは高価であったり、使い難いという問題がありまし
た。しかし、XML をスタイルシートを使って表示・印刷する技術が、ここ1年位の間に実用化の段
階に入ってきました。いまや、誰でも簡単に XML 文書を作成し、表示・印刷することが可能になっ
たといっても過言ではありません。
XML を様々な形式で表示・印刷するためのキーワードがスタイルシートなのです。
スタイルシートという言葉は XML 以前から、ワープロや DTP ソフトでは使われてきました。特
に Microsoft Word がスタイルシートという言葉を、段落などの表示書式を設定するために使っていま
-3-
スタイルシート概説
すので、スタイルシートという言葉を知っている人は多いと思います。しかし、XML の世界でのス
タイルシートという言葉の意味するところは、ワープロや DTP とは少し異なります。
また、XML のスタイルシートという言葉についても、1998 年から現在までの間に、だんだん仕様
の確立が進んでいますが、仕様のドラフトが提案されてから勧告に至るまでに、紆余曲折があり、そ
の影響を受けて、スタイルシートという言葉は非常に混乱しています。
本文書では、XML のスタイルシートについて、実例を交えながら最新状況を説明してみたいと思
います。
スタイルシート仕様の種類
XML に関係する仕様で、スタイルシートと呼ばれる仕様、またはスタイルシートに関係する仕様
には次の3つがあります。いずれも、World Wide Web Consortium(W3C)が制定しているもので
す。
CSS 仕様
「Cascading Style Sheets」の略。1998 年 5 月にレベル 2 の仕様が勧告になっています。
XSLT 仕様
「XSL Transformations」の略。1999 年 11 月にバージョン 1.0 が勧告になっています。同時に
勧告になりました「XML Path Language」とセットで使われます。
XSL 仕様
「Extensible Stylesheet Language」(以下、混乱を避けるため、XSL-FO 仕様と略記します。)の
略。2000 年 11 月に勧告候補となりました。現在、勧告候補の段階です。
XSL 仕様小史
XML のスタイルシートに関して、なぜ、現在のような混乱が生じているかを理解するには、XSL
仕様の歴史を知る必要があります。スタイルシート(XSL)(1)は、1997 年 8 月に、Microsoft、InSo、
ArborText から W3C に提案されました。
初期の「Extensible Stylesheet Language」ドラフト仕様では、XSLT 仕様と XSL-FO の仕様が、ひと
つの仕様の前段と後段を構成していました。初期のドラフト仕様では、XSLT は、XSL-FO を作成す
るための変換言語として設計されたのです。
と こ ろ が 、 1999 年 4 月 に 「 Extensible Stylesheet Language 」 仕 様 は 、「 XSL Transformations」
(XSLT)、「Extensible Stylesheet Language」(XSL-FO)の 2 つの仕様に分離しました。
さらに、XSLT 仕様は、同年 7 月に XSLT 仕様と「XML Path Language」(XPath 仕様)に分離しま
した。
そして、XSLT、XPath 仕様の方が一足先に、1999 年 11 月に W3C 勧告になりました。
当初から Microsoft は、XSLT/XPath 仕様に積極的に取り組んでいます(1)。こうしたことから、今で
は、XSLT 仕様は、XSL-FO の生成に限らず、汎用の XML 変換言語の仕様として幅広く使われるよ
うになりはじめています。
以下では、それぞれの仕様について概説し、XML の表示・印刷との関連を例を交えて示します。
(1)提案時の仕様案である「A
Proposal for XSL」は、現在とはまったく違うものです。
は XSL-FO の方には熱心でないようです。XSL-FO 仕様に取り組んでいるのは、
むしろ ArborText の方と思われます。
(1)しかし、Microsoft
-4-
スタイルシート概説
CSS で XML を表示する
CSSってどんなもの?
CSS は、HTML や XML などの Web ドキュメントに簡単に表示書式を付加するための仕様です。
文書の内容とその表示のためのスタイルを分離して、Web の作成とメンテナンスを簡略化すること
がその狙いとされています。
CSS の仕様は、レベル 1 が 1996 年 12 月に W3C の勧告になりました。1996 年と言いますと、ま
だ XML 仕様も決まっていないころですので、HTML を表示することのみを想定しています。その
後、「Cascading Style Sheets, level2 CSS2 Specification」(CSS2 仕様)が 1998 年 5 月に W3C 勧告となって
います。現在は、レベル 3 仕様のドラフトが発表されています。
CSS では、セレクタによって要素または要素のパターンを指定します。表示書式は{}で囲まれた
宣言ブロックの内部にプロパティとその値という形式で指定します。セレクタと宣言ブロックは半角
空白で区切ります。
CSS スタイルシートの例
/* for top document title */
h1.doctitle {font-size: 20pt;
font-weight: 500;
background-color: rgb(51,153,153);
color:rgb(255,255,255);
text-align:center;
margin-left:20%;
margin-right:20%;}
/* any documents title */
h1.subtitle {font-size: 20pt;
font-weight: 900;
color: #000000;
text-decoration: underline; }
h2 {font-size: 14pt;
color: #000000;
font-weight: bold;
line-height: 15pt;
border-style:double;
border-width: 3px;
padding:3px;
background-color:rgb(222,252,182);
margin:30px 0px 20px 0px;}
h3 {font-size: 12pt;
font-weight: 600;
color: #000000;
line-height: 11pt;
margin:20px 0px 15px 0px;}
body {background-color:rgb(249, 254,226);
font-size: 10pt; }
strong {color: #a8fbff;
font-size: 8pt; }
上の例では、h1.doctitle、h1.subtitle、h2、h3、body、strong がセレクタにあたります。{}で囲った
宣言ブロックの内部が表示書式です。
セレクタは XML の文書ツリーのどの要素に、表示書式を適用するかを決定するものです。上の例
のような簡単な要素名単独指定から、複雑な文脈指定まで可能です。
-5-
スタイルシート概説
CSS2 の仕様書には、表示・印刷媒体としてブラウザのみではなく、紙媒体、および聴覚媒体も想
定していると書かれています。しかし、実際のプロパティははほとんどがブラウザを想定しているよ
うです。
HTML+CSS とブラウザ
CSS は、HTML とのセットで、また表示・印刷用プログラムとしてはブラウザを前提として説明
されることが多いようです。CSS を解説する書籍はほとんどが HTML をどうやってブラウザで綺麗
に表示するかという観点から CSS を解説しています。
Internet Explorer や Netscape Navigator は HTML+CSS をサポートしています。しかし、ブラウザのバ
ージョンによってサポートレベルが異なっており、互換性に問題があるようです。
W3C の CSS のホームページには、CSS をサポートするブラウザのリストがあります。Netscape の
Netscape6 が、最も CSS を良くサポートするブラウザの一つとしてあげられています。
ブラウザで HTML+CSS を使用する場合、CSS ファイルを外部ファイルとしてリンクする方法と、
HTML ファイルの中に CSS を記述する方法があります。
外部 CSS ファイルをリンクする方法を使えば、ソース HTML ファイルを変更することなくスタイ
ルシートの内容を変更して見かけを変えることができます。また、複数の HTML ファイルで同一の
スタイルシートを共有できますので便利です(1)。
HTML4.0/XHTML から外部 CSS をリンクする例
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="ja"
lang="ja">
<head>
<title>
Antenna House XSL Formatter オンラインヘルプ
</title>
<meta http-equiv="Content-Type"
content="text/html; charset=Shift_JIS" />
<link rel="stylesheet"
href="axf.css"
type="text/css"/>
</head>
<body >
...略...
</body>
</html>
link 要素には次のことを指定します。
•
•
•
リンクの型:"stylesheet"へのリンク
"ref"属性:スタイルシート・ファイルの位置。上の例では、axf.css ファイルが、CSS スタイルシ
ート・ファイルで、HTML ファイルと同じホルダに置くことになります。
リンクされるスタイルシートの型:"text/css"(HTML4.0 と XHTML のみ)
(1) HTML
•
•
•
のバージョンとスタイルシートについて
HTML3.2 では STYLE 要素に type 属性は使えません。type 属性は、HTML4.0/XHTML から
定義されました。
HTML3.2 では LINK 要素に type 属性は使えません。type 属性は、HTML4.0/XHTML から定
義されました。
HTML4.0 と XHTML には、スタイルシートで指定するような表示に関連する要素を除外し
た HTML4.0 Strict.dtd/XHTML Strict.dtd があります。これらの DTD は、CSS で表示に関す
る部分を指定し、HTML タグで論理構造を指定するように機能分類したものです。HTML
+CSS をセットで使うときには Strict.dtd で規定する要素のみを HTML ファイル中で使うの
が望ましいとされています。
-6-
スタイルシート概説
外部 CSS ファイルを使わない時は、次の例のように、HTML ファイルの STYLE 要素の中に CSS
を記述します。
HTML4.0/XHTML ファイルの中で CSS 記述
<html>
<head>
<style type="text/css">
body {color: red}
h1 {color: blue}
</style>
</head>
...略...
</html>
CSS による XML 表示
CSS は HTML のみではなく、XML を表示・印刷する方法として使うこともできます。セレクタと
して、HTML のツリーではなく XML ツリーのパターンを指定すれば良いのです。
この文書の最初に示した XML 文書を表示するためのスタイルシートの例を示します。
XML を表示するスタイルシートの例
author {display: block;
font-size: 18pt}
title {font-size: 24pt;
background-color: yellow;
display: block;}
date {display: block}
section title {display: block;
font-size: 16pt;
color: blue}
p {display: block; font-size: 11pt}
IE5.5 で上記を表示しますと次のようになります。
CSS を使って XML をブラウザで表示する機能が、どこまで実現可能かを調べて紹介した例は、あ
まり見当たりません。しかし、CSS の構文は直感的で簡単ですので、XML をブラウザで表示する方
法として活用する価値がありそうに思います。
-7-
スタイルシート概説
CSS の限界
CSS のセレクタでは、ツリーに対してパターンがマッチするかどうかを指定できます。しかし、
XML のツリー構造を変換することができません。
XML 文書は、要素をツリー化して文書の論理構造を表現していますので、ツリーの枝をコピーし
たり、削除したり、うまく変換して新しく構造の異なるツリーを簡単に作り出すことができるという
利点があります。このあたりが、バイナリ形式のワープロ・ドキュメントでは、簡単にできない、
XML 独自のメリットなのです。
例えば、表示・印刷する際に、次のようなことが簡単にできれば便利です。
•
•
•
•
•
XML の中の要素の順番を並び替える
二次元の配列になっていないものから二次元配列の表を自動的に生成する
title 要素を選択してコピーして目次を自動的に作り出す
index 要素をコピーして索引を作り出す
note 要素を取り出して、ツリーに新しい枝(注の一覧など)を作る。ツリーの作り方次第で、注
の置き場所を簡単に移動できます。
しかし、CSS ではこれを行うことができません。これを行うことができるのが、次に説明する
XSLT です。
-8-
スタイルシート概説
XSLT で XML を HTML(+CSS)にして表示する
Internet Explorer5.0(IE5)から「XML 文書を Web ブラウザで表示できるようになった」と言われ
ています。
IE5 で XML を表示する仕組み
IE5 では、XML 文書にスタイルシートを指定することにより、ブラウザ画面上で XML 文書を表示
することができるようになりました。IE5 では内部で XML を HTML に変換して表示しています。こ
の仕組みは次の図のとおりです。
上の図で、「XSLT」の部分は、XSLT プロセサというプログラムが担当します。XSLT プロセサ
は、ソース XML 文書から結果 XML 文書(1)に変換するものです。XSLT プロセサのための変換ルール
を記述したものが、XSLT スタイルシートです。
次に XSLT プロセサと XSLT スタイルシートについて説明します。
IE5 用スタイルシート
現在、Windows などに添付されている Internet Explorer5.0 や 5.5(IE5)で XML を表示するための
スタイルシートは次のような内容です。
スタイルシートの内容(先頭部分)の例
<?xml version="1.0" encoding="UTF-16"?>
<!-- Internet Explorer 5.0 用 -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns:html="http://www.w3.org/Profiles/XHTML-transitional" >
<xsl:template>
<xsl:apply-templates />
</xsl:template>
(1)結果文書は、XML
のみではなく、単なるテキストから RTF のような書式付きテキストまで広範囲
の出力もできます。
-9-
スタイルシート概説
<xsl:template match="text()">
<xsl:value-of />
</xsl:template>
...略...
</xsl:stylesheet>
スタイルシートは、XML 文書とは別のファイルになります。XML 文書に対して、スタイルシート
を指定する方法は、次のように XML 文書の先頭に処理命令を置きます。
IE5 で XML を表示するためにスタイルシートを指定する
<?xml version="1.0" encoding="UTF-16"?>
<!-- XML 文書の先頭に次のような処理命令を置き、スタイルシート
のファイル名を指定します。-->
<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
...XML 文書本文(ルート要素以下)...
IE5 は、XML ファイルを表示する前に、処理命令を見て、スタイルシート(上の例では、sample.
xsl)ファイルを探して、XML ファイルをスタイルシートに従って HTML に変換します。
このスタイルシートを XML に適用して変換処理をする機能は、IE5 と一緒に配布されている
「MSXML2.DLL」 (1) に組み込まれています。 但し、IE5 に付いている MSXML2.DLL は、XSLT の
W3C 勧告版ではなく、古いドラフト仕様の XSL 変換機能になっています。従って、XSL 変換ルール
もドラフト仕様で記述する必要があります。W3C 勧告版 XSLT スタイルシートとは、ネームスペー
スが「mlns:xsl="http://www.w3.org/TR/WD-xsl」になっていることから区別ができます。
上のような MSXML2.DLL 対応のスタイルシートを使うことは、現在では、標準的な方法とは考え
られません。IE5 以外のブラウザではもちろん表示することができません。従って、利用はあまりお
勧めできません。
XSLT の仕様は、上述の通り、1999 年 11 月に W3C の勧告となりました。この勧告版 XSLT に関
する簡潔で分かりやすい説明は、「XML バイブル」(日経 BP 社)第 14 章「XSL 変換」にあります
(同書同章の説明は、勧告版 XSLT 仕様に基づいています)。しかし、日本で出回っている書籍は、ま
だ、古い Microsoft の MSXML2.DLL、つまりのドラフト仕様を前提にしたものが多いようですので、
注意が必要です。
XSLT スタイルシート作成法
現在、XSLT スタイルシートの作成は、プログラマがエディタを使って行う状態で、簡単にスタイ
ルシートを作成するツールはあまりありません。米国には XSL のメーリング・リストがあり、1 日
100 件を越えるメールで XSLT の書き方等に関する議論がなされている状態で、XSLT スタイルシー
トに関する関心の高さがうかがえます。XSLT スタイルシートの作成は、現状では、トライアンドエ
ラー状態です。しかし、XSLT スタイルシートの作成は、慣れれば比較的簡単にできます。今後、
XML の普及に伴って XSLT スタイルシートが普及していくことは間違いないところです。
XSLT スタイルシートを書く際に、次の「XSL Samples Viewer」も役にたちます。
XSL Samples Viewer
Microsoft が XML ページから配布しているものです。XSLT と XPath の仕様を画面で確認す
るツールです。英語しかないようですが、XSLT スタイルシートを記述する際のオンライ
ン・マニュアルとして、便利に使用できます。W3C 勧告版になっています。
(1)MSXML.DLL は、InternetExploper4.0
に最初のバージョン 1.0 が添付されて出荷されました。それ以
来、InternetExplorer5.0 にバージョン 2.0、さらに InternetExplorer5.5 にバージョン 2.5 が添付されてい
ます。現在は、後に説明する MSXML3.DLL が配布されています。詳しくは、Microsoft の「置換モー
ドによる MSXML3.DLL インストール」(巻末参考資料リスト)を参照してください。
- 10 -
スタイルシート概説
XSLT プロセサ
XSLT が勧告になってから、勧告版の XSLT 仕様を実装する XSLT プロセサが沢山出てきました。
その多くは無償で配布されています。現時点で、一番、機能的に強力な XSLT プロセサは、Microsoft
が配布している MSXML3.DLL でしょう。 これは、 正式名称は「MSXML パーサー バージョン
3.0」と言い、2000 年 11 月 1 日から、Microsoft の Web サイトからダウンロードによる配布が始まっ
ています。まだ、Internet Explorer5.5 には添付されていませんが、MS の開発者がメーリング・リスト
で発言しているところによりますと、Internet Explorer6 には添付されるようです。
MSXML3.DLL は、プログラムの部品(ライブラリー)です。Internet Explorer から使うか、または、
DLL を動かすプログラムを作成しないと、単独の XSLT プロセサとしては使えません。
そこで、コマンドラインから使用するためのユーティリティも、別途、Microsoft のサイトから入
手することができます。
MSXML3.DLL
Microsoft が配布している XML プロセサで、XSLT 変換機能を備えています。
MSXML.EXE
MSXML3.DLL は、DLL ですのでエンドユーザが直接使うことができません。MSXML3.DLL
をインストールした PC に MSXSL.EXE をインストールしますと、DOS 窓からコマンドライ
ンで XSLT 変換ができるようになります。
XML を HTML に変換する
IE5 が作成する HTML は、揮発性なのでユーザが見ることはできません。そこで、XSLT プロセサ
を直接使って、XML を HTML に変換する例を次に説明します。
本文書自体は、XML(PureSmartDoc.dtd)で書いています。そこで、本文書を例として HTML に変
換してみます。この場合、XSLT スタイルシートには、PureSmartDoc.dtd で定義している要素のツリ
ーを HTML に変換するためのルール(1)を記述することになります。
PureSmartDoc から HTML に変換するスタイルシートの例
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>
SmartDoc 文書を XSLT スタイルシートで HTML に変換します
</title>
</head>
<xsl:apply-templates select="doc" />
</html>
</xsl:template>
<xsl:template match="doc">
<body>
<h1 align="center">
<xsl:value-of select="head/title" />
</h1>
<p align="right">
<xsl:value-of select="head/author" />
<br />
<xsl:value-of select="head/date" />
</p>
(1)この例は筆者が書いたものです。筆者はプログラマではありません。プログラマでない筆者がこの
スタイルシートを作成するに当たって、勉強をはじめて数日でできました。このことからも、XSLT
スタイルシートはそんなに難しいものではないということがお分かりいただけると思います。もちろ
ん、XSLT スタイルシートを極めるには、かなり勉強が必要でしょうけれども。
- 11 -
スタイルシート概説
<xsl:apply-templates select="body"/>
</body>
</xsl:template>
<xsl:template match="body">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="section">
<h2>
<xsl:value-of select="title" />
</h2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="section/title">
</xsl:template>
<xsl:template match="subsection">
<h3>
<xsl:value-of select="title" />
</h3>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="subsection/title">
</xsl:template>
...略...
</xsl:stylesheet>
XSLT スタイルシートは、wellformed(整形式)の XML ファイルです。パーサーで wellformed かどう
かチェックしましたら、ファイル名を「s2html.xsl」とつけて保存します(1)。
さて、次に MSXSL.EXE をコマンドラインで動かして、本文書(ファイル名は「abstyle.xml」)を
HTML ファイル(ファイル名は「abstyle.html」)に変換します。
変換の結果できました HTML ファイルを、IE5.5 で表示すると次のようになります。
このように、XSLT を使って XML を HTML に変換して、ブラウザで表示したり、印刷する技術は
簡単です。W3C 勧告の XSLT プロセサと XSLT スタイルシートが普及すれば、確立した、と言える
段階になるでしょう。さらに CSS をうまく作成すればかなりの表示能力が得られることでしょう。
(1)先ほどの例とは違って、ネームスペースが
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"になっ
ていることに注意してください。W3C 勧告版の XSLT スタイルシートでは、このネームスペースを
指定します。
- 12 -
スタイルシート概説
この方法の限界としては、HTML とブラウザという組み合わせは、パソコンなどのディスプレイ上
のウインドウを前提としていることです。HTML とブラウザには予めページにレイアウトするという
概念がなく、現在のウインドウの幅と高さにあわせて、整形することになります。このため、つぎの
ようにウインドウの幅によってレイアウトが変わってしまうことになります。
- 13 -
スタイルシート概説
XML を XSL-FO にして印刷する
XSL-FO とはなにか?
XSL-FO は、XML 文書をページに綺麗にレイアウトして印刷するための仕様として設計されてい
るものです。ブラウザと違ってページの概念があることで、紙への印刷を前提とする多種類の機能を
使用することができます。
•
•
•
•
•
•
•
本文とは違う印刷書式で目次を作成する。
左ページ、右ページで印刷書式を変更する。
本文にヘッダ、フッタ、サイドバーを設ける。
ページ番号を印刷する。
索引を作成り、ページ番号を添える。
脚注を付ける。
段組の印刷書式設定を挟む。
レイアウトしてページを作成する処理を組版処理といいますが、脚注などがありますと、組版処理
を行うにはかなり高度なアルゴリズムが必要です。
そこで、XML 文書をいきなり組版するのではなく順を追って組版します。XSL-FO は、その第一
段階でできるレイアウト指定済の XML 文書になります。
XSL-FO を使う組版プロセス
ソースの XML 文書を XSL-FO 文書に変換する仕組は、XML を HTML に変換するのと同じように
XSLT スタイルシートを使用します。
XSL-FO を表示・印刷するのが XSL-FO 組版エンジンとなります(1)。
(1)XSL-FO 組版エンジンについては、
「XSL-FO による
照ください。
- 14 -
XML の自動の実用化とその応用」などをご参
スタイルシート概説
XSL-FO 用 XSLT スタイルシート
次に、本文書を、XSL-FO に変換する XSLT スタイルシートの例を示します。
XSL-FO 用スタイルシートの例
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
version="1.0"
indent="no" />
<xsl:param name="toc-make" select="true()"/>
<!-- Paper Size -->
<xsl:param name="paper-width" >
210mm
</xsl:param>
<xsl:param name="paper-height">
297mm
</xsl:param>
...中略...
<!-- Content Transform-->
<xsl:template match="doc">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master margin-top="5mm"
margin-bottom="5mm"
margin-right="5mm"
margin-left="10mm"
master-name="PageMaster">
...中略...
</fo:simple-page-master>
...中略...
</fo:layout-master-set>
...中略...
</fo:root>
</xsl:template>
</xsl:stylesheet>
XSLT スタイルシートのルールを記述する文法は、HTML に変換するための XSLT スタイルシート
と同じですが、内容はかなり異なります。
XML 文書ファイルと XSL-FO 用 XSLT スタイルシートを使って MSXSL.EXE を DOS 窓で動かし
て、XSL-FO ファイルを作ることができます。本文書の XSL-FO ファイルは次のような内容になりま
す。
XSL-FO フ ァ イ ル は、 fo:root というフォーマッティング・ オブジェクトをルート要素とする
wellformed な XML ファイルです。
XSL-FO ファイルの例
<?xml version="1.0" encoding="UTF-16"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master margin-top="5mm"
margin-bottom="5mm"
margin-right="5mm"
margin-left="10mm"
- 15 -
スタイルシート概説
master-name="PageMaster"
page-height="297mm"
page-width="210mm">
<fo:region-body margin-top="8mm"
margin-right="8mm"
margin-bottom="8mm"
margin-left="8mm"/>
<fo:region-before border-after-style="solid"
border-width="thin"
extent="5mm"
display-align="after"/>
<fo:region-after border-before-style="solid"
border-width="thin"
extent="5mm"
display-align="before"/>
<fo:region-start reference-orientation="270"
extent="5mm"/>
<fo:region-end reference-orientation="90"
extent="5mm"/>
</fo:simple-page-master>
...中略...
</fo:layout-master-set>
...中略...
</fo:root>
XSL-FO を組版ソフト(Antenna House XSL Formatter)で組版した結果は次のようになります。ブ
ラウザとは違って、ヘッダの設定が行われていることを確認していただけることでしょう。
- 16 -
スタイルシート概説
スタイルシートの使い回し
XSL-FO に変換するための XSLT スタイルシートを作成するには、XSLT のルールの書き方と、そ
れに加えて、XSL-FO に関する知識が必要となります。XSL-FO ではページや行間隔も細かく指定し
ますので、HTML に変換する XSLT スタイルシートを作成するよりは時間がかかります。
しかし、 上の例の XSLT スタイルシートは、PureSmartDoc 形式で記述された XML ファイルを
XSL-FO に変換するための汎用の XSLT スタイルシートとしても使うことができます。
このように、ある DTD に従う XML ファイルについては、スタイルシートひとつを作成すれば、
それを使い回すことで、効率をあげることができます。
特に、印刷物ではレイアウト指定の良し悪が、見易さ、読み易さに大きな影響を与えます。優れた
スタイルシートを作るのは、プログラムの知識だけではなく、デザインの能力も必要となります。今
後は、優れたスタイルシートの市場が生まれる可能性もあるでしょう。
- 17 -
スタイルシート概説
参考資料
ドキュメント
「置換モードによる MSXML3.DLL インストール」(日本語)
MSXML3.DLL と旧バージョンとの関係について説明した資料。
http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp
「XML バイブル」
(日本語)エリオット・ラスティ・ハロルド著 日経 BP 出版発行
XML に関する技術を網羅した概説書。XSL 変換(XSLT)、XSL-FO に関する新しい解説が
あります。
「XSL-FO による XML の自動組版の実用化とその応用」
2001 年 2 月 9 日、日本印刷技術協会主催の Page2001 コンファレンス「自動組版の方向」
セッションにて発表させていただきました内容です。
http://www.antenna.co.jp/XML/xmllist/Page2001.htm
プログラム、ツール
XSLT Samples Viewer(英語)
XSLT の要素と関数、及び XPath 関数のサンプル・スタイルシートを提供する、ビジュアル
でインタラクティブな学習ツール。
http://msdn.microsoft.com/downloads/toc.asp
MSXML Perser 3.0 Release
Microsoft の MSXML3.DLL(無償)。
http://msdn.microsoft.com/downloads/toc.asp
MSXSL.EXE Command Line Transformation Utility
Microsoft の MSXML3.DLL を動かして、コマンドラインから XSLT 変換を実行するユーティ
リティ。
http://msdn.microsoft.com/downloads/toc.asp
Instant Saxon
Michael H. Kay 氏によるコマンドラインの XSLT プロセサです。
http://www.users.iclway.co.uk/mhkay/saxon/saxon6.2/instant.html
Antenna House XSL Formatter
XSL-FO の組版エンジン。下記アドレスより 30 日間評価版を入手していただけます。
http://www.antenna.co.jp/XML/axfoo/axf00-top.htm
SmartDoc
SmartDoc は、浅見 智晴氏が開発した、テクニカル・ドキュメント記述用のドキュメント形
式とその処理系の総称です。PureSmartDoc 形式は、SmartDoc の中核の XML ファイル形式で
す。
http://www.asahi-net.or.jp/~dp8t-asm/java/tools/
- 18 -