Formatting Objects
Previous
Table of Contents
Bottom
Next
Quick Table of Contents
Formatting Objects
6.1
Introduction to Formatting Objects
6.2
Formatting Object Content
6.3
Formatting Objects Summary
6.4
Declarations and Pagination and Layout Formatting Objects
6.5
Block-level Formatting Objects
6.6
Inline-level Formatting Objects
6.7
Formatting Objects for Tables
6.8
Formatting Objects for Lists
6.9
Dynamic Effects: Link and Multi Formatting Objects
6.10
Out-of-Line Formatting Objects
6.11
Other Formatting Objects
6 Formatting Objects
6.1 Introduction to Formatting Objects
The refined formatting object tree describes one or more
intended presentations of
the information within this tree. Formatting is the process
which converts the description into a presentation. See
3 Introduction to Formatting
. The presentation
is represented, abstractly, by an area tree, as defined in
the area model. See
4 Area Model
Each possible presentation
is represented by one or more area trees in which the information in
the refined formatting object tree is positioned on a two
and one-half dimensional surface.
There are three kinds of formatting objects: (1) those that generate
areas, (2) those that return areas, but do not generate
them, and (3) those that are used in the generation of
areas. The first and second kinds are typically called
flow objects
. The third kind is either a
layout object
or an
auxiliary
object
. The
kind of formatting object is indicated by the terminology used with
the object. Formatting objects of the first kind are said to "generate
one or more areas". Formatting objects of the second kind are said to
"return one or more areas". Formatting objects of the first kind may
both generate and return areas. Formatting objects of the third kind
are "used in the generation of areas"; that is, they act like
parameters to the generation process.
6.1.1 Definitions Common to Many Formatting Objects
This categorization leads to defining two traits which characterize
the relationship between an area and the formatting objects which
generate and return that area. These traits are
generated-by
and
returned-by
The value of the
generated-by
trait is a
single formatting
object. A formatting object
is defined to
generate
an area
if the semantics of
specify the generation of
one or more areas and
is one of the areas thus
generated, or is a substituted form of one of the areas thus
generated, as specified in section
4.7.2 Line-building
In the case of substituted glyph-areas, the generating formatting
object is deemed to be the formatting object which generated the
glyph-area which comes first in the sequence of substituted
glyph-areas. In the case of an inserted glyph-area (e.g., an
automatically-generated hyphen) the generating formatting object is
deemed to be the generating formatting object of the last glyph-area
preceding the inserted glyph-area in the pre-order
traversal of the area tree.
The value of the
returned-by
trait is a set
of pairs, where each
pair consists of a formatting object and a positive integer. The
integer represents the position of the area in the ordering of all
areas returned by the formatting object.
A formatting object
is defined to
return
the sequence of
areas
, ... if
the pair
,1) is a member of the
returned-by
trait of
, the pair
,2) is a member of the
returned-by
trait of
, the pair
,3) is a member of the
returned-by
trait of
, ...
If an area is a member of the sequence of areas returned by a
formatting object, then either it was generated by the formatting
object or it was a member of the sequence of areas returned by a child
of that formatting object. Not all areas returned by a child of a
formatting object need be returned by that formatting object. A
formatting object may generate an area that has, as some of
its children areas, areas returned by the children of that
formatting
object. These children (in the area tree) of the generated area are
not returned by the formatting object to which they were returned.
A set of nodes in a tree is a
lineage
if:
there is a node
in the set such that all the
nodes in the set are ancestors of
, and
for every node
in the set, if the set contains
an ancestor of
, it also contains the parent of
The set of formatting objects that an area is returned by is a
lineage
Areas returned by a formatting object may be either
normal
or
out-of-line
. Normal areas represent areas in
the
"normal flow
of text"; that is, they become area children of the areas generated by
the formatting object to which they are returned. Normal areas have a
returned-by
lineage of size one. There is
only one kind of normal area.
Out-of-line areas are areas used outside the normal flow of text
either because they are absolutely positioned or they are part of a
float or footnote. Out-of-line areas may have a
returned-by
lineage of size greater than one.
The
area-class
trait indicates which class,
normal or
out-of-line, an area belongs to. For out-of-line areas, it also
indicates the subclass of out-of-line area. The values for this trait
are: "xsl-normal", "xsl-absolute", "xsl-footnote",
"xsl-side-float", or "xsl-before-float".
An area
is normal if and only if the value of the
area-class
trait is
"xsl-normal"; otherwise, the area is an out-of-line
area. (See section
4.2.5 Stacking Constraints
.)
The areas
returned-by
a given formatting object are ordered as
noted above. This ordering defines an ordering on the sub-sequence of
areas that are of a given
area-class
, such as the sub-sequence
of normal areas. An area
precedes an area
in the sub-sequence if
and only if area
precedes area
in the areas
returned-by
the
formatting objects.
reference-area chain
is defined as a sequence
of reference-areas that is either generated by the same formatting
object that is not a page-sequence formatting object, or that consists
of the region reference-areas or normal-flow-reference-areas
(see
6.4.13 fo:region-body
generated using region formatting objects assigned to the same
flow (see
6.4.1.4 Flows and Flow Mapping
).
The reference-areas in the sequence are said
to be "contained" by the reference-area chain, and they have the
same ordering relative to each other in the sequence as they have
in the area tree, using pre-order traversal order of the area tree.
6.2 Formatting Object Content
The content of a formatting object is described using XML
content-model syntax. In some cases additional constraints, not expressible
in XML content models, are given in prose.
The parameter entity, "%block;" in the content models below,
contains the following formatting objects:
block
block-container
table-and-caption
table
list-block
The parameter entity, "%inline;" in the content models below,
contains the following formatting objects:
bidi-override
character
external-graphic
instream-foreign-object
inline
inline-container
leader
page-number
page-number-citation
basic-link
multi-toggle
The following formatting objects are "neutral" containers and
may be used,
provided that the additional constraints listed
under each formatting object are satisfied,
anywhere where #PCDATA, %block;, or %inline; are allowed:
multi-switch
multi-properties
wrapper
retrieve-marker
The following "out-of-line" formatting objects
may be used anywhere where #PCDATA, %block;, or %inline; are allowed
(except as a descendant of any "out-of-line"
formatting object):
float
The following "out-of-line" formatting objects
may be used anywhere where #PCDATA or %inline; are allowed
(except as a descendant of any "out-of-line"
formatting object):
footnote
6.3 Formatting Objects Summary
basic-link
The fo:basic-link is used for representing the start resource of a simple
link.
bidi-override
The fo:bidi-override inline formatting object is used
where it is necessary to override the default
Unicode-bidirectional-algorithm
direction for different (or nested) inline scripts
in mixed-language documents.
block
The fo:block formatting object is commonly used for formatting paragraphs,
titles, headlines, figure and table captions,
etc.
block-container
The fo:block-container flow object is used to
generate a block-level reference-area.
character
The fo:character flow object represents a character that
is mapped to
a glyph for presentation.
color-profile
Used to declare a color profile for a stylesheet.
conditional-page-master-reference
The fo:conditional-page-master-reference is used to identify a
page-master that is to be used when the conditions on its use are
satisfied.
declarations
Used to group global declarations for a stylesheet.
external-graphic
The fo:external-graphic flow object is used for a
graphic where the graphics data resides outside of the
XML result tree in the fo namespace.
float
The fo:float serves two purposes. It can be used so that during the normal
placement of content, some related content is formatted into a separate area
at beginning of the page (or of some following page) where it is available
to be read without immediately intruding on the reader.
Alternatively, it can be used when an area is intended to float
to one side, with normal content flowing alongside.
flow
The content of the fo:flow formatting object is a
sequence of
flow objects that provides the flowing text content that is
distributed into pages.
footnote
The fo:footnote is used to produce a footnote citation and the corresponding footnote.
footnote-body
The fo:footnote-body is used to generate the content of the footnote.
initial-property-set
The fo:initial-property-set specifies formatting properties
for the first line of an fo:block.
inline
The fo:inline formatting object is commonly used for formatting
a portion of text with a background or enclosing it in a border.
inline-container
The fo:inline-container flow object is used to
generate an inline reference-area.
instream-foreign-object
The fo:instream-foreign-object flow object is used for an inline
graphic or other "generic" object
where the object data resides as descendants of the
fo:instream-foreign-object.
layout-master-set
The fo:layout-master-set is a wrapper around all masters used in the
document.
leader
The fo:leader formatting object is used to generate leaders consisting
either of a rule or of a row of a repeating character or cyclically
repeating pattern of characters that may be used for connecting two
text formatting objects.
list-block
The fo:list-block flow object is used to format a list.
list-item
The fo:list-item formatting object contains the label and the
body of an item in a list.
list-item-body
The fo:list-item-body formatting object contains the
content
of the body of a list-item.
list-item-label
The fo:list-item-label formatting object contains the
content
of the label of a list-item; typically used to either enumerate,
identify, or adorn the list-item's body.
marker
The fo:marker is used in conjunction with
fo:retrieve-marker to produce running headers or footers.
multi-case
The fo:multi-case is used to contain (within
an fo:multi-switch) each alternative sub-tree of formatting
objects among which the parent fo:multi-switch will choose
one to show and will hide the rest.
multi-properties
The fo:multi-properties is used to switch between two or more property sets that
are associated with a given portion of content.
multi-property-set
The fo:multi-property-set is used to specify an alternative
set of formatting
properties that, dependent on a User Agent state, are applied to the content.
multi-switch
The fo:multi-switch wraps the specification of
alternative sub-trees of formatting objects (each sub-tree
being within an fo:multi-case), and controls the switching
(activated via fo:multi-toggle) from one alternative to
another.
multi-toggle
The fo:multi-toggle is used within an fo:multi-case to
switch to another
fo:multi-case.
page-number
The fo:page-number formatting object is used to represent
the
current page-number.
page-number-citation
The fo:page-number-citation is used to reference the
page-number for the page containing the first normal
area returned by the cited formatting
object.
page-sequence
The fo:page-sequence formatting object is used to specify how to
create a (sub-)sequence of pages within a document; for example, a
chapter of a report. The content of these pages comes from flow
children of the fo:page-sequence.
page-sequence-master
The fo:page-sequence-master specifies sequences of page-masters
that are used when generating a sequence of pages.
region-after
This region defines
a viewport that is located on the "after" side of fo:region-body
region.
region-before
This region defines
a viewport that is located on the "before" side of fo:region-body
region.
region-body
This region specifies a
viewport/reference pair that is located in the "center" of the
fo:simple-page-master.
region-end
This region defines
a viewport that is located on the "end" side of fo:region-body region.
region-start
This region defines
a viewport that is located on the "start" side of fo:region-body
region.
repeatable-page-master-alternatives
An
fo:repeatable-page-master-alternatives
specifies a sub-sequence consisting of
repeated instances of a set of alternative page-masters.
The number of repetitions may be bounded or
potentially unbounded.
repeatable-page-master-reference
An
fo:repeatable-page-master-reference
specifies a sub-sequence consisting of
repeated instances of a single page-master. The number of repetitions
may be bounded or potentially unbounded.
retrieve-marker
The fo:retrieve-marker is used in
conjunction with fo:marker to produce running headers or footers.
root
The fo:root node is the top node of an XSL result tree.
This tree is composed of formatting objects.
simple-page-master
The fo:simple-page-master is used in the generation of pages and
specifies the geometry of the page. The page may be subdivided into up
to five regions.
single-page-master-reference
An fo:single-page-master-reference specifies a sub-sequence consisting
of a single instance of a single page-master.
static-content
The
fo:static-content formatting object holds a sequence or a
tree of
formatting objects that is to be presented in a single
region
or repeated in like-named regions on one or more pages in the page-sequence.
Its common use is for repeating or running headers and footers.
table
The fo:table flow object is used for formatting the
tabular material
of a table.
table-and-caption
The fo:table-and-caption flow object is used for
formatting a table
together with its caption.
table-body
The fo:table-body formatting object is used to contain
the content
of the table body.
table-caption
The fo:table-caption formatting object
is used to contain block-level formatting objects containing
the caption for the table only when using the fo:table-and-caption.
table-cell
The fo:table-cell formatting object is used to group
content to be
placed in a table cell.
table-column
The fo:table-column formatting object specifies
characteristics
applicable to table cells that have the same column and span.
table-footer
The fo:table-footer formatting object is used to contain
the content
of the table footer.
table-header
The fo:table-header formatting object is used to contain
the content
of the table header.
table-row
The fo:table-row formatting object is used to group
table-cells into
rows.
title
The fo:title formatting object is used to associate a title with a
given page-sequence. This title may be used by an interactive User Agent to
identify the pages. For example, the content of the fo:title can be
formatted and displayed in a "title" window or in a "tool tip".
wrapper
The fo:wrapper formatting object is used to
specify
inherited properties for a group of formatting objects.
It has no additional formatting semantics.
6.4 Declarations and Pagination and Layout Formatting Objects
6.4.1 Introduction
The root node of the formatting object tree must be an
fo:root
formatting object. The children of the fo:root formatting object are
a single fo:layout-master-set, an optional fo:declarations,
and a sequence of one or more
fo:page-sequences. The fo:layout-master-set defines the geometry and
sequencing of the pages; the children of the fo:page-sequences, which
are called
flows
(contained in fo:flow and
fo:static-content), provide the content that is distributed
into the pages. The fo:declarations object is a wrapper for formatting objects
whose content is to be used as a resource to the formatting
process. The process of generating the pages is done automatically
by the XSL processor formatting the result tree.
The children of the fo:layout-master-set are the pagination and layout
specifications. The names of these specifications end in
"-master". There are two types of pagination and layout
specifications: page-masters and page-sequence-masters. Page-masters
have the role of describing the intended subdivisions of a page and
the geometry of these subdivisions. Page-sequence-masters have the
role of describing the sequence of page-masters that will be used to
generate pages during the formatting of an fo:page-sequence.
6.4.1.1 Page-sequence-masters
Each fo:page-sequence-master characterizes a set of possible sequences
of page-masters. For any given fo:page-sequence, only one of the
possible set of sequences will be used. The sequence that is used is
any sequence that satisfies the constraints determined by
the individual page-masters, the flows which generate pages from the
page-masters, and the fo:page-sequence-master itself.
The fo:page-sequence-master is used to determine which page-masters
are used and in which order. The children of the
fo:page-sequence-master are a sequence of sub-sequence specifications.
The page-masters in a sub-sequence may be specified by a reference
to a single page-master or as a repetition of one or more
page-masters. For example, a sequence might begin with several
explicit page-masters and continue with a repetition of some other
page-master (or masters).
The fo:single-page-master-reference is used to specify a sub-sequence
consisting of a single page-master.
There are two ways to specify a sub-sequence that is a repetition. The
fo:repeatable-page-master-reference specifies a repetition of a single
page-master. The fo:repeatable-page-master-alternatives specifies
the repetition of a set of page-masters. Which of the alternative
page-masters is used at a given point in the sub-sequence is
conditional and may depend on whether the page number is odd or even,
is the first page, is the last page, or is blank. The
"maximum-repeats"
property on the repetition specification controls the number of
repetitions. If this property is not specified, there is no limit on
the number of repetitions.
6.4.1.2 Page-masters
A page-master is a master that is
used to generate a
page
. A page is a viewport/reference
pair in which the viewport-area is a child of the area tree
root. A
page-viewport-area
is defined to be the viewport-area of a
page, and a
page-area
is defined to be the unique child of a
page-viewport-area.
The page-viewport-area is defined by the output medium; the page-area
holds the page contents and has the effect of positioning the page
contents on the output medium.
A single page-master may be used multiple times. Each time it is used
it generates a single page; for example, a page-master that is
referenced from an fo:repeatable-page-master-reference will be used
by the fo:page-sequence to generate
one page for each occurrence of the reference in the specified
sub-sequence.
NOTE:
When pages are used with a User Agent such as a Web
browser, it is common that the each document has only one
page. The
viewport used to view the page determines the size of the page. When
pages are placed on non-interactive media, such as sheets of paper,
pages correspond to one or more of the surfaces of the paper. The size
of the paper determines the size of the page.
In this specification, there is only one kind of page-master, the
fo:simple-page-master. Future versions of this specification may add
additional kinds of page-masters.
An fo:simple-page-master has, as children, specifications for one or more
regions.
A region specification is used as a master, the
region-master
in generating viewport/reference pair consisting of a
region-viewport-area
and a
region-reference-area
The region-viewport-area is always a child
of a page-area generated using the parent of the region-master.
NOTE:
The regions on the page are analogous to "frames" in an
HTML document. Typically, at least one of these regions is of
indefinite length in one of its dimensions. For languages with a lr-tb
(or rl-tb) writing-mode, this region is typically of indefinite length
in the top-to-bottom direction. The viewport represents the
visible
part of the frame. The flow assigned to the region is viewed by scrolling
the region reference-area through the viewport.
Each region is defined by a region formatting object. Each
region formatting object has a name and a definite position. In
addition, the region's height or width is fixed and the other
dimension may be either fixed or indefinite. For example, a region
that is the body of a Web page may have indefinite height.
The specification of the region determines the size and position of
region-viewport-areas generated using the region formatting object.
The positioning of the viewport is relative to its page-area parent.
For version 1.0 of this Recommendation, a page-master will
consist of up to five regions: "region-body" and four other regions,
one on each side of the body. To allow the side regions to correspond
to the current writing-mode, these regions are named "region-before"
(which corresponds to "header" in the "lr-tb" writing-mode),
"region-after" (which corresponds to "footer" in the "lr-tb"
writing-mode), "region-start" (which corresponds to a "left-sidebar"
in the "lr-tb" writing-mode) and "region-end" (which corresponds
to a "right-sidebar" in the "lr-tb" writing-mode). It is
expected that a future version of the Recommendation will introduce a
mechanism that allows a page-master to contain an arbitrary number of
arbitrarily sized and positioned regions.
Some types of region have conditional sub-regions associated with them, and the
associated region-reference-areas are divided up by having child areas
corresponding to the sub-regions, including a "main-reference-area" for
the region.
For region-masters to which
the column-count property applies,
the main-reference-area is further subdivided by having child-areas
designated as "span-reference-areas" whose number depends upon the
number of spans (i.e. block-areas with span="all")
occurring on the page. These in turn are subdivided by having
child-areas designated as "normal-flow-reference-areas",
whose number depends on the number of columns specified.
6.4.1.3 Page Generation
Pages are generated by the formatter's processing of fo:page-sequences.
As noted above, each page is a viewport/reference pair in which the
viewport-area is a child of the area tree root. Each page is generated using
a page-master to define the region-viewport-areas
and region-reference-areas that correspond to the regions specified by
that page-master.
Each fo:page-sequence references either an fo:page-sequence-master or
a page-master. If the reference is to a page-master, this is
interpreted as if it were a reference to an fo:page-sequence-master
that repeats the referenced page-master an unbounded number of
times. An fo:page-sequence references a page-master if
either the fo:page-sequence directly references the page-master via
the "master-reference" property or that property references an
fo:page-sequence-master that references the page-master.
6.4.1.4 Flows and Flow Mapping
There are two kinds of
flows
: fo:static-content and fo:flow. An
fo:static-content flow holds content, such as the text that goes
into headers and footers, that is repeated on many of the pages. The
fo:flow flow holds content that is distributed across a sequence of
pages. The processing of the fo:flow flow is what determines how many
pages are generated to hold the fo:page-sequence. The
fo:page-sequence-master is used as the generator of the sequence of
page-masters into which the flow children content is distributed.
The children of a flow are a sequence of block-level flow objects.
Each flow has a name that is given by its "flow-name" property.
No two flows may have the same name.
The assignment of flows to regions on a page-master is determined by
flow-map
. The flow-map is an association
between the flow children of the fo:page-sequence and regions defined
within the page-masters referenced by that fo:page-sequence.
In version 1.0 of this Recommendation, the flow-map is implicit. The
"flow-name" property of a flow specifies to which region
that flow is assigned. Each region has a "region-name"
property. The implicit flow-map assigns a flow to the region that has
the same name. In future versions of XSL, the flow-map is
expected to become an explicit formatting object.
To avoid requiring users to generate region-names, the regions all
have default values for the "region-name" property. The region-body,
region-before, region-after, region-start, and region-end have the
default names "xsl-region-body", "xsl-region-before", "xsl-region-after",
"xsl-region-start", and "xsl-region-end", respectively.
In addition, an fo:static-content formatting object may
have a "flow-name" property value of "xsl-before-float-separator" or
"xsl-footnote-separator". If a conditional sub-region of the
region-body
is used to generate a reference-area on a particular page, the
fo:static-content whose name corresponds to the conditional
sub-region shall be formatted into the reference-area associated
with the sub-region, as specified in section
6.10.1.3 Conditional Sub-Regions
6.4.1.5 Constraints on Page Generation
The areas that are descendants of a page-area are constrained by the
page-master used to generate the page-area and the flows that are assigned
to the regions specified on the page-master. For
fo:flow flows, the areas generated by the descendants of the flow are
distributed across the pages in the sequence that were generated using
page-masters having the region to which the flow is assigned. For
fo:static-content
flows, the processing of the flow is repeated for each page generated
using a page-master having the region to which the flow is assigned
with two exceptions:
for a fo:static-content with a
flow-name
of
xsl-before-float-separator
, the processing
is repeated only for those page-reference-areas which have descendant
areas with an area-class of
xsl-before-float
and for a fo:static-content with a
flow-name
of
xsl-footnote-separator
, the processing
is repeated only for those page-reference-areas which have descendant
areas with an area-class of
xsl-footnote
6.4.1.6 Pagination Tree Structure
The result tree structure is shown below.
[D]
Tree Representation of the Formatting Objects for Pagination
6.4.2 fo:root
Common Usage:
This is the top node of the formatting object tree. It holds an
fo:layout-master-set formatting object (which holds all masters used
in the document), an optional fo:declarations,
and one or more fo:page-sequence objects. Each
fo:page-sequence represents a sequence of pages that result from
formatting the content children of the fo:page-sequence.
NOTE:
A document can contain multiple fo:page-sequences. For example,
each chapter of a document could be a separate fo:page-sequence; this
would allow chapter-specific content, such as the chapter
title, to be placed within a header or footer.
Areas:
Page-viewport-areas are returned by the fo:page-sequence children of the
fo:root formatting object. The fo:root does not generate any areas.
Constraints:
The children of the root of the area tree consist solely of, and totally of, the
page-viewport-areas returned by the fo:page-sequence children of the
fo:root. The set of all areas returned by the fo:page-sequence children
is
properly ordered
. (See Section
4.7.1 General Ordering Constraints
.)
Contents:
layout-master-set
declarations
?,
page-sequence
+)
The following properties apply to this formatting object:
7.25.11 "media-usage"
6.4.3 fo:declarations
Common Usage:
The fo:declarations formatting object is used to group global declarations for a stylesheet.
Areas:
The fo:declarations formatting object does not generate
or return any areas.
Constraints:
None.
Contents:
color-profile
)+
The fo:declarations flow object may have
additional child elements in a non-XSL namespace. Their presence does not,
however, change the semantics of the XSL namespace objects and properties.
The permitted structure of these non-XSL namespace elements is defined for
their namespace(s).
6.4.4 fo:color-profile
Common Usage:
The fo:color-profile formatting object is used to declare
an ICC Color Profile for a stylesheet.
The color-profile is referenced again via the name specified in
the "color-profile-name" property.
The color-profile is identified by the URI specified in the "src"
property value. This URI may identify an internally recognized
color-profile or it may point to a ICC Color Profile encoding
that should be loaded and interpreted.
When the color-profile is referenced (e.g., via the
rgb-icc function
5.10.2 Color Functions
), the following rules are used:
If the color-profile is available, the color value
identified from the color-profile should be used.
If the color-profile is not available,
the sRGB
[sRGB]
) fallback must be used.
Areas:
The fo:color-profile formatting object does not generate
or return any areas.
Constraints:
None.
Contents:
EMPTY
The following properties apply to this formatting object:
7.28.7 "src"
7.17.2 "color-profile-name"
7.17.3 "rendering-intent"
6.4.5 fo:page-sequence
Common Usage:
The fo:page-sequence formatting object is used to specify how to
create a (sub-)sequence of pages within a document; for example, a
chapter of a report. The content of these pages comes from flow
children (consisting of the single fo:flow
and any fo:static-content flow objects)
of the fo:page-sequence. The layout of these pages comes from
the fo:page-sequence-master or page-master
referenced by the
master-reference
trait on the fo:page-sequence. The sequence of areas returned by
each of the flow-object children of the fo:page-sequence are
made descendants of the generated pages as described below.
Areas:
The fo:page-sequence formatting object generates a sequence of
viewport/reference pairs, and returns the page-viewport-areas. For
each page-reference-area, and each region specified in the page-master used to
generate that page-reference-area, the fo:page-sequence object also generates
the viewport/reference pair for the occurrence of that region in that
page-reference-area, and may generate a before-float-reference-area,
footnote-reference-area,
and main-reference-area, and one or more normal-sequence-reference-areas.
The generation of these further areas is described in the descriptions
of the fo:simple-page-master and region-masters.
It may also generate a title-area.
All areas generated by an fo:page-sequence have
area-class "xsl-absolute".
Constraints:
Each page-viewport-area/page-reference-area pair is generated using a
page-master that satisfies the constraints of the page-sequence-master
identified by the
master-reference
trait of the
fo:page-sequence or a page-master that was directly identified by the
master-reference
trait. The
region-viewport-area children of such a page-reference-area must correspond
to the regions that are children of that page-master.
The areas generated by the fo:page-sequence have as their
descendants the areas returned by the flows that are children of the
fo:page-sequence.
The areas returned to the fo:page-sequence by a flow must satisfy four
types of constraints:
Completeness
. All areas returned by formatting object
descendants of the flow children of the fo:page-sequence
become descendants of areas generated by the fo:page-sequence,
with the exception of glyph-areas subject to deletion or substitution as in Sections
4.7.2 Line-building
and
4.7.3 Inline-building
Flow-map association
. All areas returned by flow
children of the fo:page-sequence become
descendants of region-reference-areas generated from column-areas
associated to the flow by the flow-map in effect, except for areas
returned from a fo:static-content with a
flow-name
of
xsl-before-float-separator
or
xsl-footnote-separator
Areas returned from an fo:static-content with a
flow-name
of
xsl-before-float-separator
become children of the
before-float-reference-area of an area associated to an fo:region-body,
following all sibling areas of area-class
xsl-before-float
Areas returned from an fo:static-content with a
flow-name
of
xsl-footnote-separator
become children of the
footnote-reference-area of an area associated to an fo:region-body, preceding
all sibling areas of area-class
xsl-footnote
Area-class association.
Areas returned by flow children of an
fo:page-sequence are distributed as follows: all areas of area-class
xsl-footnote
must be
descendants of a footnote-reference-area; areas of area-class
xsl-before-float
must be descendants of a before-float-reference-area; all
other areas (including
normal areas) must be descendants of a main-reference-area for a region.
Stacking
. The stackable areas of a given class returned
by children of each flow are properly stacked within the appropriate reference-area,
as described above.
If a title-area is generated the following constraints must be
satisfied:
Completeness
. All areas returned by formatting object
descendants of the fo:title child of the fo:page-sequence
become descendants of the title-area generated by the fo:page-sequence,
with the exception of glyph-areas subject to deletion or substitution as in Sections
4.7.2 Line-building
and
4.7.3 Inline-building
Stacking
. The areas returned
by children of the fo:title are properly stacked within the title-area.
The default ordering constraint of section
4.7.1 General Ordering Constraints
does not apply to the
fo:page-sequence. The default ordering constraints apply to the
flow object children inside the single fo:flow;
special ordering constraints apply to the child fo:static-content
objects.
Contents:
title
?,
static-content
*,
flow
The following properties apply to this formatting object:
7.9.1 "country"
7.24.1 "format"
7.9.2 "language"
7.24.4 "letter-value"
7.24.2 "grouping-separator"
7.24.3 "grouping-size"
7.28.2 "id"
7.25.7 "initial-page-number"
7.25.6 "force-page-count"
7.25.9 "master-reference"
6.4.6 fo:layout-master-set
Common Usage:
The fo:layout-master-set is a wrapper around all masters used in the
document. This includes page-sequence-masters, page-masters, and
region-masters.
Areas:
The fo:layout-master-set formatting object generates no area directly.
The masters that are the children of the fo:layout-master-set are
used by the fo:page-sequence to generate pages.
Constraints:
The value of the
master-name
trait on each
child of the fo:layout-master-set must be unique within the set.
Contents:
simple-page-master
page-sequence-master
)+
6.4.7 fo:page-sequence-master
Common Usage:
The fo:page-sequence-master is used to specify the constraints on and
the order in which a given set of page-masters will be used in
generating a sequence of pages. Pages are automatically generated when
the fo:page-sequence-master is used in formatting an fo:page-sequence.
NOTE:
There are several ways of specifying a potential
sequence of pages. One can specify a sequence of references to
particular page-masters. This yields a bounded sequence of potential
pages. Alternatively, one can specify a repeating sub-sequence of one
or more page-masters. This sub-sequence can be bounded or
unbounded. Finally one can intermix the two kinds of sub-sequence-specifiers.
Areas:
The fo:page-sequence-master formatting object generates no area directly.
It is used by the
fo:page-sequence formatting object to generate pages.
Constraints:
The children of the fo:page-sequence-master are a sequence of
sub-sequence-specifiers
. A page-sequence
satisfies the constraint
determined by an fo:page-sequence-master if
(a) it can be partitioned
into a sequence of sub-sequences of pages that map one-to-one
to an initial sub-sequence of the sequence of
sub-sequence-specifiers that are the
children of the
fo:page-sequence-master and, (b) for each sub-sequence of pages
in the partition, that
sub-sequence satisfies the constraints of the corresponding
sub-sequence-specifier.
The
sequence of sub-sequences of pages can be shorter than the sequence of
sub-sequence-specifiers.
It is an error if the entire sequence of sub-sequence-specifiers children is
exhausted while some areas returned by an fo:flow are not placed. Implementations
may recover, if possible, by re-using the sub-sequence-specifier that was last
used to generate a page.
Contents:
single-page-master-reference
repeatable-page-master-reference
repeatable-page-master-alternatives
)+
The following properties apply to this formatting object:
7.25.8 "master-name"
6.4.8 fo:single-page-master-reference
Common Usage:
An fo:single-page-master-reference is the
simplest sub-sequence-specifier. It specifies a sub-sequence consisting
of a single instance of a single page-master. It is used to specify
the use of a particular page-master at a given point in the sequence
of pages that would be generated using the fo:page-sequence-master
that is the parent of the fo:single-page-master-reference.
Areas:
The fo:single-page-master-reference formatting object generates no area directly.
It is used by the fo:page-sequence formatting
object to generate pages.
Constraints:
The fo:single-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as the
master-reference
trait on the
fo:single-page-master-reference.
The sub-sequence of pages mapped to this
sub-sequence-specifier satisfies
the constraints of this sub-sequence-specifier if (a) the
sub-sequence of pages consists of a single page and (b) that page is
constrained to have been generated using the fo:simple-page-master
referenced by the fo:single-page-master-reference.
Contents:
EMPTY
The following properties apply to this formatting object:
7.25.9 "master-reference"
6.4.9 fo:repeatable-page-master-reference
Common Usage:
An fo:repeatable-page-master-reference is the next simplest
sub-sequence-specifier. It specifies a sub-sequence
consisting of
repeated instances of a single page-master. The number of repetitions
may be bounded or potentially unbounded.
Areas:
The fo:repeatable-page-master-reference formatting object generates no area directly.
It is used by the fo:page-sequence formatting object to generate
pages.
Constraints:
The fo:repeatable-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as the
master-reference
trait on the
fo:repeatable-page-master-reference.
The sub-sequence of pages mapped to this
sub-sequence-specifier satisfies
the constraints of this sub-sequence-specifier if (a) the
sub-sequence of pages consists of zero or more pages, (b) each page is
generated using the fo:simple-page-master
referenced by the fo:repeatable-page-master-reference, and (c) length of
the sub-sequence is less than or equal to the value of
maximum-repeats
If no region-master child of the fo:repeatable-page-master has a region-name
associated to any flow in an fo:page-sequence, then the
sub-sequence is constrained to have length zero.
Contents:
EMPTY
The following properties apply to this formatting object:
7.25.9 "master-reference"
7.25.10 "maximum-repeats"
6.4.10 fo:repeatable-page-master-alternatives
Common Usage:
The fo:repeatable-page-master-alternatives
formatting object is the most complex
sub-sequence-specifier. It
specifies a sub-sequence consisting of repeated instances of a set of
alternative page-masters. The number of repetitions may be bounded or
potentially unbounded. Which of the alternative page-masters is used
at any point in the sequence depends on the evaluation of a condition
on the use of the alternative. Typical conditions include, testing
whether the page which is generated using the alternative is the first
or last page in a page-sequence or is the page blank. The full set of
conditions allows different page-masters to be used for the first
page, for odd and even pages, for blank pages.
NOTE:
Because the conditions are tested in order from the
beginning of the sequence of children, the last alternative in the
sequence usually has a condition that is always true and this
alternative references the page-master that is used for all pages that
do not receive some specialized layout.
Areas:
The fo:repeatable-page-master-alternatives
formatting object generates no area directly. This formatting object
is used by the fo:page-sequence formatting object to generate pages.
Constraints:
The children of the fo:repeatable-page-master-alternatives are
fo:conditional-page-master-references. These children will be called
alternatives
The sub-sequence of pages mapped to this
sub-sequence-specifier satisfies
the constraints of this sub-sequence-specifier if (a) the
sub-sequence of pages consists of zero or more pages, (b) each page is
generated using the fo:simple-page-master
referenced by the one of the alternatives that
are the children of the fo:repeatable-page-master-alternatives, (c)
the conditions on that alternative are
true
, (d) that
alternative is the first alternative in the sequence of children for
which all the conditions are
true
, and (e) the length
of the sub-sequence is less than or equal to the value of
maximum-repeats
Contents:
conditional-page-master-reference
+)
The following properties apply to this formatting object:
7.25.10 "maximum-repeats"
6.4.11 fo:conditional-page-master-reference
Common Usage:
The fo:conditional-page-master-reference is used to identify a
page-master that is to be used when the conditions on its use are
satisfied. This allows different page-masters to be used, for example,
for even and odd pages, for the first page in a page-sequence, or for
blank pages. This usage is typical in chapters of a book or report
where the first page has a different layout than the rest of the
chapter and the headings and footings on even and odd pages
may be different as well.
Areas:
The fo:conditional-page-master-reference formatting object generates no area directly.
It is used by
the fo:page-sequence formatting object to generate pages.
Constraints:
The fo:conditional-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as
the
master-reference
trait on the fo:conditional-page-master-reference.
There are three traits,
page-position
odd-or-even
, and
blank-or-not-blank
that
specify the
sub-conditions on the use of the referenced page-master. All three
sub-conditions must be
true
for the condition on the
fo:conditional-page-master-reference to be
true
. Since
the properties from which these traits are derived are not inherited and
the initial value of all the
properties makes the corresponding sub-condition
true
, this
really means that the subset of traits that are derived from properties
with specified values must make the corresponding
sub-condition
true
The sub-condition corresponding to the
page-position
trait is
true
if the page generated using the
fo:conditional-page-master-reference has the specified position in the
sequence of pages generated by the referencing page-sequence; namely,
"first", "last", "rest" (not first
nor last) or
"any" (all of the previous). The
referencing
page-sequence
is the fo:page-sequence that referenced the
fo:page-sequence-master from which this
fo:conditional-page-master-reference is a descendant.
The sub-condition corresponding to the
odd-or-even
trait is
true
if the value of the
odd-or-even
trait is "any" or if the value matches the parity of the
page number of the page generated using the
fo:conditional-page-master-reference.
The sub-condition corresponding to the
blank-or-not-blank
trait is
true
, if (1) the value of the trait is
"not-blank" and the page generated using the
fo:conditional-page-master-reference has areas generated by descendants of
the fo:flow formatting object; if (2) the value of the trait is
"blank" and the page generated using the
fo:conditional-page-master-reference is such that there are
no areas from the fo:flow to be put on that page (e.g.,
(a) to maintain proper page parity due to (i) a break-after
or break-before value of "even-page" or "odd-page" or (ii) at the
start or end of the page-sequence or (b) because the
constraints
on the areas generated by descendants of the fo:flow formatting object would
not be satisfied if they were descendant from this page); or if (3)
the value of the trait is "any".
NOTE:
If any page-master referenced from a conditional-page-master-reference
with blank-or-not-blank="
true
" provides a region
in which to put fo:flow content, no content is put in that
region.
Contents:
EMPTY
The following properties apply to this formatting object:
7.25.9 "master-reference"
7.25.14 "page-position"
7.25.12 "odd-or-even"
7.25.1 "blank-or-not-blank"
6.4.12 fo:simple-page-master
Common Usage:
The fo:simple-page-master is used in the generation of pages and
specifies the geometry of the page. The page may be subdivided into up
to five regions: region-body, region-before, region-after,
region-start, and region-end.
NOTE:
For example, if the
writing-mode
of the
fo:simple-page-master is "lr-tb", then these regions
correspond to the body of a document, the header, the footer, the
left sidebar, and the right sidebar.
NOTE:
The simple-page-master is intended for systems that wish to provide
a simple page layout facility. Future versions of this Recommendation
will support more complex page layouts constructed using the
fo:page-master formatting object.
Areas:
The fo:simple-page-master formatting object generates no area directly.
It is used in the generation of pages by an
fo:page-sequence.
When the fo:simple-page-master is used to generate a page, a viewport/reference
pair is generated, consisting of a page-viewport-area and a
page-reference-area. The page-viewport-area represents the
physical bounds of the output medium. The page-reference-area
represents the portion of the page on which content is intended to
appear; that is, the area inside the page margins.
In addition, when the fo:simple-page-master is used to generate a
page, viewport/reference pairs that correspond to the regions that are the
children of the fo:simple-page-master are also generated.
(See the formatting object specifications for
the five regions (
6.4.13 fo:region-body
6.4.14 fo:region-before
6.4.15 fo:region-after
6.4.16 fo:region-start
, and
6.4.17 fo:region-end
for the details on the generation of these areas.)
[D]
Region-viewport-areas
The spacing between the outer four regions and the fo:region-body is determined
by subtracting the relevant
extent
trait on each outer region
from the "margin-x" property on the fo:region-body.
Trait Derivation:
In version 1.0 of this Recommendation, borders and padding are not
allowed with a page-reference-area. The remaining traits on the
page-reference-area are
set according to normal rules for determining the values of
traits.
Constraints:
When a page-master is used in the generation of a page, the
block-progression-dimension
and
inline-progression-dimension
of the
content-rectangle of the page-viewport-area are determined using the
computed values of the
"page-height" and "page-width" properties.
The traits derived from the margin properties determine the size
and position of the content-rectangle of the page-viewport-area.
The traits derived from the "margin-top",
"margin-bottom", "margin-left" and
"margin-right" properties are used to indent the page-reference-area
content-rectangle from the corresponding edge of the content-rectangle of the
page-viewport-area. Here "top", "bottom", "left"
and "right" are determined by the computed values of the
"page-height" and "page-width" properties. For
sheet media, these values determine the orientation of the sheet;
"page-height" is measured from "top" to
"bottom". For display media, the display window is always
upright; the top of the display screen is "top".
NOTE:
The reference points for the page-viewport-area content-rectangle
are in terms of the "top", "bottom",
"left", and "right" rather than
"before-edge", "after-edge",
"start-edge", and "end-edge" because users see the
media relative to its orientation and not relative to the
writing-mode
currently in use.
[D]
The value of the
page-number
trait on the
first page returned by the
fo:page-sequence is constrained to equal the value of the
initial-page-number
trait. The value of the
page-number
trait on subsequent pages is constrained to be one greater than the
value on the immediately preceding page.
The
format
letter-value
grouping-separator
grouping-size
country
, and
language
traits are used to format the number into a
string form, as specified in XSLT, section 7.7.1. This formatted
number is used as the value of the fo:page-number flow object.
Constraints applicable to regions:
There are a number of constraints that apply to all the
regions that are specified within a given fo:simple-page-master.
[D]
If the block-progression-dimension of the properly stacked
region-reference-area is greater than the block-progression-dimension of the
region-viewport-area that is its parent, then the constraints on
the relationship between the region-viewport-area and the
region-reference-area depend on values of the
overflow
trait
on the region-master and the kind of flow
assigned to the region.
If the flow assigned to the corresponding region is an
fo:static-content flow object, then there is no constraint
on the block-progression-dimension of the region-reference-area.
If the flow assigned to the corresponding region is an fo:flow formatting
object, then
If the value of the
media-usage
trait is
paginate
or the value of the
overflow
trait is
visible
hidden
, or
error-if-overflow
then the block-progression-dimension of the region-reference-area is
constrained to be no greater than the block-progression-dimension of
the region-viewport-area.
If the value of the
media-usage
trait is
bounded-in-one-dimension
or
unbounded
and the value of the
overflow
trait is
scroll
or
auto
then there is no constraint on the
block-progression-dimension of the region-reference-area.
Contents:
region-body
region-before
?,
region-after
?,
region-start
?,
region-end
?)
The following properties apply to this formatting object:
7.10 Common Margin Properties-Block
7.25.8 "master-name"
7.25.13 "page-height"
7.25.15 "page-width"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.13 fo:region-body
Common Usage:
Used in constructing a simple-page-master. This region specifies a
viewport/reference pair that is located in the "center" of the
fo:simple-page-master. The
overflow
trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by its parent region-viewport-area.
NOTE:
Typically, for paged media, the areas
returned by the fo:flow formatting object in a
fo:page-sequence are made to be
descendants of a sequence of region-reference-areas that
correspond to
the region-body. These region-reference-areas are all area descendants
of page-areas for which the page-master included an fo:region-body. If
the fo:flow flow is assigned to some other region, then the areas
returned by the fo:flow are constrained to be descendants of
region-reference-areas generated using the assigned region-master.
NOTE:
The body region should be sized and positioned within the
fo:simple-page-master so that there is room
for the areas returned by the flow that is assigned to the
fo:region-body and for any desired side regions, that is,
fo:region-before, fo:region-after, fo:region-start and fo:region-end's
that are to be placed on the same page. These side regions are
positioned within the content-rectangle of the page-reference-area. The
margins on the fo:region-body are used to position the region-viewport-area
for the fo:region-body and to leave space for the other regions that
surround the fo:region-body.
[D]
The spacing between the last four regions and the fo:region-body is
determined by subtracting the relevant
extent
trait on
the side regions from the trait that corresponds to the
"margin-
" property on the fo:region-body.
The fo:region-body may be also be used to provide multiple
columns. When the
column-count
trait is greater than one, then
the region-body will be subdivided into multiple columns.
Areas:
The fo:region-body formatting object is used to generate one
region-viewport-area and one region-reference-area whenever an
fo:simple-page-master that has an fo:region-body as a child
is used to
generate a page.
A scrolling mechanism shall be provided, in an implementation-defined
manner, if the value of the
overflow
trait is "scroll".
The position and size of the region-viewport-area is
specified relative to the content-rectangle of the
page-reference-area generated by fo:simple-page-master. The content-rectangle
of the region-viewport-area is indented from the content-rectangle
of the page-reference-area by the values of the "margin-top",
"margin-bottom", "margin-left" and "margin-right" properties.
In version 1.0 of this Recommendation, the values of the
padding
and
border-width
traits must be "0".
The region-reference-area generated using an fo:region-body is the child
of the region-viewport-area. The
reference-orientation
trait
of the fo:region-body is used to orient the coordinate system of the
region-reference-area generated by the fo:region-body relative to the
coordinate system of the page-reference-area generated by
fo:simple-page-master (and, therefore, relative to the viewport
positioned in that latter coordinate system).
In addition to the viewport/reference pair, when the
region-body is used to
generate areas,
at least one and up to three additional reference-areas are
generated. These reference-areas are the optional
before-float-reference-area
the optional
footnote-reference-area
, and the
main-reference-area
. The latter reference-area comprises
the space left after space is borrowed for the other two
reference-areas. The main-reference-area has no
padding, border, or space associated with it.
NOTE:
If there is no before-float-reference-area or footnote-reference-area
child of the region-reference-area, then the content-rectangle of the
main-reference-area is coterminous with the content-rectangle
of the region-reference-area.
The main-reference-area has as its children
a sequence of
span-reference-areas
These are reference-area block-areas with zero border and padding,
whose inline-progression-dimension is
equal to that of the main-reference-area,
and which are normally stacked within the main-reference-area.
Each span-reference-area has one or more reference-area children,
designated as
normal-flow-reference-areas
The number and placement of the children of a span-reference-area
depends on the
column-count
trait of the span-reference-area.
In turn, the formatter must generate precisely enough of these
span-reference-areas, and so set their
column-count
traits,
that block-areas
returned from the fo:flow with a
span
of "all" are children of
span-reference-areas with
column-count
equal to 1,
and block-areas returned from the fo:flow with a
span
of "none"
are children of span-reference-areas with
column-count
equal to
the refined value of the column-count property of the
associated region-reference-area.
For each span-reference-area, the number
of normal-flow-reference-area children is equal to the value of the
column-count
trait.
It is an error to specify a
column-count
other
than 1 if the "overflow" property has the value "scroll".
An implementation may recover by behaving as if "1" had been specified.
The inline-progression-dimension of each of these
normal-flow-reference-areas is determined by subtracting
-1) times the column-gap trait from the
inline-progression-dimension of the
main-reference-area and dividing that result by
Using "body-in-size" for the name of the inline-progression-dimension
of the span-reference-area and "column-in-size" for the name of the size
of the normal-flow-reference-areas in the inline-progression-direction,
the formula is:
column-in-size = (body-in-size - (
- 1)*column-gap)/
The block-progression-dimension of the normal-flow-reference-areas
is the same as that of the parent span-reference-area.
NOTE:
As noted above, the block-progression-dimension of the
span-reference-area may be less than the size of the
region-reference-area if a before-float-reference-area or
footnote-reference-area are present, or if there is more than one
span-reference-area child of the main-reference-area.
The normal-flow-reference-areas are positioned within the
span-reference-area as follows: The first column is positioned
with the before-edge and start-edge of its content-rectangle
coincident with the before-edge and start-edge of the content-rectangle
of the span-reference-area. The content-rectangle of the
th
normal-flow-reference-area child of the span-reference-area
is positioned with its before-edge coincident with the before-edge
of the content-rectangle of the span-reference-area and with is
start-edge at ((
-1)*(column-in-size + column-gap))
in the inline-progression-direction.
This results in the end-edge of the content-rectangle of the
th normal-flow-reference-area being coincident with
the end-edge of the content-rectangle of the span-reference-area.
NOTE:
If the
writing-mode
is "rl-tb", the
above description means that the columns are ordered from right-to-left
as would be expected. This follows because the start-edge is on
the right in an "rl-tb" writing-mode.
All areas generated by using the fo:region-body are of area-class "xsl-absolute".
Trait Derivation:
The
reference-orientation
of the region-viewport-area
is taken from the value of the
reference-orientation
trait on the region-master which
specifies the region.
reference-orientation
of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.
The traits on the span-reference-areas and on the
normal-flow-reference-areas are determined,
in the same manner as described in
5 Property Refinement / Resolution
from a set of properties where each property has its initial
value except for
reference-orientation,
writing-mode, and
display-align
that have the value from the fo:region-body.
Constraints:
The constraints applicable to all regions (see
6.4.12 fo:simple-page-master
) all apply.
The inline-progression-dimension of the region-viewport-area is
determined by the inline-progression-dimension of the
content-rectangle of the page-reference-area minus the values
of the
start-indent
and
end-indent
traits of the region-master. The start-edge and end-edge of the
content-rectangle of the region-viewport-area are determined by the
reference-orientation
trait on the page-master.
The block-progression-dimension of the region-viewport-area is
determined by the block-progression-dimension of the content-rectangle
for the page-reference-area minus the values of the
space-before
and
space-after
traits of
the region-master. The before-edge and after-edge of the content-rectangle
of the region-viewport-area
are determined by the
reference-orientation
trait on
the page-master.
The values of the
space-before
and
start-indent
traits are used to position the
region-viewport-area relative to the before-edge and
start-edge of the content-rectangle of
the page-reference-area.
The constraints on the size and position of the region-reference-area
generated using the fo:region-body are covered in the "Constraints
applicable to regions" section of
6.4.12 fo:simple-page-master
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.20.1 "clip"
7.25.2 "column-count"
7.25.3 "column-gap"
7.13.4 "display-align"
7.20.2 "overflow"
7.25.17 "region-name"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.14 fo:region-before
Common Usage:
Used in constructing a simple-page-master. This region specifies
a viewport/reference pair that is located on the "before" side of
the page-reference-area.
In lr-tb writing-mode, this region corresponds to
the header
region. The
overflow
trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by its parent region-viewport-area.
Areas:
The fo:region-before formatting object is used to generate one
region-viewport-area
and one region-reference-area.
In version 1.0 of this Recommendation,
the values of the
padding
and
border-width
traits must be "0".
The before-edge of the content-rectangle of this
region-viewport-area is positioned coincident with the
before-edge of the content-rectangle of the page-reference-area
generated using the parent fo:simple-page-master. The block-progression-dimension
of the region-viewport-area is
determined by the
extent
trait on the fo:region-before
formatting object.
The inline-progression-dimension of the region-viewport-area is determined by the
precedence
trait on the fo:region-before. If the value
of the
precedence
trait is
true
, then the
inline-progression-dimension extends up to the start-edge and
end-edge of the
content-rectangle of the page-reference-area. In this case, the region-before
region-viewport-area acts like a float into areas
generated by the region-start and region-end. If the
value of the
precedence
trait on the fo:region-before
is
false
, then these adjacent regions float into the area
generated by the fo:region-before and the extent of the
fo:region-before is (effectively) reduced by the incursions of the
adjacent regions.
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
reference-orientation
trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
The size of the region-reference-area depends on the setting of the
overflow
trait on the region. If the value of that
trait
is "auto", "hidden", "error-if-overflow", "paginate",
or "visible" then the size of the
reference-area
is the same as the size of the viewport. If the value of the
overflow
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
writing-mode
for the region and has no constraint in the
block-progression-direction (which implies that it grows to
hold the distribution of all the content bound to the region).
Trait Derivation:
The
reference-orientation
of the region-viewport-area
is taken from the value of the
reference-orientation
trait on the region-master which
specifies the region.
reference-orientation
of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.
Constraints:
The constraints on the size and position of the region-reference-area
generated using the fo:region-before are covered in the "Constraints
applicable to regions" section of
6.4.12 fo:simple-page-master
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.20.1 "clip"
7.13.4 "display-align"
7.25.4 "extent"
7.20.2 "overflow"
7.25.16 "precedence"
7.25.17 "region-name"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.15 fo:region-after
Common Usage:
Used in constructing a simple-page-master. This region specifies
a viewport/reference pair that is located on the "after" side of
the page-reference-area.
In lr-tb writing-mode, this region corresponds to
the footer
region. The
overflow
trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by its parent region-viewport-area.
Areas:
The fo:region-after formatting object is used to generate one
region-viewport-area
and one region-reference-area.
In version 1.0 of this Recommendation,
the values of the
padding
and
border-width
traits must be "0".
The after-edge of the content-rectangle of this
region-viewport-area is positioned coincident with the
after-edge of the content-rectangle of the page-reference-area
generated using the parent fo:simple-page-master. The block-progression-dimension
of the region-viewport-area is
determined by the
extent
trait on the fo:region-after
formatting object.
The inline-progression-dimension of the region-viewport-area is determined by the
precedence
trait on the fo:region-after. If the value
of the
precedence
trait is
true
, then the
inline-progression-dimension extends up to the start-edge and
end-edge of the
content-rectangle of the page-reference-area. In this case, the region-after
region-viewport-area acts like a float into areas
generated by the region-start and region-end. If the
value of the
precedence
trait on the fo:region-after
is
false
, then these adjacent regions float into the area
generated by the fo:region-after and the extent of the
fo:region-after is (effectively) reduced by the incursions of the
adjacent regions.
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
reference-orientation
trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
The size of the region-reference-area depends on the setting of the
overflow
trait on the region. If the value of that
trait
is "auto", "hidden", "error-if-overflow", "paginate",
or "visible" then the size of the
reference-area
is the same as the size of the viewport. If the value of the
overflow
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
writing-mode
for the region and has no constraint in
block-progression-direction (which implies that it grows to
hold the distribution of all the content bound to the region).
Trait Derivation:
The
reference-orientation
of the region-viewport-area
is taken from the value of the
reference-orientation
trait on the region-master which
specifies the region.
reference-orientation
of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.
Constraints:
The constraints on the size and position of the region-reference-area
generated using the fo:region-after are covered in the "Constraints
applicable to regions" section of
6.4.12 fo:simple-page-master
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.20.1 "clip"
7.13.4 "display-align"
7.25.4 "extent"
7.20.2 "overflow"
7.25.16 "precedence"
7.25.17 "region-name"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.16 fo:region-start
Common Usage:
Used in constructing a simple-page-master. This region specifies
a viewport/reference pair that is located on the "start" side of
the page-reference-area.
In lr-tb writing-mode, this region corresponds to a left
sidebar. The
overflow
trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by its parent region-viewport-area.
Areas:
The fo:region-start formatting object is used to generate one
region-viewport-area
and one region-reference-area.
In version 1.0 of this Recommendation,
the values of the
padding
and
border-width
traits must be "0".
The start-edge of the content-rectangle of this
region-viewport-area is positioned coincident with the
start-edge of the content-rectangle of the page-reference-area
generated using the parent fo:simple-page-master. The inline-progression-dimension
of the region-viewport-area is
determined by the
extent
trait on the fo:region-after
formatting object.
The block-progression-dimension of the region-viewport-area is
determined by the
precedence
trait on the
adjacent fo:region-before and the fo:region-after, if these exist;
otherwise it is determined as if the value of the
precedence
trait was
false
If the value of the
precedence
trait of the fo:region-before (or, respectively,
fo:region-after) is
false
, then the
block-progression-dimension
extends up to the before- (or, respectively, after-) edge of the
content-rectangle of the page-reference-area. In this case, the
region-start acts like a float into areas
generated by the region-before (respectively, the region-after). If
the value of the
precedence
trait on the adjacent regions is
true
, then these adjacent regions float into
the area generated by
the fo:region-start and the extent of the fo:region-start is
(effectively) reduced by the incursions of the adjacent regions with
the value of the
precedence
trait equal to
true
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
reference-orientation
trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
The size of the region-reference-area depends on the setting of the
overflow
trait on the region. If the value of that
trait
is "auto", "hidden", "error-if-overflow", "paginate",
or "visible" then the size of the
reference-area
is the same as the size of the viewport. If the value of the
overflow
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
writing-mode
for the region and has no constraint in
block-progression-direction (which implies that it grows to
hold the distribution of all the content bound to the region).
Trait Derivation:
The
reference-orientation
of the region-viewport-area
is taken from the value of the
reference-orientation
trait on the region-master which
specifies the region.
reference-orientation
of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.
Constraints:
The constraints on the size and position of the region-reference-area
generated using the fo:region-start are covered in the "Constraints
applicable to regions" section of
6.4.12 fo:simple-page-master
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.20.1 "clip"
7.13.4 "display-align"
7.25.4 "extent"
7.20.2 "overflow"
7.25.17 "region-name"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.17 fo:region-end
Common Usage:
Used in constructing a simple-page-master. This region specifies
a viewport/reference pair that is located on the "end" side of
the page-reference-area.
In lr-tb writing-mode, this region corresponds to a right sidebar.
The
overflow
trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by its parent region-viewport-area.
Areas:
The fo:region-end formatting object is used to generate one
region-viewport-area
and one region-reference-area.
In version 1.0 of this Recommendation,
the values of the
padding
and
border-width
traits must be "0".
The end-edge of the content-rectangle of this
region-viewport-area is positioned coincident with the
end-edge of the content-rectangle of the page-reference-area
generated using the parent fo:simple-page-master. The inline-progression-dimension
of the region-viewport-area is
determined by the
extent
trait on the fo:region-after
formatting object.
The block-progression-dimension of the region-viewport-area is
determined by the
precedence
trait on the
adjacent fo:region-before and the fo:region-after, if these exist;
otherwise it is determined as if the value of the
precedence
trait was
false
If the value of the
precedence
trait of the fo:region-before (or, respectively,
fo:region-after) is
false
, then the
block-progression-dimension
extends up to the before- (or, respectively, after-) edge of the
content-rectangle of the page-reference-area. In this case, the
region-end acts like a float into areas
generated by the region-before (respectively, the region-after). If
the value of the
precedence
trait on the adjacent regions is
true
, then these adjacent regions float into
the area generated by
the fo:region-end and the extent of the fo:region-end is
(effectively) reduced by the incursions of the adjacent regions with
the value of the
precedence
trait equal to
true
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
reference-orientation
trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
The size of the region-reference-area depends on the setting of the
overflow
trait on the region. If the value of that
trait
is "auto", "hidden", "error-if-overflow", "paginate",
or "visible" then the size of the
reference-area
is the same as the size of the viewport. If the value of the
overflow
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
writing-mode
for the region and has no constraint in
block-progression-direction (which implies that it grows to
hold the distribution of all the content bound to the region).
Trait Derivation:
The
reference-orientation
of the region-viewport-area
is taken from the value of the
reference-orientation
trait on the region-master which
specifies the region.
reference-orientation
of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.
Constraints:
The constraints on the size and position of the region-reference-area
generated using the fo:region-end are covered in the "Constraints
applicable to regions" section of
6.4.12 fo:simple-page-master
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.20.1 "clip"
7.13.4 "display-align"
7.25.4 "extent"
7.20.2 "overflow"
7.25.17 "region-name"
7.20.3 "reference-orientation"
7.27.7 "writing-mode"
6.4.18 fo:flow
Common Usage:
The content of the fo:flow formatting object is a
sequence of
flow objects that provides the flowing text content that is
distributed into pages.
Areas:
The fo:flow formatting object does not generate any areas. The
fo:flow formatting object returns a sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:flow. The order of concatenation is the same order as the
children are ordered under the fo:flow.
Constraints:
The (implicit) flow-map determines the assignment of the content
of the fo:flow to a region.
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.25.5 "flow-name"
6.4.19 fo:static-content
Common Usage:
The
fo:static-content formatting object holds a sequence or a
tree of
formatting objects that is to be presented in a single
region
or repeated in like-named regions on one or more pages in the page-sequence.
Its common use is for repeating or running headers and footers.
This content is repeated, in its
entirety, on every page to which it is assigned.
Areas:
The fo:static-content formatting object does not generate any areas.
The fo:static-content formatting object returns the sequence of areas
created by concatenating the sequences of areas returned by each of
the children of the fo:static-content. The order of concatenation is the same
order as the children are ordered under the fo:static-content.
Constraints:
The (implicit) flow-map determines the assignment of the content
of the fo:static-content to a region.
The fo:static-content may be processed multiple times and thus the
default ordering constraint of section
4.7.1 General Ordering Constraints
does not apply to the fo:static-content. Instead, it must satisfy the
constraint on a per-page basis. Specifically, if
is a page-reference-area,
is an area-class, and
is the set of all descendants of
of area-class
returned to the fo:static-content descendant, then
must be properly-ordered.
Contents:
%block;
)+
The following properties apply to this formatting object:
7.25.5 "flow-name"
6.4.20 fo:title
Common Usage:
The fo:title formatting object is used to associate a title with a
given page-sequence. This title may be used by an interactive User Agent to
identify the pages. For example, the content of the fo:title can be
formatted and displayed in a "title" window or in a "tool tip".
Areas:
This formatting object returns the sequence of areas returned by the
children of this formatting object.
Constraints:
The sequence of returned areas must be the concatenation of the
sub-sequences of areas returned by each of the flow children of the
fo:title formatting object in the order in which the children occur.
Contents:
(#PCDATA|
%inline;
)*
An fo:title is not permitted to
have an fo:float, fo:footnote or fo:marker as a descendant.
Additionally, an fo:title is not permitted to have as a descendant
an fo:block-container that generates an absolutely positioned area.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.11 Common Margin Properties-Inline
7.17.1 "color"
7.15.4 "line-height"
7.28.8 "visibility"
6.5 Block-level Formatting Objects
6.5.1 Introduction
The fo:block formatting object is used for formatting
paragraphs, titles, figure captions, table titles, etc. The
following example illustrates the usage of the fo:block in a
stylesheet.
6.5.1.1 Example
6.5.1.1.1 Chapter and Section Titles, Paragraphs
Input sample:
In this example the chapter title appears at the top of
the page (its "space-before" is discarded).
Space between chapter title
and first section title is (8pt,8pt,8pt): the chapter title's
"space-after"
has a higher precedence than the section title's "space-before"
(which takes
on the initial value of zero), so the latter is discarded.
Space between
the first section title and section one's first paragraph is
(6pt,6pt,6pt):
the section title's "space-after" has higher precedence than
the paragraph's
"space-before", so the latter is discarded.
Space between the two paragraphs
is (6pt,8pt,10pt): the "space-after" the first paragraph is
discarded because
its precedence is equal to that of the "space-before" the
next paragraph,
and the optimum of the "space-after" of the first paragraph
is greater than
the optimum of the "space-before" of the second paragraph.
Space between
the second paragraph of the first section and the title of
the second section
is (12pt,12pt,12pt): the "space-after" the paragraph is
discarded because
its precedence is equal to that of the "space-before" of
the section title,
and the optimum of the "space-after" of the paragraph is
less than the optimum
of the "space-before" of the section title.
The indent on the first
line of the first paragraph in section one and the only
paragraph in section
two is zero; the indent on the first line of the second
paragraph in section
one is 2pc.
XSL Stylesheet:
xmlns:fo="http://www.w3.org/1999/XSL/Format">
space-after.precedence="3">
space-before.maximum="10pt">
space-before.maximum="10pt">
Result Instance: elements and attributes in the fo:
namespace
space-after.precedence="3">Chapter title
space-after.precedence="3">First section title
space-before.maximum="10pt">Section one's first paragraph.
space-before.maximum="10pt">Section one's second paragraph.
space-after.precedence="3">Second section title
space-before.maximum="10pt">Section two's only paragraph.
This is the text of a paragraph that is going to be
6.5.2 fo:block
Common Usage:
The fo:block formatting object is commonly used for formatting paragraphs,
titles, headlines, figure and table captions, etc.
Areas:
The fo:block formatting object generates one or more
normal
block-areas.
The fo:block returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:block.
The fo:block also generates zero or more line-areas as children of the
normal block-areas it returns, in accordance with
4.7.2 Line-building
Trait Derivation:
The .minimum, .optimum, and .maximum components of the
half-leading
trait
are set to 1/2 the difference of
the computed value of the
line-height
property and the
computed value of the sum of the
text-altitude
and
text-depth
properties.
The .precedence and .conditionality components are copied from the
line-height
property.
NOTE:
The usage of the half-leading is described in
4.5 Line-areas
Constraints:
No area may have more than one normal child area
returned by the same fo:block formatting object.
The children of each normal area generated by an fo:block
must satisfy the constraints specified in
4.7.2 Line-building
In addition the constraints imposed by the traits derived from the
properties applicable to this formatting object must be satisfied.
The geometric constraints are rigorously defined in
4 Area Model
Contents:
(#PCDATA|
%inline;
%block;
)*
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children,
optionally followed by an fo:initial-property-set.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.9 Common Hyphenation Properties
7.10 Common Margin Properties-Block
7.12 Common Relative Position Properties
7.19.1 "break-after"
7.19.2 "break-before"
7.17.1 "color"
7.27.5 "text-depth"
7.27.4 "text-altitude"
7.15.1 "hyphenation-keep"
7.15.2 "hyphenation-ladder-count"
7.28.2 "id"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.3 "last-line-end-indent"
7.15.7 "linefeed-treatment"
7.15.4 "line-height"
7.15.5 "line-height-shift-adjustment"
7.15.6 "line-stacking-strategy"
7.19.6 "orphans"
7.15.8 "white-space-treatment"
7.20.4 "span"
7.15.9 "text-align"
7.15.10 "text-align-last"
7.15.11 "text-indent"
7.28.8 "visibility"
7.15.12 "white-space-collapse"
7.19.7 "widows"
7.15.13 "wrap-option"
6.5.3 fo:block-container
Common Usage:
The fo:block-container flow object is used to
generate a block-level reference-area, typically containing
text blocks with a different writing-mode. In addition, it
can also be used with a different reference-orientation to
rotate its content.
NOTE:
The use of this flow object is not required for
changing
the inline-progression-direction only; in that case the Unicode BIDI
algorithm and the fo:bidi-override are sufficient.
Areas:
The fo:block-container formatting object generates one or more
viewport/reference pair
s.
The fo:block-container returns these areas and any
page-level-out-of-line
areas
returned by the children of the fo:block-container.
Trait Derivation:
The areas generated by the fo:block-container formatting object have
a value of "true" for the
is-reference-area
The size of the viewport-area and the reference-area
has to be fixed in the inline-progression-direction.
It must be specified
unless the inline-progression-direction is parallel to the
inline-progression-direction of the reference-area into
which
the areas generated by this flow object are placed.
Constraints:
The children of each reference-area generated
by an fo:block-container formatting object
must be normal
block-area
s returned by the children of the fo:block-container,
must be
properly stacked
, and
must be
properly ordered
Any
reference-level-out-of-line
areas returned by the children of the fo:block-container
are handled as described in
6.10.2 fo:float
Contents:
%block;
)+
In addition an fo:block-container that does not generate
an
absolutely positioned
area
may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.5 Common Absolute Position Properties
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.14.1 "block-progression-dimension"
7.19.1 "break-after"
7.19.2 "break-before"
7.20.1 "clip"
7.13.4 "display-align"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.20.2 "overflow"
7.20.3 "reference-orientation"
7.20.4 "span"
7.14.12 "width"
7.27.7 "writing-mode"
7.28.9 "z-index"
6.6 Inline-level Formatting Objects
6.6.1 Introduction
Inline-level formatting objects are most commonly used to
format
a portion of text or for generating rules and leaders. There
are many other uses. The following examples illustrate
some of these uses of inline-level formatting objects.
putting the first line of a paragraph into
small-caps,
turning a normally inline formatting object, fo:external-graphic, into
a block by "wrapping" with an fo:block formatting
object,
formatting a running footer containing the word
"Page" followed by a page number.
6.6.1.1 Examples
6.6.1.1.1 First Line of Paragraph in Small-caps
Input sample:
presented with the first line in small-caps.
XSL Stylesheet:
version='1.0'>
Result instance: elements and attributes in the fo:
namespace
presented with the first line in small-caps.
6.6.1.1.2 Figure with a Photograph
Input sample:
In this example the image (an fo:external-graphic) is
placed as a centered block-level object.
The caption is centered with 10mm indents.
XSL Stylesheet:
version='1.0'>
fo: element and attribute tree:
Text
6.6.1.1.3 Page numbering and page number reference
Input sample:
In this example each page has a running footer containing the word
"Page" followed by the page number. The "ref" element generates the
word "page" followed by the page number of the page on which the
referenced by the "refid" attribute was placed.
XSL Stylesheet:
version='1.0'>
margin-top="20mm" margin-bottom="10mm"
margin-left="25mm" margin-right="25mm">
margin-left="0mm" margin-right="0mm"/>
Text Text Text Text Text Text
Result Instance: elements and attributes in the fo:
namespace
margin-top="20mm" margin-bottom="10mm"
margin-left="25mm" margin-right="25mm">
6.6.1.1.4 Table of Contents with Leaders
Input sample:
In this example the table of contents is formatted with a dot leader
between the heading text and the page number.
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
Caption for this table Cell 1 Cell 2 Cell 3
6.6.2 fo:bidi-override
Common Usage:
The fo:bidi-override formatting object is used when the Unicode BIDI
algorithm fails. It forces a string of text to be written in a specific
direction.
Areas:
The fo:bidi-override formatting object generates one or more
normal
inline-area
s.
The fo:bidi-override returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:bidi-override.
Trait Derivation:
The direction traits are derived from the "writing-mode",
"direction", and "unicode-bidi" properties as described in
5.5.3 Writing-mode and Direction Properties
Constraints:
No area may have more than one normal child area
returned by the same fo:bidi-override formatting object.
The children of each normal area returned by an fo:bidi-override
must satisfy the constraints specified in
4.7.3 Inline-building
Contents:
(#PCDATA|
%inline;
%block;
)*
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
An fo:bidi-override that is a descendant of an fo:leader or of
an fo:inline child
of an fo:footnote may not have block-level children,
unless it has a nearer ancestor that is an fo:inline-container.
The following properties apply to this formatting object:
7.6 Common Aural Properties
7.8 Common Font Properties
7.12 Common Relative Position Properties
7.17.1 "color"
7.27.1 "direction"
7.28.2 "id"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.28.6 "score-spaces"
7.27.6 "unicode-bidi"
7.16.8 "word-spacing"
6.6.3 fo:character
Common Usage:
The fo:character flow object represents a character that
is mapped to
a glyph for presentation. It is an atomic unit to the formatter.
When the result tree is interpreted as a tree of formatting objects,
a character in the result tree is treated as if it were an empty
element of type fo:character with a character attribute
equal to the Unicode representation of the character.
The semantics of an "auto" value for character properties, which is
typically their initial value,
are based on the Unicode code point. Overrides may be specified in
an implementation-specific manner.
NOTE:
In a stylesheet the explicit creation of an fo:character may be
used to explicitly override the default mapping.
Unicode Tag Characters need not be supported.
NOTE:
Unicode Version 3.1, in fact,
states that they are not to be used
"with
any
protocols that provide alternate means for language tagging,
such as HTML or XML.".
Unicode TR20 (
[UNICODE TR20]
) also
declares very clearly that they are not suitable together with
markup.
Areas:
The fo:character formatting object generates and returns
one or more
normal
inline-area
NOTE:
Cases where more than one
inline-area
is generated
are encountered in scripts where a single character generates both a
prefix and a suffix glyph to some other character.
Constraints:
The dimensions of the areas are determined by the font metrics for
the glyph.
When formatting an fo:character with a "treat-as-word-space" value
of "true", the User Agent may use a different method for determining
the
inline-progression-dimension
of the area.
NOTE:
Such methods typically make use of
a word space value stored in the font, or
a formatter defined word space value.
Contents:
EMPTY
The following properties apply to this formatting object:
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.9 Common Hyphenation Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.16.7 "treat-as-word-space"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.16.1 "character"
7.17.1 "color"
7.13.5 "dominant-baseline"
7.27.5 "text-depth"
7.27.4 "text-altitude"
7.27.2 "glyph-orientation-horizontal"
7.27.3 "glyph-orientation-vertical"
7.28.2 "id"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.28.6 "score-spaces"
7.16.3 "suppress-at-line-break"
7.16.4 "text-decoration"
7.16.5 "text-shadow"
7.16.6 "text-transform"
7.28.8 "visibility"
7.16.8 "word-spacing"
6.6.4 fo:initial-property-set
Common Usage:
The fo:initial-property-set auxiliary formatting object
specifies formatting properties
for the first line of an fo:block.
NOTE:
It is analogous to the CSS first-line pseudo-element.
In future versions of this Recommendation a property controlling
the number of lines, or the "depth" that these initial properties
apply to may be added.
Areas:
The fo:initial-property-set formatting object does not generate
or return any areas. It simply holds a set of traits that are applicable
to the first line-area of the area that
has a value of "true" for the
is-first
trait and that was
generated by the parent fo:block of the fo:initial-property-set.
Trait Derivation:
The traits on the fo:initial-property-set are taken into
account as traits constraining the first line as if
the child inline formatting objects of the fo:block,
or parts of them in the
case of a line-break, that were used in formatting
the first line were enclosed by an fo:wrapper, as a direct
child of the fo:block, with those traits.
Constraints:
None.
Contents:
EMPTY
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.12 Common Relative Position Properties
7.17.1 "color"
7.28.2 "id"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.28.6 "score-spaces"
7.16.4 "text-decoration"
7.16.5 "text-shadow"
7.16.6 "text-transform"
7.16.8 "word-spacing"
6.6.5 fo:external-graphic
Common Usage:
The fo:external-graphic flow object is used for a
graphic where the graphics data resides outside of the fo:element tree.
Areas:
The fo:external-graphic
formatting object generates and returns one inline-level
viewport-area and one reference-area containing the external graphic.
The inline-level area uses the
large-allocation-rectangle
as defined in
4.2.3 Geometric Definitions
NOTE:
An fo:external-graphic may be placed
block-level by enclosing it in an fo:block.
A "line-stacking-strategy" of "max-height" or "line-height" is
typically used for stacking one or more lines with fo:external-graphic
content.
Constraints:
The viewport's size is determined by the
block-progression-dimension
and
inline-progression-dimension
traits.
For values of "auto", the content size of the graphic is used.
The content size of a graphic is determined by taking the
intrinsic size of the graphic and scaling as specified by the
content-height
content-width
and
scaling
traits. If one of the content-height or
content-width is not "auto", the same scale factor
(as calculated from the specified non-auto value) is applied equally to
both directions.
Once scaled, the reference-area
is aligned with respect to the viewport-area
using the
text-align
and
display-align
traits. If it is too large for the viewport-area,
the graphic is aligned as if it would fit and the
overflow
trait controls the clipping, scroll bars, etc.
In the case when the graphics format does not specify an intrinsic
size of the graphic the size is determined in an implementation-defined
manner.
NOTE:
For example, a size of 1/96" as the size
of one pixel for rasterized images may be used.
Contents:
EMPTY
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.14.1 "block-progression-dimension"
7.20.1 "clip"
7.14.2 "content-height"
7.28.1 "content-type"
7.14.3 "content-width"
7.13.4 "display-align"
7.13.5 "dominant-baseline"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.4 "line-height"
7.20.2 "overflow"
7.14.10 "scaling"
7.14.11 "scaling-method"
7.28.7 "src"
7.15.9 "text-align"
7.14.12 "width"
6.6.6 fo:instream-foreign-object
Common Usage:
The fo:instream-foreign-object flow object is used for an inline
graphic or other "generic" object
where the object data resides as descendants of the
fo:instream-foreign-object, typically as an XML element subtree in
a non-XSL namespace.
NOTE:
A common format is SVG.
Areas:
The fo:instream-foreign-object
formatting object generates and returns one inline
viewport-area and one reference-area containing the instream-foreign-object.
The inline-level area uses the
large-allocation-rectangle
as defined in
4.2.3 Geometric Definitions
Constraints:
The viewport's size is determined by the
block-progression-dimension
and
inline-progression-dimension
traits.
For values of "auto", the content size of the instream foreign object is used.
The content size of an instream-foreign-object is determined by taking the
intrinsic size of the object and scaling as specified by the
content-height
content-width
and
scaling
traits. If one of the content-height or
content-width is not "auto", the same scale factor
(as calculated from the specified non-auto value) is applied equally to
both directions.
Once scaled, the reference-area
is aligned with respect to the viewport-area
using the
text-align
and
display-align
traits. If it is too large for the viewport-area,
the instream-foreign-object is aligned as if it would fit and the
overflow
trait controls the clipping, scroll bars, etc.
In the case when the instream-foreign-object does not specify an intrinsic
size of the object, the size is determined in an implementation defined
manner.
Contents:
The fo:instream-foreign-object flow object has
a child from a non-XSL
namespace. The permitted structure of this child is that
defined for that namespace.
The fo:instream-foreign-object flow object may have additional attributes
in the non-XSL namespace. These,
as well as the xsl defined properties,
are made available to the processor
of the content of the flow object. Their semantics is defined by that
namespace.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.14.1 "block-progression-dimension"
7.20.1 "clip"
7.14.2 "content-height"
7.28.1 "content-type"
7.14.3 "content-width"
7.13.4 "display-align"
7.13.5 "dominant-baseline"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.4 "line-height"
7.20.2 "overflow"
7.14.10 "scaling"
7.14.11 "scaling-method"
7.15.9 "text-align"
7.14.12 "width"
6.6.7 fo:inline
Common Usage:
The fo:inline formatting object is commonly used for formatting
a portion of text with a background or enclosing it in a border.
Areas:
The fo:inline formatting object generates one or more
normal
inline-area
s.
The fo:inline returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:inline.
Constraints:
No area may have more than one normal child area
returned by the same fo:inline formatting object.
The children of each normal area returned by an fo:inline
must satisfy the constraints specified in
4.7.3 Inline-building
In addition the constraints imposed by the traits derived from the
properties applicable to this formatting object must be satisfied.
The geometric constraints are rigorously defined in
4 Area Model
Contents:
(#PCDATA|
%inline;
%block;
)*
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
An fo:inline that is a child of an fo:footnote may not have
block-level children.
An fo:inline that is a descendant of an fo:leader or of the
fo:inline child of an fo:footnote
may not have block-level children, unless it has a nearer ancestor that
is an fo:inline-container.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.14.1 "block-progression-dimension"
7.17.1 "color"
7.13.5 "dominant-baseline"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.4 "line-height"
7.16.4 "text-decoration"
7.28.8 "visibility"
7.14.12 "width"
7.15.13 "wrap-option"
6.6.8 fo:inline-container
Common Usage:
The fo:inline-container flow object is used to
generate an inline reference-area, typically containing
text blocks with a different writing-mode.
NOTE:
The use of this flow object is not required for
bi-directional text;
in this case the Unicode BIDI
algorithm and the fo:bidi-override are sufficient.
Areas:
The fo:inline-container formatting object generates one or more
viewport/reference pair
s. The viewport-areas generated
by the fo:inline-container are
normal
inline-level
areas that
use the
large-allocation-rectangle
as defined in
4.2.3 Geometric Definitions
The fo:inline-container returns these areas and any
page-level-out-of-line
areas
returned by the children of the fo:inline-container.
Trait Derivation:
The areas generated by the fo:inline-container formatting object have
a value of "true" for the
is-reference-area
The size of the viewport-area and the reference-area has to
be fixed in the inline-progression-direction.
It must be specified
unless the inline-progression-direction is parallel to the
inline-progression-direction of the reference-area into
which
the areas generated by this flow object are placed.
The values in the baseline-table of
this object are calculated as follows:
baseline
If the writing mode has a block-progression-direction that
is parallel to the block-progression-direction of the parent:
the alignment-point is at the position of the dominant-baseline
of the first descendant line-area. If there is no such line-area
the alignment-point is at the position of the after-edge of the allocation rectangle.
If the writing mode has a block-progression-direction that
is not parallel to the block-progression-direction of the parent:
the alignment-point is at the position that is half way between
the before-edge and after-edge of the content rectangle.
before-edge
The alignment-point is at the position of the before-edge of
the allocation rectangle.
text-before-edge
The alignment-point is at the position that is the closest
to the before-edge of the allocation rectangle selected from the
two candidate edges.
If the writing mode has a block-progression-direction that
is parallel to the block-progression-direction of the parent
the candidate edges are the before-edge and
the after-edge of the content rectangle; if it is not, the candidate
edges are the start-edge and the end-edge of the content rectangle.
middle
The alignment-point is at the position that is half way between
the before-edge and after-edge of the allocation rectangle.
after-edge
The alignment-point is at the position of the after-edge of
the allocation rectangle.
text-after-edge
The alignment-point is at the position that is the closest
to the after-edge of the allocation rectangle selected from the
two candidate edges.
If the writing mode has a block-progression-direction that
is parallel to the block-progression-direction of the parent
the candidate edges are the before-edge and
the after-edge of the content rectangle; if it is not, the candidate
edges are the start-edge and the end-edge of the content rectangle.
ideographic
The alignment-point is at the position that is
7/10 of the distance from the before-edge of the allocation rectangle
to the after-edge of the allocation rectangle.
alphabetic
The alignment-point is at the position that is
6/10 of the distance from the before-edge of the allocation rectangle
to the after-edge of the allocation rectangle.
hanging
The alignment-point is at the position that is
2/10 of the distance from the before-edge of the allocation rectangle
to the after-edge of the allocation rectangle.
mathematical
The alignment-point is at the position that is
5/10 of the distance from the before-edge of the allocation rectangle
to the after-edge of the allocation rectangle.
Constraints:
No area may have more than one normal child area
returned by the same fo:inline-container formatting object.
The children of each reference-area generated by an fo:inline-container
formatting object
must be normal
block-area
s returned by the children of the fo:inline-container,
must be
properly stacked
, and
must be
properly ordered
Any
reference-level-out-of-line
areas returned by the children of the fo:inline-container
are handled as described in
6.10.2 fo:float
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.14.1 "block-progression-dimension"
7.20.1 "clip"
7.13.4 "display-align"
7.13.5 "dominant-baseline"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.4 "line-height"
7.20.2 "overflow"
7.20.3 "reference-orientation"
7.14.12 "width"
7.27.7 "writing-mode"
6.6.9 fo:leader
Common Usage:
The fo:leader formatting object is often used:
in table-of-contents
to generate sequences of "." glyphs that separate
titles from page numbers
to create entry fields in fill-in-the-blank forms
to create horizontal rules for use as separators
Areas:
The fo:leader formatting object generates and returns
a single normal
inline-area
Trait Derivation:
If the value of the
leader-pattern
is "use-content"
the
block-progression-dimension
of the content-rectangle is determined
in the same manner as for line-areas; otherwise it is determined by
the
rule-thickness
trait.
Constraints:
If the leader's minimum length is too long to place in the
line-area, the leader will begin a new line. If it is too long to be
placed in a line by itself, it will overflow the line and potentially
overflow the reference-area in accordance with that container's
overflow
trait.
The fo:leader formatting object can have any inline formatting objects and
characters as its children, except that fo:leaders may not be nested.
Its children
are ignored unless the value of the
leader-pattern
trait is "use-content".
NOTE:
If the value of the
leader-pattern
trait is "use-content"
and the fo:leader has no children, the leader shall be filled with
blank space.
The inline-area generated by the fo:leader has a dimension in the
inline-progression-direction which shall be at least the
leader-length.minimum
and at most the
leader-length.maximum
For lines-areas that have been specified to be justified, the justified
line-area must honor the
leader-alignment
trait of any inline-areas
generated by fo:leaders.
If the value of the
leader-pattern
trait is "dots" or "use-content",
the following constraint applies:
The inline-area generated by the fo:leader has as its children the areas
returned by children of the fo:leader, or obtained by formatting the pattern
specified in the
leader-pattern
trait, repeated an integral number of
times. If the width of even a single repetition is larger than the dimension
of the inline-area in the inline-progression-direction, the inline-area shall
be filled with blank space. The space-start and space-end of the child areas
is set to account for the constraints specified in the
leader-pattern-width
and
leader-alignment
traits.
NOTE:
If it is desired that the leader should stretch to fill all available space
on a line, the maximum length of the leader should be specified to be at least as
large as the column width.
NOTE:
The alignment of the leader may be script specific and may require indicating
what alignment point is required, because it is different from the default alignment for
the script. For example, in some usage of Indic scripts the leader is aligned at the
alphabetic baseline.
NOTE:
An fo:leader can be wrapped in an fo:block, yielding a block-area
with a line-area containing the leader,
to create a rule for separating
or decorating block-areas.
Contents:
(#PCDATA|
%inline;
)*
The content must not contain an fo:leader, fo:inline-container,
fo:block-container,
fo:float, fo:footnote, or fo:marker
either as a direct child or as a descendant.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.17.1 "color"
7.13.5 "dominant-baseline"
7.27.5 "text-depth"
7.27.4 "text-altitude"
7.28.2 "id"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.21.1 "leader-alignment"
7.21.4 "leader-length"
7.21.2 "leader-pattern"
7.21.3 "leader-pattern-width"
7.21.5 "rule-style"
7.21.6 "rule-thickness"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.16.5 "text-shadow"
7.28.8 "visibility"
7.16.8 "word-spacing"
6.6.10 fo:page-number
Common Usage:
The fo:page-number formatting object is used to obtain an
inline-area
whose content is
the page-number for the page on which the inline-area is
placed.
Areas:
The fo:page-number formatting object generates and returns
a single normal
inline-area
Constraints:
The child areas of this inline-area are the same as the result of
formatting a result-tree fragment consisting of fo:character flow
objects; one for each character in the page-number string and
with only the "character" property specified.
The page-number string is obtained by converting the page-number
for the page
on which the inline-area is placed in accordance with the
number to string conversion properties of the ancestor
fo:page-sequence.
NOTE:
The conversion properties are:
7.24.1 "format"
7.24.2 "grouping-separator"
7.24.3 "grouping-size"
7.24.4 "letter-value"
7.9.1 "country"
, and
7.9.2 "language"
Contents:
EMPTY
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.13.5 "dominant-baseline"
7.28.2 "id"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.28.6 "score-spaces"
7.27.4 "text-altitude"
7.16.4 "text-decoration"
7.27.5 "text-depth"
7.16.5 "text-shadow"
7.16.6 "text-transform"
7.28.8 "visibility"
7.16.8 "word-spacing"
7.15.13 "wrap-option"
6.6.11 fo:page-number-citation
Common Usage:
The fo:page-number-citation is used to reference the
page-number for the page containing the first
normal
area returned by the cited formatting
object.
NOTE:
It may be used to provide the page-numbers in the table of contents,
cross-references, and index entries.
Areas:
The fo:page-number-citation formatting object generates and returns
a single normal
inline-area
Constraints:
The
cited page-number
is the number of the page containing,
as a descendant, the
first normal area returned by the formatting object with
an
id
trait matching the
ref-id
trait
of the fo:page-number-citation (the referenced formatting object).
The
cited page-number string
is obtained by converting the
cited page-number in accordance with the
number to string conversion properties of the ancestor
fo:page-sequence of the referenced formatting object.
NOTE:
The conversion properties are:
7.24.1 "format"
7.24.2 "grouping-separator"
7.24.3 "grouping-size"
7.24.4 "letter-value"
7.9.1 "country"
, and
7.9.2 "language"
The child areas of the generated inline-area are the same as the result of
formatting a result-tree fragment consisting of fo:character flow
objects; one for each character in the cited page-number string and
with only the "character" property specified.
Contents:
EMPTY
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.8 Common Font Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.13.5 "dominant-baseline"
7.28.2 "id"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.16.2 "letter-spacing"
7.15.4 "line-height"
7.28.5 "ref-id"
7.28.6 "score-spaces"
7.27.4 "text-altitude"
7.16.4 "text-decoration"
7.27.5 "text-depth"
7.16.5 "text-shadow"
7.16.6 "text-transform"
7.28.8 "visibility"
7.16.8 "word-spacing"
7.15.13 "wrap-option"
6.7 Formatting Objects for Tables
6.7.1 Introduction
There are nine formatting objects used to construct tables:
fo:table-and-caption,
fo:table,
fo:table-column,
fo:table-caption,
fo:table-header,
fo:table-footer,
fo:table-body,
fo:table-row, and
fo:table-cell.
The result tree structure is shown below.
[D]
Tree Representation of the Formatting Objects for Tables
6.7.1.1 Examples
6.7.1.1.1 Simple Table, Centered and Indented
Input sample:
The table and its caption is centered in the available space
between the following indents: start-indent="100pt" and end-indent="0pt".
The centering and indent is not desired for the content of the caption
and the cells.
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
Cell 1 Cell 2 Cell 3
6.7.1.1.2 Simple Table with Relative Column-width Specifications
This example is using a simple, "Oasis-table-model-like", markup for the
table elements. The column-widths are specified using full
relative column-width specification.
Input sample:
XSL Stylesheet:
version='1.0'>
'+-0123456789.abcdefghijklmnopqrstuvwxyz',
'+-0123456789.'))"/>
'abcdefghijklmnopqrstuvwxyz+-0123456789.',
'abcdefghijklmnopqrstuvwxyz'))"/>
Result Instance: elements and attributes in the fo:
namespace
6.7.2 fo:table-and-caption
Common Usage:
The fo:table-and-caption flow object is used for
formatting a table
together with its caption.
NOTE:
A fo:table-and-caption may be placed inline by enclosing
it in an fo:inline-container.
NOTE:
This formatting object corresponds to the CSS anonymous
box that encloses the table caption and the table.
Areas:
The fo:table-and-caption formatting object generates one or more
normal
block-area
s.
The fo:table-and-caption returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:table-and-caption.
Constraints:
No area may have more than one normal child area
returned by the same fo:table-and-caption formatting object.
The children of the areas generated by the fo:table-and-caption
are one or two areas;
one for the table caption and one for the table itself.
These are positioned relative to each other as specified by the
caption-side
trait.
They are placed relative to the content-rectangle of the generated area
as specified by the
text-align
trait.
Contents:
table-caption
?,
table
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.12 Common Relative Position Properties
7.19.1 "break-after"
7.19.2 "break-before"
7.26.7 "caption-side"
7.28.2 "id"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.9 "text-align"
6.7.3 fo:table
Common Usage:
The fo:table flow object is used for formatting the
tabular material
of a table.
The fo:table flow object and its child flow objects
model the
visual layout of a table in a "row primary" manner. A complete table
may be seen as consisting of a grid of rows and columns where each
cell occupies one or more grid units in the row-progression-direction
and column-progression-direction.
The table content is divided into a header (optional), footer (optional),
and one or more bodies. Properties specify if the headers and footers
should be repeated at a break in the table. Each of these parts occupies
one or more rows in the table grid.
Areas:
The fo:table formatting object generates and
returns one or more
normal
block-area
s.
In addition the fo:table returns any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:table.
The areas generated and returned by the fo:table formatting object have
as children:
Areas, with only background, corresponding to the
table-header, table-footer, table-body,
spanned columns, columns, and rows.
NOTE:
The spanned columns (fo:table-column with a "number-columns-spanned"
value greater than 1) are used in the same way as the "column groups"
in CSS2 for determining the background.
Areas returned by the fo:table-cell formatting objects.
These areas have a z-index controlling the rendering order
determined in accordance with 17.5.1 of the CSS2 specification
).
NOTE:
A cell that is spanned may have a different background in each
of the grid units it occupies.
Trait Derivation:
The areas generated and returned
by the fo:table formatting object have
a value of "true" for the
is-reference-area
The column-progression-direction and row-progression-direction are
determined by the
writing-mode
trait. Columns use the
inline-progression-direction, and
rows use the block-progression-direction.
The method for deriving the border traits for a table is
specified by the "border-collapse" property.
If the value of the "border-collapse" property is
"separate" the border
is composed of two components. The first, which is placed
with the inside edge coincident with the outermost table grid boundary line,
has the width of half the value for the "border-separation" property.
It is filled in accordance with the "background" property of the fo:table.
Second, outside the outermost table grid boundary line
is placed, for each side of the table, a border based
on a border specified on the table.
If the value of the "border-collapse" property is "collapse"
or "collapse-with-precedence" the border
is determined, for each segment, at the cell level.
NOTE:
By specifying "collapse-with-precedence" and
an appropriately
high precedence on the border
specification for the fo:table one may ensure that this specification
is the one used on all border segments.
Constraints:
No area may have more than one normal child area
returned by the same fo:table formatting object.
The inline-progression-dimension
of the content-rectangle of the table is the
sum of the inline-progression-dimensions
of the columns in the table grid. The method used to determine these
inline-progression-dimensions is governed by the values of
the
table-layout
and
the
inline-progression-dimension
traits in the following manner:
inline-progression-dimension="auto" table-layout="auto"
The automatic table layout shall be used.
inline-progression-dimension="auto" table-layout="fixed"
The automatic table layout shall be used.
inline-progression-dimension=
or
The automatic table layout shall be used.
inline-progression-dimension=
or
The fixed table layout shall be used.
The automatic table layout and fixed table layout is defined in
17.5.2 of the CSS2 specification
).
The method for determining the block-progression-dimension
of the table is
governed by the
block-progression-dimension
trait.
NOTE:
The CSS2 specification explicitly does not specify
what the behavior
should be if there is a mismatch between an explicitly
specified table block-progression-dimension
and the block-progression-dimensions of the content.
NOTE:
The use of the "proportional-column-width()" function is only
permitted when the fixed table layout is used.
If the use of proportional column widths are
desired on a table of an unknown explicit width,
the inline-progression-dimension cannot be specified to be "auto".
Instead, the width must be specified as a percentage.
For example, setting table-layout="fixed" and
inline-progression-dimension="100%" would allow proportional
column widths while simultaneously creating a table as wide as
possible in the current context.
NOTE:
The result of using a percentage for
the width may be unpredictable, especially when using the
automatic table layout.
It is an error if two table-cells overlap.
NOTE:
Such overlap could be due to the same column-number being
assigned to two different cells in the same row, or due to column or
row spanning causing an overlap.
Contents:
table-column
*,
table-header
?,
table-footer
?,
table-body
+)
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.12 Common Relative Position Properties
7.14.1 "block-progression-dimension"
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.3 "border-collapse"
7.26.4 "border-end-precedence"
7.26.5 "border-separation"
7.26.6 "border-start-precedence"
7.19.1 "break-after"
7.19.2 "break-before"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.18.3 "intrusion-displace"
7.14.4 "height"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.26.16 "table-layout"
7.26.17 "table-omit-footer-at-break"
7.26.18 "table-omit-header-at-break"
7.14.12 "width"
7.27.7 "writing-mode"
6.7.4 fo:table-column
Common Usage:
The fo:table-column auxiliary formatting object specifies
characteristics
applicable to table cells that have the same column and span.
The most important property is the "column-width" property.
Areas:
The fo:table-column formatting object does not generate
or return any areas.
It holds a set of traits that provide constraints on the
column widths and a specification of some presentation
characteristics, such as background which
affects the areas generated by the fo:table (see
6.7.3 fo:table
).
Inheritable properties may also be specified on the fo:table-column.
These can be referenced by the from-table-column() function
in an expression.
NOTE:
More details,
in particular the use of an fo:table-column with
number-columns-spanned greater than 1, are given in
the description of fo:table and of the from-table-column() function.
Constraints:
None.
Contents:
EMPTY
The following properties apply to this formatting object:
7.7 Common Border, Padding, and Background Properties
NOTE:
Only the background properties
from this set apply.
If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the
border properties also apply.
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.26.8 "column-number"
7.26.9 "column-width"
7.26.12 "number-columns-repeated"
7.26.13 "number-columns-spanned"
7.28.8 "visibility"
6.7.5 fo:table-caption
Common Usage:
The fo:table-caption formatting object
is used to contain block-level formatting objects containing
the caption for the table only when using the fo:table-and-caption.
Areas:
The fo:table-caption formatting object generates one or more
normal
reference-area
s.
The fo:table-caption returns these reference-areas and any
page-level-out-of-line
areas
returned by the children of the fo:table-caption.
Trait Derivation:
The areas generated by the fo:table-caption formatting object have
a value of "true" for the
is-reference-area
Constraints:
For the case when the value of the
caption-side
trait is "before" or "after" the inline-progression-dimension of
the content-rectangle of the generated
reference-area is equal to the inline-progression-dimension of
the content-rectangle of the reference-area that encloses
it.
When the value is "start" or "end" the inline-progression-dimension
of the generated reference-area is constrained by the value of
the
inline-progression-dimension
trait.
When the value is "top", "bottom", "left", or
"right" the value is mapped in the same way as for corresponding
properties (see
5.3 Computing the Values of Corresponding Properties
) and the property is then
treated as if the corresponding value had been specified.
If the caption
is to be positioned before the table, the areas generated by
the fo:table-caption shall be placed in the area tree as though the fo:table-caption
had a "keep-with-next" property with value "always".
If the caption is to be positioned after the table, the areas generated by
the fo:table-caption shall be placed in the area tree as though the fo:table-caption
had a "keep-with-previous" property with value "always".
No area may have more than one normal child area
returned by the same fo:table-caption formatting object.
The children of each normal area returned by an fo:table-caption
formatting object
must be normal
block-area
s returned by the children of
the fo:table-caption,
must be
properly stacked
, and
must be
properly ordered
Any
reference-level-out-of-line
areas returned by the children of the fo:table-caption
are handled as described in
6.10.2 fo:float
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.12 Common Relative Position Properties
7.14.1 "block-progression-dimension"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.14.12 "width"
6.7.6 fo:table-header
Common Usage:
The fo:table-header formatting object is used to contain
the content
of the table header.
Areas:
The fo:table-header formatting object does not generate any areas. The
fo:table-header formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:table-header.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:table-header
is the same order as the children are ordered under the fo:table-header.
Contents:
table-row
+|
table-cell
+)
The fo:table-header has fo:table-row (one or more) as
its children,
or alternatively fo:table-cell (one or more). In the latter case
cells are grouped into rows using the starts-row and ends-row properties.
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
NOTE:
Only the background properties
from this set apply.
If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the
border properties also apply.
7.12 Common Relative Position Properties
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.28.2 "id"
7.28.8 "visibility"
6.7.7 fo:table-footer
Common Usage:
The fo:table-footer formatting object is used to contain
the content
of the table footer.
Areas:
The fo:table-footer formatting object does not generate any areas. The
fo:table-footer formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:table-footer.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:table-footer
is the same order as the children are ordered under the fo:table-footer.
Contents:
table-row
+|
table-cell
+)
The fo:table-footer has fo:table-row (one or more) as
its children,
or alternatively fo:table-cell (one or more). In the latter case
cells are grouped into rows using the starts-row and ends-row properties.
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
NOTE:
Only the background properties
from this set apply.
If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the
border properties also apply.
7.12 Common Relative Position Properties
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.28.2 "id"
7.28.8 "visibility"
6.7.8 fo:table-body
Common Usage:
The fo:table-body formatting object is used to contain
the content
of the table body.
Areas:
The fo:table-body formatting object does not generate any areas. The
fo:table-body formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:table-body.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:table-body
is the same order as the children are ordered under the fo:table-body.
Contents:
table-row
+|
table-cell
+)
The fo:table-body has fo:table-row (one or more) as its
children,
or alternatively fo:table-cell (one or more). In the latter case
cells are grouped into rows using the starts-row and ends-row properties.
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
NOTE:
Only the background properties
from this set apply.
If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the
border properties also apply.
7.12 Common Relative Position Properties
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.28.2 "id"
7.28.8 "visibility"
6.7.9 fo:table-row
Common Usage:
The fo:table-row formatting object is used to group
table-cells into
rows; all table-cells in a table-row start in the same geometric row on
the table grid.
Areas:
The fo:table-row formatting object does not generate any areas. The
fo:table-row formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:table-row.
The fo:table-row holds
a specification of some presentation
characteristics, such as background which
affects the areas generated by the fo:table (see
6.7.3 fo:table
).
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:table-row
is the same order as the children are ordered under the fo:table-row.
The method for determining the height of the row in the grid is
governed by the
row-height
trait.
Contents:
table-cell
+)
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.14.1 "block-progression-dimension"
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
NOTE:
Only the background properties
from this set apply.
If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the
border properties also apply.
7.12 Common Relative Position Properties
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.19.1 "break-after"
7.19.2 "break-before"
7.28.2 "id"
7.14.4 "height"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.28.8 "visibility"
6.7.10 fo:table-cell
Common Usage:
The fo:table-cell formatting object is used to group
content to be
placed in a table cell.
The "starts-row" and "ends-row" properties can be
used when the input data does not have elements containing
the cells in each row, but instead, for example, each row starts
at elements of a particular type.
Areas:
The fo:table-cell formatting object generates one or more
normal
reference-area
s.
The fo:table-cell returns these reference-areas and any
page-level-out-of-line
areas
returned by the children of the fo:table-cell.
Trait Derivation:
The areas generated by the fo:table-cell formatting object have
a value of "true" for the
is-reference-area
The method for deriving the border for a cell is
specified by the
border-collapse
trait.
If the value of the
border-collapse
trait is "separate" the border
is composed of two components. The first, which is placed
with the outside edge coincident with the table grid boundary line,
has the width of half the value for the
border-separation
trait.
It is filled in accordance with the
background
trait of the fo:table.
Inside this border is placed, for each side of the cell, a border based
on a border specified on the cell or inherited.
If the value of the
border-collapse
trait is "collapse-with-precedence" the border
for each side of the cell is determined by, for each segment of a border,
selecting, from all border specifications for that segment, the border
that has the highest precedence. It is an error if there are two such
borders that have the same precedence but are not identical.
An implementation may recover by selecting
one of the borders.
Each border segment is placed centered on the table grid boundary line.
On devices that do not support sub-pixel rendering,
if an effective border width is determined to be an odd number of pixels
it is implementation defined on which side of the grid boundary line
the odd pixel is placed.
If the value of the border-collapse trait is "collapse", the border for
each side of the cell is determined by, for each segment of a border,
selecting, from all border specifications for that segment, the border that
has the most "eye catching" border style, see below for the details. Each
border segment is placed centered on the table grid boundary line. On
devices that do not support sub-pixel rendering, if an effective border
width is determined to be an odd number of pixels it is implementation
defined on which side of the grid boundary line the odd pixel is placed.
Where there is a conflict between the styles of border segments that
collapse, the following rules determine which border style "wins":
Borders with the 'border-style' of 'hidden' take precedence over all
other conflicting borders. Any border with this value suppresses all
borders at this location.
Borders with a style of 'none' have the lowest priority. Only if the
border properties of all the elements meeting at this edge are 'none' will
the border be omitted (but note that 'none' is the default value for the
border style.)
If none of the styles is 'hidden' and at least one of them is not
'none', then narrow borders are discarded in favor of wider ones.
If the remaining border styles have the same 'border-width' than styles
are preferred in this order: 'double', 'solid', 'dashed', 'dotted',
'ridge', 'outset', 'groove', and the lowest: 'inset'.
If border styles differ only in color, then a style set on a cell wins
over one on a row, which wins over a row group, column, column group and,
lastly, table.
Constraints:
A table-cell occupies one or more grid units in the
row-progression-direction and
column-progression-direction.
The content-rectangle of the cell is the size of the portion
of the grid
the cell occupies minus, for each of the four sides:
If the value of the
border-collapse
trait is "separate":
half the value of the
border-separation
trait; otherwise 0.
If the value of the
border-collapse
trait is "separate":
the thickness of the cell-border; otherwise half the thickness of the
effective border.
The cell padding.
The method for determining the block-progression-dimension
of the cell in the grid is governed by the
row-height
trait.
No area may have more than one normal child area
returned by the same fo:table-cell formatting object.
The children of each normal area returned by an fo:table-cell
formatting object
must be normal
block-area
s returned by the children of
the fo:table-cell,
must be
properly stacked
, and
must be
properly ordered
Any
reference-level-out-of-line
areas returned by the children of the fo:table-cell
are handled as described in
6.10.2 fo:float
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.12 Common Relative Position Properties
7.26.1 "border-after-precedence"
7.26.2 "border-before-precedence"
7.26.4 "border-end-precedence"
7.26.6 "border-start-precedence"
7.14.1 "block-progression-dimension"
7.26.8 "column-number"
7.13.4 "display-align"
7.13.6 "relative-align"
7.26.10 "empty-cells"
7.26.11 "ends-row"
7.14.4 "height"
7.28.2 "id"
7.14.5 "inline-progression-dimension"
7.26.13 "number-columns-spanned"
7.26.14 "number-rows-spanned"
7.26.15 "starts-row"
7.14.12 "width"
6.8 Formatting Objects for Lists
6.8.1 Introduction
There are four formatting objects used to construct lists:
fo:list-block, fo:list-item, fo:list-item-label, and fo:list-item-body.
[D]
Tree representation of the formatting Objects for Lists.
The fo:list-block has the role of containing the complete list and
of specifying values used for the list geometry in the
inline-progression-direction (see details below).
The children of the fo:list-block are one or more fo:list-item, each
containing a pair of fo:list-item-label and fo:list-item-body.
The fo:list-item has the role of containing each item in a list.
The fo:list-item-label has the role of containing the content,
block-level formatting objects, of the label for the
list-item; typically an fo:block containing
a number, a dingbat character, or a term.
The fo:list-item-body has the role of containing the content,
block-level formatting objects, of the body of the
list-item; typically one or more fo:block.
The placement, in the block-progression-direction, of the
label with respect to the body is made in accordance with the
"vertical-align" property of the fo:list-item.
[D]
The specification of the list geometry in the
inline-progression-direction is achieved by:
Specifying appropriate values of the "provisional-distance-between-starts"
and "provisional-label-separation" properties.
The "provisional-distance-between-starts" specifies the desired
distance between the start-indents of the label and the body of
the list-item.
The "provisional-label-separation" specifies the desired
separation between the end-indent of the label and the start-indent
of the body of the list-item.
Specifying end-indent="label-end()" on the fo:list-item-label.
Specifying start-indent="body-start()" on the fo:list-item-body.
NOTE:
These list specific functions are defined in
7.28.3 "provisional-label-separation"
and
7.28.4 "provisional-distance-between-starts"
The start-indent of the list-item-label and end-indent of the
list-item-body, if desired, are typically specified as a length.
6.8.1.1 Examples
6.8.1.1.1 Enumerated List
The list-items are contained in an
"ol"
element. The items are
contained in
"item"
elements and contain text (as opposed to
paragraphs).
The style is to enumerate the items
alphabetically with a dot after
the letter.
Input sample:
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
6.8.1.1.2 HTML-style
"dl"
lists
In this example the stylesheet processes HTML-style
"dl"
lists, which
contain unwrapped pairs of
"dt"
and
"dd"
elements, transforming
them into fo:list-blocks.
Balanced pairs of
"dt"
"dd"
s are converted into fo:list-items.
For unbalanced
"dt"
"dd"
s, the stylesheet makes the
following assumptions:
Multiple
"dt"
s are grouped together into a single
fo:list-item-label in a single list-item.
Multiple DDs are:
Output as individual FO list-items with an empty
list-item-label if the stylesheet variable
$allow-naked-dd
is
true
Are grouped together into a single FO list-item-body if
$allow-naked-dd
is
false
In other words, given a structure like this:
If
$allow-naked-dd
is
true
, the result instance: elements
and attributes in the fo: namespace is:
If
$allow-naked-dd
is
false
, the result instance:
elements and attributes in the fo: namespace is:
XSL Stylesheet:
version='1.0'>
Included stylesheet "dtdd.xsl"
version='1.0'>
Text Text Text Text Text Text
The "dtdd.xsl" stylesheet may be customized in the following ways:
Set the value of
$allow-naked-dd
to control the processing of unbalanced
"dd"
s.
Change
"dt"
to the name of the element
which is a term in the list.
Change
"dd"
to the name of the element
which is a definition in the list.
In the, perhaps unlikely, event that the documents may contain
an element named
"force-list-to-be-empty"
, that element name
should be changed to a name that is not used in the documents.
In the stylesheet using the "dtdd.xsl" stylesheet change the
"dl"
to the name of the element which is the wrapper for the list.
6.8.2 fo:list-block
Common Usage:
The fo:list-block flow object is used to format a list.
Areas:
The fo:list-block formatting object generates one or more
normal
block-area
s.
The fo:list-block returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:list-block.
Constraints:
No area may have more than one normal child area
returned by the same fo:list-block formatting object.
The children of each normal area returned by an fo:list-block
formatting object
must be normal
block-area
s returned by the children of the fo:list-block,
must be
properly stacked
, and
must be
properly ordered
Contents:
list-item
+)
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.12 Common Relative Position Properties
7.19.1 "break-after"
7.19.2 "break-before"
7.28.2 "id"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.28.4 "provisional-distance-between-starts"
7.28.3 "provisional-label-separation"
6.8.3 fo:list-item
Common Usage:
The fo:list-item formatting object contains the label and the
body of an item in a list.
Areas:
The fo:list-item formatting object generates one or more
normal
block-area
s.
The fo:list-item returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:list-item.
Constraints:
No area may have more than one normal child area
returned by the same fo:list-item formatting object.
The children of each normal area returned by an fo:list-item
formatting object must be normal
block-area
s returned by
the fo:list-item-label and the fo:list-item-body flow objects and
must be
properly ordered
Those returned by the fo:list-item-label
must be
properly stacked
and
those returned by the fo:list-item-body
must be
properly stacked
The children of each normal area returned by an fo:list-item
formatting object returned by the
fo:list-item-label
and fo:list-item-body objects are positioned
in the block-progression-direction with respect to each
other according to the
relative-align
trait.
In the inline-progression-direction
these areas are positioned in the usual manner for properly
stacked areas.
It is an error if the content-rectangles of the areas overlap.
The block-progression-dimension of the
content-rectangle of an area
generated by the fo:list-item is just large enough so that the
allocation-rectangles of all its child areas are contained in it. In
particular, the space-before and space-after of the child areas have no
effect on the spacing of the list item. For purposes of the
block-stacking constraints the areas generated by fo:list-item are
treated as if there they have a fence preceding and a fence following
them.
NOTE:
These areas are not reference-areas, hence the indents on all
objects within them are measured relative to the reference-area that
holds the content of the fo:list-block.
Contents:
list-item-label
list-item-body
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.10 Common Margin Properties-Block
7.12 Common Relative Position Properties
7.19.1 "break-after"
7.19.2 "break-before"
7.28.2 "id"
7.18.3 "intrusion-displace"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.13.6 "relative-align"
6.8.4 fo:list-item-body
Common Usage:
The fo:list-item-body formatting object contains the
content
of the body of a list-item.
Areas:
The fo:list-item-body formatting object does not generate any areas. The
fo:list-item-body formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:list-item-body.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:list-item-body
is the same order as the children are ordered under the fo:list-item-body.
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.28.2 "id"
7.19.3 "keep-together"
6.8.5 fo:list-item-label
Common Usage:
The fo:list-item-label formatting object contains the
content
of the label of a list-item, typically used to either enumerate,
identify, or adorn the list-item's body.
Areas:
The fo:list-item-label formatting object does not generate any areas. The
fo:list-item-label formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:list-item-label.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:list-item-label
is the same order as the children are ordered under the fo:list-item-label.
Contents:
%block;
)+
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.28.2 "id"
7.19.3 "keep-together"
6.9 Dynamic Effects: Link and Multi Formatting Objects
6.9.1 Introduction
Dynamic effects,
whereby user actions (including User Agent state)
can influence the behavior and/or representation of portions of
a document, can be
achieved through the use of the formatting objects included in this
section:
One-directional single-target links.
The ability to switch between the display of two or more
formatting object subtrees. This can be used for, e.g.,
expandable/collapsible table of contents, display of an icon or
a full table or graphic.
The ability to switch between different property values, such
as color or font-weight, depending on a User Agent state, such as "hover".
The switching between subtrees is achieved by using the
following three formatting objects:
fo:multi-switch,
fo:multi-case, and
fo:multi-toggle.
The result tree structure is shown below.
[D]
Tree Representation of the Multi Formatting Objects
The role of the fo:multi-switch is to wrap fo:multi-case
formatting objects, each containing a subtree. Each subtree is
given a name on the fo:multi-case formatting object. Activating,
for example implemented as clicking on,
an fo:multi-toggle causes a named subtree, the previous, the next, or
"any" subtree to be displayed; controlled by the "switch-to" property.
For "any", an implementation would typically
present a list of choices each labeled using the "case-title" property
of the fo:multi-case.
The initial subtree displayed is controlled by the "starting-state"
property on the fo:multi-case.
Switching between different property values is achieved by using the
fo:multi-properties and fo:multi-property-set formatting objects, and
the merge-property-values() function. For example, an
fo:multi-property-set can be used to specify various properties for
each of the possible values of the active-state property, and
merge-property-values() can be used to apply them on a given formatting
object.
6.9.1.1 Examples
6.9.1.1.1 Expandable/Collapsible Table of Contents
Input sample:
In this example
the chapter and section titles are extracted into a table of contents
placed at the front of the result. The chapter titles are preceded
by an icon indicating either collapsed or expanded state. The section
titles are only shown in the expanded state. Furthermore, there are
links from the titles in the table of contents to the corresponding
titles in the body of the document.
The two states are achieved by, for each chapter title, using
an fo:multi-switch with a fo:multi-case for each state. The icon
is contained in an fo:multi-toggle with the appropriate fo:multi-case
"switch-to" property to select the other state.
The links in the table of contents are achieved by
adding a unique id on the title text in the body of the document
and wrapping the title text in the table of contents in an
fo:basic-link referring to that id.
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
6.9.1.1.2 Styling an XLink Based on the Active State
Input sample:
Follow this
xlink:title="An Example"
xlink:show="new"
xlink:actuate="onRequest">link
TRs of the W3C.
In this example an fo:basic-link contains a series of
fo:multi-property-sets
that specify various colors or text-decorations depending on the active
state, and a wrapper around the fo:basic-link that allows for the
merging
of the properties of the fo:multi-properties with those of the
appropriate fo:multi-property-sets.
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
TRs of the W3C.
6.9.2 fo:basic-link
Common Usage:
The fo:basic-link is used for representing the start resource of a simple
one-directional single-target link. The object allows for traversal to the
destination resource, typically by clicking on any of the containing areas.
Areas:
The fo:basic-link formatting object generates one or more
normal
inline-areas.
The fo:basic-link returns these areas, any
page-level-out-of-line
areas, and
any
reference-level-out-of-line
areas
returned by the children of the fo:basic-link.
NOTE:
An fo:basic-link can be enclosed in
an fo:block to create a display area.
Constraints:
No area may have more than one normal child area
returned by the same fo:basic-link formatting object.
The children of each normal area returned by an fo:basic-link
must satisfy the constraints specified in
4.7.3 Inline-building
Contents:
(#PCDATA|
%inline;
%block;
)*
In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.6 Common Aural Properties
7.7 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Inline
7.12 Common Relative Position Properties
7.13.1 "alignment-adjust"
7.13.2 "alignment-baseline"
7.13.3 "baseline-shift"
7.22.5 "destination-placement-offset"
7.13.5 "dominant-baseline"
7.22.6 "external-destination"
7.28.2 "id"
7.22.7 "indicate-destination"
7.22.8 "internal-destination"
7.19.3 "keep-together"
7.19.4 "keep-with-next"
7.19.5 "keep-with-previous"
7.15.4 "line-height"
7.22.9 "show-destination"
7.22.13 "target-processing-context"
7.22.12 "target-presentation-context"
7.22.14 "target-stylesheet"
6.9.3 fo:multi-switch
Common Usage:
The fo:multi-switch wraps the specification of
alternative sub-trees of formatting objects (each sub-tree
being within an fo:multi-case), and controls the switching
(activated via fo:multi-toggle) from one alternative to
another.
The direct children of an fo:multi-switch object are
fo:multi-case objects.
Only a single fo:multi-case may be visible at a single time. The user may
switch between the available multi-cases.
Each fo:multi-case may contain one or more fo:multi-toggle objects, which
controls the fo:multi-case switching of the fo:multi-switch.
NOTE:
An fo:multi-switch can be used for many interactive tasks, such as
table-of-content views, embedding link targets, or generalized (even
multi-layered hierarchical), next/previous views. The
latter are today
normally handled in HTML by next/previous links to other
documents, forcing
the whole document to be replaced whenever the users decides to
move on.
Areas:
The fo:multi-switch formatting object does not generate any areas.
The fo:multi-switch formatting object returns the sequence of
areas returned by the currently visible fo:multi-case. If there is no
currently visible fo:multi-case no areas are returned.
Trait Derivation:
The
currently-visible-multi-case
trait
has as its initial value a reference
to the first fo:multi-case child that has a value of "show" of the
starting-state
trait. If there is no such child, it has a value
indicating that there is no currently visible fo:multi-case.
When an fo:multi-toggle is actuated, its closest ancestral
fo:multi-switch's
currently-visible-multi-case
trait value changes to refer to the
fo:multi-case selected by the "switch-to" property value of the
fo:multi-toggle. Once the
currently-visible-multi-case
trait
gets a value indicating that there is no currently visible fo:multi-case, it
becomes impossible to actuate an fo:multi-toggle in this fo:multi-switch.
Constraints:
The order of the sequence of areas returned by the fo:multi-switch
is the same as the order of the areas returned by the currently visible
fo:multi-case.
Contents:
multi-case
+)
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.22.2 "auto-restore"
7.28.2 "id"
6.9.4 fo:multi-case
Common Usage:
The fo:multi-case is used to contain (within
an fo:multi-switch) each alternative sub-tree of formatting
objects among which the parent fo:multi-switch will choose
one to show and will hide the rest.
Areas:
The fo:multi-case formatting object does not generate any areas. The
fo:multi-case formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:multi-case.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:multi-case
is the same order as the children are ordered under the fo:multi-case.
Contents:
(#PCDATA|
%inline;
%block;
)*
An fo:multi-case is only permitted to have
children that would be permitted to be children
of the parent of the fo:multi-switch that is the parent of the
fo:multi-case, except that an
fo:multi-case may not contain fo:marker children.
In particular,
it can contain fo:multi-toggle objects (at any depth), which controls the
fo:multi-case switching.
This restriction applies recursively.
NOTE:
For example, an fo:multi-case whose parent
fo:multi-switch is a child of another fo:multi-case
may only have children that
would be permitted in place of the outer fo:multi-case's parent
fo:multi-switch.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.28.2 "id"
7.22.10 "starting-state"
7.22.3 "case-name"
7.22.4 "case-title"
6.9.5 fo:multi-toggle
Common Usage:
The fo:multi-toggle is typically used to establish an area that when
actuated (for example implemented as "clicked"),
has the effect of switching from one fo:multi-case to another.
The "switch-to" property
value of the fo:multi-toggle typically matches the "case-name" property
value of the fo:multi-case to switch to.
Areas:
The fo:multi-toggle formatting object does not generate any areas. The
fo:multi-toggle formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:multi-toggle.
Each of the areas returned by the fo:multi-toggle has a
switch-to
trait with the same value as on the returning fo:multi-toggle.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:multi-toggle
is the same order as the children are ordered under the fo:multi-toggle.
Activating an area returned by an fo:multi-toggle causes a change
to the value of the
currently-visible-multi-case
of the closest ancestor fo:multi-switch.
(See
7.22.11 "switch-to"
for how
the
switch-to
value selects an fo:multi-case.)
Contents:
(#PCDATA|
%inline;
%block;
)*
An fo:multi-toggle is only permitted as a descendant of an
fo:multi-case.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.28.2 "id"
7.22.11 "switch-to"
6.9.6 fo:multi-properties
Common Usage:
The fo:multi-properties is used to switch between two or more property sets that
are associated with a given portion of content.
NOTE:
An fo:multi-properties formatting object can be
used to give different
appearances to a given portion of content. For example, when
a link changes
from the not-yet-visited state to the visited-state, this
could change the
set of properties that would be used to format the content. Designers
should be careful in choosing which properties they change, because many
property changes could cause reflowing of the text which may
not be
desired in many circumstances. Changing properties such as
"color" or
"text-decoration" should not require re-flowing the text.
The direct children of an fo:multi-properties
formatting object
is an ordered set of fo:multi-property-set formatting objects
followed by a single fo:wrapper formatting object.
The properties, specified on the fo:wrapper, that have been
specified with a value of "merge-property-values()" will take
a value that is a merger of the value on the fo:multi-properties
and the specified values on the fo:multi-property-set
formatting objects that apply.
Areas:
The fo:multi-properties formatting object does not generate any areas. The
fo:multi-properties formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:multi-properties.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:multi-properties
is the same order as the children are ordered under the fo:multi-properties.
Contents:
multi-property-set
+,
wrapper
The properties that should take a merged value shall be specified
with a value of "merge-property-values()". This function, when applied on
an fo:wrapper
that is a direct child of an fo:multi-properties, merges the applicable
property definitions on the fo:multi-property-set siblings.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
7.28.2 "id"
6.9.7 fo:multi-property-set
Common Usage:
The fo:multi-property-set auxiliary formatting object
is used to specify an alternative
set of formatting
properties that can be used to provide an alternate presentation of the
children flow objects of the fo:wrapper child of the
parent of this fo:multi-property-set.
Areas:
The fo:multi-property-set formatting object does not generate
or return any areas. It simply holds a set of traits that may
be accessed by expressions.
Constraints:
None.
Contents:
EMPTY
The following properties apply to this formatting object:
7.28.2 "id"
7.22.1 "active-state"
6.10 Out-of-Line Formatting Objects
6.10.1 Introduction
6.10.1.1 Floats
The fo:float formatting object is used for two distinct purposes.
First, so that during the normal placement of content, some
related content is formatted into a separate area at the beginning of
a page where it is available to be read without immediately intruding
on the reader. The areas generated by this kind of fo:float are called
before-floats. An fo:float is specified to generate before-floats if it
has a "float" property value of "before". The constraints on placing
before-floats on a page are described in the
6.10.1.3 Conditional Sub-Regions
section of this introduction and in the description of the fo:float
formatting object.
Second, the fo:float formatting object is used when an area
is intended to float to one side, with normal content flowing alongside
the floated area. The areas generated by this kind of fo:float are
called side-floats. A side-float is always made a child of the nearest
ancestor reference-area. The edge of the reference-area towards which
the side-float floats is controlled by the value of the "float" property.
Flowing normal content flowing alongside side-floats is realized
by increasing the start-intrusion-adjustment or the end-intrusion-adjustment
of normal child areas of the parent reference-area of the side-float.
The "clear" property applies to any block-level formatting
object. If the value of this property for a particular formatting object
is any value other than "none", then the areas generated by the block
will be positioned to ensure that their border-rectangles do not
overlap the allocation-rectangles of the applicable side-floats as determined
by the "clear" property value.
6.10.1.2 Footnotes
The fo:footnote formatting object is used to generate both
a footnote and its citation. The fo:footnote has two children,
which are both required to be present.
The first child is an fo:inline formatting object, which is formatted to
produce the footnote citation.
The second child is an fo:footnote-body formatting object
which generates the content (or body) of the footnote.
The actual areas generated by the descendants of the fo:footnote-body
formatting object are determined by the formatting objects that comprise the
descendant subtree. For example, the footnote could be formatted with
a label and an indented body by using the fo:list-block formatting object
within the fo:footnote-body.
6.10.1.3 Conditional Sub-Regions
The region-body has two conditional sub-regions which implicitly
specify corresponding reference-areas called
before-float-reference-area
and
footnote-reference-area
. These reference-areas are conditionally
generated as children of the region-reference-area. The before-float-reference-area
is generated only if the page contains one or more areas with area-class "xsl-before-float".
The footnote-reference-area is generated only if the page contains one or more areas
with area-class "xsl-footnote".
The conditionally generated areas borrow space in the
block-progression-dimension
(this is "height"
when the writing-mode is "lr-tb") within the region-reference-area,
at the expense of the main-reference-area. Whether or not a conditionally generated
area is actually generated depends, additionally, on whether there
is sufficient space left in the main-reference-area.
There may be limits on how much space conditionally generated areas can
borrow from the region-reference-area. It is left to the user agent
to decide these limits.
The block-progression-dimension of the main-reference-area is
set equal to the block-progression-dimension of the allocation-rectangle
of the region-reference-area minus the sum of the sizes in the
block-progression-direction of the allocation-rectangles of the
conditionally generated reference-areas that were actually generated.
The main-reference-area is positioned to immediately follow the after-edge
of the allocation-rectangle of the before-float-reference-area.
This positions the after-edge of the main-reference-area to coincide
with the before-edge of the allocation-rectangle of the footnote-reference-area.
In addition to the constraints normally determined by the region-reference-area,
the
inline-progression-dimension
(this is "width"
when the writing-mode is "lr-tb") of a conditionally generated reference-area
is constrained to match the inline-progression-dimension of the main-reference-area.
Each conditionally generated reference-area may additionally contain a sequence
of areas used to separate the reference-area from the main-reference-area.
The sequence of areas is the sequence returned by formatting a fo:static-content
specified in the page-sequence that is being used to format the page.
If there is an fo:static-content in a page-sequence whose "flow-name" property value is
"xsl-before-float-separator", then the areas returned by formatting the
fo:static-content are inserted in the proper order as the last children of
a before-float-reference-area that is generated using the same page-master,
provided the main-reference-area on the page is not empty.
If there is an fo:static-content whose "flow-name" property value is
"xsl-footnote-separator", then the areas returned by formatting the
fo:static-content are inserted in the proper order as the initial children of
a footnote-reference-area that is generated using the same page-master.
An interactive user agent may choose to create "hot links" to the footnotes
from the footnote-citation, or create "hot links" to the before-floats from
an implicit citation, instead of realizing conditional sub-regions.
The generation of areas with area-class "xsl-before-float" or "xsl-footnote"
is specified in the descriptions of the formatting objects that initially
return areas with those area-classes.
6.10.1.4 Examples
6.10.1.4.1 Floating Figure
Input sample:
C'ieng pieces were made in northern towns, such as C'ieng Mai.
They were typically of tamlung weight.
In this example the figures are placed as floats at the before
side (top in a lr-tb writing-mode).
XSL Stylesheet:
version='1.0'>
Result Instance: elements and attributes in the fo:
namespace
such as C'ieng Mai. They were typically of tamlung weight.
Some Pod Duang were restruck
6.10.1.4.2 Footnote
Input sample:
Earliest Times to King Rama V, p. 203.
In this example the footnotes are numbered consecutively throughout
the document. The footnote callout is the number of the footnote,
followed by a ")", as a superscript. The footnote itself is formatted
using list formatting objects with the footnote number as the label
and the footnote text as the body.
XSL Stylesheet:
version='1.0'>
This is an
Result Instance: elements and attributes in the fo:
namespace
Thai Money, from Earliest Times to King Rama V, p. 203.
6.10.2 fo:float
Common Usage:
The fo:float formatting object is typically used either to cause an
image to be positioned in a separate area at the beginning of a page, or
to cause an image to be positioned to one side, with normal content
flowing around and along-side the image.
Areas:
The fo:float generates an optional single area with area-class
"xsl-anchor", and one or more block-areas that all share the same
area-class, which is either "xsl-before-float", "xsl-side-float" or
"xsl-normal" as specified by the "float" property. (An fo:float
generates normal block-areas if its "float" property value is "none".)
Areas with area-class "xsl-side-float" are reference areas.
An area with area-class "xsl-before-float" is placed as a child
of a before-float-reference-area.
The optional area with area-class "xsl-anchor" is not generated if the
"float" property value is "none", or if, due to an error as described
in the constraints section, the fo:float shall be formatted as though
its "float" property was "none". Otherwise, the area with area-class
"xsl-anchor" shall be generated.
The area with area-class "xsl-anchor" has no children, and is an
inline-area, except where this would violate the constraints that
(a.) any area's children must be either block-areas or inline-areas,
but not a mixture, and
(b.) the children of a line-area may not consist only of anchor areas.
In the case where an inline-area would violate these
constraints, the
fo:float must instead generate a block-area.
Constraints:
The normal inline-area generated by the fo:float shall be placed in the area tree
as though the fo:float had a "keep-with-previous" property with value "always".
The inline-area has a length of zero for both the inline-progression-dimension
and block-progression-dimension.
The term
anchor-area
is used here to mean the area with area-class
"xsl-anchor" generated by the fo:float.
An area with area-class "xsl-side-float" is a
side-float
No area may have more than one child block-area with the same
area-class returned by the same
fo:float formatting object.
Areas with area-class "xsl-before-float" must be properly ordered within the
area tree relative to other areas with the same area-class.
The padding-, border-, and content-rectangles of the block-areas
generated by fo:float all coincide. That is, the padding and border
are zero at all edges of the area.
The following constraints apply to fo:float formatting objects that generate
areas with area-class "xsl-before-float":
It is an error if the fo:float occurs as a descendant of
a flow that is not assigned to a region-body,
or of an fo:block-container that generates absolutely positioned areas.
In either case, the fo:float shall be formatted as though its "float"
property was "none".
A block-area with area-class "xsl-before-float"
generated by the fo:float may only be descendant from
a before-float-reference-area that is (a) descendant from a "region-reference-area"
generated using the region-master for the region to which the flow that has
the fo:float as a descendant is assigned, and (b) is descendant from the same
page containing the anchor-area, or from a page following that page.
The fo:float may not generate any additional block-areas
with area-class "xsl-before-float" unless the
page containing the preceding block-area generated by the fo:float
contains no other areas with area-class "xsl-before-float", has
an empty main-reference-area, and does not contain a footnote-reference-area.
The "clear" property does not apply.
The following constraints apply to fo:float formatting objects that generate
areas with area-class "xsl-side-float":
Each side-float is placed either as
a child of the nearest ancestor reference-area of the anchor-area
or as a child of a later reference-area in the same reference-area
chain.
Side-floats that are siblings in the area-tree may overlap
their content rectangles.
The description in section 9.5 of
[CSS2]
shall
be used to determine the formatting of the fo:float and the rendering of
normal line-areas and side-floats that are inline-overlapping,
with these modifications:
All references to left and right shall be interpreted as their
corresponding writing-mode relative directions "start" and "end".
The "float" property will additionally have the writing-mode relative
values "start" and "end".
All references to top and bottom shall be interpreted as their
corresponding writing-mode relative directions "before" and "after".
The phrase "current line box"
shall be interpreted to mean the
line-area containing the anchor-area generated by the float.
If the anchor-area is a block-area then the "current line box" does
not exist.
Side-floats derive their length in the
inline-progression-dimension intrinsically from their child areas; the
length is not determined by an explicit property value.
A side-float may add to the
intrusion adjustment of any inline-overlapping block-area
whose nearest ancestor reference-area is the parent of the side-float.
See
4.4.2 Intrusion Adjustments
for the description of intrusion adjustments.
The user agent may make its own determination,
after taking into account the intrusion adjustments caused by one
or more overlapping side-floats, that the remaining space in the
inline-progression-direction is insufficient for the next side-float
or normal block-area. The user agent may address this by causing
the next side-float or normal block-area to "clear" one of
the relevant side-floats, as described in the "clear" property
description, so the intrusion adjustment is sufficiently reduced.
Of the side-floats that could be cleared to meet this constraint,
the side-float that is actually cleared must be the one whose
after-edge is closest to the before-edge of the parent
reference-area.
NOTE:
The user agent may determine sufficiency of space
by using a fixed length, or by some heuristic such as whether
an entire word fits into the available space,
or by some combination, in order to handle text and images.
Contents:
%block;
)+
An fo:float is not permitted to have an fo:float, fo:footnote
or fo:marker as a descendant.
Additionally, an fo:float is not permitted to have as a descendant an
fo:block-container that generates an absolutely positioned area.
The following properties apply to this formatting object:
7.18.2 "float"
7.18.1 "clear"
6.10.3 fo:footnote
Common Usage:
The fo:footnote is typically used to produce footnote-citations within the
region-body of a page and the corresponding footnote in a separate area
nearer the after-edge of the page.
Areas:
The fo:footnote formatting object does not generate any areas.
The fo:footnote formatting object returns the areas generated and
returned by its child fo:inline formatting object.
Additionally the fo:footnote formatting object returns the block-areas
with area class "xsl-footnote" generated by its fo:footnote-body child.
An area with area-class "xsl-footnote" is placed
as a child of a footnote-reference-area.
Constraints:
The term
anchor-area
is defined to mean the last area that is
generated and returned by the fo:inline child of the fo:footnote.
A block-area returned by the fo:footnote is only permitted as a descendant from
a footnote-reference-area that is (a) descendant from a "region-reference-area"
generated using the region-master for the region to which the flow that has
the fo:footnote as a descendant is assigned, and (b) is descendant from the same
page that contains the anchor-area, or from a page following the page that contains
the anchor-area.
The second block-area and any additional block-areas returned by an fo:footnote
must be placed on the immediately subsequent pages to the page containing the
first block-area returned by the fo:footnote, before any other content is placed.
If a subsequent page does not contain a region-body, the user agent must use
the region-master of the last page that did contain a region-body to hold
the additional block-areas.
It is an error if the fo:footnote occurs as a descendant of
a flow that is not assigned to a region-body,
or of an fo:block-container
that generates absolutely positioned areas. In either case, the block-areas
generated by the fo:footnote-body child of the fo:footnote shall be returned
to the parent of the fo:footnote and placed in the area tree as though they
were normal block-level areas.
Contents:
inline
footnote-body
An fo:footnote is not permitted to have an fo:float, fo:footnote,
or fo:marker as a descendant.
Additionally, an fo:footnote is not permitted to have as a descendant
an fo:block-container that generates an absolutely positioned area.
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
6.10.4 fo:footnote-body
Common Usage:
The fo:footnote-body is used to generate the footnote content.
Areas:
The fo:footnote-body generates and returns one or more block-level
areas with area-class "xsl-footnote".
Constraints:
The fo:footnote-body is only permitted as a child of an fo:footnote.
No area may have more than one child block-area returned by the same
fo:footnote-body formatting object.
Areas with area-class "xsl-footnote" must be properly ordered within the
area tree relative to other areas with the same area-class.
Contents:
%block;
)+
The following properties apply to this formatting object:
7.4 Common Accessibility Properties
6.11 Other Formatting Objects
6.11.1 Introduction
The following example shows the use of the fo:wrapper
formatting object that has no semantics but acts as a
"carrier" for inherited properties.
6.11.1.1 Example
Input sample:
sentence that also refers to a variable.
The "emph" elements are to be presented using a
bold
font and the "code" elements using a Courier
font.
XSL Stylesheet:
version='1.0'>
fo: element and attribute tree:
in this sentence that also refers to a
6.11.2 fo:wrapper
Common Usage:
The fo:wrapper formatting object is used to
specify
inherited properties for a group of formatting objects.
Areas:
The fo:wrapper formatting object does not generate any areas. The
fo:wrapper formatting object returns the sequence of areas created by
concatenating the sequences of areas returned by each of the children
of the fo:wrapper.
Trait Derivation:
Except for "id",
the fo:wrapper has no properties that are directly used
by it. However, it does serve as a carrier to hold inheritable properties
that are utilized by its children.
Constraints:
The order of concatenation of the sequences of areas returned by
the children of the fo:wrapper
is the same order as the children are ordered under the fo:wrapper.
Contents:
(#PCDATA|
%inline;
%block;
)*
An fo:wrapper is only permitted to have
children that would be permitted to be children of
the parent of the fo:wrapper, with two exceptions:
An fo:wrapper may always have a sequence of zero or more
fo:markers as its initial children.
An fo:wrapper that is a child of an fo:multi-properties is
only permitted to have children that would be permitted
in place of the fo:multi-properties.
This restriction applies recursively.
NOTE:
For example an fo:wrapper that is a child of another
fo:wrapper may only have children that would be permitted to be children of the parent
fo:wrapper.
The following properties apply to this formatting object:
7.28.2 "id"
6.11.3 fo:marker
Common Usage:
The fo:marker is used in conjunction with
fo:retrieve-marker to produce running headers or footers. Typical
examples include:
dictionary headers showing the first and last word defined on the page.
headers showing the page's chapter and section titles.
The fo:marker has to be an initial child
of its parent formatting object.
Areas:
The fo:marker does not directly produce any
area. Its children may be retrieved and formatted from within an
fo:static-content, using an fo:retrieve-marker whose
"retrieve-class-name" property value is the same as the
"marker-class-name" property value of this fo:marker.
Constraints:
An fo:marker is only permitted as the descendant of an fo:flow.
Note: Property values set on an fo:marker
or its ancestors will not be inherited by the children of the
fo:marker when they are retrieved by an fo:retrieve-marker.
It is an error if two or more fo:markers that share the same parent
have the same "marker-class-name" property value.
Contents:
(#PCDATA|
%inline;
%block;
)*
An fo:marker may contain any formatting objects that are
permitted as a replacement of any fo:retrieve-marker that retrieves
the fo:marker's children.
The following properties apply to this formatting object:
7.23.1 "marker-class-name"
6.11.4 fo:retrieve-marker
Common Usage:
The fo:retrieve-marker is used in
conjunction with fo:marker to produce running headers or footers.
Typical examples include:
dictionary headers showing the first and last word defined on the page.
headers showing the page's chapter and section titles.
Areas:
The fo:retrieve-marker does not directly generate any area. It is
(conceptually) replaced by the children of the fo:marker that it retrieves.
Trait Derivation:
The properties and traits specified on the ancestors of the
fo:retrieve-marker are taken into account when formatting the
children of the retrieved fo:marker as if the children had the
same ancestors as the fo:retrieve-marker.
Constraints:
An fo:retrieve-marker is only permitted as the descendant of an
fo:static-content.
The fo:retrieve-marker specifies that the children of a selected fo:marker
shall be formatted as though they replaced the fo:retrieve-marker in the
formatting tree.
The properties of the fo:retrieve-marker impose a hierarchy of preference
on the areas of the area tree. Each fo:marker is conceptually attached to
each normal area returned by the fo:marker's parent formatting object.
Additionally, an fo:marker is conceptually attached to each non-normal
area that is directly generated by the fo:marker's parent formatting object.
Conversely, areas generated by any descendant of an fo:flow may have zero or
more fo:marker's conceptually attached. The fo:marker whose children are
retrieved is the one that is (conceptually) attached to the area that is
at the top of this hierarchy.
Every area in the hierarchy is considered preferential to, or "better" than,
any area below it in the hierarchy. When comparing two areas to determine which
one is better, the terms "first" and "last" refer to the pre-order traversal
order of the area tree.
The term "containing page" is used here to mean the page that contains
the first area generated or returned by the children of the retrieved
fo:marker.
An area that has an attached fo:marker whose "marker-class-name"
property value is the same as the "retrieve-class-name" property value
of the fo:retrieve-marker is defined to be a qualifying area. Only
qualifying areas have positions in the hierarchy.
A qualifying area within a page is better than any qualifying area
within a preceding page, except that areas do not have a position in the
hierarchy if they are within pages that follow the containing page. If the
"retrieve-boundary" property has a value of "page-sequence", then an area
does not have a position in the hierarchy if it is on a page from
a page-sequence preceding the page-sequence of the containing page.
If the "retrieve-boundary" property has a value of "page", then an area
does not have a position in the hierarchy if it is not on the containing page.
If the value of the "retrieve-position" property is
"first-starting-within-page", then the first qualifying area in the
containing page whose "is-first" trait has a value of "true" is better
than any other area. If there is no such area, then the first qualifying
area in the containing page is better than any other area.
If the value of the "retrieve-position" property is "first-including-carryover",
then the first qualifying area in the containing page is better than any other
area.
If the value of the "retrieve-position" property is
"last-starting-within-page", then the last qualifying area in the
containing page whose "is-first" trait has a value of "true" is better
than any other area. If there is no such area, then the last qualifying
area in the containing page is better than any other area.
If the value of the "retrieve-position" property is
"last-ending-within-page", then the last qualifying area in the
containing page whose "is-last" trait has a value of "true" is better
than any other area. If there is no such area, then the last qualifying
area in the containing page is better than any other area.
If the hierarchy of areas is empty, no formatting objects are retrieved.
Contents:
EMPTY
The following properties apply to this formatting object:
7.23.2 "retrieve-class-name"
7.23.3 "retrieve-position"
7.23.4 "retrieve-boundary"
Previous
Table of Contents
Top
Next