AH Formatter / XSL Formatter
Q&A



XSLT/XSL-FO/SVG/MathML 仕様について

XSL-FO

トップ
基本・一般
AH Formatter について
XSL Formatter について
操作方法
プログラミング
XSLT/XSL-FO/SVG/MathML 仕様について
XSLT/XSL-FO/MathML テクニック
索引
Q.  fo:table-cell 内の fo:block に指定したbreak-after="page" が有効になりません。なぜですか。 [No.2004042702]
A. 

FOは以下のようになっていました。

<fo:table-row >
<fo:table-cell >
<fo:block break-after="page">Cell 1</fo:block>
</fo:table-cell>
</fo:table-row>

W3Cの勧告4.8 Keeps and Breaks では、以下のように break-after 条件が定義されています。

A break-after condition depends on the next formatting object in the flow; the condition is satisfied if either there is no such next formatting object, or if the first normal area generated and returned by that formatting object is leading in a context-area.

table-cell 内の最後の FO に指定された break-after="page" の条件を満たすには、flow 内でのその FO の次の FO が存在しないか、次の FO が生成するエリアがページの先頭になればいいということです。cell 内容はそれぞれ独立した flow であると考えられます。したがって、次の FO というのは存在しないので、この break-after 条件は満たされます。

もしこの条件を踏まえなかった場合、以下のようなFOで矛盾が発生することになります。

<fo:table-row >
<fo:table-cell >
<fo:block break-after="page">Cell 1</fo:block>
</fo:table-cell>
<fo:table-cell >
<fo:block >Cell 2</fo:block>
</fo:table-cell>
</fo:table-row>

Copyright © 1999-2011 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.