AH Formatter / XSL Formatter
Q&A



XSLT/XSL-FO/MathML テクニック

マージン/インデント

トップ
基本・一般
AH Formatter について
XSL Formatter について
操作方法
プログラミング
XSLT/XSL-FO/SVG/MathML 仕様について
XSLT/XSL-FO/MathML テクニック
索引
Q.  blockに'margin-left'プロパティを使用してインデントを付けたのですが、このblockの子要素のテーブル内までインデントされてしまいました。なぜですか。 [No.2002101806]
A. 

これは継承によるものです。 W3Cの勧告では、親要素にて指定されたプロパティが子要素にまで影響するプロパティがあります。これを「継承」と言っています。

'margin-left'プロパティは本来継承されないプロパティです。ただし margin-left は start-indent に変換されて処理されることになっていて、 start-indent の方が継承されるプロパティとなっています。

start-indent = margin-corresponding + padding-corresponding + border-corresponding-width
end-indent = margin-corresponding + padding-corresponding + border-corresponding-width

W3CのXSL-FO仕様の勧告5.3.2 Margin, Space, and Indent Properties をご覧ください。)

したがって、指定した margin-left は( border、padding が0であるならば) start-indent を指定したのと同じことになり、テーブル内にまで継承されます。

もし、テーブルに start-indent / end-indnet を継承させないようにするためには、 table-body / table-header / table-footer に start-indent="0cm" とすればよいです。


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