>サイトトップへ >このカテゴリの一覧へ

X 4179

:2010

(1)

目  次

ページ

序文 

1

0

  適用範囲

1

1

  導入及び概要 

1

1.1

  スタイルシートの処理 

1

1.2

  XSL の利点 

6

2

  XSL 変換

10

2.1

  木構築

10

2.2

  XSL 名前空間 

10

3

  フォーマット化への導入 

11

3.1

  概念的手続 

12

4

  領域モデル 

13

4.1

  導入

13

4.2

  長方形領域 

16

4.3

  間隔及び条件付け

26

4.4

  ブロック領域 

29

4.5

  行領域

33

4.6

  行内領域 

34

4.7

  順序付け制約 

35

4.8

  保持及び分割 

37

4.9

  レンダリングモデル

38

4.10

  領域木の例 

41

5

  特性の洗練化及び解決 

42

5.1

  指定値,計算値,実際値及び継承 

42

5.2

  簡略記述の展開

43

5.3

  対応特性の値の計算

44

5.4

  単純な特性の特色への対応付け

48

5.5

  複雑な特性の特色への対応付け

49

5.6

  非特性ベースの特色生成 

50

5.7

  特性ベースの変換

51

5.8

  Unicode 双方向(BIDI)処理 

51

5.9

  式 

54

5.10

  コア関数ライブラリ 

60

5.11

  特性のデータ型 

65

6

  フォーマット化オブジェクト

68

6.1

  フォーマット化オブジェクトの導入 

68


X 4179

:2010  目次

(2)

ページ

6.2

  フォーマット化オブジェクトの内容 

70

6.3

  フォーマット化オブジェクト

71

6.4

  宣言,ページ付け及びレイアウトフォーマット化オブジェクト 

77

6.5

  ブロックレベルフォーマット化オブジェクト

112

6.6

  行内レベルフォーマット化オブジェクト 

118

6.7

  表のためのフォーマット化オブジェクト 

143

6.8

  リストのためのフォーマット化オブジェクト

164

6.9

  動的な効果−リンク及び多重フォーマット化オブジェクト

178

6.10

  索引のためのフォーマット化オブジェクト

190

6.11

  ブックマークのためのフォーマット化オブジェクト 

206

6.12

  行外フォーマット化オブジェクト 

207

6.13

  その他のフォーマット化オブジェクト 

216

7

  フォーマット化特性

230

7.1

  特性グループの記述

230

7.2

  XSL 領域及び CSS ボックスモデル 

231

7.3

  パーセンテージ計算のための参照長方形 

232

7.4

  追加の CSS データ形式 

233

7.5

  一般的なアクセス性特性 

233

7.6

  一般的な絶対位置決め特性 

235

7.7

  一般的な聴覚特性

237

7.8

  一般的な境界特性,パディング特性及び背景特性 

242

7.9

  一般的なフォント特性 

258

7.10

  一般的なハイフン付け特性

270

7.11

  一般的なブロックレベルのマージン特性 

272

7.12

  一般的な行内レベルのマージン特性 

276

7.13

  一般的な相対位置決め特性

278

7.14

  領域配置特性 

278

7.15

  領域寸法特性 

297

7.16

  ブロック関連特性及び行関連特性 

307

7.17

  文字特性 

316

7.18

  色関連特性 

323

7.19

  浮動体関連特性

324

7.20

  保持特性及び分割特性 

330

7.21

  レイアウト関連特性 

334

7.22

  リーダ及びけい(罫)線特性

337

7.23

  動的な効果があるフォーマット化オブジェクトに関する特性 

340

7.24

  索引のための特性

347

7.25

  マーカに関する特性 

349

7.26

  数値から文字列への変換に関する特性 

353


X 4179

:2010  目次

(3)

ページ

7.27

  ページ付け特性及びレイアウト特性 

353

7.28

  表特性

364

7.29

  表記方法関連特性

372

7.30

  その他の特性 

386

7.31

  簡略記述特性 

395

8

  適合性

412

附属書 A(規定)フォーマット化オブジェクト

414

附属書 B(規定)特性 

420

附属書 C(規定)文献

470


X 4179

:2010  目次

(4)

まえがき

この規格は,工業標準化法第 12 条第 1 項の規定に基づき,財団法人日本規格協会(JSA)から団体規格

[W3C 勧告 Extensible Stylesheet Language (XSL) Version 1.1]を基に作成した工業標準原案を具して日本工

業規格を制定すべきとの申出があり,日本工業標準調査会の審議を経て,経済産業大臣が制定した日本工

業規格である。

この規格は,著作権法で保護対象となっている著作物である。

この規格の一部が,特許権,出願公開後の特許出願,実用新案権又は出願公開後の実用新案登録出願に

抵触する可能性があることに注意を喚起する。経済産業大臣及び日本工業標準調査会は,このような特許

権,出願公開後の特許出願,実用新案権及び出願公開後の実用新案登録出願にかかわる確認について,責

任はもたない。

原勧告の標題及びまえがきの翻訳 

拡張可能なスタイルシート言語(XSL1.1 

W3C

勧告  2006 年 12 月5日 

(原勧告の)この版の掲載場所 

http://www.w3.org/TR/2006/REC-xsl11-20061205/

(XML 又は HTML で入手可能)

(原勧告の)最新版の掲載場所 

http://www.w3.org/TR/xsl/

(原勧告の)以前の版の掲載場所 

http://www.w3.org/TR/2006/PR-xsl11-20061006/

http://www.w3.org/TR/2006/CR-xsl11-20060220/

http://www.w3.org/TR/2005/WD-xsl11-20050728/

http://www.w3.org/TR/2004/WD-xsl11-20041216/

http://www.w3.org/TR/2003/WD-xsl11-20031217/

著者及び貢献者 

Anders Berglund, IBM <alrb@us.ibm.com>

この文書(原勧告)についての正規の正誤表は,http://www.w3.org/2006/12/xsl11-errata.html を参照する。

この勧告の英語版だけを規定としての版とする。しかし,翻訳については,

http://www.w3.org/2003/03/Translations/byTechnology?technology=xsl11 を参照する。

(原勧告の)Copyright© 2000 W3C® (MIT, INRIA, Keio), All Rights Reserved.W3C の免責,商標及び文書

使用の規則を適用する。


X 4179

:2010  目次

(5)

この文書(原勧告)の状態 

この規格は,スタイルシートを表現する言語である拡張可能なスタイルシート言語(XSL)の機能及び

構文を規定する。ここでは,この文書(原勧告)の公表時点における状態を示す。他の文書がこの文書に

とって替わることがある。現在の W3C 出版物のリスト及びこの文書の最新版は,http://www.w3.org/TR/に

ある W3C 技術文書索引から入手できる。

実装の報告は,http://www.w3.org/Style/XSL/2006/01/xsl11-implementation を参照する。この勧告は,2001

年 10 月 15 日に公開された XSL 1.0 勧告を置き換えるものである。変更バー,索引,複数流し込み及びブ

ックマークを利用可能にするために,新機能が追加された。図形変倍,部分合計などを利用可能にするた

めの表での“マーカ”及びその検索,並びにページ番号参照において,既存機能が拡張された。この文書

での変更は,XSL 1.1 Requirements に示される XSL 1.1 に対する要件を満たすことを目的とする。多くの正

誤表の内容は,この文書に組み込まれている。勧告の E Changes from XSL 1.0(この規格では,この E は省

略する。

)を参照する。

この文書は,XSL 作業グループによって,W3C の XML 活動の一部として作成された。

この文書に対するコメントは,自動的にアーカイブされる公開 email リストの xsl-editors@w3.org に送付

されたい。

XSL の一般公開議論は,XSL-List 及び www-xsl-fo のメーリングリストで行っている。

この文書は,W3C 会員企業,ソフトウェア開発者及び関連する団体によって閲読されており,技術統括

責任者によって W3C 勧告として承認されている。これは安定した文書であり,参考資料として用いてよ

く,他の文書から引用規定として引用してもよい。W3C はこの勧告を制定することによって,この規定へ

の注目を喚起し,広い普及を促進するという役割を果たす。この結果,Web の機能及び相互運用性が高ま

る。

この文書は,2004 年 2 月 5 日付けの W3C の特許方針

(http://www.w3.org/Consortium/Patent-Policy-20040205/)に基づいて作成された。W3C は,W3C の出版

物に関係するあらゆる特許開示書の公開リスト(http://www.w3.org/Style/XSL/Disclosures)を保持している。

そのページは,特許を開示するための手順も含んでいる。個人が必す(須)の特許請求事項[Essential Claim

(s)]を含むと信じる特許を知っている場合,その事実を知っている個人は,W3C の特許方針の第 6 条に従

って,情報を開示しなければならない。

X 4179

:2010


   

日本工業規格

JIS

 X

4179

:2010

拡張可能なスタイルシート言語(XSL)1.1

Extensible Stylesheet Language (XSL) Version 1.1

序文 

この規格は,2006 年 12 月 5 日に World Wide Web Consortium(W3C)から公表された Extensible Stylesheet

Language (XSL) Version 1.1 勧告を翻訳し,技術的内容を変更することなく作成した日本工業規格である。

なお,この規格で点線の下線を施してある箇所は,原勧告にはない事項である。

適用範囲 

この規格は,スタイルシートを表現する言語である拡張可能なスタイルシート言語(XSL)の機能及び

構文について規定する。それは,次の二つの部分からなる。

− XML 文書を変換するための言語。

−  フォーマット化セマンティクスを指定するための XML 語い(彙)

XSL スタイルシートは,XML 文書のクラスの表示を,そのクラスのインスタンスが,フォーマット化

語い(彙)を使用する XML 文書にどのように変換されるかを記述することによって指定する。

導入及び概要 

この規格は,拡張可能なスタイルシート言語(XSL)を定義する。XSL は,スタイルシートを表現する

言語である。任意に構造化された XML([XML 1.0]又は[XML 1.1])文書又はデータファイルのクラスがあ

るとき,設計者は,XSL スタイルシートを使用して,その構造化された内容をどのように表示するのが望

ましいか,すなわち,ウェブブラウザ若しくはハンドヘルド装置のウィンドウ,又はカタログ,報告書,

パンフレット若しくは書籍における物理的なページの集合,といった表示メディア上に,ソース内容がど

のようにスタイル付けされ,レイアウトされ,ページ付けされるのが望ましいか,に関する設計者の意図

を表現する。

注記  原勧告では,外部文書への参照は[XML 1.1]などといった記述から参照箇所にリンクされてい

る。ただし,この規格では参照箇所へのリンクは記載しない。代わりに,この記法によって

属書 の対応する項目を参照する。

1.1 

スタイルシートの処理 

XSL スタイルシートプロセサ(stylesheet processor)は,XML の文書又はデータ,及び XSL スタイルシ

ートを受け取って,そのスタイルシートの設計者が意図した XML ソース内容の表示を作成する。この表

示処理には二つの局面が存在する。第 1 は,XML のソース木から結果木を構築することであり,第 2 は,

結果木を解釈して,ディスプレイ上,紙面上,音声,その他のメディア上での表示に適するフォーマット

結果を生成することである。第 1 の局面を木変換(tree transformation)と呼び,第 2 の局面をフォーマッ

ト化(formatting)と呼ぶ。フォーマット化の処理は,フォーマッタ(formatter)が実行する。このフォー

マッタは,単にウェブブラウザ内のレンダリングエンジンであってもよい。


2

X 4179

:2010

   

木変換は,結果木の構造をソース木の構造とは大きく異なるものにすることを可能にする。例えば,元

のソース文書をフィルタ処理した選択として目次を追加できたり,ソースデータをソートされた表形式の

表示に再整理できたりする。結果木を構築するときに,木変換処理は,その結果木をフォーマットするの

に必要な情報も追加する。

フォーマット化は,結果木にフォーマット化セマンティクスを含めることによって可能となる。フォー

マット化セマンティクスは,フォーマット化オブジェクト(formatting objects)のクラスのカタログによっ

て表現される。結果木のノードがフォーマット化オブジェクトである。フォーマット化オブジェクトのク

ラスは,ページ,段落,表などの組版抽象概念を示す。字下げ制御,単語間隔及び文字間隔の制御,ウィ

ドウ及びオーファンの制御,

並びにハイフン付けの制御といったフォーマット化特性(formatting properties)

の集合によって,これらの抽象化の表示に関するより精密な制御が与えられる。XSL では,フォーマット

化オブジェクト及びフォーマット化特性のクラスが,表示の意図を表現するための語い(彙)を与える。

XSL 処理モデルは,概念的であることだけを意図している。実装は,これらを別の処理として提供する

ことを必す(須)としていない。さらに,実装は,概念的 XSL 処理モデルを使用して処理される場合と同

じ結果を生成する場合は,どのような方法でソース文書を処理してもよい。詳細な概念的モデルを描いた

図を

図 1.1 に示す。

図 1.1XSL  の二つの処理,木変換及びフォーマット化 

1.1.1 

木変換 

木変換が結果木を構築する。XSL では,この木は要素及び属性の木(element and attribute tree)と呼ばれ,

主として“フォーマット化オブジェクト”名前空間(以下,fo 名前空間という。

)の中のオブジェクトを

もつ。この木では,フォーマット化オブジェクトは,XML 要素として表現され,XML の属性及び値のペ

アの集合によって表現される特性をもつ。フォーマット化オブジェクトの内容は,XML 要素の内容である。

木変換は,XSLT 勧告[XSLT]で規定される。この概念的処理を描いた図を

図 1.2 に示す。


3

X 4179

:2010

図 1.2−他の語い(彙)への変換 

XSL スタイルシートは,木変換で使用される。スタイルシートは,木構築規則の集合を含む。木構築規

則は,二つの部分をもつ。その一つはソース木の中の要素と一致するパタンであり,もう一つは結果木の

一部を構築するテンプレートである。これによって,類似したソース木構造をもつ広範な分野の文書に対

してスタイルシートを適用することが可能になる。

XSL 及び XSLT の実装には,木構築の結果を XML 文書として出力できるものもある。これは,フォー

マット化オブジェクト及びフォーマット化特性を含む XML 文書を出力することを可能にする。この機能

は,XSL プロセサにとって必要なものではなく,奨励されてもいない。しかし,既知のクライアントのた

め の 入 力 を 準 備 す る サ ー バ の よ う に , こ れ が 重 要 と な る 場 合 が あ る 。 例 え ば , WAP

(http://www.wapforum.org/faqs/index.htm)サーバが,WAP 処理可能なハンドヘルド装置のために特殊化さ

れた入力を準備する方法がこの場合に当たる。クライアントがフォーマット化のオブジェクト及び特性を

受け取ることができることを送信側が知らないか,又は送信された文書がフォーマット化のオブジェクト

及び特性をもつ文書の構築のときに使用されるソース文書への参照を含まないかのいずれかの場合,アク

セス可能性を保つために,ウェブシステムの設計者は,フォーマット化のオブジェクト及び特性を含む文

書の送信を要求(又は使用)する体系を開発しないことが望ましい。

1.1.2 

フォーマット化 

フォーマット化は,フォーマット化オブジェクト木形式の結果木を解釈し,fo 名前空間における XML

の要素及び属性の木が構築されたスタイルシートの設計者が意図する表示を生成する。

XSL が対応するフォーマット化オブジェクトの語い(彙),つまり fo:要素型の集合は,設計者に利用可

能な組版抽象概念の集合を表現する。セマンティクスの上では,各フォーマット化オブジェクトは,ペー

ジ付け,レイアウト及びスタイル付けの情報の一部に関する規定を表現する。それらの情報は,結果木全

体をフォーマット化した結果として,そのフォーマット化オブジェクトの内容に適用される。各フォーマ

ット化オブジェクトのクラスは,特定の種類のフォーマット化の振る舞いを表現する。例えば,ブロック

フォーマット化オブジェクトクラスは,段落内容の行への分割を表現する。規定の他の部分は,他のフォ

ーマット化オブジェクトから導かれてもよい。例えば,段落のフォーマット化(ブロックフォーマット化

オブジェクト)は,ブロックフォーマット化オブジェクトの特性の規定にも,フォーマッタがブロックを

配置するレイアウト構造の規定にも依存する。


4

X 4179

:2010

   

フォーマット化オブジェクトのインスタンスと関連付けられる特性は,そのオブジェクトのフォーマッ

ト化を制御する。例えば“color”などの幾つかの特性は,フォーマット結果を直接指定する。

“space-before”

などの他の特性は,特定のフォーマット結果を指定せず,可能なフォーマット結果の集合を制約するだけ

である。フォーマッタは,例えば外観など他の観点から選択を行うこともできる。

フォーマット化は,領域木(area tree)と呼ばれる幾何的領域の木の生成から成る。幾何的領域は,一連

の幾つかのページ(ウェブブラウザは通常,1 ページを使用する。

)上に位置付けされる。各幾何的領域は,

ページの上に置かれ,その領域に何を表示するかの指定をもっており,さらに,背景,パディング及び境

界をもってもよい。例えば,単一文字のフォーマット化は,文字を視覚的に表示するのに使うグリフを保

持するために十分な大きさの領域を生成し,このグリフがこの領域に表示される。これらの領域は入れ子

になってもよい。例えば,グリフは,行内,ブロック内,ページ内などに位置付けされてもよい。

レンダリングは,領域木,すなわち(領域のページ及びその集まりによる)表示の抽象モデルを取り込

んで,コンピュータ表示画面上のウェブブラウザウィンドウ,紙シートなどの関連メディア上へ表示を行

う。この規格では,レンダリングのセマンティクスは,詳細に記述されない。

フォーマット化の第 1 段階は,XSLT 変換によって得られる要素及び属性の木を“オブジェクト化する”

ことである。木をオブジェクト化することとは,基本的には,木の要素をフォーマット化オブジェクトノ

ードに転じ,属性を特性指定に転じることから構成される。この段階の結果は,フォーマット化オブジェ

クト木(formatting object tree)となる(

図 1.3 参照)。

図 1.3XSL  フォーマット化オブジェクト木の構築 

オブジェクト化の段階の一部として,結果木に現れる文字は,fo:character ノードによって置換される。

空白文字だけから構成され,対応するフォーマット化オブジェクトが fo:character ノードを子として許容し

ない要素の子であるテキストノードの文字は無視される。対応するフォーマット化オブジェクトが

fo:character ノードを子として許容しない要素内の他の文字は誤りである。

fo:instream-foreign-object の内容はオブジェクト化されない。その代わりに,fo:instream-foreign-object 要


5

X 4179

:2010

素を表現するオブジェクトは,要素及び属性の木の適切なノードを指し示す。同様に,fo:declaration のど

のような非 XSL 名前空間の子要素もオブジェクト化されない。その代わりに,fo:declaration 要素を表現す

るオブジェクトは,要素及び属性の木の適切なノードを指し示す。

フォーマット化の第 2 段階は,フォーマット化オブジェクト木を洗練化し(refine)

,洗練化されたフォ

ーマット化オブジェクト木(refined formatting object tree)を生成することである。洗練化の過程は,特性

(property)から特色(trait)への対応付けを扱う。これは,次からなる。

a)

個々の特性への簡略記述の展開。

b)

対応する特性の対応付け。

c)

計算値の決定(式評価を含んでもよい。

d) white-space-treatment

特性及び linefeed-treatment 特性の効果の取扱い。

e)

継承。

洗練化の詳細については,箇条 にある。

洗練化の段階を,

図 1.4 に示す。

図 1.4−フォーマット化オブジェクト木の洗練化 

フォーマット化の第 3 段階は,領域木の構築である。領域木は,各フォーマット化オブジェクトのセマ

ンティクスに記述されるとおりに生成される。

各フォーマット化オブジェクトクラスに適用可能な特色は,

領域の生成方法を制御する。すべてのフォーマット化特性は,すべてのフォーマット化オブジェクトに指

定されてもよいが,各フォーマット化オブジェクトクラスに対しては,フォーマット化特性の部分集合だ

けが,そのクラスのオブジェクトのための特色を決定するのに使われる。

領域生成を,

図 1.5 及び図 1.6 に示す。


6

X 4179

:2010

   

図 1.5−領域木の生成

図 1.6−処理の概要 

1.2 XSL

の利点 

HTML の場合と異なり,XML の要素名は,基本の表示セマンティクスをもたない。スタイルシートな

しには,プロセサは,画一的な文字列として以外に,XML 文書の内容をどのようにレンダリングするかを

知ることはできない。XSL は,XML 構文を用いてスタイルシートを書くための広範なモデル及び語い(彙)

を提供する。


7

X 4179

:2010

この規格は,これらの XSL プロセサを実装する者のためのものである。XSL スタイルシートを書く者

のための参照マニュアルとしてこの規格を使用することはできるが,この規格は,本来,解説資料ではな

い。

XSL は,段階スタイルシート[CSS2]及び文書スタイル意味指定言語[DSSSL]の先行する作業の上に構築

されている。XSL のフォーマット化のオブジェクト及び特性の多くは,特性の共通的な集合に対応するが,

それだけでは,XSL のすべての目的を達成するのに十分ではない。特に XSL は,ページ付け及びレイア

ウトのモデルを導入している。これは,現在利用可能なものを拡張し,この規格に示される簡単なページ

モデルを超えるページ構造へと,直接的な方法で順次拡張することができる。

1.2.1 

ページ送り及びスクロール 

スクロール可能な文書ウィンドウ及びページ付けの両方を実行することは,XML 内容のスタイル付け

(及びページ付け)に新たな複雑さを招く。ページ付けは,内容の上に任意の境界(ページ又はページ上

の区画)を導入するので,ページ,区画及びブロック境界における間隔の制御などの概念が極めて重要に

なる。

(ページを上下方向に調整するための)行間の間隔調整,並びに(テキストを両端そろえするための)

単語及び文字の間の間隔調整に関連する概念も存在する。これらは,必ずしも今日のウェブブラウザに見

られるような,単純でスクロール可能な文書ウィンドウで生ずるものとは限らない。しかし,本体,上下

の余白及び左右の余白といった多くの区画をもつページと,

“フレーム”

を使用するウェブ表示との間には

一致がある。区画への内容の分配は,基本的にはいずれの場合においても同じであって,XSL は,類似の

方法で両方の場合を扱う。

XSL は,ウェブ上での閲覧に関して等価な“フレーム”に基づく構造を与えるためだけでなく,文書が

ページ付けされるときに必要な機能に対する制御を設計者に与えるために開発された。この制御を達成す

るために,XSL は,CSS2 又は DSSSL で利用可能なそれらを超えて,フォーマット化オブジェクト及びフ

ォーマット化特性の集合を拡張した。さらに,スタイル付け可能な XML ソース構成要素(要素,属性,

テキストノード,注釈及び処理命令)の選択は,XSLT 及び XPath [XPath]に基づいており,利用者に極め

て強力な選択機構を提供する。

フォーマット化のオブジェクト及び特性の拡張の設計は,最初は DSSSL による影響を受けた。しかし実

際の拡張は,その基礎となった DSSSL 構築要素に必ずしも類似してはいない。CSS2 規定によって忠実に

適合させるか,又は DSSSL よりも簡単に問題に対処するかのいずれかのために,DSSSL から離れた拡張

もある。

拡張が行われた方法には幾つかある。右向き及び左向きだけでなく,下向き及び上向きといった多様な

表記方法(writing-mode)を反映するために値を追加した場合など,新しい値を追加することで十分だった

場合がある。

同時に複数の値をもつ一つの特性として CSS2 で表現される共通特性を,その特性の独立の側面を独立

に制御するために,幾つかの新しい特性に分割する場合もある。例えば,

“white-space”特性は,次の四つ

の特性,すなわち,どのように空白を処理するかを制御する“space-treatment”特性,どのように改行を処

理するかを制御する“linefeed-treatment”特性,複数の連続する空白をどのように縮退するかを制御する

“white-space-collapse”特性,及び行が段の端などの境界に遭遇したときに行が自動的にどのようにラップ

されるかを制御する“wrap-option”特性に分割された。一つの特性を複数の(下位)特性に分割すること

の効果は,等価な既存の CSS2 の特性を,それが含まれる下位特性の集合に対する“簡略記述”とするこ

とである。


8

X 4179

:2010

   

さらに,新しい特性を生成することが必要になった他の場合もある。例えば,どのようにハイフン付け

を 行 う か を 制 御 す る , 多 く の 新 し い 特 性 が あ る 。 こ れ ら は ,( ス ク リ プ ト ご と に 変 化 す る )

“hyphenation-character”などの特性だけでなく,テキストが属するスクリプト及び国名を識別することを

含んでいる。

XSL における幾つかのフォーマット化オブジェクト及び多くの特性は,CSS2 規定からきており,両者

間の互換性を確保している。

XSL 特性には,次のように識別可能な四つのクラスが存在する。

a)

複製による CSS2 特性(CSS2 のセマンティクスからの変更はない。

b)

拡張された値をもつ CSS 特性。

c)

分離及び/又は拡張された CSS 特性。

d) XSL

だけの特性。

1.2.2 

選択子及び木構築 

前述のとおり,XSL は木構築及びパタン選択のために XSLT 及び XPath を使用し,混在した名前空間が

関与する場合でも,どのようにソース内容の部分が表示されるか,及びどの特性がその内容部分と関連付

けられるかに対して高度の制御を与える。

例えば,XPath のパタンは,文字列の一部又は段落の N 番目のテキストノードの選択を可能にする。こ

れによって利用者は,例えば,処理段階にある第 3 番目の段落すべてを太字で表すという規則をもつこと

ができる。さらに,包含要素の内容部分又は属性の数値に基づいて,特性をその内容部分と関連付けるこ

とができる。これによって,負の値を“赤”で表し,正の値を“黒”で表すというスタイル付け規則をも

つことができる。ソース木の特定の文脈に依存してテキストを生成できたり,ソース木の一部を異なるス

タイルで複数回表示したりすることも可能になる。

1.2.3 

拡張ページレイアウトモデル 

XSL には,フォーマット化オブジェクトとして,ページ又はフレームのレイアウト構造(本体の大きさ

はどのくらいか,複数の段があるか,上下余白又は側線があるか,これらの大きさはどのくらいかなど)

及び XML ソース内容をこれらの“コンテナ”に配置する規則が存在する。

レイアウト構造は,

“単純ページマスタ”(simple-page-master)フォーマット化オブジェクトの一つ以上

のインスタンスによって定義される。このフォーマット化オブジェクトは,ページ上の(複数の段をもつ)

本体,上下余白及び側線に対して,独立して埋められる区画を定義することができる。これらの単純ペー

ジマスタは,その様々な単純ページマスタをどの順序で使わなければならないかを指定するページシーケ

ンスにおいて使用できる。ページシーケンスは,どのようにスタイル付けされた内容がそれらのページを

埋めるかをも指定する。このモデルは,ページのインスタンスがフォーマッタによって自動的に生成され

る本の章のための単純ページマスタのシーケンスを指定したり,雑誌のレイアウトで使われるような明示

的なページシーケンスを指定することを可能にする。スタイル付けされた内容は,区画の名前を,結果木

のスタイル付けされた内容に付加される名前に関連付けることによって,ページの様々な区画に割り当て

られる。

これらのレイアウトフォーマット化オブジェクト及び特性に加えて,ページ付けされた文書の典型的な

フォーマット化に対して,制御のレベルを提供するために設計された特性が存在する。これは,ハイフン

付けに対する制御を含み,同一の行若しくは段の中にある,又は同一のページ上にある他のテキストに続

くテキストに対する制御の展開を含む。

1.2.4 

広範な領域モデル 


9

X 4179

:2010

特性及びフォーマット化オブジェクトの拡張,特に,ブロック,行及びページ区画の間隔に対する制御,

並びに行内制御に関する領域でのそれらの拡張は,CSS2 のボックスフォーマット化モデルの拡張を必要

とした。この拡張モデルは,箇条 に示される。CSS2 のボックスモデルは,このモデルの部分集合であ

る。7.2(XSL 領域及び CSS ボックスモデル)における,CSS2 のボックスモデルの用語と XSL 領域モデ

ルの用語との対応付けを参照する。領域モデルは,文字,単語,行及びブロックの間の関係,並びにそれ

らの間の間隔調整を記述するための語い(彙)を提供する。

1.2.5 

国際化及び表記方法 

特に極東がそうであるが,下向きに文字が進行し,左向き(最も普通)又は右向きのいずれかに行が進

行するのを典型的な設定とするスクリプトがある。他の方向も使用される。

(上下左右を用いた)固定した

絶対参照フレームによって表現される特性,及び右向き又は左向きの単語の進行の概念だけに適用される

特性は,これらのスクリプトで書かれたテキストに対して十分には一般化されていない。

そのために,XSL(及びその前は DSSSL)は,フォーマット化のオブジェクト及び特性の記述には,相

対参照フレームを使用する。CSS2 の参照フレームが(上下左右の)4 方向をもつのと同様に,XSL の相対

参照フレームは,

[前(before)

,後(after)

,開始(start)及び終了(end)の]4 方向をもつが,これらは

表記方法(writing-mode)に対して相対的である。“writing-mode”特性は,ページ又は画面の上にグリフ,

単語,行,ブロックなどを正しく配置するために,フォーマッタが必要とする方向を制御する手段である。

表 記 方 法 は , こ れ ら の 基 本 方 向 を 表 現 す る 。 表 記 方 法 に は ,“ 右 向 き − 下 向 き ”( “ left-to-right −

top-to-bottom”。“lr-tb”と表す。),“左向き−下向き”(“right-to-left−top-to-bottom”。“rl-tb”と表す。),“下

向き−左向き”

“top-to-bottom−right-to-left”

“tb-rl”と表す。

)などがある。

“writing-mode”特性の記述に

ついては,7.29.7 を参照する。通常,表記方法の値は,二つの方向を指定する。最初の指定は,行内進行

方向(inline-progression-direction)であって,単語を配置する方向を決定する。次の指定は,ブロック進行

方向(block-progression-direction)であって,ブロック(及び行)を順次配置する方向を決定する。さらに,

文字のシーケンスのための行内進行方向は,それらの文字のための Unicode 文字データベース[UNICODE

Character Database]及び Unicode 双方向(BIDI)アルゴリズム[UNICODE UAX #9]によるそれらの文字の双

方向性文字型を用いて,暗黙的に決定されてもよい。

“writing-mode”特性の値の名前において明示的である方向に加えて,“writing-mode”特性は,

(下付き

文字及び上付き文字に使用する)シフト方向(shift-direction)などの,フォーマッタが必要とする他の方

向を決定する。

1.2.6 

リンク付け 

HTML とは異なり,XML は組込みセマンティクスをもたないので,ハイパテキストリンクの組込みの

概念はない。この文脈において,

“リンク”は,http://www.w3.org/TR/html401/struct/links.html#h-12.1 で定義

される“ハイパテキストリンク”のことに言及するだけでなく,http://www.w3.org/TR/xlink/#intro で定義さ

れているリンクの幾つかの側面にも言及する。ここで後者において,

“リンクとは,XLink のリンク付け要

素によって明示的に作成される,二つ以上の資源又は資源の部分の間の関係である”とある。したがって,

XSL には,リンク参照の内容をフォーマット化するセマンティクスと,リンクをたどるセマンティクスと

の二つを表現するフォーマット化オブジェクトがある。

XSL は,たどったリンクターゲットの表示を変更する幾つかの機構を提供する。これらの機構の一つは,

リンクターゲットを次のように表示することを可能にする。すなわち,表示域領域(viewport-area)の中

でのリンクターゲットの配置に関する制御を考慮する一方で,元のリンクアンカ(link anchor)と関係付

けてリンク先が表示される方法に関する制御をある程度は許可する。


10

X 4179

:2010

   

XSL は,要素の活性状態に応じて,要素をフォーマットする方法を変更するための一般的機構も提供す

る。これは,与えられたリンク参照が既にたどり済みであるかどうかを示すために,又は例えばマウスが

リンク参照の上でとどまっているかどうかなどに応じて,特定のスタイルを適用するために,リンクに関

係して特に有用になる。

2 XSL

変換 

2.1 

木構築 

木構築は,

“XSL 変換”[XSLT]に示される。XSLT のデータモデルは,

([XML 1.0]及び[XML Names 1.0]

に適合する)XML1.0 の文書,並びに([XML 1.1]及び[XML Names 1.1]に適合する)XML1.1 の文書のいず

れをも表すことができ,二つを区別しない。したがって,XSL 1.1 は,これらの XML の版のいずれかとと

もに使用することができる。テキストの XML(の構文解析)からデータモデルを作成している間,それぞ

れの変換に違いが生じるだけである。

“XSL 変換”の規定内容は,この規格の必す(須)部分を形成し,規定と考えられる。データモデルは,

元の文書が XML1.0 か XML1.1 かによらず同一であるので,XSLT 処理のセマンティクスは,元の文書に

よって使用される XML の版に依存しない。すべての文書が単一の変換を使用し,同じ XML の版に適合し

なければならない理由は全くない。

2.2 XSL

名前空間 

XSL 名前空間は,URI http://www.w3.org/1999/XSL/Format をもつ。

注記  この URI の 1999 は,W3C が URI を割り当てた年を示す。それは,使用される XSL の版を示

してはいない。

XSL プロセサは,XML 名前空間([XML Names 1.0]又は[XML Names 1.1])機構を使用して,この名前空

間の要素及び属性を認識しなければならない。XSL 名前空間の要素は,ソース文書においてではなく,ス

タイルシートだけにおいて認識される。実装者は,追加の要素又は属性を用いて,XSL 名前空間を拡張し

てはならない。むしろ,どのような拡張も別の名前空間の中になければならない。拡張の展開名は,非 null

の名前空間 URI をもたなければならない。

この規格では,XSL 名前空間の要素を参照するために,接頭辞 fo:を使用する。しかし,XSL スタイル

シートは,接頭辞を XSL 名前空間の URI に結合する名前空間宣言が存在していれば,どのような接頭辞

も自由に使える。

XSL 名前空間の要素は,属性の展開名(expanded-name)が非 null の名前空間 URI をもつとき,XSL 名

前空間にはないどのような属性をもってもよい。それらの属性が存在するとき,この規格で定義される

XSL の要素及び関数の振る舞いを変更してはならない。これは,XSL によって指定された制約を FO が満

たしている場合にだけ,拡張属性が FO の処理を変える可能性があることを意味する。そのため,XSL プ

ロセサは,それらの属性を常に無視でき,名前空間 URI を認識しない場合には,誤りを与えることなしに

それらの属性を無視しなければならない。それらの属性は,例えば,一意識別子,最適化ヒント又は文書

化を提供できる。

XSL 名前空間の要素が,この規格において定義される属性ではない null 名前空間 URI をもつ拡張名のつ

いた属性(例えば,接頭辞のない名前をもつ属性)をもつことは,誤りである。

注記 XSL の要素,属性及び関数の名前に使用する規約を,次に示す。

−  名前は,すべて小文字とし,

−  ハイフンは語を区切るために用い,


11

X 4179

:2010

−  ドットは複雑なデータ型の構成要素のための名前を区切るのに用い,

−  短縮形は XML 又は HTML といった関係する言語の構文において,既にそれが出現してい

る場合に限り用いられる。

フォーマット化への導入 

この箇条 では,フォーマット化(formatting)の一般的な処理を示すことが目標である。それは,領域

モデル,フォーマット化オブジェクト記述及び特性を十分に読むことができ,洗練化(refinement)の処理

を理解することである。

フォーマット化は,XSL 変換の結果を読み手又は聞き手のために知覚可能な形式に変える処理である。

この処理は,幾つかの段階を含み,逐次的でない方法に依存する場合もある。ここでのフォーマット化の

モデルは,領域木(area tree)の構築である。この領域木は,順序付けされた木であって,間隔制約及び他

のレンダリング情報を具体化する情報とともに,文書中のすべてのグリフ,形状及び画像の配置に関する

幾何的情報を含む。この情報は,特色(trait)という項目のもとで参照される。ここで,特色とは,フォ

ーマット化オブジェクトに対する特性,XML 要素に対する属性などのように,領域に対するものである。

箇条 は,領域木を記述し,スタック領域上の省略時の配置制約を定義する。しかし,このモデルは,結

果として生じる知覚可能な形式が暗に示される制約に従う限り,抽象モデルであって,フォーマッタにお

いてはこの方法で実際に実装される必要はない。制約のすべてを満たすことができない場合,矛盾が生じ

るかもしれない。その場合には,どの制約を緩和し,どの順序で他の制約を満たすのが望ましいかは,実

装定義である。

フォーマット化オブジェクト(formatting objects)は,フォーマット化オブジェクト木の要素であって,

その名前は XSL 名前空間に基づく。フォーマット化オブジェクトは,その要素名が識別するフォーマット

化オブジェクトのクラスに属する。フォーマット化オブジェクトの各クラスのフォーマット化の振る舞い

は,そのクラスのフォーマット化オブジェクトがどの領域を生成するか,領域の特色がどのように設定さ

れるか,及び他のフォーマット化オブジェクトが生成する領域に関連して,領域がどのように階層的に構

造化されるかによって記述される。箇条 及び箇条 は,フォーマット化オブジェクト及びその特性を記

述する。

フ ォー マット化オブ ジ ェ ク トに は ,ブ ロ ッ ク レ ベ ル( block-level) のもの もあ れば ,行内 レベ ル

(inline-level)のものもある。これは,それらフォーマット化オブジェクトが生成する領域の型を参照し

ており,それらの型は,その省略時の配置メソッドを参照している。

(グリフ領域などの)行内領域は,行

の中に集められ,それらをスタックする方向は行内進行方向(inline-progression-direction)である。行は,

一種のブロック領域であって,行内進行方向に垂直な方向にスタックされる。この方向をブロック進行方

向(block-progression-direction)と呼ぶ。これらの領域の型及び方向に関する詳細な記述は,箇条 を参照

する。

西欧の表記システムでは,ブロック進行方向は“下向き”であって,行内進行方向は“右向き”になっ

ている。この規格は,他の表記システムも扱い,

“垂直”及び“水平”といった絶対指示子を使用する代わ

りに,

“ブロック”及び“行内”という用語を導入する。同様に,この規格は,

“上”

“下”

“左”及び“右”

といった絶対指定方向に追加又は代わりとして,適切なところで相対指定方向(ブロック進行方向におけ

る“前”及び“後”,行内進行方向における“開始”,“終了”など)を与えようとしている。これらは,

“writing-mode”特性の値に応じて解釈される。

フォーマット化のこのモデルの中心となるのは,洗練化である。これは計算処理であって,XML 結果木


12

X 4179

:2010

   

の属性値に基づく特性の指定を完成させる。XML 結果木及びフォーマット化オブジェクト木は,極めて類

似した構造をもつが,それらを別の概念的実体として考えるのが有効である。洗練化は,次を含む。

−  特性の多様な継承値を伝ぱ(播)する。これは,暗黙的に“inherit”という属性値をもつものに対し

て行われる。

−  特性値指定における式を実際の値に評価する。それは,それから特性の値を決定するために使用され

る。

−  相対的な数値を絶対的な数値に変換する。

−  一つより多くの属性から幾つかの複合特性を構築する。

これらの操作の幾つか(特に式を評価する操作)は,領域木の知識に依存する。そのため,洗練化は必

ずしも直接的で順次処理的な手続ではないが,フォーマッタにおいて,処理を伴う先読み,後戻り又は他

の処理との制御継ぎを含んでよい。洗練化は,箇条 において更に詳しく記述される。

要約すると,フォーマット化は,

(要素ノード及びその属性を含む。

)XML 結果木に含まれる情報に基づ

いた制約を満たす(領域及びその特色を含む。

)領域木を構築することによって進行する。概念上は,

(フ

ォーマット化オブジェクト及びその特性を含む。

フォーマット化オブジェクト木及び洗練化を構築する中

間段階が存在する。これらの段階は,領域木の構築の間にインタリーブした方式で行われる。

3.1 

概念的手続 

この 3.1 は,フォーマット化がどのように動作可能なのかの概念的記述を含む。この概念上の手続は,

結果が暗黙の制約に従う限り,どのような特定アルゴリズム又はデータ構造も要求しない。

手続は,フォーマット化オブジェクトを処理することによって動作する。処理されている間,各オブジ

ェクトは,他のオブジェクトでの処理を開始してよい。オブジェクトは階層的に構造化されるが,処理は

そうではない。与えられたオブジェクトの処理は,いずれかというと,制御を他のプロセスに渡してよい

が,制御を渡した箇所で,後に再びその制御を取り上げてもよいコルーチンに類似している。手続は,fo:root

フォーマット化オブジェクトの処理を始めることによって開始する。

特に指定がなければ,フォーマット化オブジェクトを処理することは,領域を生成し,その領域を領域

木の中に配置するためにその親に返す。コルーチンと同様に,それは,制御が与えられると動き出し,

(存

在する場合には)それ自体の子又はそれら子の部分集合のフォーマット化を継続する。フォーマット化オ

ブジェクトは,領域木に既にある領域の特色に基づいて,パラメタをその子に提供する。この領域木は,

フォーマット化オブジェクト又はその先祖が生成する領域を含む可能性がある。次にフォーマット化オブ

ジェクトは,そのフォーマット化オブジェクトの子が返す領域を処理する。それは,このような領域をそ

の親に対して単に返すことがある(それ自体が領域を生成しない場合には,常にこれを行う。

。そうする

代わりに,

フォーマット化オブジェクトのセマンティクスに従って領域木の中の領域を整えることがある。

これは,その幾何的位置の変更を引き起こしてもよい。フォーマット化オブジェクトが処理を終了するの

は,そのすべての子が(開始していた場合には)処理を終了したときとし,領域を生成して終了する。

フォーマット化オブジェクトの中には,それ自体で領域を生成しないものもある。代わりに,これらの

フォーマット化オブジェクトは,それらの子が返した領域を単に返す。その一方で,フォーマット化オブ

ジェクトは,それ自体の子をフォーマット化している間に見つけられた情報に基づいて,領域を生成し(及

び返し)続けてよい。例えば,fo:page-sequence フォーマット化オブジェクトは,それが未処理の子孫をも

つ流し込みを含む限り,ページの生成を続ける。

fo:root フォーマット化オブジェクトに対して返される領域は,ページ表示域領域(page-viewport-area)


13

X 4179

:2010

であって,領域木のルートの子として,何の幾何的な関係もなく,それらが返される順序で単に配置され

る。

一般的な規則として,領域木の順序は,フォーマット化オブジェクトの順序に対応する。すなわち,一

つのフォーマット化オブジェクトが,フォーマット化オブジェクト木の深さ優先たどり(depth-first

traversal)において,もう一つのフォーマット化オブジェクトに優先し,互いに包含関係にない場合,特に

指定がなければ,領域木の深さ優先たどりにおいて,第 1 優先によって生成される領域のすべては,第 2

優先によって生成される領域のすべてに優先する。この規則の典型的な例外には,側浮動体(side float)

前浮動体(before float)及び脚注に類似するものが考えられる。

手続の最後においては,領域及びその特色は構築済みであって,それらは,関連するフォーマット化オ

ブジェクトの定義と箇条 とにおいて記述された制約を満たすことが要求される。特に,領域のサイズ及

び位置は,フォーマット化オブジェクトの定義が別に指示しない場合は,領域モデルにおいて記述された

配置及び間隔の制約に従う。

フォーマット化オブジェクトの定義,特性記述及び領域モデルは,アルゴリズムではない。そのため,

フォーマット化オブジェクトのセマンティクスは,

文字を集めて語にするとき,

語を行内に配置するとき,

コンテナ内に行を移すときなどに,行分割アルゴリズムがどのように動作しなければならないかを指定し

ない。むしろこの制約は,フォーマッタがこれらの実行を完了したことを想定して,その結果が満たすこ

とになる制約を記述する。そのため,この制約は,実装がその情報をいつ利用するかを指定しない。この

制約は,処理が終了した後に,何が真であるかを指定するだけである。この制約が適用されるフォーマッ

ト化オブジェクトをフォーマットするときを除いて,実際の実装は,一度に幾つかの制約を利用すること

がある。例えば,fo:character の“hyphenate”特性によって与えられた制約は,通常,行構築の間,fo:character

を処理しながら使用されるであろう。他の例は,保持及び分割の制約を含んでいる。

領域モデル 

XSL では,フォーマッタへの入力又は指定として動作するフォーマット化オブジェクトの木を生成する。

フォーマッタは,フォーマット結果を構成する領域の階層的な配列を生成する。この箇条 では,これら

の領域の一般モデルを定義し,どのようにそれらが相互作用するかを定義する。その目的は,フォーマッ

ト化オブジェクトのセマンティクスを記述するのに使用される抽象的枠組みを表示することである。それ

は,特定のアルゴリズムを規定することとしてではなく,適合する実装のための一連の制約を記述するこ

ととしてみるのがよい。

4.1 

導入 

フォーマッタは,領域木という順序付けされた木を生成する。この領域木は,出力メディアの幾何構造

を記述する。子(child),兄弟(sibling),親(parent),子孫(descendant)及び先祖(ancestor)という用

語は,この木構造を表す。木にはルートノード(root node)が存在する。

ルート以外の各領域木ノードは,領域(area)と呼ばれ,出力メディアの長方形部分に関連付けられる。

領域は,フォーマット化オブジェクトではない。一つのフォーマット化オブジェクトが,0 個以上の長方

形領域を生成する。通常,各領域は,フォーマット化オブジェクト木の単独のオブジェクトによって生成

される。

注記  フォーマット化オブジェクト木の複数の葉ノードが組み合わされて,単一の領域を生成する場

合が,この規則の唯一の例外である。例えば,一連の複数の文字が単一のリガチャグリフを生

成する場合である。これらのいずれの場合にも,font-family,font-size などの関連特性は,すべ


14

X 4179

:2010

   

ての生成フォーマット化オブジェクトについて同一でなければならない(4.7.2 参照)

領域は,その部分にその子領域が割り当てられる内容長方形(content-rectangle)をもち,任意選択のパ

ディング(padding)及び境界(border)をもつ。

図 4.1 は,これらの部分が互いにどのように関連するか

を示す。境界の外部境界を境界長方形(border-rectangle)と呼び,パディングの外部境界をパディング長

方形(padding-rectangle)と呼ぶ。

図 4.1−領域の要素 

要素が属性(attribute)をもち,フォーマット化オブジェクトが特性(property)をもつように,各領域

は,特色(trait)の集合,及び名前と値との対応付けをもつ。個々の特色は,領域のレンダリング若しく

はフォーマット化の結果に対する制約の定義のいずれか,又はその両方のために使用される。フォーマッ

ト化の目的のため又は制約の定義のために厳密に使用される特色は,フォーマット化特色(formatting trait)

と呼ばれることがあり,レンダリングのために使用される特色は,レンダリング特色(rendering trait)と

呼ばれることがある。同じ名前又は対応する名前の特性から値が複写されたか又は導入された特色は,

属書 及び  箇条 に列挙される。他の特色は,後で列挙する。

注記  特色は,洗練化の処理中,フォーマット化オブジェクトとも関連付けられる。フォーマット化

中に割り当てられる特色もあり,洗練化が終わった時点で存在している特色もある。

領域を生成するフォーマット化オブジェクトの各種別のセマンティクスは,それが生成する領域及び領

域木階層内のその位置によって与えられる。様々な種別のフォーマット化オブジェクト間の相互作用によ

って,これが更に変えられてもよい。フォーマット化オブジェクトの特性は,どんな領域が生成されるか

を決定し,フォーマット化オブジェクト内容がそれらの中にどのように分配されるかを決定する。例え

ば,ハイフン分割禁止の単語では,その単語を表すグリフが二つの別の行領域上の領域に分配されたりは

しない。

領域の特色は,次のいずれかである。


15

X 4179

:2010

直接派生  直接派生特色(directly-derived trait)の値は,生成するフォーマット化オブジェクトに関す

る同一又は対応する名前の特性の計算値である。

間接派生  間接派生特色(indirectly-derived trait)の値は,フォーマット化オブジェクトを生成する一

つ以上の特性の計算値,この領域又は他の相互作用する領域に関する他の特色(先祖,親,兄弟及び

/又は子)

,及び/又はフォーマッタが構築する一つ以上の値の計算の結果である。計算式は,フォー

マット化オブジェクトの種別に依存してよい。

この記述は,結果木のフォーマット化オブジェクトのすべての特性に関して,洗練化された値が計算さ

れたことを前提とする。すなわち,箇条 で記述するとおり,すべての相対値及び対応値が計算され,継

承可能な値が伝ぱ(播)されたことを前提とする。これによって,継承の処理は,一度記述されれば,こ

の記述の計算値に関する情報を繰り返す必要がなくなる。

間接派生特色は,次である。

block-progression-direction

inline-progression-direction

shift-direction

glyph-orientation

is-reference-area

is-viewport-area

left-position

right-position

top-position

bottom-position

left-offset

top-offset

is-first

is-last

alignment-point

area-class

start-intrusion-adjustment

end-intrusion-adjustment

generated-by

returned-by

folio-number

blink

underline-score

overline-score

through-score

underline-score-color

overline-score-color

through-score-color


16

X 4179

:2010

   

alignment-baseline

baseline-shift

nominal-font

dominant-baseline-identifier

actual-baseline-table

script

4.2 

長方形領域 

4.2.1 

領域型 

領域には,ブロック領域(block-area)及び行内領域(inline-area)という二つの種別がある。これらは,

フォーマッタが通常それらをどのようにスタックするかによって異なる。領域は,それを生成するフォー

マット化オブジェクトが決定するとおり,ブロック領域の子又は行内領域の子をもつことができる。しか

し,与えられる領域の子はすべて,一つの種別でなければならない。ブロック領域及び行内領域は,通常,

スタックされるが,明示的に位置決めすることが可能な領域もある。

行領域(line-area)は,特別な種類のブロック領域であり,その子はすべて行内領域である。グリフ領域

(glyph-area)は,特別な種類の行内領域であり,子領域をもたず,その内容としてグリフ像を一つだけも

つ。

典型的な領域の例を,次に示す。

 fo:block  フォーマット化オブジェクトを用いてレンダリングされる段落(これは,ブロック領域を生

成する。

−  fo:character  フォーマット化オブジェクトを用いてレンダリングされる文字[これは,行内領域(実

際にはグリフ領域)を生成する。

4.2.2 

共通の特色 

いずれの領域にも関連付けられる方向が二つ存在する。これらの方向は,生成フォーマット化オブジェ

ク ト の “ writing-mode ” 特 性 及 び “ reference-orientation ” 特 性 か ら 派 生 す る 。 ブ ロ ッ ク 進 行 方 向

(block-progression-direction)は,領域のブロック領域子孫をスタック化するための方向である。行内進行

方向(inline-progression-direction)は,領域の行内領域子孫をスタック化するための方向である。別の特色

であるシフト方向(shift-direction)は,行内領域に存在し,ベースライン移動が適用される方向を表す。

グリフ方位(glyph-orientation)も,レンダリング結果のグリフ像の方位を定義する。

領域に関する参照方位(reference-orientation)が 0 である場合,内容の上辺,下辺,左辺及び右辺は,領

域の親のそれらに並行であり,それらと一貫性をもつ。それ以外の場合,辺は 7.21.3 で記述されるとおり,

領域の親のそれらから回転する。行内進行方向及びブロック進行方向は,7.29.7 で記述されるとおり,こ

れらの辺の位置によって決定される。

論理値特色である is-reference-area は,

領域が字下げを指定するための座標系をもつかどうかを決定する。

この特色が true である領域を,参照領域(reference-area)と呼ぶ。参照領域だけが,親とは異なるブロッ

ク進行方向をもってよい。参照領域は,ブロック領域又は行内領域のいずれかであってよい。固有のフォ

ーマット化オブジェクトだけが参照領域を生成する。

論理値特色である is-viewport-area は,その子孫領域を見ることができたり,切取り又はスクロールされ

た素材を見せるのに適した開口を確立するかどうかを決定する。この特色が true である領域を,表示域領

域(viewport-area)と呼ぶ。表示域領域も,また,is-reference-area 特色の値に true をもつ。

共通の構造は,表示域と参照とのペア(viewport/reference pair)である。これは,表示域領域 及びブロ


17

X 4179

:2010

ック領域参照領域 である。ここで,は の唯一の子であり,の内容長方形の開始辺(start-edge)及

び終了辺(end-edge)は,の内容長方形の開始辺及び終了辺に並行になる。

各領域は,特色 top-position,bottom-position,left-position 及び right-position をもち,これらは,内容長

方形の辺から,最も近い先祖の参照領域(又は,絶対位置が fixed であるフォーマット化オブジェクトの

子孫が生成する領域の場合は,ページ表示域領域)の類似した名前をもつ辺までの距離を表示する。

left-offset 及び top-offset は,相対位置付けされた領域がレンダリングのために移動される量を決定する。

これらの特色は,フォーマット化の処理中にその値を受け取り,絶対配置付けした領域の場合には,洗練

化中にその値を受け取る。

領域のブロック進行寸法(block-progression-dimension)及び行内進行寸法(inline-progression-dimension)

は,二つの相対方向のそれぞれの領域の内容長方形の広がりを表す。

他の特色を次に示す。

− is-first 特色及び is-last 特色。これらは論理値特色であって,与えられるフォーマット化オブジェクト

によって生成され返される領域の順序を示す(6.1.1 参照)

。is-first は,フォーマット化オブジェクト

によって生成され返される最初の領域(又は単一の領域)について true であり,is-last は,最後の領

域(又は単一の領域)について true である。

−  境界長方形の外側の間隔の量。つまり,space-before,space-after,space-start 及び space-end。ただし,

これらには,領域のあるクラスにおいて 0 であることが必す(須)となるものもある。

注記  “前”,“後”,“開始”及び“終了”は,相対方向を表し,後で定義される。

−  パディングの 4 辺それぞれの厚さ。

つまり,

padding-before,padding-after,padding-start 及び padding-end。

−  境界の 4 辺それぞれのスタイル,厚さ及び色。つまり,border-before など。

−  領域の背景レンダリング。つまり,background-color,background-image 及びその他の背景特色。

−  領域の生成フォーマットオブジェクトのフォント特性及び文字子孫によって決定される,領域の定格

フォント(nominal-font)

5.5.7 参照)

特に指定がない場合は,フォーマット化オブジェクトの特色は,その生成される各領域に存在し,同一

の値をもつ。4.7.2 及び 4.9.4 を参照する。id 特色はフォーマット化オブジェクトに対して計算されるが,

領域には存在しない。

4.2.3 

幾何的定義 

上述のとおり,内容長方形(content-rectangle)とは,境界がパディングの内部にある長方形であり,子

孫領域の位置に関する制約の記述に使用される。子孫グリフ又は他の領域からのマークは,内容長方形の

外側に現れることもある。

領域の割付け長方形(allocation-rectangle)はこれに関連している。この長方形は,親領域内にある領域

の位置に関する制約の記述に使用される。行内領域の場合,これは正規割付け長方形又は大割付け長方形

のいずれかとなる。正規割付け長方形(normal-allocation-rectangle)は,ブロック進行方向では内容長方形

に拡張し,行内進行方向では境界長方形に拡張する。大割付け長方形(large-allocation-rectangle)は境界長

方形である。特に指定がない場合は,領域の割付け長方形は正規割付け長方形である。


18

X 4179

:2010

   

図 4.2−行内領域の正規割付け長方形

図 4.3−行内領域の大割付け長方形

ブロック領域では,割付け長方形は,ブロック進行方向では境界長方形に拡張し,行内進行方向では,

終了字下げ(end-indent)と同じだけ,反対方向では開始字下げ(start-indent)と同じだけ,内容長方形の

外側に拡張する。

注記  行内進行方向では,ブロック領域の境界長方形の外側に間隔があっても配置制約に影響するこ

とはない。これは,CSS ボックスモデルとの互換性の促進を意図したものである。


19

X 4179

:2010

図 4.4−ブロック領域の割付け長方形及び内容長方形 

長方形の各辺の指定を,次に示す。

−  前辺(before-edge)は,ブロック進行方向で最初に現れる辺であり,進行方向に対して垂直である。

−  後辺(after-edge)は,前辺の反対の辺である。

−  開始辺(start-edge)は,行内進行方向で最初に現れる辺であり,進行方向に対して垂直である。

−  終了辺(end-edge)は,開始辺の反対の辺である。

この定義の目的のために,領域の内容長方形は,その領域の行内進行方向及びブロック進行方向を使用

する。しかし,境界長方形,パディング長方形,及び割付け長方形は,親領域の方向を使用する。そのた

め,内容長方形に指定された各辺が,パディング長方形,境界長方形,及び割付け長方形上の同一の名前

の各辺に対応しないこともある。異なる表記方法(writing-mode)又は参照方位(reference-orientation)で

組み込まれた領域の場合,これは重要である。

図 4.5 は,表記方法が混在している場合の様々な辺の名前の間の対応を示している。

 


20

X 4179

:2010

   

図 4.5−様々な表記方法をもつ組込み領域 

各行内領域には,割付け長方形の開始辺上に,フォーマッタが決定した配置点(alignment-point)が存在

する。グリフ領域では,この点は配置ベースライン上のグリフの開始辺に存在する(4.2.4 参照)

。これは

スクリプト依存であり,グリフの形状を記述するデータに使用する座標点(0,0)に必ずしも一致しない。

4.2.4 

木の順序付け 

領域木では,与えられる親をもつ領域の集合は順序付けされる。最初の(initial)

,最後の(final)

,先行

する(preceding)

,後続する(following)といった用語はこの順序付けを表す。

順序付けされた木はどれでも,

この兄弟関係の順序付けが木全体の順序付けに拡張するが,

その方法は,

少なくとも二つ存在する。

−  木の昇順たどり(pre-order traversal order)を実行した場合,各ノードの子はそのノードに後続するが,

ノード又はその先祖の後続する兄弟のいずれにも優先する。この場合,各ノードの子の順序が互いに

関連して変更されることはない。

−  木の降順たどり(post-order traversal order)を実行した場合,各ノードの子はそのノードに優先するが,

そのノード又は先祖の先行する兄弟のいずれにも後続する。

“先行する”及び“後続する”が兄弟以外に適用される場合は,使用される拡張順序に依存することに

なり,それを指定しなければならない。しかし,これら与えられる順序のうち,いずれかでは,木の葉(子

のないノード)は明確に順序付けされる。

4.2.5 

スタック化制約 

ここでは,領域を含むブロックスタック化制約(block-stacking constraint)及び行内スタック化制約


21

X 4179

:2010

(inline-stacking constraint)の概念を定義する。これらは,順序付き関係として定義される。すなわち,A

と とにスタック化制約が存在する場合,必ずしも,と とにスタック化制約が存在するという意味で

はない。これらの定義は本来再帰的であり,同一の定義のうち,より単純なケースに依存することもある。

これは循環ではなく,むしろ再帰の結果である。また,これらの定義は,間に間隔だけがある領域のペア

(木でのレベルが違っていてもよい。

)を識別することを意図している。

area-class 特色は列挙値であり,他の領域とともに連続してスタックされた領域には,xsl-normal が指定

される。この特色の指定が xsl-normal である領域を正規領域(normal area)という。行外ページレベル領

域(page-level-out-of-line area)の領域クラスは,xsl-footnote,xsl-before-float,又は xsl-fixed である。すな

わち,これらの領域の配置は,その生成フォーマット化オブジェクトの fo:page-sequence の先祖によって制

御される。

行外参照レベル領域

(reference-level-out-of-line area)

の領域クラスは,

xsl-side-float 又は xsl-absolute

である。これらの領域の配置は,関連する参照領域を生成するフォーマット化オブジェクトによって制御

される。アンカ領域(anchor area)の領域クラスは,xsl-anchor である。これらの領域の配置は任意であり,

スタック化に影響しない。領域クラスが xsl-normal,xsl-footnote,又は xsl-before-float のいずれかと同じ場

合は,その領域はスタック可能(stackable)であると定義され,領域が適正にスタックされることを示し

ている。

ブロックスタック化制約 

P

がブロック領域である場合に,が参照領域であるか,又は の border-before-width 若しくは

padding-before-width が 0 以外のときは,に対する先行フェンス(fence preceding)が存在する。同様に,

P

が参照領域であるか,又は の border-after-width 若しくは padding-after-width が 0 以外のときは,に対

する後続フェンス(fence following)が存在する。

A

及び がスタック化可能な領域であり,が間隔指定子(space-specifier)のシーケンスである場合(4.3

参照)

,次の条件のいずれかが適用される場合は,及び にはブロックスタック化制約 が存在すると定

義される。

1

B

がブロック領域であり,の最初の正規の子であり,かつ,が の space-before から構成されるシ

ーケンスである。

2

A

がブロック領域であり,の最後の正規の子であり,かつ,が の space-after から構成されるシー

ケンスである。

3

A

も もブロック領域であり,かつ,次のいずれかである。

a

B

が の次にくるスタック可能な兄弟領域であり,かつ,が の space-after 及び の space-before

から構成されるシーケンスである。

b

B

はブロック領域 の最初の正規の子であるが,は行領域ではなく,先行フェンス が存在せず,

A

及び にブロックスタック化制約 S'が存在し,かつ,は の space-before が後続する S'から構成

される。

c

A

はブロック領域 の最後の正規の子であり,は行領域ではなく,後続フェンス が存在せず,

P

及び にはブロックスタック化制約 S''が存在し,かつ,が S''が後続する の space-after から構

成される。

d

A

は,ブロック領域 のあるブロックスタック化制約 S'をもち,は,のあるブロックスタック

化制約 S''をもつ。は,空であり(つまり,それは,0 の境界,パディング及びブロック進行寸法

をもち,正規の子をもたない。

は,S''を後に従えた S'からなる。


22

X 4179

:2010

   

注記  上の定義のスタック可能という語を 2 回使用したことによって,ブロックスタック化制約は,

領域クラス xsl-before-float 又は xsl-footnote の領域間に適用可能となっている。

図 4.6−ブロックスタックでの隣接辺

A

及び にブロックスタック化制約が存在する場合,及び の隣接辺(adjacent edges)は順序付けさ

れたペアであり,再帰的に次として定義される。

−  ケース 1 では,の内容長方形の前辺,及び の割付け長方形の前辺。

−  ケース 2 では,の内容長方形の後辺,及び の割付け長方形の後辺。

−  ケース 3a では,の割付け長方形の後辺,及び の割付け長方形の前辺。

−  ケース 3b では,と との隣接辺対の 1 番目の辺,及び の割付け長方形の前辺。

−  ケース 3c では,の割付け長方形の後辺,並びに 及び の隣接辺対の 2 番目の辺。

−  ケース 3d では,と との隣接辺対の 1 番目の辺,及び 及び の隣接辺対の 2 番目の辺。

図 4.7 では,各ノードはブロック領域を表す。パディング幅及び境界幅はすべて 0 であり,領域はいず

れも参照領域ではないと仮定する。この場合,及び にはブロックスタック化制約が存在し,及び B

A

及び C及び C及び D及び B及び E及び E,並びに 及び にもブロックスタック化

制約が存在する。これらは,ブロックスタック化制約が存在する図で考えられるすべてのペアある。

padding-after が 0 以外のときは,及び にはブロックスタック化制約が存在しないことになる。ただし,

B

及び のブロックスタック化制約は継続する。

 


23

X 4179

:2010

図 4.7−ブロックスタック化制約の例

行内スタック化制約 

ここでは,先行フェンス及び後続フェンスの概念とともに,二領域間の行内スタック化制約を再帰的に

定義する。ここでいう二領域とは,二つの行内領域か,又は一つの行内領域と一つの行領域とのいずれか

を指す。これらの定義は,互いに絡みあっている。これはブロックスタック化制約の定義に一致している

が,更に複雑なのは,行内領域間のスタック化制約でも,行内進行方向の反対方向へのスタックが可能と

なる点である。参照領域ではないブロック領域が親とは異なるブロック進行方向をもたないこともあるた

め,これはブロックスタック化制約の問題ではない。

P

及び に行内スタック化制約が存在する場合に,が参照領域であるか,又は 及び の最初の隣接

辺の境界幅又はパディング幅が 0 以外のときは,には先行フェンス が存在する。同様に,が参照領

域であるか,又は 及び の 2 番目の隣接辺の境界幅又はパディング幅が 0 以外のときは,には後続フ

ェンス が存在する。

A

及び が正規領域であり,が間隔指定子のシーケンスである場合に,次の条件のすべてに該当すれ

ば,及び には行内スタック化制約 が存在するものと定義される。

1

A

が行内領域又は行領域であり,が の最初の正規の子である行内領域であり,かつ,が 

space-start から構成されたシーケンスである。

2

B

が行内領域又は行領域であり,が の最後の正規の子である行内領域であり,かつ,が 

space-end から構成されたシーケンスである。

3

A

及び がそれぞれ行内領域又は行領域であり,次のいずれかに適合する。

a

A

も も行内領域であり,が の次にくる正規の兄弟領域であり,かつ,が の space-end 及び

B

の space-start から構成されるシーケンスである。

b

B

が行内領域 の最初の正規の子である行内領域であり,には後続フェンス が存在せず,

び に行内スタック化制約 S'が存在する。さらに,の行内進行方向が 及び の最も近い共通の

先祖の行内進行方向と同じであり,かつ,は,の space-start が後続する S'から構成される。

c

A

が行内領域 の最後の正規の子である行内領域であり,には先行フェンス が存在せず,

び には行内スタック化制約 S''が存在する。さらに,の行内進行方向が 及び の最も近い共通

の先祖の行内進行方向と同じであり,かつ,が S''が後続する の space-end  から構成される。

d

B

は行内領域 の最後の正規の子である行内領域であり,には後続フェンス がなく,及び P

には行内スタック化制約 S'が存在する。さらに,の行内進行方向が 及び の最も近い共通の先

祖領域の行内進行方向とは反対であり,かつ,が の space-end が後続する S'から構成される。


24

X 4179

:2010

   

e

A

が行内領域 の最初の正規の子である行内領域であり,には先行フェンス が存在せず,

び が行内スタック化制約 S''が存在する。さらに,の行内進行方向が 及び の最も近い共通の

先祖領域の行内進行方向の反対であり,かつ,が S''が後続する の space-start から構成される。

図 4.8−行内スタックをもつ隣接辺(1 

図 4.9−行内スタックをもつ隣接辺(2 

図 4.10−行内スタックをもつ隣接辺(3a 

図 4.11−行内スタックをもつ隣接辺(3b 


25

X 4179

:2010

図 4.12−行内スタックをもつ隣接辺(3c 

図 4.13−行内スタックをもつ隣接辺(3d,英語とアラビア語との混植)

図 4.14−行内スタックをもつ隣接辺(3e,英語とアラビア語との混植)

A

及び に行内スタック化制約が存在する場合,及び の隣接辺は,次に定義する順序付けされたペ

アである。

−  ケース 1 では,の内容長方形の開始辺と の割付け長方形の開始辺とが対となる。

−  ケース 2 では,の内容長方形の終了辺と の割付け長方形の終了辺とが対となる。

−  ケース 3a では,の割付け長方形の終了辺と の割付け長方形の開始辺とが対となる。


26

X 4179

:2010

   

−  ケース 3b では,及び の最初の隣接辺と の割付け長方形の開始辺とが対となる。

−  ケース 3c では,の割付け長方形の終了辺と 及び の 2 番目の隣接辺とが対となる。

−  ケース 3d では,及び の最初の隣接辺と の割付け長方形の終了辺とが対となる。

−  ケース 3e では,の割付け長方形の開始辺と 及び の 2 番目の隣接辺とが対となる。

二つの領域にブロックスタック化制約又は行内スタック化制約が存在する場合,この二つの領域は隣接

する。定義に従うと,同じ型の領域(行内又はブロック)は,最も近い共通先祖を含まないところまでさ

かのぼって,それらの共通先祖以外の先祖もすべて同じ型である場合に限り,隣接することになる。その

ため,例えば,異なる行領域に存在する二つの行内領域が隣接することはない。

A

が の子孫であり,及び にブロックスタック化制約又は行内スタック化制約のいずれかが存在す

る場合,領域 は領域 を開始し,の先祖である のどんな子孫にも(ブロックスタック化制約の場合

における)space-before か,計算された最小,最大又は最適な値が非 0 である(行内スタック化制約の場合

における)space-start が用意される。この場合,及び の 2 番目の隣接辺は の前辺(leading edge)で

あると定義される。前辺に適用される間隔指定子も を開始すると定義される。

同様に,が の子孫であり,及び にブロックスタック化制約又は行内スタック化制約のいずれか

が存在する場合,領域 は領域 を終了し,の先祖である のどんな子孫にも(ブロックスタック化制

約の場合における)space-before か,計算された最小,最大又は最適な値が非 0 である(行内スタック化制

約の場合における)space-start が用意される。この場合,及び の最初の隣接辺は,の後辺(trailing edge)

であると定義される。後辺に適用される間隔指定子も を終了すると定義される。

4.2.6 

フォントベースライン表 

各スクリプトには,そのスクリプトからグリフを配置する場合に優先される“ベースライン”が存在す

る。欧米のスクリプトは,通常“アルファベット”のベースラインを使用する。このベースラインは大文

字の下部に触れるか又はその近くに存在する。さらに,異なるスクリプトから埋込みグリフを配置する方

法には,フォントごとに優先的な方法が存在する。例えば,欧米のフォントでは,埋込みの表意文字のグ

リフ又はインド文字のグリフを配置する場合,別のベースラインが存在する。

ブロック領域及び行内領域には,それぞれ dominant-baseline-identifier 特色が存在する。この特色の値は

ベースライン識別子であり,その領域の行内領域の子孫に適用される配置の型に対応している。さらに,

各行内領域には配置ベースラインが存在し,その親に対する領域の配置方法を指定する。これらの特色に

ついては,7.9.1 に示されている。

各フォントに対して,実ベースライン表(actual-baseline-table)がこれらの識別子を領域の開始辺上の点

に対応付けられる。用語の乱用になるが,主要ベースライン識別子に対応する点を通り,行内進行方向と

同じ方向との直線を主要ベースライン(dominant baseline)と呼ぶ。

4.3 

間隔及び条件付け 

間隔指定子は複合データ型であり,最小値,最適値,最大値,条件付き及び優先順位という要素から構

成されている。

最小値(minimum),最適値(optimum)

,及び最大値(maximum)は長さに適用され,距離に関する制

約を定義する場合に使用できる。言い換えれば,距離はむしろ最適値が望ましく,どのような場合であっ

ても,最小値より小さい値の適用,又は最大値より大きい値の適用は適切ではない。これらの値はすべて

負であってもよい。例えば,これらの値が負のときは,領域が重なり合うことがあるが,いずれの場合も,

最小値は最適値以下であり,最適値は最大値以下であることが望ましい。


27

X 4179

:2010

条件付き(conditionality)は列挙値であり,間隔指定子が参照領域又は行領域の始まり又は終わりに影

響するかどうかを制御する。候補となる値は retain 及び discard である。条件間隔指定子(conditional

space-specifier)は,値が discard であるものである。

優先順位(precedence)の値は,整数か又は特別なトークン force のいずれかである。強制間隔指定子

(forcing space-specifier)は,値が force であるものである。

シーケンスに現れる間隔指定子は,互いに影響しあってもよい。間隔指定子のシーケンスが強制する制

約は,間隔指定子ごとに,条件付け及び優先順位に従って,関連する解決済み間隔指定子(resolved

space-specifier)を計算することによって算出される。これは,後に示す間隔解決規則で記述する。

解決済み間隔指定子のシーケンスが距離に強制する制約は,加算的なものである。すなわち,距離は,

解決済み最小値の和よりも大きく,解決済み最大値の和よりも小さくなる。

4.3.1 

間隔解決規則 

与えられる間隔指定子 の解決済み間隔指定子の計算の方法を示す。ここに,シーケンスの要素として

間隔指定子 を含むブロックスタック化制約 S''又は最大の行内スタック化制約を考える[S''は,間隔指定

子のシーケンス。4.2.5 を参照する。

S'を,S''の部分シーケンスであると定義する。

−  が行領域の space-before 又は space-after のときは,S'は,を含む S''の最大部分シーケンスであるの

で,S'におけるすべての間隔指定子は,行領域の特色である。

−  が行領域でないブロック領域の space-before 又は space-after のときは,S'は,を含む S''の最大部分

シーケンスであるので,S'におけるすべての間隔指定子は,行領域でないブロック領域の特色である。

−  が行領域の space-start 又は space-end のときは,S'は,S''のすべてである。

S

の解決済み間隔指定子は,そのシーケンスに関して計算される条件付きではない強制間隔指定子であ

る。 

a)  S'

内の間隔指定子がいずれも条件付きであり,参照領域又は行領域を開始する場合,この間隔指定子

は抑制される。すなわち,その解決済み間隔指定子は 0 となる。さらに,条件付き間隔指定子がシー

ケンス内で連続して続く場合も,抑制される。この規則によって,間隔指定子 が間隔指定子 に続

き,と とが最小値,最大値,最適値が 0 に計算されている条件付き間隔指定子及び/又は間隔指

定子だけによってシーケンス中で分離している場合,は に連続して続く。

条件付き間隔指定子が参照領域又は行領域を終わらせる場合,シーケンス内で連続して先行する他

のすべての条件付き間隔指定子とともに抑制される。この規則によって,間隔指定子 が間隔指定子

V

に先行し,と とが最小値,最大値,最適値が 0 に計算されている条件付き間隔指定子及び/又

は間隔指定子だけによってシーケンス中で分離している場合,は に連続して先行する。

b)  S'

内の残りの間隔指定子がいずれも強制間隔指定子である場合は,強制以外の間隔指定子はすべて抑

制され,強制間隔指定子の各値は,その解決済み値として与えられる。

c)

代わりに,S'内の残りの間隔指定子が強制ではない場合は,抑制されない解決済み間隔指定子は,そ

の優先順位が数字上最も高く,これらのうち,最適値が最も大きいものによって定義される。他の間

隔指定子はすべて抑制される。これらが一つしか存在しない場合は,その値が解決済み値として与え

られる。

そうでない場合に,次は,同一の最高の優先順位,かつ,同一の(最大の)最適値である二つ以上

の間隔指定子が存在するときの規則である。


28

X 4179

:2010

   

−  シーケンス中の解決済み間隔指定子又は最後の間隔指定子は,最適条件としてのそれらの一般的な

最適値をとることによってこれらの間隔から導かれる。

−  それらの最小値のうち最大のものがその最小値である。

−  それらの最大値のうち最小のものがその最大値である。

−  すべての他の間隔指定子は,抑制される。

d)  S

が過制約緩和の対象である(subject to overconstrainment relaxing)場合,その最大値は,包含ブロッ

ク領域の実際のブロック進行寸法に設定される。4.3.2 を参照する。

参照領域の先頭に現れる間隔値のシーケンスを,次と仮定する。

−  最初に,値が 10 ポイント(すなわち最小値,最適値及び最大値がすべて 10 ポイント)であり,条件

が discard の間隔。

−  2 番目に,値が 4 ポイントで,条件が retain の間隔。

−  3 番目に,値が 5 ポイントで,条件が discard の間隔。

−  これらの間隔の優先順位は,すべて 0 である。

最初の 10 ポイントの間隔は,

a)

に従って抑制され,

2 番目の 4 ポイントの間隔は c)によって抑制される。

3 番目の間隔が本来条件付き間隔から生じたとしても,その解決済み値は 5 ポイントであり,条件は付か

ない。

ブロック領域のパディングは,どのような間隔指定子とも相互作用しない。ただし,定義によって前辺

又は後辺にパディングが存在するため,その両側の領域にスタック化制約が存在できない場合は例外であ

る。

ブロック領域 の前辺又は後辺の境界又はパディングは,条件どおりに指定されてもよい。その場合,

関連する辺が参照領域の前辺で の is-first 特色が false であるか又は関連する辺が参照領域の後辺で 

is-last 特色が false のときは,その値は 0 に設定される。このとき,境界又はパディングについては,スタ

ック化制約定義によってその値は 0 となる。

行内領域 の開始辺又は終了辺の境界又はパディングは,条件どおりに指定されてもよい。その場合,

関連する辺が行領域の前辺で の is-first 特色が false であるか又は関連する辺が行領域の後辺で の is-last

特色が false のときは,その値は 0 に設定される。このとき,境界又はパディングは,スタック化制約定義

によってその値は 0 となる。

4.3.2 

過制約の間隔指定子 

領域 が,ブロック進行寸法が“auto”であるフォーマット化オブジェクトによって生成される場合,P

の内容長方形の前辺及び後辺を伴う制約は,の様々な子孫の間の制約とともに,ブロック進行寸法の実

際値への制約に帰着する。ブロック進行寸法が代わりに長さとして指定されると,これは,指定サイズを

もつ不完全に満たされた fo:block などの過制約領域木に帰着してよい。その場合,とその子孫との間の

幾つかの制約は緩和されることが望ましい。この扱いを受ける資格のあるものは,過制約緩和の対象であ

る(subject to overconstrainment relaxing)といわれ,前述のとおり扱われる。

− display-align 値が“after”又は“center”であり,がフォーマット化オブジェクトによって生成され

た最初の正規領域であるとき,の最初の正規の子の space-before は,過制約緩和の対象となる。

− display-align 値が“before”又は“center”であり,がフォーマット化オブジェクトによって生成され

た最後の正規領域であるとき,の最後の正規の子の space-after は,過制約緩和の対象となる。


29

X 4179

:2010

4.4 

ブロック領域 

ブロック領域には複数の特色が存在し,通常,それらの特色は子の配置に影響する。line-height は,行

配置計算で使用される。line-stacking-strategy 特色は,子孫の行領域にどの割付けが使用されるかを制御し,

font-height,max-height,又は line-height のいずれかの列挙値をもつ。これはすべて後に厳密に記述する。

すべての領域にこれらの特色が存在するが,関係するのはスタック行領域の子をもつ領域に限られる。

space-before 特色及び space-after 特色は,ブロック領域とその周囲のブロック領域との間の距離を決定す

る。

行領域ではないブロック領域のサイズは,通常,その開始字下げ並びに開始字下げ,及び最も近い先祖

の参照領域のサイズによって,行内進行方向に決定される。行領域ではないブロック領域は,その領域を

生成するフォーマット化オブジェクトのところで規定する場合以外は,

(後の 4.4.1 で規定するように)適

正にスタックされなければならない。この場合,そのブロック進行寸法は子孫のブロック進行寸法及び間

隔指定子に基づく制約を受けることがある。4.3.2 を参照する。

4.4.1 

スタックブロック領域 

領域のブロック領域の子は,通常,その親領域内でブロック進行方向にスタックされる。これは,ブロ

ック領域の位置を特定する省略時のメソッドである。しかし,フォーマット化オブジェクトは,リスト項

目,表など,生成領域の子領域の位置を特定する他のメソッドを自由に指定することができる。

親領域 の子がブロック領域である場合に,次の条件のすべてに該当すれば,のスタックは適正

(properly stacked)であると定義される。

a)

各ブロック領域 が の子孫である場合には,次の条件に該当することになる。

−  割付け長方形の前辺及び後辺は の内容長方形の前辺及び後辺と平行である。

−  割付け長方形の開始辺は,の内容長方形の開始辺と平行で,オフセットは,それから,ブロック

領域の開始字下げに,開始詰め調整(後に定義する。

)を加算し,その border-start 値,padding-start

値,及び space-start 値を減じたのと同じ距離だけ内側となる。この場合,は の参照領域のうち,

最も近い先祖である。

−  割付け長方形の終了辺は,の内容長方形の終了辺と平行で,オフセットは,それからブロック領

域の終了字下げにその終了詰め調整(後に定義する。

)を加え,border-end 値,padding-end 値,及び

space-end 値を減じたのと同じ距離だけ内側となる。


30

X 4179

:2010

   

図 4.15−参照領域の内容長方形 

注記  字下げの概念は,内容長方形への適用を意図したものである。しかし,先の 4.2.3 で示したとお

り,内容長方形の各辺が割付け長方形の名前が類似した各辺に対応しない場合もあるため,制

約は割付け長方形によって書き込まれる。

開始詰め調整特色及び終了詰め調整特色は,行内進行方向での浮動体(float)からの割込み

を扱うために使用される。

どのようにマージン特性が字下げに効果があるかは,5.3.2 を参照する。

b)  P

の下の部分木にある正規領域 及び B'の各ペアについては,及び B'にブロックスタック化制

約 が存在し が空でない場合(4.2.5 参照)

の隣接辺と B'との間の距離は,の間隔指定子

の解決済み値が強制する制約に一致する。


31

X 4179

:2010

図 4.16−スタック領域の例 

図 4.16 では,領域 の space-after 値が 3 ポイントであり,の space-before 値が 1 ポイントであり,

さらに,の space-before 値が 2 ポイントとなっている。これらの優先順位はすべて force であり,境

界及びパディングは 0 である。この場合,制約は,の割付け長方形が,の割付け長方形の 4 ポイ

ント下に配置され,の割付け長方形が,割付け長方形の 6 ポイント下に配置されることになる。

そのため,4 ポイントのギャップは の背景色となり,の前にある 2 ポイントのギャップは の背

景色となる。

4.4.2 

詰め調整 

開始及び終了の両方の詰め調整(intrusion-adjustment)は,側浮動体(side float)の結果として生じる字

下げのために定義される。

A

及び が,同じ最も近い参照領域の先祖をもつ領域である場合,の割付け長方形と の割付け長方

形とを横切っている行内進行方向と平行した行が存在すれば,及び は,行内重複(inline-overlapping)

であると定義される。

A

が float="start"をもつクラス xsl-side-float の領域であり,がブロック領域であり,及び の最も近

い参照領域の先祖が同一である場合に,及び が行内重複であって,の開始字下げが,の開始字下

げと の行内進行寸法との合計より小さいとき,は に食い込む(encroach)と定義される。そこで,A

の への開始食込み(start-encroachment)は,の開始字下げが,の開始字下げと の行内進行寸法と

の合計より小さい量であると定義される。


32

X 4179

:2010

   

A

が float="end"をもつクラス xsl-side-float の領域であり,がブロック領域であり,及び の最も近い

参照領域の先祖が同一である場合に,及び が行内重複であって,の終了字下げが,の終了字下げ

と の行内進行寸法との合計より小さいとき,は に食い込むと定義される。そこで,の への終了

食込み(end-encroachment)は,の終了字下げが,の終了字下げと の行内進行寸法との合計より小さ

い量であると定義される。

B

が行領域でないブロック領域である場合,その局所開始詰め調整(local-start-intrusion-adjustment)は,

次の長さの最大として計算される。

a)  0

b)  B

の親が参照領域でないときは,の親の開始詰め調整。

c)

B

が intrusion-displace="block"をもつとき,の生成フォーマット化オブジェクトが の生成フォーマ

ット化オブジェクトの子孫でなく,が のある行領域の子に食い込むような,float="start"をもつク

ラス xsl-side-float の各領域 に関しては,に対する の開始食込み。

d)  B

が intrusion-displace="block"をもつとき,及び が行内重複であるような,float="start"をもつクラ

ス xsl-side-float の各領域 に関して,並びに が B'の行領域の子に食い込むような,の最も近い参

照領域先祖の子孫である の各ブロック領域の先祖 B'に関しては,B'に対する の開始食込み。

ブロック領域 の開始詰め調整は,の生成フォーマット化オブジェクトによって生成され返される正

規ブロック領域の局所開始詰め調整の最大であると定義される。

L

が行領域である場合,その開始詰め調整は,次の長さの最大として計算される。

a)  L

の親の開始詰め調整。

b)  A

が に食い込むような,float="start"をもつクラス xsl-side-float の各領域 に関しては,に対する A

の開始食込み。

c)

L

の親が intrusion-displace="indent"をもつとき,及び が行内重複であるような,float="start"をもつ

クラス xsl-side-float の各領域 に関して,並びに が B'のある行領域の子 L'に食い込むように,

最も近い参照領域の先祖の子孫である の各ブロック領域の先祖 B'に関しては,B'に対する の開始

食込み。

ブロック領域の終了詰め調整は,厳密に同様の方法で計算される。

B

が行領域でないブロック領域である場合,その局所終了詰め調整(local-end-intrusion-adjustment)は,

次の長さの最大として計算される。

a)  0

b)  B

の親が参照領域でないときは,の親の終了詰め調整。

c)

B

が intrusion-displace="block"をもつとき,の生成フォーマット化オブジェクトが の生成フォーマ

ット化オブジェクトの子孫でなく,が のある行領域の子に食い込むような,float="end"を伴うク

ラス xsl-side-float の各領域 に関しては,に対する の終了食込み。

d)  B

が intrusion-displace="block"をもつとき,及び が行内重複であるような,float="end"を伴うクラス

xsl-side-float の各領域 に関して,並びに が B'の行領域の子に食い込むような,の最も近い参照

領域先祖の子孫である の各ブロック領域の先祖 B'に関しては,B'に対する の終了食込み。

ブロック領域 の終了詰め調整は,の生成フォーマット化オブジェクトによって生成され返される正

規ブロック領域の局所終了詰め調整の最大であると定義される。


33

X 4179

:2010

L

が行領域である場合,その終了詰め調整は,次の長さの最大として計算される。

a)  L

の親の終了詰め調整。

b)  A

が に食い込むような,float="end"を伴うクラス xsl-side-float の各領域 に関しては,に対する A

の終了食込み。

c)

L

の親が intrusion-displace="indent"をもつとき,及び が行内重複であるような,float="end"を伴う

クラス xsl-side-float の各領域 に関して,並びに が B'のある行領域の子 L'に食い込むように,

最も近い参照領域の先祖の子孫である の各ブロック領域の先祖 B'に関しては,B'に対する の終了

食込み。

4.5 

行領域 

行領域は特別な種類のブロック領域であり,親領域を生成した同一のフォーマット化オブジェクトによ

って生成される。行領域には,境界及びパディングが存在しない。すなわち,border-before 幅,padding-before

幅などは 0 である。行内領域は,ベースライン開始点(baseline-start-point)に関連する行領域内にスタッ

クされる。ベースライン開始点は,フォーマッタによって決定され,行領域の内容長方形の開始辺上の点

に存在する。

行の割付け長方形は,line-stacking-strategy 特色の値によって決定される。値が font-height である場合,

割付け長方形は,後に定義する定格要求行長方形(nominal-requested-line-rectangle)である。値が max-height

である場合,割付け長方形は後に定義する最大行長方形(maximum-line-rectangle)である。さらに,値が

line-height である場合,割付け長方形は,後に定義する行内高さ長方形(per-inline-height-rectangle)である。

line-stacking-strategy 特色が font-height 又は max-height である場合,space-before 及び space-after は両者共半

リーディング値に設定される。それ以外の場合は,両者共 0 に設定される。

行領域の定格要求行長方形は,開始辺が最も近い先祖の参照領域の内容領域の開始辺と平行で行領域の

開始字下げと開始詰め調整の合計だけ離れており,終了辺が最も近い先祖の参照領域の内容領域の終了辺

と平行で行領域の終了字下げと終了詰め調整の合計だけ離れており,前辺が親のブロック領域のテキスト

の高さによるベースライン開始点から分離しており,後辺が親のブロック領域のテキストの深さによるベ

ースライン開始点から分離している長方形である。ブロック領域の各行領域の子については,ブロック進

行寸法は同一となる。

行領域の最大行長方形の開始辺及び終了辺は,定格要求行長方形の開始辺及び終了辺に平行し,一致す

る。ブロック進行方向での広がりは,定格要求行長方形,及び,行領域内にスタックされたすべての行内

領域の割付け長方形の両方を囲むことが必す(須)となるもののうち,最小のものとなる。これは,行領

域の子孫に応じて変化してもよい。

図 4.17−定格要求行長方形及び最大行長方形


34

X 4179

:2010

   

行領域の行内高さ長方形(per-inline-height-rectangle)の開始辺及び終了辺は,定格要求行長方形の開始

辺及び終了辺に平行し,一致する。ブロック進行寸法の広がりの決定方法を,次に示す。

a)

行内領域の展開長方形(expanded-rectangle)は,その開始辺及び終了辺が割付け長方形の開始辺及び

終了辺と一致しており,その前辺及び後辺は次のいずれかの距離だけ,割付け長方形の前辺及び後辺

から外側に離れている。

1)

領域の割付け長方形が生成フォーマット化オブジェクトの記述によって定格割付け長方形であると

指定される場合は,半リーディング。

2)

領域の割付け長方形が大割付け長方形であると指定される場合は,それぞれ space-before 及び

space-after。

b)

展開定格要求行長方形(expanded-nominal-requested-line-rectangle)の開始辺及び終了辺は,定格要求行

長方形のものと一致し,その前辺及び後辺は,定格要求行長方形の前辺及び後辺から外側に半リーデ

ィングと等しい距離だけ離れている。

ブロック進行方向で行内高さ長方形の広がりは,展開定格要求行長方形も,行領域内にスタックされた

すべての行内領域の展開長方形も囲むことが必す(須)である長方形のうち最小のものになると定義され

る。これは行領域の子孫に応じて変わってもよい。

注記  定格要求行長方形を使用すると,ベースラインからベースラインまでの間隔を等しくすること

ができる。最大行長方形を使用すると,行領域間の間隔を一定にすることができる。行内高さ

長方形を使用し,space-before 及び space-after を 0 とすると,CSS スタイル行ボックススタック

化を使用することができる。同様に,半リーディングの値は,条件にかかわらず,展開長方形

に含まれる。そのため,この場合,行の高さの条件が“discard”のときは,影響はない。

4.6 

行内領域 

行内領域には,それ自体の line-height 特色が存在し,これは包含ブロック領域の行の高さとは異なる。

line-stacking-strategy 特色の値が line-height の場合,これは先祖の行領域の配置に影響することがある。行

内領域には,その定格フォント(nominal-font)について実ベースライン表(actual-baseline-table)が存在

す る 。 行 内 領 域 は , ス タ ッ ク 行 内 領 域 の 子 孫 が ど の よ う に 配 置 さ れ る か を 決 定 す る

dominant-baseline-identifier 特色をもつ。

行内領域には子領域があってもよいし,なくてもよい。その場合,行内領域は参照領域であってもよい

し,なくてもよい。子をもたない行内領域の内容長方形の寸法を計算する場合は,ブロック領域の子をも

つ行内領域の場合と同様,生成フォーマット化オブジェクトが指定する。

行内領域が行内領域の子をもつ場合,主要ベースラインから拡張される内容長方形が存在する(4.2.6 

照)

。この場合,ブロック進行方向にはテキストの深さの分だけ拡張され,反対方向にはテキストの高さの

分だけ拡張される。すなわち,行内進行方向には,最初の子の割付け長方形の開始辺から最後の子の割付

け長方形の終了辺まで拡張されることになる。このような行内領域の割付け長方形は,その内容長方形と

同一である。

子をもたない行内領域の割付け長方形は,

生成フォーマット化オブジェクトの記述で指定されるとおり,

正規割付け長方形又は大割付け長方形のいずれかである。

注記 line-stacking-strategy 特色の値が line-height である場合,割付けは展開長方形に関して実行され

る。


35

X 4179

:2010

子をもつ行内領域の例は,行内数式の一部又は混合表記システムから生じる領域を含んでもよい。混合

表記システムとは,左向きの書込み中に右向きの書込みが存在する場合などをいう。

4.6.1 

スタック行内領域 

領域の行内領域の子は,通常,その親領域内で行内進行方向にスタックされる。これは,行内領域の位

置を特定する省略時のメソッドである。

行内領域は,先の 4.2.6 で定義されたとおり,主要ベースライン(dominant baseline)に関連してスタッ

クされる。

親領域 の子が行内領域である場合に,次のすべての条件に該当すれば,のスタックは適正(properly

stacked)であると定義される。

a)  P

の各行内領域の子孫 については,の割付け長方形の開始辺,終了辺,前辺及び後辺は,の最も

近い先祖参照領域の内容長方形の辺と対応している。

b)  P

の下の部分木にある正規領域 及び I'の各ペアについては,及び I'に行内スタック化制約 が存在

すれば,と I'との隣接辺間の距離は,の間隔指定子の解決済み値が強制する制約に一致する。

c)

P

の行内領域の子孫 はいずれについても,の親 の主要ベースラインから の配置点までのシフト

方向の距離は,の主要ベースラインと の alignment-baseline 特色に対応する のベースラインとの

間のオフセットに,のベースライン移動を加算した距離に等しい。

最初の加数は,ベースラインの型が異なる場合の混合表記システムを補正するために計算される。

その他の加数には,上付き文字,下付き文字などについての微妙なベースライン移動が含まれる。

4.6.2 

グリフ領域 

グリフ領域は最も一般的な行内領域であり,特定のフォントで一つ又は複数の文字を表現する。

グリフ領域には関連する定格フォントが存在する。定格フォントは,文字データに適用される領域の印

刷特色によって決定される。グリフ方位(glyph-orientation)は表記方法及び参照方位によって決定され,

レンダリング時のグリフの方向を決定する。

グリフ領域の配置点及び主要ベースライン識別子は,欧米言語のグリフベースラインなど,使用する表

記システムに従って割り当てられ,行領域の行内領域子孫の配置を制御するために,使用される。混合表

記システムの場合,フォーマッタが親とは異なる行内進行方向の行内領域を生成して,適正な行内領域ス

タックを収容してもよい。

グリフ領域には子が存在しない。グリフ領域のブロック進行寸法及び実ベースライン表は,フォントの

すべてのグリフについて同一である。適合実装は,すべてのフォント中のグリフで一般的なサイズを使用

するよりむしろ実際のグリフサイズに基づくグリフ領域にブロック進行寸法を計算することを選んでもよ

い。

4.7 

順序付け制約 

4.7.1 

一般的順序付け制約 

部分集合内の領域の順序が生成フォーマット化オブジェクトと同じである場合,フォーマット化オブジ

ェクトに返される領域の部分集合 は適正に順序付けされている(properly ordered)という。特に,A

1

び A

2

が に存在し,

子のフォーマット化オブジェクト F

1

及び F

2

によって返され,

F

1

が F

2

に優先する場合,

A

1

は,領域木の昇順たどりでは,A

2

に優先しなければならない。F

1

が F

2

に等しく,A

1

が A

2

に優先して返

される場合,領域木の昇順たどりでは,A

1

は A

2

に優先しなければならない。


36

X 4179

:2010

   

各フォーマット化オブジェクト 及び各領域クラス については,領域クラスが である に返され

る領域から構成される部分集合は,適正に順序付けされなければならない。ただし,別に指定がある場合

を除く。

4.7.2 

行構築 

ここでは,fo:block のフォーマット化又は類似するブロックレベルオブジェクトのフォーマット化に適

用される順序付け制約を記述する。

ブロックレベルフォーマット化オブジェクト は,親フォーマット化オブジェクトに返されるブロック

領域を構築し,正規領域及び/又はアンカ領域を配置することによって,行を構築する。この場合,子フ

ォーマット化オブジェクトは,ブロック領域の子又はブロック領域の子として構築される行領域の子とし

て,正規領域及び/又はアンカ領域を に返す。

このような各フォーマット化オブジェクト では,

順序付けされた区分 を形成できなければならない。

この は,子フォーマット化オブジェクトが返す正規領域又はアンカ領域の順序付けされた部分集合 S

1

S

2

,…,S

n

から構成され,これによって,次の条件がすべて満たされることになる。

a)

各部分集合は,行内領域のシーケンス又は単一のブロック領域から構成される。

b)

区分の順序付けは,フォーマット化オブジェクト木の順序付けに従う。特に,が S

i

内にあり,

S

j

内にあり,iの関係が成立している場合,又は も も同じ部分集合 S

i

内にあり,部分集合の順

序付けで が に先行する場合は,は の先行する兄弟フォーマット化オブジェクトによって返さ

れるか,又は 及び は,が の前に返される同一のフォーマット化オブジェクトによって返され

るかのいずれかである。

c)

区分化は正当な行分割で現れる。特に,が S

i

の最後の領域であり,が S

i

1

の最初の領域である場

合,S

i

及び S

i

1

の全領域の文脈内では,実質上,言語,スクリプト及びハイフネーション制約の規則

7.107.16.1 及び 7.16.2)が と との間の行分割を許容しなければならない。

d)

強制行分割は優先される。特に,C が F の子孫であり,C が Unicode 文字 U+000A である最後の領域

の fo:character であり,A が C によって生成される領域である場合,C は F の子であり,A は C'によっ

て戻された領域 A'で(4.2.5 の意味において)終わる。そのような A'は部分集合 S

i

の最後の領域であ

る。

e)

区分は,一定のグリフ置換及び削除を除き,領域木の順序付けに従う。特に,B

1

,B

2

,…,B

p

が領域

の正規の子領域であるか,又は F によって返される領域である場合に,領域木の昇順たどりで順序付

けされると,これらの子領域と区分の部分集合との間(例えば n=p など)に,1 対 1 の対応が成立す

る。さらに,各 i について,次のいずれかがいえる。

−  S

i

が単一のブロック領域から構成される場合,B

i

はブロック領域である。

−  S

i

が行内領域から構成され,B

i

が子領域が S

i

の行内領域と同じ行領域であり,順序が同じであり,

実質的に,言語及びスクリプトの規則が置換,挿入又は削除されるグリフ領域を呼び出す場合以外

では,置換又は挿入されるグリフ領域は,対応する位置で領域木に現れ,削除されるグリフ領域は

領域木には現れない。例えば,挿入及び置換は,ハイフンの追加,ハイフン付けによるつづりの変

更,音節区切りからのグリフ像の構築,リガチャ形成などによって,現れることもある。削除は,

f)

で指定されるように現れる。

f) white-space-treatment

は強要される。

特に,

グリフ領域 G が次のいずれかの場合には d)の削除が現れる。

1)  G

の white-space-treatment が“ignore”であり G の文字が XML の空白に分類されるとき。

2)  G

の white-space-treatment が“ignore-if-before-linefeed”又は“ignore-if-surrounding-linefeed”であり,


37

X 4179

:2010

G の suppress-at-line-break が“suppress”であり,G が行領域の最後であるとき。

3)  G

の white-space-treatment が“ignore-if-after-linefeed”又は“ignore-if-surrounding-linefeed”であり,G

の suppress-at-line-break が“suppress”であり,G が行領域の最初である。

領域 G が削除される場合,これは 2)又は 3)の状態が真になることによって更に削除が引き起こさ

れる原因となることがある。

置換とは,グリフ領域のシーケンスを単一のグリフ領域に置き換えることであり,行内進行方向での余

白値,境界値及びパディング値(start-及び end-)

,並びにベースライン移動値,文字間隔値が 0 であり,

treat-as-word-space が false であり,かつ,その他のすべての関連特色(すなわち,alignment-adjust,

alignment-baseline,color,background,dominant-baseline-identifier,フォント特色,text-depth,text-altitude,

glyph-orientation-horizontal,glyph-orientation-vertical,line-height,line-height-shift-adjustment,text-decoration,

text-shadow の各特色)が一致する場合に限り,現れるのが望ましい。

注記  行領域は,その生成フォーマット化オブジェクトの背景特色若しくはテキスト装飾,又はレン

ダリング中にマークの生成が必す(須)であるその他の特色を受け入れない。

4.7.3 

行内構築 

ここでは,fo:inline 又は類似の行内レベルオブジェクトのフォーマット化に適用される順序付け制約を

記述する。

行内レベルフォーマット化オブジェクト は,子フォーマット化オブジェクトが生成される行内領域の

子として に返す正規の行領域及び/又はアンカ行内領域を配置することによって,一つ以上の行内領域

を構築する。

このような各フォーマット化オブジェクト については,順序付けされた区分 の形成が可能でなけれ

ばならない。区分 は,子フォーマット化オブジェクトが返す正規の行内領域及び/又はアンカ行内領域

並びに正規のブロック領域の順序付けされた部分集合 S

1

S

2

,…,S

n

から構成され,それによって,次の

条件がすべて満たされることになる。

a)

各部分集合は,行内領域のシーケンス,又は単一のブロック領域から構成される。

b)

区分の順序付けは,上で定義するとおり,フォーマット化オブジェクトの順序付けに従う。

c)

区分化は,上で定義するとおり,正当な行分割で現れる。

d)

強制行分割は,上で定義するとおり,優先される。

e)

上で定義するとおり,一定のグリフ置換及び削除を除き,区分は領域木の順序付けに従う。

4.8 

保持及び分割 

保持条件及び分割条件は,領域のクラスに適用される。この場合の領域とは,通常,ページ参照領域,

段領域及び行領域である。一定の条件に対応する適切なクラスは,文脈として参照され,このクラスの領

域を文脈領域(context-area)という。6.4.1 で定義するとおり,ページ参照領域(page-reference-areas)は,

fo:page-master の規定を使用して fo:page-sequence が生成する領域であり,段領域(column-areas)は,区画

本体から生成される正規流し込み参照領域,又はその他の型の区画マスタから生成される区画参照領域で

ある。


38

X 4179

:2010

   

保持条件又は分割条件は,フォーマット化オブジェクト及び関連する文脈領域を用いて生成する領域の

木関係についての開始文である。これらの木関係は,主に,先行領域(leading area)又は後続領域(trailing

area)によって定義される。が の子孫である場合に,に正規の領域である先行兄弟がないか,又は P

までだが,を含まない領域までさかのぼって,その先祖領域が存在しなければ,は において先行し

ていると定義される。同様に,に正規の領域である後続兄弟がないか,又は までだが,を含まない

領域までさかのぼって,その先祖領域が存在しなければ,は において後続していると定義される。与

えられるフォーマット化オブジェクトはいずれについても,昇順たどりでは,流し込み内の次のフォーマ

ット化オブジェクトが最初の後続するフォーマット化オブジェクトであり,正規領域を生成し,返す。

分割条件は,break-before 条件又は break-after 条件のいずれかである。フォーマット化オブジェクトが生

成し,返す最初の領域が文脈領域内で先行する場合,break-before 条件が満たされる。break-after 条件は,

流し込み内の次のフォーマット化オブジェクトに依存する。すなわち,このような次のフォーマット化オ

ブジェクトが存在しないか,又は,そのフォーマット化オブジェクトが生成し,返す最初の正規領域が文

脈領域内で先行するかのいずれかの場合に,break-after 条件は満たされる。

分割条件は,break-before 特性及び break-after 特性によって強制される。これらの特色の洗練化された値

が page のときは,文脈がページ参照領域から構成される分割条件が強制され,値が even-page 又は odd-page

のときは,偶数の番号付けをしたページ参照領域又は奇数の番号付けをしたページ参照領域の文脈をもつ

分割条件をそれぞれ強制する。

値が column のときは,

文脈が段領域である分割条件を強制する。

break-before

特色又は break-after 特色の値が auto の場合,分割条件を強制しない。

保持条件とは,keep-with-previous,keep-with-next,又は keep-together 条件のいずれかをいう。オブジェ

クト上の keep-with-previous 条件は,フォーマット化オブジェクトが生成し,返す最初の領域が文脈領域内

で 先行 しない 場合 ,又 は , 領 域 木の 降 順た どり で 先 行 す る領域 が存 在 しない 場合 に満 た さ れ る 。

keep-with-next 条件は,フォーマット化オブジェクトが生成し,返す最後の領域が文脈領域内で後続しない

場合,又は,領域木の昇順たどりで後続する領域が存在しない場合に満たされる。keep-together 条件は,

フォーマット化オブジェクトが生成し,返すすべての領域が単一の文脈領域の子孫である場合に満たされ

る。

保持条件は,

“keep-with-previous”特性,

“keep-with-next”特性及び“keep-together”特性の構成要素であ

る“within-page”

“within-column”及び“within-line”によって強制される。各構成要素の洗練化された値

は,強制される保持条件の強さを指定する。すなわち,数値が高いほうが低いほうより強く,値 always の

強さは最大である。構成要素に値 auto が指定されている場合,保持条件は強制されない。

“within-page”構

成要素は,文脈がページ参照領域から構成される保持条件を強制する。

“within-column”構成要素は,段領

域から構成される文脈をもつ保持条件を,

“within-line”構成要素は,文脈が行領域から構成される保持条

件を強制する。

領域木は,強制される分割条件をすべて満たすために制約される。各保持条件も満たされなければなら

ない。ただし,これによって,分割条件又はより強い保持条件を満たすことができない場合は例外である。

同じ強さの保持条件の集合をすべて満たすことができない場合は,その強さの条件のうち,満たすことが

可能な最大の部分集合を幾つか満たさなければならない。存在する場合は,すべての分割条件及びより強

い保持条件のうちの最大の部分集合も満たさなければならない。

4.9 

レンダリングモデル 

ここでは,領域木と視覚レンダリング出力との関係を明らかにする。

領域は,次の 3 種類のマークを生成する。


39

X 4179

:2010

a)

もしあれば,領域の背景。

b)

もしあれば,グリフ,画像,装飾など領域に固有のマーク。

c)

もしあれば,領域の境界。

領域木は,領域木内の領域に従って,出力メディア上にマークを出現させることによって,レンダリン

グされる。ここでは,このようなマークの幾何的な位置,及び,マーク間の競合の解決方法を記述する。

4.9.1 

幾何 

各領域は,特定の位置でレンダリングされる。フォーマット化オブジェクトのセマンティクスは,内容

長方形の左辺,右辺,上辺,下辺など,オブジェクトの位置に関連する基本のマークの位置を記述する。

ここでは,領域の位置の決定方法を記述し,領域の基本のマークの位置を決定する。

各ページについては,ページ表示域領域は,出力メディアに等大に対応する。

ページ参照領域は 4.9.2 で記述されるとおり,ページ表示域領域からのオフセットである。

領域のクラスが xsl-fixed である木内のすべての領域は,内容長方形の左辺,右辺,上辺及び下辺が,

left-position,right-position,top-position,及び bottom-position の各特色が指定する距離だけ,先祖のページ

表示域領域の内容長方形から内側に相対的にずれるように位置決めされる。

すべての領域が表示域領域の子である木内に存在する場合は,4.9.2 で記述されるとおりにレンダリング

される。

木内のその他のすべての領域は,内容長方形の左辺,右辺,上辺及び下辺が,left-position,right-position,

top-position,及び bottom-position の各特色が指定する距離だけ,最も近い先祖の参照領域の内容長方形か

ら内側に相対的にずれるように位置決めされる。領域の相対位置(relative-position)が relative に指定され

ている場合,これらは,top-offset 特色及び left-offset 特色によって,左下にシフトされる。

4.9.2 

表示域幾何 

表示域領域の子である参照領域は,内容長方形の開始辺及び終了辺が親表示域領域の内容長方形の開始

辺及び終了辺と対応して位置決めされる。内容長方形の開始辺は,行内スクロール量(inline-scroll-amount,)

だけ,親表示域領域の内容長方形の開始辺から相対的にずれ,内容長方形の前辺は,ブロックスクロール

量(block-scroll-amount)だけ,親表示域領域の内容長方形の前辺から相対的にずれる。

参照領域のブロック進行寸法は表示域領域のブロック進行寸法よりも大きく,参照領域の overflow 特色

が scroll に指定される場合,行内スクロール量及びブロックスクロール量はスクロール機構によって決定

されるが,利用者エージェントが存在する場合は,利用者エージェントによって提供される。それ以外の

場合は,両者共 0 となる。

4.9.3 

可視性 

マークの可視性は,マークの位置,領域の可視性(visibility)及び任意の先祖表示域領域のオーバフロ

ー(overflow)に依存する。

領域の可視性が hidden に指定される場合,領域はマークを生成しない。

領域のオーバフローが hidden に指定される場合,又は環境が動的ではなく,オーバフローが scroll に指

定される場合,領域は切取り長方形(clipping rectangle)を決定する。この長方形の定義は,領域の clip 特

色の値によって決定され,その子孫領域の一つが生成する任意のマークについて,切取り長方形外にマー

クの一部が存在する場合は,マークは現れない。


40

X 4179

:2010

   

4.9.4 

境界,パディング及び背景 

境界長方形及びパディング長方形は,border-before-width など,一般的なパディング幅特色及び境界幅特

色の値によって,内容長方形に相対して決定される。

任意の領域について,その領域が表示域領域の子でなければ,一般的な境界の色及びスタイル特色に従

って,境界は境界長方形とパディング長方形との間にレンダリングされる。表示域領域の子の場合,境界

はレンダリングされない。

領域が表示域・参照のペアの一部ではなければ,背景がレンダリングされる。領域が,表示域・参照の

ペアの表示域領域か参照領域のいずれかである場合に,background-attachment の洗練化された値が scroll

であり,参照領域のブロック進行寸法が表示域領域のブロック進行寸法よりも大きければ,背景は表示域

領域ではなく,参照領域にレンダリングされる。それ以外の場合,背景は参照領域ではなく,表示域領域

にレンダリングされる。

パディング長方形が存在する場合,背景は background-image,background-color,background-repeat,

background-position-vertical,及び background-position-horizontal の各特色に従って,パディング長方形にレ

ンダリングされる。

4.9.5 

基本のマーク 

フォーマット化オブジェクトの各クラスについては,生成領域に基本のマークは,フォーマット化オブ

ジェクトの記述で指定される。例えば,fo:character オブジェクトはグリフ領域を生成する。これは,領域

の font 特色,glyph-orientation 特色及び blink 特色に従って,その領域の内容長方形内にグリフを描くこと

によって,レンダリングされる。

さらに,様々なスコア特色,スコア色特色など,他の特色は他の基本のマークを指定する。underline-score,

overline-score,through-score などのスコア特色の場合は,スコアの太さ及び位置は,実質的に,定格フォ

ントによって指定される。フォントがこれらの数量を指定できない場合は,実装依存である。

4.9.6 

マークの階層化及び競合 

マークは,後に記述されるとおり,階層化され,どのマークがどのマークの下にくるかについて,部分

的な順序付けを定義する。

二つのマークが出力メディアの同じ点に適用される場合,これらのマークは競合すると定義される。二

つのマークが競合する場合,一方のマークの下にあるマークは,両者が適用される出力メディアの点に影

響しない。

同じ領域が生成するマークの階層化を,次に示す。

−  まず,領域背景は,領域の基本のマークの下にくる。組込みマークは境界の下にくる。領域の基本の

マーク間の階層化は,領域の生成フォーマット化オブジェクト及びその特性のセマンティクスによっ

て定義される。例えば,グリフ領域のグリフ描画は,テキスト装飾のために生成されるマークの下に

くる。

−  領域のスタック階層は,スタック化文脈及びその z 指標値によって定義される。領域 の先祖又は自

身のいずれかである A',及び領域 の先祖又は自身のいずれかである B'が,同じスタック化文脈をも

っており,かつ,A'の z 指標が B'の z 指標より小さい場合,のスタック階層は のスタック階層よ

りも小さいと定義される。スタック階層が他のスタック階層ほど小さくない場合は,両者のスタック

階層は同じであると定義される。

−  及び が領域であり,のスタック階層が のスタック階層よりも小さい場合,が生成するマー

クはすべて,が生成するすべてのマークの下に存在する。


41

X 4179

:2010

−  及び が同じ階層をもつ領域である場合,及び の背景は,及び が生成する他のすべてのマ

ークの下にくる。さらに,が の先祖であり,両者のスタック階層が同じ場合,の背景は のす

べての領域の下に存在し,のすべての領域は の基本の領域及び境界の下に存在する。

−  及び のスタック階層が同じであり,いずれも他の領域の先祖ではない場合,それらの背景が競合

するか,の背景以外のマークが の背景以外のマークと競合するかのいずれかの場合は,誤りとな

る。実装は,木の昇順たどりにおいて,最初の領域からのマークが他の領域のマークの下に存在する

ものとして進むことによって,回復してもよい。

4.10 

領域木の例 

図 4.18−典型的な領域木 


42

X 4179

:2010

   

特性の洗練化及び解決 

すべてのフォーマット化特性(property)は,すべてのフォーマット化オブジェクトに指定されることが

ある。しかし,それぞれのフォーマット化オブジェクトクラスは,フォーマット化特性の一部だけを使用

する。それらは,クラスに適用される。

洗練化時に,フォーマット化オブジェクトに適用される特性の集合は,フォーマット化の結果に関する

制約を定義する特色(trait)の集合に変換される  多くの特色について,特性との 1 対 1 対応がある。その

他の特色については,変換は更に複雑になる。変換に関する詳細については,後に記述する。

特定のフォーマット化オブジェクトの洗練化の最初の処理は,オブジェクトに適用される各特性の実効

値を得ることである。フォーマット化オブジェクトに指定される簡略記述特性は,個々の特性に拡張され

る。

これについては,

5.2

で更に詳細に記述する。

オブジェクトに指定されなかった任意の特性についても,

継承値(5.1.4 参照)又は初期値が,適用可能であるので実効値として使用される。次の処理は,この特性

集合を特色に変換することである。

注記  洗練化の処理は一連の段階で記述されるが,これは,説明の便宜だけのためであり,適合する

どのような実装でも,分離した段階として実装されなければならないという意味ではない。適

合する実装は,同一の効果を達成することだけが求められる。 

5.1 

指定値,計算値,実際値及び継承 

与えられるフォーマット化オブジェクトに適用可能なすべての特性について,特性の値を決定する必要

がある。特性値には指定値,計算値及び実際値という三つの異なる可変値が区別されている。指定値

(specified value)とは,木構築の処理中に,フォーマット化オブジェクト上に配置される値である。指定

値は,直接使用できる形式でなくてもよい。例えば,パーセンテージ又は絶対値に変換しなければならな

いその他の式であってもよい。これらの変換の結果生じる値を計算値(computed value)と呼ぶ。最後に,

計算値は出力メディアで認識できなくてもよく,レンダリングでの使用に優先して調整が必要な場合もあ

る。例えば,出力メディアの画素が整数になるように,

行の幅を調整してもよい。

この調整値を実際値(actual

value)という。

5.1.1 

指定値 

特性の指定値は,次の機構を使用して決定される。優先順位の高い方から示す。

a)

木構築処理がフォーマット化オブジェクト上に特性を配置した場合,その特性の値を指定値として使

用する。これを明示的規定(explicit specification)と呼ぶ。

b)

そうでない場合には,

特性が継承可能なときは,

親フォーマット化オブジェクトからのその特性の値,

一般的には計算値を使用する(5.1.2 参照)

c)

そうでない場合に,特性の初期値が存在する場合,それを使用する。各特性の初期値は,特性の定義

で示される。初期値が存在しない場合,その特性は,フォーマット化オブジェクトに指定されない。

一般に,これは誤りである。

結果木のルートは,

親をもたないので,

その親のフォーマット化オブジェクトからの値を使用できない。

この場合,必要なときは初期値を使用する。

5.1.2 

計算値 

指定値は,絶対値(すなわち,“red”

“2mm”などの,他の値に対して相対的に指定されない値)であ

ってよく,相対値(すなわち,

“auto”

“2em”

“12 %”などの,他の値に対して相対的に指定される値)

であってもよく,式であってもよい。ほとんどの絶対値については,計算値を見つけるための計算を必要


43

X 4179

:2010

としない。一方,相対値は,計算値に変換されなければならない。パーセンテージは,参照値で乗算され

なければならない(各特性は,それがどの値であるかを定義する。

。相対単位(em)のついた値は,適切

なフォントサイズで乗算することによって,絶対値に変換されなければならない。

“auto”値は,各特性で

与えられる式によって,計算されなければならない。

“smaller”

“bolder”などの)ある特性値は,その定

義に従って置換されなければならない。境界のスタイルが“none”である境界幅を制御するどのような特

性の計算値も,

“0 pt”に強制される。

特 性 値 の 指 定方 法が 一 つ 以 上 存 在 す る特 性も あ る 。 こ のよ う な特 性の う ち , 最 も単 純 な例 は ,

padding-before などの表記方法に関連する方向,padding-top などの表示域の絶対幾何方位による方向のいず

れかによって指定できる特性である。これら二つの特性を,それぞれ,相対特性(relative property)及び

絶対特性(absolute property)という。二つをまとめて対応特性(corresponding properties)という。

ある特性に値を指定することによって,指定された特性にも対応特性にも計算値が決定する。どの相対

特性がどの絶対特性に対応するかは表記方法に依存する。例えば,文書の上位での“writing-mode”が“lr-tb”

である場合,

“padding-start”は“padding-left”に対応する。しかし,

“writing-mode”が“rl-tb”である場合

は,

“padding-start”は“padding-right”に対応する。対応特性の値の計算方法に関する厳密な規定は 5.3 

規定されている。

ほとんどの場合,要素が計算値を継承する。しかし,

“line-height”特性に指定する値など,その指定値

が継承される特性も存在する。子要素が計算値を継承しない場合,これは特性定義で記述される。

5.1.3 

実際値 

主として計算値を使用するようになっているが,利用者エージェントが値を利用できない環境も存在す

る。例えば,利用者エージェントが,整数の画素幅でしか境界をレンダリングできないことがあり,その

場合は,計算幅をメディア画素の整数値に調整しなければならない。実際値は,任意のこれらの調整を適

用した後の計算値である。

5.1.4 

継承 

フォーマット化オブジェクトに適用できる特性には,継承可能(inheritable)なものもある。このような

特性は,特性記述でそれと識別される。継承可能特性は,どのようなフォーマット化オブジェクトにも配

置できる。継承可能特性は,親から各子へと,フォーマット化オブジェクト木を下に向かって伝ぱ(播)

されていく。これらの特性は,結果木のルートで,その初期値に指定される。継承可能特性の中には,そ

の特性が子に存在する場合,特性の値がその子,及びそれより下の子孫で明白に再設定されるまではその

子孫に使用されるものもある。それ以外の場合は,子に指定されたその特性の指定値は,親フォーマット

化オブジェクト上のその特性の計算値である。このため,すべてのフォーマット化オブジェクトに対する

すべての継承可能な特性に定義される指定値は,常に存在することになる。

5.2 

簡略記述の展開 

XSL には,2 種類の簡略記述特性が存在する。“border”など CSS から生じたもの,及び/又は

“page-break-inside”など CSS の特性を切り離したり結合して生じたものである。XSL では,簡略記述特

性については,両者共同じ取扱いを受ける。

注記  簡略記述は,最高の XSL 適合レベル“完全”でしか取り込まれない(箇条 参照)。各特性の

適合レベルは B.3 で示している。 

簡略記述特性は,親の簡略記述から継承するわけではない。代わりに,簡略記述が展開する個々の特性

が継承されてもよい。


44

X 4179

:2010

   

相互関係がある CSS 簡略記述も存在する。その展開には,共通する個々の特性が一つ以上ある。CSS で

は,複数の相関簡略記述及び個々の相関特性の組合せについては,処理の順序を利用者が指定しなければ

ならない。XML では,属性は順序付けされないものと定義されている。この問題を解決するために,複数

の相関簡略記述特性又は簡略記述特性,及び相関個別特性を指定する場合には,XSL は優先順位を定義す

る。

これらの特性は,一層厳密に処理される。例えば,“border”は“border-top”よりも厳密ではなく,

“border-top”は“border-top-color”よりも厳密ではない。個別特性は,任意の簡略記述の中で常に最も厳

密である。残りの不明確な場合の XSL の順序付け定義を,次に示す。

a)

“border-style”

“border-color”及び“border-width”は,

b)

“border-top”

“border-bottom”

“border-right”及び“border-left”よりも厳密ではない。

概念上の処理過程を,次に示す。

a)

初期値にすべての特性の実効値を設定する。

b)

一層厳密にすべての簡略記述を処理する。

簡略記述を“inherit”に設定する場合,簡略記述によって親の対応特性の計算値に設定が可能な各

特性の実効値を設定する。

簡略記述の値が“inherit”ではない場合,どの個別特性を設定するかを決定し,初期値を指定値に

由来する計算値で置換する。

c)

指定された個別特性をすべて処理する。

d)

第 1 段階の値以外の値に提供されなかった特性について,任意の継承を実行する。

注記  例えば,“background”特性及び“background-color”特性の両特性が与えられるフォーマット化

オ ブ ジ ェ ク ト 上 に 指 定 さ れ る 場 合 , ま ず “ background ” 簡 略 記 述 特 性を 処理 し , そ の 後

“background-color”特性を処理する。 

5.3 

対応特性の値の計算 

“padding-left”

“padding-start”などの対応特性が存在する場合,すべての対応特性に対して計算値が決

定される。与えられるフォーマット化オブジェクトに対する計算値の決定方法は,対応特性のうちどれが

そのオブジェクトに指定されるかに依存する。次を参照する。

絶対特性から相対特性までの対応付けを,次に示す。

a)

ブロック進行方向の“writing-mode”を“top-to-bottom”に指定する場合,

“top”は“before”に対応付

け,

“bottom”は“after”に対応付ける。

b)

ブロック進行方向の“writing-mode”を“bottom-to-top”に指定する場合,“top”は“after”に対応付

け,

“bottom”は“before”に対応付ける。

c)

ブロック進行方向の“writing-mode”を“left-to-right”に指定する場合,

“left”は“before”に対応付け,

“right”は“after”に対応付ける。

d)

ブロック進行方向の“writing-mode”を“right-to-left”に指定する場合,

“left”は“after”に対応付け,

“right”は“before”に対応付ける。

e)

行内進行方向の“writing-mode”を“left-to-right”に指定する場合,

“left”は“start”に対応付け,

“right”

は“end”に対応付ける。

f)

行内進行方向の“writing-mode”を“right-to-left”に指定する場合,

“left”は“end”に対応付け,

“right”

は“start”に対応付ける。


45

X 4179

:2010

g)

行内進行方向の“writing-mode”を“top-to-bottom”に指定する場合,

“top”

は“start”に対応付け,

“bottom”

は“end”に対応付ける。

h)

行内進行方向の“writing-mode”を“bottom-to-top”に指定する場合,

“top”は“end”に対応付け,

“bottom”

は“start”に対応付ける。

i)

行内進行方向の“writing-mode”が奇数行に“left-to-right”と指定され,偶数行に“right-to-left”と指

定される場合,

“left”は“start”に対応付け,

“right”は“end”に対応付ける。

注記  “reference-orientation”は回転であり,対応付けには影響しない。 

5.3.1 

境界特性及びパディング特性 

対応特性の最も単純なクラスは,対応上,絶対特性及び相対特性という二つの可変値しか存在しないク

ラスである。

“border-left-color”

“border-start-color”など,特性名は,絶対指定か相対指定かの選択だけに

おいて異なる。

このクラスについては,対応特性の計算値の決定は次のとおりである。

a)

特性の対応する絶対可変値をフォーマット化オブジェクトに指定する場合,その計算値は対応する相

対特性の計算値の設定に使用される。

b)

対応する絶対特性が明示的に指定されない場合は,絶対特性の計算値は,対応する相対特性の計算値

に設定される。

c)

対応する相対特性がフォーマット化オブジェクトに指定されていて絶対特性が簡略記述の展開だけに

よって指定されている場合,絶対特性の計算値は,対応する相対特性の計算値に設定される。

絶対特性も相対特性も明示的に指定されない場合,指定値の決定規則は,それが特性又は初期値に定義

されれば,継承にも使用される点に注意する。候補となるすべての対応特性について,初期値は同じでな

ければならない。

絶対特性も対応する相対特性も明示的に指定される場合,

上記規則は絶対特性を優先し,

対応する相対特性の指定値は,対応特性の計算値の決定時,無視される。

上記規則を使用して,計算値を決定する対応特性を次に示す。

border-after-color

border-before-color

border-end-color

border-start-color

border-after-style

border-before-style

border-end-style

border-start-style

border-after-width

border-before-width

border-end-width

border-start-width

padding-after

padding-before

padding-end

padding-start


46

X 4179

:2010

   

5.3.2 

マージン特性,間隔特性及び字下げ特性 

“space-before”特性及び“space-after”特性(ブロックレベルフォーマット化オブジェクト)

“space-start”

特性及び“space-end”特性(行内レベルフォーマット化オブジェクト)は,5.3.1 と同じ方法で取り扱われ

るが,対応する絶対特性は,

“margin-top”

“margin-bottom”

“margin-left”及び“margin-right”の集合内に

ある。マージン特性から決定されるどんな space-before 又は space-after の .conditionality 構成要素も,

“retain”に設定される。

注記 1 .conditionality 構成要素の扱いは,CSS2 との互換性のためである。

注記 2  “auto”として指定されるブロック進行寸法における CSS2 マージンの計算値は,0pt である。

“auto”のマージン値から決定されるどんな space-before 又は space-after も,0pt に設定され

る。 

様々な絶対マージン特性に対応するあと二つの特性,

“end-indent”及び“start-indent”

(ブロックレベル

フォーマット化オブジェクト)がある。これらの特性に関しては,対応はもっと複雑であり,対応する

“border-X-width”特性及び“padding-X”特性を含む。ここで X は,

“left”

“right”

“top”又は“bottom”

の一つである。これらの対応特性の計算値は,次のとおりに決定される。

a)

対応する絶対マージン特性がフォーマット化オブジェクトに指定され,フォーマット化オブジェクト

が参照領域を生成するとき,マージンの計算値が,対応する“Y-indent”特性の計算値を計算するのに

用いられる。ここで Y は,

“start”又は“end”のいずれかである。絶対マージン特性の計算値は,こ

れらの特性によって参照される CSS の特性と,関連する CSS 規格の 10.3 等の CSS 記述とで決定され

る。

“start-indent”及び“end-indent”の式を,次に示す。

start-indent = margin-corresponding + padding-corresponding + border-corresponding-width

end-indent = margin-corresponding + padding-corresponding + border-corresponding-width

b)

対応する絶対マージン特性がフォーマット化オブジェクトに指定され,フォーマット化オブジェクト

が 参 照 領 域 を 生 成 し な い と き , マ ー ジ ン の 計 算 値 並 び に 対 応 す る “ border-X-width ” 特 性 及 び

“padding-X”特性の計算値が,対応する“Y-indent”特性の計算値を計算するのに用いられる。

“start-indent”及び“end-indent”の式を,次に示す。

start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding +

border-corresponding-width

end-indent = inherited_value_of(end-indent) + margin-corresponding + padding-corresponding +

border-corresponding-width

c)

対応する絶対マージン特性が明示的に指定されないか,又は対応する相対特性がフォーマット化オブ

ジェクトに指定され,絶対特性だけが簡略記述の展開によって指定されるとき,対応する絶対マージ

ン特性は,次の式に従って計算される。

margin-corresponding = start-indent − inherited_value_of(start-indent) − padding-corresponding −

border-corresponding-width

margin-corresponding = end-indent − inherited_value_of(end-indent) − padding-corresponding −

border-corresponding-width

注記  “start-indent”特性又は“end-indent”特性が指定されないとき,それらの継承された値がこ

れらの式において用いられる。

5.3.3 

高さ特性及び幅特性 

フォーマット化オブジェクトに有効な表記方法に基づき,“height”特性,“min-height”特性,及び


47

X 4179

:2010

“max-height”特性,又は“width”特性,

“min-width”特性,及び“max-width”特性のいずれかは,対応

するブロック進行寸法又は行内進行寸法に変換される。

“height”特性は絶対値であり,

“上”から“下”までの寸法を示している。

“width”特性は,

“左”から

“右”までの寸法を示している。

“writing-mode”が“top-to-bottom”又は“bottom-to-top”のブロック進行方向を指定する場合,変換は

次のとおりである。

a)

“height”

“min-height”又は“max-height”のどれかが指定されるとき

1)

“height”が指定されると,最初に次に設定する。

block-progression-dimension.minimum=<height>

block-progression-dimension.optimum=<height>

block-progression-dimension.maximum=<height>

2)

“height”が指定されないと,最初に次に設定する。

block-progression-dimension.minimum=auto

block-progression-dimension.optimum=auto

block-progression-dimension.maximum=auto

3)

その後,

“min-height”が指定されると,次にリセットする。

block-progression-dimension.minimum=<min-height>

4)

その後,

“max-height”が指定されると,次にリセットする。

block-progression-dimension.maximum=<max-height>

5)

しかし,

“max-height”が“none”として指定されると,次にリセットする。

block-progression-dimension.maximum=auto

b)

“width”

“min-width”又は“min-width”のどれかが指定されるとき

1)

“width”が指定されると,最初に次に設定する。

inline-progression-dimension.minimum=<width>

inline-progression-dimension.optimum=<width>

inline-progression-dimension.maximum=<width>

2)

“width”が指定されないと,最初に次に設定する。

inline-progression-dimension.minimum=auto

inline-progression-dimension.optimum=auto

inline-progression-dimension.maximum=auto

3)

その後,

“min-width”が指定されると,次にリセットする。

inline-progression-dimension.minimum=<min-width>

4)

その後,

“max-width”が指定されると,次にリセットする。

inline-progression-dimension.maximum=<max-width>

5)

しかし,

“max-width”が“none”として指定されると,次にリセットする。

inline-progression-dimension.maximum=auto

“writing-mode”が“left-to-right”又は“right-to-left”のブロック進行方向を指定する場合,変換は次の

とおりである。

a)

“height”

“min-height”又は“max-height”のどれかが指定されるとき


48

X 4179

:2010

   

1)

“height”が指定されると,最初に次に設定する。

inline-progression-dimension.minimum=<height>

inline-progression-dimension.optimum=<height>

inline-progression-dimension.maximum=<height>

2)

“height”が指定されないと,最初に次に設定する。

inline-progression-dimension.minimum=auto

inline-progression-dimension.optimum=auto

inline-progression-dimension.maximum=auto

3)

その後,

“min-height”が指定されると,次にリセットする。

inline-progression-dimension.minimum=<min-height>

4)

その後,

“max-height”が指定されると,次にリセットする。

inline-progression-dimension.maximum=<max-height>

5)

しかし,

“max-height”が“none”として指定されると,次にリセットする。

inline-progression-dimension.maximum=auto

b)

“width”

“min-width”又は“min-width”のどれかが指定されるとき

1)

“width”が指定されると,最初に次に設定する。

block-progression-dimension.minimum=<width>

block-progression-dimension.optimum=<width>

block-progression-dimension.maximum=<width>

2)

“width”が指定されないと,最初に次に設定する。

block-progression-dimension.minimum=auto

block-progression-dimension.optimum=auto

block-progression-dimension.maximum=auto

3)

その後,

“min-width”が指定されると,次にリセットする。

block-progression-dimension.minimum=<min-width>

その後,

“max-width”が指定されると,次にリセットする。

block-progression-dimension.maximum=<max-width>

4)

しかし,

“max-width”が“none”として指定されると,次にリセットする。

block-progression-dimension.maximum=auto

5.3.4 

過制約の幾何 

開始字下げ,終了字下げ,及び領域の内容長方形の行内進行寸法の合計は,最も近い先祖の参照領域の

内容長方形の行内進行寸法に等しいのが望ましい。それらが異なる結果となる場合,終了字下げ(つまり

対応するマージンも)は,同等が真であるように調整される。

5.4 

単純な特性の特色への対応付け 

特性の大部分は同じ名前の特色に対応付ける。同様に,これらのほとんどは,特性からの値を複写する

にすぎない。これらは,B.3 で示した特性表内の“レンダリング”

“フォーマット化”

“規定”

“フォン

ト選択”

“参照”及び“動作”として分類される。例えば,特性 font-style="italic"は,値が“italic”である

font-style 特色に洗練化される。

値が特性の値とは異なる特色も存在する。これらは,特性表の“値変換”に分類される。例えば,特性

background-position-horizontal="left"は,値が“0pt”である background-position-horizontal 特色に洗練化され


49

X 4179

:2010

る。これらの特色に対する値の対応付けを,5.4.15.4.6 に示す。

5.4.1 background-position-horizontal

特性及び background-position-vertical 特性 

“top”

“bottom”

“left”

“right”又は“center”の値は,特性定義で指定する長さに変換される。

5.4.2 column-number

特性 

この特性が適用されるフォーマット化オブジェクトに値を指定していない場合,初期値は特性定義で指

定するとおり,計算される。

5.4.3 text-align

特性 

“left”又は“right”の値は,特性定義で指定するとおり,表記方法の相対値に変換される。

5.4.4 text-align-last

特性 

“left”又は“right”の値は,特性定義で指定するとおり,表記方法の相対値に変換される。

5.4.5 z-index

特性 

値は絶対値に変換される。例えば,洗練化値は,指定値に親フォーマット化オブジェクトが存在すれば,

その z 指標の洗練化された値を加えたものとなる。

5.4.6 language

特性 

[ISO 639-1]に適合する 2 文字のコードである値は,対応する 3 文字の[ISO 639-2]用語学用コードに変換

される。

[ISO 639-2]に適合する 3 文字の書誌用コードである値は,対応する用語学用コードに変換される。

値“none”又は“mul”は“und”に変換される。

5.5 

複雑な特性の特色への対応付け 

より複雑な方法で特色に影響を与える特性も少数存在する。詳細を 5.5.15.5.7 に示す。

5.5.1 word-spacing

特性及び letter-spacing 特性 

これらの特性は,

特性定義で記述するとおり,

space-start 特色及び space-end 特色に値を設定してもよい。

5.5.2 reference-orientation

特性 

reference-orientation 特色は,洗練化の間,reference-orientation 特性から複写される。構成中,絶対方位が

決定される(4.2.2 参照)

5.5.3 writing-mode

特性及び direction 特性 

writing-mode 特色,direction 特色,及び unicode-bidi 特色は,洗練化の間,同じ名前の特性から複写され

る。構成中,これらは,4.2.2 に従って,block-progression-direction 特色,inline-progression-direction 特色,

及びシフト方向特色について,絶対方位を決定する場合に使用される。

5.5.4 absolute-position

特性 

absolute-position の値が“absolute”又は“fixed”である場合,left-position,top-position などの特色の値は,

“left”特性及び“top”特性から直接複写される。それ以外の場合,これらの特色の値は,洗練化中は定

義されないままであり,構成中に決定される。

5.5.5 relative-position

特性 

相対位置の値が“relative”である場合,left-offset 特色及び top-offset 特色の値は,

“left”特性及び“top”

特性から直接複写される。

“right”特性は指定されるが,

“left”が指定されない場合,left-offset は“right”

の負の値に設定される。

“left”も“right”も指定されない場合,left-offset は 0 となる。

“bottom”特性は指

定されるが,

“top”が指定されない場合,top-offset は“bottom”の負の値に設定される。

“top”も“bottom”

も指定されない場合は,top-offset は 0 となる。


50

X 4179

:2010

   

5.5.6 text-decoration

特性 

“text-decoration”特性の値は,blink 特色,スコア特色及びスコア色特色の集合に値を提供する。指定色

の値は,

“text-decoration”特性が洗練化されたフォーマット化オブジェクトの color 特色の値である。

トークン“underline”を包含する特性値は,underline-score 特色に“true”の値を設定し,underline-score-color

特色に指定色の値を設定する。

トークン“overline”を包含する特性値は,overline-score 特色に“true”の値を設定し,overline-score-color

特色に指定色の値を設定する。

トークン“line-through”を包含する特性値は,through-score 特色に“true”の値を設定し,through-score-color

特色に指定色の値を設定する。

トークン“blink”を包含する特性値は,blink 特色に“true”の値を設定する。

ト ー ク ン “ no-underline ” を 包 含 す る 特 性 値 は , underline-score 特 色 に “ false ” の 値 を 設 定 し ,

underline-score-color 特色に指定色の値を設定する。

トークン“no-overline”を包含する特性値は,overline-score 特色に“false”の値を設定し,overline-score-color

特色に指定色の値を設定する。

ト ー ク ン “ no-line-through ” を 包 含 す る 特 性 値 は , through-score 特 色 に “ false ” の 値 を 設 定 し ,

through-score-color 特色に指定色の値を設定する。

トークン“no-blink”を包含する特性値は,blink 特色に“false”の値を設定する。

5.5.7 

フォント特性 

領域のフォント特色は,フォント特性の組合せから間接的に派生し,フォント及びそのフォントからの

フォント表を選択するために使用される。

XSL がフォントに想定する抽象モデルについては,7.9.1 で記述する。

特定のフォントを指定するための XSL の機構は存在しない。代わりに,選択基準の集合に基づき,利用

者エージェントに利用できるフォントから選択フォント(selected font)が選択される。選択基準(selection

criteria)とは,フォント特性“font-family”,“font-style”,“font-variant”,“font-weight”,“font-stretch”,及

び“font-size”

,さらに,幾つかのフォーマット化オブジェクト,一つ以上の文字である。選択基準の使用

方法については,

“font-selection-strategy”特性で詳細に指定している(7.9.3 参照)

nominal-font 特色は,選択フォントに設定される。選択フォントが存在せず,“欠落文字”グリフが表示

される場合は,nominal-font 特色はそのグリフを包含するフォントに設定され,それ以外の場合,例えば,

その他の機構を使用して,文字が非表示であることを示す場合などは,定格フォント(nominal-font)はシ

ステムフォントとなる。

dominant-baseline-identifier 特色及び actual-baseline-table 特色は,“dominant-baseline”特性の値から派生す

る。この特性の値は,三つの構成要素をもつ複合値である。三つの構成要素とは,主要ベースラインに対

す る ベ ー ス ラ イ ン 識 別 子 , ベ ー ス ラ イ ン 表 及 び ベ ー ス ラ イ ン 表 の フ ォ ン ト サ イ ズ を い う 。

dominant-baseline-identifier 特色は最初の構成要素から設定される。ベースライン表フォントサイズは,ベ

ースライン表からのベースラインの位置を基準化するために使用され,主要ベースラインの位置はその他

の ベ ー ス ラ イ ン の 位 置 か ら 減 算 さ れ , 主 要 ベ ー ス ラ イ ン か ら 相 対 的 に 表 を ず ら す 。 こ の 表 は ,

actual-baseline-table 特色の値である。

5.6 

非特性ベースの特色生成 

is-reference-area 特色は,特定のフォーマット化オブジェクトについて“true”に設定される。これらの

フォーマット化オブジェクトの記述は,この場合に明示的に指定される。その他のすべてのフォーマット


51

X 4179

:2010

化オブジェクトについては,

“false”に設定される。

5.7 

特性ベースの変換 

5.7.1 text-transform

特性 

この特性を指定すると,洗練化の間,適切に“character”特性の値を変更することによってケースの変

更が実行される。

注記  “text-transform”特性は,国際化問題が深刻であるため,XSL ではその使用を禁止している。 

5.8 Unicode

双方向(BIDI)処理 

スクリプトによっては,右から左に向かって,水平に文字が書き込まれるものもある。文書の中には,

特にアラビア語又はヘブライ語で書かれた文書,言語が混合している文脈などでは,視覚的に表示される

単一のブロック内のテキストは,方向性が混同した状態で現れることがある。この現象を双方向性,又は

短縮して BIDI と呼ぶ。

Unicode 双方向(BIDI)アルゴリズム[UNICODE UAX #9]は,テキストの適正な方向性を決定するため

に,複雑なアルゴリズムを定義している。アルゴリズムは,埋込み及び上書きのための明示的な制御と同

様に,文字特性ベースの暗黙的な部分にも基づいている。

洗練化の最終段階では,このアルゴリズム及び各文字の Unicode 双方向性文字型を使用して,テキスト

の暗黙的な方向性をフォーマット化オブジェクトによる明示的なマーク付けに変換する。例えば,アラビ

ア文字の部分シーケンスが,それ以外はすべて英語の段落中に現れる場合,その内容として,アラビア文

字をもつ行内フォーマット化オブジェクトを生成することになる。この場合,

“direction”特性は“rtl”と

なり,“unicode-bidi”特性は“bidi-override”となる。フォーマット化オブジェクトによって,事前に右か

ら左に暗黙に決められていたアラビア文字の位置が明示的になる。

[UNICODE UAX #9]で定義されるとおり,Unicode 双方向(BIDI)アルゴリズムは,テキストの流れを

入力として受け取り,主に次の三つの段階で進行する。

a)

入力テキストを段落に分割する。残りのアルゴリズムは,段落の区切り記号間のテキストにだけ影響

する。

b)

テキストの埋込みレベルを解決する。この段階では,双方向性の文字型は,それに Unicode 方向フォ

ーマット化コードを加えて,解決済み埋込みレベル(resolved embedding levels)の生成に使用される。

各文字に対応する標準双方向性文字型は,Unicode 文字データベース[UNICODE Character Database]で

指定される。

c)

いったん,テキストが行に分割されると,解決済み埋込みレベルを使用して,行ごとに表示用にテキ

ストを並べ替える。

上述のとおり,アルゴリズムには,XSL 処理モデルに適合させるための適応が必す(須)である。まず,

最終段階のテキストの並べ替えは,洗練化の間は実行されない。代わりに,領域木の生成の間,並べ替え

に相当する XSL の処理が実行される。各グリフの行内進行方向は,4.2.5 で記述されるグリフのスタック

を制御するために使用される。行内進行方向は,ブロックレベルで,

“writing-mode”特性によって決定さ

れるが,ブロック内の行内フォーマット化オブジェクトの内部では,

“direction”特性及び“unicode-bidi”

特性によって決定される。これら二つの特性は木構築が生成する行内フォーマット化オブジェクト上に指

定されるか,又は,洗練化のこの段階によって導入される行内フォーマット化オブジェクト上の領域に存

在するかのいずれかである。


52

X 4179

:2010

   

次に,アルゴリズムは,一つ以上のフォーマット化オブジェクトの内容から生じる文字のシーケンスに

適用される。文字のシーケンスは,フォーマット化オブジェクト木の素片の処理によって生成される。素

片(fragment)とは,木内の幾つかのフォーマット化オブジェクトの子の隣接する任意のシーケンスであ

る。シーケンスは,fo:character レベルまで素片の昇順たどりを実施することによって生成される。昇順た

どりの間,すべての fo:character フォーマット化オブジェクトはシーケンスに文字を追加する。さらに,昇

順の走査で,値が“embed”又は“bidi-override”である“unicode-bidi”特性をもつノードに遭遇する場合

は,

“direction”特性及び“unicode-bidi”特性の値に適応するように,シーケンスに Unicode RLO/LRO 文

字又は RLE/LRE 文字を適切に追加する。内容の走査後,そのノードに戻る時には,Unicode PDF 文字を追

加する。この場合,フォーマット化オブジェクト木素片は,文字のシーケンスに平たん(坦)化される。

この文字のシーケンスを後に文字の平たん(坦)化シーケンス(flattened sequence of characters)という。

さらに,XSL では,アルゴリズムは,段落ではなく,区切りテキスト範囲(delimited text ranges)に適

用される。区切りテキスト範囲は,最大の文字の平たん(坦)化シーケンスであり,どのような区切り文

字も包含しない。ブロック領域を生成するフォーマット化オブジェクトはすべて区切り文字である。区切

りテキスト範囲は,その内容について区切り文字として動作する。その親の内容についても区切り文字と

して動作する。すなわち,親が文字内容をもつ場合,ブロック領域を生成するその子フォーマット化オブ

ジェクトは,その文字内容をそれぞれが区切りテキスト範囲である匿名ブロック(anonymous block)に分

割するために動作する。同様に,fo:multi-case フォーマット化オブジェクトは,その内容及びその親の内

容について,区切り文字として動作する。最後に,その方位が主要ベースラインに垂直ではないテキスト

は,主要ベースラインに垂直なテキストに対して,区切り文字として動作する。テキストの文字に対応す

るグリフの向きがすべて主要ベースラインに垂直である場合,テキストの方位は主要ベースラインに垂直

であるという。

注記  ほとんどの場合,区切りテキスト範囲は最大の文字シーケンスであり,一つ以上の行領域のシ

ーケンスにフォーマットされることになる。fo:multi-case 及びその方位が主要ベースラインに垂

直なテキストの場合,

区切り範囲は,

行又は行のシーケンスの部分シーケンスであってもよい。

例えば,縦書きの表記方法でフォーマット化された日本語内では,回転したラテンテキスト及

びアラビアテキストは,そのラテン及びアラビアテキストに隣接した縦書きの日本文字によっ

て区切られることになる。行内領域を生成したフォーマット化オブジェクトはいずれも,区切

りテキスト範囲の決定に影響しない。

それぞれの区切りテキスト範囲については,ブロック領域を生成する最も近い(自身を含む)先祖であ

るフォーマット化オブジェクトの行内進行方向は,Unicode 双方向(BIDI)アルゴリズムで使用される段

落埋込みレベル(paragraph embedding level)を決定する。これは,区切りテキスト範囲に関する省略時の

埋込みレベルである。

埋込みレベル(embedding level)は,テキストの組込みの深さを示す数値であり,そのレベルでのテキ

ストの省略時の方向である。

テキストの埋込みレベルの最小値は 0 であり,

最大埋込みレベルは 61 である。

埋込みレベルが 61 を超える場合は誤りである。XSL プロセサは誤りを通知してもよい。誤りを通知しな

い場合は,埋込みレベルの最大値をそれより高くすることによって,誤りから回復しなければならない。

Unicode 双方向(BIDI)アルゴリズムの第 2 段階は,解決済み埋込みレベル(resolved embedding level)

の区切りテキスト範囲内の各文字を分類することである。各文字の解決済み埋込みレベルは,段落の埋込

みレベルより大きいか又は同じになる。右向きのテキストは,常に奇数レベルで終わり,左向きのテキス

トは,常に偶数レベルで終わる。さらに,数値テキストは,常に段落レベルよりも高いレベルで終わる。


53

X 4179

:2010

い っ た ん , 解 決 済 み 埋 込 み レ ベ ル が 区 切 り テ キ ス ト 範 囲 に 決 定 さ れ る と,“ direction” 特 性 及 び

“unicode-bidi”特性に適切な値を指定する新しい fo:bidi-override フォーマット化オブジェクトが,次の制

約を満たすように,区切りテキスト範囲に平たん(坦)化されたフォーマット化オブジェクト木素片内に

挿入される。

a)

区切りテキスト範囲内の文字はいずれも,文字の行内進行方向がその解決済み埋込みレベルと一致し

なければならない。

b)

段落の埋込みレベルから最大の解決済み埋込みレベルまでの各解決済み埋込みレベル L,及び各文字

の解決済み埋込みレベルが より大きいか又は等しい各文字の最大隣接シーケンス については,次

のとおりである。

1) 

その内容として,に平たん(坦)化するフォーマット化オブジェクト木素片をもち,解決済み埋

込みレベル と一致する“direction”特性をもつ行内フォーマット化オブジェクト が存在する。

注記  現存のフォーマット化オブジェクトによって,又は現存のフォーマット化オブジェクトの

“direction”特性及び“unicode-bidi”特性に値を指定することによって制約が満たされる

場合は,は挿入されたフォーマット化オブジェクトでなくてもよい。 

2)

シーケンス の任意の部分を包含するフォーマット化オブジェクトは,すべて適正に に組み込ま

れ,新しいフォーマット化オブジェクトの挿入に優先して,フォーマット化オブジェクト内に存在

する組込み関係を維持する。

注記  この制約を満たすことによって,各フォーマット化オブジェクト木内の現存のフォーマッ

ト化オブジェクトの一つ以上を,元の未分割のフォーマット化オブジェクトと同じ計算特

性値の集合をもつ各フォーマット化オブジェクトのペアに分割することが必す(須)とな

る場合もある。ペアの一つは,の開始前で終了するか,又は の終了後に開始すること

になる。もう一つは,の開始前に開始するか,又は の終了前に終了することになる。

生成されたペアは,この制約を満たすために,適正に組込みを続行しなければならない。

例えば,右向きのテキストが“L”という文字で表現され,左向きのテキストは“R”とい

う文字で表現される。部分木を,次に示す。

  <fo:block>

        LL

    <fo:inline id="A" color="red">LLLRRR</fo:inline>

        RR

  </fo:block>

段落埋込みレベルが“0”であるとすると,解決済み埋込みレベルでは次の挿入及び複写

構造が必す(須)である。

  <fo:block>

        LL

    <fo:inline id="A" color="red">LLL</fo:inline>

    <fo:bidi-override direction="rtl">

      <fo:inline color="red">RRR</fo:inline>

            RR

    </fo:bidi-override>

  </fo:block>


54

X 4179

:2010

   

id が“A”に等しい fo:inline が二つの fo:inline に分割されている点に注意する。最初の

fo:inline だけが,元の“A”の id を保有する。フォーマット化オブジェクトに含まれる id

は一意でなければならないため,任意の id 特性の計算値は,ペアのうちの 2 番目のメンバ

で複写されてはならない。

c)

挿入が可能な fo:bidi-override で,上の制約を満たすものはほとんど存在しない。すなわち,木構築

の間に生成されたフォーマット化オブジェクトのほか,文書に存在する埋込みレベルを表現するの

に必要なだけの fo:bidi-override フォーマット化オブジェクトを洗練化されたフォーマット化オブジ

ェクト木だけに追加する。

5.9 

 

XSL スタイルシート内の属性における特性値規定は,すべて式で表現することができる。これらの式は

指定される特性の値を表現する。式は,最初に評価され,その結果生じた値が,特性の値の決定に使用さ

れる。

注記  式 言 語 は限 ら れた 集 合のデ ー タ 型で の 操作 に 対応す る 。 これ ら は  <angle> , <time>及 び

<frequency>  を含まない。これらのデータ型の値は,式言語の文字列でなければならない。こ

れらのデータ型の定義は,これらの文字列の許容される書式を指定する。

5.9.1 

特性文脈 

特性は,特性固有の文脈と対照して,評価される。この文脈は次を提供する。

−  特性値に使用できる結果の型のリスト。

−  結果の式値の型から特性に使用できる型への変換。

−  現在のフォントサイズ値。

−  型による相対数値から追加の式にある絶対数値への変換。

注記  すべての型に変換が提供されるわけではない。変換が指定されない場合は,誤りである。

文字列,キーワード,数値などの型インスタンスが式で認識される場合は,特性文脈と対照して評価さ

れる。これは,固有の値に能力を提供して,特性文脈の固有アルゴリズムを用いて変換するか,又は全体

として式の評価に使用する変換を用いて変換される。

例えば,ある特性に指定された“auto”列挙トークンは,計算値である。こういったトークンは,特性

定義で指定されたアルゴリズムを介して,固有の型インスタンスに変換されることになる。このような場

合,結果として生じた値は,フォーマット化オブジェクトのある局面の幅を指定する絶対的な長さであっ

てもよい。

さらに,これによって相対数値など一定の型は,数学的演算に優先して絶対数値に解決することができ

る。

特性文脈はすべて,5.9.12 で指定されるとおり,変換が可能である。

5.9.2 

評価順序 

特性の集合が,フォーマット化オブジェクト木内の固有のフォーマット化オブジェクトについて評価さ

れている場合,特性の評価に必す(須)である固有の順序が存在する。本質的に,

“font-size”特性は,他

のすべての特性の前に,まず評価されなければならない。

“font-size”特性が評価されれば,他の任意の特

性は,順序を問わず評価されてもよい。

“font-size”特性が評価されると,評価に使用する現在のフォントサイズは,親要素のフォントサイズと

なる。

“font-size”特性が評価されると,その値は,式を更に評価するすべての特性値のすべての特性文脈

に指定された現在のフォントサイズとして使用される。


55

X 4179

:2010

5.9.3 

基本機構 

[1]        Expr

      ::=       AdditiveExpr

[2]    PrimaryExpr

   ::=    '(' Expr ')'

| N m r

   |

Literal

| C l

   |

Keyword

   |

EnumerationToken

   |

FunctionCall

5.9.4 

関数呼出し 

[3]    FunctionCall

   ::=    FunctionName '(' ( Argument ( ',' Argument)*)? ')'

[4]        Argument

      ::=       Expr

5.9.5 

数値 

数値は,XSL の式内のすべての型の数字を表す。これらの数値は絶対値であるものもあれば,  その他

の値の集合に関連するものもある。これらの値はすべて浮動小数点数を使用して,その定義の数字部分を

表現する。

浮動小数点数は,任意の倍精度 64 ビットフォーマット IEEE 754 値をもつことができる。これらは,特

殊な“非数値”

(NaN)

,正負無限大及び正負 0 を含む。IEEE 754 規格の主要規則の要約を記述している JLS

の 4.2.3(Floating-Point Types, Formats, and Values)を参照する。

[5]    Numeric

   ::=    AbsoluteNumeric

   |

RelativeNumeric

[6]    AbsoluteNumeric     ::=    AbsoluteLength

[7]    AbsoluteLength

   ::=    Number AbsoluteUnitName?

[8]    RelativeNumeric

   ::=    Percent

   |

RelativeLength

[9]        Percent

      ::=       Number '%'

[10]    RelativeLength

   ::=    Number RelativeUnitName

次の演算子は,数値とともに使用してもよい。

+

加算を実行する。

-

減算又は符号反転を実行する。

*

乗算を実行する。

div

IEEE 754

に従って,浮動小数点除算を実行する。

mod

切捨て除算から剰余を返す。


56

X 4179

:2010

   

注記 1  XML は名前に-を使用することができるため,通常,UnaryExpr の符号反転として使用されな

い場合,空白を-演算子に先行させる必要がある。例えば,10pt - 2pt  という式は,10 ポイン

トから 2 ポイントを減算するという意味である。10pt - 2pt という式は,10 という長さの値

に“pt-2pt”という単位が付いていることを意味する。 

注記 2  mod 演算子の例を,次に示す。

5 mod 2  は,1 を返す。

5 mod -2  は,1 を返す。

-5 mod 2  は,-1 を返す。

-5 mod -2  は,-1 を返す。

注記 3  mod 演算子は,Java 及び ECMAScript の%演算子と同じであり,丸め除算から剰余を返す IEEE

剰余演算子とは異なる。 

数式

[11]    AdditiveExpr

   ::=    MultiplicativeExpr

   |

AdditiveExpr

'+'

MultiplicativeExpr

   |

AdditiveExpr

'-'

MultiplicativeExpr

[12]    MultiplicativeExpr     ::=    UnaryExpr

   |

MultiplicativeExpr

MultiplyOperator

UnaryExpr

   |

MultiplicativeExpr

'div'

UnaryExpr

   |

MultiplicativeExpr

'mod'

UnaryExpr

[13]    UnaryExpr

   ::=    PrimaryExpr

   |

'-'

UnaryExpr

注記  この文法は,優先順位に影響する。最も低い優先順位から示す。 

+,-

*,div,mod

演算子は,すべて左結合である。例えば,2*3 + 4 div 5  は  (2*3) + (4 div 5)  と等しい。

AdditiveExpr で非数値が使用され,その型から絶対数値への特性文脈変換が存在しない場合,式は無効

であり,誤りと考えられる。

5.9.6 

絶対数値 

絶対数値は絶対の長さであり,Number とべき乗された UnitName とから構成されるペアである。記述さ

れた絶対の長さに単位がついていない場合,単位のべきは 0 と考えられる。このため,すべての浮動小数

点数は,0 乗された単位をもつ長さである。

各単位名は,メートルなど,共通の測度の内部単位に対する内部比率に関連する。値が特性式に記述さ

れる場合,まず,測度の内部単位に変換され,その後数学的な演算が実行される。

さらに,剰余,加算及び減算の各演算子だけは,演算子のいずれの側の数値も同じ単位のべきをもつ絶

対数値であること必す(須)である。その他の演算では,単位のべきが異なってもよく,その結果は,数

学的に代数におけるべきの取扱いに一致するのが望ましい。

特性定義は,絶対の長さを特定のべきに制約してもよい。例えば,フォントサイズを指定するとき,値

の単位は 1 乗であるとしてもよい。すなわち,10 pt など,単一のべき単位が指定されてもよい。

特性の最終値を計算する場合,絶対数値の結果のべきは,0 又は 1 のいずれかでなければならない。そ

の他のべきが指定される場合,値は誤りである。


57

X 4179

:2010

5.9.7 

相対数値 

相対の長さとは,他の値の集合に関連して計算された値である。式の一部として書き込まれる場合,特

性文脈を介して,絶対数値に変換されるか,特性値として逐語的に渡されるかのいずれかである。

特性文脈が相対数値への利用可能な変換をもたず,加算演算内など,式評価に変換が必す(須)である

場合は,誤りである。

5.9.7.1 

パーセント 

パーセンテージは,1/100 単位で計算される値である。例えば,パーセント値としての 10 %は,浮動小

数点数としての 0.10 である。絶対数値への変換時,パーセンテージは,特性定義内で,既知の特性値のパ

ーセンテージとして定義される。パーセンテージが“auto”に評価される場合,完全な式は“auto”に評価

される。

例えば,

“font-size”特性の値が“110%”であるということは,現在のフォントサイズの 1.1 倍であるこ

とを意味する。このようにパーセンテージに使用できる変換の定義は,特性定義上に指定される。変換が

指定されない場合,結果の値はパーセンテージである。

5.9.7.2 

相対の長さ 

相対の長さとは単位ベースの値であり,font-size 特性の現在の値に照らして測定される。

測定の相対単位は,

“em”しか存在しない。

“1em”の定義は,現在のフォントサイズに等しい。例えば,

“1.25em”という値は,現在のフォントサイズの 1.25 倍を意味する。

em 測定法が式で使用される場合,現在の特性の文脈のフォントサイズ値に従って変換される。式の結果

は絶対の長さである。7.9.4 を参照する。

5.9.8 

文字列 

文字列は,リテラル又は列挙トークンのいずれかとして表示される。すべての特性文脈は,列挙トーク

ンから文字列への変換が可能である。5.9.12 を参照する。

5.9.9 

 

色は,色空間から特定の色を識別するために使用される値の集合である。この規格では,RGB[sRGB](赤,

緑,青)及び ICC(International Color Consortium)の色だけを取り扱う。

RGB 色は,16 進表記を使用して,式言語内で直接表示される。ICC には icc-color 関数を介してアクセ

スできる。system-color 関数を通じて,又は特性文脈を介して EnumerationToken から変換されても,色へ

のアクセスが可能である。

5.9.10 

キーワード 

キーワードは,計算値又はその他の特性値にアクセスする文法内の特別なトークンである。使用可能な

トークンを  5.9.10.1 で定義する。

5.9.10.1 inherit 

この特性は,フォーマット化オブジェクトの親オブジェクトの特性と同じ計算値をとる。

注記  “inherit”は,演算と混ざった式としては許容されない。同じ機能は,演算と混ざり得る

from-parent()  関数とによって与えられる。 

5.9.11 

字句構造 

式を処理するとき,空白(ExprWhitespace)は,文法での明示的な定義がなくとも,あらゆる式トーク

ンの前後で使用できる。文法内のトークンを字句的に明確にするために空白が必要な場合もある。本質的

に,式のトークン化が生じた後には存在しないものとして,空白を取り扱うのが望ましい。

次の特殊なトークン化規則は,

文法を明確にするために,

指定された順序で適用されなければならない。


58

X 4179

:2010

   

− NCName の次にくる文字(ExprWhitespace の介入後であることもある。

)が“(”である場合,トーク

ンは FunctionName として認識されなければならない。

−  数は,

“.”以外の数字ではない文字が最初に現れた時点で終了する。これによって,長さの単位トー

クンが適正に解析できる。

− Number のすぐ後に NCName がくる場合は,UnitName として認識されるか,又は誤りである。

− Keyword 値は EnumerationToken に優先する。

−  数値の次に NCName がくる場合は,OperatorName として認識されるか,又は誤りである。

式字句構造

[14]    ExprToken

   ::=   '(' | ')' | '%'

| O e t

    |

FunctionName

    |

EnumerationToken

|  u b

[15]    Number

   ::=    FloatingPointNumber

[16]    FloatingPointNumber

   ::=    Digits ('.' Digits?)?

| ' D i

[17]       Digits

      ::=       [0-9]+

[18]    Color

   ::=    '#' AlphaOrDigits

[19]    AlphaOrDigits

   ::=    [a-fA-F0-9]+

[20]    Literal

   ::=    '"' [^"]* '"'

    |

"'"

[^']*

"'"

[21]    Operator

   ::=    OperatorName

    |

MultiplyOperator

    |

'+ |

'-'

[22]    OperatorName

   ::=    'mod' | 'div'

[23]    MultiplyOperator

   ::=    '*'

[24]    Keyword

   ::=    'inherit'

[25]    FunctionName

   ::=    NCName

[26]    EnumerationToken

   ::=    NCName

[27]       AbsoluteUnitName

      ::=       'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'px'

[28]    RelativeUnitName

   ::=    'em'

[29]    ExprWhitespace

   ::=    S

5.9.12 

式値変換 

式評価の結果である値は,特性値型に変換されてもよい。例えば,値が正当な国名コードである場合な

ど,これが単に集合構成の検査であることもあれば,  値が整数など単純な型であり,変換が必す(須)で

あることもある。

すべての型の変換が可能である必要はない。式値が特性値に必要な型に変換できない場合は,誤りであ

る。

どの変換が可能であるかを

表 5.1 に示す。


59

X 4179

:2010

表 5.1−可能な式値変換型

可能な変換

制約

NCName

色,system-color()  関数を介する。

列挙値,特性定義で定義される。 
文字列リテラルに対するもの。

特性に依存する正当な値の集合に照ら

して,値を検査してもよい。

AbsoluteNumeric

整数,round()  関数を介する。

色,RGB 色値と同じ。

RGB 色値に変換する場合は,色空間に
ある正当な色値でなければならない。

RelativeLength AbsoluteLength に対するもの。

適用される固有の変換は特性固有であり,各特性の定義で規定されている。

注記  複合特性値の変換は,許容されない。そのため,例えば,

space-before.optimum="inherited-property-value(space-before)"  は妥当でない。例えば,

space-before="inherited-property-value(space-before)"  及び

space-before.optimum="inherited-property-value(space-before.optimum)"  は,それらは変換を必要と

しないので,許容される。

5.9.13 

測定単位の定義 

この規格における測定単位の定義を,

表 5.2 に示す。

表 5.2−測定単位の定義 

名前

定義

cm [ISO 31]を参照 
mm [ISO 31]を参照 
in 1in=2.54cm 
pt 1pt=1/72in 
pc 1pc=12pt 
px

5.9.13.1

を参照

em

5.9.7.2

を参照

5.9.13.1 

画素 

XSL は,フォーマッタへの要求である“px”単位を解釈し,典型的なコンピュータモニタでの 1 画素の

表示に近い装置依存の測定を選択する。この解釈を次に示す。

a)

望ましい“1px”の定義は,次である。

− http://www.w3.org/TR/REC-CSS2/syndata.html#x39 又は置き換える正誤表の arc-span 規則で指定され

る距離以下の距離となる,装置ドットの最大の整数でカバーされた実際の距離。装置ドットのサイ

ズはドット中央間の距離として測定される。

−  1 装置ドットの最小サイズを用いるのが望ましい。

−  この計算は各軸で個々に行われ,各軸の値が異なってもよい。

b)

しかし,実装者は,固定変換係数を代わりに選択し,1/92 インチ,1/72 インチなど,絶対測定単位と

して“px”を取り扱ってもよい。

注記 1  1 インチ(1in)は,表 5.2 で示したとおり,2.54cm である。

注記 2  望ましくない影響を引き起こすため,式では,他の絶対単位と画素とを混同しないことが

望ましい。特定の警告についても,画素を使用して指定された継承特性値とともに使用す

るのが望ましい。


60

X 4179

:2010

   

利用者エージェントが,各軸の装置ドットの整数と一致しない“px”の寸法を選択する

場合,望ましくない影響を引き起こす可能性がある。その影響を次に示す。

−  拡大縮小されたラスタ図形処理におけるモアレパタン。

−  レンダラがフォントサイズ又は図形サイズを実際のドットサイズまで大きく丸める場

合の,レンダリングできない重複領域。

−  レンダラがフォントサイズ又は図形サイズを実際のドットサイズまで小さく丸める場

合の,領域間の広範な間隔。

−  容認できない小さなテキスト及びレイアウトを含む読み取り不可能な結果。例えば,

レイアウトがインチ当たり 72 ドットで計算されたが,その結果が装置ドットで既に指

定されているとレンダラが仮定し,インチ当たり 600 ドットでレンダリングする場合

などである。

スタイルシート作成者は,画素の実際のサイズが装置によって異なってもよいことを理

解しているのが望ましい。

−  “px”単位を利用するスタイルシートは,異なる実装又は単純な実装とは異なる出力

装置間で,同じ結果を生成しなくてもよい。

−  スタイルシート全体が“px”単位で表現されても,その結果は装置ごとに異なっても

よい。

5.10 

コア関数ライブラリ 

5.10.1 

数の関数 

numeric floor(numeric)

floor 関数は,引数ほど大きくはないが,正の無限大に最も近い最大整数を返す。この関数に対する

数値引数は,単位のべきが 0 でなければならない。

注記  単位のべきが 1 であることを要求される特性に floor 関数を使用する必要がある場合,

“floor(1.4in div 1.0in)*1.0in”などの式を使用しなければならない。これは,ceiling 関数,round

関数,及びその他の類似する関数で,単位のべきが 0 であることが必す(須)であるものにも

適用される。 

numeric ceiling(numeric)

ceiling 関数は,引数ほど小さくはないが,負の無限大に最も近い最小整数を返す。この関数に対す

る数値引数は,単位のべきが 0 でなければならない。

numeric round(numeric)

round 関数は,引数に最も近い整数を返す。このような数が二つ存在する場合は,正の無限大に最

も近いものが返される。この関数に対する数値引数は,単位のべきが 0 でなければならない。

numeric min(numeric, numeric)

min 関数は,二つの数値引数のうち,小さい方を返す。これらの引数の単位のべきは同一でなけれ

ばならない。

numeric max(numeric, numeric)

max 関数は,二つの数値引数のうち,大きい方を返す。これらの引数の単位のべきは同一でなけれ

ばならない。

numeric abs(numeric)

abs 関数は,数値引数の絶対値を返す。すなわち,数値引数が負の場合,引数を符号反転した値を


61

X 4179

:2010

返す。

5.10.2 

色の関数 

color rgb(numeric, numeric, numeric)

rgb 関数は,RGB 色空間に属する固有の色を返す。この関数に対するパラメタは,長さのべきが 0

である実数でなければならない。

color rgb-icc(numeric, numeric, numeric, NCName, numeric, numeric)

rgb-icc 関数は,ICC 色プロファイルに属する固有の色を返す。色プロファイルは名前のパラメタ(4

番目のパラメタ)によって指定される。この色プロファイルは, fo:color-profile フォーマット化オブ

ジェクトを使用して,fo:declarations フォーマット化オブジェクトで,宣言されなければならない。

最初の三つのパラメタは,sRGB 色空間に属するフォールバック色を指定する。色プロファイルを

利用できない場合に,この色を使用する。

色は,名前パラメタの後に指定される一つ以上の色値(実数)のシーケンスによって指定される。

これらの値は色プロファイルに固有である。

color system-color(NCName)

system-color 関数は,与えられる名前のついた色を定義するシステムを返す。

5.10.3 

フォントの関数 

object system-font(NCName, NCName?)

system-font 関数は,システムフォントの特質を返す。最初の引数は,システムフォントの名前であ

り,2 番目の引数は省略可能であり,特質を指定する特性を名前付けする。2 番目の引数が省略される

場合,返される特質は,式が割り当てられる特性の名前と同じである。

例えば,

“system-font(heading,font-size)”という式は,

“heading”と名前付けされたシステムフォント

のフォントサイズの特質を返す。これは,特性割当て“font-size="system-font(heading)"”と等しい。

5.10.4 

特性値の関数 

object inherited-property-value(NCName?)

inherited-property-value 関数は,名前が指定された場合はその引数に一致する特性の継承値を返す。

名前が省略されていた場合は,式が評価される特性の継承値を返す。この特性が継承特性ではない場

合 は , 誤 り で あ る 。 引 数 が 簡 略 記 述 特 性 を 指 定 し , 計 算 さ れ た 特 性 に 一 致 す る 引 数 を も つ

inherited-property-value 関数だけで式が構成される場合は,簡略記述が各特性に展開する簡略記述の展

開と解釈され,それぞれがその特性に一致する引数をもつ inherited-property-value の値をもつ。簡略記

述特性に一致する引数がその他の方法で使用される場合はいずれも,誤りである。同様に,式が複合

デ ー タ 型 の 特 性 と し て 記 述 さ れ る 場 合 , 及 び 式 が 計 算 さ れ る 特 性 に 一 致 す る 引 数 を も つ

inherited-property-value 関 数 だ け か ら な る 場 合 , そ れ は そ の 構 成 要 素 に 一 致 す る 引 数 を も つ

inherited-property-value の値をもつ複合特性の各構成要素に展開されて解釈される。複合データ型の特

性に一致する引数がその他の方法で使用される場合はいずれも,誤りである。

返された“継承値”は,このオブジェクトの親のこの特性の計算値である。例を次に挙げる。

<fo:list-block>

  ...

  <fo:list-item color="red">

    <fo:list-item-body background-color="green">


62

X 4179

:2010

   

      <fo:block background-color="inherited-property-value(color)">

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

</fo:list-block>

fo:block の background-color 特性の値は,“red”に割り当てられる。これは,fo:block の親である

fo:list-item-body 上の color 特性の値のうち,background-color 以外で,継承後の計算値が“red”である

ためである。

numeric label-end()

label-end 関数は,リストについて,label-end の計算値を返す。7.30.11 の定義を参照する。

numeric body-start()

body-start 関数は,リストについて,body-start の計算値を返す。7.30.12 の定義を参照する。

object from-parent(NCName?)

from-parent 関数は,名前が指定された場合はその引数に一致する特性の計算値(5.1 参照)を返す。

名前が省略されていた場合は,式が評価される特性の計算値を返す。返される値は,式が評価される

フォーマット化オブジェクトの親に関するものである。親が存在しない場合,返される値は初期値で

ある。引数が簡略記述特性を指定し,計算された特性に一致する引数をもつ from-parent 関数だけで式

が構成される場合は,簡略記述が各特性に展開する簡略記述の展開として解釈され,それぞれがその

特性に一致する引数をもつ from-parent の値をもつ。簡略記述特性に一致する引数が,その他の方法で

使用される場合はいずれも,誤りである。同様に,式が複合データ型の特性として記述される場合,

及び式が計算される特性に一致する引数をもつ from-parent 関数だけからなる場合,それはその構成要

素に一致する引数をもつ from-parent の値をもつ複合特性の各構成要素に展開されて解釈される。複合

データ型の特性に一致する引数がその他の方法で使用される場合はいずれも,誤りである。

object from-nearest-specified-value(NCName?)

from-nearest-specified-value 関数は,名前が指定された場合はその引数に一致する特性の計算値を返

す。名前が省略されていた場合は,式が評価される特性の計算値を返す。返される値は,式が評価さ

れるフォーマット化オブジェクトの最も近い先祖のものである。この場合,fo 名前空間内の XML 結

果木の特性の割当てが存在する。このような先祖が存在しない場合,返される値は初期値である。引

数が簡略記述特性を指定し,計算された特性に一致する引数をもつ from-nearest-specified-value 関数だ

けで式が構成される場合は,簡略記述が各特性に展開する簡略記述の展開と解釈され,それぞれがそ

の特性に一致する引数をもつ from-nearest-specified-value の値をもつ。簡略記述特性に一致する引数が

その他の方法で使用される場合はいずれも,誤りである。同様に,式が複合データ型の特性として記

述される場合,及び式が計算される特性に一致する引数をもつ from-nearest-specified-value 関数だけか

らなる場合,それはその構成要素に一致する引数をもつ from-nearest-specified-value の値をもつ複合特

性の各構成要素に展開されて解釈される。複合データ型の特性に一致する引数がその他の方法で使用

される場合はいずれも,誤りである。

object from-page-master-region(NCName?)

from-page-master-region 関数は,名前が指定された場合はその引数に一致する特性の計算値を返す。

名前が省略されていた場合は,式が評価される特性の計算値を返す。


63

X 4179

:2010

XSL 1.1 では,この関数は“writing-mode”特性及び“reference-orientation”特性の値としてだけ使わ

れることがある。更に,関数の引数は省略されなければならない。引数が存在する場合は,誤りであ

る。

指定された特性の計算値は,レイアウトフォーマット化オブジェクトでの特性から表示・参照領域

のペアを生成するのに使用されることで与えられる。

この関数がフォーマット化オブジェクト F,

fo:page-sequence の子孫の式に使われる場合,計算値は,

子孫として F で返された領域をもっている最も近い先祖の区画参照領域を生成するのに使用された区

画の規定から与えられる。

式が複合データ型の特性として記述される場合,及び式が計算される特性に一致する引数をもつ

inherited-property-value 関 数 だ け か ら な る 場 合 , そ れ は そ の 構 成 要 素 に 一 致 す る 引 数 を も つ

inherited-property-value の値をもつ複合特性の各構成要素に展開されて解釈される。複合データ型の特

性に一致する引数がその他の方法で使用される場合はいずれも,誤りである。

注記  次の例を考える。 

<fo:root>

<fo:layout-master-set>

  <fo:simple-page-master master-name="all-pages">

    <fo:region-body region-name="xsl-region-body" margin="0.75in"

                                        writing-mode="tb-rl" />

    <fo:region-before region-name="xsl-region-before" extent="0.75in"/>

  </fo:simple-page-master>

  <fo:page-sequence-master master-name="default-sequence">

    <fo:repeatable-page-master-reference master-reference="all-pages"/>

  </fo:page-sequence-master>

</fo:layout-master-set>

<fo:page-sequence master-name="default-sequence">

  <fo:flow flow-name="xsl-region-body">

    <fo:block>

                [水平と垂直との両方が許される言語を含む]

        </fo:block>

  </fo:flow>

</fo:page-sequence>

</fo:root>

この例は,非常に単純なページレイアウト規定を示している。

“all-pages”という名の単一の

単純ページマスタがある。このページマスタは上で定義される二つの区画“xsl-region-body”及

び“xsl-region-before”をもつ。

“xsl-region-before”という名前の区画は,静的内容(その内容は

単純なこの例では省略されている。

)を受け入れるページヘッダである。

“xsl-region-body”とい

う名前の区画は,単一の fo:page-sequence 内の単一の fo:flow の内容が割り当てられる。


64

X 4179

:2010

   

この例では,

“xsl-region-body”の定義は“writing-mode”特性をもっている。書かれているよ

うに,

この特性

“tb-rl”

の計算値は,

区画の writing-mode には影響しない。

なぜならば,

writing-mode

の値は,区画表示及び参照領域のペアの生成が fo:page-sequence の計算値であり,それが区画表

示及び参照領域のペアを生成するために“xsl-region-body”領域定義を使っているからである。

writing-mode 特性が fo:root 又はその子 fo:page-sequence に全く指定されないとき,初期値は,区

画参照領域を満たす内容のための表記方法に使用される。

“writing-mode”の初期値は“lr-tb”

である。

しかし,上にある行

<fo:page-sequence master-name="default-sequence">

が,

<fo:page-sequence master-name="default-sequence"

                                    writing-mode="from-page-master-region()">

である場合,区画定義での“writing-mode”特性の計算値は,すべての表示・参照領域のペアが

実体化されたときに使用される。そのため,xsl-region-body に,

“xsl-region-body”のための領域

定義に関する規定が使用される。そして,内容は省略時の水平フォーマット化の代わりに垂直

フォーマット化を受ける。xsl-region-before と同様に,区画定義の“writing-mode”の計算値が

使用される。この場合,

“lr-tb”の初期値が fo:root から継承され,xsl-region-before の内容が水

平にフォーマットされる。

object from-table-column(NCName?)

from-table-column 関数は,名前が指定された場合はその引数に一致する特性の継承値を返す。名前

が省略されていた場合は,式が評価される特性の継承値を返す。この特性は,その column-number が

この式が評価される列に一致し,number-columns-spanned も任意のまたがりに一致する fo:table-colum

に属している。一致する number-columns-spanned が存在しない場合は,1 のまたがりに一致する。そ

れでもなおどれとも一致しない場合は,初期値が返される。引数が簡略記述特性を指定し,計算され

た特性に一致する引数をもつ from-table-column 関数だけで式が構成される場合は,簡略記述が各特性

に展開する簡略記述の展開と解釈され,それぞれがその特性に一致する引数をもつ from-table-column

の値をもつ。

簡略記述特性に一致する引数がその他の方法で使用される場合はいずれも,

誤りである。

同様に,式が複合データ型の特性として記述される場合,及び式が計算される特性に一致する引数を

も つ from-table-column 関 数 だ け か ら な る 場 合 , そ れ は そ の 構 成 要 素 に 一 致 す る 引 数 を も つ

from-table-column の値をもつ複合特性の各構成要素に展開されて解釈される。複合データ型の特性に

一致する引数がその他の方法で使用される場合はいずれも,誤りである。fo:table-cell 又はその子孫で

はないフォーマット化オブジェクトでこの関数を使用するのも,誤りである。

numeric proportional-column-width(numeric)

proportional-column-width 関数は,プロポーショナル測度の 単位を返す。この場合の は,この関

数に提供された引数である。列幅は,最初に,プロポーショナル測度を無視して決定される。表の幅

と列幅の合計との差は,有効なプロポーショナル幅である。プロポーショナル測定の一単位は,プロ

ポーショナル係数の合計によって分割される有効なプロポーショナル幅である。fo:table-column 以外

のフォーマット化オブジェクトでこの関数を使用するのは,誤りである。固定表配置を使用しない場

合に,この関数を使用するのも誤りである。

object merge-property-values(NCName?)


65

X 4179

:2010

merge-property-values 関数は,名前が指定された場合はその引数に一致する特性の値を返す。名前が

省略されていた場合は,式が評価される特性の値を返す。返される値は,親 fo:multi-properties の最後

の fo:multi-property-set で,利用者エージェントの状態に適用される指定値である。このような値が存

在しない場合,親 fo:multi-properties の計算値が返される。引数が簡略記述特性を指定し,計算された

特性に一致する引数をもつ merge-property-values 関数だけで式が構成される場合は,簡略記述が各特

性 に 展 開 す る 簡 略 記 述 の 展 開 と 解 釈 さ れ , そ れ ぞ れ が そ の 特 性 に 一 致 す る 引 数 を も つ

merge-property-values の値をもつ。簡略記述特性に一致する引数がその他の方法で使用される場合はい

ずれも,誤りである。同様に,式が複合データ型の特性として記述される場合,及び式が計算される

特性に一致する引数をもつ merge-property-values 関数だけからなる場合,それはその構成要素に一致

する引数をもつ merge-property-values の値をもつ複合特性の各構成要素に展開されて解釈される。複

合データ型の特性に一致する引数がその他の方法で使用される場合はいずれも,誤りである。

注記  利用者エージェントの状態の適用能力に関する検査は,“active-state”特性を使用して,指定

される。 

fo:multi-properties の子である fo:wrapper 以外のフォーマット化オブジェクトにこの関数を使用する

のは誤りである。

5.11 

特性のデータ型 

複合データ型,許容される数値,又は特定の意味論をもつ文字列によって,記述される特性値も存在す

る。

空間などの複合データ型は,複数の属性として結果木に表示される。これらの属性の名前は,特性名か

ら構成される。特性名の後ろにはピリオドが続き,その後には構成要素名が続く。例えば,

“space-before”

特性の指定は次であってもよい。

space-before.minimum="2.0pt"

space-before.optimum="3.0pt"

space-before.maximum="4.0pt"

space-before.precedence="0"

space-before.conditionality="discard"

データ型に <length> 構成要素が幾つか存在する場合,及びデータ型が <keep> である場合は,簡略形

式の複合値規定を使用してもよい。前者の場合,規定は,名前が特性名と一致する属性に <length> 値を

指定する。このような規定は,その値を各 <length> 構成要素に指定し,初期値を <length> 以外のすべて

の構成要素に指定する。次に例を示す。

space-before="4.0pt"

これは,次の指定と等価である。

space-before.minimum="4.0pt"

space-before.optimum="4.0pt"

space-before.maximum="4.0pt"

space-before.precedence="0"

space-before.conditionality="discard"

注記  “auto”とは解釈されない <percentage> 値は,妥当な <length> 値でないため,それを簡略形

式の中で使用してよい。


66

X 4179

:2010

   

データ型が <keep> である場合,規定は,名前が特性名に一致する属性に,構成要素の妥当な値を提供

する。このような規定は,その値を各構成要素に指定する。次に例を示す。

keep-together="always"

これは,次の指定と等価である。

keep-together.within-line="always"

keep-together.within-column="always"

keep-together.within-page="always"

完全形式とともに簡略形式を使用してもよい。完全形式は,簡略形式の展開に優先する。次に例を示す。

space-before="4.0pt"

space-before.maximum="6.0pt"

これは,次の指定と等価である。

space-before.minimum="4.0pt"

space-before.optimum="4.0pt"

space-before.maximum="6.0pt"

space-before.precedence="0"

space-before.conditionality="discard"

特性の複合値は,個々の構成要素としてではなく,単位として継承される。継承の後,構成要素に関す

る完全形式のどのような指定も,その値を設定するために用いられる。

対応する相対特性の計算値が対応する絶対特性から設定されるとき,後者は,前者のすべての構成要素

を決定するのに用いられる。

注記  次の指定において,“top-to-bottom”のブロック進行方向が仮定される例を考える。 

margin-top="10.0pt"

space-before.minimum="4.0pt"

対応する相対特性の構成要素の一つを明示的に設定することは,効果をもたない。

特性値に利用可能なデータ型を指定する構文を,次に定義する。

<integer> 

符号付きの整数値。任意の“+”又は“-”文字の後に数字のシーケンスが続くことによって構成さ

れる。特性は値に追加の制約を定義してもよい。

注記  “+”記号は,CSS2 との互換性のために許容される。 

<number> 

符号付きの実数。任意の“+”又は“-”文字に数字のシーケンスが続き,その後に任意の“.”文字

と文字のシーケンスとが続くことによって構成される。特性は値に追加の制約を定義してもよい。

<length> 

符号付きの長さの値。この場合,

“length”は実数に単位修飾を加えたものである。特性は,値に追

加の制約を定義してもよい。

<length-range> 

minimum,optimum 及び maximum の構成要素をもつ複合データ型。各構成要素は, <length> であ

る。“minimum”が optimum より大きい場合,それは“optimum”に設定されたように処理される。

“maximum”が optimum より小さい場合,それは“optimum”に設定されたように処理される。特性


67

X 4179

:2010

は,値に追加の制約,追加の許容値及びそれらのセマンティクスを定義してもよい。例えば,

“auto”

又は <percentage> である。

<length-conditional> 

length 及び conditionality の構成要素をもつ複合データ型。length の構成要素は,<length>  である。

conditionality の構成要素は,“discard”又は“retain”のいずれかである。特性は値に追加の制約を定義

してもよい。

<length-bp-ip-direction> 

block-progression-direction 及び inline-progression-direction の構成要素をもつ複合データ型。各構成要

素は,<length>  である。特性は,値に追加の制約を定義してもよい。

<space> 

minimum,optimum,maximum,precedence 及び conditionality の構成要素をもつ複合データ型。minimum,

optimum 及び maximum 構成要素は,<length>  である。precedence の構成要素は,“force”又は <integer>

のいずれかである。conditionality の構成要素は,

“discard”又は“retain”のいずれかである “minimum”

が optimum より大きい場合,それは“optimum”に設定されたように処理される“maximum”が optimum

より小さい場合,それは“optimum”に設定されたように処理される。

<keep> 

within-line,within-column 及び within-page を構成要素にもつ複合データ型。各構成要素の値は,

“auto”

“always”又は <integer> のいずれかである。

<angle> 

角度の表現は,任意の“+”又は“-”文字の直後に <number> が続き,その直後に角度単位識別子

が続く。角度の単位識別子は,

“deg”

(度の省略形)

“grad”

(グラードの省略形)及び“rad”

(ラジア

ンの省略形)である。指定値は,0°から 360°までの範囲に正規化される。特性は,値に追加の制約

を定義してもよい。

<percentage> 

符号付きの実パーセンテージ。これは,任意の“+”又は“-”文字の後ろに数字のシーケンスが続

き,その後に任意の“.”文字と数字とのシーケンス,その後に“%”が続くことによって構成される。

特性は,値に追加の制約を定義してもよい。

<character> 

[XML 1.0](JIS X 4159:2005)又は[XML 1.1]の生成規則 [2] によって有効な単一の Unicode 文字。

例えば,

“c”又は“&#x2202;”

<string> 

文字シーケンス。

注記  式値変換(5.9.12)で許可されているように,<string>  型の特性値は,引用値又は NCName 又

は <string> に評価される式でなければならない。その他(例えば整数)は誤りである。実装で

は,文字列として評価されない特性値を扱うことによって,この誤りから回復してもよい。

<name> 

名前を表示する文字列。[XML Names 1.0](JIS X 4158:2005)又は[XML Names 1.1]の NCName の定

義に適合しなければならない。

<family-name> 

フォントを識別する文字列。


68

X 4179

:2010

   

<color> 

キーワードを表示する文字列,又は 5.10.2 で定義される色の関数のいずれかである。キーワード色

名のリストは,aqua,black,blue,fuchsia,gray,green,lime,maroon,navy,olive,purple,red,silver,

teal,white 及び yellow である。

<country> 

ISO 3166

ISO 3166-1

ISO 3166-2)及び(ISO 3166-3

]国名コードに適合する文字列。

<language> 

[ISO 639-2] 3 文字の用語学用又は書誌用コード,又は[ISO 639-1]言語の名前を示す 2 文字コードに

適合する文字列。

<script> 

ISO 15924

スクリプトコードに適合する文字列。

<id> 

[XML Names 1.0] (JIS X 4158:2005)又は[XML Names 1.1]の NCName の定義に適合し,スタイルシ

ート内で一意である文字列。

<idref> 

[XML Names 1.0] (JIS X 4158:2005)又は[XML Names 1.1]の NCName の定義に適合し,スタイルシ

ート内で使用される id 特性値に一致する文字列。

<uri-specification> 

“url(”の後に任意の空白,その後に任意の一重引用符(')又は二重引用符(")

,さらに,[RFC 3987]

で定義される IRI 参照が続き,その後に一重引用符(')又は二重引用符(")

,任意の空白,さらに,

“)”が続く文字のシーケンス。二つの引用符は,同じでなければならず,両方共存在するか又は両方

共存在しないかでなければならない。IRI 参照の中に一重引用符がある場合は,引用符が二つ存在し

なければならず,さらに,二重引用符でなければならない。

注記  この規格の定義では IRI が許されるが,CSS2 では URI だけが許される点が異なっている。 

<shape> 

“rect(”<top> <right> <bottom> <left>  “)”

。ここに <top>,<bottom>,<right>  及び <left> は,領

域の内容長方形のそれぞれの側からのオフセットを指定する。

<top>,<right>,<bottom>  及び <left> は,<length>  値又は“auto”でもよい。負の長さも許される。

値“auto”は,与えられた切取り区画の辺が領域の内容長方形の辺と同じになることを意味する(す

なわち,

“auto”は“0pt”と同じを意味する。

<time> 

時間単位識別子がその直後にくる <number>。時間単位識別子は,

“ms”(ミリ秒)及び“s”(秒)

である。

<frequency> 

周波数単位識別子がその直後にくる <number>。周波数単位識別子は,

“Hz”

(ヘルツ)及び“kHz”

(キロヘルツ)である。

フォーマット化オブジェクト 

6.1 

フォーマット化オブジェクトの導入 

洗練化されたフォーマット化オブジェクト木は,情報の一つ以上の意図された表示をこの木の内部に記


69

X 4179

:2010

述する。フォーマット化とは,この記述を表示に変換する処理である。箇条 を参照する。表示は,領域

モデルで定義されるとおり,領域木によって抽象的に表現される。箇条 を参照する。考えられる表示の

それぞれは,洗練化されたフォーマット化オブジェクト木内の情報が,2.5 次元面上に位置付けられる一つ

以上の領域木によって表現される。

フォーマット化オブジェクトには,次の 3 種類がある。

a)

領域を生成するもの

b)

領域を返すが,生成しないもの

c)

領域の生成で使用されるもの

a)

及び b)は,通常,流し込みオブジェクト(flow object)と呼ばれる。c)は,レイアウトオブジェクト(layout

object)又は補助オブジェクト(auxiliary object)のいずれかである。フォーマット化オブジェクトの種類

は,オブジェクトとともに使用される用語によって暗示される。a)  のフォーマット化オブジェクトは,

“一

つ以上の領域を生成する”といわれる。b)のフォーマット化オブジェクトは,

“一つ以上の領域を返す”と

いわれる。a)のフォーマット化オブジェクトは,領域の生成及び返すことの両方をしてよい。c)  のフォー

マット化オブジェクトは,

“領域の生成に使用される”

。すなわち,3 種類のフォーマット化オブジェクト

は,生成処理に対して,パラメタと同様の動作をする。

6.1.1 

多くのフォーマット化オブジェクトに共通する定義 

領域と,領域を生成し返すフォーマット化オブジェクトとの間の関係を特徴づける二つの特色を,この

カテゴリ化によって定義する。これらの特色は,generated-by 及び returned-by である。

generated-by 特色の値は,単一のフォーマット化オブジェクトである。フォーマット化オブジェクト F

のセマンティクスが一つ以上の領域の生成を指定し,がこのように生成された領域の一つであるとき,

フォーマット化オブジェクト は,領域 を生成すると定義される。すなわち,

4.7.2

で指定されるとおり,

このように生成された領域の一つの置換形式である。

グリフ領域が置換される場合,生成フォーマット化オブジェクトは,置換されたグリフ領域のシーケン

スに最初に現れるグリフ領域を生成したフォーマット化オブジェクトであると考えられる。自動生成され

るハイフンなど,グリフ領域が挿入される場合,生成フォーマット化オブジェクトは,領域木の昇順たど

りにおいて,挿入されるグリフ領域より先に現れる最後のグリフ領域の生成フォーマット化オブジェクト

であると考えられる。

returned-by 特色の値は,ペアの集合である。この場合,各ペアは,フォーマット化オブジェクトと正の

整数とから構成される。整数は,フォーマット化オブジェクトが返すすべての領域の順序付けにおける領

域の位置を表示する。

(F,1)  のペアが の returned-by 特色のメンバであり,(F,2)  のペアが の returned-by 特色のメンバであ

り,(F,3)  のペアが の returned-by 特色のメンバである場合,フォーマット化オブジェクト は,AB

C

,…の領域のシーケンスを返すと定義される。

領域が,フォーマット化オブジェクトが返す領域のシーケンスのメンバである場合,領域は,フォーマ

ット化オブジェクトによって生成されたか又はそのフォーマット化オブジェクトの子が返す領域のシーケ

ンスのメンバであったかのいずれかである。フォーマット化オブジェクトの子が返すすべての領域が,そ

のフォーマット化オブジェクトによって返される必要はない。フォーマット化オブジェクトは,そのフォ

ーマット化オブジェクトの子が返す領域を子領域としてもつ領域を生成してもよい。生成領域の領域木に

あるこれらの子は,それらを返したフォーマット化オブジェクトによって返されない。


70

X 4179

:2010

   

木のノードの集合は,次の条件を満たす場合に,系統(lineage)となる。

a)

集合内にノード が存在し,その集合内のすべてのノードが の先祖である。

b)

集合内のすべてのノード について,その集合に N の先祖が包含される場合に,の親も包含されて

いる。

一つの領域が返されるフォーマット化オブジェクトの集合は,一つの系統である。

フォーマット化オブジェクトが返す領域は,正規(normal)又は行外(out-of-line)のいずれかである。

正規領域(normal area)とは,

“テキストの正規流し込み”にある領域をいう。すなわち,正規領域は,そ

れらを返すフォーマット化オブジェクトが生成する領域の子領域となる。正規領域には,サイズが 1 であ

る returned-by 系統が存在する。ただ 1 種類の正規領域が存在する。

行外領域(out-of-line area)は,テキストの正規流し込み外で使用される領域である。これは,行外領域

が絶対位置決めされているか又はそれらが浮動部分又は脚注のいずれかであるためである。

行外領域には,

サイズが 1 より大きい returned-by 系統が存在してもよい。

area-class 特色は,領域が正規又は行外のどのクラスに属するかを示す。行外領域の場合,この特色は,

行 外 領 域 の サ ブ ク ラ ス も 示 す 。 こ の 特 色 の 値 は ,“ xsl-normal ”,“ xsl-absolute ”,“ xsl-footnote ”,

“xsl-side-float”又は“xsl-before-float”である。area-class 特色の値が“xsl-normal”である場合に限り,領

域は,正規である。それ以外の場合,領域は,行外領域である。4.2.5 を参照する。

所定のフォーマット化オブジェクトの returned-by 領域は,上記のとおり順序付けされる。この順序付け

は,正規領域の部分シーケンスなど,所定の領域クラス(area-class)である領域の部分シーケンス上の順

序付けを定義する。領域 がフォーマット化オブジェクトが返す領域に存在する領域 に優先する場合及

びその場合に限り,領域 は,部分シーケンス内の領域 に優先する。

参照領域連鎖(reference-area chain)は,参照領域のシーケンスとして定義される。この参照領域は,ペ

ージシーケンスフォーマット化オブジェクトではない同じフォーマット化オブジェクトが生成するか,又

は区画参照領域若しくは正規流し込み参照領域(6.4.14 参照)から構成される。これらは,同じ流し込み

6.4.1.4 参照)に割り当てられる区画フォーマット化オブジェクトを使用して生成される。シーケンス内

の参照領域は,参照領域連鎖によって包含されるといわれ,領域木の昇順たどりを使用した場合に領域木

内に存在するのと同じ順序付けが,互いに関連して指定されている。

6.2 

フォーマット化オブジェクトの内容 

フォーマット化オブジェクトの内容は,XML 内容モデル構文を使用して記述される。XML 内容モデル

では表現できない追加制約が後に提供される場合もある。

下位の内容モデルにあるパラメタ実体“%block;”は,次のフォーマット化オブジェクトを包含する。

block

block-container

table-and-caption

table

list-block

下位の内容モデルにあるパラメタ実体“%inline;”は,次のフォーマット化オブジェクトを包含する。

bidi-override

character


71

X 4179

:2010

external-graphic

instream-foreign-object

inline

inline-container

leader

page-number

page-number-citation

page-number-citation-last

scaling-value-citation

basic-link

multi-toggle

index-page-citation-list

次のフォーマット化オブジェクトは,

“中立”コンテナであり,各フォーマット化オブジェクトの下に列

挙された追加制約が,#PCDATA,%block;  又は %inline; を使用できるすべての場所で満たされる場合に,

それらを使用してもよい。

multi-switch

multi-properties

index-range-begin

index-range-end

wrapper

retrieve-marker

次のフォーマット化オブジェクトは,各フォーマット化オブジェクトの元に載っている制約によって記

述されるように,

“中立”コンテナである。

retrieve-table-marker

次のフォーマット化オブジェクトは,

“ポイント”を定義し,fo:flow 又は fo:static-content の子孫として

どこででも使える。

change-bar-begin

change-bar-end

次の“行外”フォーマット化オブジェクトは,#PCDATA,%block;  又は %inline; が使用できるすべて

の場所で,使用してよい。ただし,任意の“行外”フォーマット化オブジェクトの子孫として使用される

場合を除く。

float

次の“行外”フォーマット化オブジェクトは,#PCDATA 又は %inline; を使用できるすべての場所で使

用してよい。ただし,任意の“行外”フォーマット化オブジェクトの子孫として使用される場合を除く。

footnote

6.3 

フォーマット化オブジェクト 

basic-link 

fo:basic-link は,単純なリンクの開始資源の表示に使用される。


72

X 4179

:2010

   

bidi-override 

fo:bidi-override 行内フォーマット化オブジェクトは,多言語が混在する文書内の種々の(又は入れ

子になった)行内スクリプトに関して,省略時の Unicode 双方向アルゴリズムの方向を上書きする必

要がある場所で使用される。

block 

fo:block フォーマット化オブジェクトは,一般に,段落,タイトル,見出し,図,表題などをフォ

ーマットするために使用される。

block-container 

fo:block-container 流し込みオブジェクトは,ブロックレベル参照領域の生成に使用される。

bookmark 

fo:bookmark フォーマット化オブジェクトは,名指しでアクセスポイントを特定するために使用され,

アクセスポイントが現在の文書内にあるか他の外部文書にあるかを特定する。与えられたブックマー

クは,著者の要求するレベルまで一連の(副)ブックマークに更に細かく分割されてもよい。

bookmark-title 

fo:bookmark-title フォーマット化オブジェクトは,人間が読める形でアクセスポイントを同定するた

めに使用される。

bookmark-tree 

fo:bookmark-tree フォーマット化オブジェクトは,目次,図版,表などのリストのような文書内のア

クセスポイントのリストを保持するために使用される。各アクセスポイントは,ブックマークによっ

て表される。

change-bar-begin 

fo:change-bar-begin フォーマット化オブジェクトは,“変更区画”の開始を指示するために使用し,

一致する fo:change-bar-end フォーマット化オブジェクトによって終了する。変更区画は,段の開始辺

又は終了辺のいずれかに変更バーが施される。変更バーの形は,特性に関連する様々な変更バーの値

によって決定される。

change-bar-end 

fo:change-bar-end フォーマット化オブジェクトは,“変更区画”の終わりを指示するために使用され,

一致する fo:change-bar-begin フォーマット化オブジェクトによって始まる。

character 

fo:character 流し込みオブジェクトは,表示のグリフに対応付けされる文字を表す。

color-profile 

スタイルシートに色プロファイルを宣言するために使用される。

conditional-page-master-reference 

fo:conditional-page-master-reference は,使用条件が満たされる場合に使用されることになっているペ

ージマスタの識別に使用される。

declarations 

スタイルシートの大域的宣言のグループ化に使用される。

external-graphic 

fo:external-graphic 流し込みオブジェクトは,図形データが fo 名前空間内の XML 結果木外に存在す

る図形に使用される。


73

X 4179

:2010

float 

fo:float の使用目的は二つ存在する。一つは,内容を正規に配置する間に,関連する内容をページ(又

は後続するページ)の先頭などの,読み手に直接の妨げにならない分離領域内にフォーマット化する

ために使用される。もう一つは,領域を意図的に片側に浮動させて,正規の内容をその横に並行して

流し込むときに使用される。

flow 

fo:flow フォーマット化オブジェクトの内容は,ページ内に与えられる流し込みテキスト内容を提供

する一連の流し込みオブジェクトである。

flow-assignment 

fo:flow-assignment は,一連の区画に対する一つの一連の流し込みの割当てを特定するために使用さ

れる。

flow-map 

fo:flow-map は,区画の流し込みマップを特定するために使用される。

flow-name-specifier 

fo:flow-name-specifier は,ソースリスト内の一つの流し込みを特定するために使用される。

flow-source-list 

fo:flow-source-list は,特定の fo:flow-assignment 内に割り当てられる一連の流し込みを特定するため

に使用される。

flow-target-list 

fo:flow-target-list は,流し込みが特定の fo:flow-assignment 内に割り当てられる一連の区画を特定す

るために使用される。

folio-prefix 

fo:folio-prefix フォーマット化オブジェクトは,ページシーケンス内のページ番号に対する固定の接

頭辞を特定する。

folio-suffix 

fo:folio-suffix フォーマット化オブジェクトは,ページシーケンス内のページ番号に対する固定の接

尾辞を特定する。

footnote 

fo:footnote は,脚注引用及び対応する脚注の生成に使用される。

footnote-body 

fo:footnote-body は,脚注の内容の生成に使用される。

index-key-reference 

fo:index-key-reference フォーマット化オブジェクトは,特定の索引キーのすべての出現に対して一連

の引用ページ項目を生成するために使用される。

index-page-citation-list 

fo:index-page-citation-list フォーマット化オブジェクトは,fo:index-key-reference の子によって生成さ

れた一連の引用ページ項目を一緒にまとめるために使用される。fo:index-page-citation-list の最終の効

果は,ページ番号及び範囲のフォーマットされたリストを生成することである。


74

X 4179

:2010

   

index-page-citation-list-separator 

fo:index-page-citation-list-separator フォーマット化オブジェクトは,生成されたページ番号のリスト

内の個別のページ番号又は範囲を分離するために使われるフォーマット化オブジェクトを特定する。

index-page-citation-range-separator 

fo:index-page-citation-range-separetor フォーマット化オブジェクトは,生成されたページ番号リスト

内の範囲を形成する二つのページ番号を分離するためのフォーマット化オブジェクトを特定する。

index-page-number-prefix 

fo:index-page-number-prefix フォーマット化オブジェクトは,fo:index-key-reference によって生成され

た引用ページ項目のための固定接頭辞を特定する。

index-page-number-suffix 

fo:index-page-number-suffix フォーマット化オブジェクトは,fo:index-key-reference によって生成され

た引用ページ項目のための固定接尾辞を特定する。

index-range-begin 

fo:index-range-begin フォーマット化オブジェクトは,索引キーに関連する“索引範囲”の開始を指

示するために使用される。索引範囲は,対応する fo:index-range-end によって終了する。

index-range-end 

fo:index-range-end フォーマット化オブジェクトは,一致する fo:index-range-begin によって開始され

た“索引範囲”の終了を指示するために使用される。

initial-property-set 

fo:initial-property-set は,fo:block の最初の行にフォーマット化特性を指定する。

inline 

fo:inline フォーマット化オブジェクトは,通常,テキストの一部を背景とともにフォーマッティン

グしたり,枠で囲むために使用される。

inline-container 

fo:inline-container 流し込みオブジェクトは,行内参照領域の生成に使用される。

instream-foreign-object 

fo:instream-foreign-object 流 し 込 み オ ブ ジ ェ ク ト は , 行 内 図 形 又 は オ ブ ジ ェ ク ト デ ー タ が

fo:instream-foreign-object の子孫として存在する他の“はん(汎)用”オブジェクトに使用される。

layout-master-set 

fo:layout-master-set は,文書で使用されるすべてのマスタの周囲のラッパである。

leader 

fo:leader フォーマット化オブジェクトは,二つのテキストフォーマット化オブジェクトを結ぶため

の,けい(罫)線又は文字列のいずれかで構成されるリーダの構成に使われる。文字列は,文字の繰

返し又は文字パタンの巡回繰返しをする。

list-block 

fo:list-block 流し込みオブジェクトは,リストのフォーマットに使用される。

list-item 

fo:list-item フォーマット化オブジェクトは,リスト内の項目のラベル及び本体を包含する。

list-item-body 

fo:list-item-body フォーマット化オブジェクトは,リスト項目の本体の内容を包含する。


75

X 4179

:2010

list-item-label 

fo:list-item-label フォーマット化オブジェクトは,リスト項目のラベルの内容を包含し,通常はリス

ト項目の本体の列挙,識別,装飾のいずれかに使用される。

marker 

fo:marker は,fo:retrieve-marker 又は fo:retrieve-table-marker と一緒に用いて,柱の生成に使用される。

multi-case 

fo:multi-case は,フォーマット化オブジェクトの各代替部分木を(fo:multi-switch 内に)包含するた

めに使用される。親の fo:multi-switch はこれらの中から一つを選択して表示し,残りは表示しない。

multi-properties 

fo:multi-properties は,一定の内容に関連する複数の特性集合間の切換えに使用される。

multi-property-set 

fo:multi-property-set は,利用者エージェントに依存して,内容に適用されるフォーマット化特性の

代替集合を指定するために使用される。

multi-switch 

fo:multi-switch は,フォーマット化オブジェクトの代替部分木の規定(各部分木は,fo:multi-case 内

に存在する。

)をラップし,ある候補から別の候補への切換え(fo:multi-toggle を介して活性化される。

を制御する。

multi-toggle 

fo:multi-toggle は,fo:multi-case 内で,別の fo:multi-case への切換えに使用される。

page-number 

fo:page-number フォーマット化オブジェクトは,現在のページ番号の表示に使用される。

page-number-citation 

fo:page-number-citation は,引用されたフォーマット化オブジェクトが返す最初の正規領域を包含す

るページのページ番号を参照するために使用される。

page-number-citation-last 

fo:page-number-citation-last は,引用されたフォーマット化オブジェクトによって返された領域,及

び指定の page-citation-strategy と一致する領域クラスをもつ領域を含む最後のページのページ番号を参

照するために使用される。

page-sequence 

fo:page-sequence フォーマット化オブジェクトは,レポートの章など,文書内のページのシーケンス

( 部 分 シ ー ケ ン ス ) の 生 成 方 法 を 指 定 す る た め に 使 用 さ れ る 。 こ れ ら の ペ ー ジ の 内 容 は ,

fo:page-sequence の流し込みの子から生じる。

page-sequence-master 

fo:page-sequence-master は,ページのシーケンス生成の時に使用されるページマスタのシーケンスを

指定する。

page-sequence-wrapper 

fo:page-sequence-wrapper フォーマット化オブジェクトは,fo:page-sequence フォーマット化オブジェ

クトのグループの継承された特性を指定するために使用される。これには追加フォーマット化セマン

ティクスをもたない。


76

X 4179

:2010

   

region-after 

この区画は,fo:region-body 区画の“後”側に配置される表示域を定義する。

region-before 

この区画は,fo:region-body 区画の“前”側に配置される表示域を定義する。

region-body 

この区画は,fo:simple-page-master の“中央”に配置される表示域・参照のペアを指定する。

region-end 

この区画は,fo:region-body 区画の“終了”側に配置される表示域を定義する。

region-name-specifier 

fo:region-name-specifier は,ターゲットリスト内の一つの区画を指定するために使用される。

region-start 

この区画は,fo:region-body 区画の“開始”側に配置される表示域を定義する。

repeatable-page-master-alternatives 

fo:repeatable-page-master-alternatives は,代替ページマスタの集合の繰返しインスタンスから構成さ

れる部分シーケンスを指定する。繰返しの数を制限してもよいし,潜在的に制限しなくてもよい。

repeatable-page-master-reference 

fo:repeatable-page-master-reference は,単一のページマスタの繰返しインスタンスから構成される部

分シーケンスを指定する。繰返しの数を制限してもよいし,潜在的に制限しなくてもよい。

retrieve-marker 

fo:retrieve-marker は,fo:marker と一緒に用いて,柱の生成に使用される。

retrieve-table-marker 

fo:retrieve-table-marker は,その内容が別のページ,別の領域又は別の段へ引き継がれる表ヘッダ及

び表フッタを生成する fo:marker とともに使用される。

root 

fo:root ノードは,XSL 結果木の上位ノードである。この木はフォーマット化オブジェクトから構成

される。

scaling-value-citation 

fo:scaling-value-citation は,引用された fo:external-graphic に適用される変倍率を得るために使用され

る。

simple-page-master 

fo:simple-page-master は,ページの生成で使用され,ページの幾何的構造を指定する。ページは,細

分化してもよい。

single-page-master-reference 

fo:single-page-master-reference は,単一のページマスタの単一のインスタンスから構成される部分シ

ーケンスを指定する。

static-content 

fo:static-content フォーマット化オブジェクトは,単独又はページシーケンス内の複数のページ上の

類似した名前をもつ区画で,繰り返し表示されるフォーマット化オブジェクトのシーケンス又は木を

保持する。通常は,繰り返されたり継続される柱で使用される。


77

X 4179

:2010

table 

fo:table 流し込みオブジェクトは,表の材料のフォーマット化に使用される。

table-and-caption 

fo:table-and-caption 流し込みオブジェクトは,表題付きの表をフォーマット化するために使用される。

table-body 

fo:table-body フォーマット化オブジェクトは,表本体の内容の包含に使用される。

table-caption 

fo:table-caption フォーマット化オブジェクトは,fo:table-and-caption を使用する場合に限り,表の表

題を含むブロックレベルフォーマット化オブジェクトを包含するために使用される。

table-cell 

fo:table-cell フォーマット化オブジェクトは,表セルに配置される内容のグループ化に使用される。

table-column 

fo:table-column フォーマット化オブジェクトは,同じ列及びまたがりをもつ表セルに適用される特

質を指定する。

table-footer 

fo:table-footer フォーマット化オブジェクトは,表フッタの内容の包含に使用される。

table-header 

fo:table-header フォーマット化オブジェクトは,表ヘッダの内容の包含に使用される。

table-row 

fo:table-row フォーマット化オブジェクトは,表セルを行にグループ化するために使用される。

title 

fo:title フォーマット化オブジェクトは,タイトルと所定のページシーケンスとの関連付けに使用さ

れる。対話式の利用者エージェントは,ページを識別するためにこのタイトルを使用してもよい。例

えば,fo:title の内容をフォーマット化し,

“タイトル”ウィンドウ又は“ツールチップ”に表示するこ

ともできる。

wrapper 

fo:wrapper フォーマット化オブジェクトは,フォーマット化オブジェクトのグループに継承特性を

指定するために使用される。追加フォーマット化セマンティクスは存在しない。

6.4 

宣言,ページ付け及びレイアウトフォーマット化オブジェクト 

6.4.1 

導入 

フォーマット化オブジェクト木のルートノードは,fo:root フォーマット化オブジェクトでなければなら

ない。fo:root フォーマット化オブジェクトの子は,単一の fo:layout-master-set,任意の fo:declarations,任意

の fo:bookmark-tree 及び一つ以上の fo:page-sequences 及び/又は fo:page-sequence-wrapper-tree のシーケンス

である。fo:layout-master-set は,ページの幾何的構造及びシーケンス付けを定義する。fo:page-sequences の

子は,流し込み(flow)と呼ばれる。これは,fo:flow 及び fo:static-content に含まれ,ページに分配される

内容を提供する。fo:declarations オブジェクトは,内容がフォーマット化処理の資源として使用されるフォ

ーマット化オブジェクトのラッパである。ページ生成の処理は,結果木をフォーマット化する XSL プロセ

サによって,自動的に実行される。


78

X 4179

:2010

   

fo:layout-master-set の子は,ページ付け指定,レイアウト指定及び流し込みマップ指定である。ページ付

け指定及びレイアウト指定には,

二つの型が存在する。

ページマスタ及びページシーケンスマスタである。

ページマスタの役割は,ページを意図的に分割し,それらの幾何的構造を記述することである。ページシ

ーケンスマスタの役割は,fo:page-sequence のフォーマット化中にページの生成に使用されるページマスタ

のシーケンスを記述することである。流し込みマップは,区画に流し込みを割り当てる役割をもつ。

6.4.1.1 

ページシーケンスマスタ 

各 fo:page-sequence-master は,ページマスタの候補となるシーケンスの集合を特徴付ける。所定の任意の

fo:page-sequence について,シーケンスの候補となる集合のうちの一つだけが使用されることになる。使用

されるどのようなシーケンスも,個々のページマスタ,ページマスタからページを生成する流し込み及び

fo:page-sequence-master 自体が決定する制約を満たすシーケンスすべてがその対象となる。

fo:page-sequence-master は,どのページマスタをどの順序で使用するかを決定するために使用される。

fo:page-sequence-master の子は,部分シーケンス規定のシーケンスである。部分シーケンス内のページマス

タは,単一のページマスタへの参照によって,又は一つ以上のページマスタの繰返しとして指定されても

よい。例えば,シーケンスは複数の明示的なページマスタで始まってもよく,その他のページマスタの繰

返しが続いてもよい。

fo:single-page-master-reference は,単一のページマスタから構成される部分シーケンスの指定に使用され

る。

繰返しである部分シーケンスの指定方法は,二つある。fo:repeatable-page-master-reference は,単一のペ

ージマスタの繰返しを指定する。fo:repeatable-page-master-alternatives は,ページマスタの集合の繰返しを

指定する。代替ページマスタのどれが部分シーケンスの所定の点で使用されるかは,条件付きであり,ペ

ージ番号が奇数であるか偶数であるか,最初のページか最後のページか,空白のページであるかなどに依

存する。繰返し規定の“maximum-repeats”特性は,繰返しの数を制御する。この特性が指定されない場合

は,繰返しの数に制限はない。

6.4.1.2 

ページマスタ 

ページマスタ(page-master)は,ページの生成に使用されるマスタである。ページは,表示域領域が領

域木ルートの子である表示域・参照のペアである。ページ表示域領域は,ページの表示域領域として定義

され,ページ領域は,ページ表示域領域(page-viewport-area)の固有の子として定義される。

ページ表示域領域は,出力メディアによって定義される。ページ領域(page-area)は,ページの内容を

保持し,出力メディア上のページ内容の位置決めに影響を及ぼす。

単一のページマスタは複数回使用されてもよい。それを使用するたびに,単一のページが生成される。

例えば,fo:repeatable-page-master-reference から参照されるページマスタは,特定の部分シーケンスで参照

が現れるたびに 1 ページを生成するために fo:page-sequence によって使用される。

注記  ウェブブラウザなどの利用者エージェントでページを使用するとき,一般に各文書は,1 ペー

ジしかない。ページの表示に使用される表示域は,ページのサイズを決定する。ページが紙な

ど非対話式メディアに配置される場合,ページは,1 枚以上の紙面に相当する。紙のサイズは,

ページのサイズを決定する。 

この規格では,ページマスタの種類は,一つだけ,すなわち fo:simple-page-master だけである。この規格

の今後の版では,ページマスタの種類が追加されることがある。

注記  この規格の今後の版とは,W3C における原勧告に対する今後の版を指す(以下同じ。)。

fo:simple-page-master は,一つ以上の区画に関する規定を子としてもつ。


79

X 4179

:2010

表示域・参照のペアを生成するとき,区画規定は,マスタ,すなわち区画マスタ(region-master)とし

て使用される。このペアは,区画表示域領域(region-viewport-area)及び区画参照領域(region-reference-area)

から構成される。区画表示域領域は,常に,区画マスタの親を使用して生成されたページ領域の子である。

注記  ページの区画は,HTML 文書の“フレーム”に類似する。通常,これらの区画の少なくとも一

つはその寸法である長さが不確定である。

表記方法が lr-tb 又は rl-tb の言語の場合,

この区画は,

通常,下向きの長さが不確定である。フレームの一部は表示域に表示される。区画に割り当て

られる流し込みは,表示域を通じて区画参照領域をスクロールすることによって表示される。 

各区画は,区画フォーマット化オブジェクトによって定義される。各区画フォーマット化オブジェクト

には名前があり,配置には制限がある。さらに,区画の高さ又は幅は,固定されているが,その他の寸法

は固定されているか,不確定であるかのいずれかであってもよい。例えば,ウェブページの本体である区

画の高さは,不確定であってもよい。

区画の規定は,区画フォーマット化オブジェクトを使用して生成される区画表示域領域のサイズ及び位

置を決定する。表示域の位置決めは,そのページ領域の親に関連する。

この規格では,ページマスタは,四つの区画から構成される。すなわち,

(一つ以上の)

“region-body”

及び本体の上下左右にそれぞれ一つ存在する他の四つの区画である。側区画を現在の表記方法に対応させ

るため,これらの区画は,それぞれ“region-before”

“region-after”

“region-start”及び“region-end”と命

名されている。

“region-before”は“lr-tb”表記方法の“上余白”に,

“region-after”は“lr-tb”表記方法の

“下余白”に,

“region-start”は“lr-tb”表記方法の“左余白”に,

“region-end”は“lr-tb”表記方法の“右

余白”にそれぞれ対応する。この規格の今後の版では,ページマスタが,任意に大きさが決められた区画

及び任意に位置決めされた区画の数を任意に包含することができる機構の導入が期待される。

区画の型には,関連する条件付きの部分区画をもつものもある。関連する区画参照領域は,部分区画に

対応する子領域をもつことによって分割され,区画の“主要参照領域(main-reference-area)”を含む。

column-count 特 性 が 適 用 さ れ る 区 画 マ ス タ に つ い て は , 主 要 参 照 領 域 は ,“ ま た が り 参 照 領 域

(span-reference-area)”として指定される子領域をもつことによって,更に細分化される。

“またがり参照

領域”の数は,span="all"であるブロック領域など,ページに現れるまたがりの数に依存する。これらは,

“正規流し込み参照領域(normal-flow-reference-area)”として指定される子領域をもつことによって,順

に細分化され,その数は指定された段の数に依存する。

6.4.1.3 

ページ生成 

ページは,フォーマッタが fo:page-sequences を処理することによって生成される。上記のとおり,各ペ

ージは,表示域・参照のペアであり,その場合,表示域領域は,領域木ルートの子である。各ページは,

ページマスタを使用して生成され,そのページマスタが指定する区画に対応する区画表示域領域及び区画

参照領域を定義する。

各 fo:page-sequence は,fo:page-sequence-master 又はページマスタのいずれかを参照する。ページマスタ

を参照する場合,これは,参照されるページマスタを無限回数繰り返す fo:page-sequence-master への参照で

あるものとして解釈される。fo:page-sequence が“master-reference”特性を介してページマスタを直接参照

するか,又はその特性がページマスタを参照する fo:page-sequence-master を参照するかのいずれかの場合,

fo:page-sequence はページマスタを参照する。


80

X 4179

:2010

   

6.4.1.4 

流し込み及び流し込み対応付け 

流し込みには 2 種類がある。fo:static-content 及び fo:flow である。fo:static-content 流し込みは,柱となる

テキストなど,多くのページで繰り返される内容を保持する。fo:flow 流し込みは,連続するページにまた

がって分配される内容を保持する。fo:flow 流し込みの処理とは,fo:page-sequence を保持するために生成さ

れるページが何ページであるかを決定することである。fo:page-sequence-master は,流し込みの子である内

容が分配されるページマスタのシーケンスの生成系として使用される。

流 し 込 み の 子は ,ブ ロ ッ ク レ ベ ル 流 し込 みオ ブ ジ ェ ク トの シ ーケ ンス で あ る 。 各流 し 込み に は

“flow-name”特性が提供する名前がある。同じページシーケンスの子である二つの流し込みが同じ名前を

もつことはない。

ページマスタでの流し込みの区画への割当ては,流し込みマップによって決定される。流し込みマップ

(flow-map)とは,fo:page-sequence の流し込みの子と,その fo:page-sequence が参照するページマスタ内

で定義される区画との関係をいう。

流し込みマップは,流し込みマップフォーマット化オブジェクトによって指定される。fo:page-sequence

は,流し込みを区画に割り当てるときに流し込みマップ参照特性によって指示される流し込みマップを使

用する。もし流し込みマップ参照特性がページシーケンスを指定しないときは,XSL 1.0  にあるように,

潜在する流し込みマップがページシーケンスとして使用される。流し込みの“flow-name”特性は,その流

し込みがどの区画に割り当てられるかを指定する。各区画には“region-name”特性がある。流し込みマッ

プは,流し込みを同じ名前をもつ区画に割り当てる。

region-name の生成を利用者に要求するのを回避するため,すべての区画に“region-name”特性の省略時

の値が存在する。region-body,region-before,region-after,region-start 及び region-end には,それぞれ,省

略時の名“xsl-region-body”,

“xsl-region-before”

“xsl-region-after”

“xsl-region-start”及び“xsl-region-end”

が存在する。ページマスタが省略時の区画名に二つの区画本体子孫をもつことは誤りである。

さ ら に , fo:static-content フ ォ ー マ ッ ト 化 オ ブ ジ ェ ク ト に は ,“ xsl-before-float-separator ” 又 は

“xsl-footnote-separator”の“flow-name”特性値が存在してもよい。区画主体の条件付き部分区画が,特定

のページの参照領域生成に使用される場合,名前が条件付き部分区画に対応する fo:static-content は,部分

区画に関連する参照領域にフォーマット化されなければならない。これについては,6.12.1.3 に規定する。

6.4.1.5 

ページ生成における制約 

ページ領域の子孫である領域は,ページ領域の生成に使用されるページマスタ及びページマスタに指定

された区画に割り当てられる流し込みによって制約される。fo:flow 流し込みの場合,その流し込みの子孫

が生成した領域は,事実上そのページシーケンスの流し込みマップに従って,シーケンス内のページに分

配される。fo:static-content 流し込みの場合,流し込みの処理は,流し込みを割り当てる区画をもつページ

マスタを使用して生成される各ページに繰り返される。ただし,これには二つの例外がある。一つは,

fo:static-content に xsl-before-float-separator の流し込み名(flow-name)がある場合であり,その処理は,

xsl-before-float の領域クラスがある子孫領域をもつページ参照領域にだけ繰り返される。もう一つは,

fo:static-content に xsl-footnote-separator の流し込み名がある場合であり,その処理は,xsl-footnote の領域ク

ラスのある子孫領域をもつページ参照領域にだけ繰り返される。

6.4.1.6 

ページ付けの木構造 

結果木の構造を,

図 6.1 に示す。


81

X 4179

:2010

図 6.1−ページ付けのためのフォーマット化オブジェクトの木表現   

6.4.1.7 

流し込みマップの例 

流し込みマップの典型的な用途は,お互いに独立していて,該当ページの独立した領域に流し込まれる

二つ以上の流し込みがある場合である。もう一つの例は,流し込みが同じページの一つの領域から他の領

域に流し込まれ,後続するページに続く場合である。三つ目の用途は,二つ以上の流し込みが“鎖状につ

ながって”

,各流し込みが先行する流し込みの終わるところから始まる場合である。

6.4.1.7.1 

二つの流し込みをそれぞれの領域に対応付ける 

図 6.2−流し込み を領域 へ,流し込み を領域 へ対応付ける 


82

X 4179

:2010

   

この場合,流し込みは次のように指定される。

<fo:flow flow-name="A">

    <fo:block>In the second century of

the Christian Aera, the empire of Rome ... </fo:block>

</fo:flow>

及び

<fo:flow flow-name="B">

    <fo:block>Quo usque tandem abutere, Catilina, patientia nostra? ...

</fo:block>

</fo:flow>

領域は,region-name="R"及び region-name="S"によって指定され,流し込みマップは次のように指定され

る。

<fo:flow-map flow-map-name="E1">

  <fo:flow-assignment>

        <fo:flow-source-list>

      <fo:flow-name-specifier flow-name-reference="A"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier region-name-reference="R"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

  <fo:flow-assignment>    <fo:flow-source-list>

      <fo:flow-name-specifier flow-name-reference="B"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier region-name-reference="S"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

</fo:flow-map>


83

X 4179

:2010

6.4.1.7.2 

一つの流し込みを二つの領域へ対応付ける 

図 6.3−流し込み を領域 R1 及び R2 に対応付ける 

この場合,流し込みマップは次のように指定される。

<fo:flow-map flow-map-name="E2">

  <fo:flow-assignment>

        <fo:flow-source-list>

      <fo:flow-name-specifier flow-name-reference="A"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier region-name-reference="R1"/>

      <fo:region-name-specifier region-name-reference="R2"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

</fo:flow-map>


84

X 4179

:2010

   

6.4.1.7.3 

二つの流し込みを一つの領域に対応付ける 

図 6.4−流し込み 及び を領域 に対応付ける 

この場合,流し込みマップは次のように指定する。

<fo:flow-map flow-map-name="E3">

  <fo:flow-assignment>

        <fo:flow-source-list>

      <fo:flow-name-specifier flow-name-reference="A"/>

      <fo:flow-name-specifier flow-name-reference="B"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier region-name-reference="R"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

</fo:flow-map>


85

X 4179

:2010

6.4.1.7.4 

二つの流し込みを二つの領域に対応付ける 

図 6.5−流し込み 及び を領域 R1 及び R2 に対応付ける 

この場合,流し込みは次のように指定される。

<fo:flow-map flow-map-name="E4">

  <fo:flow-assignment>

        <fo:flow-source-list>

      <fo:flow-name-specifier flow-name-reference="A"/>

      <fo:flow-name-specifier flow-name-reference="B"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier region-name-reference="R1"/>

      <fo:region-name-specifier region-name-reference="R2"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

</fo:flow-map>


86

X 4179

:2010

   

6.4.2 fo:root 

一般的な使用法:

これは,

フォーマット化オブジェクト木の上位ノードであり,

(文書内で使用されるすべてのマスタを保

持する)fo:layout-master-set フォーマット化オブジェクト,任意の fo:declarations,任意の fo:bookmark-tree

及 び 一 つ 以 上 の fo:page-sequence , 又 は fo:page-sequence-wrapper オ ブ ジ ェ ク ト を 保 持 す る 。 各

fo:page-sequence は,fo:page-sequence の内容の子をフォーマット化した結果生じたページのシーケンスを表

示する。

fo:page-sequence-wrapper は,やはり fo:root の子として生じることができる。fo:page-sequence-wrapper

は,0 個以上の fo:page-sequence オブジェクト又は fo:page-sequence-wrappers を包含することができる。こ

の fo:page-sequence-wrapper は,それがラップする fo:page-sequence オブジェクトの継承される特性を指定

するために使用される。

注記  文書は複数の fo:page-sequences を包含することができる。例えば,文書の各章が,個々の

fo:page-sequence であることも可能である。これによって,章のタイトルなど章固有の内容を余

白に配置することができる。 

領域:

ページ表示域領域は,fo:root フォーマット化オブジェクトの fo:page-sequence の子によって返される。

fo:root は,どのような領域も生成しない。

制約:

領域木の根の子は,fo:root の fo:page-sequence の子によって返されるページ表示域領域だけから構成され

る。fo:page-sequence の子が返すすべての領域の集合は,適正に順序付けされている(4.7.1 参照)

内容:

(layout-master-set,declarations?,bookmark-tree?,(page-sequence|page-sequence-wrapper)+)

fo:root の fo:page-sequence の子孫が少なくとも一つなければ誤りである。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

id(7.30.8 

index-class(7.24.1

index-key(7.24.2

media-usage  7.27.11

6.4.3 fo:declarations 

一般的な使用法:

fo:declarations フォーマット化オブジェクトは,スタイルシートの大域的宣言をグループ化するために使

用される。

領域:

fo:declarations フォーマット化オブジェクトは,どのような領域も生成せず,返さない。

制約:

なし。

内容:

(color-profile)*

fo:declarations 流し込みオブジェクトには,非 XSL 名前空間の追加の子要素が存在してもよい。しかし,

それらの存在が XSL 名前空間オブジェクト及び特性のセマンティクスを変更することはない。これらの非


87

X 4179

:2010

XSL 名前空間の要素に許容される構造は,それらの名前空間に対して定義される。

6.4.4 fo:color-profile 

一般的な使用法:

fo:color-profile フォーマット化オブジェクトは,スタイルシートに ICC 色プロファイルを宣言するため

に使用される。色プロファイルは,

“color-profile-name”特性で指定される名前を介して,再度参照される。

色プロファイルは,

“src”特性値で指定される URI によって識別される。この URI は,内部で認識され

る色プロファイルを識別してもよいし,ロードされ,処理されるのが望ましい ICC 色プロファイル符号化

を示してもよい。

rgb-icc 関数(5.10.2)を介して,色プロファイルを参照するとき,次の規則が使用される。

色プロファイルが利用できる場合は,色プロファイルから識別される色値を使用するのが望ましい。

色プロファイルが利用できない場合,[sRGB]フォールバックを使用しなければならない。

領域:

fo:color-profile フォーマット化オブジェクトは,どのような領域も生成せず,返さない。

制約:

なし。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

src(7.30.16

color-profile-name(7.18.2

rendering-intent(7.18.3

6.4.5 fo:page-sequence 

一般的な使用法:

fo:page-sequence フォーマット化オブジェクトは,例えば報告書の章など,文書内でのページのシーケン

ス又は部分シーケンスの生成方法を指定するために使用される。これらのページの内容は,事実上その

fo:page-sequence の流し込みマップによって割り当てられることで,fo:page-sequence の流し込みの子から生

じ る 。 こ れ ら の ペ ー ジ の レ イ ア ウ ト は , fo:page-sequence の master-reference 特 色 が 参 照 す る

fo:page-sequence-master 又は page-master から生じる。fo:page-sequence の各流し込みオブジェクトの子が返

す領域のシーケンスは,後に記述するとおり,生成されたページの子孫となる。

領域:

fo:page-sequence フォーマット化オブジェクトは,表示域・参照のペアのシーケンスを生成し,ページ表

示域領域を返す。各ページ参照領域及びそのページ参照領域の生成に使用されるページマスタで指定され

る各区画については,fo:page-sequence オブジェクトは,ページ参照領域の区画の出現に対しても表示域・

参照のペアを生成し,前浮動参照領域,脚注参照領域,主要参照領域及び一つ以上の正規シーケンス参照

領域を生成してもよい。こ れ らの さら な る領 域の生成 は,fo:simple-page-master,region-masters 及 び

fo:flow-map の記述に示されている。同様に,表題領域を生成してもよい。

fo:page-sequence が生成するすべての領域には,領域クラス“xsl-absolute”が存在する。

ページ表示域領域は,辺の一つをページのとじ代とみなす。この規格は,どの辺をページのとじ代とし

て選択するかの手順は指定しない。


88

X 4179

:2010

   

注記  利用者エージェントが,フォーマット結果をとじるべきと決定した場合,与えられたページの

とじ代がそのページのとじられようとする端面となる。 

一般的に奇数ページ番号のページのとじ代は,そのページの開始辺であり,偶数ページ番号のページの

とじ代は,そのページの終了辺である。

ステープル止めでは簡単であり,面付け機構を使って本を製作するには複雑になる。

6.13.2 で詳述するとおり)

,与えられた fo:change-bar-begin オブジェクト の変更バー勢力下の各フォ

ーマット化オブジェクトの子 に対して,fo:page-sequence は,から返される各領域 に対する“変更

バー領域”を,の先祖区画領域の子として生成する。各変更バー領域は,0 のマージン及びパディング,

F

の change-bar-color によって与えられる border-end-color,の change-bar-style によって与えられる

border-end-style,並びに 0 に等しい行内進行寸法及び区画領域のブロック進行寸法に平行 の寸法に等し

いブロック進行寸法をもつ領域クラス xsl-absolute である。

変更バー領域は,normal-flow-reference-area か region-reference-area のいずれかである の直近の先祖領

域 に接するように位置付けされる。変更バー領域は,とそろえられ,の change-bar-placement によっ

て決定される start-edge 又は end-edge に応じて,の change-bar-offset によって与えられる距離で から離

れて置かれる。

特色の派生:

区画表示域領域の参照方位及び表記方法は,fo:page-sequence の“reference-orientation”及び“writing-mode”

特性の値によって決定される。

注記  値は明示的値として与えられるか,from-page-master-region 機能が,区画表示及び参照領域のペ

アを生成するために使われるレイアウトフォーマット化オブジェクト上に指定される値を得る

ために使われる。 

制約:

ページ表示域領域とページ参照領域との各組合せは,ページシーケンスマスタの制約を満たすページマ

スタを使用して生成される。ページシーケンスマスタは,fo:page-sequence の master-reference 特色又は

master-reference 特色が直接識別したページマスタによって識別される。このようなページ参照領域の区画

表示域領域の子は,そのページマスタの子である区画に対応しなければならない。

fo:page-sequence が生成する領域は,fo:page-sequence の子である流し込みが返す領域をそれらの子孫とし

てもつ。

流し込みが fo:page-sequence に返す領域は,次の五つの型の制約を満たさなければならない。

a)

完全性  fo:page-sequence の流し込みの子であるフォーマット化オブジェクトの子孫が返すすべての

領域は,fo:page-sequence が生成する領域の子孫となる。ただし,4.7.2 及び 4.7.3 で記述したとおり,

消去又は置換の影響を受けるグリフ領域は例外である。

b) 

流し込みマップ関連付け  fo:page-sequence の流し込みの子が返すすべての領域は,実質的に流し込み

マップによって流し込みに関連付けられる領域から生成される区画参照領域の子孫となる。

xsl-before-float-separator の流し込み名を伴う fo:static-content から返される領域は,領域クラス

xsl-before-float のすべての兄弟の後に続いて,fo:region-body に関連する領域の before-float-reference-area

の子になる。流し込み名が xsl-before-float-separator である fo:static-content から返される領域は,

fo:region-body に関連付けられる領域の前浮動参照領域の子となり,領域クラス xsl-before-float のすべ

ての兄弟領域に後続する。流し込み名が xsl-footnote-separator である fo:static-content から返される領域

は,fo:region-body に関連付けられる領域の脚注参照領域の子となり,領域クラス xsl-footnote のすべ


89

X 4179

:2010

ての兄弟領域に先行する。

もし流し込みマップ参照が指定されると,実質的に流し込みマップは,fo:page-sequence 上の流し込

みマップ参照の指定値に一致する流し込み名をもつ,fo:layout-master-set の fo:flow-map の子によって

記述されるものである。

もし流し込みマップ参照が指定されないときは,実質的な流し込みマップは,

6.4.22

に示される暗黙の流し込みマップである。

c)

領域クラス関連付け  fo:page-sequence の流し込みの子によって返される領域は,次のように分配され

る。

1)

領域クラス xsl-footnote のすべての領域及び xsl-footnote-separator の流し込み名をもつ fo:static-content

から返されるすべての領域は,脚注参照領域の子孫でなければならない。

2)

領域クラス xsl-before-float のすべての領域及び xsl-before-float の流し込み名をもつ fo:static-content

から返されるすべての領域は,前流し込み参照領域の子孫でなければならない。

その他のすべての領域は,区画参照領域の子孫でなければならず,さらに,それらは,もしあると

きは,その区画参照領域の主要参照領域の子の子孫でなければならない。

d)

スタック化  各流し込みの子が返す所定のクラスのスタック可能領域は,上記のとおり,適切な参照

領域内で,適切にスタックされる。

e)

流し込み割当て順序  4.7.1 の省略時の順序付け制約は,fo:page-sequence に適用しない。省略時の順序

付け制約は,fo:static-content 内で,流し込みオブジェクト子に適用される。すなわち,特別な順序付

け制約が,子 fo:static-content オブジェクトに適用される。

ページシーケンスに効力のある流し込みマップが,流し込み元リスト 及び流し込み先リスト 

伴う流し込み割当ての子をもち,の子の流し込み名指示子が流し込み名参照値 F

1

F

m

をもち,

子の区画名指示子が区画名参照値 R

1

R

n

をもつとき,各領域クラスに対して,それらのクラスに所属

するページシーケンスに返される領域は,

(流し込みの順序に関連して)発生するフォーマット化オブ

ジェクトのように,

(区画の順序に関連して)領域木内の同じ順序をもつ。すなわち,及び が領域

クラス の領域であり,及び が に先行して が返される同じ流し込みによって返されるか,A

及び が,iである 及び に対してそれぞれ,流し込み値 F

i

及び F

j

をもつ流し込みによって返さ

れるかのいずれかの場合は,次のいずれかの条件が保たれなければならない。

1)  A

の先祖ページ参照領域は,の先祖ページ参照領域に先行する。

2)  A

及び は同じ先祖ページ参照領域を占め,kである 及び に対して,は区画名値が R

k

であ

る区画を用いて生成される区画参照領域の子孫であり,は区画名値が R

l

である区画を用いて生成

される区画参照領域の子孫である。

3)  A

及び は,同じ区画参照領域の子孫であり,は領域木の同じ先行順木縦断の子孫である。

表題領域が生成される場合には,次の制約を満たさなければならない。

a)

完全性  fo:page-sequence の fo:title の子であるフォーマットオブジェクトの子孫が返すすべての領域

は,4.7.2 及び  4.7.3 における削除又は置換で対象となるグリフ領域を除いて,fo:page-sequence が生成

する表題領域の子孫となる。

b)

スタック化  fo:title の子によって返される領域は,タイトル領域内に適正にスタックされる。

4.7.1

で示した順序付けの省略時の制約は,fo:title には適用されない。

内容:

(title?,folio-prefix?,folio-suffix?,static-content*,flow+)


90

X 4179

:2010

   

このフォーマット化オブジェクトに適用される特性:

country(7.10.1

flow-map-reference(7.27.19

format(7.26.1

language(7.10.2

letter-value(7.26.4

grouping-separator(7.26.2

grouping-size(7.26.3

id(7.30.8

index-class(7.24.1

index-key(7.24.2

initial-page-number(7.27.7

force-page-count(7.27.6

master-reference(7.27.9

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.6 fo:page-sequence-wrapper 

一般的な使用法:

fo:page-sequence-wrapper フォーマット化オブジェクトは,fo:page-sequence フォーマット化オブジェクト

のグループに継承する特性を指示するために使用される。

領域:

fo:page-sequence-wrapper フ ォ ー マ ッ ト 化 オ ブ ジ ェ ク ト は , ど の よ う な 領 域 も 生 成 し な い 。

fo:page-sequence-wrapper フォーマット化オブジェクトは,各 fo:page-sequence-wrapper の子によって返され

る領域の幾つかのシーケンスを連結させることで生成される一連の領域を返す。

特色の派生:

“id”

“index-class”及び“index-key”を除いて,fo:page-sequence-wrapper は,それによって直接使用さ

れる特性をもたない。

しかし,

それの子によって活用される継承特性を保持する手段として機能を果たす。

制約:

fo:page-sequence-wrapper の 子 に よ っ て 返 さ れ る 領 域 の シ ー ケ ン ス の 連 結 の 順 序 は , 子 が

fo:page-sequence-wrapper の下で順序付けられるのと同じ順序である。子孫のように fo:page-sequence オブジ

ェクトを含まない fo:page-sequence-wrapper は,領域を返さない。

注記  子孫のように fo:page-sequence オブジェクトを含まない fo:page-sequence-wrapper が領域を返さ

ないので,そのような fo:page-sequence-wrapper 上のどのような id,index-key,又は index-class

特性も,無視され,結果はあたかもそれらがこの FO 上に特定していないかのようになる。特

に,この id を参照しようとするものは,この id が FO 結果木の中で宣言されないのと同じよう

な作用となる。 

内容:

(page-sequence|page-sequence-wrapper)*

このフォーマット化オブジェクトに適用される特性:

id(7.30.8


91

X 4179

:2010

index-class(7.24.1

index-key(7.24.2

6.4.7 fo:layout-master-set 

一般的な使用法:

fo:layout-master-set は,文書で使用されるすべてのマスタの周囲にあるラッパである。これは,ページシ

ーケンスマスタ,ページマスタ及び流し込みマップを含む。

領域:

fo:layout-master-set フォーマット化オブジェクトは,直接には領域を生成しない。fo:layout-master-set の

子であるマスタは,fo:page-sequence によって使用され,ページを生成する。

制約:

fo:layout-master-set の各子の master-name 特色の値は,その集合内で一意でなければならない。

内容:

(simple-page-master|page-sequence-master|flow-map)+

6.4.8 fo:page-sequence-master 

一般的な使用法:

fo:page-sequence-master は,ページマスタの所定の集合がページのシーケンスの生成で使用される場合の

制約及び順序を指定するために使用される。fo:page-sequence-master が fo:page-sequence のフォーマット化

で使用されると,ページは自動生成される。

注記  ページの潜在シーケンスの指定方法は複数存在する。特定のページマスタに対する参照のシー

ケンスを指定することもできる。これによって,潜在ページの有限のシーケンスが生じる。又

は一つ以上のページマスタの部分シーケンスの繰返しを指定することができる。この部分シー

ケンスは,制限されていても,いなくてもよい。さらに,2 種類の部分シーケンス識別子を混

合することもできる。 

領域:

fo:page-sequence-master フ ォ ー マッ ト 化オ ブジ ェ クト は ,直 接 には 領域 を 生成 し ない 。 これ は,

fo:page-sequence フォーマット化オブジェクトによって使用され,ページを生成する。

制約:

fo:page-sequence-master の子は,部分シーケンス指定子(sub-sequence-specifier)のシーケンスである。ペ

ージシーケンスは,次の場合に fo:page-sequence-master が決定する制約を満たす。

a) fo:page-sequence-master

の子である部分シーケンス指定子のシーケンスの最初の部分シーケンスに 1 対

1 で対応付けるページの部分シーケンスに分割でき,

b)

ページの各部分シーケンスについて,その部分シーケンスが対応する部分シーケンス指定子の制約を

満たす。

ページの部分シーケンスのシーケンスは,部分シーケンス指定子のシーケンスよりも短くすることが可

能である。

fo:flow が返す領域の幾つかが配置されない場合に,部分シーケンス指定子の子のシーケンスがすべて使

用されてしまっていれば,誤りである。もし可能な場合は,実装は,ページの生成に最後に使用された部

分シーケンス指定子を再使用することによって,回復してもよい。


92

X 4179

:2010

   

内容:

(single-page-master-reference|repeatable-page-master-reference|repeatable-page-master-alternatives)+

このフォーマット化オブジェクトに適用される特性:

master-name(7.27.8

6.4.9 fo:single-page-master-reference 

一般的な使用法:

fo:single-page-master-reference は,最も単純な部分シーケンス指定子である。このオブジェクトは,単一

の ペ ー ジ マ ス タ の 単 一 の イ ン ス タ ン ス か ら 構 成 さ れ る 部 分 シ ー ケ ン ス を 指 定 す る 。 こ れ は ,

fo:page-sequence-master を使用して生成されるページのシーケンス内にある所定の点で,特定のページマス

タの使用を指定するために使用される。この場合,fo:page-sequence-master は,fo:single-page-master-reference

の親である。

領域:

fo:single-page-master-reference フォーマット化オブジェクトは,直接には領域を生成しない。これは,

fo:page-sequence フォーマット化オブジェクトによって使用され,ページを生成する。

制約:

fo:single-page-master-reference には,fo:single-page-master-reference 上の master-reference 特色と同じマスタ

名をもつ fo:simple-page-master への参照が存在する。

この部分シーケンス指定子に対応付けされたページの部分シーケンスは,次の場合にこの部分シーケン

ス指定子の制約を満たす。

ページの部分シーケンスが単一のページから構成され,

そのページが,

fo:single-page-master-reference が参照する fo:simple-page-master を使用しての生成を制約さ

れる。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

master-reference(7.27.9

6.4.10 fo:repeatable-page-master-reference 

一般的な使用法:

fo:repeatable-page-master-reference は,次に単純な部分シーケンス指定子である。このフォーマット化オ

ブジェクトは,単一のページマスタの繰返しインスタンスから構成される部分シーケンスを指定する。繰

返しの数を制限してもよいし,潜在的に制限しなくてもよい。

領域:

fo:repeatable-page-master-reference フォーマット化オブジェクトは,直接には領域を生成しない。これは,

fo:page-sequence フォーマット化オブジェクトによって使用され,ページを生成する。

制約:

fo:repeatable-page-master-reference には,fo:repeatable-page-master-reference の master-reference 特色と同じ

マスタ名をもつ fo:simple-page-master への参照が存在する。

この部分シーケンス指定子に対応付けされるページの部分シーケンスは,次の場合に,この部分シーケ

ンス指定子の制約を満たす。

a)

ページの部分シーケンスが 0 個以上のページから構成され,


93

X 4179

:2010

b)

各ページが fo:repeatable-page-master-reference が参照する fo:simple-page-master を使用して生成され,

c)

部分シーケンスの長さが maximum-repeats の値より小さいか又は同じである。

こ の フ ォ ー マ ッ ト 化 オ ブ ジ ェ ク ト に よ っ て 参 照 さ れ る page-master の region-master の 子 に

fo:page-sequence の任意の流し込みに関連付けられる区画名がない場合,部分シーケンスの長さは 0 に制約

される。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

master-reference(7.27.9

maximum-repeats(7.27.10

6.4.11 fo:repeatable-page-master-alternatives 

一般的な使用法:

fo:repeatable-page-master-alternatives フォーマット化オブジェクトは,最も複雑な部分シーケンス指定子

である。このフォーマット化オブジェクトは,代替ページマスタの集合の繰返しインスタンスから構成さ

れる部分シーケンスを指定する。繰返しの数を制限してもよいし,潜在的に制限しなくてもよい。シーケ

ンスのあるところで代替ページマスタのどれを使うかは,選択条件の評価に依存する。代替ページマスタ

を使用して生成されるページがページシーケンスの最初のページであるか若しくは最後のページであるか,

又は空白のページであるかを検査することが典型的な条件に含まれる。全条件によって,異なるページマ

スタを,最初のページ,奇数及び偶数のページ,空白のページに使用することができる。

注記  条件は,子のシーケンスの最初から,順に検査されるため,通常,シーケンスの最後の代替は,

ある特殊なレイアウトを受け取らないすべてのページに使用されるページマスタを参照する。 

領域:

fo:repeatable-page-master-alternatives フォーマット化オブジェクトは,直接には領域を生成しない。この

フォーマット化オブジェクトは,fo:page-sequence フォーマット化オブジェクトによって使用され,ページ

を生成する。

制約:

fo:repeatable-page-master-alternatives の子は,fo:conditional-page-master-references である。これらの子を代

替(alternative)と呼ぶ。

この部分シーケンス指定子に対応付けされるページの部分シーケンスは,次の場合に,この部分シーケ

ンス指定子の条件を満たす。

a)

ページの部分シーケンスが 0 個以上のページから構成され,

b)

各 ペ ー ジ は , fo:repeatable-page-master-alternatives の 子 で あ る 代 替 の 一 つ が 参 照 す る

fo:simple-page-master を使用して生成され,

c)

その代替の条件が true であり,

d)

その代替が,すべての条件が true である子のシーケンス内の最初の代替であり,

e)

部分シーケンスの長さが maximum-repeats の値より小さいか又は同じである。

内容:

(conditional-page-master-reference+)


94

X 4179

:2010

   

このフォーマット化オブジェクトに適用される特性:

maximum-repeats(7.27.10

6.4.12 fo:conditional-page-master-reference 

一般的な使用法:

fo:conditional-page-master-reference は,使用に関する条件を満たす場合に,使用されるページマスタを識

別するために使用される。これによって,偶数及び奇数のページ,ページシーケンス内の最初のページ,

空白のページなどに異なるページマスタを使用することが可能となる。この使用法は,本又は報告書の章

では典型的なもので,最初のページとそれ以外のページとでレイアウトが異なり,偶数又は奇数のページ

の柱も異なる場合がある。

領域:

fo:conditional-page-master-reference フォーマット化オブジェクトは,直接には領域を生成しない。これは,

fo:page-sequence フォーマット化オブジェクトによって使用され,ページを生成する。

制約:

fo:conditional-page-master-reference には,fo:conditional-page-master-reference の master-reference 特色とマス

タ名が同じである fo:simple-page-master への参照が存在する。

参 照 さ れ る ペ ー ジ マ ス タ の 使 用 に お け る 副 条 件 の 指 定 に は , page-position , odd-or-even 及 び

blank-or-not-blank と い う 三 つ の 特 色 が 存 在 す る 。 三 つ の 副 条 件 の す べ て は , true で あ る

fo:conditional-page-master-reference の条件に対して,すべて true でなければならない。

注記  これらの特色が生成される特性が継承されてなく,すべての特性の初期値が該当する副条件を

true にするとき,設定された値で特性から導かれる特色の一部だけがそれらの該当する副条件

を true としてもたなければならない。

fo:conditional-page-master-reference を使用して生成されるページが,参照するページシーケンスによって

生成されるページのシーケンスで位置を指定される場合,page-position 特色に対応する副条件は,true で

ある。位置の指定には“first”

“last”

“only”

(first 及び last の両方)

“rest”

(first でも last でもないこと

を示す。

)又は“any”

(前述のすべてを示す。

)という名前を使用する。参照するページシーケンスとは,

この fo:conditional-page-master-reference が子孫である fo:page-sequence-master を参照した fo:page-sequence

をいう。

odd-or-even 特 色 に 対 応 す る 副 条 件 は , odd-or-even 特 色 の 値 が “ any ” で あ る か , 又 は 値 が

fo:conditional-page-master-reference を使用して生成されるページのページ番号のパリティと一致する場合に,

true となる。

blank-or-not-blank 特色に対応する副条件は,次の場合に true となる。

a)

特色の値が“not-blank”であり,fo:conditional-page-master-reference を使用して生成されるページに

fo:flow フォーマット化オブジェクトの子孫が生成する領域が存在しない場合。

b)

特色の値が“blank”であり,fo:conditional-page-master-reference を使用して生成されるページが,その

ページ上に任意の fo:flow からの領域が存在しないようなページである場合。これが生じる理由を次に

示す。

1)

次の i)又は ii)である。

i)

“偶数ページ”又は“奇数ページ”の break-after 値又は break-before 値によるページパリティを適

正に維持するため。

ii)

ページシーケンスの開始時又は終了時のページパリティを適正に維持するため。


95

X 4179

:2010

2) fo:flow

フォーマット化オブジェクトの子孫が生成する領域の条件が,それらがこのページから生じ

た子孫であった場合に満たされないため。

c)

特色の値が“any”である場合。

注記  “空白ページ”は,上記の“blank-or-not-blank”に一致する副条件の b)に基づいて生成される

ページである。これは,ページが読み手には完全に空白に見えるかどうかとは無関係である。 

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

master-reference(7.27.9

page-position(7.27.14

odd-or-even(7.27.12

blank-or-not-blank(7.27.1

6.4.13 fo:simple-page-master 

一般的な使用法:

fo:simple-page-master は,ページの生成に使用され,ページの幾何的構造を指定する。ページは,一つ以

上の区画本体及び四つまでの他の区画に細分化される。すなわち,region-before,region-after,region-start

及び region-end である。

注記 1  例えば,fo:simple-page-master の表記方法が“lr-tb”である場合,これらの区画は,それぞれ,

文書の本体,上余白,下余白,左余白及び右余白に対応する。 

注記 2  単純ページマスタは,機構が単純なページレイアウト機能を提供できることを意図したもの

である。この規格の今後の版では,fo:page-master フォーマット化オブジェクトを使用したよ

り複雑なページレイアウトの構築に対応する可能性がある。 

領域:

fo:simple-page-master フォーマット化オブジェクトは,直接には領域を生成しない。これは,ページの生

成で,fo:page-sequence によって使用される。

fo:simple-page-master を使用してページを生成するとき,表示域・参照のペアが生成される。これは,ペ

ージ表示域領域及びページ参照領域から構成される。ページ表示域領域は,出力メディアの物理的な制限

を意味する。ページ参照領域は,内容が表現されるページの部分,すなわち,ページマージン内の領域を

表示する。

さらに,fo:simple-page-master を使用してページを生成する時,fo:simple-page-master の子である領域に対

応する表示域・参照のペアも生成される。これらの領域の生成に関する詳細については,五つの区画のフ

ォーマット化オブジェクト規定(6.4.146.4.156.4.166.4.17 及び 6.4.18)を参照する。ページの表記方

法は,マスタの五つの領域の配置を決定するために使用される。


96

X 4179

:2010

   

図 6.6−区画表示域領域 

外側の四つの区画と各 fo:region-body との間の間隔は,その fo:region-body の“margin-x”特性から,外

側の各区画上の関連 extent 特色を減算することによって決定される。

特色の派生:

ページ参照領域の参照方位及びページ表示域領域の表記方法は,領域を生成するフォーマット化オブジ

ェクトによって設定される(6.4.5 参照)

。ページ参照領域の表記方法は,ページ表示域領域の表記方法と

同じ値が設定される。参照方位はページ表示域領域に影響せず,その参照方位は“0”に設定される。境界

とパディングとは,ページ参照領域で許容されない。ページ参照領域の残りの特色は,特色の値を決定す

る正規の方法に従って設定される。

制約:

ページの生成でページマスタを使用するとき,ページ表示域領域の内容長方形のブロック進行寸法

(block-progression-dimension)及び行内進行寸法(inline-progression-dimension)は,

“page-height”特性及

び“page-width”特性の計算値を使用して決定される。シートでは,

“page-height”及び“page-width”特性

の計算値はシートの方位を決定し,

“page-height”は“top”から“bottom”まで計られる。ディスプレイで

は,表示窓が常に縦向きであり,表示スクリーンの上端は“top”である。

“margin-top”

“margin-bottom”

“margin-left”及び“margin-right”特性から生じた特色は,マージン特

性から生じた特色は,ページ表示域領域の内容長方形のサイズ及び位置を決定する。


97

X 4179

:2010

注記  ページ表示域領域の内容長方形の参照点には,“before-edge”,“after-edge”,“start-edge”及び

“end-edge”ではなく,

“top”

“bottom”

“left”及び“right”を使用する。これは,利用者が見

るのがその方位に関連するメディアであり,使用中の表記方法に関連するメディアではないた

めである。

図 6.7−ページのマージン 

fo:page-sequence が返す最初のページの folio-number 特色の値は,initial-page-number 特色の値と等しくな

ければならない。次のページの folio-number 特色の値は,直前のページの値より一つ大きくなければなら

ない。

format,letter-value,grouping-separator,grouping-size,country 及び language の各特色は,[XSLT]で指定

されるとおり,

数値を文字列形式にフォーマットするために使用される。

このフォーマットされた番号は,

fo:page-number 流し込みオブジェクトの値として使用される。

区画に適用できる制約:

所定の fo:simple-page-master 内で指定される区画のすべてに適用される制約は,数多く存在する。


98

X 4179

:2010

   

図 6.8−ページモデルの二つの例 

適正にスタックされた区画参照領域のブロック進行寸法が,その親である区画表示域領域のブロック進

行寸法より大きい場合,区画表示域領域及び区画参照領域間の関係における制約は,区画マスタ及び領域

に割り当てられる流し込みの種類における overflow 特色の値に依存する。

対応する領域に割り当てられた流し込みが fo:static-content 流し込みオブジェクトである場合,区画参照

領域のブロック進行寸法に制約は,存在しない。

対応する領域に割り当てられた流し込みが fo:flow フォーマット化オブジェクトである場合は,次となる。

a) media-usage

特 色 の 値 が paginate で あ る 場 合 , 又 は overflow 特 色 の 値 が visible , hidden 又 は

error-if-overflow である場合,区画参照領域のブロック進行寸法は,区画表示域領域のブロック進行寸

法よりも小さくなければならない。

b) media-usage

特色の値が bounded-in-one-dimension 又は unbounded であり,overflow 特色の値が scroll 又

は auto である場合,区画参照領域のブロック進行寸法に制約は,存在しない。

内容:

(region-body+,region-before?,region-after?,region-start?,region-end?)

このフォーマット化オブジェクトに適用される特性:

一般的なブロックレベルのマージン特性(7.11

master-name(7.27.8

page-height(7.27.13


99

X 4179

:2010

page-width(7.27.15

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.14 fo:region-body 

一般的な使用法:

単純ページマスタの構築に使用される。この区画は,fo:simple-page-master の“center”に配置される表

示域・参照のペアを指定する。overflow 特色は,下にある区画参照領域の可視程度,すなわち,区画参照

領域がその親である区画表示域領域によって切り取られるかどうかを制御する。

注記 1  通常,ページ付けしたメディアの場合で,明示的な流し込みマップが設定されていないとき,

fo:page-sequence 内の fo:flow フォーマット化オブジェクトが返す領域は,区画本体に対応す

る区画参照領域のシーケンスの子孫となる。これらの区画参照領域は,どのページマスタが

fo:region-body を含むかを指定するページ領域のすべての領域の子孫である。fo:flow 流し込み

がその他の区画に割り当てられる場合,fo:flow が返す領域は,割り当てられた区画マスタを

使用して生成される区画参照領域の子孫でなければならない。 

注記 2  本体区画は,fo:simple-page-master 内にサイズ化され,位置決めされるのが望ましい。それに

よって,fo:region-body に割り当てられる流し込みが返す領域及び適切な側区画のすべてに空

間が生まれる。

この場合の側区画とは,

同じページに配置される fo:region-before,

fo:region-after,

fo:region-start 及び fo:region-end をいう。これらの側区画は,ページ参照領域の内容長方形内

に位置決めされる。fo:region-body のマージンは,fo:region-body に区画表示域領域を位置決め

し,fo:region-body を囲む他の区画に間隔を残すために使用される。 

図 6.9−前の図の最初の例の詳細 


100

X 4179

:2010

   

先の四つの区画と fo:region-body との間の間隔は,fo:region-body の“margin-x”特性に対応

する特色から,側区画の関連 extent 特色を減算することによって,決定される。

同様に,fo:region-body を使用して,複数の段を提供してもよい。column-count 特色が 1 より大きいと,

区画本体は複数の段に細分化されることになる。

領域:

fo:region-body を 子 と し て も つ fo:simple-page-master を 使 用 し て ペ ー ジ を 生 成 す る 場 合 は , 必 ず

fo:region-body フォーマット化オブジェクトを使用して,一つの区画表示域領域と一つの区画参照領域とを

生成する。overflow 特色の値が“scroll”の場合は,スクロール機構が実装定義の方法で提供されなければ

ならない。

区画表示域領域の位置及びサイズは,fo:simple-page-master が生成するページ参照領域の内容長方形に関

連して指定される。区画表示域領域の内容長方形は,ページ参照領域の内容長方形から,“margin-top”,

“margin-bottom”,“margin-left”及び“margin-right”の各特性の値の分だけ字下げされる。padding 及び

border-width 特色の値は“0”でなければならない。

fo:region-body を使用して生成される区画参照領域は,区画表示域領域の子である。fo:region-body の

“writing-mode”は,区画内の段の進行を決定する。行内進行方向は,段をスタック化する方向(及び段か

ら段への本文の省略時流し込み順序)を決定するために使用される。

さらに,表示域・参照のペアの他に,区画本体を使用して領域を生成する場合,少なくとも一つ,最大

で三つまで,追加の参照領域が生成される。これらの参照領域は,任意の前浮動参照領域,任意の脚注参

照領域及び主要参照領域である。主要参照領域は,他の二つの参照領域に間隔が割り当てられた後に残っ

た間隔から構成される。主要参照領域にはパディング,境界又はそれに関連する間隔が存在しない。

注記  区画参照領域に前浮動参照領域又は脚注参照領域の子が存在しない場合,主要参照領域の内容

長方形は,区画参照領域の内容長方形と重なり合う。 

主要参照領域は,またがり参照領域のシーケンスを子としてもつ。これらは,境界及びパディングが 0

の参照領域ブロック領域であり,その行内進行寸法は,主要参照領域の行内進行寸法と同一で,主要参照

領域内に正規にスタックされる。

各またがり参照領域には,正規流し込み参照領域として指定される参照領域の子が一つ以上存在する。

またがり参照領域の子の数及び配置は,またがり参照領域の column-count 特色に依存する。フォーマッタ

は,順番に,またがり参照領域を正確に生成し,その column-count 特色を設定しなければならない。それ

によって,span が“all”である fo:flow から返されるブロック領域は,column-count が 1 に等しいまたがり

参照領域の子となり,span が“none”である fo:flow から返されるブロック領域は,column-count が関連す

る区画参照領域の column-count 特性の洗練化された値に等しいまたがり参照領域の子となる。

各またがり参照領域の場合,正規流し込み参照領域の子の数 は,column-count 特色の値に等しい。

“overflow”特性の値が“scroll”である場合に,column-count の指定を 1 以外にするのは,誤りである。

実装は,

“1”が指定されているものとして振る舞うことによって,誤りから回復してもよい。

これらの各正規流し込み参照領域の行内進行寸法は,主要参照領域の行内進行寸法から,column-gap 特

色を  (N−1)  回減算し,その結果を で除算することによって決定される。またがり参照領域の行内進行

寸法の名前に“body-in-size”を使用し,行内進行方向での正規流し込み参照領域のサイズの名前に

“column-in-size”を使用した場合の式を次に示す。

column-in-size = (body-in-size - (N - 1)*column-gap)/N


101

X 4179

:2010

正規流し込み参照領域の  ブロック進行寸法は,親であるまたがり参照領域のブロック進行寸法と同じで

ある。

注記  上述のとおり,またがり参照領域のブロック進行寸法は,前浮動参照領域又は脚注参照領域が

存在する場合,又は主要参照領域のまたがり参照領域の子が一つ以上存在する場合は,区画参

照領域のサイズより小さくてもよい。 

正規流し込み参照領域は,またがり参照領域内に位置決めされる。最初の段は,その内容長方形の前辺

及び開始辺に位置決めされる。この場合の前辺及び開始辺は,またがり参照領域の内容長方形の前辺及び

開始辺に一致する。またがり参照領域の 番目の正規流し込み参照領域の子の内容長方形の場合,その前

辺は,またがり参照領域の内容長方形の前辺に一致し,開始辺は,行内進行方向で ((J-1)*(column-in-size +

column-gap))  によって計算されて,位置決めされる。これによって,番目の正規流し込み参照領域の内

容長方形の終了辺は,またがり参照領域の内容長方形の終了辺と一致することになる。

注記  表記方法が“rl-tb”である場合,上記は,期待どおり段が左向きになることを意味する。これ

は,表記方法が“rl-tb”のとき,開始辺が右にくるためである。

fo:region-body を使用してすべての領域が生成される場合,その領域クラスは“xsl-absolute”となる。

特色の派生:

区画表示域領域の参照方位及び表記方法は,領域(6.4.5 参照)を生成するフォーマット化オブジェクト

によって決定される。区画参照領域の参照方位は“0”に設定される。そのため,区画表示域領域が設定し

た方位と同じになる。区画参照領域の表記方法は,区画表示域領域の表記方法と同じになる。

区画表示域領域及び区画参照領域の残りの特色は,特色の値を決定する正規の規則に従って,設定され

る。

またがり参照領域及び正規流し込み参照領域の特色の決定方法は,箇条 で記述された方法と同じであ

る。

制約:

すべての区画に適用される制約(6.4.13 参照)がすべて適用される。

区画表示域領域の行内進行寸法は,ページ参照領域の内容長方形の行内進行寸法から,区画マスタの

start-indent 及び end-indent 特色の値を減算して決定される。区画表示域領域の内容長方形の開始辺及び終

了辺は,ページマスタの reference-orientation 特色によって決定される。

区画表示域領域のブロック進行寸法は,ページ参照領域の内容長方形のブロック進行寸法から,区画マ

スタの space-before 及び space-after 特色の値を減算することによって決定される。区画表示域領域の内容長

方形の前辺及び後辺は,ページマスタの reference-orientation 特色によって決定される。

space-before 及び start-indent 特色の値を使用して,ページ参照領域の内容長方形の前辺及び開始辺に関連

する区画表示域領域の位置を決める。

fo:region-body を使用して生成される区画参照領域のサイズ及び位置に関する制約は,6.4.13 の“区画に

適用できる制約”に示されている。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11

clip(7.21.1


102

X 4179

:2010

   

column-count(7.27.2

column-gap(7.27.3

display-align(7.14.4

overflow(7.21.2

region-name(7.27.17

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.15 fo:region-before 

一般的な使用法:

このフォーマット化オブジェクトは,単純ページマスタの構築に使用される。この区画は,ページ参照

領域の“前”側に配置される表示域・参照のペアを指定する。表記方法が lr-tb である場合,この区画は上

余白区画に対応する。overflow 特色は,下にある区画参照領域がどの程度見えるかを制御する。すなわち,

区画参照領域がその親である区画表示域領域によって切り取られるかどうかを制御する。

領域:

fo:region-before フォーマット化オブジェクトを使用して,一つの区画表示域領域及び一つの区画参照領

域を生成する。

padding 及び border-width 特色の値は“0”でなければならない。

この区画表示域領域の内容長方形の前辺の位置は,

親の fo:simple-page-master を使用して生成されるペー

ジ参照領域の内容長方形の前辺に一致する。区画表示域領域のブロック進行寸法は,fo:region-before フォ

ーマット化オブジェクトの extent 特色によって決定される。

区画表示域領域の行内進行寸法は,fo:region-before の precedence 特色によって決定される。precedence

特色の値が true である場合,行内進行寸法は,ページ参照領域の内容長方形の開始辺及び後辺まで拡張さ

れる。この場合,区画表示域領域の region-before の動作は,region-start 及び region-end が生成する区画へ

の浮動体に類似する。fo:region-before の precedence の値が false である場合,これらの隣接する区画は,

fo:region-before が生成する区画に浮動し,fo:region-before の広がりは,隣接する区画の侵入によって,事

実上減少される。

区画参照領域は,区画表示域領域の下の描画域に存在する。

区画参照領域のサイズは,区画の overflow 特色の設定に依存する。その特色の値が“auto”

“hidden”

“error-if-overflow”,“paginate”又は“visible”である場合,参照領域のサイズは,表示域のサイズと同じ

になる。overflow 特色の値が“scroll”である場合,参照領域のサイズは,区画の表記方法が行内進行方向

である場合の表示域のサイズと同じになる。ブロック進行方向での制約はない。すなわち,区画に結合さ

れる内容のすべてを分配するために,拡張されるということである。

特色の派生:

区画表示域領域の参照方位及び表記方法は,領域を生成するフォーマット化オブジェクトによって決定

する(6.4.5 参照)

。区画参照領域の参照方位は“0”に設定される。その結果,区画表示域領域が設定する

方向と同じになる。区画参照領域の表記方法は,区画表示域領域の表記方法と同じになる。

区画表示域領域及び区画参照領域の残りの特色は,特色の値を決定する正規の規則に従って,設定され

る。


103

X 4179

:2010

制約:

fo:region-before を使用して生成される区画参照領域のサイズ及び位置に関する制約は,6.4.13 の“区画

に適用できる制約”に示されている。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

clip(7.21.1

display-align(7.14.4

extent(7.27.4

overflow(7.21.2

precedence(7.27.16

region-name(7.27.17

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.16 fo:region-after 

一般的な使用法:

このフォーマット化オブジェクトは,単純ページマスタの構築に使用される。この区画は,ページ参照

領域の“後”側に配置される表示域・参照のペアを指定する。表記方法が lr-tb である場合,この区画は下

余白区画に対応する。overflow 特色は,下にある区画参照領域がどの程度見えるかを制御する。すなわち,

区画参照領域が親である区画表示域領域によって切り取られるかどうかを制御する。

領域:

fo:region-after フォーマット化オブジェクトを使用して,一つの区画表示域領域及び一つの区画参照領域

を生成する。

padding 及び border-width 特色の値は“0”でなければならない。

区画表示域領域の内容長方形の後辺の位置は,

親の fo:simple-page-master を使用して生成されるページ参

照領域の内容方形長方形の後辺に一致する。区画表示域領域のブロック進行寸法は,fo:region-after フォー

マット化オブジェクトの extent 特色によって決定される。

区画表示域領域の行内進行寸法は,fo:region-after の precedence 特色によって決定される。precedence 特

色の値が true である場合,行内進行寸法は,ページ参照領域の内容長方形の開始辺及び後辺まで拡張され

る。この場合,区画表示域領域の region-after の動作は,region-start 及び region-end が生成する区画への浮

動体に類似する。fo:region-after の precedence 特色の値が false である場合,これらの隣接する区画は,

fo:region-after が生成する区画に浮動し,fo:region-after の広がりは,隣接する区画の侵入によって,事実上

減少される。

区画参照領域は,区画表示域領域の下の描画域に存在する。

区画参照領域のサイズは,区画の overflow 特色の設定に依存する。その特色の値が“auto”

“hidden”

“error-if-overflow”

,“paginate”又は“visible”である場合,参照領域のサイズは,表示域のサイズと同じ

になる。overflow 特色の値が“scroll”である場合,参照領域のサイズは,区画の表記方法が行内進行方向

である場合の表示域のサイズと同じになる。ブロック進行方向での制約はない。すなわち,区画に結合さ

れる内容のすべてを分配するために,拡張されるということである。


104

X 4179

:2010

   

特色の派生:

区画表示域領域の参照方位及び表記方法は,領域を生成するフォーマット化オブジェクトによって決定

する(6.4.5 参照)

。区画参照領域の参照方位は,

“0”に設定される。その結果,区画表示域領域が設定す

る方向と同じになる。区画参照領域の表記方法は,区画表示域領域の表記方法と同じになる。

区画表示域領域及び区画参照領域の残りの特色は,特色の値を決定する正規の規則に従って,設定され

る。

制約:

fo:region-after を使用して生成される区画参照領域のサイズ及び位置に関する制約は,6.4.13 の“区画に

適用できる制約”に示されている。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

clip(7.21.1

display-align(7.14.4

extent(7.27.4

overflow(7.21.2

precedence(7.27.16

region-name(7.27.17

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.17 fo:region-start 

一般的な使用法:

このフォーマット化オブジェクトは,単純ページマスタの構築に使用される。この区画は,ページ参照

領域の“開始”側に配置される表示域・参照のペアを指定する。表記方法が lr-tb である場合,この区画は

左余白に対応する。overflow 特色は,下にある区画参照領域がどの程度見えるかを制御する。すなわち,

区画参照領域が親である区画表示域領域によって切り取られるかどうかを制御する。

領域:

fo:region-start フォーマット化オブジェクトを使用して,一つの区画表示域領域及び一つの区画参照領域

を生成する。

padding 及び border-width 特色の値は,“0”でなければならない。

この区画表示域領域の内容長方形の開始辺の位置は,

親の fo:simple-page-master を使用して生成されるペ

ージ参照領域の内容長方形の開始辺に一致する。区画表示域領域の行内進行寸法は,fo:region-start フォー

マット化オブジェクトの extent 特色によって決定される。

区画表示域領域のブロック進行寸法は,隣接する fo:region-before 及び fo:region-after が存在すれば,これ

らの precedence 特色によって決定される。それ以外の場合,precedence 特色の値が false であるものとして

決定される。fo:region-before 又は fo:region-after の precedence 特色の値がそれぞれ false である場合,ブロ

ック進行寸法は,ページ参照領域の内容長方形の前辺又は後辺までそれぞれ拡張される。この場合,

region-start の動作は,region-before,region-after それぞれが生成する区画への浮動体に類似する。隣接する

区画の precedence 特色の値が true である場合,これらの隣接する区画は,fo:region-start が生成する区画に


105

X 4179

:2010

浮動し,fo:region-start の広がりは,precedence 特色の値が true と等しい隣接する区画の侵入によって事実

上減少される。

区画参照領域は,区画表示域領域の下の描画域に存在する。

区画参照領域のサイズは,区画の overflow 特色の設定に依存する。その特色の値が“auto”

“hidden”

“error-if-overflow”

,“paginate”又は“visible”である場合,参照領域のサイズは,表示域のサイズと同じ

になる。overflow 特色の値が“scroll”である場合,参照領域のサイズは,区画の表記方法が行内進行方向

である場合の表示域のサイズと同じになる。ブロック進行方向での制約はない。すなわち,区画に結合さ

れる内容のすべてを分配するために,拡張されるということである。

特色の派生:

区画表示域領域の参照方位及び表記方法は,領域を生成するフォーマット化オブジェクトによって決定

する(6.4.5 参照)

。区画参照領域の参照方位は,

“0”に設定される。その結果,区画表示域領域が設定す

る方向と同じになる。区画参照領域の表記方法は,区画表示域領域の表記方法と同じになる。

区画表示域領域及び区画参照領域の残りの特色は,特色の値を決定する正規の規則に従って,設定され

る。

制約:

fo:region-start を使用して生成される区画参照領域のサイズ及び位置に関する制約は,6.4.13 の“区画に

適用できる制約”に示されている。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

clip(7.21.1

display-align(7.14.4

extent(7.27.4

overflow(7.21.2

region-name(7.27.17

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.18 fo:region-end 

一般的な使用法:

このフォーマット化オブジェクトは,単純ページマスタの構築に使用される。この区画は,ページ参照

領域の“終了”側に配置される表示域・参照のペアを指定する。表記方法が lr-tb である場合,この区画は,

右余白に対応する。overflow 特色は,下にある区画参照領域がどの程度見えるかを制御する。すなわち,

区画参照領域が親である区画表示域領域によって切り取られるかどうかを制御する。

領域:

fo:region-end フォーマット化オブジェクトを使用して,一つの区画表示域領域及び一つの区画参照領域

を生成する。

padding 及び border-width 特色の値は,“0”でなければならない。


106

X 4179

:2010

   

この区画表示域領域の内容長方形の終了辺の位置は,

親の fo:simple-page-master を使用して生成されるペ

ージ参照領域の内容長方形の終了辺に一致する。区画表示域領域の行内進行寸法は,fo:region-end フォー

マット化オブジェクトの extent 特色によって決定される。

区画表示域領域のブロック進行寸法は,

隣接する fo:region-before 及び fo:region-after が存在する場合には,

これらの precedence 特色によって決定される。それ以外の場合,precedence 特色の値が false であるものと

して決定される。fo:region-before 又は fo:region-after の precedence 特色の値がそれぞれ false である場合,

ブロック進行寸法は,ページ参照領域の内容長方形の前辺又は後辺までそれぞれ拡張される。この場合,

region-start の動作は,region-before,region-after それぞれが生成する区画への浮動体に類似する。隣接する

区画の precedence 特色の値が true である場合,これらの隣接する区画は,fo:region-start が生成する区画に

浮動し,fo:region-start の広がりは,precedence 特色の値が true と等しい隣接する区画の侵入によって事実

上減少される。

区画参照領域は,区画表示域領域の下の描画域に存在する。

区画参照領域のサイズは,区画の overflow 特色の設定に依存する。その特色の値が“auto”

“hidden”

“error-if-overflow”,

“paginate”又は“visible”である場合,参照領域のサイズは,表示域のサイズと同じ

になる。overflow 特色の値が“scroll”である場合,参照領域のサイズは,区画の表記方法が行内進行方向

である場合の表示域のサイズと同じになる。ブロック進行方向での制約はない。すなわち,区画に結合さ

れる内容のすべてを分配するために,拡張されるということである。

特色の派生:

区画表示域領域の参照方位及び表記方法は,領域を生成するフォーマット化オブジェクトによって決定

する(6.4.5 参照)

。区画参照領域の参照方位は,

“0”に設定される。その結果,区画表示域領域が設定す

る方向と同じになる。区画参照領域の表記方法は,区画表示域領域の表記方法と同じになる。

区画表示域領域及び区画参照領域の残りの特色は,特色の値を決定する正規の規則に従って,設定され

る。

制約:

fo:region-end を使用して生成される区画参照領域のサイズ及び位置に関する制約は,6.4.13 の“区画に適

用できる制約”に示されている。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

clip(7.21.1

display-align(7.14.4

extent(7.27.4

overflow(7.21.2

region-name(7.27.17

reference-orientation(7.21.3

writing-mode(7.29.7

6.4.19 fo:flow 

一般的な使用法:

fo:flow フォーマット化オブジェクトの内容は,ページに分配されるテキストの内容を流す流し込みオブ


107

X 4179

:2010

ジェクトのシーケンスである。

領域:

fo:flow フォーマット化オブジェクトは,どのような領域も生成しない。fo:flow フォーマット化オブジェ

クトは,fo:flow の各子が返す領域のシーケンスを連結して生成される領域のシーケンスを返す。連結の順

序は,fo:flow の下での子の順序付けと同じになる。

制約:

流し込みマップは,fo:flow の内容の区画への割当てを決定する。

内容:

(%block;)+

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

id(7.30.8

index-class(7.24.1

index-key(7.24.2

flow-name(7.27.5

6.4.20 fo:static-content 

一般的な使用法:

fo:static-content フォーマット化オブジェクトは,フォーマット化オブジェクトのシーケンス又は木を保

持する。ここで,そのようなシーケンス又は木は,単一の区画で表示されるか又はページシーケンス内の

1 ページ以上の類似した名前をもつ区画で繰り返される。通常は,繰り返されたり継続される柱で使用さ

れる。

この内容は,割当ての対象となるすべてのページにそのまま繰り返される。

領域:

fo:static-content フォーマット化オブジェクトは,どのような領域も生成しない。fo:static-content フォーマ

ット化オブジェクトは,fo:static-content の各子が返す領域のシーケンスを連結して生成される領域のシー

ケンスを返す。連結の順序は,fo:static-content の下での子の順序付けと同じになる。

制約:

流し込みマップは,fo:static-content の内容の区画への割当てを決定する。

fo:static-content は,複数回処理されてもよい。そのため,4.7.1 に示されている省略時の順序付け制約は,

fo:static-content には適用されない。代わりに,1 ページごとに制約を満たさなければならない。特に,

ページ参照領域であり,が領域クラスであり,が,fo:static-content の子孫に返される領域クラス の P

のすべての子孫の集合である場合,は適正に順序付けされなければならない。

内容:

(%block;)+

このフォーマット化オブジェクトに適用される特性:

id(7.30.8

index-class(7.24.1

index-key(7.24.2

flow-name(7.27.5


108

X 4179

:2010

   

6.4.21 fo:title 

一般的な使用法:

fo:title フォーマット化オブジェクトは,タイトルと所定の page-sequence とを関連付けるために使用され

る。このタイトルは,対話式利用者エージェントによる文書の識別に使用されてもよい。例えば,fo:title

の内容をフォーマットして“タイトル”ウィンドウ又は“ツールチップ”に表示することができる。

領域:

このフォーマット化オブジェクトは,その流し込みの子が返す領域のシーケンスを返す。

制約:

返された領域のシーケンスは,fo:title フォーマット化オブジェクトの各流し込みの子が,子の出現順に

返す領域の部分シーケンスの連結でなければならない。

内容:

(#PCDATA|%inline;)*

fo:title は,fo:float, fo:footnote 又は fo:marker を子孫としてもってはならない。

さらに,fo:title は,絶対配置付けした領域を生成する fo:block-container を子孫としてもってはならない。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

color(7.18.1

line-height(7.16.4

visibility(7.30.17

6.4.22 fo:flow-map 

一般的な使用法:

fo:flow-map は,区画への流し込みの割当てを設定するために使用される。

領域:

fo:flow-map フォーマット化オブジェクトは,直接には領域を生成しない。それは,領域に流し込みを割

り当てるために fo:page-sequence フォーマット化オブジェクトによって使用される。

fo:flow-map の各子である fo:flow-assignment は,ソースリストとターゲットリストとを定義する。ソー

スリストは,

(参照する fo:page-sequence 内の)該当する fo:flow オブジェクトが,構成意図のための単独の

fo:flow のように扱われる一連の流し込み名である。ターゲットリストは,ソース内容のために使われる各

ページ上の区画を指定する一連の区画名である。

注記  これは,fo:page-sequence の master-reference 特性によって参照される fo:simple-page-master 及び

fo:page-sequence-master オブジェクトを使って,これまで常に生成されてきたように生成される,

実際のページの並びとは無関係である。

fo:flow-source-list の子 S と fo:flow-target-list の子 T とをもつ fo:flow-map の各 fo:flow-assignment の子に対

して,T の fo:region-name-specifier の子によって参照される区画に,S の fo:flow-name-specifier の子によっ

て参照される各流し込みを,fo:flow-map が割り当てるように見える。

制約:


109

X 4179

:2010

流し込みマップが引き起こす多くの制約は,6.4.5 で示される。

fo:flow-map の子は,区画への流し込みの割当てに対する同等の制約を含む fo:flow-assignment オブジェ

クトである。流し込み名が,与えられた fo:flow-map の一つより多くの子 fo:flow-assignment のソースリス

ト 内 に 現 れ る の は , 誤 り で あ る 。 region-name が , 与 え ら れ た fo:flow-map の 一 つ よ り 多 く の 子

fo:flow-assignment のターゲットリスト内に現れるのは,誤りである。

暗黙の流し込みマップ:

<fo:flow-map>

  <fo:flow-assignment>

        <fo:flow-source-list>

            <fo:flow-name-specifier

        flow-name-reference="xsl-region-body"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier

        region-name-reference="xsl-region-body"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

  <fo:flow-assignment>

        <fo:flow-source-list>

            <fo:flow-name-specifier

        flow-name-reference="xsl-region-before"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier

        region-name-reference="xsl-region-before"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

  <fo:flow-assignment>

        <fo:flow-source-list>

            <fo:flow-name-specifier

        flow-name-reference="xsl-region-after"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier

        region-name-reference="xsl-region-after"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

  <fo:flow-assignment>

        <fo:flow-source-list>

            <fo:flow-name-specifier


110

X 4179

:2010

   

        flow-name-reference="xsl-region-start"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier

        region-name-reference="xsl-region-start"/>

    </fo:flow-target-list>

  </fo:flow-assignment>

  <fo:flow-assignment>

        <fo:flow-source-list>

            <fo:flow-name-specifier

        flow-name-reference="xsl-region-end"/>

    </fo:flow-source-list>

        <fo:flow-target-list>

      <fo:region-name-specifier

        region-name-reference="xsl-region-end"/>

     </fo:flow-target-list>

  </fo:flow-assignment>

</fo:flow-map>

内容:

(flow-assignment+)

このフォーマット化オブジェクトに適用される特性:

flow-map-name(7.27.18

6.4.23 fo:flow-assignment 

一般的な使用法:

fo:flow-assignment は,一連の区画への一連の流し込みの割当てを設定するために使用される。

領域:

fo:flow-assignment フォーマット化オブジェクトは,直接には区画を生成しない。これは,領域に流し込

みを割り当てるために fo:page-sequence フォーマット化オブジェクトによって使用される。

制約:

fo:flow-assignment の子は,一連の区画に一連の流し込みを割り当てるための制約を含むソースリスト及

びターゲットリストである。

内容:

(flow-source-list,flow-target-list)

6.4.24 fo:flow-source-list 

一般的な使用法:

fo:flow-source-list は,特定の fo:flow-assignment 内に割り当てられた一連の流し込みを指定する。

領域:

fo:flow-source-list フォーマット化オブジェクトは,直接には区画を生成しない。これは,領域に流し込

みを割り当てるために fo:page-sequence フォーマット化オブジェクトによって使用される。

制約:


111

X 4179

:2010

fo:flow-source-list の子は,シーケンスの流し込みを識別する一連の流し込み名指定子である。これらの

流し込みは,すべての fo:flow フォーマット化オブジェクト又はすべての fo:static-content フォーマット化オ

ブジェクトのいずれかである。それらが混在した場合は,誤りである。

内容:

(flow-name-specifier+)

6.4.25 fo:flow-name-specifier 

一般的な使用法:

fo:flow-name-specifier は,ソースリスト内の一つの流し込みを指定するために使用される。

領域:

fo:flow-name-specifier は,直接には領域を生成しない。これは,区画に流し込みを割り付けるために

fo:page-sequence フォーマット化オブジェクトによって使用される。

制約:

流し込み名参照特性は,ソースシーケンス内の流し込みの名前を指定する。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

flow-name-reference(7.27.20

6.4.26 fo:flow-target-list 

一般的な使用法:

fo:flow-target-list は,流し込みが特定の fo:flow-assinment に割り当てられる一連の区画を指定するために

使用される。

領域:

fo:flow-target-list フォーマット化オブジェクトは,直接には領域を生成しない。これは,fo:page-sequence

フォーマット化オブジェクトによって区画内に流し込みを割り当てるために使用される。

制約:

fo:flow-target-list の子は,シーケンス内の区画を特定する一連の区画名指定子である。

内容:

(region-name-specifier+)

6.4.27 fo:region-name-specifier 

一般的な使用法:

fo:region-name-specifier は,目標リスト内の一つの区画を特定するために使用される。

領域:

fo:region-name-specifier フ ォ ー マ ッ ト化 オ ブ ジェ クト は , 直 接に は 区 画を 生成 し な い 。こ れ は,

fo:page-sequence フォーマット化オブジェクトが区画に流し込みを割り当てるために使用される。

制約:

区画名参照特性は,目標シーケンス内の区画の名前を特定する。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

region-name-reference(7.27.21


112

X 4179

:2010

   

6.5 

ブロックレベルフォーマット化オブジェクト 

6.5.1 

導入 

fo:block フォーマット化オブジェクトは,段落,タイトル,図題,表題などをフォーマット化するため

に使用される。スタイルシートでの fo:block の使用法の例を  6.5.1.1  に示す。

6.5.1.1 

 

次の例は,章及び節のタイトル及び段落への fo:block の使用を示す。

入力サンプル:

<doc>

  <chapter>

    <title>Chapter title</title>

        <section>

      <title>First section title</title>

      <paragraph>Section one's first paragraph.</paragraph>

      <paragraph>Section one's second paragraph.</paragraph>

        </section>

        <section>

      <title>Second section title</title>

      <paragraph>Section two's only paragraph.</paragraph>

        </section>

  </chapter>

</doc>

この例では,章のタイトルは,ページの先頭に現れる(ページの“space-before”は廃棄される。

章のタイトルと第 1 節のタイトルとの間の空間は,(8pt,8pt,8pt)  である。章のタイトルの“space-after”

は,初期値が 0 である節のタイトルの“space-before”よりも優先順位が高い。そのため,

“space-before”

は廃棄される。

第 1 節のタイトルと節 1 の第 1 段落との間の空間は,(6pt,6pt,6pt)  である。節のタイトルの“space-after”

は,段落の“space-before”より優先順位が高い。そのため,

“space-before”は廃棄される。

二つの段落間の空間は,(6pt,8pt,10pt)  である。第 1 段落の“space-after”は,その優先順位が次の段落の

“space-before”の優先順位と同じであるため,廃棄される。第 1 段落の“space-after”の最適値は,第 2

段落の“space-before”の最適値よりも大きい。

第 1 節の第 2 段落と第 2 節の題との間の空間は,(12pt,12pt,12pt)  である。段落の“space-after”は,その

優先順位が節のタイトルの“space-before”の優先順位と同じであるため,廃棄される。段落の“space-after”

の最適値は,節のタイトルの“space-before”の最適値よりも小さい。

節 1 の第 1 段落の最初の行の字下げ及び節 2 の唯一の段落の字下げは,0 である。節 1 の第 2 段落の最

初の行の字下げは,2 pc である。

XSL スタイルシート:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    xmlns:fo="http://www.w3.org/1999/XSL/Format">


113

X 4179

:2010

<xsl:template match="chapter">

  <fo:block break-before="page">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="chapter/title">

  <fo:block text-align="center" space-after="8pt"

            space-before="16pt" space-after.precedence="3">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="section">

  <xsl:apply-templates/>

</xsl:template>

<xsl:template match="section/title">

  <fo:block text-align="center" space-after="6pt"

            space-before="12pt" space-before.precedence="0"

            space-after.precedence="3">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="paragraph[1]" priority="1">

  <fo:block text-indent="0pc" space-after="7pt"

            space-before.minimum="6pt" space-before.optimum="8pt"

            space-before.maximum="10pt">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="paragraph">

  <fo:block text-indent="2pc" space-after="7pt"

            space-before.minimum="6pt" space-before.optimum="8pt"

            space-before.maximum="10pt">

    <xsl:apply-templates/>

  </fo:block>


114

X 4179

:2010

   

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:block break-before="page">

  <fo:block text-align="center" space-after="8pt"

    space-before="16pt"

    space-after.precedence="3">Chapter title

  </fo:block>

  <fo:block text-align="center" space-after="6pt"

    space-before="12pt" space-before.precedence="0"

    space-after.precedence="3">First section title

  </fo:block>

  <fo:block text-indent="0pc" space-after="7pt"

    space-before.minimum="6pt" space-before.optimum="8pt"

    space-before.maximum="10pt">Section one's first paragraph.

  </fo:block>

  <fo:block text-indent="2pc" space-after="7pt"

    space-before.minimum="6pt" space-before.optimum="8pt"

    space-before.maximum="10pt">Section one's second paragraph.

  </fo:block>

  <fo:block text-align="center" space-after="6pt"

    space-before="12pt" space-before.precedence="0"

    space-after.precedence="3">Second section title

  </fo:block>

  <fo:block text-indent="0pc" space-after="7pt"

    space-before.minimum="6pt" space-before.optimum="8pt"

    space-before.maximum="10pt">Section two's only paragraph.

  </fo:block>

</fo:block>

6.5.2 fo:block 

一般的な使用法:

fo:block フォーマット化オブジェクトは,一般に,段落,タイトル,見出し,図,表題などをフォーマ


115

X 4179

:2010

ットするために使用される。

領域:

fo:block フォーマット化オブジェクトは,一つ以上の正規ブロック領域(normal block-area)を生成する。

fo:block は,これらの領域,すべての行外ページレベル領域(page-level-out-of-line area)及び fo:block の子

が返す任意の行外参照レベル領域

(reference-level-out-of-line area)

を返す。

fo:block は,4.7.2 に従って,fo:block

が返す正規ブロック領域の子として,0 個以上の行領域も生成する。

特色の派生:

half-leading 特色の構成要素.minimum,.optimum 及び.maximum は,line-height 特性の計算値と text-altitude

及び text-depth 特性の合計の計算値との差が 1/2 になるように設定される。構成要素.precedence 及

び.conditionality は,line-height 特性から複写される。

注記 half-leading の使用法は,4.5 に示されている。 

制約:

同じ fo:block フォーマット化オブジェクトが返す正規の子領域は,領域に一つより多く存在しない。

fo:block が生成する各正規領域の子は,4.7.2 で指定されている制約を満たさなければならない。

さらに,このフォーマット化オブジェクトに適用できる特性から派生した特色が強制する制約を満たさ

なければならない。幾何的制約は,箇条 で厳密に定義されている。

内容:

(#PCDATA|%inline;|%block;)*

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。fo:initial-property-set が後続することもある。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的なハイフン付け特性(7.10

一般的なブロックレベルのマージン特性(7.11

一般的な相対位置決め特性(7.13

break-after(7.20.1

break-before(7.20.2

clear(7.19.1

color(7.18.1

text-depth(7.29.5

text-altitude(7.29.4

hyphenation-keep(7.16.1

hyphenation-ladder-count(7.16.2

id(7.30.8

index-class(7.24.1

index-key(7.24.2

intrusion-displace(7.19.3


116

X 4179

:2010

   

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

last-line-end-indent(7.16.3

linefeed-treatment(7.16.7

line-height(7.16.4

line-height-shift-adjustment(7.16.5

line-stacking-strategy(7.16.6

orphans(7.20.6

white-space-treatment(7.16.8

span(7.21.4

text-align(7.16.9

text-align-last(7.16.10

text-indent(7.16.11

visibility(7.30.17

white-space-collapse(7.16.12

widows(7.20.7

wrap-option(7.16.13

6.5.3 fo:block-container 

一般的な使用法:

fo:block-container 流し込みオブジェクトは,ブロックレベル参照領域を生成するために使用される。通

常,ブロックレベル参照領域には,異なる表記方法のテキストブロックが包含される。さらに,この流し

込みオブジェクトは,その内容を異なる参照方位で回転するために使用される。

注記  この流し込みオブジェクトの使用は,行内進行方向だけを変更する場合は必す(須)ではない。

その場合は,Unicode BIDI アルゴリズム及び fo:bidi-override で十分である。

領域:

fo:block-container フォーマット化オブジェクトは,表示域・参照のペアを一つ以上生成する。すべての

生成された表示域領域は,fo:block-container のブロック進行寸法及び行内進行方向寸法特性によって与え

られる制約に従う。fo:block-container は,これらの領域及び fo:block-container の子が返す任意の行外ペー

ジレベル領域を返す。

注記 block-progression-dimension.maximum が“auto”以外の場合は,オーバフロー処理が適用される。

オーバフローの“repeat”値は,切取り又はスクロールより望ましい場合は,多数の表示域・参

照のペアを生成するために使用することができる。 

absolution-position 特性が“auto”の場合,これらの領域すべては,“xsl-normal”の領域クラスをもつ。

absolution-position 特性が“absolute”又は“fixed”の場合,一つの表示域・参照のペアがあり,その領域ク

ラスはそれぞれ,

“xsl-absolute”又は“xsl-fixed”である。

特色の派生:

表示域領域並びに参照領域の“reference-orientation”特性及び“writing-mode”特性は,fo:block-container

に由来する。これらは,表示域の内容長方形並びに参照領域のパディング長方形,境界長方形及び内容長

方形の開始辺,終了辺,前辺及び後辺の方位を決定する。参照領域の参照方位は“0”に設定され,したが


117

X 4179

:2010

って表示域によって確立した方向と同じである。

参照領域の行内進行寸法は,

表示域のそれと同じであり,

行内進行方向が fo:block-container の親のそれと異なるときは,

“auto”でなくてもよい。参照領域のブロッ

ク進行寸法は,強制されないので,参照領域は,表示域領域より大きくてよく,これは“overflow”特性

が作動する要因となる。

注記  特性値がこの流し込みオブジェクトによって生成される区画のそれぞれに適用されるときは,

大きさは,その値がもし“auto”又は <length-range> のときは,その事例ごとに変化する。

制約:

fo:block-container フォーマット化オブジェクトが生成する各参照領域の子は,fo:block-container の子が返

す正規ブロック領域でなければならず,適正にスタックされ,適正に順序付けされなければならない。

fo:block-container の子が返すすべての行外参照レベル領域は,6.12.2 での記述のとおりに取り扱われる。

内容:

(%block;)+

さらに,絶対配置付けされる領域を生成しない fo:block-container は,0 個以上の fo:marker のシーケンス

をその最初の子としてもってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的な絶対位置決め特性(7.6

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11

block-progression-dimension(7.15.3

break-after(7.20.1

break-before(7.20.2

clear(7.19.1

clip(7.21.1

display-align(7.14.4

height(7.15.6

id(7.30.8) 
index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

intrusion-displace(7.19.3

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

overflow(7.21.2

reference-orientation(7.21.3

span(7.21.4

width(7.15.14

writing-mode(7.29.7

z-index(7.30.18


118

X 4179

:2010

   

6.6 

行内レベルフォーマット化オブジェクト 

6.6.1 

導入 

行内レベルフォーマット化オブジェクトは,テキストの一部をフォーマットしたり,けい(罫)線又は

リーダを生成するために一般的に使用される。他にも多くの使用法がある。6.6.1.1  の例は,行内レベルフ

ォーマット化オブジェクトのこれらの使用法を幾つか示している。

段落の最初の行をスモールキャップにする。

正規の行内フォーマット化オブジェクト,fo:external-graphic を fo:block フォーマット化オブジェクトで

“ラップする”ことによって,ブロックにする。

ページ番号が後続する“Page”という単語を包含する下の柱をフォーマットする。

6.6.1.1 

 

6.6.1.1.1 

段落の最初の行のスモールキャップ化 

入力サンプル:

<doc>

<p>This is the text of a paragraph that is going to be

presented with the first line in small-caps.</p>

</doc>

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="p">

  <fo:block>

    <fo:initial-property-set font-variant="small-caps"/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:block>

  <fo:initial-property-set font-variant="small-caps">

    </fo:initial-property-set>This is the text of a paragraph that is going

to be presented with the first line in small-caps.

</fo:block>

6.6.1.1.2 

写真付きの図 

入力サンプル:

<doc>

    <figure>


119

X 4179

:2010

    <photo image="TH0317A.jpg"/>

    <caption>C'ieng Tamlung of C'ieng Mai</caption>

  </figure>

</doc>

この例では,画像(fo:external-graphic)は,中央に寄せられたブロックレベルオブジェクトとして

配置される。表題は 10mm 字下げして,中央に配置される。

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="figure">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="photo">

  <fo:block text-align="center">

    <fo:external-graphic src="'url({@image})'"/>

  </fo:block>

</xsl:template>

<xsl:template match="caption">

  <fo:block space-before="3pt" text-align="center"

    start-indent="10mm" end-indent="10mm">

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

</xsl:stylesheet>

fo:要素及び属性の木:

<fo:block>

  <fo:block text-align="center">

    <fo:external-graphic src="'url(TH0317A.jpg)'"/>

  </fo:block>

    <fo:block space-before="3pt" text-align="center" start-indent="10mm"

    end-indent="10mm">C'ieng Tamlung of C'ieng Mai</fo:block>


120

X 4179

:2010

   

</fo:block>

6.6.1.1.3 

ページ番号付け及びページ番号参照 

入力サンプル:

<!DOCTYPE doc SYSTEM "pgref.dtd">

<doc>

  <chapter id="x"><title>Chapter</title>

        <p>Text</p>

  </chapter>

  <chapter><title>Chapter</title>

        <p>For a description of X see <ref refid="x"/>.</p>

  </chapter>

</doc>

この例では,ページ番号が後続する“Page”という単語を包含する下の柱が各ページに存在する。

“ref”要素は,

“refid”属性による参照が配置されたページの“page”という単語を生成する。

“page”

という単語の後にはページ番号が続く。

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="doc">

  <fo:root>

    <fo:layout-master-set>

      <fo:simple-page-master master-name="page"

        page-height="297mm" page-width="210mm"

        margin-top="20mm" margin-bottom="10mm"

        margin-left="25mm" margin-right="25mm">

        <fo:region-body

                    margin-top="0mm" margin-bottom="15mm"

                    margin-left="0mm" margin-right="0mm"/>

        <fo:region-after extent="10mm"/>

            </fo:simple-page-master>

    </fo:layout-master-set>

    <fo:page-sequence master-reference="page">

      <fo:static-content flow-name="xsl-region-after">

                <fo:block>

          <xsl:text>Page </xsl:text>

          <fo:page-number/>

                </fo:block>


121

X 4179

:2010

      </fo:static-content>

      <fo:flow flow-name="xsl-region-body">

        <xsl:apply-templates/>

            </fo:flow>

    </fo:page-sequence>

  </fo:root>

</xsl:template>

<xsl:template match="chapter/title">

  <fo:block id="{generate-id(.)}">

    <xsl:number level="multiple" count="chapter" format="1. "/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="p">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="ref">

  <xsl:text>page </xsl:text>

  <fo:page-number-citation refid="{generate-id(id(@refid)/title)}"/>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:root>

  <fo:layout-master-set>

    <fo:simple-page-master master-name="page"

      page-height="297mm" page-width="210mm"

      margin-top="20mm" margin-bottom="10mm"

      margin-left="25mm" margin-right="25mm">

      <fo:region-body margin-top="0mm" margin-bottom="15mm"

        margin-left="0mm" margin-right="0mm"/>

      <fo:region-after extent="10mm"/>

        </fo:simple-page-master>

  </fo:layout-master-set>

  <fo:page-sequence master-reference="page">


122

X 4179

:2010

   

    <fo:static-content flow-name="xsl-region-after">

      <fo:block>Page <fo:page-number/>

            </fo:block>

    </fo:static-content>

    <fo:flow flow-name="xsl-region-body">

      <fo:block id="N5">1. Chapter</fo:block>

      <fo:block>Text</fo:block>

      <fo:block id="N13">2. Chapter</fo:block>

            <fo:block>For a description of X see page <fo:page-number-citation refid="N5"/>

            </fo:block>

        </fo:flow>

  </fo:page-sequence>

</fo:root>

6.6.1.1.4 

リーダのある目次入力サンプル 

入力サンプル:

<doc>

  <chapter><title>Chapter</title>

        <p>Text</p>

    <section><title>Section</title>

        <p>Text</p>

        </section>

    <section><title>Section</title>

        <p>Text</p>

        </section>

  </chapter>

  <chapter><title>Chapter</title>

        <p>Text</p>

    <section><title>Section</title>

        <p>Text</p>

        </section>

    <section><title>Section</title>

        <p>Text</p>

        </section>

  </chapter>

</doc>

この例では,見出しテキストとページ番号との間にドットリーダを用いて目次がフォーマットされ

る。

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"


123

X 4179

:2010

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="doc">

    <!-- create the table of contents -->

  <xsl:apply-templates select="chapter/title" mode="toc"/>

    <!-- do the document -->

  <xsl:apply-templates/>

</xsl:template>

<xsl:template match="chapter/title" mode="toc">

  <fo:block text-align-last="justify">

    <fo:basic-link internal-destination="{generate-id(.)}">

      <xsl:number level="multiple" count="chapter" format="1. "/>

      <xsl:apply-templates/>

    </fo:basic-link>

    <xsl:text> </xsl:text>

    <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

               leader-length.maximum="100%" leader-pattern="dots"/>

    <xsl:text> </xsl:text>

    <fo:page-number-citation ref-id="{generate-id(.)}"/>

  </fo:block>

  <xsl:apply-templates select="../section/title" mode="toc"/>

</xsl:template>

<xsl:template match="section/title" mode="toc">

  <fo:block start-indent="10mm" text-align-last="justify">

    <fo:basic-link internal-destination="{generate-id(.)}">

      <xsl:number level="multiple" count="chapter|section" format="1.1 "/>

      <xsl:apply-templates/>

    </fo:basic-link>

    <xsl:text> </xsl:text>

    <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

               leader-length.maximum="100%" leader-pattern="dots"/>

    <xsl:text> </xsl:text>

    <fo:page-number-citation ref-id="{generate-id(.)}"/>

  </fo:block>

</xsl:template>

<xsl:template match="chapter/title">


124

X 4179

:2010

   

  <fo:block id="{generate-id(.)}">

    <xsl:number level="multiple" count="chapter" format="1. "/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="section/title">

  <fo:block id="{generate-id(.)}">

    <xsl:number level="multiple" count="chapter|section" format="1.1 "/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="p">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:block text-align-last="justify">

  <fo:basic-link internal-destination="N4">1. Chapter

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N4">

  </fo:page-number-citation>

</fo:block>

<fo:block start-indent="10mm" text-align-last="justify">

  <fo:basic-link internal-destination="N11">1.1 Section

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N11">

  </fo:page-number-citation>

</fo:block>

<fo:block start-indent="10mm" text-align-last="justify">


125

X 4179

:2010

  <fo:basic-link internal-destination="N19">1.2 Section

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N19">

  </fo:page-number-citation>

</fo:block>

<fo:block text-align-last="justify">

  <fo:basic-link internal-destination="N28">2. Chapter

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N28">

  </fo:page-number-citation>

</fo:block>

<fo:block start-indent="10mm" text-align-last="justify">

  <fo:basic-link internal-destination="N35">2.1 Section

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N35">

  </fo:page-number-citation>

</fo:block>

<fo:block start-indent="10mm" text-align-last="justify">

  <fo:basic-link internal-destination="N43">2.2 Section

  </fo:basic-link>

  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"

    leader-length.maximum="100%" leader-pattern="dots">

  </fo:leader>

  <fo:page-number-citation ref-id="N43">

  </fo:page-number-citation>

</fo:block> 

<fo:block id="N4">1. Chapter

</fo:block> 

<fo:block>Text


126

X 4179

:2010

   

</fo:block> 

<fo:block id="N11">1.1 Section

</fo:block> 

<fo:block>Text

</fo:block> 

<fo:block id="N19">1.2 Section

</fo:block> 

<fo:block>Text

</fo:block> 

<fo:block id="N28">2. Chapter

</fo:block> 

<fo:block>Text

</fo:block> 

<fo:block id="N35">2.1 Section

</fo:block> 

<fo:block>Text

</fo:block> 

<fo:block id="N43">2.2 Section

</fo:block> 

<fo:block>Text

</fo:block>

6.6.2 fo:bidi-override 

一般的な使用法:

fo:bidi-override フォーマット化オブジェクトを使用するのは,Unicode BIDI アルゴリズムが使用できな

い場合である。このフォーマット化オブジェクトは,テキストの文字列を固有の方向で書き込ませる。

領域:

fo:bidi-override フォーマット化オブジェクトは,一つ以上の正規行内領域を生成する。fo:bidi-override は,

任意の正規ブロック領域,行外ページレベル領域,及び fo:bidi-override の子が返す行外参照レベルととも

に,これらの領域を返す。

特色の派生:

方向特色は,

“writing-mode”

“direction”及び“unicode-bidi”特性から派生する。これは 5.5.3 に示され


127

X 4179

:2010

ている。

制約:

同じ fo:bidi-override フォーマット化オブジェクトが返す正規の子領域は領域に一つより多く存在しない。

fo:bidi-override が返す各正規領域の子は,4.7.3 で指定される制約を満たさなければならない。

内容:

(#PCDATA|%inline;|%block;)*

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

fo:leader の子孫又は fo:footnote の fo:inline の子の子孫である fo:bidi-override は,fo:inline-container である

先祖がより近くに存在しない場合,ブロックレベルの子をもたないこともある。

このフォーマット化オブジェクトに適用される特性:

一般的な聴覚特性(7.7

一般的なフォント特性(7.9

一般的な相対位置決め特性(7.13

color(7.18.1

direction(7.29.1

id(7.30.8

index-class(7.24.1

index-key(7.24.2

letter-spacing(7.17.2

line-height(7.16.4

score-spaces(7.30.15

unicode-bidi(7.29.6

word-spacing(7.17.8

6.6.3 fo:character 

一般的な使用法:

fo:character 流し込みオブジェクトは,表示のグリフに対応付けられる文字を表す。これは,フォーマッ

タに対する最小の単位である。

結果木がフォーマット化オブジェクトの木として解釈される場合,結果木の文字は,文字属性が文字の

Unicode 表現に等しい型 fo:character の空要素であるものとして取り扱われる。通常,初期値である文字特

性の“auto”値のセマンティクスは,Unicode 符号位置に基づいている。実装固有の方法で上書きを指定し

てもよい。

注記  スタイルシートでは,省略時の対応付けを明示的に上書きするために,fo:character の明示的な

生成を使用してもよい。 

Unicode タグ文字に対応する必要はない。

注記 Unicode3.1 版では,実際に,HTML,XML などの言語のタグ付けのための代替方法を提供する

任 意 のプ ロ ト コ ル で , Unicode タ グ文 字を 使用 しな い こ と にな って いる 。 Unicode TR20

[UNICODE TR20]も,Unicode タグ文字をマーク付けで使用することが適切ではないことを極め

て明確に宣言している。


128

X 4179

:2010

   

領域:

fo:character フォーマット化オブジェクトは,一つ以上の正規行内領域を生成し,返す。

注記  単一の文字が,他のある文字に対して,接頭辞のグリフも接尾辞のグリフも生成するスクリプ

ト内では,一つより多くの行内領域が生成されることがある。 

制約:

領域の寸法は,グリフのフォントメトリクスによって決定される。

“treat-as-wordspace”の値が“true”である fo:character をフォーマットする場合,利用者エージェントは,

領域の行内進行寸法の決定に異なるメソッドを使用してもよい。

注記  このようなメソッドは,通常,フォントに格納される単語間隔値又はフォーマッタ定義の単語

間隔値を使用する。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的なハイフン付け特性(7.10

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

treat-as-word-space(7.17.7

alignment-baseline(7.14.2

baseline-shift(7.14.3

character(7.17.1

color(7.18.1

dominant-baseline(7.14.5

text-depth(7.29.5

text-altitude(7.29.4

glyph-orientation-horizontal(7.29.2

glyph-orientation-vertical(7.29.3

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

letter-spacing(7.17.2

line-height(7.16.4

score-spaces(7.30.15

suppress-at-line-break(7.17.3

text-decoration(7.17.4


129

X 4179

:2010

text-shadow(7.17.5

text-transform(7.17.6

visibility(7.30.17

word-spacing(7.17.8

6.6.4 fo:initial-property-set 

一般的な使用法:

fo:initial-property-set 補助フォーマット化オブジェクトは,fo:block の最初の行にフォーマット化特性を指

定する。

注記  このフォーマット化オブジェクトは,CSS の first-line 擬似要素に類似している。この規格の今

後の版では,行数を制御する特性又はこれらの初期特性が適用される“深さ”が追加される可

能性がある。

領域:

fo:initial-property-set フォーマット化オブジェクトは,どのような領域も生成せず,返さない。これは,

is-first 特色の値が“true”である領域及び fo:initial-property-set の親の fo:block が生成した領域の最初の行領

域に適用できる特色の集合を保持するにすぎない。

特色の派生:

fo:initial-property-set の特色は,最初の行に制約を加える特色として与えられる。すなわち,fo:block の子

行内フォーマット化オブジェクト又は行分割の場合におけるそれらの一部が,最初の行のフォーマット化

に使用され,それらの特色を用いて,fo:inline に fo:block の直接の子として囲まれるものとされる。

制約:

なし。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な相対位置決め特性(7.13

color(7.18.1

letter-spacing(7.17.2

line-height(7.16.4

score-spaces(7.30.15

text-decoration(7.17.4

text-shadow(7.17.5

text-transform(7.17.6

word-spacing(7.17.8


130

X 4179

:2010

   

6.6.5 fo:external-graphic 

一般的な使用法:

fo:external-graphic 流し込みオブジェクトは,図形データが fo:element 木の外部に存在する図形に使用さ

れる。

領域:

fo:external-graphic フォーマット化オブジェクトは,一つの行内レベル表示域領域及び外部図形を包含す

る一つの参照領域を生成し,返す。行内レベル領域は,4.2.3 で定義されるとおり,大割付け長方形を使用

する。

注記 fo:block で 囲 む こ と に よ っ て , fo:external-graphic を ブ ロ ッ ク レ ベ ル に 配 置 し て も よ い 。

“max-height”又は“line-height”の“行スタック化方策”は,通常,fo:external-graphic の内容

で行を一つ以上スタック化するために使用される。

制約:

表示域のサイズは,block-progression-dimension 特色及び inline-progression-dimension 特色によって決定さ

れる。値が“auto”のときは,図形の内容サイズが使用される。

図形の内容サイズは,図形の固有のサイズをとり,content-height,content-width,scaling,allow-height-scale

及び allowed-width-scale の各特色が指定するとおりに変倍することによって決定される。content-height 又

は content-width のうち,一つが“auto”ではない場合,指定された auto 以外の値から計算されるのと同じ

変倍率が両方向に等しく適用される

いったん基準化されると,参照領域は,text-align 及び display-align 特色を使用して,表示域領域に相対

して位置調整される。参照領域が表示域領域に対して大きすぎる場合,図形が領域に適合しているものと

して位置調整され,overflow 特色が切取り,スクロールバーなどを制御する。

図形形式が図形の基本のサイズを指定しない場合,図形のサイズは実装定義の方法で決定される。

注記  例えば,ラスタ化された画像には,1 ピクセルのサイズとして,1/96 インチのサイズを使用し

てもよい。 

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

allowed-height-scale(7.15.1

allowed-width-scale(7.15.2

baseline-shift(7.14.3

block-progression-dimension(7.15.3

clip(7.21.1

content-height(7.15.4


131

X 4179

:2010

content-type(7.30.7

content-width(7.15.5

display-align(7.14.4

dominant-baseline(7.14.5

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

keep-with-next(7.20.4

keep-with-previous(7.20.5

line-height(7.16.4

overflow(7.21.2

scaling(7.15.12

scaling-method(7.15.13

src(7.30.16

text-align(7.16.9

width(7.15.14

6.6.6 fo:instream-foreign-object 

一般的な使用法:

fo:instream-foreign-object 流し込みオブジェクトは,行内図形又はその他の“はん(汎)用”オブジェク

トに使用される。この場合,オブジェクトデータは,通常,非 XSL 名前空間内にある XML 要素の部分木

など,fo:instream-foreign-object の子孫として存在する。

注記  一般的なフォーマットは,SVG である。

領域:

fo:instream-foreign-object フ ォ ー マ ッ ト 化 オ ブ ジ ェ ク ト は , イ ン ス ト リ ー ム 外 部 オ ブ ジ ェ ク ト

(instream-foreign-object)を包含する一つの行内表示域領域及び一つの参照領域を生成し,返す。行内レベ

ル領域は,4.2.3 で定義されるとおり,大割付け長方形を使用する。

制約:

表示域のサイズは,

block-progression-dimension 及び inline-progression-dimension 特色によって決定される。

値が“auto”の場合,インストリーム外部オブジェクトの内容サイズが使用される。

インストリーム外部オブジェクトの内容のサイズは,オブジェクトの基本のサイズをとり,content-height,

content-width,scaling,allowed-height-scale 及び allowed-width-scale の各特色が指定するとおりに変倍する

ことによって決定される。content-height 又は content-width のうち,一つが“auto”ではない場合,指定さ

れた auto 以外の値から計算されるのと同じ変倍率が両方向に等しく適用される。

いったん基準化されると,参照領域は,text-align 及び display-align 特色を使用して,表示域領域に相対

して位置調整される。参照領域が表示域に対して大きすぎる場合,インストリーム外部オブジェクトは適

合しているものとして位置調整され,overflow 特色が切取り,スクロールバーなどを制御する。

インストリーム外部オブジェクトがオブジェクトの基本のサイズを指定しない場合,サイズは実装定義

の方法で決定される。


132

X 4179

:2010

   

内容:

fo:instream-foreign-object 流し込みオブジェクトは,非 XSL 名前空間から生じる子をもつ。この子の許容

される構造はその名前空間に対して定義されたものである。

fo:instream-foreign-object 流し込みオブジェクトは,非 XSL 名前空間にある追加属性をもってもよい。xsl

定義の特性と同様,これらは流し込みオブジェクトの内容のプロセサに利用できる。それらのセマンティ

クスは,その名前空間によって定義される。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

allowed-height-scale(7.15.1

allowed-width-scale(7.15.2

baseline-shift(7.14.3

block-progression-dimension(7.15.3

clip(7.21.1

content-height(7.15.4

content-type(7.30.7

content-width(7.15.5

display-align(7.14.4

dominant-baseline(7.14.5

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

keep-with-next(7.20.4

keep-with-previous(7.20.5

line-height(7.16.4

overflow(7.21.2

scaling(7.15.12

scaling-method(7.15.13

text-align(7.16.9

width(7.15.14

6.6.7 fo:inline 

一般的な使用法:

fo:inline フォーマット化オブジェクトは,通常,背景のあるテキストの一部をフォーマットするか,境


133

X 4179

:2010

界内にそれを囲むために使用される。

領域:

fo:inline フォーマット化オブジェクトは,一つ以上の正規行内領域を生成する。fo:inline は,任意の正規

ブロック領域,行外ページレベル領域,及び fo:inline の子が返す行外参照レベル領域とともに,これらの

領域を返す。

制約:

同一の fo:inline フォーマット化オブジェクトが返す正規の子領域を一つより多くもつ領域は,存在しな

い。

fo:inline が返す各正規領域の子は,4.7.3 で指定される制約を満たさなければならない。

さらに,このフォーマット化オブジェクトに適用できる特性から派生する特色が強要する制約も満たさ

なければならない。幾何的制約は,箇条 で厳密に定義されている。

内容:

(#PCDATA|%inline;|%block;)*

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

fo:footnote の子である fo:inline は,ブロックレベルの子をもたなくてもよい。fo:leader の子孫又は

fo:footnote の fo:inline の子の子孫である fo:inline は,fo:inline-container である先祖がより近くにない場合は,

ブロックレベルの子をもたなくてもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

block-progression-dimension(7.15.3) 
color(7.18.1

dominant-baseline(7.14.5

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

line-height(7.16.4


134

X 4179

:2010

   

text-decoration(7.17.4

visibility(7.30.17

width(7.15.14

wrap-option(7.16.13

6.6.8 fo:inline-container 

一般的な使用法:

fo:inline-container 流し込みオブジェクトは,通常,表記方法が異なるテキストブロックを包含する行内

参照領域の生成に使用される。

注記  双方向性テキストにこの流し込みオブジェクトを必ず使用しなければならないわけではない。

この場合は,Unicode BIDI アルゴリズム及び fo:bidi-override で十分対応できる。 

領域:

fo:inline-container フォーマット化オブジェクトは,表示域・参照のペアを一つ以上生成する。すべての

生成された表示域領域は,fo:inline-container のブロック進行寸法及び行内進行寸法特色によって与えられ

る制約に従う。fo:inlie-container は,これらの領域,及び fo:inline-container の子によって返される任意のペ

ージレベル行外領域を返す。

注記  ブロック進行寸法の最大値が,“auto”以外である場合は,オーバフロー処理が適用されてもよ

い。オーバフローの“repeat”値は,切取り又はスクロールによって,望まれる場合は,多数の

表示域・参照のペアを生成するために使える。 

絶対位置特色がもし“auto”のときは,これらの領域すべては,“xsl-normal”の領域クラスをもつ。絶

対値特色がもし“absolute”又は“fixed”のときは,一つの表示域・参照のペアがあり,その領域クラスは,

それぞれ“xsl-absolute”又は“xsl-fixed”である。

特色の派生:

表示域領域並びに参照領域の“reference-orientation”特性及び“writing-mode”特性は,fo:inline-container

に由来する。これらは,表示域の内容長方形並びに参照領域のパディング長方形,境界長方形及び内容長

方形の開始辺,終了辺,前辺及び後辺の方位を決定する。参照領域の参照方位は“0”に設定され,したが

って表示域によって確立した方向と同じである。

参照領域の行内進行寸法は,

表示域のそれと同じであり,

行内進行方向が fo:inline-container の親のそれと異なるときは,

“auto”でなくてもよい。参照領域のブロッ

ク進行寸法は,強制されないので,参照領域は,表示域領域より大きくてよく,これは“overflow”特性

が作動する要因となる。

注記  特性値がこの流し込みオブジェクトによって生成される区画のそれぞれに適用されるときは,

大きさは,その値がもし“auto”又は <length-range> のときは,その事例ごとに変化する。 

このオブジェクトのベースライン表の値の計算方法を,次に示す。

baseline 

表記方法のブロック進行方向が親のブロック進行方向と同じである場合,配置点は,最初の子孫の

行領域の主要ベースラインの位置に存在する。このような行領域が存在しない場合,配置点は,割付

け長方形の後辺の位置に存在する。

表記方法のブロック進行方向が親のブロック進行方向と同じではない場合,配置点は,内容長方形

の前辺と後辺との間の半分の位置に存在する。

before-edge 

配置点は,割付け長方形の前辺の位置に存在する。


135

X 4179

:2010

text-before-edge 

配置点は,候補となる二つの辺から選択された割付け長方形の前辺に最も近い位置に存在する。表

記方法のブロック進行方向が親のブロック進行方向と同じである場合,候補となる辺は,内容長方形

の前辺及び後辺である。そうでない場合,候補となる辺は,内容長方形の開始辺及び終了辺である。

middle 

配置点は,割付け長方形の前辺と後辺との間の半分の位置に存在する。

after-edge 

配置点は,割付け長方形の後辺の位置に存在する。

text-after-edge 

配置点は,候補となる二つの辺から選択された割付け長方形の後辺に最も近い位置に存在する。表

記方法のブロック進行方向が親のブロック進行方向と同じである場合,候補となる辺は,内容長方形

の前辺及び後辺である。そうでない場合,候補となる辺は,内容長方形の開始辺及び終了辺である。

ideographic 

配置点は,割付け長方形の前辺から割付け長方形の後辺までの距離の 7/10 の位置に存在する。

alphabetic 

配置点は,割付け長方形の前辺から割付け長方形の後辺までの距離の 6/10 の位置に存在する。

hanging 

配置点は,割付け長方形の前辺から割付け長方形の後辺までの距離の 2/10 の位置に存在する。

mathematical 

配置点は,割付け長方形の前辺から割付け長方形の後辺までの距離の 5/10 の位置に存在する。

制約:

同一の fo:inline-container フォーマット化オブジェクトが返す正規の子領域を一つより多くもつ領域は存

在しない。

fo:inline-container フォーマット化オブジェクトが生成する各参照領域の子は,fo:inline-container の子が返

す正規ブロック領域でなければならず,適正にスタックされ,適正に順序付けされなければならない。

fo:inline-container の子が返すすべての行外参照レベル領域は,6.12.2 に示されているとおりに扱われる。

内容:

(%block;)+

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

block-progression-dimension(7.15.3

clip(7.21.1


136

X 4179

:2010

   

display-align(7.14.4

dominant-baseline(7.14.5

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

line-height(7.16.4

overflow(7.21.2

reference-orientation(7.21.3

width(7.15.14

writing-mode(7.29.7

6.6.9 fo:leader 

一般的な使用法:

fo:leader フォーマット化オブジェクトは,しばしば次のように使われる。

目次では,ページ番号と題とを分ける“.”グリフのシーケンスを生成し,

空白を埋める形式では,入力フィールドを生成し,

分離記号として水平けい(罫)線を生成する。

領域:

fo:leader フォーマット化オブジェクトは,単一の正規行内領域を生成し,返す。

特色の派生:

leader-pattern の値が“use-content”である場合,内容長方形のブロック進行寸法は,行内領域の場合と同

じ方法で決定される。それ以外の場合,rule-thickness 特色によって決定される。

制約:

リーダの最小の長さが長すぎて,行領域内に配置できない場合は,リーダは新しい行となる。リーダの

最小の長さが長すぎてそれだけで行に配置できない場合,そのコンテナの overflow 特色に従って行からは

み出し,場合によっては,参照領域をはみ出すことになる。

fo:leader フォーマット化オブジェクトは,fo:leaders が入れ子になっていないときを除いて,どのような

行内フォーマット化オブジェクト及び文字でも子としてもつことができる。leader-pattern 特色の値が

“use-content”ではない場合,その子は無視される。

注記 leader-pattern 特色の値が“use-content”であり,fo:leader に子がない場合,リーダは空白で埋め

られなければならない。

fo:leader が生成する行内領域の寸法は,行内進行方向で,最小では leader-length.minimum となり,最大

では leader-length.maximum となる。

行領域に両端そろえの指定がされている行領域に対しては,両端そろえされた行領域は,fo:leaders が生

成した任意の行内領域の leader-alignment 特色に従わなければならない。

leader-pattern 特色の値が“dots”又は“use-content”である場合,次の制約が適用される。


137

X 4179

:2010

fo:leader が生成する行内領域は,fo:leader の子が返す領域又は leader-pattern 特色で指定されるパタンを

フォーマット化することによって獲得され,整数回繰り返される領域を子としてもつ。

一度の繰返しによる幅が行内進行方向の行内領域の寸法よりも大きい場合,行内領域は空白で埋められ

なければならない。

子領域の space-start 及び space-end は,leader-pattern-width 及び leader-alignment 特色で指定される制約を

考慮して設定される。

注記 1  リーダを広げて行のすべての利用可能な間隔を埋めるのが望ましい場合,リーダの最大の長

さの指定は,少なくとも段幅と同じになる。 

注記 2  リーダのそろえは,スクリプトの省略時のそろえとは異なるため,スクリプト固有であって

もよく,どのそろえ点が必す(須)であるかの指示を必す(須)としてもよい。例えば,イ

ンド語のスクリプトを使用する場合,リーダはアルファベットのベースラインに配置される。

注記 3 fo:leader は fo:block 内にラップすることができ,リーダを含む行領域を用いてブロック領域

を生成して,ブロック領域を分離したり装飾するけい(罫)線を生成する。 

内容:

(#PCDATA|%inline;)*

内容は,直接の子としても,子孫としても,fo:leader,fo:inline-container,fo:block-container,fo:float,

fo:footnote 又は fo:marker を包含してはならない。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

color(7.18.1

dominant-baseline(7.14.5

text-depth(7.29.5

text-altitude(7.29.4

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

leader-alignment(7.22.1

leader-length(7.22.4

leader-pattern(7.22.2

leader-pattern-width(7.22.3


138

X 4179

:2010

   

rule-style(7.22.5

rule-thickness(7.22.6

letter-spacing(7.17.2

line-height(7.16.4

text-shadow(7.17.5

visibility(7.30.17

word-spacing(7.17.8

6.6.10 fo:page-number 

一般的な使用法:

fo:page-number フォーマット化オブジェクトは,その内容が行内領域が配置されるページのページ番号

である行内領域を得るために使用される。

領域:

fo:page-number フォーマット化オブジェクトは,単一の正規行内領域を生成し,返す。

制約:

行内領域の内容は,reference-page 及び reference-page-sequence に依存する。fo:page-number に対して,

reference-page は 行 内 領 域 が 置 か れ る ペ ー ジ で あ り , reference-page-sequence は fo:page-number の

fo:page-sequence の先祖である。

この行内領域の子領域は,fo:character 流し込みオブジェクトを伴う reference-page-sequence の任意の

fo:folio-prefix の子のいずれかの内容からなる結果木素片をフォーマットした結果と同じである。これはペ

ージ番号文字列の各文字に対して一つあり,reference-page-sequence の任意の fo:folio-suffix の子の内容を伴

うページ番号文字列の各文字に対して,

“character”特性だけをもつものである。

ペ ー ジ 番 号 の 文 字 列 は , 番 号 に 従 っ て 行 内 領 域 が 配 置 さ れ る ペ ー ジ の ペ ー ジ 番 号 を 先 祖 の

fo:page-sequence の文字列変換特性に変換することによって,獲得される。

注記  変換特性は,format(7.26.1),grouping-separator(7.26.2),grouping-size(7.26.3),letter-value

7.26.4

,country(7.10.1)及び language(7.10.2)である。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

dominant-baseline(7.14.5

id(7.30.8

index-class(7.24.1


139

X 4179

:2010

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

letter-spacing(7.17.2

line-height(7.16.4

score-spaces(7.30.15

text-altitude(7.29.4

text-decoration(7.17.4

text-depth(7.29.5

text-shadow(7.17.5

text-transform(7.17.6

visibility(7.30.17

word-spacing(7.17.8

wrap-option(7.16.13

6.6.11 fo:page-number-citation 

一般的な使用法:

fo:page-number-citation は,引用されたフォーマット化オブジェクトが返す最初の正規領域を包含するペ

ージのページ番号を参照するために使用される。

注記  これを使用して,目次,相互参照及び索引入力のページ番号を提供してもよい。

領域:

fo:page-number-citation フォーマット化オブジェクトは,単一の正規行内領域を生成し,返す。

制約:

引用ページとは,fo:page-number-citation(被参照フォーマット化オブジェクト)の ref-id 特色に一致する

id 特色を伴うフォーマット化オブジェクトによって返される,最初の正規領域を子孫として含むページを

いう。

生成された行内領域の子領域は,6.6.10 で定義したように,引用ページを参照ページとし,引用ページ

を生成する fo:page-sequence を参照ページシーケンスとして使用して,

結果木素片をフォーマットした結果

と同じである。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3


140

X 4179

:2010

   

dominant-baseline(7.14.5

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

letter-spacing(7.17.2

line-height(7.16.4

ref-id(7.30.13

score-spaces(7.30.15

text-altitude(7.29.4

text-decoration(7.17.4

text-depth(7.29.5

text-shadow(7.17.5

text-transform(7.17.6

visibility(7.30.17

word-spacing(7.17.8

wrap-option(7.16.13

6.6.12 fo:page-number-citation-last 

一般的な使用法:

fo:page-number-citation-last は,引用されたフォーマット化オブジェクトによって返され,特別なページ

引用方策と矛盾しない領域クラスとをもつ,領域を包含する最後のページに対するページ番号を参照する

ために使用される。

注記  それは,目次,相互参照及び fo:page-number-citation と組み合わせたときに,ページ範囲登録に

ページ番号を与えるために使用される。 

領域:

fo:page-number-citation-last フォーマット化オブジェクトは,単一の正規行内領域を生成し返す。

制約:

引用ページは,この fo:page-number-citation-last 上でページ参照方策の制限を満たす,

(領域木の先行順の

横断順で)最後のページ領域のページである。

生成された行内領域の子領域は,6.6.10 で定義したように,引用ページを参照ページとし,引用ページ

を生成する fo:page-sequence を参照ページシーケンスとして使用して,

結果木素片をフォーマットした結果

と同じである。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9


141

X 4179

:2010

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

dominant-baseline(7.14.5

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

letter-spacing(7.17.2

line-height(7.16.4

page-citation-strategy(7.30.10

ref-id(7.30.13

score-spaces(7.30.15

text-altitude(7.29.4

text-decoration(7.17.4

text-depth(7.29.5

text-shadow(7.17.5

text-transform(7.17.6

visibility(7.30.17

word-spacing(7.17.8

wrap-option(7.16.13

6.6.13 fo:folio-prefix 

一般的な使用法:

fo:folio-prefix フォーマット化オブジェクトは,ページシーケンス内でページ番号のために固定的に付け

る接頭辞を指定する。

領域:

fo:folio-prefix フォーマット化オブジェクトは,直接にはどのような領域も生成しない。その子は,ペー

ジ番号をフォーマットするときに取り出され,使用される。

制約:

なし。

内容:

(#PCDATA|%inline;)*

fo:folio-prefix は,fo:page-number,fo:page-number-citation 又は fo:page-number-citation-last を子孫にもつこ

とができない。


142

X 4179

:2010

   

6.6.14 fo:folio-suffix 

一般的な使用法:

fo:folio-sufix フォーマット化オブジェクトは,ページシーケンス内でページ番号のために固定的に付け

る接尾辞を指定する。

領域:

fo:folio-suffix フォーマット化オブジェクトは,直接的にはどのような領域も生成しない。その子は,ペ

ージ番号をフォーマットするときに取り出され,使用される。

制約:

なし。

内容:

(#PCDATA|%inline;)*

fo:folio-suffix は,fo:page-number,fo:page-number-citation 又は fo:page-number-citation-last を子孫にもつこ

とができない。

6.6.15 fo:scaling-value-citation 

一般的な使用法:

fo:scaling-value-citation は,引用された fo:external-graphic に適用する変倍率を得るために使用される。

注記  それは,図形を通常は真の大きさで示し,はめ込めない場合,縮小するときは,アプリケーシ

ョンで使われる。 

領域:

fo:scaling-value-citation フォーマット化オブジェクトは,単独の正規の行内領域を生成し,返す。

制約:

引 用 さ れ た fo:external-graphic は , fo:scaling-value-citation の re-id に 一 致 す る id 特 色 を 伴 う

fo:external-graphic である。

適用された変倍率は,

“intrinsic-scale-value”特性の値によって変倍された,引用された fo:external-graphic

の基本のサイズに適用される変倍率である。それは,整数のパーセント値で表示される。

“scale-option”特

性は,この変倍率が幅又は高さに使われるのが望ましいかどうかを指定する。

注記  図形形式が図形の基本のサイズを指定せず,大きさが実装時定義の手法で決定される場合は,

得られた変倍率は意味がない可能性がある。 

適用された変倍率文字列は,数値に従って適用された変倍率を文字列変換特性に変換することで得られ

る。

注記  変換特性は,format(7.26.1),grouping-separator(7.26.2),grouping-size(7.26.3),letter-value

7.26.4

,country(7.10.1)及び language(7.10.2)である。

生成された行内領域の子領域は,適用された変倍率文字列内の各文字に対して,指定の“character”特

性をもつ fo:character フォーマット化オブジェクトを包含する,結果木素片をフォーマットした結果と同じ

である。

内容:

EMPTY

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7


143

X 4179

:2010

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なフォント特性(7.9

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2

baseline-shift(7.14.3

country(7.10.1

dominant-baseline(7.14.5

format(7.26.1

grouping-separator(7.26.2

grouping-size(7.26.3

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-with-next(7.20.4

keep-with-previous(7.20.5

language(7.10.2

letter-spacing(7.17.2

letter-value(7.26.4

line-height(7.16.4

intrinsic-scale-value(7.30.9

ref-id(7.30.13

score-spaces(7.30.15

scale-option(7.30.14

text-altitude(7.29.4

text-decoration(7.17.4

text-depth(7.29.5

text-shadow(7.17.5

text-transform(7.17.6

visibility(7.30.17

word-spacing(7.17.8

wrap-option(7.16.13

6.7 

表のためのフォーマット化オブジェクト 

6.7.1 

導入 

表の構築に使用されるフォーマット化オブジェクトは,fo:table-and-caption,fo:table,fo:table-column,

fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row 及び fo:table-cell である。結果木

構造を,

図 6.10 に示す。


144

X 4179

:2010

   

図 6.10−表のフォーマット化オブジェクトの木表現 

6.7.1.1 

 

6.7.1.1.1 

中央そろえ及び字下げのある簡単な表 

入力サンプル:

<doc>

<table>

<caption><p>Caption for this table</p></caption>

<tgroup cols="3" width="325pt">

<colspec colwidth="100pt"/>

<colspec colwidth="150pt"/>

<colspec colwidth="75pt"/>

<tbody>

<row>

<entry><p>Cell 1</p></entry>

<entry><p>Cell 2</p></entry>

<entry><p>Cell 3</p></entry>

</row>

</tbody>

</tgroup>

</table>

</doc>

表及び見出しは,start-indent="100pt"  及び end-indent="0pt"  という字下げ間で利用可能な間隔の中央

にそろえられる。中央そろえ及び字下げを,見出し及びセルの内容に適用するのは望ましくない。


145

X 4179

:2010

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:attribute-set name="inside-table">

  <xsl:attribute name="start-indent">0pt</xsl:attribute>

  <xsl:attribute name="text-align">start</xsl:attribute>

</xsl:attribute-set>

<xsl:template match="p">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="table">

  <fo:table-and-caption text-align="center" start-indent="100pt">

    <xsl:apply-templates/>

  </fo:table-and-caption>

</xsl:template>

<xsl:template match="caption">

  <fo:table-caption xsl:use-attribute-sets="inside-table">

    <xsl:apply-templates/>

  </fo:table-caption>

</xsl:template>

<xsl:template match="tgroup">

  <fo:table width="{@width}" table-layout="fixed">

    <xsl:apply-templates/>

  </fo:table>

</xsl:template>

<xsl:template match="colspec">

  <fo:table-column column-width="{@colwidth}">

    <xsl:attribute name="column-number">

      <xsl:number count="colspec"/>

    </xsl:attribute>


146

X 4179

:2010

   

  </fo:table-column>

</xsl:template>

<xsl:template match="tbody">

  <fo:table-body xsl:use-attribute-sets="inside-table">

    <xsl:apply-templates/>

  </fo:table-body>

</xsl:template>

<xsl:template match="row">

  <fo:table-row>

    <xsl:apply-templates/>

  </fo:table-row>

</xsl:template>

<xsl:template match="entry">

  <fo:table-cell>

    <xsl:apply-templates/>

  </fo:table-cell>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:table-and-caption text-align="center" start-indent="100pt">

  <fo:table-caption start-indent="0pt" text-align="start">

    <fo:block>Caption for this table

        </fo:block>

  </fo:table-caption>

  <fo:table width="325pt" table-layout="fixed">

    <fo:table-column column-width="100pt" column-number="1">

        </fo:table-column>

    <fo:table-column column-width="150pt" column-number="2">

        </fo:table-column>

    <fo:table-column column-width="75pt" column-number="3">

        </fo:table-column>

    <fo:table-body start-indent="0pt" text-align="start">


147

X 4179

:2010

        <fo:table-row>

    <fo:table-cell>

    <fo:block>Cell 1

        </fo:block>

    </fo:table-cell>

    <fo:table-cell>

    <fo:block>Cell 2

        </fo:block>

    </fo:table-cell>

    <fo:table-cell>

    <fo:block>Cell 3

        </fo:block>

    </fo:table-cell>

        </fo:table-row>

    </fo:table-body>

  </fo:table>

</fo:table-and-caption>

6.7.1.1.2 

相対列幅規定のある単純な表 

この例は,表要素に,単純な“Oasis-table-model-like”のマーク付けを使用している。列幅は,相対全列

幅規定を使用して指定されている。

入力サンプル:

<doc>

<table>

<tgroup cols="3">

<colspec colname="col1" colwidth="1*"/>

<colspec colname="col2" colwidth="2*+2pi"/>

<colspec colname="col3" colwidth="72"/>

<tbody>

<row>

<entry colnum="1" valign="top"><p>Cell 1</p></entry>

<entry colnum="2" valign="middle" align="center"><p>Cell 2</p></entry>

<entry colnum="3" align="center"><p>Cell 3</p></entry>

</row>

</tbody>


148

X 4179

:2010

   

</tgroup>

</table>

</doc>

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="p">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="table">

  <fo:table width="12cm" table-layout="fixed">

    <xsl:apply-templates/>

  </fo:table>

</xsl:template>

<xsl:template match="colspec">

  <fo:table-column>

    <xsl:attribute name="column-number">

      <xsl:number count="colspec"/>

    </xsl:attribute>

    <xsl:attribute name="column-width">

      <xsl:call-template name="calc.column.width">

                <xsl:with-param name="colwidth">

                    <xsl:value-of select="@colwidth"/>

                </xsl:with-param>

      </xsl:call-template>

    </xsl:attribute>

  </fo:table-column>

</xsl:template>

<xsl:template match="tbody">

  <fo:table-body>

    <xsl:apply-templates/>

  </fo:table-body>


149

X 4179

:2010

</xsl:template>

<xsl:template match="row">

  <fo:table-row>

    <xsl:apply-templates/>

  </fo:table-row>

</xsl:template>

<xsl:template match="entry">

  <fo:table-cell column-number="{@colnum}">

    <xsl:if test="@valign">

            <xsl:choose>

                <xsl:when test="@valign='middle'">

          <xsl:attribute name="display-align">center</xsl:attribute>

                </xsl:when>

                <xsl:when test="@valign='top'">

          <xsl:attribute name="display-align">before</xsl:attribute>

                </xsl:when>

        <xsl:when test="@valign='bottom'">

          <xsl:attribute name="display-align">after</xsl:attribute>

                </xsl:when>

                <xsl:otherwise>

          <xsl:attribute name="display-align">before</xsl:attribute>

                </xsl:otherwise>

            </xsl:choose>

        </xsl:if>

    <xsl:if test="@align">

      <xsl:attribute name="text-align">

        <xsl:value-of select="@align"/>

      </xsl:attribute>

        </xsl:if>

    <xsl:apply-templates/>

  </fo:table-cell>

</xsl:template>

<xsl:template name="calc.column.width">

<!-- **

          * <p>Calculate an XSL FO table column-width specification from a

     * full relative table column-width specification.</p>

          *


150

X 4179

:2010

   

          * <p>Table column-widths are in the following basic

          * forms:</p>

          *

          * <ul>

     * <li><b>99.99units</b>, a fixed length-specifier.</li>

     * <li><b>99.99</b>, a fixed length-specifier without any units.</li>

     * <li><b>99.99*</b>, a relative length-specifier.</li>

     * <li><b>99.99*+99.99units</b>, a combination of both.</li>

          * </ul>

          *

          * <p>The units are points (pt), picas (pi), centimeters (cm),

          * millimeters (mm), and inches (in). These are the same units as XSL,

          * except that XSL abbreviates picas "pc" instead of "pi". If a length

          * specifier has no units, the default unit (pt) is assumed.</p>

          *

          * <p>Relative length-specifiers are represented in XSL with the

     * proportional-column-width() function.</p>

          *

     * <p>Here are some examples:</p>

          *

          * <ul>

     * <li>"36pt" becomes "36pt"</li>

     * <li>"3pi" becomes "3pc"</li>

     * <li>"36" becomes "36pt"</li>

     * <li>"3*" becomes "proportional-column-width(3)"</li>

     * <li>"3*+2pi" becomes "proportional-column-width(3)+2pc"</li>

     * <li>"1*+2" becomes "proportional-column-width(1)+2pt"</li>

          * </ul>

          *

     * @param colwidth The column width specification.

          *

     * @returns The XSL column width specification.

          * -->

  <xsl:param name="colwidth">1*</xsl:param>

    <!-- Ok, the colwidth could have any one of the following forms: -->

  <!--        1*       = proportional width -->

    <!--          1unit              = 1.0 units wide -->

    <!--                  1              = 1pt wide -->

  <!--  1*+1unit       = proportional width + some fixed width -->


151

X 4179

:2010

  <!--      1*+1       = proportional width + some fixed width -->

    <!-- If it has a proportional width, translate it to XSL -->

  <xsl:if test="contains($colwidth, '*')">

    <xsl:text>proportional-column-width(</xsl:text>

    <xsl:value-of select="substring-before($colwidth, '*')"/>

    <xsl:text>)</xsl:text>

  </xsl:if>

    <!-- Now get the non-proportional part of the specification -->

  <xsl:variable name="width-units">

        <xsl:choose>

      <xsl:when test="contains($colwidth, '*')">

                <xsl:value-of

             select="normalize-space(substring-after($colwidth, '*'))"/>

            </xsl:when>

            <xsl:otherwise>

        <xsl:value-of select="normalize-space($colwidth)"/>

            </xsl:otherwise>

        </xsl:choose>

  </xsl:variable>

    <!-- Now the width-units could have any one of the following forms: -->

    <!--                                  = <empty string> -->

    <!--          1unit              = 1.0 units wide -->

    <!--                  1              = 1pt wide -->

    <!-- with an optional leading sign -->

    <!-- Get the width part by blanking out the units part and discarding -->

  <!-- white space. -->

  <xsl:variable name="width"

       select="normalize-space(translate($width-units,

                                         '+-0123456789.abcdefghijklmnopqrstuvwxyz',

                                         '+-0123456789.'))"/>

    <!-- Get the units part by blanking out the width part and discarding -->

  <!-- white space. -->

  <xsl:variable name="units"

       select="normalize-space(translate($width-units,

                                         'abcdefghijklmnopqrstuvwxyz+-0123456789.',


152

X 4179

:2010

   

                                         'abcdefghijklmnopqrstuvwxyz'))"/>

    <!-- Output the width -->

  <xsl:value-of select="$width"/>

    <!-- Output the units, translated appropriately -->

  <xsl:choose>

    <xsl:when test="$units = 'pi'">pc</xsl:when>

        <xsl:when test="$units = '' and $width != ''">pt</xsl:when>

    <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>

  </xsl:choose>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:table width="12cm" table-layout="fixed">

  <fo:table-column column-number="1" column-width="proportional-column-width(1)">

  </fo:table-column>

  <fo:table-column column-number="2" column-width="proportional-column-width(2)+2pc">

  </fo:table-column>

  <fo:table-column column-number="3" column-width="72pt">

  </fo:table-column>

  <fo:table-body>

        <fo:table-row>

      <fo:table-cell column-number="1" display-align="before">

        <fo:block>Cell 1

                </fo:block>

      </fo:table-cell>

      <fo:table-cell column-number="2" display-align="center" text-align="center">

        <fo:block>Cell 2

                </fo:block>

      </fo:table-cell>

      <fo:table-cell column-number="3" text-align="center">

        <fo:block>Cell 3

                </fo:block>

      </fo:table-cell>

        </fo:table-row>

  </fo:table-body>

</fo:table>

6.7.2 fo:table-and-caption 


153

X 4179

:2010

一般的な使用法:

fo:table-and-caption 流し込みオブジェクトは,表題とともに表をフォーマットするために使用される。

注記 1 fo:table-and-caption は,fo:inline-container 内に囲むことによって,行内に配置されてもよい。 

注記 2  このフォーマット化オブジェクトは,表題及び表を囲む CSS 匿名ボックスに対応する。 

領域:

fo:table-and-caption フ ォ ー マ ッ ト 化 オ ブ ジ ェ ク ト は , 正 規 ブ ロ ッ ク 領 域 を 一 つ 以 上 生 成 す る 。

fo:table-and-caption は,これらの領域,任意の行外ページレベル領域及び fo:table-and-caption の子が返す任

意の行外参照レベル領域を返す。

制約:

同じ fo:table-and-caption フォーマット化オブジェクトが返す正規の子領域が,一つより多く存在する領

域はない。

fo:table-and-caption が生成する領域の子は,一つ又は二つである。一つは表題の領域であり,一つは表自

体の領域である。これらは,caption-side 特色が指定するとおりに,互いに相対して配置される。その配置

は,text-align 特色が指定するとおりに,生成領域の内容長方形に関連する。

内容:

(table-caption?,table)

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11

一般的な相対位置決め特性(7.13

break-after  7.20.1

break-before(7.20.2

caption-side(7.28.7

clear(7.19.1

id(7.30.8) 
index-class(7.24.1

index-key(7.24.2

intrusion-displace(7.19.3

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

text-align(7.16.9

6.7.3 fo:table 

一般的な使用法:

fo:table 流し込みオブジェクトは,表の材料をフォーマットするために使用される。


154

X 4179

:2010

   

fo:table 流し込みオブジェクト及びその子の流し込みオブジェクトは,“行優先”の方法で表の視覚レイ

アウトを作成する。完成した表は,行進行方向及び列進行方向で,各セルが格子単位を一つ以上占有する

行及び列の格子から構成されるように見える。

表の内容は,ヘッダ(省略可能)

,フッタ(省略可能)及び一つ以上の本体に分割される。特性は,ヘッ

ダ及びフッタを表の分割で繰り返すのが望ましいかどうかを指定する。これらの各部分は,表の格子内の

行を一つ以上占有する。

領域:

fo:table フォーマット化オブジェクトは,一つ以上の正規ブロック領域を生成し,返す。これらの領域は,

“table-omit-header-at-break”特性による指定で削除されていない限り)fo:table-header の内容から構成さ

れ,fo:table-body の内容の一部を伴い,(“table-omit-footer-at-break”特性による指定で削除されていない

限り)fo:table-footer の内容を伴う。さらに,fo:table は,任意の行外ページレベル領域及び任意の fo:table

の子が返す行外参照レベル領域を返す。

fo:table フォーマット化オブジェクトが生成し,返す領域が子としてもつ領域は,次のとおり。

a)

表ヘッダ,表フッタ,表本体,またがりが行われた列,列及び行に対応する,背景だけをもつ領域。

注記  またがりが行われた列(“number-columns-spanned”の値が 1 より大きい fo:table-column)は,

CSS2 で背景を決定する場合の“column-groups”と同じ方法で使用される。 

b) fo:table-cell

フォーマット化オブジェクトが返す領域。

これらの領域には,CSS2 規定の 17.5.1(Table layers and transparency)

(http://www.w3.org/TR/REC-CSS2/tables.html#table-layers)に従って決定されるレンダリング順を制御する

z 指標が存在する。

注記  またいだ先のセルが,占有された各格子単位で,異なる背景をもってもよい。 

特色の派生:

列進行方向及び行進行方向は,writing-mode 特色によって決定される。列に行内進行方向を使用し,行

にブロック進行方向を使用する。

表の境界特質を派生するメソッドは,

“border-collapse”特性によって指定される。

“border-collapse”特性の値が“separate”である場合,境界は二つの構成要素からなる。最初のものは最

外部の表格子境界線に一致する内部辺を用いて配置され,

“border-separation”特性の値の半分の幅をもつ。

それは,fo:table の“background”特性に従って埋められる。第 2 のものは,表の各側については表に指定

された境界に基づいた境界が最外部の表格子境界線の外側に配置される。

“border-collapse”特性の値が“collapse”である場合,境界は各区分についてセルレベルで決定される。

注記  “collaspe-with-precedence”を指定し,fo:table の境界規定に高い優先順位を適切に指定すること

によって,この規格をすべての境界区分で確実に使用するようにしてもよい。 

制約:

同一の fo:table フォーマット化オブジェクトが返す正規の子領域を一つ以上もつ領域はない。

fo:table-header 及び fo:table-footer の内容は,“table-omit-header-at-break”及び“table-omit-footer-at-break”

特性による指定で削除されていない限り,fo:table フォーマット化オブジェクトによって生成され返される

各正規ブロック領域ごとに繰り返されなければならない。

表の内容長方形の行内進行寸法は,表格子の列の行内進行寸法の合計である。これらの行内進行寸法の

決定に使用されるメソッドは,table-layout 及び inline-progression-dimension 特色の値によって,次の方法で


155

X 4179

:2010

決定される。

inline-progression-dimension="auto" table-layout="auto" 

自動表配置を使用しなければならない。

inline-progression-dimension="auto" table-layout="fixed" 

自動表配置を使用しなければならない。

inline-progression-dimension=<length> 

又は <percentage> table-layout="auto" 

自動表配置を使用しなければならない。

inline-progression-dimension=<length> 

又は <percentage> table-layout="fixed" 

固定表配置を使用しなければならない。

自動表配置及び固定表配置は,CSS2 規定の 17.5.2(Table width algorithms: the 'table-layout' property)

(http://www.w3.org/TR/REC-CSS2/tables.html#width-layout)で定義される。

表のブロック進行寸法を決定するメソッドは,block-progression-dimension 特色による。

注記 1 CSS2 規定は,明示的に指定された表のブロック進行寸法と内容のブロック進行寸法との間に

一致しない場合,どのように振る舞うのが望ましいかを明示的に指定していない。 

注記 2  固定表配置を使用する場合は,“proportional-column-width()”関数しか使用できない。

明示的な幅が未知である表にプロポーショナル列幅を使用したい場合,行内進行寸法を

“auto”に指定することはできない。代わりに,幅をパーセンテージで指定しなければなら

ない。例えば,table-layout="fixed"及び inline-progression-dimension="100%"と設定することに

よって,現在の文脈でできる限り大きい表を生成できると同時に,プロポーショナル列幅を

使用できることになる。

注記 3  特に自動表配置を使用する場合,幅にパーセンテージを使用した結果の予測ができないこと

もある。 

例えば,二つ又はそれ以上の表セルが表格子内で同じセルの場所に行又は列をまたがろうとして,二つ

又はそれ以上の表セルが重なる場合は誤りである。実装は,この誤りを表セルを配置換えして,すべての

内容が示されることで回避してもよい。

表セルは,それぞれ水平及び垂直両方で単一の表本体,表ヘッダ又は表フッタ内に含まれなければなら

ない。したがって,表セルがあまりに遠くへまたがろうとすることは誤りである。これは,例えばまたが

る方向で既存の行又は列数を超える number-rows-spanned 又は number-coulumns-spanned の値をもつことで

表の体裁が固定されるような表で発生する。実装は,実際に利用できる行又は列の数だけ表セルをまたが

らせることで回復してもよい。

内容:

(table-column*,table-header?,table-footer?,table-body+)

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子と

してもってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11


156

X 4179

:2010

   

一般的な相対位置決め特性(7.13

block-progression-dimension(7.15.3

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-collapse(7.28.3

border-end-precedence(7.28.4

border-separation(7.28.5

border-start-precedence(7.28.6

break-after(7.20.1

break-before(7.20.2

clear(7.19.1

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

intrusion-displace(7.19.3

height(7.15.6

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

table-layout(7.28.16

table-omit-footer-at-break(7.28.17

table-omit-header-at-break(7.28.18

width(7.15.14

writing-mode(7.29.7

6.7.4 fo:table-column 

一般的な使用法:

fo:table-column 補助フォーマット化オブジェクトは,同一の列及びまたがりをもつ表セルに適用できる

特質を指定する。最も重要な特性は,

“column-width”特性である。

領域:

fo:table-column フォーマット化オブジェクトは,どのような領域も生成せず,返さない。このフォーマ

ット化オブジェクトは,列幅,背景など,fo:table が生成する領域に影響を与えるものについて,表示の特

質の規定に関する制約を提供する特色の集合を保持する(6.7.3 参照)

。fo:table-column には,継承可能な特

性も指定してよい。式中の from-table-column()  関数によって,これらを参照することができる。

注記  特に,number-columns-spanned の値が 1 より大きい fo:table-column の使用についての詳細は,

fo:table 及び from-table-column()  関数の記述を参照する。 

制約:

なし。

内容:

EMPTY


157

X 4179

:2010

このフォーマット化オブジェクトに適用される特性:

一般的な境界特性,パディング特性及び背景特性(7.8

注記  背景特性だけ,background-attachment,background-color,background-image,background-repeat,

background-position-horizontal 及び background-position-vertical が,この集合から適用される。

もし,border-collapse の値が,表に対する“collapse”又は“collapse-with-precedence”のと

きは,境界特性,border-before-color,border-before-style,border-before-width,border-after-color,

border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,

border-end-color , border-end-style , border-end-width , border-top-color , border-top-style ,

border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,

border-left-style,border-left-width,border-right-color,border-right-style 及び border-right-width

も適用される。

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

column-number(7.28.8

column-width(7.28.9

number-columns-repeated(7.28.12

number-columns-spanned(7.28.13

visibility(7.30.17

6.7.5 fo:table-caption 

一般的な使用法:

fo:table-caption フォーマット化オブジェクトは,fo:table-and-caption を使用する場合に限り,表題を含む

ブロックレベルフォーマット化オブジェクトを包含するために使用される。

領域:

fo:table-caption フォーマット化オブジェクトは,一つ以上の正規参照領域を生成する。fo:table-caption は,

これらの参照領域及び fo:table-caption の子が返す任意の行外ページレベル領域を返す。

制約:

caption-side 特色の値が“before”又は“after”である場合については,生成参照領域の内容長方形の行

内進行寸法は,それを囲む参照領域の内容長方形の行内進行寸法と等しくなる。

値が“start”又は“end”である場合,生成参照領域の行内進行寸法は,inline-progression-dimension 特色

の値によって制約される。

値が“top”

“bottom”

“left”又は“right”である場合,その値は対応する特性の場合と同じ方法で対応

付けられ(5.3 参照)

,特性は対応する値が指定されたものとして取り扱われる。

表題が表の前に配置付けされる場合,

fo:table-caption が生成する領域は,fo:table-caption の“keep-with-next”

特性の値が“always”であるものとして,領域木に配置されなければならない。

表 題 が 表 の 後 に 配 置 付 け さ れ る 場 合 , fo:table-caption が 生 成 す る 領 域 は , fo:table-caption の

“keep-with-previous”特性の値が“always”であるものとして,領域木に配置されなければならない。

同じ fo:table-caption フォーマット化オブジェクトが返す正規の子領域が一つより多く存在する領域はな

い。


158

X 4179

:2010

   

fo:table-caption フォーマット化オブジェクトが返す各正規領域の子は,fo:table-caption の子が返す正規ブ

ロック領域でなければならず,適正にスタックされ,適正に順序付けされなければならない。

fo:table-caption の子が返すすべての行外参照レベル領域は,6.12.2 に規定するとおりに扱われる。

内容:

(%block;)+

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な相対位置決め特性(7.13

block-progression-dimension(7.15.3

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

intrusion-displace(7.19.3

keep-together(7.20.3

width(7.15.14

6.7.6 fo:table-header 

一般的な使用法:

fo:table-header フォーマット化オブジェクトは,表ヘッダの内容を包含するために使用される。

領域:

fo:table-header フォーマット化オブジェクトは,どのような領域も生成しない。fo:table-header フォーマ

ット化オブジェクトが返すのは,fo:table-header の各子が返す領域のシーケンスを連結することによって生

成される領域のシーケンスである。

制約:

fo:table-header の子が返す領域のシーケンスの連結の順序は,fo:table-header の下で子が順序付けされる

順序と同じである。

内容:

(table-row+|table-cell+)

fo:table-header は,一つ以上の fo:table-row を子としてもつか,代わりの fo:table-cell を一つ以上もつ。後

者の場合,セルは,starts-row 及び ends-row 特性を使用する行にグループ化される。

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7


159

X 4179

:2010

一般的な境界特性,パディング特性及び背景特性(7.8

注記  背景特性だけ,background-attachment,background-color,background-image,background-repeat,

background-position-horizontal 及び background-position-vertical が,この集合から適用される。

もし,border-collapse の値が,表に対する“collapse”又は“collapse-with-precedence”のと

きは,境界特性,border-before-color,border-before-style,border-before-width,border-after-color,

border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,

border-end-color , border-end-style , border-end-width , border-top-color , border-top-style ,

border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,

border-left-style,border-left-width,border-right-color,border-right-style 及び border-right-width

も適用される。

一般的な相対位置決め特性(7.13

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

visibility(7.30.17

6.7.7 fo:table-footer 

一般的な使用法:

fo:table-footer フォーマット化オブジェクトは,表フッタの内容を包含するために使用される。

領域:

fo:table-footer フォーマット化オブジェクトは,どのような領域も生成しない。fo:table-footer フォーマッ

ト化オブジェクトが返すのは,fo:table-footer の各子が返す領域のシーケンスを連結することによって生成

される領域のシーケンスである。

制約:

fo:table-footer の子が返す領域のシーケンスの連結の順序は,fo:table-footer の下で子が順序付けされる順

序と同じである。

内容:

(table-row+|table-cell+)

fo:table-footer は一つ以上の fo:table-row をその子としてもつか,代わりの fo:table-cell を一つ以上もつ。

後者の場合,セルは,starts-row 及び ends-row 特性を使用する行にグループ化される。

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8


160

X 4179

:2010

   

注記  背景特性だけ,background-attachment,background-color,background-image,background-repeat,

background-position-horizontal 及び background-position-vertical が,この集合から適用される。

もし,border-collapse の値が,表に対する“collapse”又は“collapse-with-precedence”のと

きは,境界特性,border-before-color,border-before-style,border-before-width,border-after-color,

border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,

border-end-color , border-end-style , border-end-width , border-top-color , border-top-style ,

border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,

border-left-style,border-left-width,border-right-color,border-right-style 及び border-right-width

も適用される。

一般的な相対位置決め特性(7.13

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

visibility(7.30.17

6.7.8 fo:table-body 

一般的な使用法:

fo:table-body フォーマット化オブジェクトは,表本体の内容を包含するために使用される。

領域:

fo:table-body フォーマット化オブジェクトは,どのような領域も生成しない。fo:table-body フォーマット

化オブジェクトが返すのは,fo:table-body の各子が返す領域のシーケンスを連結することによって生成さ

れる領域のシーケンスである。

制約:

fo:table-body の子が返す領域のシーケンスの連結の順序は,子が fo:table-body の下で順序付けされる順

序と同じである。

内容:

(table-row+|table-cell+)

fo:table-body は一つ以上の fo:table-row を子としてもつか,代わりの fo:table-cell を一つ以上もつ。後者の

場合,セルは,starts-row 及び ends-row 特性を使用する行にグループ化される。

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

注記  背景特性だけ,background-attachment,background-color,background-image,background-repeat,

background-position-horizontal 及び background-position-vertical が,この集合から適用される。


161

X 4179

:2010

もし,border-collapse の値が,表に対する“collapse”又は“collapse-with-precedence”のと

きは,境界特性,border-before-color,border-before-style,border-before-width,border-after-color,

border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,

border-end-color , border-end-style , border-end-width , border-top-color , border-top-style ,

border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,

border-left-style,border-left-width,border-right-color,border-right-style 及び border-right-width

も適用される。

一般的な相対位置決め特性(7.13

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

visibility(7.30.17

6.7.9 fo:table-row 

一般的な使用法:

fo:table-row フォーマット化オブジェクトは,表セルを行にグループ化するために使用される。表の行内

のすべての表セルは,表格子の同じ幾何的な行で始まる。

領域:

fo:table-row フォーマット化オブジェクトは,どのような領域も生成しない。fo:table-row フォーマット化

オブジェクトが返すのは,fo:table-row の各子が返す領域のシーケンスを連結することによって生成される

領域のシーケンスである。fo:table-row は,背景など,fo:table が生成する領域に影響を与える表示の特質の

規定を保持する(6.7.3 参照)

制約:

fo:table-row の子が返す領域のシーケンスの連結の順序は,fo:table-row で子が順序付けされる順序と同じ

である。

格子の行の高さを決定するメソッドは,row-height 特色によって決められる。

内容:

(table-cell+)

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

block-progression-dimension(7.15.3

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8


162

X 4179

:2010

   

注記  背景特性だけ,background-attachment,background-color,background-image,background-repeat,

background-position-horizontal 及び background-position-vertical が,この集合から適用される。

もし,border-collapse の値が,表に対する“collapse”又は“collapse-with-precedence”のと

きは,境界特性,border-before-color,border-before-style,border-before-width,border-after-color,

border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,

border-end-color , border-end-style , border-end-width , border-top-color , border-top-style ,

border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,

border-left-style,border-left-width,border-right-color,border-right-style 及び border-right-width

も適用される。

一般的な相対位置決め特性(7.13

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

break-after(7.20.1

break-before(7.20.2

id(7.30.8

index-class(7.24.1

index-key(7.24.2

height(7.15.6

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

visibility(7.30.17

6.7.10 fo:table-cell 

一般的な使用法:

fo:table-cell フォーマット化オブジェクトは,表セルに配置される内容をグループ化するために使用され

る。

入力データに各行のセルを含む要素はないが,その代わりに,例えば,各行が特定の型の要素で始まる

などといった場合に,

“starts-row”特性及び“ends-row”特性を使用することができる。

領域:

fo:table-cell フォーマット化オブジェクトは,一つ以上の正規参照領域を生成する。fo:table-cell は,これ

らの参照領域,及び fo:table-cell の子が返す任意の行外ページレベル領域を返す。

特色の派生:

セルの境界を派生するメソッドは,border-collapse 特色によって指定される。

border-collapse 特色の値が“separate”である場合,境界は二つの構成要素からなる。最初の構成要素は,

表格子境界線に一致する外辺で配置され,その幅は border-separation 特色に指定された値の半分であり,

fo:table の background 特色に従って埋められる。セルの各側については,セルの各側の境界は,この境界

の内部に配置されるか継承される。

border-collapse 特色の値が“collapse-with-precedence”である場合,セルの各側の境界は,境界の各区分


163

X 4179

:2010

について,その区分に対するすべての境界規定から最も優先順位が高い境界を選択することによって決定

される。同じ優先順位の境界が二つ存在し,それらが同一ではない場合は誤りである。境界の一つを選択

することによって回復してもよい。各境界区分は,表格子境界線の中央に配置される。副画素のレンダリ

ングに対応していない装置では,有効な境界幅が奇数画素となるように決定する場合,実装が格子境界線

のどの側に奇数画素を配置するかを定義する。

border-collaspe 特色の値が“collaspe”である場合,セルの各側の境界は,境界の各区分について,その

区分に対するすべての境界規定から最も目を引く境界スタイルをもつ境界を選択することによって決定さ

れる。詳細については後述を参照する。各境界区分は,表格子境界線の中央に寄せられる。副画素のレン

ダリングに対応していない装置では,有効な境界幅が奇数画素となるように決定する場合,実装が格子境

界線のどの側に奇数画素を配置するかを定義する。縮退する境界区分のスタイル間に競合がある場合は,

次の規則によって,どの境界スタイルが“優先する”かが決定される。

a)

境界の“border-style”が“hidden”である場合は,競合する他のすべての境界に優先する。この値を

もつすべての境界は,この位置ですべての境界を抑制する。

b)

スタイルが“none”である境界の優先順位は最も低い。この辺に集まるすべての要素の境界特性が

“none”である場合に限り,境界を省略することになる。しかし,

“none”は,境界スタイルの省略時

の値である点に注意を要する。

c)

スタイルがいずれも“hidden”ではなく,それらのうち少なくとも一つが“none”でない場合,狭い

境界は廃棄され,広い境界が選択される。

d)

残りの境界スタイルの“border-width”が同じである場合,スタイルの優先順位は,高い方から,

“double”

“solid”

“dashed”

“dotted”

“ridge”

“outset”

“groove”

“inset”となる。最も優先順位

が低いのが“inset”である。

e)

境界スタイルで,色だけが異なる場合,セルのスタイル集合は行のスタイル集合に優先し,行グルー

プ,列,列グループ及び表にも優先する。

制約:

表セルは,行進行方向及び列進行方向で,一つ以上の格子単位を占有する。セルの内容長方形のサイズ

は,四方それぞれについて,セルが占有する格子の一部から次を減じたものとなる。

a) border-collapse

特色の値が“separate”である場合,border-separation 特色の値の半分。それ以外の場合

は 0。

b) border-collapse

特色の値が“separate”である場合,セル境界の厚さ。それ以外の場合は,有効な境界

の厚さの半分。

c)

セルのパディング。

格子内のセルのブロック進行寸法を決定するメソッドは,row-height 特色によって決まる。

同じ fo:table-cell フォーマット化オブジェクトが返す正規の子領域が一つより多く存在する領域はない。

fo:table-cell フォーマット化オブジェクトが返す各正規領域の子は,fo:table-cell の子が返す正規ブロック

領域でなければならず,適正にスタックされ,適正に順序付けされなければならない。

fo:table-cell の子が返すすべての行外参照レベル領域は,6.12.2 に示されているとおりに扱われる。

内容:

(%block;)+


164

X 4179

:2010

   

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な相対位置決め特性(7.13

border-after-precedence(7.28.1

border-before-precedence(7.28.2

border-end-precedence(7.28.4

border-start-precedence(7.28.6

block-progression-dimension(7.15.3

column-number(7.28.8

display-align(7.14.4

relative-align(7.14.6

empty-cells(7.28.10

ends-row(7.28.11

height(7.15.6

id(7.30.8

index-class(7.24.1

index-key(7.24.2

inline-progression-dimension(7.15.7

number-columns-spanned(7.28.13

number-rows-spanned(7.28.14

starts-row(7.28.15

width(7.15.14

6.8 

リストのためのフォーマット化オブジェクト 

6.8.1 

導入 

リストの構築に使用されるフォーマット化オブジェクトは,fo:list-block,fo:list-item,fo:list-item-label

及び fo:list-item-body の四つである。


165

X 4179

:2010

図 6.11−リスト対応のフォーマット化オブジェクトの木表現 

fo:list-block には,完全なリストを包含し,行内進行方向でリストの幾何形状に使用される値を指定する

役割がある。詳細は後に示す。

fo:list-block の子は一つ以上の fo:list-item であり,それぞれに fo:list-item-label 及び fo:list-item-body のペ

アが包含される。

fo:list-item には,リスト内の各項目を包含する役割がある。

fo:list-item-label には,リスト項目のラベルの内容,ブロックレベルフォーマット化オブジェクトを包含

する役割がある。通常は,数字,記号又は用語を包含する fo:block を包含する。

fo:list-item-body には,リスト項目の本体の内容,ブロックレベルフォーマット化オブジェクトを包含す

る役割がある。通常は,一つ以上の fo:block を包含する。

ブロック進行方向で,本体に関連してラベルを配置する場合は,fo:list-item の“vertical-align”特性に従

って行われる。

図 6.12−リストによって生成される領域


166

X 4179

:2010

   

行内進行方向におけるリストの幾何形状の規定の達成方法を,次に示す。

a)

“provisional-distance-between-starts”及び“provisional-label-separation”特性の適切な値を指定する。

“provisional-distance-between-starts”特性は,ラベルの開始字下げとリスト項目の本体との間に望まし

い距離を指定する。

“provisional-label-separation”は,ラベルの字上げとリスト項目の本体の字下げと

の間に望ましい距離を指定する。

b) fo:list-item-label

で end-indent="label-end()"を指定する。

fo:list-item-body で start-indent="body-start()"を指定する。

注記  これらのリスト固有の関数は,7.30.11 及び 7.30.12 に定義される。

リスト項目ラベルの開始字下げ及びリスト項目本体の終了字下げは,必要なときは,通常は長さとして

指定される。

6.8.1.1 

 

6.8.1.1.1 

列挙リスト 

リスト項目は,

“ol”要素に包含される。項目は“item”要素に包含され,段落とは全く異なるテキスト

を包含する。

スタイルは,文字の後にドットをつけて,アルファベット順に項目を列挙するものである。

入力サンプル:

<ol>

<item>List item 1.</item>

<item>List item 2.</item>

<item>List item 3.</item>

</ol>

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="ol">

  <fo:list-block provisional-distance-between-starts="15mm"

   provisional-label-separation="5mm">

    <xsl:apply-templates/>

  </fo:list-block>

</xsl:template>

<xsl:template match="ol/item">

  <fo:list-item>

    <fo:list-item-label start-indent="5mm" end-indent="label-end()">

      <fo:block>

                <xsl:number format="a."/>

            </fo:block>


167

X 4179

:2010

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>

        <xsl:apply-templates/>

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:list-block provisional-distance-between-starts="15mm"

  provisional-label-separation="5mm">

  <fo:list-item>

    <fo:list-item-label start-indent="5mm" end-indent="label-end()">

      <fo:block>a.

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>List item 1.

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label start-indent="5mm" end-indent="label-end()">

      <fo:block>b.

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>List item 2.

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label start-indent="5mm" end-indent="label-end()">

      <fo:block>c.

            </fo:block>


168

X 4179

:2010

   

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>List item 3.

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

</fo:list-block>

6.8.1.1.2 HTML

スタイル“dl”リスト 

この例では,スタイルシートは HTML スタイルの“dl”リストを処理し,

“dt”要素及び“dd”要素のラ

ップされないペアを包含し,それらを fo:list-block に変換する。

“dt”及び“dd”のペアが平衡する場合は,fo:list-item に変換する。

“dt”及び“dd”が平衡しない場合

は,スタイルシートは次を試行する。

a)

複数の“dt”は,互いにグループ化されて,単一のリスト項目内の単一の fo:list-item-label となる。

b)

複数の“dd”は,次となる。

1)

スタイルシートの変数$allow-naked-dd が true である場合,リスト項目ラベルが空である個々の FO

リスト項目としての出力。

2) $allow-naked-dd

が false である場合,単一の FO リスト項目本体に互いにグループ化される。

言い換えれば次の構造となる。

<doc>

<dl>

  <dt>term</dt>

  <dd>definition</dd>

  <dt>term</dt>

  <dt>term</dt>

  <dd>definition</dd>

  <dt>term</dt>

  <dd>definition</dd>

  <dd>definition</dd>

</dl>

</doc>

$allow-naked-dd が true である場合の結果インスタンス: fo 名前空間内の要素及び属性は,次となる。

<fo:list-block provisional-distance-between-starts="35mm"

  provisional-label-separation="5mm">

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">


169

X 4179

:2010

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

      <fo:block>term

            </fo:block>

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

</fo:list-block>

$allow-naked-dd が false である場合の結果インスタンス: fo 名前空間内の要素及び属性は,次となる。

<fo:list-block provisional-distance-between-starts="35mm"

  provisional-label-separation="5mm">

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">


170

X 4179

:2010

   

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

      <fo:block>term

            </fo:block>

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

  <fo:list-item>

    <fo:list-item-label end-indent="label-end()">

      <fo:block>term

            </fo:block>

    </fo:list-item-label>

    <fo:list-item-body start-indent="body-start()">

      <fo:block>definition

            </fo:block>

      <fo:block>definition

            </fo:block>

    </fo:list-item-body>

  </fo:list-item>

</fo:list-block>

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:include href="dtdd.xsl"/>


171

X 4179

:2010

<xsl:template match="doc">

  <xsl:apply-templates/>

</xsl:template>

<xsl:template match="dl">

  <xsl:call-template name="process.dl"/>

</xsl:template>

<xsl:template match="dt|dd">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

</xsl:stylesheet>

取り込まれるスタイルシート“dtdd.xsl”

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:variable name="allow-naked-dd" select="true()"/>

<xsl:template name="process.dl">

  <fo:list-block provisional-distance-between-starts="35mm"

   provisional-label-separation="5mm">

        <xsl:choose>

      <xsl:when test="$allow-naked-dd">

        <xsl:call-template name="process.dl.content.with.naked.dd"/>

            </xsl:when>

            <xsl:otherwise>

        <xsl:call-template name="process.dl.content"/>

            </xsl:otherwise>

        </xsl:choose>

  </fo:list-block>

</xsl:template>

<xsl:template name="process.dl.content.with.naked.dd">

  <xsl:param name="dts" select="./force-list-to-be-empty"/>


172

X 4179

:2010

   

  <xsl:param name="nodes" select="*"/>

  <xsl:choose>

    <xsl:when test="count($nodes)=0">

            <!-- Out of nodes, output any pending DTs -->

      <xsl:if test="count($dts)>0">

        <fo:list-item>

          <fo:list-item-label end-indent="label-end()">

            <xsl:apply-templates select="$dts"/>

          </fo:list-item-label>

          <fo:list-item-body start-indent="body-start()"/>

        </fo:list-item>

            </xsl:if>

        </xsl:when>

    <xsl:when test="name($nodes[1])='dd'">

            <!-- We found a DD, output the DTs and the DD -->

      <fo:list-item>

        <fo:list-item-label end-indent="label-end()">

                    <xsl:apply-templates select="$dts"/>

        </fo:list-item-label>

        <fo:list-item-body start-indent="body-start()">

          <xsl:apply-templates select="$nodes[1]"/>

        </fo:list-item-body>

      </fo:list-item>

      <xsl:call-template name="process.dl.content.with.naked.dd">

        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>

      </xsl:call-template>

        </xsl:when>

    <xsl:when test="name($nodes[1])='dt'">

            <!-- We found a DT, add it to the list of DTs and loop -->

      <xsl:call-template name="process.dl.content.with.naked.dd">

        <xsl:with-param name="dts" select="$dts|$nodes[1]"/>

        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>

      </xsl:call-template>

        </xsl:when>

    <xsl:otherwise>

      <!-- This shouldn't happen -->


173

X 4179

:2010

            <xsl:message>

        <xsl:text>DT/DD list contained something bogus (</xsl:text>

                <xsl:value-of select="name($nodes[1])"/>

        <xsl:text>).</xsl:text>

            </xsl:message>

        </xsl:otherwise>

  </xsl:choose>

</xsl:template>

<xsl:template name="process.dl.content">

  <xsl:param name="dts" select="./force-list-to-be-empty"/>

  <xsl:param name="dds" select="./force-list-to-be-empty"/>

  <xsl:param name="output-on"></xsl:param>

  <xsl:param name="nodes" select="*"/>

    <!-- The algorithm here is to build up a list of DTs and DDs, -->

    <!-- outputing them only on the transition from DD back to DT -->

  <xsl:choose>

    <xsl:when test="count($nodes)=0">

            <!-- Out of nodes, output any pending elements -->

      <xsl:if test="count($dts)>0 or count($dds)>0">

        <fo:list-item>

          <fo:list-item-label end-indent="label-end()">

            <xsl:apply-templates select="$dts"/>

          </fo:list-item-label>

          <fo:list-item-body start-indent="body-start()">

            <xsl:apply-templates select="$dds"/>

          </fo:list-item-body>

        </fo:list-item>

            </xsl:if>

        </xsl:when>

    <xsl:when test="name($nodes[1])=$output-on">

      <!-- We're making the transition from DD back to DT -->

      <fo:list-item>

        <fo:list-item-label end-indent="label-end()">

                    <xsl:apply-templates select="$dts"/>

        </fo:list-item-label>

        <fo:list-item-body start-indent="body-start()">


174

X 4179

:2010

   

          <xsl:apply-templates select="$dds"/>

        </fo:list-item-body>

      </fo:list-item>

            <!-- Reprocess this node (and the rest of the node list) -->

      <!-- resetting the output-on state to nil -->

      <xsl:call-template name="process.dl.content">

        <xsl:with-param name="nodes" select="$nodes"/>

      </xsl:call-template>

        </xsl:when>

    <xsl:when test="name($nodes[1])='dt'">

            <!-- We found a DT, add it to the list and loop -->

      <xsl:call-template name="process.dl.content">

        <xsl:with-param name="dts" select="$dts|$nodes[1]"/>

        <xsl:with-param name="dds" select="$dds"/>

        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>

      </xsl:call-template>

        </xsl:when>

    <xsl:when test="name($nodes[1])='dd'">

            <!-- We found a DD, add it to the list and loop, noting that -->

            <!-- the next time we cross back to DT's, we need to output the -->

      <!-- current DT/DDs. -->

      <xsl:call-template name="process.dl.content">

        <xsl:with-param name="dts" select="$dts"/>

        <xsl:with-param name="dds" select="$dds|$nodes[1]"/>

        <xsl:with-param name="output-on">dt</xsl:with-param>

        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>

      </xsl:call-template>

        </xsl:when>

    <xsl:otherwise>

      <!-- This shouldn't happen -->

            <xsl:message>

        <xsl:text>DT/DD list contained something bogus (</xsl:text>

                <xsl:value-of select="name($nodes[1])"/>

        <xsl:text>).</xsl:text>

            </xsl:message>

        </xsl:otherwise>


175

X 4179

:2010

  </xsl:choose>

</xsl:template>

</xsl:stylesheet>

“dtdd.xsl”スタイルシートを次の方法でカスタマイズしてもよい。

a) $allow-naked-dd

の値を設定して,平衡しない“dd”の処理を制御する。

b)

“dt”をリスト内の用語である要素の名前に変換する。

c)

“dd”をリスト内の定義である要素の名前に変換する。

d)

万一,文書が“force-list-to-be-empty”と名前付けされた要素を包含する場合には,その要素名を文書

で使用されていない名前に変換するのが望ましい。

“dtdd.xsl”スタイルシートを使用するスタイルシートでは,

“dl”をリストのラッパである要素の名前に

変換する。

6.8.2 fo:list-block 

一般的な使用法:

fo:list-block 流し込みオブジェクトは,リストをフォーマットするために使用される。

領域:

fo:list-block フォーマット化オブジェクトは,一つ以上の正規ブロック領域を生成する。fo:list-block は,

これらの領域,任意の行外ページレベル領域及び fo:list-block の子が返す任意の行外参照レベル領域を返す。

制約:

同じ fo:list-block フォーマット化オブジェクトが返す正規の子領域が一つより多く存在する領域はない。

fo:list-block フォーマット化オブジェクトが返す各正規領域の子は,fo:list-block の子が返す正規ブロック

領域でなければならず,適正にスタックされ,適正に順序付けされなければならない。

内容:

(list-item+)

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11

一般的な相対位置決め特性(7.13

break-after(7.20.1

break-before(7.20.2

clear(7.19.1

id(7.30.8

index-class(7.24.1

index-key(7.24.2

intrusion-displace(7.19.3


176

X 4179

:2010

   

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

provisional-distance-between-starts(7.30.12

provisional-label-separation(7.30.11

6.8.3 fo:list-item 

一般的な使用法:

fo:list-item フォーマット化オブジェクトは,リストの項目のラベル及び本体を包含する。

領域:

fo:list-item フォーマット化オブジェクトは,一つ以上の正規ブロック領域を生成する。fo:list-item は,こ

れらの領域,任意の行外ページレベル領域及び fo:list-item の子が返す任意の行外参照レベル領域を返す。

制約:

同じ fo:list-item フォーマット化オブジェクトが返す正規の子領域が一つより多く存在する領域はない。

fo:list-block フォーマット化オブジェクトが返す各正規領域の子は,fo:list-item-label 及び fo:list-item-body

流し込みオブジェクトが返す正規ブロック領域でなければならず,

適正に順序付けされなければならない。

fo:list-item-label が返す正規ブロック領域は,適正にスタックされなければならず,fo:list-item-body が返す

正規ブロック領域も,適正にスタックされなければならない。

fo:list-item-label 及び fo:list-item-body オブジェクトが fo:list-block フォーマット化オブジェクトを返す場

合に,fo:list-block フォーマット化オブジェクトが返す各正規領域の子は,relative-align 特色に従って,ブ

ロック進行方向で互いに関連して配置付けされる。

行内進行方向では,これらの領域は,領域が適正にスタックされる通常の方法で,配置付けされる。領

域の内容長方形が重なる場合は,誤りである。

fo:list-item が生成する領域の内容長方形のブロック進行寸法は,そのすべての子領域の割付け長方形が

中に丁度包含される大きさである。特に,子領域の space-before 及び space-after は,リスト項目の間隔に影

響を及ぼさない。ブロックスタック化制約の目的によって,fo:list-item が生成する領域は,先行フェンス

及び後続フェンスが存在するものとして取り扱われる。

注記  これらの領域は参照領域ではなく,そのため,その領域内のすべてのオブジェクトの字下げは,

fo:list-block の内容を保持する参照領域に相対して調整される。 

内容:

(list-item-label,list-item-body)

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的なブロックレベルのマージン特性(7.11

一般的な相対位置決め特性(7.13

break-after(7.20.1

break-before(7.20.2


177

X 4179

:2010

id(7.30.8

index-class(7.24.1

index-key(7.24.2

intrusion-displace(7.19.3

keep-together(7.20.3

keep-with-next(7.20.4

keep-with-previous(7.20.5

relative-align(7.14.6

6.8.4 fo:list-item-body 

一般的な使用法:

fo:list-item-body フォーマット化オブジェクトは,リスト項目の本体の内容を包含する。

領域:

fo:list-item-body フォーマット化オブジェクトは,どのような領域も生成しない。fo:list-item-body フォー

マット化オブジェクトが返すのは,fo:list-item-body の各子が返す領域のシーケンスを連結して生成される

領域のシーケンスである。

制約:

fo:list-item-body の子が返す領域のシーケンスの連結の順序は,fo:list-item-body の下で子が順序付けされ

る順序と同じである。

内容:

(%block;)+

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-together(7.20.3

6.8.5 fo:list-item-label 

一般的な使用法:

fo:list-item-label フォーマット化オブジェクトは,リスト項目のラベルの内容を包含し,通常はリスト項

目の本体の列挙,識別,装飾のいずれかに使用される。

領域:

fo:list-item-label フォーマット化オブジェクトは,どのような領域も生成しない。fo:list-item-label フォー

マット化オブジェクトが返すのは,fo:list-item-label の各子が返す領域のシーケンスを連結して生成される

領域のシーケンスである。

制約:

fo:list-item-label の子が返す領域のシーケンスの連結の順序は,fo:list-item-label の下で子が順序付けされ

る順序と同じである。


178

X 4179

:2010

   

内容:

(%block;)+

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

id(7.30.8

index-class(7.24.1

index-key(7.24.2

keep-together(7.20.3

6.9 

動的な効果−リンク及び多重フォーマット化オブジェクト 

6.9.1 

導入 

動的な効果とは,利用者エージェントの状態を含む利用者の処理が,一部の文書の振る舞い及び/又は

表現にどのような影響を及ぼすことができるかをいい,ここで規定するフォーマット化オブジェクトによ

って実現可能となる。

a)

単方向単ターゲットリンク。

b)

複数のフォーマット化オブジェクト部分木の表示間を切り換える能力。展開可能及び縮退可能な目次,

アイコン,完全な表,図形などにこれを使用することができる。

c) color

,font-weight など様々な特性値間を切り換える能力で,

“吹出し”など,利用者エージェントの状

態に依存する。

fo:multi-switch,fo:multi-case 及び fo:multi-toggle の三つのフォーマット化オブジェクトを使用することに

よって,部分木間の切換えが可能となる。結果木構造を

図 6.13 に示す。

図 6.13−マルチフォーマット化オブジェクトの木表現 

fo:multi-switch の役割は,それぞれが部分木を一つ包含する fo:multi-case フォーマット化オブジェクトを

ラップすることである。各部分木には,fo:multi-case フォーマット化オブジェクトの名前がある。クリッ

クとして実装されるなど,fo:multi-toggle を活性化することによって,名前付けされた部分木,その前の部

分木,その次の部分木又は“どのような”部分木でも表示することができる。これらは,

“switch-to”特性

によって制御される。

“どのような”部分木を表示する場合でも,実装は,通常,fo:multi-case の“case-title”


179

X 4179

:2010

特性を使用してそれぞれラベル付けされた選択のリストを表示することになる。最初に表示された部分木

は,fo:multi-case の“starting-state”特性によって制御される。

fo:multi-properties フォーマット化オブジェクト,fo:multi-property-set フォーマット化オブジェクト及び

merge-property-values()  関数を使用することによって,様々な特性値間を切り換えることができる。例えば,

fo:multi-property-set を使用すると,active-state 特性値のうち,候補となる各値に様々な特性を指定すること

ができ,merge-property-values()  関数を使用すると,それらに所定のフォーマット化オブジェクトを適用す

ることができる。

6.9.1.1 

 

6.9.1.1.1 

展開可能及び縮退可能な目次 

入力サンプル:

<doc>

  <chapter><title>Chapter</title>

        <p>Text</p>

    <section><title>Section</title>

        <p>Text</p>

        </section>

    <section><title>Section</title>

        <p>Text</p>

        </section>

  </chapter>

  <chapter><title>Chapter</title>

        <p>Text</p>

    <section><title>Section</title>

        <p>Text</p>

        </section>

    <section><title>Section</title>

        <p>Text</p>

        </section>

  </chapter>

</doc>

この例では,章及び節のタイトルは,結果の前に配置される目次に取り出される。章のタイトルの前に

は,縮退状態又は展開状態のいずれかを示すアイコンがある。節のタイトルが現れるのは,展開状態の場

合に限られる。さらに,目次のタイトルから文書の本体の対応するタイトルにリンクすることができる。

二つの状態は,各状態に fo:multi-case を指定する fo:multi-switch を各章のタイトルに使用することによっ

て実現される。

“switch-to”特性がその他の状態を選択するために,アイコンには,適切な fo:multi-case を

伴う fo:multi-toggle が含まれる。

目次内のリンクは,文書の本体のタイトルテキスト上に一意の id を追加し,その id を参照する

fo:basic-link の目次のタイトルテキストをラップすることによって実現される。


180

X 4179

:2010

   

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="doc">

    <!-- create the table of contents -->

  <xsl:apply-templates select="chapter/title" mode="toc"/>

    <!-- do the document -->

  <xsl:apply-templates/>

</xsl:template>

<xsl:template match="chapter/title" mode="toc">

  <fo:multi-switch>

    <fo:multi-case case-name="collapsed" case-title="collapsed"

    starting-state="show">

      <fo:block>

        <fo:multi-toggle switch-to="expanded">

                    <fo:external-graphic href="plus-icon.gif"/>

                </fo:multi-toggle>

        <fo:basic-link internal-destination="{generate-id(.)}">

          <xsl:number level="multiple" count="chapter" format="1. "/>

          <xsl:apply-templates mode="toc"/>

                </fo:basic-link>

            </fo:block>

        </fo:multi-case>

    <fo:multi-case case-name="expanded" case-title="expanded"

    starting-state="hide">

      <fo:block>

        <fo:multi-toggle switch-to="collapsed">

                    <fo:external-graphic href="minus-icon.gif"/>

                </fo:multi-toggle>

        <fo:basic-link internal-destination="{generate-id(.)}">

          <xsl:number level="multiple" count="chapter" format="1. "/>

          <xsl:apply-templates mode="toc"/>

                </fo:basic-link>

            </fo:block>

      <xsl:apply-templates select="../section/title" mode="toc"/>

        </fo:multi-case>


181

X 4179

:2010

  </fo:multi-switch>

</xsl:template>

<xsl:template match="section/title" mode="toc">

  <fo:block start-indent="10mm">

    <fo:basic-link internal-destination="{generate-id(.)}">

      <xsl:number level="multiple" count="chapter|section" format="1.1 "/>

      <xsl:apply-templates/>

    </fo:basic-link>

  </fo:block>

</xsl:template>

<xsl:template match="chapter/title">

  <fo:block id="{generate-id(.)}">

    <xsl:number level="multiple" count="chapter" format="1. "/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="section/title">

  <fo:block id="{generate-id(.)}">

    <xsl:number level="multiple" count="chapter|section" format="1.1 "/>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

<xsl:template match="p">

  <fo:block>

    <xsl:apply-templates/>

  </fo:block>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:multi-switch>

    <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show">

    <fo:block>

      <fo:multi-toggle switch-to="expanded">

        <fo:external-graphic href="plus-icon.gif">

                </fo:external-graphic>


182

X 4179

:2010

   

            </fo:multi-toggle>

      <fo:basic-link internal-destination="N4">1. Chapter

            </fo:basic-link>

        </fo:block>

  </fo:multi-case>

    <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide">

    <fo:block>

      <fo:multi-toggle switch-to="collapsed">

        <fo:external-graphic href="minus-icon.gif">

                </fo:external-graphic>

            </fo:multi-toggle>

      <fo:basic-link internal-destination="N4">1. Chapter

            </fo:basic-link>

        </fo:block>

    <fo:block start-indent="10mm">

      <fo:basic-link internal-destination="N11">1.1 Section

            </fo:basic-link>

        </fo:block>

    <fo:block start-indent="10mm">

      <fo:basic-link internal-destination="N19">1.2 Section

            </fo:basic-link>

        </fo:block>

  </fo:multi-case>

</fo:multi-switch>

<fo:multi-switch>

    <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show">

    <fo:block>

      <fo:multi-toggle switch-to="expanded">

        <fo:external-graphic href="plus-icon.gif">

                </fo:external-graphic>

            </fo:multi-toggle>

      <fo:basic-link internal-destination="N28">2. Chapter

            </fo:basic-link>

        </fo:block>

  </fo:multi-case>

    <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide">

    <fo:block>

      <fo:multi-toggle switch-to="collapsed">

        <fo:external-graphic href="minus-icon.gif">

                </fo:external-graphic>


183

X 4179

:2010

            </fo:multi-toggle>

      <fo:basic-link internal-destination="N28">2. Chapter

            </fo:basic-link>

        </fo:block>

    <fo:block start-indent="10mm">

      <fo:basic-link internal-destination="N35">2.1 Section

            </fo:basic-link>

        </fo:block>

    <fo:block start-indent="10mm">

      <fo:basic-link internal-destination="N43">2.2 Section

            </fo:basic-link>

        </fo:block>

  </fo:multi-case>

</fo:multi-switch>

<fo:block id="N4">1. Chapter

</fo:block>

<fo:block>Text

</fo:block>

<fo:block id="N11">1.1 Section

</fo:block>

<fo:block>Text

</fo:block>

<fo:block id="N19">1.2 Section

</fo:block>

<fo:block>Text

</fo:block>

<fo:block id="N28">2. Chapter

</fo:block>

<fo:block>Text

</fo:block>

<fo:block id="N35">2.1 Section

</fo:block>

<fo:block>Text

</fo:block>

<fo:block id="N43">2.2 Section

</fo:block>

<fo:block>Text

</fo:block>


184

X 4179

:2010

   

6.9.1.1.2 

活性状態ベースの XLink のスタイル化 

入力サンプル:

<p>Follow this <xlink:mylink xmlns:xlink="http://www.w3.org/1999/xlink"

                xlink:href="http://www.w3.org/TR"

        xlink:title="An Example"

                xlink:show="new"

        xlink:actuate="onRequest">link</xlink:mylink> to access all

TRs of the W3C.</p>

この例では,fo:basic-link が一連の fo:multi-property-set 及び fo:basic-link を囲むラッパを包含する。この

場合,一連の fo:multi-property-set は,活性状態に依存する様々な色又はテキスト装飾を指定し,ラッパは,

適切な fo:multi-property-set の特性をもつ fo:multi-properties の特性の併合に使用できる。

XSL スタイルシート:

<?xml version='1.0'?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

                xmlns:fo="http://www.w3.org/1999/XSL/Format"

                                version='1.0'>

<xsl:template match="p">

    <fo:block>

        <xsl:apply-templates/>

        </fo:block>

</xsl:template>

<xsl:template match="xlink:mylink" xmlns:xlink="http://www.w3.org/1999/xlink">

    <xsl:variable name="show"><xsl:value-of select="@xlink:show"/>

        </xsl:variable>

     <fo:multi-properties text-decoration="underline">

        <fo:multi-property-set active-state="link" color="blue"/>

        <fo:multi-property-set active-state="visited" color="red"/>

        <fo:multi-property-set active-state="active" color="green"/>

        <fo:multi-property-set active-state="hover" text-decoration="blink"/>

        <fo:multi-property-set active-state="focus" color="yellow"/>

        <fo:wrapper color="merge-property-values()"

                                        text-decoration="merge-property-values()">

              <fo:basic-link external-destination="http://www.w3.org/TR"

                                                            show-destination="{$show}">

                                    <xsl:attribute name="role">

                                            <xsl:value-of select="@xlink:title"/>

                                    </xsl:attribute>

                                    <xsl:apply-templates/>


185

X 4179

:2010

                            </fo:basic-link>

                </fo:wrapper>

            </fo:multi-properties>

</xsl:template>

</xsl:stylesheet>

結果インスタンス: fo 名前空間内の要素及び属性

<fo:block>Follow this

  <fo:multi-properties text-decoration="underline">

    <fo:multi-property-set active-state="link" color="blue">

    </fo:multi-property-set>

    <fo:multi-property-set active-state="visited" color="red">

    </fo:multi-property-set>

    <fo:multi-property-set active-state="active" color="green">

    </fo:multi-property-set>

    <fo:multi-property-set active-state="hover" text-decoration="blink">

    </fo:multi-property-set>

    <fo:multi-property-set active-state="focus" color="yellow">

    </fo:multi-property-set>

    <fo:wrapper color="merge-property-values()"

      text-decoration="merge-property-values()">

      <fo:basic-link external-destination="http://www.w3.org/TR"

                show-destination="new" role="An Example">link

            </fo:basic-link>

        </fo:wrapper>

    </fo:multi-properties> to access all

TRs of the W3C.

</fo:block>

6.9.2 fo:basic-link 

一般的な使用法:

fo:basic-link は,単純な単方向単ターゲットリンクの開始資源を表示するために使用される。オブジェク

トを使用すると,通常,包含する任意の領域をクリックすることによって,リンク先の資源をたどること

ができる。

領域:

fo:basic-link フォーマット化オブジェクトは,一つ以上の正規行内領域を生成する。fo:basic-link は,任

意の正規ブロック領域,行外ページレベル領域,及び fo:basic-link の子が返す行外参照レベルとともに,

これらの領域を返す。

注記 fo:basic-link を fo:block 内に囲むと,ディスプレイ領域を生成することができる。


186

X 4179

:2010

   

制約:

external-destination 及び internal-destination 特性のいずれか一つが指定されるのが望ましい。両方共指定さ

れた場合は,システムは誤りとして報告するか,internal-destination 特性を使用する。

同じ fo:basic-link フォーマット化オブジェクトが返す正規の子領域を一つより多くもつ領域はない。

fo:basic-link が返す各正規領域の子は,4.7.3 で指定されている制約を満たさなければならない。

内容:

(#PCDATA|%inline;|%block;)*

さらに,このフォーマット化オブジェクトは,0 個以上の fo:marker のシーケンスをその最初の子として

もってもよい。

このフォーマット化オブジェクトに適用される特性:

一般的なアクセス性特性(7.5

一般的な聴覚特性(7.7

一般的な境界特性,パディング特性及び背景特性(7.8

一般的な行内レベルのマージン特性(7.12

一般的な相対位置決め特性(7.13

alignment-adjust(7.14.1

alignment-baseline(7.14.2