# FOP Implementation of Layout Formatting Objects

This table displays information concerning FOP implementation of XSL formatting objects of the layout type.

The category classes refer to the XSL specification notation

%block;
and
%inline;
. These classifications are rather less useful in practical terms than one might initially suppose.

The Base Class of each object is the FOP implementation class.

The Spec Content is the BNF grammar describing the content of each FO, as taken from the XSL specification.

The Breaks and Keeps describes what breaks and keeps apply to each FO. All means all breaks and keeps, All Keeps indicates that

keep-together
,
keep-with-next
, and
keep-with-previous
all apply. The abbreviations
kt
,
kwn
, and
kwp
specify individual keep properties.

The information on generated areas describes what type of areas are generated by a given FO, how many there are, whether or not they are reference areas, and what FOP area class is being used for layout. In some cases content is laid-out into the parent area; in others, the content is laid-out in new areas that are constructed as required, then added to the parent area - this is also noted in the table. In practise, we should see that FOs that do not generate areas should layout into the parent.

The Name, Spec Content, and Breaks & Keeps information is definite. The type and multiplicity of generated areas is definite, as well as whether the generated areas are reference areas or not. The BaseClass and the layout area information is FOP-implementation dependent.

Note: Numbers in parentheses refer to Notes. A * after an FO name indicates that the object is not yet implemented.

block
FObjMixed
(#PCDATA|%inline;|%block;)*
normal block 1..* BlockArea
All (2)
block-container
FObj
(%block;)+
viewport/ref block 1..* AreaContainer
All
table-and-caption
FObj (1)
(table-caption?,table)
normal block 1..* AreaContainer
All keeps
table
FObj
(table-column*,table-header?, table-footer?,table-body+)
normal block 1..* AreaContainer
All
list-block
FObj
(list-item+)
normal block 1..* BlockArea
All
bidi-override
FObjMixed (1)
(#PCDATA|%inline;|%block;)*
normal inline 1..*
character
FObj
EMPTY
normal inline 1 BlockArea
kwn, kwp
external-graphic
FObj
EMPTY
viewport/ref inline 1 ImageArea
kwn, kwp
initial-property-set
FObj (1)
EMPTY
instream-foreign-object
FObj
XML
viewport/ref inline 1 ForeignObjectArea
kwn, kwp
inline
FObjMixed
(#PCDATA|%inline;|%block;)*
normal inline 1..* Area
All keeps
inline-container
FObj (1)
(%block;)+
viewport/ref inline 1..*
All keeps
leader
FObjMixed
(#PCDATA|%inline;)*
normal inline 1 BlockArea
page-number
FObj
EMPTY
normal inline 1 BlockArea (4)
kwn, kwp
page-number-citation
FObj
EMPTY
normal inline 1 BlockArea (4)
kwn, kwp
basic-link
FObjMixed
(#PCDATA|%inline;|%block;)*
normal inline 1..* Area (4)
All keeps
list-item-body
FObj
(%block;)+
None None Area
kt
list-item
FObj
(list-item-label,list-item-body)
normal block 1..* BlockArea
All
list-item-label
FObj
(%block;)*
None None Area
kt
table-body
FObj
(table-row+|table-cell+)
None None AreaContainer (3)
table-caption
FObj (1)
(%block;)+
normal block 1..*
kt
table-cell
FObj
(%block;)+
normal block 1..* AreaContainer
table-column
FObj
EMPTY
table-footer
TableBody
(table-row+|table-cell+)
None None AreaContainer (3)
table-header
TableBody
(table-row+|table-cell+)
None None AreaContainer (3)
table-row
FObj
(table-cell+)
All

not yet implemented; suggested base class

also widows & orphans

This is being generated in FOP, but an fo:table-body, or fo:table-header, or fo:table-footer, generate no areas.

Should generate an area.