<?xml version="1.0" encoding="utf-8"?>
<spec>
<header>
<title>Extensible Stylesheet Language (XSL)</title>
<version>Version 1.0</version>
<w3c-designation>xsl-20001018</w3c-designation>
<w3c-doctype>W3C Working Draft</w3c-doctype>
<pubdate><day>18</day><month>October</month><year>2000</year></pubdate>
<publoc>
<loc href="http://www.w3.org/TR/2000/WD-xsl-20001018/" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/2000/WD-xsl-20001018/</loc>
<otherversions>
<loc href="http://www.w3.org/TR/2000/WD-xsl-20001018/xslspecRX.pdf" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">PDF by RenderX</loc>,
<loc href="http://www.w3.org/TR/2000/WD-xsl-20001018/xslspec.xml" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">XML file</loc>,
<loc href="http://www.w3.org/TR/2000/WD-xsl-20001018/xslspec.html" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">HTML (one large file)</loc>,
<loc href="http://www.w3.org/TR/2000/WD-xsl-20001018/xs001018.zip" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">ZIP file</loc>
</otherversions>

</publoc>
<latestloc>
<loc href="http://www.w3.org/TR/xsl/" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/xsl/</loc>
</latestloc>
<prevlocs>
<loc href="http://www.w3.org/TR/2000/WD-xsl-20000327" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/2000/WD-xsl-20000327</loc>
</prevlocs>
<authlist>
<author>
<name>Sharon Adler</name>
<affiliation>IBM</affiliation>
<email href="mailto:sca@us.ibm.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">sca@us.ibm.com</email>
</author>
<author>
<name>Anders Berglund</name>
<affiliation>IBM</affiliation>
<email href="mailto:alrb@us.ibm.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">alrb@us.ibm.com</email>
</author>
<author>
<name>Jeff Caruso</name>
<affiliation>Pageflex</affiliation>
<email href="mailto:jcaruso@pageflexinc.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">jcaruso@pageflexinc.com</email>
</author>
<author>
<name>Stephen Deach</name>
<affiliation>Adobe</affiliation>
<email href="mailto:sdeach@adobe.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">sdeach@adobe.com</email>
</author>
<author>
<name>Paul Grosso</name>
<affiliation>ArborText</affiliation>
<email href="mailto:paul@arbortext.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">paul@arbortext.com</email>
</author>
<author>
<name>Eduardo Gutentag</name>
<affiliation>Sun</affiliation>
<email href="mailto:eduardo.gutentag@eng.sun.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">eduardo.gutentag@eng.sun.com</email>
</author>
<author>
<name>Alex Milowski</name>
<affiliation>Lexica</affiliation>
<email href="mailto:alex@milowski.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">alex@milowski.com</email>
</author>
<author>
<name>Scott Parnell</name>
<affiliation>Xerox</affiliation>
<email href="mailto:Scott.Parnell@usa.xerox.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">Scott.Parnell@usa.xerox.com</email>
</author>
<author>
<name>Jeremy Richman</name>
<affiliation>BroadVision</affiliation>
<email href="mailto:Jeremy.Richman@BroadVision.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">Jeremy.Richman@BroadVision.com</email>
</author>
<author>
<name>Steve Zilles</name>
<affiliation>Adobe</affiliation>
<email href="mailto:szilles@adobe.com" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">szilles@adobe.com</email>
</author>
</authlist>

<status>


<p>This is a W3C Working Draft for review by W3C members and other
interested parties.
This working draft incorporates the proposed resolution of the
issues raised during Last Call.
The Working Group intends to submit a revised version of
this specification for
publication as a Candidate Recommendation in the near future.
We are issuing this interim public draft as it sets out a
number of changes made in response to comments received on the
Last Call draft.
Items under consideration for change for Candidate Recommendation
include
the name of the font-height-override-before and
font-height-override-after properties.
Please send detailed
comments to <loc href="mailto:xsl-editors@w3.org" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">xsl-editors@w3.org</loc>;
<loc href="http://lists.w3.org/Archives/Public/xsl-editors" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">archives</loc>
of the comments are available.
More general public discussion of XSL takes place on the <loc href="http://www.mulberrytech.com/xsl/xsl-list/index.html" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">XSL-List</loc>
mailing list.</p>

<p>It is a draft document and may be
updated, replaced, or obsoleted by other documents at any time.  The
XSL Working Group will not allow early implementation to constrain its
ability to make changes to this specification prior to final release.
It is inappropriate to use W3C Working Drafts as reference material or
to cite them as other than <quote>work in progress</quote>. A list of
current W3C working drafts can be found at <loc href="http://www.w3.org/TR" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR</loc>.</p>




<p>This document has been produced as part of the <loc href="http://www.w3.org/Style/" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">W3C Style Activity</loc> by
the <loc href="http://www.w3.org/Style/XSL/Group/" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">XSL Working Group</loc>
(<loc href="http://cgi.w3.org/MemberAccess/" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">members only</loc>).</p>

</status>

<abstract>

<p>XSL is a language for expressing stylesheets.  It consists of two
parts:</p>

<olist>

<item><p>a language for transforming XML documents, and</p></item>

<item><p>an XML vocabulary for specifying formatting
semantics.</p></item>

</olist>

<p>An XSL stylesheet specifies the presentation of a class of XML
documents by describing how an instance of the class is transformed
into an XML document that uses the formatting vocabulary.</p>

</abstract>

<langusage>
<language id="EN">English</language>
<language id="ebnf">EBNF</language>
</langusage>
<revisiondesc>
<slist>
<sitem>See RCS log for revision history.</sitem>
</slist>
</revisiondesc>
</header>
<body>


<div1><head>Introduction and Overview</head>
<p>
This specification defines the Extensible Stylesheet Language
(XSL). XSL is a language for expressing stylesheets. Given a class of
arbitrarily structured XML <bibref ref="XML"/>
documents or data files, designers use
an XSL stylesheet to express their intentions about how that
structured content should be presented; that is, how the source
content should be styled, laid out, and paginated onto some
presentation medium, such as a window in a Web browser or a
hand-held device, or a set of
physical pages in a catalog, report, pamphlet, or book.
</p>
<div2><head>Processing a Stylesheet</head>
<p>
An XSL <term>stylesheet processor</term> accepts a document
or data in XML
and an XSL stylesheet and produces the presentation of that XML source
content that was intended by the designer of that
stylesheet. There are two aspects of this
presentation process:
first, constructing a result tree from the XML source tree and second,
interpreting the result tree to produce formatted
results suitable for presentation on a
display, on paper, in speech, or onto other media. The first
aspect is called <term>tree transformation</term> and the
second
is called <term>formatting</term>. The process of formatting
is performed by the <term>formatter.</term> This formatter
may simply be a rendering engine inside a browser.
</p>
<p>
Tree transformation allows the structure of the result tree to be significantly
different from the structure of the source tree. For example, one could add
a table-of-contents as a filtered selection of an original source document,
or one could rearrange source data into a sorted tabular presentation.
In constructing the result tree,
the tree transformation process also adds the information necessary to
format that result tree.
</p>
<p>Formatting is enabled by including formatting semantics
in the result tree. Formatting semantics are
expressed in terms of a catalog of classes of
<term>formatting
objects.</term> The nodes of the result tree are formatting
objects. The classes of formatting objects
denote typographic abstractions such as page, paragraph,
table, and so
forth. Finer control over the presentation of these abstractions is
provided by a set of formatting properties, such as
those controlling indents, word- and
letter-spacing, and widow, orphan, and hyphenation control.
In XSL, the
classes of <term>formatting objects</term> and
<term>formatting properties</term>
provide the vocabulary for expressing presentation intent.
</p>
<p>
The XSL processing model is intended to be
conceptual only.  An implementation is not
mandated to provide these as separate
processes.  Furthermore, implementations are free to process
the source document in any way that produces the same result
as if it were processed using the conceptual XSL processing
model.  A diagram depicting the detailed conceptual model is
shown below.<spot id="aj000035_1"/></p>
<graphic source="two-process.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<div3><head>Tree Transformations</head>
<p>
Tree transformation constructs the result tree.  In XSL,
this tree is called the <term>element and attribute
tree,</term> with objects primarily in the
"formatting object" namespace. In this tree, a formatting
object
is represented as an XML element, with the properties represented by a
set of XML attribute-value pairs. The content of the formatting object
is the content of the XML element. Tree
transformation is defined in the XSLT Recommendation
<bibref ref="XSLT"/>.
A diagram depicting this conceptual process is
shown below.</p>
<graphic source="tree1-2.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>
The XSL stylesheet is used in tree transformation. A stylesheet
contains a set of tree construction rules. The tree construction rules
have two parts: a pattern that is matched against elements in the
source tree and a template that constructs a portion of the result
tree. This allows a stylesheet to be applicable to a wide class of
documents that have similar source tree structures.
</p>
<p><spot id="wai_1"/>In some implementations of XSL/XSLT,
the result of tree construction
can be output as an XML document. This would allow an XML document
which contains formatting objects and formatting properties to be
output. This capability is neither necessary for an XSL processor nor
is it encouraged. There are, however, cases where this is important,
such as a server preparing input for a known client; for example, the way
that a WAP
(<xspecref href="http://www.wapforum.org/faqs/index.htm" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.wapforum.org/faqs/index.htm</xspecref>)
server prepares specialized input for a WAP capable
hand held device. To preserve accessibility, designers of Web systems
should not develop architectures that require (or use) the
transmission of documents containing formatting objects and properties
unless either the transmitter knows that the client can accept
formatting objects and properties or the transmitted document contains
a reference to the source document(s) used in the construction of the
document with the formatting objects and properties.
</p>
</div3>
<div3><head>Formatting</head>
<p>
Formatting interprets the result tree in its formatting object tree
form to produce the presentation intended by the designer
of the stylesheet from which the XML element and attribute
tree in the "fo" namespace was constructed.
</p>
<p>
The vocabulary of formatting objects supported by XSL - the set of
<code>fo:</code> element types - represents the set of
typographic abstractions available to the
designer. Semantically, each formatting object represents a
specification for a part of the pagination, layout, and styling
information that will be applied to the content of that formatting
object as a result of formatting the whole result tree. Each
formatting object class represents a particular kind of formatting
behavior. For example, the block formatting object class represents
the breaking of the content of a paragraph into lines. Other parts of
the specification may come from other formatting objects; for
example, the formatting of a paragraph (block formatting
object)
depends on both the specification of properties on the block
formatting object and the specification of the layout structure into
which the block is placed by the formatter.
</p>
<p>
The properties associated with an instance of a formatting object
control the formatting of that object. Some of the properties, for
example "color", directly specify the formatted result.
Other properties, for example 'space-before', only constrain the set
of possible formatted results without specifying any particular
formatted result. The formatter may make choices among other
possible considerations such as esthetics.
</p>
<p>
Formatting consists of the generation of a tree
of geometric areas, called the <term>area tree</term>. The
geometric areas are
positioned on a sequence of one or more pages (a browser typically
uses a single page). Each geometric area has a position on the page, a
specification of what to display in that area and may have a
background, padding, and borders. For example, formatting a
single
character generates an area sufficiently large enough to hold the
glyph that is used to present the character visually and the glyph is
what is displayed in this area. These areas may be nested. For
example, the glyph may be positioned within a line, within a
block, within a page.
</p>
<p>
Rendering
takes the area tree, the abstract model of the presentation (in terms
of pages and their collections of areas), and causes a
presentation to appear on the relevant medium, such as a browser
window on a computer display screen or sheets of paper. The semantics
of rendering are not described in detail in this specification.
</p>
<p>
The first step in formatting is to "objectify" the element
and attribute
tree obtained via an XSLT transformation.
Objectifying the tree basically consists of turning the
elements in the
tree into formatting object nodes and the
attributes into property specifications. The result of this step is
the <term>formatting object tree</term>.
</p>
<graphic source="tree2-3.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>
As part of the step of objectifying, the characters that occur in
the result tree are replaced by fo:character nodes.
<spot id="fo_12"/>Characters in text nodes which consist
solely of whitespace characters and
which are children of elements whose corresponding formatting objects do
not permit fo:character nodes as children are ignored.  Other characters
within elements whose corresponding formatting objects do not permit
fo:character nodes as children are errors.

</p>
<p><spot id="fo01jr_3c"/>The content of the fo:instream-foreign-object
is not objectified;
instead the object representing the fo:instream-foreign-object
element points to the appropriate node in the element and
attribute tree.
<spot id="wai_4f"/>Similarly any non-XSL namespace child element
of fo:declarations is not objectified; instead the object representing
the fo:declarations element points to the appropriate node in the
element and attribute tree.
</p>
<p>
The second phase in formatting is to refine the formatting
object tree
to produce the <term>refined formatting object tree</term>.
The refinement process handles the mapping from properties
to traits.  This consists of: (1) shorthand expansion into
individual properties, (2) mapping of corresponding
properties, (3) determining computed values (may include
expression evaluation), and (4) inheritance. Details on
refinement are found in <specref ref="refinement"/>.
</p>
<p>The refinement step is depicted in the diagram below.
</p>
<graphic source="tree3-4.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>
The third step in formatting is the construction of the area
tree. The
area tree is generated as described in the semantics of each
formatting object. The traits applicable to each formatting
object
class control how the areas are generated. Although every
formatting property may be specified on every formatting object, for
each formatting object class, only a subset of the formatting
properties are used to determine the traits for objects of
that class.
</p>
<p>Area generation is depicted in the diagram below.<spot id="aj000035_2"/>
</p>
<graphic source="trees4-5.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<graphic source="process-sum.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
</div3>
</div2>
<div2><head>Benefits of XSL</head>
<p>Unlike the case of HTML, element names in XML have no intrinsic
presentation semantics. Absent a stylesheet, a processor could not
possibly know how to render the content of an XML document other
than as an undifferentiated string of characters. XSL provides
a comprehensive model and a vocabulary for writing such stylesheets using XML syntax.
</p>
<p>
This document is intended for implementors of such XSL processors.
Although it can be used as a reference manual for writers of XSL
style sheets, it is not tutorial in nature. </p>
<p>
XSL builds on the prior work on Cascading Style Sheets
<bibref ref="CSS2"/> and
the Document Style Semantics and Specification Language
<bibref ref="DSSSL"/>.
While many of XSL's formatting objects and properties correspond
to the common set of properties, this would not be
sufficient by
itself to accomplish all the goals of XSL. In particular, XSL introduces
a model for pagination and layout that extends what is currently available
and that can in turn be extended, in a straightforward way, to page
structures beyond the simple page models described in this specification.
</p><div3><head>Paging and Scrolling</head>
<p>Doing both scrollable document windows and pagination introduces
new complexities to the styling (and pagination) of XML content.
Because pagination introduces arbitrary boundaries
(pages or regions on pages) on the content, concepts such as
the control
of spacing at page, region, and block boundaries become
extremely important. There are also concepts related to
adjusting the spaces between lines (to adjust the page
vertically)
and between words and letters (to justify the lines of text).
These do not always arise with simple scrollable document
windows, such as those found in today's browsers. However, there
is a correspondence between a page with multiple regions, such as a body,
header, footer, and left and right <spot id="c11i14_a"/>sidebars, and a Web
presentation using "frames". The distribution of content into the regions
is basically the same in both cases, and XSL handles both
cases in an analogous fashion.</p>
<p>
XSL was developed to give designers control over the features
needed when documents are paginated as well as to provide an
equivalent "frame" based structure for browsing on the Web.
To achieve this control, XSL has extended the set of formatting
objects and formatting properties. In addition, the selection
of XML source components that can be styled (elements,
attributes, text nodes, comments, and processing
instructions) is based on XSLT and XPath, thus providing the
user with an extremely powerful selection mechanism. </p>
<p>
The design of the formatting objects and properties extensions
was first inspired by DSSSL. The actual extensions, however, do not
always look like the DSSSL constructs on which they were based. To either
conform more closely with the CSS2 specification or to
handle cases more simply than in DSSSL, some extensions have diverged from DSSSL.
</p><p>
There are several ways in which extensions were made. In some cases,
it sufficed to add new values, as in the case of those added to reflect
a variety of writing-modes, such as top-to-bottom and bottom-to-top, rather
than just left-to-right and right-to-left.
</p><p>
In other cases, common properties that are expressed in CSS2
as one property with multiple simultaneous values, are split into
several new properties to provide independent control over independent
aspects of the property. For example, the "white-space" property was
split into four properties:
a "space-treatment" property that
controls how white-space is processed, a <spot id="aj000035_3"/>"linefeed-treatment" property that controls
how line-feeds are processed, a "white-space-collapse" property that controls
how multiple consecutive spaces are collapsed,
and a "wrap-option" property
that controls whether lines are automatically wrapped when
they encounter a boundary, such as the edge of a column.
The effect of splitting a property into two or more
(sub-)properties is to make the equivalent existing CSS2
property a "shorthand" for the set of sub-properties it subsumes.
</p><p>
In still other cases, it was necessary to create new properties.
For example, there are a number of new properties that control how
hyphenation is done. These include identifying the script and country
the text is from as well as such properties as "hyphenation-character"
(which varies from script to script).
</p><p>
Some of the formatting objects and many of the properties in XSL
come from the CSS2 specification, ensuring compatibility
between the two.</p>
<p>
There are four classes of XSL properties that can be identified as:</p>
<olist><item><p>
CSS properties by copy (unchanged from their CSS2
semantics)</p></item>
<item><p>
CSS properties with extended values</p></item>
<item><p>
CSS properties broken apart and/or extended</p></item>
<item><p>
<spot id="c11i15"/>XSL-only properties</p></item></olist>
</div3>
<div3><head>Selectors and Tree Construction</head>
<p>
As mentioned above, XSL uses XSLT and XPath for tree construction
and pattern selection, thus providing a high degree of control
over how portions of the source content are presented, and what
properties are associated with those content portions, even where
mixed namespaces are involved.
</p><p>
For example, the patterns of XPath allow the selection of a portion
of a string or the Nth text node in a paragraph. This allows
users to have a rule that makes all third paragraphs in
procedural steps appear in bold, for instance. In addition,
properties can be associated with a content portion based on the
numeric value of that content portion or attributes on the
containing element. This allows one to have a style rule
that makes negative values appear in "red" and positive
values appear in "black". Also, text can be generated
depending on a particular context in the source tree,
or portions of the source tree may be presented
multiple times with different styles.
</p></div3>
<div3><head>An Extended Page Layout Model</head>
<p>
There is a set of formatting objects in XSL to describe both the
layout structure of a page or "frame"
(how big is the body; are there multiple columns;
are there headers, footers, or <spot id="c11i14_b"/>sidebars; how big are these)
and the rules by which the XML source content is placed into these "containers".
</p><p>
The layout structure is defined in terms of one or more instances
of a "simple-page-master" formatting object. This formatting
object allows one to define independently filled regions for
the body (with multiple columns), a header, a footer, and <spot id="c11i14_c"/>sidebars
on a page. These simple-page-masters can be used in page sequences
that specify in which order the various simple-page-masters shall be used.
The page sequence also specifies how styled content is to fill those pages.
This model allows one to specify a sequence of simple-page-masters
for a book chapter where the page instances are automatically
generated by the formatter or an explicit sequence of pages
such as used in a magazine layout. Styled content is assigned
to the various regions on a page by associating the name of the
region with names attached to styled content in the result tree.
</p><p>
In addition to these layout formatting objects and properties,
there are properties designed to provide the level of control
over formatting that is typical of paginated documents.
This includes control over hyphenation, and expanding the control over
text that is kept with other text in the same line, column,
or on the same page.
</p></div3>
<div3><head>A Comprehensive Area Model</head>
<p>
The extension of the properties and formatting objects,
particularly in the area on control over the spacing of blocks, lines,
and page regions and within lines, necessitated an extension of the
CSS2 box formatting model. This extended model is described
in <specref ref="area_model"/> of this
specification. The CSS2 box model is a
subset of this model.  See the mapping of the CSS2 box model
terminology to the XSL Area Model terminology in
<specref ref="cssbox"/>.
The area model provides a vocabulary for describing
the relationships and space-adjustment between
letters, words, lines, and blocks.</p>
</div3>
<div3><head>Internationalization and Writing-Modes</head>
<p>
There are <spot id="i18n_2"/>some scripts, in particular in the Far East, that are
typically set with words proceeding from top-to-bottom and
lines proceeding either from right-to-left (most common) or
from left-to-right. Other directions are also
used. Properties expressed in terms of a fixed,
absolute frame of reference (using top, bottom, left, and right)
and which apply only to a notion of words proceeding from left to right
or right to left do not generalize well to
<spot id="i18n_4"/>text written in those scripts.
</p><p>
For this reason XSL (and before it DSSSL) uses a relative frame of
reference for the formatting object and property descriptions. Just as
the CSS2 frame of reference has four directions (top, bottom, left and right),
so does the XSL relative frame of reference have four directions
(before, after, start, and end), but these are relative to the "writing-mode". The
"writing-mode" property is a way of controlling the
directions needed by a formatter to correctly place
glyphs, words, lines, blocks, etc. on the page or screen.
The "writing-mode" expresses the basic directions noted
above. There are writing-modes for "left-to-right - top-to-bottom"
(denoted as "lr-tb"), "right-to-left - top-to-bottom" (denoted as "rl-tb"),
"top-to-bottom - right-to-left" (denoted as "tb-rl") and more. <spot id="c11i16"/>See <specref ref="writing-mode"/>
for the description of the "writing-mode" property.
Typically, the writing-mode value specifies two directions:<spot id="c11i17"/>
the first is the inline-progression-direction which determines
the direction in which words will
be placed and the second is the block-progression-direction
which determines the direction in which blocks (and lines)
are placed one after another.
<spot id="i18n_5"/>In addition, the inline-progression-direction
for a sequence of characters may be implicitly determined using
bidirectional character types for those characters from the
Unicode Character Database  <bibref ref="UNICODE-CD"/>
for those characters and the Unicode Bidi Algorithm <bibref ref="UNICODE-TR9"/>.
</p>
<p>
Besides the directions that are explicit in the name of the
value of the "writing-mode" property, the writing-mode determines
other directions needed by the formatter, such as the
shift-direction (used for sub- and super-scripts), etc.
</p></div3>
<div3><head>Linking</head>
<p>
Because XML, unlike HTML, has no built-in semantics,
there is no built-in notion of a hypertext link.
<spot id="link01_i3"/>In this context, "link" refers
to "hypertext link" as defined in
<xspecref href="http://www.w3.org/TR/html401/struct/links.html#h-12.1" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/html401/struct/links.html#h-12.1</xspecref>
as well as some of the aspects of "link" as defined in
<xspecref href="http://www.w3.org/TR/xlink/#intro" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/xlink/#intro</xspecref>,
where "link is a relationship between two or more resources or
portions of resources, made explicit by an XLink linking element".
Therefore,
XSL has a formatting object that expresses the dual semantics of
formatting the content of the link reference and the
semantics of following the link.</p>
<note><p><spot id="link01_i2"/>During the CR period
the XSL WG and Linking WG will jointly
develop additional examples and guidance on how to use these
formatting objects given XPointer and XLink XML source.</p>
</note>
<p>
XSL provides a few mechanisms for changing the presentation
of a link target that is being visited. One of these mechanisms
permits indicating the link target as such;
another allows for control over the placement of the link
target in the viewing area; still another permits some degree of
control over the way the link target is displayed in relationship
to the originating link anchor.</p>
<p>XSL also provides a general mechanism for changing the way elements
are formatted depending on their active state. This is particularly
useful in relation to links, to indicate whether a given link
reference has already been visited, or to apply a given style
depending on whether the mouse, for instance, is hovering over
the link reference or not.</p>
</div3>
</div2>
</div1>


<div1><head>Introduction to XSL Transformation</head>
<div2>
<head>Tree Construction</head>
<p>The Tree Construction is described in
"XSL Transformations" <bibref ref="XSLT"/>.</p>
<p>The provisions in "XSL Transformations" form an integral part of
this recommendation and are considered normative.</p>
</div2>

<div2 id="xsl-namespace">
<head>XSL Namespace</head>

<p>The XSL namespace has the URI <code>http://www.w3.org/1999/XSL/Format</code>.</p>
<note><p>The <code>1999</code> in the URI indicates the year in which
the URI was allocated by the W3C.  It does not indicate the version of
XSL being used.</p></note>
<p>XSL processors must use the XML namespaces mechanism <bibref ref="XMLNAMES"/> to recognize elements and attributes from this
namespace. Elements from the XSL namespace are recognized only in the
stylesheet, not in the source document.
Implementors must not extend the XSL
namespace with additional elements or attributes. Instead, any
extension must be in a separate namespace.</p>
<p>This specification uses the prefix <code>fo:</code> for referring
to elements in the XSL namespace. However, XSL stylesheets are free
to use any prefix, provided that there is a namespace declaration that
binds the prefix to the URI of the XSL namespace.</p>
<p>An element from the XSL namespace may have any attribute not from
the XSL namespace, provided that the <xtermref href="http://www.w3.org/TR/xpath#dt-expanded-name" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">expanded-name</xtermref> of the
attribute has a non-null namespace URI.  The presence of such
attributes must not change the behavior of XSL elements and functions
defined in this document. Thus, an XSL processor is always free to
ignore such attributes, and must ignore such attributes without giving
an error if it does not recognize the namespace URI. Such attributes
can provide, for example, unique identifiers, optimization hints, or
documentation.</p>
<p>It is an error for an element from the XSL namespace to have
attributes with expanded-names that have null namespace URIs
(i.e., attributes with unprefixed names) other than
attributes defined for the element in this document.</p>
<note><p>The conventions used for the names of XSL elements,
attributes, and functions are as follows:
names are all <spot id="c11i18"/>lowercase,
hyphens are used to separate words, dots are used to
separate names for the components of complex datatypes,
and abbreviations are used only if they already
appear in the syntax of a related language such as XML or
HTML.</p></note>

</div2>

</div1>


<div1 id="fo-jc-intro"><head>Introduction to
Formatting</head>
<p>The aim of this section is to describe the general process
of formatting, enough to read the area model and the
formatting object descriptions and properties and to
understand the process of refinement.</p>
<p><emph>Formatting</emph> is the process of turning the result of an XSL
transformation into a tangible form for the reader or listener. This
process comprises several steps, some of which depend on others in a
non-sequential way.
Our model for formatting will be the construction of an
<term>area tree</term>, which is an ordered tree containing
geometric information
for the placement of every glyph, shape, and image in the document,
together with information embodying spacing constraints and other rendering
information; this information is referred to under the rubric of
<emph>traits</emph>, which are to areas what properties are to formatting objects
and attributes are to XML <spot id="aj000035_4"/>elements.
<specref ref="area_model"/> will
describe the area tree and
define the default placement-constraints on stacked areas. However, this is
an abstract model which need not be actually implemented in this way
in a formatter, so long as the resulting tangible form obeys the implied constraints.
Constraints might conflict to the point where it is
impossible to satisfy them all.  In that case, it is
implementation-defined which constraints should be relaxed
and in what order to satisfy the others.
</p>
<p><emph>Formatting objects</emph> are elements in the formatting object tree, whose
names are from the XSL namespace; a formatting object belongs to a
<emph>class</emph> of formatting objects identified by its element name. The
formatting behavior of each class of formatting objects is described in
terms of what areas are created by a formatting object of that class, how
the traits of the areas are established, and how the areas are
structured hierarchically with respect to areas created by other formatting
objects. <specref ref="fo-section"/> and
<specref ref="pr-section"/><spot id="aj000029_19a"/>
describe formatting objects and their properties.</p>
<p>Some formatting objects are <emph>block-level</emph> and others are
<emph>inline-level</emph>. This refers to the types of areas which they generate,
which in turn refer to their default placement method. Inline-areas (for
example, glyph-areas) are collected into lines and the direction in which
they are stacked is the inline-progression-direction. Lines are a type of
block-area and these are stacked in a direction perpendicular to the
inline-progression-direction, called the block-progression-direction. See
<spot id="c11i1_a"/><specref ref="area_model"/> for detailed decriptions
of these area types and directions.</p>
<p>In Western writing systems, the block-progression-direction is
"top-to-bottom" and the inline-progression-direction is
"left-to-right". This specification treats other writing systems
as well and introduces the terms "block" and "inline"
instead of using absolute indicators like "vertical" and
"horizontal". Similarly this specification tries to give
relatively-specified directions ("before" and "after"
in the block-progression-direction, "start" and "end"
in the inline-progression-direction) where appropriate, either in addition
to or in place of absolutely-specified directions such as "top",
"bottom", "left", and "right". These are
interpreted according to the value of the writing-mode property.</p>
<p>Central to this model of formatting is <emph>refinement</emph>.
This is a computational
process which finalizes the specification of properties based on the attribute
values in the XML result tree. Though the XML result tree and the formatting object
tree have very similar structure, it is helpful to think of them as
separate conceptual entities. Refinement involves</p>
<ulist><item><p>propagating the various inherited values
of properties (both implicitly and those with an attribute value of "inherit"),
</p></item>
<item><p>evaluating expressions in property value specifications into actual
values, which
are then used to determine the value of the properties,<spot id="c11i20_a"/></p></item>
<item><p>converting relative numerics to absolute numerics,</p></item>
<item><p>constructing some composite properties from more than one attribute<spot id="c11i20_b"/></p></item>
</ulist>
<p>Some of these operations (particularly evaluating expressions) depend on knowledge
of the area tree. Thus refinement is not necessarily a straightforward, sequential
procedure, but may involve look-ahead, back-tracking, or control-splicing with
other processes in the formatter. Refinement is described more fully in
<spot id="c11i1_b"/><specref ref="refinement"/>.</p>
<p>To summarize, formatting proceeds by constructing an area tree
(containing areas and their traits) which satisfies constraints based on
information contained in the XML result tree (containing
element nodes and their
attributes). Conceptually, there are intermediate steps of
constructing a formatting object tree (containing formatting objects and their
properties) and refinement;
these steps may proceed in an interleaved fashion during the
construction of the area tree.</p>
<div2><head>Conceptual Procedure</head>
<p>This subsection contains a conceptual description of how
formatting could work. This conceptual
procedure does not mandate any particular algorithms or data structures as
long as the result obeys the implied constraints.</p>
<p>The procedure works by processing formatting objects. Each object,
while being processed, may initiate processing in other objects. While the
objects are hierarchically structured, the processing is not; processing of
a given object is rather like a co-routine which may pass control to other
processes, but pick up again later where it left off. The procedure starts
by initiating the processing of the fo:root
formatting object.</p>
<p>Unless otherwise specified, processing a formatting object creates areas
and returns
them to its parent to be placed in the area tree. Like a co-routine, it
resumes control later and initiates formatting of its own children (if
any), or some subset of them. The formatting object supplies parameters to its
children
based on the traits of areas already in the area tree, possibly including
areas generated by the formatting object or its ancestors. It then disposes of the
areas
returned by its formatting object children. It might simply
return such an area to its
parent (and will always do this if it does not generate areas itself), or
alternatively it might arrange the area in the area tree according to the
semantics of the formatting object; this may involve changing its geometric position.
It
terminates processing when all its children have terminated processing (if
initiated) and it is finished generating areas.</p>
<p>Some formatting objects do not themselves generate areas;<spot id="c11i21"/> instead these
formatting objects simply
return the areas returned to them by their children. Alternatively, a formatting object
may continue to generate (and return) areas based on information discovered
while formatting its own children; for example, the fo:page-sequence formatting object
will continue generating pages as long as it contains a flow with
unprocessed descendants.</p>
<p>Areas returned to an fo:root formatting object are
page-viewport-areas, and are simply placed as
children of the area tree root in the order in which they are returned,
with no geometrical implications.</p>
<p>As a general rule, the order of the area tree parallels the order of the
formatting object tree. That is, if one formatting object
precedes another in the depth-first
traversal of the formatting object tree, with neither
containing the other, then
all the areas generated by the first will precede all the areas generated
by the second in the depth-first traversal of the area tree, unless
otherwise specified. Typical exceptions to this rule would be things like
side floats, before floats, and footnotes.</p>
<p>At the end of the procedure, the areas and their traits have been
constructed, and they are required to satisfy constraints described in the
definitions of their associated formatting objects, and in the area model
section. In particular, size and position of the areas will be subject to
the placement and spacing constraints described in the area model, unless
the formatting object definition indicates otherwise.</p>
<p>The formatting object definitions, property descriptions, and area model
are not algorithms. Thus, the formatting object semantics do not specify how
the line-breaking algorithm must work in collecting characters into words,
positioning words within lines, shifting lines within a container, etc.
Rather this specification assumes that the formatter has done these things
and describes the constraints which the result is supposed to
satisfy.</p>
</div2>
</div1>




<div1 id="area_model"><head>Area Model</head>
<p>In XSL, one creates a tree of formatting objects that serve as inputs or
specifications to a formatter. The formatter generates a hierarchical arrangement
of areas which comprise the formatted result. This section defines the general
model of areas and how they interact. The purpose is to present an abstract
framework which is used in describing the semantics of formatting objects.
It should be seen as describing a series of constraints for
conforming implementations,
and not as prescribing particular algorithms.</p>
<div2 id="area-intro"><head>Introduction</head>
<p>The formatter generates an ordered tree, the <term>area tree,</term> which
describes a geometric structuring of the output medium. The terms
<term>child, sibling, parent, descendant,</term> and <term>ancestor</term>
refer to this tree structure. The tree has a <term>root node</term>.</p>
<p>Each area tree node other than the root is called an <term>area</term> and is
associated to a rectangular portion of the output medium. Areas are
not formatting objects; rather, a formatting object generates zero or more
rectangular areas, and normally each area is generated by a unique object in the
formatting object tree.</p>
<note><p>The only exceptions are when several leaf nodes of the formatting object
tree are combined
to generate a single area, for example when several characters
in sequence generate a single ligature
glyph. In all such cases, relevant properties such as
<trait>font-family</trait> and <trait>font-size</trait> are the same for
all the generating formatting objects (see section <specref ref="area-linebuild"/>).</p></note>
<p>An area has a <term>content-rectangle</term>,
the portion in which its child areas are assigned, and optional
<term>padding</term> and <term>border</term>. The diagram shows
how these portions are related to one another. The outer bound of the border
is called the <term>border-rectangle</term>, and the outer
bound of the
padding is called the <term>padding-rectangle</term>.</p>
<graphic source="RectsOnlyForModel.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>Each area has a set of <term>traits</term>, a mapping of names to values,
in the way elements have attributes and formatting objects have properties.
Individual traits are used either
for rendering the area or for defining constraints on the result of formatting,
or both. Traits used strictly for formatting purposes or for defining
constraints may be called <term>formatting traits</term>, and traits used for
rendering may be called <term>rendering traits</term>.
Traits whose values are copied or derived from <spot id="aj000029_22a"/>a property
of the same or a corresponding
name are listed in <specref ref="property-index"/> and <specref ref="refinement"/>;
other traits are listed
in <specref ref="area-traitlist"/>.</p>
<note><p>NOTE: traits are also associated with FOs during the process of refinement.
Some traits are assigned during formatting, while others are already present after
refinement.</p></note>
<p>The semantics of each type of formatting object that generates areas are
given in terms of which areas it generates and their place in the area-tree
hierarchy. This may be further modified by interactions between the various
types of formatting
objects. The properties of the formatting object determine what areas are
generated and how the formatting object's content is distributed among them.
(For example, a word that is not to be hyphenated may not have its glyphs
distributed into areas on two separate line-areas.)</p>
<p>The traits of an area are either:</p>
<p>1. "directly-derived" -- The values of directly-derived traits are the computed
value of a property of the same or a corresponding name on the generating formatting object, or</p>
<p>2. "indirectly-derived" -- The values of indirectly-derived traits are the
result of a computation involving the computed values of one or more properties
on the generating formatting object, other traits on this area or other
interacting areas (ancestors, parent, siblings, and/or children) and/or
one or more values constructed by the formatter. The calculation formula
may depend on the type of the formatting object.</p>
<p>This description assumes that refined values have been computed for all
properties of formatting objects in the result tree, i.e.,
all relative and corresponding values have been computed and the inheritable
values have been propagated as described in <specref ref="refinement"/>. This
allows the
process of inheritance to be described once and avoids a need to repeat
information on computing values
in this description.</p>
</div2>
<div2 id="area-rect"><head>Rectangular Areas</head>
<div3><head>Area Types</head>
<p>There are two types of areas: <term>block-areas</term> and
<term>inline-areas</term>. These differ according to how
they are typically stacked by the formatter. An area can have
block-area children or inline-area children as determined
by the generating formatting object, but a given area's children must all be of
one type. Although block-areas and inline-areas are
typically stacked, some areas can be explicitly positioned.</p>
<p>A <term>line-area</term> is a special kind of block-area whose children
are all inline-areas. A <term>glyph-area</term> is a special kind of
inline-area which has no child areas, and has a single
glyph image as its content.</p>
<p>Typical examples of areas are: a paragraph rendered by using
an fo:block formatting object,
which generates block-areas,
and a character rendered by using an fo:character
formatting object,
which generates an inline-area (in fact, a glyph-area).</p>
</div3>
<div3 id="area-common"><head>Common Traits</head>
<p>Associated with any area are two directions, which are derived from the
generating
formatting object's <trait>writing-mode</trait> and
<trait>reference-orientation</trait> properties: the
<term>block-progression-direction</term> is the direction for stacking block-area
descendants of the area, and the
<term>inline-progression-direction</term> is the direction for stacking inline-area
descendants of the area. Another
trait, the <term>shift-direction</term>, is present on inline-areas and refers to
the direction in which baseline
shifts are applied. Also the <term>glyph-orientation</term> defines the orientation
of glyph-images in the rendered result.</p>
<p>The Boolean trait <trait>is-reference-area</trait> determines
whether or not an area establishes a coordinate system for
specifying indents. An area for which this trait is <code role="value">true</code>
is called a <term>reference-area</term>.
Only a reference-area may have a block-progression-direction which is different from
that of its parent.
A reference-area may be either a
block-area or an inline-area.</p>

<p>The Boolean trait <trait>is-viewport-area</trait> determines
whether or not an area establishes an opening through which its
descendant areas can be viewed, and can be used to
present clipped or scrolled material; for example, in printing
applications where bleed and trim is desired.
An area for which this trait is <code role="value">true</code>
is called a <term>viewport-area</term>.
</p>
<p>A common construct is a <term>viewport/reference pair</term>.
This is a block-area viewport-area <var>V</var> and a block-area
reference-area <var>R</var>, where <var>R</var> is the sole child
of <var>V</var> and where the start-edge and end-edge of the
content-rectangle of <var>R</var> are parallel to the start-edge and
end-edge of the content-rectangle of <var>V</var>.</p>

<p>Each element has the traits <term>top-position</term>, <term>bottom-position</term>,
<term>left-position</term>, and <term>right-position</term> which represent the distance
from the edges of its content-rectangle to the like-named edges of the
nearest ancestor reference-area (or the page-viewport-area
in the
case of areas generated by descendants of formatting objects
whose absolute-position is <code role="value">fixed</code>); the <term>left-offset</term>
and <term>top-offset</term> determine the amount by which
a relatively-positioned area is shifted for rendering.  These traits receive
their values during the formatting process, or in the case
of absolutely positioned areas, during refinement.</p>
<p>The <term>block-progression-dimension</term> and
<term>inline-progression-dimension</term> of an area represent the
extent of the content-rectangle of that area in each of the two
relative <spot id="aj000029_23a"/>dimensions.</p>

<p>Other traits include:</p>
<ulist><item>
<p>the <trait>is-first</trait> and <trait>is-last</trait> traits, which are Boolean traits
indicating the order in which areas are generated and returned by a given
formatting object. <trait>is-first</trait> is <code role="value">true</code>
for the first area (or only area) generated and returned by a formatting object,
and <trait>is-last</trait>
is <code role="value">true for</code> the last area (or only area).</p></item>
<item>
<p>the amount of space outside the border-rectangle: <term>space-before</term>,
<term>space-after</term>, <term>space-start</term>, and <term>space-end</term>
(though some of these may be required to be zero on certain classes of area);</p></item>
<item><p>the thickness of each of the four sides of the padding: <term>padding-before</term>,
<term>padding-after</term>, <term>padding-start</term>, and <term>padding-end</term>;</p></item>
<item><p>the style, thickness, and color of each of the
four sides of the border: <term>border-before</term>, etc.; and</p></item>
<item><p>the background rendering of the
area: <term>background-color</term>, <term>background-image</term>, and
other background traits.</p>
<note><p>"Before", "after", "start",
and "end" refer to relative directions and are defined
below.</p></note>
</item><item>
<p>a set of font traits (see <specref ref="common-font-properties"/>)
which are used to request a font that is deemed to be used
within that area. The <trait>nominal-font</trait> for an area is
determined by the font traits and the character descendants of the area.
(see <specref ref="fontprops"/></p></item>
</ulist>
<p>Unless otherwise specified, the traits of a
formatting object are present on each of its generated areas,
and with the same value. (However, see sections
<specref ref="area-linebuild"/> and <specref ref="rend-border"/>.)</p>
</div3>
<div3 id="area-geo"><head>Geometric Definitions</head>
<p>As described above, the <term>content-rectangle</term> is the rectangle
bounding the inside of the padding and is used to describe
the constraints on the positions of descendant areas. It is possible that
marks from descendant glyphs or other areas may appear outside the
content-rectangle.</p>
<p>Related to this is the <term>allocation-rectangle</term>
of an area,
which is used to describe the constraints on the position of
the area within its parent area. For an inline-area this is either the
<term>normal-allocation-rectangle</term> or the <term>expanded-allocation-rectangle</term>.
The <term>normal-allocation-rectangle</term>
extends
to the content-rectangle
in the block-progression-direction and to the border-rectangle in the
inline-progression-direction. The <term>expanded-allocation-rectangle</term>
extends
outside the border-rectangle by an amount equal to the space-after in the
block-progression-direction, an amount equal to the space-before in the opposite
direction, an amount equal to the space-end in the inline-progression-direction,
and an amount equal to the space-start in the opposite direction. Unless
otherwise specified, the allocation-rectangle for an area is the
normal-allocation-rectangle.
</p>
<figure>
<graphic source="AllocationRectInline.4.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Allocation- and content-rectangles of an inline-area</p></figcap>
</figure>
<p>For a block-area, the allocation-rectangle extends to the border-rectangle in
the block-progression-direction and outside the content-rectangle
in the inline-progression-direction by an amount equal to
the end-indent,
and in the opposite direction by an amount equal to the start-indent.</p>
<note><p>The inclusion of space outside the border-rectangle of a block-area
in the inline-progression-direction does not affect
placement constraints, and
is intended to promote compatibility with the CSS box model.</p></note>
<figure>
<graphic source="AllocationRect.2.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Allocation- and content-rectangles of a block-area</p></figcap>
</figure>
<p>The edges of a rectangle are designated as follows:</p>
<ulist><item>
<p>the <term>before-edge</term> is the edge occurring first in the
block-progression-direction and perpendicular
to it;</p></item>
<item><p>the <term>after-edge</term> is the edge opposite
the before-edge;</p></item>
<item><p>the <term>start-edge</term> is the edge occurring
first in the inline-progression-direction and perpendicular
to it,</p></item>
<item><p>the <term>end-edge</term> is the edge opposite the
start-edge.</p></item></ulist>
<p>The following diagram shows the correspondence between the various edge
names for a mixed writing-mode example:</p>
<graphic source="japaneseblock3.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>

<p>For purposes of this definition, the content-rectangle of an area uses the
inline-progression-direction and block-progression-direction of that area;
but the border-rectangle, padding-rectangle, and
allocation-rectangle use the
directions of its parent area. <spot id="edges_may_not_correspond"/>Thus the edges designated for the
content-rectangle may not correspond with the same-named edges
on the padding-, border-,
and allocation-rectangles. This is important in the case of
nested block-areas with different writing-modes.</p>
<p>Each inline-area has a <term>alignment-point</term> determined by the formatter,
on the start-edge
of its allocation-rectangle; for a glyph-area, this is
a point on the start-edge of the glyph on its alignment baseline (see below).
This is script-dependent and does not necessarily correspond to the
(0,0) coordinate point used for the data describing the glyph shape.</p>
</div3>
<div3 id="area-treeorder"><head>Tree Ordering</head>
<p>In the area tree, the set of areas with a given parent is ordered.
The terms <term>initial, final, preceding</term>, and
<term>following</term> refer to this ordering.</p>

<p>In any ordered tree, this sibling order extends to an ordering of the entire tree
in at least two ways.</p>
<ulist><item><p>In the <term>pre-order traversal order</term> of a tree, the children
of each node (their order unchanged relative to one another) follow the node, but
precede any following siblings of the node or of its ancestors.</p></item>
<item><p>In the <term>post-order traversal order</term> of a tree, the children of
each node precede the node, but follow any preceding siblings of the node or of its
ancestors.</p></item></ulist>
<p>"Preceding" and "following", when applied to non-siblings, will depend on the
extension order used, which must be specified. However, in either of these given orders,
the leaves of the tree (nodes without children) are unambiguously ordered.</p>
</div3>

<div3 id="area-stackcon"><head>Stacking Constraints</head>
<p>This section defines the notion of <term>block-stacking constraints</term> and
<term>inline-stacking constraints</term> involving areas. These are defined as
ordered relations, i.e., if <var>A</var> and <var>B</var>
have a stacking constraint
it does not necessarily mean that <var>B</var> and <var>A</var> have a stacking
constraint. These definitions are recursive in nature and some cases may depend
upon simpler cases of the same definition. This is not circularity but rather a
consequence of recursion. The intention of the
definitions is to identify areas at any level of the
tree which have only space between them.</p>
<p>The <trait>area-class</trait> trait is an enumerated value which is
<code role="value">xsl-normal</code> for an area which is stacked with
other areas in sequence.  A <term>normal</term> area is an
area for which this trait is <code role="value">xsl-normal</code>. A
<term>page-level-out-of-line</term>
area is an area with area-class <code role="value">xsl-footnote</code>,
<code role="value">xsl-before-float</code>,
or <code role="value">xsl-fixed</code>; placement of these areas is controlled
by the fo:page-sequence
ancestor of its generating formatting object.  A <term>reference-level-out-of-line</term>
area is an area with area-class
<code role="value">xsl-side-float</code> or <code role="value">xsl-absolute</code>;
placement of these areas is controlled by the formatting object generating
the relevant reference-area.  Areas with area-class equal to one of
<code role="value">xsl-normal</code>,
<code role="value">xsl-footnote</code>, or
<code role="value">xsl-before-float</code> are defined to be
<term>stackable</term>,
indicating that they are supposed to be properly stacked.
</p>
<p>If <var>P</var> is a block-area, then there is a <term>fence before</term>
<var>P</var> if <var>P</var> is a reference-area or if the
border-before-width
or padding-before-width of <var>P</var> are non-zero.
Similarly, there is a
<term>fence after</term> <var>P</var> if <var>P</var> is a
reference-area
or if the border-after-width or padding-after-width of <var>P</var> are non-zero.</p>
<p>If <var>A</var> and <var>B</var> are stackable areas, and <var>S</var> is
a sequence of space-specifiers, it is defined that <term><var>A</var> and <var>B</var>
have block-stacking constraint <var>S</var></term> if
any of the following conditions holds:</p>
<olist>
<item><p><var>B</var> is a block-area which is the first normal
child of <var>A</var>, and <var>S</var> is the sequence consisting of the
space-before of <var>B</var>.</p></item>
<item><p><var>A</var> is a block-area which is the last normal
child of <var>B</var>, and <var>S</var> is the sequence consisting of the
space-after of <var>A</var>.</p></item>
<item><p><var>A</var> and <var>B</var> are both block-areas, and either</p>
    <p>a. <var>B</var> is the next stackable sibling area of <var>A</var>,
    and <var>S</var> is the sequence consisting of the space-after of <var>A</var>
    and the space-before of <var>B</var>;</p>
    <p>b. <var>B</var> is the first normal child of a block-area
    <var>P</var>, there is no fence before <var>P</var>,
<var>A</var> and
    <var>P</var> have a block-stacking constraint <var>S</var>', and <var>S</var>
    consists of <var>S</var>' followed by the space-before of <var>B</var>; or</p>
    <p>c. <var>A</var> is the last normal child of a block-area
    <var>P</var>, there is no fence after <var>P</var>,
<var>P</var> and
    <var>B</var> have a block-stacking constraint <var>S</var>'', and <var>S</var>
    consists of the space-after of <var>A</var> followed by <var>S</var>''.</p></item>
</olist>
<note><p>The use of "stackable" in two places in the above definition allows
block-stacking constraints to apply between areas of area-class
<code role="value">xsl-before-float</code>
or <code role="value">xsl-footnote</code>.</p></note>
<figure>
<graphic source="block-stacking-constraints.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Adjacent Edges with Block-stacking</p></figcap>
</figure>
<p>When <var>A</var> and <var>B</var> have a block-stacking constraint, the
<term>adjacent edges</term> of <var>A</var> and <var>B</var> are an ordered
pair recursively defined as:</p>
<ulist><item><p>In case 1, the before-edge of the
content-rectangle of <var>A</var>
and the before-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 2, the after-edge of the content-rectangle
of <var>A</var> and
the after-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3a, the after-edge of the
allocation-rectangle of <var>A</var>
and the before-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3b, the first of the adjacent edges of <var>A</var> and <var>P</var>,
and the before-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3c, the after-edge of the
allocation-rectangle of <var>A</var>
and the second of the adjacent edges of <var>P</var> and <var>B</var>.</p></item></ulist>

<figure>
<graphic source="mantree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Block-stacking constraint example</p></figcap>
</figure>

<p><emph>Example</emph>. In this diagram each node represents a block-area.

Assume that all padding
and border widths are zero, and none of the areas are
reference-areas. Then <var>P</var>
and <var>A</var> have a block-stacking constraint, as do <var>A</var>
and <var>B</var>, <var>A</var> and

<var>C</var>, <var>B</var> and <var>C</var>, <var>C</var> and <var>D</var>,
<var>D</var> and <var>B</var>,
<var>B</var> and

<var>E</var>, <var>D</var> and

<var>E</var>, and <var>E</var> and

<var>P</var>; these

are the only pairs  in the diagram having block-stacking constraints. If

<var>B</var> had non-zero padding-after, then <var>D</var>

and <var>E</var> would not have any block-stacking constraint (though <var>B</var>

and <var>E</var> would continue to have a block-stacking constraint).</p>

<p><emph>Inline-stacking constraints.</emph> This section will recursively define the
inline-stacking constraints between two areas (either two inline-areas or one inline-area
and one line-area),
together with the notion of
<term>fence before</term> and <term>fence after</term>; these definitions are interwoven with one another.
This parallels the definition for block-stacking
constraints, but with the additional complication that we may have a stacking
constraint between inline-areas which are stacked in opposite inline-progression-directions.
(This is not an issue for block-stacking constraints because
a block-area which is not a reference-area may not have a
block-progression-direction
different from that of its parent.)</p>
<p>If <var>P</var> and <var>Q</var> have an inline-stacking constraint, then
<var>P</var> has a <term>fence before <var>Q</var></term> if <var>P</var> is
a reference-area or has non-zero border-width or padding-width at the first
adjacent edge of <var>P</var> and <var>Q</var>. Similarly, <var>Q</var> has
a <term>fence after <var>P</var></term> if <var>Q</var> is a reference-area
or has non-zero border-width or padding-width at the second
adjacent edge of
<var>P</var> and <var>Q</var>.</p>
<p>If <var>A</var> and <var>B</var> are normal areas, and <var>S</var>
is a sequence of space-specifiers, it is defined that <term><var>A</var> and
<var>B</var> have inline-stacking constraint <var>S</var></term> if any of the
following conditions holds:</p>
<olist>
<item><p><var>A</var> is an inline-area or line-area, <var>B</var> is an inline-area which is the first normal child of
<var>A</var>, and <var>S</var> is the sequence consisting of the space-start of
<var>B</var>.</p></item>
<item><p><var>B</var> is an inline-area or line-area, <var>A</var> is an inline-area which is the last normal child of
<var>B</var>, and <var>S</var> is the sequence consisting of the space-end of
<var>A</var>.</p></item>
<item><p><var>A</var> and <var>B</var> are each either an inline-area or a line-area, and either</p>
    <p>a. both <var>A</var> and <var>B</var> are inline-areas,
    <var>B</var> is the next normal sibling area of <var>A</var>,
    and <var>S</var> is the sequence consisting of the space-end of <var>A</var>
    and the space-start of <var>B</var>;</p>
    <p>b. <var>B</var> is an inline-area which is the first normal child of an inline-area <var>P</var>,
	      <var>P</var> has no fence after <var>A</var>,
<var>A</var> and <var>P</var> have an
		  inline-stacking constraint <var>S</var>', the inline-progression-direction of
		  <var>P</var> is the same as the inline-progression-direction of the nearest
		  common ancestor area of <var>A</var> and <var>P</var>, and <var>S</var> consists of
		  <var>S</var>' followed by the space-start of <var>B</var>.</p>
    <p>c. <var>A</var> is an inline-area which is the last normal child of an inline-area <var>P</var>,
	      <var>P</var> has no fence before <var>B</var>,
<var>P</var> and <var>B</var> have an
		  inline-stacking constraint <var>S</var>'', the inline-progression-direction of
		  <var>P</var> is the same as the inline-progression-direction of the nearest
		  common ancestor area of <var>P</var> and <var>B</var>, and <var>S</var> consists of the
		  space-end of <var>A</var> followed by <var>S</var>''.</p>
    <p>d. <var>B</var> is an inline-area which is the last normal child of an inline-area <var>P</var>,
	      <var>P</var> has no fence after <var>A</var>,
<var>A</var> and <var>P</var> have an
		  inline-stacking constraint <var>S</var>', the inline-progression-direction of
		  <var>P</var> is opposite to the inline-progression-direction of the nearest
		  common ancestor area of <var>A</var> and <var>P</var>, and <var>S</var> consists of
		  <var>S</var>' followed by the space-end of <var>B</var>.</p>
    <p>e. <var>A</var> is an inline-area which is the first normal child of an inline-area <var>P</var>,
	      <var>P</var> has no fence before <var>B</var>,
<var>P</var> and <var>B</var> have an
		  inline-stacking constraint <var>S</var>'', the inline-progression-direction of
		  <var>P</var> is opposite to the inline-progression-direction of the nearest
		  common ancestor area of <var>P</var> and <var>B</var>, and <var>S</var> consists of the
		  space-start of <var>A</var> followed by <var>S</var>''.</p>
</item>
</olist>
<figure>
<graphic source="inline-stacking1.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Adjacent Edges with Inline-stacking 1.</p></figcap>
</figure>
<figure>
<graphic source="inline-stacking2.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Adjacent Edges with Inline-stacking 2.</p></figcap>
</figure>
<graphic source="inline-stacking3.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<graphic source="inline-stacking4.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>

<p><spot id="fo0001sca_a"/>When <var>A</var> and <var>B</var> have an inline-stacking constraint,
the <term>adjacent edges</term> of <var>A</var> and <var>B</var> are an ordered
pair defined as:</p>
<ulist><item><p>In case 1, the start-edge of the
content-rectangle of <var>A</var>
and the start-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 2, the end-edge of the content-rectangle of <var>A</var> and
the end-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3a, the end-edge of the
allocation-rectangle of <var>A</var> and
the start-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3b, the first of the adjacent edges of <var>A</var> and
<var>P</var>, and the start-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3c, the end-edge of the
allocation-rectangle of <var>A</var>
and the second of the adjacent edges of <var>P</var> and <var>B</var>.</p></item>
<item><p>In case 3d, the first of the adjacent edges of <var>A</var> and
<var>P</var>, and the end-edge of the allocation-rectangle of <var>B</var>.</p></item>
<item><p>In case 3e, the start-edge of the
allocation-rectangle of <var>A</var>
and the second of the adjacent edges of <var>P</var> and <var>B</var>.</p></item></ulist>

<p>Two areas are <term>adjacent</term> if they have a block-stacking constraint
or an inline-stacking constraint. It follows from the definitions that areas of the same
type (inline or block) can be adjacent only if all their non-common ancestors
are also of the same type (up to but not including their nearest common ancestor).
Thus, for example, two inline-areas which reside in different line-areas are never
adjacent.</p>

<p>An area <var>A</var> <term>begins</term> an area <var>P</var> if <var>A</var> is a
descendant of <var>P</var> and <var>P</var> and <var>A</var> have either a
block-stacking constraint or an inline-stacking constraint. In this case the
second of the adjacent edges of <var>P</var> and <var>A</var> is defined to be
a <term>leading edge</term> in <var>P</var>. A space-specifier which applies to
the leading edge is also defined to <term>begin</term> <var>P</var></p>

<p>Similarly, An area <var>A</var> <term>ends</term> an area <var>P</var> if <var>A</var> is a
descendant of <var>P</var> and <var>A</var> and <var>P</var> have either a
block-stacking constraint or an inline-stacking constraint. In this case the
first of the adjacent edges of <var>A</var> and <var>P</var> is defined to be
a <term>trailing edge</term> in <var>P</var>. A space-specifier which applies to
the trailing edge is also defined to <term>end</term> <var>P</var></p>
</div3>
<div3 id="area-font"><head>Font Baseline Tables</head>
<p>Each script has its preferred "baseline" for aligning glyphs from that script.
Western scripts typically use a "alphabetic" baseline that touches at or near the
bottom of capital letters. Further, for each font there is a
preferred way of aligning embedded characters from different scripts, e.g., for a
Western font there is a separate baseline for aligning embedded ideographic or Indic
characters.</p>
<p>Each block-area and inline-area has a
<trait>dominant-baseline-identifier</trait> trait whose value is a baseline identifier
corresponding to the type of alignment expected for inline-area descendants of that area,
and each inline-area has an <trait>alignment-baseline</trait> which specifies how the
area is aligned to its parent. These traits are interpreted as described in section
<specref ref="font-model"/>.</p>
<p>For each font, an <trait>actual-baseline-table</trait> maps these identifiers
to points on the start-edge of the area. <spot id="area-dominant-baseline-abuse"/>By abuse of terminology, the line in the inline-progression-direction
through the point corresponding to the dominant-baseline-identifier is called
the "dominant baseline."</p>
<p>The <trait>text-altitude</trait> of an area is defined in terms of the actual-baseline-table
for the nominal-font of that area, and is normally a length equal to the distance between the
dominant baseline and the text-before
baseline. This is modified if the <trait>font-height-override-before</trait> has a value
other than <code role="value">use-font-metrics</code>. The <trait>text-depth</trait> is normally defined
as a length equal to the distance between the dominant baseline
and the text-after baseline. This is modified if the <trait>font-height-override-after</trait>
has a value other than <code role="value">use-font-metrics</code>.
</p>
</div3>
</div2>
<div2 id="spacecond"><head>Spaces and Conditionality</head>
<p>A space-specifier is a compound datatype whose components are minimum, optimum,
<spot id="aj000035_6a"/>maximum, conditionality and precedence.</p>
<p><term>Minimum</term>, <term>optimum</term>, and <term>maximum</term> are lengths
and can be used to define a constraint
on a distance, namely that the distance should preferably be the optimum,
and in any case no less than the minimum nor more than the maximum. Any of these
values may be negative, which can (for
example) cause areas to overlap, but in any case the minimum should be less
than or equal to the optimum value, and the optimum less than or equal to
the maximum value.</p>
<p><term>Conditionality</term> is an enumerated value which controls whether a
space-specifier has effect at the beginning or end of a reference-area or a
line-area. Possible values are <code role="value">retain</code> and
<code role="value">discard</code>;
a <term>conditional</term> space-specifier is one for which this value is
<code role="value">discard</code>.</p>
<p><term>Precedence</term> has a value which is either an integer or the special
token <code role="value">force</code>. A <term>forcing</term> space-specifier
is one for which this value is <code role="value">force</code>.</p>
<p>Space-specifiers occurring in sequence may interact with each other. The
constraint imposed by a sequence of space-specifiers is computed by
calculating for each space-specifier
its associated <term>resolved space-specifier</term> in accordance with
their conditionality and precedence, as
shown below in the space-resolution rules.</p>
<p>The constraint imposed on a distance by a sequence of resolved space-specifiers
is additive; that is, the distance is constrained to be no less than the
sum of the resolved minimum values and no larger than the sum of the resolved
maximum values.</p>
<div3 id="area-space"><head>Space-resolution Rules</head>
<p>To compute the resolved space-specifier of a given space-specifier <var>S</var>,
consider the maximal inline-stacking constraint or block-stacking constraint
containing <var>S</var>. The resolved space-specifier of <var>S</var> is a
non-conditional, <spot id="aj000035_8a"/>forcing space-specifier computed in terms of this sequence.</p>
<olist>
<item><p>If any of the space-specifiers (in the maximal sequence) is conditional,
and begins a reference-area or line-area, then it is <term>suppressed</term>,
which means that its resolved space-specifier is zero. Further, any conditional
space-specifiers which consecutively follow it in the sequence are also suppressed.</p>
<p>If a conditional space-specifier ends a reference-area or line-area, then it
is suppressed together with any other conditional space-specifiers which
consecutively precede it in the sequence.</p></item>
<item><p>If any of the remaining space-specifiers is forcing, all non-forcing
space-specifiers are suppressed, and the value of each of the forcing space-specifiers
is taken as its resolved value.</p></item>
<item><p>Alternatively if all of the remaining space-specifiers are non-forcing,
then the resolved space-specifier is defined in terms of those space-specifiers
whose precedence is numerically highest, and among these those whose optimum value is the
greatest. All other space-specifiers are suppressed. If there is only one of
these then its value is taken as its resolved value.</p>
<p>Otherwise, when there are <spot id="aj000029_24a"/>two or more space-specifiers all of the same highest
precedence and the same (largest) optimum, the resolved space-specifier of the
last space-specifier in the
sequence is derived from these spaces by taking their common optimum value as
its optimum, the greatest of their minimum values as its minimum,
and the least of their maximum values as its maximum, and all other space-specifiers
are suppressed.</p></item>
</olist>
<p><emph>Example</emph>. Suppose the sequence of space values occurring at the
beginning of a <spot id="aj000035_7a"/>reference-area is:
first, a space with value 10 points (that is
minimum, optimum, and maximum all equal to 10 points) and conditionality
<code role="value">discard</code>; second, a space with value 4 points and
conditionality <code role="value">retain</code>; and third, a space
with value 5 points and conditionality <code role="value">discard</code>;
all three spaces having precedence zero. Then the first (10 point) space is
suppressed under rule 1, and the
second (4 point) space is suppressed under rule 3. The resolved value of the
third space is a non-conditional 5 points, even though
it originally came from a conditional space.</p>
<p>The padding of a block-area does not interact with <spot id="aj000035_7b"/>any
space-specifier
(except that by definition, the presence of padding at the before- or after-edge
prevents areas on either side of it from having a stacking constraint.)</p>
<p>The border or padding at the before-edge or after-edge of a block-area may
be specified as conditional. If so, then it is set to zero if its associated
edge is a leading or trailing edge in a reference-area. In this case, the border
or padding is taken to be zero for purposes of the stacking constraint definitions.</p>
</div3>
</div2>
<div2 id="area-block"><head>Block-areas</head>
<p>Block-areas have several traits which typically affect the placement of their
children. The <term>line-height</term> is used in line placement calculations.
The <trait>line-stacking-strategy</trait> trait controls what kind of allocation
is used for descendant line-areas and has an enumerated value
(either <code role="value">font-height</code>, <code role="value">max-height</code>,
or <code role="value">line-height</code>). This is all rigorously described below.
All areas have these traits,
but they only have relevance for areas which have stacked line-area children.</p>
<p>The <trait>space-before</trait> and <trait>space-after</trait> traits
determine the
distance between the block-area and surrounding block-areas.</p>
<p>A block-area which is not a line-area typically has its size in the
inline-progression-direction determined
by its <trait>start-indent</trait> and <trait>end-indent</trait> and by the size of its nearest ancestor
reference-area. A
block-area which is not a line-area typically varies its
block-progression-dimension
to accommodate its descendants. Alternatively the generating
formatting object may specify a
block-progression-dimension for the block-area.</p>
<div3 id="area-stackblock"><head>Stacked Block-areas</head>
<p>Block-area children of an area are typically stacked in the
block-progression-direction
within their parent area, and this is the default method of
positioning block-areas. However, formatting objects
are free to specify other methods of positioning child areas of areas which
they generate, for example list-items or tables.</p>
<p>For a parent area <var>P</var> whose children are
block-areas, <var>P</var> is defined to be <term>properly
stacked</term> if all of the following conditions hold:</p>
<olist>
<item><p>For each block-area <var>B</var> which is a descendant of <var>P</var>,
the following hold:</p>
<ulist><item><p>the before-edge and after-edge
of its allocation-rectangle are parallel to the before-edge and after-edges of the
content-rectangle of <var>P</var>,</p></item>
<item>
<p>the start-edge of its allocation-rectangle is parallel to the start-edge
of the content-rectangle of <var>R</var> (where <var>R</var> is the closest
ancestor reference-area of <var>B</var>), and offset from it inward
by a distance equal to
the block-area's start-indent plus its
<spot id="fo01jr_2a"/><trait>start-intrusion-adjustment</trait>
<spot id="fosg_1a"/>(as defined below), minus its border-start,
padding-start, and space-start values, and</p></item><item>
<p>the end-edge of its allocation-rectangle is parallel to the
end-edge
of the content-rectangle of <var>R</var>, and offset from it inward
by a distance equal to
the block-area's end-indent plus its
<spot id="fo01jr_2b"/><trait>end-intrusion-adjustment</trait>
<spot id="fosg_1b"/>(as defined below),
minus its border-end, padding-end, and space-end
values.</p></item></ulist></item>
<item><p>For each pair of normal areas <var>B</var> and <var>B</var>'
in the subtree below <var>P</var>, if
<var>B</var> and <var>B</var>' have a block-stacking constraint <var>S</var>,
then the distance between the adjacent edges of <var>B</var> and <var>B</var>'
is consistent with the
constraint imposed by the
resolved values of the space-specifiers in <var>S</var>.</p></item>
</olist>
<graphic source="RectsForModel.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<note><p>The <trait>start-intrusion-adjustment</trait> and
<trait>end-intrusion-adjustment</trait> are traits used to
deal with intrusions from
floats in the inline-progression-direction. The notion of indent is intended to apply to the content-rectangle, but
the constraint is written in terms of the
allocation-rectangle, because as noted earlier

(<specref ref="area-geo"/>)
the edges of the
content-rectangle may not
correspond to like-named edges of the
allocation-rectangle.</p></note>
<graphic source="spacebeforeafter.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p><emph>Example</emph>. In the diagram, if area
<var>A</var>
has a space-after value of 3 points, <var>B</var> a
space-before
of 1 point, and <var>C</var> a space-before of 2 points, all
with
precedence of <code role="value">force</code>, and with zero border and padding,
then the constraints will place <var>B</var>'s
allocation-rectangle
4 points below that of <var>A</var>, and <var>C</var>'s
allocation-rectangle
6 points below that
of <var>A</var>. Thus the 4-point gap receives the
background color
from <var>P</var>, and the 2-point gap before <var>C</var>
receives the background color from <var>B</var>.</p>
</div3>
<div3><head>Intrusion Adjustments</head>
<p><spot id="fosg_1c"/>Intrusion adjustments (both start- and end-) are defined to account for the
indentation that occurs as the result of side floats.</p>
<p>If <var>A</var> and <var>B</var> are areas which have the same nearest reference area ancestor, then <var>A</var>
and <var>B</var> are defined to be <term>inline-overlapping</term> if there is some line
parallel to the inline-progression-direction, which intersects both the
allocation-rectangle of <var>A</var> and the allocation-rectangle of <var>B</var>.  If the distance in
the block-progression direction from the after-edge of the allocation-rectangle
of <var>A</var> to the before-edge of the allocation-rectangle of <var>B</var> some nonnegative number
<var>y</var>, then <var>A</var> and <var>B</var> are defined to <term>have clearance of y</term>.</p>
<p>If <var>B</var> is a block-area then its <term>before-intrusion-allowance</term> is defined
to be the sum of the border-before-width and padding-before-width values of all
areas which are ancestors of <var>B</var> and descendants of <var>B</var>'s nearest ancestor
reference-area.</p>

<p>If <var>A</var> is an area of class <code role="value">xsl-side-float</code> and <var>B</var> is a block-area, and <var>A</var> and <var>B</var> have
the same nearest reference area ancestor then <var>A</var> is defined to
<term>intrude</term> on <var>B</var> if:</p>
<ulist>
<item><p><var>A</var> and <var>B</var> are inline-overlapping, or</p></item>
<item><p><var>A</var> and <var>B</var> have clearance of <var>y</var>, where <var>y</var> is some value greater than zero and
less than the before-intrusion-allowance of <var>B</var> (this is to account for
irregularly-drawn borders and padding); or</p></item>
<item><p><var>A</var> has float="start", <var>B</var> is a descendant of an area <var>L</var> generated by an
fo:list-item-body, <var>A</var> intrudes on some line-area or reference-area descendant <var>D</var> of
the sibling area of <var>L</var>, and <var>D</var> and <var>B</var> are inline-overlapping. (This is to ensure
that intrusion persists long enough so that the list-item-body does not drift to
the other side of the list-item-label.)</p></item>
</ulist>
<p>If <var>A</var> is a block-area with float="start", then the start-intrusion value of <var>A</var> is
the distance from the start-edge of the content-rectangle of the parent of <var>A</var> to
the end-edge of the allocation-rectangle of <var>A</var>. If <var>A</var> is a block-area with
float="end" then the end-intrusion value of <var>A</var> is the distance from the start-edge
of the allocation-rectangle of <var>A</var> to the end-edge of the content-rectangle of the
parent of <var>A</var>.</p>
<p>If <var>B</var> is a block-area which is a reference-area or a line-area, then the
start-intrusion-adjustment is defined to be the maximum of the start-intrusion
values of the areas which intrude on <var>B</var>.  The end-intrusion-adjustment is defined
to be the maximum of the end-intrusion values of the areas which intrude on <var>B</var>.</p>
<p>If <var>B</var> is not a reference-area or line-area, then its start-intrusion-adjustment
and end-intrusion-adjustment are defined to be zero.</p>
</div3>
</div2>
<div2 id="area-line"><head>Line-areas</head>
<p>A line-area is a special type of block-area, and is generated by the same
formatting object which generated
its parent. Line-areas do not have borders and padding, i.e., border-before-width,
padding-before-width, etc. are all zero. Inline-areas are stacked within a line-area
relative to a <term>baseline-start-point</term> which is a point determined by the
formatter, on the start-edge of the line area's content-rectangle.</p>
<p>The allocation-rectangle of a line is determined by the value of the
<trait>line-stacking-strategy</trait> trait: if the
value is <code role="value">font-height</code>, the allocation-rectangle is
the <term>nominal-requested-line-rectangle</term>, defined below; if the value is
<code role="value">max-height</code>, the allocation-rectangle is the
<term>maximum-line-rectangle</term>, defined below; and if
the value is
<code role="value">line-height</code>, the allocation-rectangle is the
<term>per-inline-height-rectangle</term>, defined below.</p>

<p>The <term>nominal-requested-line-rectangle</term> for a line-area is the rectangle
whose start-edge and end-edge are parallel to and coincident with the start-edge
and end-edge of the content-rectangle of the parent block-area (as modified by
typographic properties such as indents), whose before-edge is separated from the
baseline-start-point by the text-altitude, and whose after-edge is
separated from the baseline-start-point by the text-depth. It has the
same block-progression-dimension for each line-area child of a block-area.</p>

<p>The <term>maximum-line-rectangle</term> for a line-area is the rectangle
whose start-edge and end-edge are parallel to and coincident with the start-edge
and end-edge of the nominal-requested-line-rectangle, and whose
extent in the block-progression-direction is the minimum required to enclose both the
nominal-requested-line-rectangle and the allocation-rectangles of all the
inline-areas stacked within the line-area; this may vary depending on the
descendants of the line-area.</p>

<figure>
<graphic source="InlineExampleMixed.2a.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Nominal and Maximum Line Rectangles</p></figcap>
</figure>

<p>The <term>per-inline-height-rectangle</term> for a line-area is the rectangle
whose start-edge and end-edge are parallel to and coincident with the start-edge
and end-edge of the nominal-requested-line-rectangle, and whose extent in the
block-progression-dimension is determined as follows. For each
inline-area the <term>half-leading</term> is defined to be half the difference of its
line-height minus its block-progression-dimension. The
<term>expanded-rectangle</term> of an inline-area is the rectangle with start-edge
and end-edge coincident with those of its allocation-rectangle, and whose
before-edge and after-edge are outside those of its allocation-rectangle by a
distance equal to the half-leading. The extent of the
per-inline-height-rectangle in the block-progression-direction is then defined to
be the minimum required to enclose both
the nominal-requested-line-rectangle and the expanded-rectangles of all the
inline-areas stacked within the line-area; this may vary depending on the
descendants of the line-area.</p>
<note><p>
Using the nominal-requested-line-rectangle allows equal baseline-to-baseline
spacing. Using the maximum-line-rectangle allows constant space between line-areas.
Using the
per-inline-height-rectangle and zero space-before and space-after allows
CSS-style line box stacking.</p></note>
</div2>
<div2 id="area-inline"><head>Inline-areas</head>
<p>An inline-area has its own <trait>line-height</trait> trait, which may be
different from the line-height of its containing block-area. This may affect the
placement of its ancestor line-area when the line-stacking-strategy
is <code role="value">line-height</code>. An inline-area has an actual-baseline-table
for its nominal-font. It has
a <trait>dominant-baseline-identifier</trait> trait which determines how
its stacked inline-area descendants are to be aligned.</p>
<p>An inline-area may or may not have child areas, and if so it may or may not
be a reference-area. The dimensions of the content-rectangle for an inline-area
without children is computed as specified by the generating formatting object,
as are those of an inline-area with block-area children.</p>
<p>An inline-area with inline-area children has a content-rectangle
which extends from its dominant baseline (see

<specref ref="area-font"/>) by its
after-baseline-height in the block-progression-direction, and in the opposite
direction by its before-baseline-height; in the inline-progression-direction it
extends from the start-edge of the allocation-rectangle of its first child to
the end-end of the allocation-rectangle of its last child.</p>
<p>Examples of inline-areas with children might include portions of inline
mathematical expressions or areas arising from mixed writing systems
(left-to-right within right-to-left, for example).</p>
<div3 id="area-stackinline"><head>Stacked Inline-areas</head>
<p>Inline-area children of an area are typically stacked in the
inline-progression-direction
within their parent area, and this is the default method of
positioning inline-areas.</p>
<p>Inline-areas are stacked relative to the <term>dominant baseline</term>,
as defined above

(<specref ref="area-font"/>).</p>
<p>For a parent area <var>P</var> whose children are inline-areas, <var>P</var>
is defined to be <term>properly stacked</term> if all of the following conditions
hold:</p>
<olist>
<item><p>For each inline-area descendant <var>I</var> of <var>P</var>, the
start-edge, end-edge, before-edge and after-edge of the allocation-rectangle
of <var>I</var> are parallel to corresponding edges of the content-rectangle
of the nearest ancestor reference-area of <var>I</var>.</p></item>
<item><p>For each pair of normal areas <var>I</var> and <var>I</var>'
in the subtree below <var>P</var>, if <var>I</var> and <var>I</var>' have
an inline-stacking constraint <var>S</var>, then the distance between the
adjacent edges of <var>I</var> and <var>I</var>' is consistent with the
constraint imposed by the resolved values of the space-specifiers in
<var>S</var>.</p></item>
<item><p>For any inline-area descendant <var>I</var> of <var>P</var>, the
distance in the shift-direction from the dominant baseline of <var>P</var> to the
alignment-point of <var>I</var> equals the distance between the dominant
baseline
of <var>P</var> and the point corresponding to the alignment-baseline of <var>I</var>
(as determined
by the <trait>actual-baseline-table</trait> of <var>P</var>), plus the
sum of the
baseline-shifts for <var>I</var> and all of its ancestors which are
descendants of <var>P</var>. This alignment is done with respect to the
line-area's dominant baseline, and not with respect to the
dominant baseline of any
intermediate area.</p><p> The first summand is computed to compensate for
mixed writing systems with different baseline types, and the other
summands involve deliberate baseline shifts for things like superscripts
and subscripts.</p></item>
</olist>
</div3>
<div3 id="area-glyph"><head>Glyph-areas</head>
<p>The most common inline-area is a glyph-area, which contains the
representation for a character in a particular font.</p>
<p>A glyph-area has an associated <term>nominal-font</term>, determined by
the area's typographic traits, which apply to its character data, and
a <term>glyph-orientation</term> determined by its writing-mode and
reference-orientation, which determine the orientation of the glyph
when it is rendered.</p>
<p>The alignment-point and dominant-baseline-identifier of a glyph-area are assigned
according to the writing-system in use (e.g., the glyph baseline
in Western languages), and are used to control placement of inline-areas
descendants of a line-area. The formatter may generate inline-areas with
different inline-progression-directions from their parent to accommodate
correct inline-area stacking in the case of mixed writing systems.</p>
<p>A glyph-area has no children. Its block-progression-dimension and
actual-baseline-table are the same for all glyphs in a font.</p>
</div3>
</div2>

<div2 id="area-order"><head>Ordering Constraints</head>

<div3 id="area-genorder"><head>General Ordering Constraints</head>

<p>A subset <var>S</var> of the areas returned to a formatting object is
called <term>properly ordered</term> if the areas in that
subset have the
same order as their generating formatting objects.  Specifically, if <var>A</var><sub>1</sub>
and <var>A</var><sub>2</sub> are areas in <var>S</var>, returned by child
formatting objects <var>F</var><sub>1</sub> and <var>F</var><sub>2</sub>
where <var>F</var><sub>1</sub> precedes <var>F</var><sub>2</sub>,
then <var>A</var><sub>1</sub> must precede <var>A</var><sub>2</sub> in the
pre-order traversal order of the area tree. If <var>F</var><sub>1</sub>
equals <var>F</var><sub>2</sub> and <var>A</var><sub>1</sub> is
returned prior to <var>A</var><sub>2</sub>, then <var>A</var><sub>1</sub>
must precede <var>A</var><sub>2</sub> in the pre-order-traversal
of the area tree.
</p>
<p>For each formatting object <var>F</var> and each area-class <var>C</var>,
the subset consisting of the areas returned to <var>F</var> with area-class
<var>C</var> must be properly ordered, except where
otherwise specified.
</p>
</div3>
<div3 id="area-linebuild"><head>Line-building</head>
<p>This section describes the ordering constraints that apply to formatting
an fo:block or similar block-level object.</p>
<p>A block-level formatting object <var>F</var> which
constructs lines does so by
constructing block-areas which it returns to its parent
formatting object, and placing normal areas returned to
<var>F</var> by its child
formatting objects as children of those block-areas or of
line-areas
which it constructs as children of those block-areas.</p>
<p>For each such formatting object <var>F</var>, it must be
possible to form an
ordered partition <var>P</var> consisting of ordered subsets <var>S</var><sub>1</sub>,
<var>S</var><sub>2</sub>, ..., <var>S</var><sub><var>n</var></sub> of
the normal areas returned by the child formatting objects,
such that the following are all satisfied:</p>
<olist>
<item><p>Each subset consists of a sequence of inline-areas, or of a single
block-area.</p>
</item>
<item><p>The ordering of the partition follows the ordering of the
formatting object tree. Specifically, if <var>A</var> is in
<var>S</var><sub><var>i</var></sub>
and <var>B</var> is in <var>S</var><sub><var>j</var></sub> with
<var>i</var> &lt; <var>j</var>, or if <var>A</var> and <var>B</var> are both in the same subset
<var>S</var><sub><var>i</var></sub> with <var>A</var> before <var>B</var> in the
subset order, then either <var>A</var> is returned by a preceding sibling
formatting object of <var>B</var>, or <var>A</var> and
<var>B</var> are returned by the same
formatting object with <var>A</var> being returned before
<var>B</var>.</p>
</item>
<item><p>The partitioning occurs at legal line-breaks. Specifically, if <var>A</var> is
the last area of <var>S</var><sub><var>i</var></sub> and <var>B</var> is the first area of
<var>S</var><sub><var>i</var>+1</sub>, then the rules of
the language and script in effect must permit a line-break
between <var>A</var> and
<var>B</var>, within the context of all areas in <var>S</var><sub><var>i</var></sub>
and <var>S</var><sub><var>i</var>+1</sub>.</p>
</item>
<item><p>The partition follows the ordering of the area
tree, except for
certain glyph substitutions and deletions.  Specifically, if <var>B</var><sub>1</sub>,
<var>B</var><sub>2</sub>, ..., <var>B</var><sub><var>p</var></sub> are the normal
child areas of the area
or areas returned by <var>F</var>, (ordered in the pre-order traversal order of the
area tree) then there is a one-to-one correspondence between
these child areas
and the partition subsets (i.e., <var>n</var> = <var>p</var>), and for each <var>i</var>,</p>
<ulist>
<item><p>if <var>S</var><sub><var>i</var></sub> consists of a single block-area then
<var>B</var><sub><var>i</var></sub> is that block-area, and</p></item>
<item><p>if <var>S</var><sub><var>i</var></sub> consists of inline-areas then
<var>B</var><sub><var>i</var></sub> is a line-area whose child areas are the
same as the inline-areas in <var>S</var><sub><var>i</var></sub>, and in the same order,
except that where the rules of the language and script in effect call
for glyph-areas to be substituted, inserted, or deleted, then the
substituted or inserted glyph-areas appear in the area tree in the
corresponding place, and the deleted glyph-areas do not appear in the
area tree.
<spot id="fosg_0c"/>Deletions occur when a glyph-area which is last
within a subset S<sub>i</sub>, has a
<trait>suppress-at-line-break</trait> value of <code role="value">suppress</code>,
provided that i &lt; n and B<sub>i+1</sub> is
a line-area.  Deletions also occur when a glyph-area which is first within a subset S<sub>i</sub>,
has a <trait>suppress-at-line-break</trait> value of <code role="value">suppress</code>,
provided that i &gt; 1 and B<sub>i-1</sub> is a line-area.
Insertions and substitutions may
occur because of addition of hyphens or spelling changes due to
hyphenation, or glyph image construction from syllabification, or
ligature formation.</p></item>
</ulist>
</item>
</olist>
<p>Substitutions that replace a sequence of glyph-areas with a single
glyph-area should only occur when the margin, border, and padding in the
inline-progression-direction (start- and end-), baseline-shift, and
letter-spacing values are zero, treat-as-word-space is
<code role="value">false</code>, and the
values of all other relevant traits match (i.e.,
alignment-adjust, baseline-identifier, color
trait, background traits, dominant-baseline-identifier, font traits,
font-height-override-after,
font-height-override-before, glyph-orientation-horizontal,
glyph-orientation-vertical, line-height, line-height-shift-adjustment,
text-decoration, text-shadow).</p>
<note><p>Line-areas do not receive the background traits or text-decoration
of their generating formatting object, or any other trait that requires
generation of a mark during rendering.</p></note>
</div3>


<div3 id="area-inlinebuild"><head>Inline-building</head>
<p>This section describes the ordering constraints that apply to formatting
an fo:inline or similar inline-level object.</p>
<p>An inline-level formatting object <var>F</var> which
constructs one or more inline-areas does so by
placing normal inline-areas returned to <var>F</var> by its child
formatting objects as children of inline-areas which it
generates.</p>
<p>For each such formatting object <var>F</var>, it must be
possible to form an
ordered partition <var>P</var> consisting of ordered subsets <var>S</var><sub>1</sub>,
<var>S</var><sub>2</sub>, ..., <var>S</var><sub><var>n</var></sub> of
the normal inline-areas returned by the child formatting
objects, such that the following are all satisfied:</p>
<olist>
<item><p><spot id="fo0001_16c"/>Each subset consists of a sequence of inline-areas,
or of a single block-area.</p>
</item>
<item><p><spot id="fo0001_16d"/>The ordering of the partition follows
the ordering of the formatting object tree, as defined above.</p>
</item>
<item><p><spot id="fo0001_16e"/>The partitioning occurs at legal line-breaks, as defined above.</p>
</item>
<item><p><spot id="fo0001_16f"/>The partition follows the ordering of the area tree,
except for certain glyph substitutions and deletions, as
defined above.</p>
</item>
</olist>
</div3>
</div2>

<div2 id="keepbreak"><head>Keeps and Breaks</head>
<p>Keep and break conditions apply to a class of areas, which are typically
page-reference-areas,
column-areas, and line-areas.  The appropriate class for a given condition is referred
to as a <term>context</term> and an area in this class is a <term>context-area</term>.
As defined in Section <specref ref="pag-intro"/>, <term>page-reference-areas</term> are
areas generated by an fo:page-sequence using the
specifications in a fo:page-master, and
<spot id="fosg_2a"/><term>column-areas</term> are
normal-flow-reference-areas generated from a region-body, or
region-reference-areas generated from other types of region-master.</p>
<p>A keep or break condition is an open statement about a formatting object and the
tree relationships of the areas it generates with the relevant context-areas. These
tree relationships are defined mainly in terms of <term>leading</term> or <term>trailing</term>
areas.  If <var>A</var> is a descendant of <var>P</var>, then <var>A</var> is defined to
be <term>leading</term> in <var>P</var> if <var>A</var> has no preceding sibling which
is a normal area, nor does any of its ancestor areas up to but not including
<var>P</var>.  Similarly, <var>A</var> is defined to
be <term>trailing</term> in <var>P</var> if <var>A</var> has no following sibling which
is a normal area, nor does any of its ancestor areas up to but not including
<var>P</var>. For any given formatting object, the <term>next</term> formatting object
in the flow is the first formatting object following (in the pre-order traversal order)
which generates and returns normal areas.</p>
<p>Break conditions are either break-before or break-after conditions.  A break-before
condition is <term>satisfied</term> if the first area generated and returned
by the formatting object is
leading within a context-area. A break-after condition
depends on the next formatting object in
the flow; it is satisfied if either there is no such next formatting object, or if the
first normal area generated and returned by that formatting object is leading in a context-area.</p>
<p>Break conditions are imposed by the <trait>break-before</trait> and
<trait>break-after</trait> properties. A
refined value of <code role="value">page</code> for these traits imposes a
break condition with a context
consisting of the page-reference-areas; a value of <code role="value">even-page</code>
or <code role="value">odd-page</code> imposes a
break condition with a context of even-numbered page-reference-areas
or odd-numbered
page-reference-areas, respectively; a value of <code role="value">column</code> imposes a
break condition with a
context of column-areas. A value of <code role="value">auto</code> in a
break-before or break-after
trait imposes no break condition.</p>
<p>Keep conditions are either keep-with-previous, keep-with-next, or keep-together
conditions.  A keep-with-previous condition on an object is satisfied if the first
area generated and returned by the formatting object is not leading within a
context-area, or if
there are no preceding areas in a post-order traversal of the area tree.  A
keep-with-next condition is satisfied if the last area generated and returned by the
formatting object is not trailing within a context-area, or
if there are
no following areas in a pre-order traversal of the area tree.  A keep-together
condition is satisfied if all areas generated and returned by the formatting object are
descendants of a single context-area.</p>
<p>Keep conditions are imposed by the "within-page", "within-column", and "within-line" components
of the "keep-with-previous", "keep-with-next", and
<spot id="fo0001jc_a"/>"keep-together" properties.
The refined value of each component specifies the <term>strength</term> of the keep condition
imposed, with higher numbers being stronger than lower numbers and the value
<code role="value">always</code> being stronger than all numeric values.
A component with value <code role="value">auto</code>
does not impose a keep condition.  A "within-page" component imposes a keep-condition
with context consisting of the page-reference-areas; "within-column", with context consisting of
the column-areas; and "within-line" with context consisting of the line-areas.</p>
<p>The area tree is constrained to satisfy all break conditions imposed.
Each keep condition must also be satisfied, except when this would cause a
break condition or a stronger keep condition to fail to be satisfied. If not
all of a set of keep conditions of equal strength can be satisfied, then some
maximal satisfiable subset of conditions of that strength
must be satisfied (together with all break conditions
and maximal subsets of stronger keep conditions, if any).</p>
</div2>

<div2 id="rendmodel"><head>Rendering Model</head>
<p>
This section makes explicit the relationship between the area tree
and visually rendered output.
</p>
<p>
Areas generate three types of marks: (1) the area
background, if any, (2) the marks
intrinsic to the area (a glyph, image, or decoration) if any, and (3) the
area border, if any.
</p>
<p>
An area tree is rendered by causing marks to appear on an output medium in
accordance with the areas in the area tree.  This section describes the
geometric location of such marks, and how conflicts between marks are to
be resolved.
</p>
<div3 id="rend-geo"><head>Geometry</head>
<p>
Each area is rendered in a particular location. Formatting object semantics
describe the location of intrinsic marks relative to the object's location,
i.e., the left, right, top, and bottom edges of its content-rectangle. This
section describes how the area's location is determined,
which determines the location of its intrinsic marks.
</p>
<p>
For each page, the page-viewport-area corresponds isometrically to the
output medium.
</p>
<p>
The page-reference-area is offset from the page-viewport-area as described
below in section <specref ref="rend-view"/>.
</p>
<p>
All areas in the tree with an area-class of <code role="value">xsl-fixed</code>
are positioned such
that the left-, right-, top-, and bottom-edges of its
content-rectangle are
offset inward from the content-rectangle of its ancestor page-viewport-area
by distances specified by the <trait>left-position</trait>,
<trait>right-position</trait>, <trait>top-position</trait>,
and <trait>bottom-position</trait> traits, respectively.
</p>
<p>
Any area in the tree which is the child of a viewport-area is rendered
as described in section <specref ref="rend-view"/>.
</p>
<p>
All other areas in the tree are positioned such that the
left-, right-, top-,
and bottom-edges of its content-rectangle are offset inward
from the
content-rectangle of its nearest ancestor reference-area by distances
specified by the <trait>left-position</trait>,
<trait>right-position</trait>, <trait>top-position</trait>,
and
<trait>bottom-position</trait> traits, respectively.  These are shifted left
and down by the values of the <trait>top-offset</trait>
and <trait>left-offset</trait> traits, respectively, if the area
has a <trait>relative-position</trait> of <code role="value">relative</code>.
</p>
</div3>
<div3 id="rend-view"><head>Viewport Geometry</head>
<p>
A reference-area which is the child of a viewport-area is positioned
such that
the start-edge and end-edge of its content-rectangle are
parallel to the
start-edge and end-edge of the content-rectangle of its parent
viewport-area. The start-edge of its content-rectangle
is offset from the start-edge of the content-rectangle of its parent viewport-area
by an <term>inline-scroll-amount</term>, and the before-edge of its content-rectangle is offset from the
before-edge of
the content-rectangle of its parent viewport-area by a
<term>block-scroll-amount</term>.
</p>
<p>
If the block-progression-dimension of the reference-area is larger
than that
of the viewport-area and the <trait>overflow</trait> trait
for the reference-area is <code role="value">scroll</code>,
then the inline-scroll-amount and block-scroll-amount are
determined by a scrolling mechanism, if any,
provided by the user agent. Otherwise, both are zero.
</p>
</div3>
<div3 id="rend-vis"><head>Visibility</head>
<p>
The visibility of marks depends upon the location of the marks,
the <trait>visibility</trait> of the area, and the <trait>overflow</trait> of any ancestor
viewport-areas.
</p>
<p>
If an area has visibility <code role="value">hidden</code> it generates no marks.
</p>
<p>
If an area has an <trait>overflow</trait> of <code role="value">hidden</code>,
or when the environment is non-dynamic and the <trait>overflow</trait> is
<code role="value">scroll</code> then the area determines
a <term>clipping rectangle</term>, which is defined to be the
rectangle determined by the value of the <trait>clip</trait> trait of the area, and
for any mark
generated by one of its descendant areas, portions of the mark
lying outside
the clipping rectangle do not appear.</p>
</div3>
<div3 id="rend-border"><head>Border, Padding, and Background</head>
<p>
The border- and padding-rectangles are determined relative to the
content-rectangle by the values of the common padding and border width
traits (border-before-width, etc.).
</p>
<p>
For any area which is not a child of a viewport-area, the border is
rendered between the border-rectangle and the padding-rectangle in
accordance with the common border color and style traits. For a child of
a viewport-area, the border is not rendered.
</p>
<p>For an area which is not part of a viewport/reference pair, the
background is rendered. For an area that is either a viewport-area or a
reference-area in a viewport/reference pair, if the refined value of
<trait>background-attachment</trait> is <code role="value">scroll</code>
and the block-progression-dimension of the reference-area is larger than
that of the viewport-area, then the background is rendered on the
reference-area and not the viewport-area, and otherwise it is rendered
on the viewport-area and not the reference-area.
</p>
<p>
The background, if any, is rendered in the
padding-rectangle, in accordance
with the <trait>background-image</trait>,
<trait>background-color</trait>,
<trait>background-repeat</trait>,
<trait>background-position-vertical</trait>, and
<trait>background-position-horizontal</trait> traits.
</p>
</div3>
<div3 id="rend-intrinsic"><head>Intrinsic Marks</head>
<p>
For each class of formatting objects, the marks intrinsic to its
generated areas are specified in the formatting object description.
For example, an fo:character object generates a glyph-area, and this
is rendered by drawing a glyph within that area's
content-rectangle in accordance with the area's font traits and <trait>glyph-orientation</trait>
and <trait>blink</trait> traits.
</p>
<p>
In addition, other traits (for example the various score and score-color traits) specify
other intrinsic
marks.  In the case of score traits (<trait>underline-score</trait>,
<trait>overline-score</trait> and <trait>through-score</trait>), the score thickness and position
are specified by the nominal-font in effect; where the font fails to
specify these quantities, they are implementation-dependent.

</p>
</div3>
<div3 id="rend-layer"><head>Layering and Conflict of Marks</head>
<p>
Marks are layered as described below, which defines a partial
ordering of which marks are <term>beneath</term> which other marks.
</p>
<p>
Two marks are defined to <term>conflict</term> if they apply to
the same point
in the output medium. When two marks conflict, the one which is
beneath the other does not affect points in the output medium where
they both apply.
</p>
<p>
Marks generated by the same area are layered as follows:  the area
background is beneath the area's intrinsic marks, and the intrinsic
marks are beneath the border.  Layering among the area's intrinsic
marks is defined by the semantics of the area's generating formatting
object and its properties.  For example, a glyph-area's glyph drawing
comes beneath the marks generated for text-decoration.
</p>
<p>The stacking layer of an area is defined by its stacking context and
its z-index value. The stacking layer of an area <var>A</var> is defined to be less
than that of an area <var>B</var> if some ancestor-or-self <var>A'</var> of <var>A</var>
and <var>B'</var> of <var>B</var> have the same stacking context and
the z-index of <var>A'</var> is less
than the z-index of <var>B'</var>. If neither stacking layer is less than the
other then they are defined to have the same stacking layer.</p>

<p>If <var>A</var> and <var>B</var> are areas, and the stacking layer
of <var>A</var> is less than the stacking layer
of <var>B</var>, then all marks generated by <var>A</var>
are beneath all marks generated by <var>B</var>.
</p>
<p>
If <var>A</var> and <var>B</var> are areas with the same
stacking layer, the backgrounds of <var>A</var> and <var>B</var>
come beneath all other marks generated by <var>A</var> and
<var>B</var>. Further, if <var>A</var> is an
ancestor of <var>B</var> (still with the same stacking layer), then
the background of <var>A</var>
is beneath all the areas of <var>B</var>, and all the areas
of <var>B</var> are beneath the intrinsic areas (and border)
of <var>A</var>.
</p>
<p>
If <var>A</var> and <var>B</var> have the same stacking layer and
neither is an ancestor of the other,
then it is an error if either their backgrounds conflict or if a
non-background mark of <var>A</var> conflicts with a
non-background mark of <var>B</var>.
An implementation may recover by proceeding as if the marks from the
first area in the pre-order traversal order are beneath those of the
other area.
</p>
</div3>
</div2>
<div2 id="area-tree-sample"><head>Sample Area Tree</head>
<graphic source="page-area-tree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
</div2>
<div2 id="area-traitlist"><head>List of Traits on Areas</head>
<ulist>
<item><p>block-progression-direction</p></item>
<item><p>inline-progression-direction</p></item>
<item><p>shift-direction</p></item>
<item><p>glyph-orientation</p></item>
<item><p>is-reference-area</p></item>
<item><p>is-viewport-area</p></item>
<item><p>left-position</p></item>
<item><p>right-position</p></item>
<item><p>top-position</p></item>
<item><p>bottom-position</p></item>
<item><p>left-offset</p></item>
<item><p>top-offset</p></item>
<item><p>is-first</p></item>
<item><p>is-last</p></item>
<item><p>alignment-point</p></item>
<item><p>area-class</p></item>
<item><p>start-intrusion-adjustment</p></item>
<item><p>end-intrusion-adjustment</p></item>
<item><p>generated-by</p></item>
<item><p>returned-by</p></item>
<item><p>page-number</p></item>
<item><p>blink</p></item>
<item><p>underline-score</p></item>
<item><p>overline-score</p></item>
<item><p>through-score</p></item>
<item><p>underline-score-color</p></item>
<item><p>overline-score-color</p></item>
<item><p>through-score-color</p></item>
<item><p>alignment-baseline</p></item>
<item><p>baseline-shift</p></item>
<item><p>nominal-font</p></item>
<item><p>dominant-baseline-identifier</p></item>
<item><p>actual-baseline-table</p></item>
<item><p>script</p></item>

</ulist>
</div2>
</div1>


<div1 id="refinement"><head>Property Refinement / Resolution</head>


<p>During refinement the set of <term>properties</term> that apply to a formatting
object is transformed into a set of <term>traits</term> that
define constraints on the result of formatting. For many traits there
is a one-to-one correspondence with a property; for other traits the
transformation is more complex. Details on the transformation are
described below.
</p>
<p>The first step in refinement of a particular formatting object
is to obtain the effective value of each property that applies to the
object. Any shorthand property specified on the formatting object is
expanded into the individual properties. This is further described in
<specref ref="shortexpan"/>. For any property that has not been specified
on the object the inherited (see <specref ref="inheritance"/>)
or initial value, as applicable, is used as the effective value.
The second step is to transform this property set into traits.
</p>
<note><p>Although the refinement process is described in a series of
steps, this is solely for the convenience of exposition
and does not imply they must be implemented as separate
steps in any conforming implementation. A conforming implementation
must only achieve the same effect.</p>
</note>
<div2 id="speccomact">
<head>Specified, Computed, and Actual Values, and Inheritance</head>
<p>For every property that is applicable to a given
formatting object, it is necessary to determine
the value of the property.
Three variants of the property value are
distinguished: the specified value, the computed value, and
the actual value. The "specified value" is one that is
placed on the formatting object during the tree-construction process.
A specified value may not be in a
form that is directly usable; for example, it may be a
percentage or other expression
that must be converted into an absolute value.
A value resulting from such a conversion is called the
"computed value".  Finally, the computed value may not be
realizable on the output medium and may need to be adjusted
prior to use in rendering. For example, a line width may be
adjusted to become an integral number of output
medium pixels. This adjusted value is the "actual value."</p>
<div3><head>Specified Values</head>
<p>The specified value of a property is
determined using the following mechanisms
(in order of precedence):</p>
<olist><item><p>
If the tree-construction process placed the property
on the formatting object, use the value of that property
as the specified value.  This is called "explicit
specification".</p></item>
<item><p>
Otherwise, if the property is inheritable, use the value of that
property from the parent formatting object, generally the
computed value (see below).</p></item>
<item><p>
Otherwise use the property's initial value, if it has one.
The initial value of each property is indicated in the
property's definition. If there is no initial value, that
property is not specified on the formatting object.
In general, this is an error.
</p></item></olist>
<p>Since it has no parent, the root of the result tree
cannot use values from its parent formatting
object; in this case, the initial value is used if necessary.</p>
</div3>
<div3><head>Computed Values</head>
<p>Specified values may be absolute (i.e., they are not
specified relative to another value, as in "red" or "2mm")
or relative (i.e., they are specified relative to another value,
as in "auto", "2em", and "12%"), or they may be expressions.
For most absolute values, no
computation is needed to find the computed value. Relative values,
on the other hand, must be transformed into computed values: percentages
must be multiplied by a reference value (each property defines which value
that is), values with a relative unit (em)
must be made absolute by multiplying with the appropriate font size,
"auto" values must be computed by the formulas given with
each property, certain property
values ("smaller", "bolder") must be replaced
according to their definitions.
The computed value of any property that controls a border width
where the style of
the border is "none" is forced to be "0pt".</p>
<p>
Some properties have more than one way in which the property value can be specified.
The simplest example of such properties are those which can be specified
either in terms of a direction relative to the writing-mode (e.g., padding-before)
or a direction in terms of the absolute geometric orientation of the viewport
(e.g., padding-top). These two properties are called the
relative property and the absolute property, respectively.
Collectively, they are called "corresponding properties".</p>
<p>Specifying a value for one property determines both a
computed value for the specified property and a computed value
for the corresponding property.
Which relative property corresponds to which absolute
property depends on the writing-mode. For example, if
the "writing-mode" at the top level of a document is
"lr-tb",
then "padding-start" corresponds to "padding-left", but if
the "writing-mode" is "rl-tb", then "padding-start"
corresponds to "padding-right".
The exact specification of how to compute the values of
corresponding properties is given in <specref ref="compcorr"/>.</p>
<p>In most cases, elements inherit computed values. However,
there are some properties whose specified value may be
inherited (e.g., <spot id="c15i9"/>some values for the "line-height"
property).
In the cases where child elements do not inherit the computed value,
this is described in the property definition.</p>
</div3>
<div3><head>Actual Values</head>
<p>A computed value is in principle ready to be
used, but a user agent may not be able to make
use of the value in a given environment. For
example, a user agent may only be able to render
borders with integer pixel widths and may, therefore,
have to adjust the computed width to an integral number
of media pixels. The actual
value is the computed value after any such adjustments have been applied.</p>
</div3>
<div3 id="inheritance"><head>Inheritance</head>
<p>Some of the properties applicable to formatting objects are "inheritable."
Such properties are so identified in the property description.
The inheritable properties can be placed on any formatting
object.  The inheritable properties are propagated down the
formatting object tree from a parent to each child.  (These properties
are given their initial value at the root of the result tree.)
For a given inheritable property, if that property is present on a
child, then that value of the property is used for that child
(and its descendants until explicitly re-set in a lower descendant);
otherwise, the specified value of that property on the child is the
computed value of that property on the parent formatting
object. Hence there is always a specified value
defined for every inheritable property for every
formatting object.</p>
</div3>
</div2>

<div2 id="shortexpan"><head>Shorthand Expansion</head>
<p>In XSL there are two kinds of shorthand properties; those originating
from CSS, such as "border", and those that arise from breaking apart
and/or combining CSS properties, such as "page-break-inside". In XSL
both types of shorthands are handled in the same way.</p>
<note><p>Shorthands are only included in the highest XSL conformance
<spot id="c11i26"/>level: "complete".</p>
<p>The conformance level for each property is shown in
<specref ref="prtab2"/>.</p>
</note>
<p>Shorthand properties do not inherit from
the shorthand on the parent. Instead the individual properties that
the shorthand expands into may inherit.</p>
<p>Some CSS shorthands are interrelated; their expansion has one
or more individual properties in common.
CSS indicates that the user must specify the order of processing
for combinations of multiple interrelated shorthands and individual
interrelated properties. In XML, attributes are defined as unordered.
To resolve this issue, XSL defines a precedence order
when multiple interrelated shorthand properties or a shorthand property
and an interrelated individual property are specified:</p>
<p>They are processed in increasing precision (i.e., "border" is less precise
than "border-top", which is less precise than "border-top-color").
The individual properties are always more precise than any shorthand.
For the remaining ambiguous case, XSL defines the ordering to
be:</p>
<olist>
<item><p>"border-style", "border-color", and "border-width"
is less precise than</p></item>
<item><p>"border-top", "border-bottom", "border-right",
and "border-left".</p></item>
</olist>
<p>Processing is conceptually in the following steps:</p>
<olist>
<item><p>Set the effective value of
all properties to their initial values.</p></item>
<item><p>Process all shorthands in increasing precision.</p>
<p>If the shorthand is set to "inherit": set the effective
value of each property that can be set by the shorthand to
the computed value of the corresponding property in the parent.</p>
<p>If the value of the shorthand is not "inherit": determine which
individual properties are to be set, and replace the
<spot id="c11i27"/>initial value with the computed value derived from the specified
value.</p></item>
<item><p>Process all specified individual properties.</p>
</item>
<item><p>Carry out any inheritance for properties that were
not given a value other than by the first step.</p>
</item>
</olist>
<note><p>For example,
if both the "background"
and the "background-color" properties are specified on a given
formatting object:
process the "background" shorthand, then process the
"background-color" property.</p></note>
</div2>

<div2 id="compcorr"><head>Computing the Values of Corresponding Properties</head>
<p>Where there are corresponding properties, such as "padding-left"
and "padding-start", a computed value is determined for all the
corresponding properties. How the computed values are determined
for a given formatting object is dependent on which of
the corresponding properties are specified on the object. See description
below.</p>
<p>The <spot id="aj000035_10b"/>correspondence mapping from absolute to relative property
is as follows:
</p>
<p>If the "writing-mode" specifies a block-progression-direction of
"top-to-bottom": "top" maps to "before", and "bottom" maps to "after".</p>
<p>If the "writing-mode" specifies a block-progression-direction of
"bottom-to-top": "top" maps to "after", and "bottom" maps to "before".</p>
<p>If the "writing-mode" specifies a block-progression-direction of
"left-to-right": "left" maps to "before", and "right" maps to "after".</p>
<p>If the "writing-mode" specifies a block-progression-direction of
"right-to-left": "left" maps to "after", and "right" maps to "before".</p>
<p>If the "writing-mode" specifies an inline-progression-direction of
"left-to-right": "left" maps to "start", and "right" maps to "end".</p>
<p>If the "writing-mode" specifies an inline-progression-direction of
"right-to-left": "left" maps to "end", and "right" maps to "start".</p>
<p>If the "writing-mode" specifies an inline-progression-direction of
"top-to-bottom": "top" maps to "start", and "bottom" maps to "end".</p>
<p>If the "writing-mode" specifies an inline-progression-direction of
"bottom-to-top": "top" maps to "end", and "bottom" maps to "start".</p>
<p>If the "writing-mode" specifies an inline-progression-direction of
"left-to-right" for odd-numbered lines, and "right-to-left" for
even-numbered <spot id="c11i29"/>lines: "left" maps to "start", and "right" maps to "end".</p>
<note><p>"reference-orientation" is a rotation and does not influence
the <spot id="aj000035_10c"/>correspondence mapping.
</p>
</note>
<div3 id="refine-border-padding"><head>Border and Padding Properties</head>
<p>The simplest class of corresponding properties are
those for which there are only two variants in the
<spot id="aj000035_10d"/>correspondence, an absolute property and a relative
property, and the property names differ only in the
choice of absolute or
relative designation; for example, "border-left-color" and
"border-start-color".</p>
<p>For this class, the computed values of the corresponding
properties are determined as follows. If the corresponding
absolute variant of the property is specified on the formatting
object, its computed value is used to set the computed value of the
corresponding relative property.  If the corresponding absolute property
is not explicitly specified, then the computed
value of the absolute property is set to the computed value of the
corresponding relative property.</p>
<p>Note that if both the absolute and the relative
properties are not
explicitly specified, then the rules for determining the specified
value will use either inheritance if that is defined for the property
or the initial value. The initial value must be the same for all possible
corresponding properties. If both an absolute and a corresponding relative
property are explicitly specified, then the above rule gives precedence to the
absolute property, and the specified value of the
corresponding relative property
is ignored in determining the computed value of the corresponding properties.</p>
<p>The (corresponding) properties that use the above rule to
determine their computed value are:</p>
<ulist>
<item><p>border-after-color</p></item>
<item><p>border-before-color</p></item>
<item><p>border-end-color</p></item>
<item><p>border-start-color</p></item>
<item><p>border-after-style</p></item>
<item><p>border-before-style</p></item>
<item><p>border-end-style</p></item>
<item><p>border-start-style</p></item>
<item><p>border-after-width</p></item>
<item><p>border-before-width</p></item>
<item><p>border-end-width </p></item>
<item><p>border-start-width</p></item>
<item><p>padding-after</p></item>
<item><p>padding-before</p></item>
<item><p>padding-end</p></item>
<item><p>padding-start </p></item>
</ulist>
</div3>
<div3><head>Margin, Space, and Indent Properties</head>
<p>The "space-before", and "space-after" properties (block-level
formatting objects), "space-start", and "space-end" properties
(inline-level formatting objects) are handled in the same way as the
properties immediately above, but the corresponding
absolute properties are in the set: "margin-top",
"margin-bottom", "margin-left", and "margin-right".</p>
<p>There are two more properties, "end-indent" and
"start-indent" (block-level formatting objects),
for which the computed value may be
determined by the computed value of the
absolute margin properties. For these traits,
the calculation of the value of the trait when the
corresponding absolute property is present depends on
three computed values: the computed value of the corresponding
absolute property, the computed value of the corresponding
"padding"
property, and the computed value of the corresponding
"border-width" property.</p>
<p>Here the term "corresponding" has been broadened to mean
that if
"margin-left" is the corresponding absolute property
to "start-indent", then
"padding-left" (and "padding-start")
and "border-left-width" (and "border-start-width") are the
"corresponding" "padding" and "border-width" properties.</p>
<p>The formulae for calculating the computed value of the
"start-indent", and "end-indent" properties are as follows (where
"margin-corresponding" is a variable for the
corresponding absolute "margin" property):</p>
<p><code>
end-indent = margin-corresponding + padding-end + border-end-width</code></p>
<p><code>start-indent = margin-corresponding + padding-start + border-start-width</code></p>
<p>If an absolute "margin" property is not explicitly
specified,
these equations determine a computed value for the corresponding
"margin" property given values for the three traits
<emph>corresponding</emph>-indent,
padding-<emph>corresponding</emph> and
border-<emph>corresponding</emph> width.</p>
</div3>
<div3><head>Height, and Width Properties</head>
<p>Based on the writing-mode in effect for the formatting object,
either the "height", "min-height", and "max-height" properties, or
the "width", "min-width", and "max-width" properties are converted
to the corresponding block-progression-dimension, or
inline-progression-dimension.</p>
<p>The "height" properties are absolute and indicate the dimension
from "top" to "bottom"; the width properties the dimension from
"left" to "right".</p>
<p>If the "writing-mode" specifies a block-progression-direction of
"top-to-bottom" or "bottom-to-top" the conversion is as follows:</p>
<ulist>
<item><p>If any of "height", "min-height", or "max-height" is specified:</p>
<ulist>
<item><p>If "height" is specified then first set:</p>
<p>block-progression-dimension.minimum=&lt;height&gt;</p>
<p>block-progression-dimension.optimum=&lt;height&gt;</p>
<p>block-progression-dimension.maximum=&lt;height&gt;</p>
</item>
<item><p>If "height" is not specified, then first set:</p>
<p>block-progression-dimension.minimum=auto</p>
<p>block-progression-dimension.optimum=auto</p>
<p>block-progression-dimension.maximum=auto</p>
</item>
<item><p>Then, if "min-height" is specified, reset:</p>
<p>block-progression-dimension.minimum=&lt;min-height&gt;</p>
</item>
<item><p>Then, if "max-height" is specified, reset:</p>
<p>block-progression-dimension.minimum=&lt;max-height&gt;</p>
</item>
<item><p>However, if "max-height" is specified
as "none", reset:</p>
<p>block-progression-dimension.minimum=auto</p>
</item>
</ulist>
</item>
<item><p>If any of "width", "min-width", or "min-width" is specified:</p>
<ulist>
<item><p>If "width" is specified then first set:</p>
<p>inline-progression-dimension.minimum=&lt;width&gt;</p>
<p>inline-progression-dimension.optimum=&lt;width&gt;</p>
<p>inline-progression-dimension.maximum=&lt;width&gt;</p>
</item>
<item><p>If "width" is not specified, then first set:</p>
<p>inline-progression-dimension.minimum=auto</p>
<p>inline-progression-dimension.optimum=auto</p>
<p>inline-progression-dimension.maximum=auto</p>
</item>
<item><p>Then, if "min-width" is specified, reset:</p>
<p>inline-progression-dimension.minimum=&lt;min-width&gt;</p>
</item>
<item><p>Then, if "max-width" is specified, reset:</p>
<p>inline-progression-dimension.minimum=&lt;max-width&gt;</p>
</item>
<item><p>However, if "max-width" is specified
as "none", reset:</p>
<p>inline-progression-dimension.minimum=auto</p>
</item>
</ulist>
</item>
</ulist>
<p>If the "writing-mode" specifies a block-progression-direction of
"left-to-right" or "right-to-left" the conversion is as follows:</p>
<ulist>
<item><p>If any of "height", "min-height", or "max-height" is specified:</p>
<ulist>
<item><p>If "height" is specified then first set:</p>
<p>inline-progression-dimension.minimum=&lt;height&gt;</p>
<p>inline-progression-dimension.optimum=&lt;height&gt;</p>
<p>inline-progression-dimension.maximum=&lt;height&gt;</p>
</item>
<item><p>If "height" is not specified, then first set:</p>
<p>inline-progression-dimension.minimum=auto</p>
<p>inline-progression-dimension.optimum=auto</p>
<p>inline-progression-dimension.maximum=auto</p>
</item>
<item><p>Then, if "min-height" is specified, reset:</p>
<p>inline-progression-dimension.minimum=&lt;min-height&gt;</p>
</item>
<item><p>Then, if "max-height" is specified, reset:</p>
<p>inline-progression-dimension.minimum=&lt;max-height&gt;</p>
</item>
<item><p>However, if "max-height" is specified
as "none", reset:</p>
<p>inline-progression-dimension.minimum=auto</p>
</item>
</ulist>
</item>
<item><p>If any of "width", "min-width", or "min-width" is specified:</p>
<ulist>
<item><p>If "width" is specified then first set:</p>
<p>block-progression-dimension.minimum=&lt;width&gt;</p>
<p>block-progression-dimension.optimum=&lt;width&gt;</p>
<p>block-progression-dimension.maximum=&lt;width&gt;</p>
</item>
<item><p>If "width" is not specified, then first set:</p>
<p>block-progression-dimension.minimum=auto</p>
<p>block-progression-dimension.optimum=auto</p>
<p>block-progression-dimension.maximum=auto</p>
</item>
<item><p>Then, if "min-width" is specified, reset:</p>
<p>block-progression-dimension.minimum=&lt;min-width&gt;</p>
</item>
<item><p>Then, if "max-width" is specified, reset:</p>
<p>block-progression-dimension.minimum=&lt;max-width&gt;</p>
</item>
<item><p>However, if "max-width" is specified
as "none", reset:</p>
<p>block-progression-dimension.minimum=auto</p>
</item>
</ulist>
</item>
</ulist>
</div3>
<div3><head>Overconstrained Geometry</head>
<p>The sum of the start-indent, end-indent, and inline-progression-dimension
of the content-rectangle of an area should be equal to the
inline-progression-dimension of the content-rectangle of the closest
ancestor reference-area. In the case where a specification would
lead to them being different the end-indent (and thus the corresponding
margin) is adjusted such that the equality is true.</p>
</div3>
</div2>

<div2><head>Simple Property to Trait Mapping</head>

<p>The majority of the properties map into traits of the same name.
Most of these also simply copy the value from the property.
These are classified as "Rendering", "Formatting", "Specification",
"Font selection", "Reference", and "Action" in the property table in
<specref ref="prtab2"/>.
For example, the property <code>font-style="italic"</code> is
refined into a <trait>font-style</trait> trait with a value of "italic".
</p>
<p>Some traits have a value that is different
from the value of the property. These are classified as "Value change"
in the property table.
For example, the property <code>background-position-horizontal="left"</code>
is refined into a <trait>background-position-horizontal</trait> trait
with a value of "0pt".
The value mapping for these traits is given below.</p>
<div3><head>Background-position-horizontal and
background-position-vertical Properties</head>
<p>A value of "top", "bottom", "left", "right", or "center" is
converted to a length as specified in the property definition.</p>
</div3>
<div3><head>Column-number Property</head>
<p>If a value has not been specified on a formatting object to which
this property applies the initial value is computed as specified
in the property definition.</p>
</div3>
<div3><head>Text-align Property</head>
<p>A value of "left", or "right" is converted to the writing-mode
relative value as specified in the property definition.</p>
</div3>
<div3><head>Text-align-last Property</head>
<p>A value of "left", or "right" is converted to the writing-mode
relative value as specified in the property definition.</p>
</div3>
<div3><head>z-index Property</head>
<p>The value is converted to one that is absolute; i.e., the refined value
is the specified value plus the refined value of z-index of its parent
formatting object, if any.</p>
</div3>
</div2>

<div2><head>Complex Property to Trait Mapping</head>
<p>A small number of properties influence traits in a more
complex manner. Details are given below.</p>

<div3><head>Word-spacing and Letter-spacing Properties</head>
<p>These properties may set values for the <trait>start-space</trait>
and <trait>end-space</trait> traits, as described in the property
definitions.</p>
</div3>
<div3 id="refine-reference-orientation"><head>Reference-orientation Property</head>
<ulist>
<item><p>If this area sets a reference-area:</p>
<olist><item><p>Let <var>A</var> be the area whose traits are being determined;</p></item>
<item><p>Let <var>F</var> be the formatting object that generates area
<var>A</var>;</p></item>
<item><p>Let <var>N</var> be the nearest ancestor formatting object,
including
self, to <var>F</var> such that <var>N</var> generates a reference-area that is an ancestor
of <var>A</var> in the area tree:</p>
<p>Then, the <trait>reference-orientation</trait> trait for <var>A</var> is set to the modulo-360
sum of the "reference-orientation" property on <var>F</var> and the value established
by the "reference-orientation" property of formatting object <var>N</var> (recursively). </p></item>
</olist>
</item>
<item><p>All other areas:</p>
<olist><item><p>Let <var>A</var> be the area whose traits are being determined;</p></item>
<item><p>Let <var>F</var> be the formatting object that generates area
<var>A</var>;</p></item>
<item><p>Let <var>N</var> be the nearest ancestor formatting object,
including
self, to <var>F</var> such that <var>N</var> generates a reference-area that is an ancestor
of <var>A</var> in the area tree:</p>
<p>Then, the <trait>reference-orientation</trait> trait for <var>A</var> is set to the value
established by the "reference-orientation" property of formatting object
<var>N</var>. </p></item>
</olist>
</item>
</ulist>
</div3>
<div3 id="refine-writing-mode"><head>Writing-mode and Direction Properties</head>
<p>The direction traits on an area are indirectly derived from the
"writing-mode", "direction" and "unicode-bidi" properties on the
formatting object that generates the area or the formatting object
ancestors of that formatting object. The exact derivation depends
on the trait.</p>
<ulist>
<item><p>block-progression-direction trait:</p>
<ulist>
<item><p>Let <var>A</var> be the area whose traits are being determined;</p>
</item>
<item><p>Let <var>F</var> be the formatting object that generates area <var>A</var>;</p>
</item>
<item><p>Let <var>N</var> be the nearest ancestor formatting object,
including
self, to <var>F</var> such that <var>N</var> generates a reference-area that is an ancestor
of <var>A</var> in the area tree:</p>
<p>Then, the <trait>block-progression-direction</trait> trait for <var>A</var> is set to the
block-progression-direction established by the "writing-mode" property
of formatting object <var>N</var>. </p>
</item>
</ulist>
</item>
<item><p>inline-progression-direction trait:</p>
<ulist>
<item><p>Let <var>A</var> be the area whose traits are being determined;</p>
</item>
<item><p>Let <var>F</var> be the formatting object that generates area <var>A</var>;</p>
</item>
<item><p>Let <var>N</var> be the nearest ancestor formatting object,
including
self, to <var>F</var> such that at least one of the following conditions is
satisfied:</p>
<ulist>
<item><p><var>N</var> generates a reference-area that is an ancestor
to <var>A</var> in the area tree, or</p>
</item>
<item><p><var>N</var> is a block-level formatting object and the
glyph-orientation
of <var>N</var> is either 0 or 180 degrees, in which case, the "direction"
property establishes the inline-progression-direction for <var>N</var>, or</p>
<note>
<p>The above condition is complex because direction changes in vertical
text only affect the rotated non-ideographic text; that is they
only affect the Latin or Arabic/Hebrew half-width
characters.</p>
</note>
</item>
<item><p><var>N</var> is an inline formatting object and has a "unicode-bidi"
property with a value of either "embed" or "override", in which
case, the "direction" property establishes an inline-progression-direction
for <var>N</var>.</p>
</item>
</ulist>
<p>Then, the <trait>inline-progression-direction</trait> trait for <var>A</var> is set to
the inline-progression-direction established by formatting object
<var>N</var>. If <var>N</var> has both a "writing-mode" and a "direction" property that establishes
the inline-progression-direction then the "direction" property's overrides
that established by the "writing-mode".</p>
<p>The final <trait>inline-progression-direction-trait</trait> may be further modified
by the formatter's application of the unicode-bidi rule, and for
alternating lines in the extended set of international writing-modes.</p>
</item>
</ulist>
</item>
<item><p>shift-direction trait:</p>
<ulist>
<item><p>Let <var>A</var> be the area whose traits are being determined;</p>
</item>
<item><p>Let <var>F</var> be the formatting object that generates area <var>A</var>;</p>
</item>
<item><p>Let <var>N</var> be the nearest ancestor formatting object, including
self, to <var>F</var> such that <var>N</var> generates a reference-area that is an ancestor
of <var>A</var> in the area tree:</p>
<p>Then, the <trait>shift-direction</trait> trait for <var>A</var> is set to the shift-direction
established by the "writing-mode" property of formatting
object <var>N</var>.</p>
<p>The <trait>shift-direction-trait</trait> may be further modified by the formatter
for inverted lines in the extended set of international writing-modes.</p>
</item>
</ulist>
</item>
</ulist>
</div3>
<div3 id="refine-absolute-pos"><head>Absolute-position Property</head>
<p>If absolute-position = "absolute" or "fixed", the values of the
<trait>left-position</trait>, <trait>top-position</trait>, etc. traits
are copied directly from the
values of the "left", "top", etc. properties. Otherwise these traits'
values are left undefined during refinement and determined during
composition.</p>
</div3>
<div3 id="refine-relative-pos"><head>Relative-position Property</head>
<p>If relative-position = "relative" then the values of the
<trait>left-offset</trait> and
<trait>top-offset</trait> traits are copied directly
from the "left" and "top"
properties. If the "right" property is specified but "left" is not,
then <trait>left-offset</trait> is set to the negative of the
value of "right".  If neither
"left" nor "right" is specified the <trait>left-offset</trait> is 0.
If the "bottom"
property is specified but "top" is not, then
<trait>top-offset</trait> is set to the
negative of the value of "bottom". If neither "top" nor "bottom" is
specified the <trait>top-offset</trait> is 0.</p>
</div3>
<div3 id="refine-text-decoration"><head>Text-decoration Property</head>
<p>The "text-decoration" property value provides values for
the <trait>blink</trait> trait and a set of
score and score-color traits. The <term>specified color</term> has the
value of the <trait>color</trait> trait of the formatting object
for which the "text-decoration" property is being refined.</p>
<p>A property value containing the token "underline" sets a value of
"yes" to the <trait>underline-score</trait> trait, and a value of
<term>specified color</term> to the <trait>underline-score-color</trait>
trait.</p>
<p>A property value containing the token "overline" sets a value of
"yes" to the <trait>overline-score</trait> trait, and a value of
<term>specified color</term> to the <trait>overline-score-color</trait>
trait.</p>
<p>A property value containing the token "line-through" sets a value of
"yes" to the <trait>through-score</trait> trait, and a value of
<term>specified color</term> to the <trait>through-score-color</trait>
trait.</p>
<p>A property value containing the token "blink" sets a value of
"yes" to the <trait>blink</trait> trait.</p>
<p>A property value containing the token "no-underline" sets a value of
"no" to the <trait>underline-score</trait> trait, and a value of
<term>specified color</term> to the <trait>underline-score-color</trait>
trait.</p>
<p>A property value containing the token "no-overline" sets a value of
"no" to the <trait>overline-score</trait> trait, and a value of
<term>specified color</term> to the <trait>overline-score-color</trait>
trait.</p>
<p>A property value containing the token "no-line-through" sets a value of
"no" to the <trait>through-score</trait> trait, and a value of
<term>specified color</term> to the <trait>through-score-color</trait>
trait.</p>
<p>A property value containing the token "no-blink" sets a value of
"no" to the <trait>blink</trait> trait.</p>
</div3>

<div3 id="fontprops">
<head>Font Properties</head>
<p>
The font traits on an area are indirectly derived from the combination
of the font properties, which are used to select a font, and the
font tables from that font.
</p>
<p>The abstract model that XSL assumes for a font is described in <specref ref="font-model"/>.
</p>
<p>
There is no XSL mechanism to specify a particular font; instead,
a <term>selected font</term> is chosen from the fonts available to the
User Agent based on a set of selection criteria. The <term>selection
criteria</term> are the following font properties:
"font-family",
"font-style",
"font-variant",
"font-weight",
"font-stretch", and
"font-size",
plus, for some formatting
objects, one or more characters.
The details of
how the selection criteria are used is specified in the
"font-selection-strategy" property (see <specref ref="font-selection-strategy"/>).
</p>
<p>
The <trait>nominal-font</trait> trait is set to the selected font. In the
case where there is no selected font and the 'missing character' glyph
is displayed, the <trait>nominal-font</trait> trait is set to the font containing
that glyph, otherwise
(i.e., some other mechanism was used to indicate that a character
is not being displayed) the <trait>nominal-font</trait> is a
system font.
</p>

<p>
The <trait>dominant-baseline-identifier</trait> and
<trait>actual-baseline-table</trait> traits are derived from the
value of the "dominant-baseline" property. The value of this property
is a compound value with three components: a baseline-identifier for
the dominant-baseline, a baseline-table and a baseline-table
font-size. The <trait>dominant-baseline-identifier</trait> is set from
the first component. The baseline-table font-size is used to scale the
the positions of the baselines from the baseline table and, then, the
position of the dominant-baseline is subtracted from the positions
of the other baselines to yield a table of offsets from the dominant
baseline. This table is the value of the
<trait>actual-baseline-table</trait> trait.
</p>
</div3>
</div2>

<div2><head>Non-property Based Trait Generation</head>
<p>The <trait>is-reference-area</trait> trait is set to "true" for the
following formatting objects:
"simple-page-master", "title",
"region-body", "region-before","region-after", "region-start", "region-end",
"block-container", "inline-container",
"table", "table-caption",
and
"table-cell".
For all other formatting objects it is set to "false".
</p>
</div2>

<div2><head>Property Based Transformations</head>
<div3><head>Text-transform Property</head>
<p>The case changes specified by this property are carried out during
refinement by changing the value of the "character" property
appropriately.</p>
<note><p>The use of the "text-transform" property is deprecated in XSL
due to its severe internationalization issues.</p>
</note>
</div3>
</div2>
<div2><head>Unicode Bidi Processing</head>

<note><p>This section is subject to further updating.
</p></note>
<p>The final step of refinement uses the Unicode Bidi Algorithm <bibref ref="UNICODE-TR9"/> and the Unicode bidirectional character
type of each character to convert the implicit directionality of the
text into explicit markup in terms of formatting objects. For example,
sequences of Arabic text are wrapped in formatting objects with a
"direction" property of "rtl" and a "unicode-bidi" property of "bidi-override".
</p>
<p>As defined in the referenced specification, the Unicode Bidi Algorithm
takes a stream of text as input, and proceeds in three main phases:
</p>
<olist>
<item>
<p>Separation of the input text into paragraphs. The rest of the algorithm
affects only the text between paragraph separators.
</p>
</item>
<item>
<p>Resolution of the embedding levels of the text. In this phase, the
bidirectional character types, plus the Unicode directional formatting
codes, are used to produce <term>resolved embedding levels</term>. The
normative bidirectional character type for each character is specified
in the Unicode Character Database <bibref ref="UNICODE-CD"/>.
</p>
</item>
<item>
<p>Reordering the text for display on a line-by-line basis using the
resolved embedding levels, once the text has been broken into lines.
</p>
</item>
</olist>

<p>Specifying how this algorithm applies to XSL requires some
elaboration. First, the final, text reordering step is not done;
instead, the placement of glyphs as defined in the Area Model uses the
<trait>inline-progression-direction</trait> of each glyph to control
the stacking of glyphs as described in <specref ref="area-stackcon"/>. The <trait>inline-progression-direction</trait> is derived from
the "direction" property of the formatting objects inserted in this
step of refinement.
</p>
<p>Second, the algorithm is applied to a sequence of characters coming
from the content of one or more formatting objects. The sequence of
characters is created by processing a fragment of the formatting
object tree. A <term>fragment</term> is any contiguous sequence of
children of some formatting object in the tree. The sequence is
created by doing a pre-order traversal of the fragment down to the
fo:character level. During the pre-order traversal, every fo:character
formatting object adds a character to the sequence. Furthermore,
whenever the pre-order scan encounters a node with a "unicode-bidi"
property with a value of "embed" or "override", add a Unicode RLO/LRO
or RLE/LRE character to the sequence as appropriate to the value of
the "direction" and "unicode-bidi" properties. On returning to that
node after traversing its content, add a Unicode PDF character. In
this way, the formatting object tree fragment is flattened into a
sequence of characters. This sequence of characters is called the
<term>flattened sequence of characters</term> below.
</p>
<p>Third, in XSL the algorithm is applied to <term>delimited text
ranges</term> instead of just paragraphs. A delimited text range is a
maximal flattened sequence of characters that does not contain any
delimiters. Any formatting object that generates block areas is a
delimiter. It acts as a delimiter for its content. It also acts as a
delimiter for its parent's content. That is, if the parent has
character content, then its children formatting objects that generate
block areas act to break that character content into <term>anonymous
blocks</term> each of which is a delimited text range. In a similar
manner, the fo:multi-case formatting object acts as delimiter for its
content and the content of its parent. Finally, text with an
orientation that is not perpendicular to the dominant-baseline acts as
a delimiter to text with an orientation perpendicular to the
dominant-baseline. We say that <term>text has an orientation
perpendicular to the dominant-baseline</term> if the glyphs that correspond
to the characters in the text are all oriented perpendicular to the
dominant-baseline.
</p>
<note>
<p>In most cases, a delimited text range is the maximal sequence of
characters that would be formatted into a sequence of one or more
line-areas. For the fo:multi-case and the text with an orientation
perpendicular to the dominant-baseline, the delimited range may be a
sub-sequence of a line or sequence of lines. For example, in Japanese
formatted in a vertical writing-mode, rotated Latin and Arabic text
would be delimited by the vertical Japanese characters that
immediately surround the Latin and Arabic text. Any formatting objects
that generated inline-areas would have no affect on the determination
of the delimited text range.
</p>
</note>
<p>For each delimited text range, the <trait>inline-progression-direction</trait>
of the nearest ancestor (including self) formatting object that generates
a block-area determines the <term>paragraph embedding level</term> used
in the Unicode Bidi Algorithm. This is the default embedding level
for the delimited text range.
</p>
<p>
<term>Embedding levels</term> are numbers that indicate how deeply
the text is nested, and the default direction of text on that
level. The minimum embedding level of text is zero, and the maximum
explicit depth is level 61.
The second step of the Unicode Bidi Algorithm labels each character
in the delimited text range with a <term>resolved embedding level</term>.
The resolved embedding level of each character will be greater than
or equal to the paragraph embedding level. Right-to-left text will
always end up with an odd level, and left-to-right and numeric text
will always end up with an even level. In addition, numeric text
will always end up with a higher level than the paragraph level.
</p>
<p>Once the resolved embedding levels are determined for the
delimited text range, new fo:inline formatting objects with
appropriate values for the "direction" and "unicode-bidi" properties
are inserted into the formatting object tree fragment that was
flattened into the delimited text range such that the following
constraints are satisfied:
</p>
<olist>
<item>
<p>For any character in the delimited text range, the
<trait>inline-progression-direction</trait> of the
character must match its resolved embedding level.
</p>
</item>
<item>
<p>For each resolved embedding level <var>L</var> from the paragraph
embedding level to the maximum resolved embedding level, and for each
maximal contiguous sequence of characters <var>S</var> for which the
resolved embedding level of each character is greater than or equal to
<var>L</var>,
</p>
<olist>
<item>
<p>There is an inline formatting object <var>F</var> which has as its
content the formatting object tree fragment that flattens to
<var>S</var> and has a "direction" property consistent with the
resolved embedding level <var>L</var>.
</p>
<note>
<p><var>F</var> need not be an inserted formatting object if the
constraint is met by an existing formatting object or by specifying
values for the "direction" and "unicode-bidi" properties on an
existing formatting object.
</p>
</note>
</item>
<item>
<p>All formatting objects that contain any part of the sequence
<var>S</var> are properly nested in <var>F</var> and retain the
nesting relationships they had in the formatting object tree prior to
the insertion of the new formatting objects.
</p>
<note>
<p>Satisfying this constraint may require spliting one or more existing
formatting objects in the formatting object tree each into a pair of
formatting objects each of which has the same set of computed property
values as the original, unsplit formatting object. One of the pair
would be ended before the start of <var>F</var> or start after the end
of <var>F</var> and the other would start after the start of
<var>F</var> or would end before the end of <var>F</var>,
respectively. The created pairs must continue to nest properly to
satisfy this constraint. For example, assume Left-to-right text is
represented by the character "L" and Right-to-left text is represented by "R".
In the sub-tree
<eg xml:space="preserve">
 &lt;fo:block&gt;
   LL
   &lt;fo:inline ID="A"&gt;LLLRRR&lt;/fo:inline&gt;
   RR
 &lt;/fo:block&gt;
</eg>
assuming a paragraph embedding level of "0", the resolved embedding
levels would require the following (inserted and replicated) structure:
<eg xml:space="preserve">
 &lt;fo:block&gt;
   LL
   &lt;fo:inline ID="A"&gt;LLL&lt;/fo:inline&gt;
   &lt;fo:inline direction="rtl"&gt;
     &lt;fo:inline ID="A+"&gt;RRR&lt;/fo:inline&gt;
     RR
   &lt;/fo:inline&gt;
 &lt;/fo:block&gt;
</eg>
Note that the fo:inline with ID equal "A" has been split into two
fo:inlines with the first one having the original ID of "A" and the
second having an ID of "A+". Since ID's must be unique, the computed
value of any ID or Key property must not be replicated in the second
member of the pair. The value of "A+" was just used for illustrative
purposes.
</p>
</note>
</item>
</olist>
</item>
<item>
<p>No fewer fo:inline formatting objects can be inserted
and still satisfy the above constraints.
</p>
</item>
</olist>
</div2>




<div2><head>Expressions</head>
<p>All property value specifications in attributes within an XSL stylesheet can be expressions. These expressions represent the value of the property specified.    The expression is first evaluated and then the resultant value is used to determine the value of the property.  </p>
<div3><head>Property Context</head>
<p>Properties are evaluated against a property-specific context.  This context provides:</p>
<ulist>
<item>
<p>A list of allowed resultant types for a property value.</p>
</item>
<item>
<p>Conversions from resultant expression value types to an allowed type for the property.</p>
</item>
<item>
<p>The current font-size value.</p>
</item>
<item>
<p>Conversions from relative numerics by type to absolute numerics within additive expressions.</p>
</item>
</ulist>
<note>
<p>It is not necessary that a conversion is provided for all types.  If no conversion is specified, it is an error.</p>
</note>
<p>When a type instance (e.g., a string, a keyword, a
numeric, etc.) is recognized in the expression it is evaluated against
the property context.  This provides the ability for specific values to be
converted with the property context's specific algorithms or conversions
for use in the evaluation of the expression as a whole.  </p>
<p>For example, the "auto" enumeration token for certain
properties is a calculated value.  Such a token would be converted
into a specific type instance via an algorithm specified in the property definition.
In such a case the resulting value might be an absolute length specifying the width
of some aspect of the formatting object.</p>
<p>In addition, this allows certain types like relative numerics to be
resolved into absolute numerics prior to mathematical
operations.</p>
<p>All property contexts allow conversions as specified in
<specref ref="expr.value.conv"/>.</p>
</div3>

<div3><head>Evaluation Order</head>
<p>When a set of properties is being evaluated for a
specific formatting object in the formatting object tree
there is a specific order in which properties must be evaluated.
Essentially, the "font-size" property must be evaluated first before
all other properties.  Once the "font-size" property has been evaluated,
all other properties may be evaluated in any order.</p>
<p>When the "font-size" property is evaluated, the current
font-size for use in evaluation is the font-size of the parent element.
Once the "font-size" property has been evaluated,
that value is used as the
current font-size for all property contexts of all properties value expressions
being further evaluated.</p></div3>
<div3><head>Basics<spot id="c11i31"/></head><scrap headstyle="show"><head/>
<prod id="NT-Expr"><lhs>Expr</lhs><rhs><nt def="NT-AdditiveExpr">AdditiveExpr</nt></rhs></prod>
<prod id="NT-PrimaryExpr">
<lhs>PrimaryExpr</lhs><rhs>'(' <nt def="NT-Expr">Expr</nt> ')'</rhs><rhs>| <nt def="NT-Numeric">Numeric</nt></rhs><rhs>| <nt def="NT-Literal">Literal</nt></rhs><rhs>| <nt def="NT-Color">Color</nt></rhs><rhs>| <nt def="NT-Keyword">Keyword</nt></rhs><rhs>| <nt def="NT-EnumerationToken">EnumerationToken</nt></rhs><rhs>| <nt def="NT-FunctionCall">FunctionCall</nt></rhs>
</prod>
</scrap>
</div3>

<div3><head>Function Calls</head>
<scrap headstyle="show">
<head/>
<prod id="NT-FunctionCall">
<lhs>FunctionCall</lhs>
<rhs><nt def="NT-FunctionName">FunctionName</nt> '(' ( <nt def="NT-Argument">Argument</nt> ( ',' <nt def="NT-Argument">Argument</nt>)*)? ')'</rhs>
</prod>
<prod id="NT-Argument">
<lhs>Argument</lhs>
<rhs><nt def="NT-Expr">Expr</nt></rhs>
</prod>
</scrap>
</div3>

<div3 id="numbers">
<head>Numerics</head>
<p>A numeric represents all the types of numbers in an XSL expression.
Some of these numbers are absolute values.  Others are
relative to some other set of values.  All of these values use a floating-point number to represent the number-part of their definition. </p>
<p>A floating-point number can have any
double-precision 64-bit format IEEE 754 value <bibref ref="IEEE754"/>.
These include a special <quote>Not-a-Number</quote> (NaN) value,
positive and negative infinity, and positive and negative zero.  See
<loc href="http://java.sun.com/docs/books/jls/html/4.doc.html#9208" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">Section 4.2.3</loc> of <bibref ref="JLS"/> for a summary of the key
rules of the IEEE 754 standard.</p><scrap headstyle="show"><head/>
<prod id="NT-Numeric"><lhs>Numeric</lhs><rhs><nt def="NT-AbsoluteNumeric">AbsoluteNumeric</nt></rhs><rhs>| <nt def="NT-RelativeNumeric">RelativeNumeric</nt></rhs></prod>
<prod id="NT-AbsoluteNumeric"><lhs>AbsoluteNumeric</lhs><rhs><nt def="NT-AbsoluteLength">AbsoluteLength</nt></rhs></prod><prod id="NT-AbsoluteLength"><lhs>AbsoluteLength</lhs><rhs><nt def="NT-Number">Number</nt> <nt def="NT-AbsoluteUnitName">AbsoluteUnitName</nt>?</rhs></prod>
<prod id="NT-RelativeNumeric"><lhs>RelativeNumeric</lhs><rhs><nt def="NT-Percent">Percent</nt></rhs><rhs>| <nt def="NT-RelativeLength">RelativeLength</nt></rhs></prod>
<prod id="NT-Percent"><lhs>Percent</lhs><rhs><nt def="NT-Number">Number</nt> '%'</rhs></prod>

<prod id="NT-RelativeLength"><lhs>RelativeLength</lhs><rhs><nt def="NT-Number">Number</nt> <nt def="NT-AbsoluteUnitName">RelativeUnitName</nt></rhs></prod></scrap>
<p>The following operators may be used with numerics:</p>
<glist>
<gitem><label><code>+</code></label>
<def>
<p>Performs addition.</p>
</def></gitem>
<gitem><label><code>-</code></label>
<def>
<p>Performs subtraction or negation.</p>
</def></gitem>
<gitem><label><code>*</code></label>
<def>
<p>Performs multiplication.</p>
</def></gitem>
<gitem><label><code>div</code></label>
<def>
<p>Performs floating-point division according to IEEE 754.</p>
</def></gitem>
<gitem><label><code>mod</code></label><def>
<p>Returns the remainder from a truncating division.</p>
</def></gitem>
</glist>
<note>
<p>Since XML allows <code>-</code> in names, the <code>-</code>
operator (when not used as a UnaryExpr negation) typically needs to be
preceded by whitespace.   For example the expression <code>10pt - 2pt</code>
means subtract 2 points from 10 points.  The expression <code>10pt-2pt</code>
would mean a length value of 10 with a unit of "pt-2pt".</p>
</note>
<note>
<p>The following are examples of the <code>mod</code> operator:</p>
<ulist>
<item>
<p><code>5 mod 2</code> returns <code>1</code></p>
</item>
<item>
<p><code>5 mod -2</code> returns <code>1</code></p>
</item>
<item>
<p><code>-5 mod 2</code> returns <code>-1</code></p>
</item>
<item>
<p><code>-5 mod -2</code> returns <code>-1</code></p>
</item>
</ulist>
</note>
<note>
<p>The <code>mod</code> operator is the same as the <code>%</code> operator in Java and
ECMAScript and is not the same as the IEEE remainder operation, which
returns the remainder from a rounding division.</p>
</note>
<scrap headstyle="show">
<head>Numeric Expressions</head>
<prodgroup pcw5="1" pcw2="10" pcw4="21">
<prod id="NT-AdditiveExpr">
<lhs>AdditiveExpr</lhs>
<rhs><nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt></rhs>
<rhs>| <nt def="NT-AdditiveExpr">AdditiveExpr</nt> '+' <nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt></rhs>
<rhs>| <nt def="NT-AdditiveExpr">AdditiveExpr</nt> '-' <nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt></rhs>
</prod>
<prod id="NT-MultiplicativeExpr">
<lhs>MultiplicativeExpr</lhs>
<rhs><nt def="NT-UnaryExpr">UnaryExpr</nt></rhs>
<rhs>| <nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt> <nt def="NT-MultiplyOperator">MultiplyOperator</nt> <nt def="NT-UnaryExpr">UnaryExpr</nt></rhs>
<rhs>| <nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt> 'div' <nt def="NT-UnaryExpr">UnaryExpr</nt></rhs>
<rhs>| <nt def="NT-MultiplicativeExpr">MultiplicativeExpr</nt> 'mod' <nt def="NT-UnaryExpr">UnaryExpr</nt></rhs>
</prod>
<prod id="NT-UnaryExpr">
<lhs>UnaryExpr</lhs><rhs><nt def="NT-PrimaryExpr">PrimaryExpr</nt></rhs>
<rhs>| '-' <nt def="NT-UnaryExpr">UnaryExpr</nt></rhs>
</prod>
</prodgroup>
</scrap><note><p>The effect of this grammar is that the order of precedence is (lowest precedence first):</p><ulist><item><p>+,  -</p></item><item><p>*, div, mod</p></item></ulist><p>and the operators are all left associative.  For example, 2*3 + 4 div 5 is equivalent to (2*3) + (4 div 5).</p></note>
<p>If a non-numeric value is used in an <nt def="NT-AdditiveExpr">AdditiveExpr</nt> and there is no property context conversion from that type into an absolute numeric value, the expression is invalid and considered an error.</p>
</div3><div3><head>Absolute Numerics</head><p>An absolute numeric is an absolute length which is a pair consisting of a <nt def="NT-Number">Number</nt> and a <nt def="NT-AbsoluteUnitName">UnitName</nt> raised to a power. When an absolute length is written without a unit, the unit power is assumed to be zero.  Hence, all floating point numbers are a length with a power of zero.</p>

<p> Each unit name has associated with it an internal ratio to some common
internal unit of measure (e.g., a meter). When a value is
written in a
property expression, it is first converted to the internal unit of measure
and then mathematical operations are performed.</p>
<p>In
addition, only the mod,
addition, and subtraction operators require that the numerics on
either side of the operation be absolute numerics of the same unit power.
For other operations, the unit powers may be different and the result
should be mathematically consistent as with the handling of powers in algebra.</p>
<p>A property definition may constrain an absolute length to a
particular power.
For example, when specifying font-size, the value is expected to be of
power "one".
That is, it is expected to have a single powered unit specified (e.g., 10pt).</p>
<p>When the final value of property is calculated, the resulting power of the
absolute numeric must be either zero or one.  If any other power is specified,
the value is an error.</p></div3>
<div3><head>Relative Numerics</head><p>Relative lengths are values that are
calculated relative to some other set of values. When written as part of an
expression, they are either converted via the property
context into an absolute numeric or passed verbatim as the property value.</p>
<p>It is an error if the property context has no available conversion
for the relative numeric and a conversion is required for expression
evaluation (e.g., within an add operation).</p>

<div4><head>Percents</head>
<p>Percentages are values that are counted in 1/100 units.  That is, <code>10%</code>
as a percentage value is <code>0.10</code> as a floating point number.
When converting to an absolute numeric, the percentage is defined in the
property definition as being a percentage of some known
property value.</p>
<p> For example, a value of  "110%" on a "font-size"
property
would be evaluated to mean 1.1 times the current font size.
Such a definition of the allowed conversion for percentages is specified on
the property definition.  If no conversion is specified, the resulting value
is a percentage.</p>
</div4>
<div4 id="relative.lengths"><head>Relative Lengths</head>
<p>A relative length is a unit-based value that is measured against the
current value of the <code>font-size</code> property.   </p>
<p>There is only one relative unit of measure, the "em". The
definition of  "1em" is equal to the current font size. For
example, a value of "1.25em" is 1.25 times the current font
size.</p>
<p>When an em measurement is used in an expression, it is converted according
to the font-size value of the current property's context.
The result of the expression is an absolute length.
See <specref ref="font-size"/></p>

</div4>
</div3>
<div3><head>Strings</head>
<p>Strings are represented either as <nt def="NT-Literal">literals</nt> or
as an <nt def="NT-EnumerationToken">enumeration token</nt>.
All properties contexts allow conversion from enumeration tokens to strings.
See <specref ref="expr.value.conv"/>.</p>
</div3>
<div3><head>Colors</head>
<p>A color is a set of values used to identify a particular color from a color space.
Only RGB <spot id="c11i32a"/>(Red, Green, Blue)
and ICC <spot id="c11i32b"/>(International Color Consortium)
colors are included in this Recommendation.</p>
<p>RGB colors are directly represented in the expression language using a
hexadecimal notation.  ICC colors can be accessed through an icc-color
function.
Colors can also be accessed through the system-color
function or through conversion from an
<nt def="NT-EnumerationToken">EnumerationToken</nt>
via the property context.</p>
</div3>
<div3><head>Keywords</head>
<p>Keywords are special tokens in the grammar that provide access to
calculated values or other property values.
The allowed keywords are defined in the following subsections.</p>
<div4><head>inherit</head>
<p>The property takes the same <emph>computed</emph> value as the property
for the formatting object's parent object.</p>
</div4>
</div3>
<div3><head>Lexical Structure</head>
<p>When processing an expression,
whitespace (<nt def="NT-ExprWhitespace">ExprWhitespace</nt>) may be
allowed before or after any expression token even though it is not
explicitly defined as such in the grammar.  In some cases, whitespace
is necessary to make tokens in the grammar lexically distinct.
Essentially, whitespace should be treated as if it does not exist
after tokenization of the expression has occurred.</p>
<p>The following special tokenization rules must be applied in the
order specified to disambiguate the grammar:</p>
<ulist>
<item>
<p>If the character following an
<xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt> (possibly after intervening
<nt def="NT-ExprWhitespace">ExprWhitespace</nt>) is
"<code>(</code>",
then the token must be recognized as
<nt def="NT-FunctionName">FunctionName</nt>.</p></item>
<item>
<p>A number terminates at the first occurrence of a non-digit character other
than "<code>.</code>".  This allows the unit token for
length quantities to parse properly.</p></item>
<item>
<p>When an <xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt> immediately follows a
<nt def="NT-Number">Number</nt>, it should be recognized as a
<nt def="NT-AbsoluteUnitName">UnitName</nt> or it is an error.</p></item>
<item>
<p>The <nt def="NT-Keyword">Keyword</nt> values take precedence over
<nt def="NT-EnumerationToken">EnumerationToken</nt>.</p></item>
<item>
<p>If a <xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt> follows a
<spot id="aj000035_12"/><xnt href="#NT-Numeric" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">numeric</xnt>,
it should be recognized as an <nt def="NT-OperatorName">OperatorName</nt> or it is an error.</p></item></ulist>
<scrap headstyle="show">
<head>Expression Lexical Structure</head>
<prodgroup pcw5="1" pcw2="8" pcw4="21">
<prod id="NT-ExprToken">
<lhs>ExprToken</lhs>
<rhs>'(' | ')' | '%'</rhs>
<rhs>| <nt def="NT-Operator">Operator</nt></rhs>
<rhs>| <nt def="NT-FunctionName">FunctionName</nt></rhs><rhs>| <nt def="NT-EnumerationToken">EnumerationToken</nt></rhs>
<rhs>| <nt def="NT-Number">Number</nt></rhs>
</prod>
<prod id="NT-Number">
<lhs>Number</lhs>
<rhs>  <nt def="NT-FloatingPointNumber">FloatingPointNumber</nt></rhs>
</prod>
<prod id="NT-FloatingPointNumber"><lhs>FloatingPointNumber</lhs><rhs><nt def="NT-Digits">Digits</nt> ('.' <nt def="NT-Digits">Digits</nt>?)?</rhs><rhs>| '.' <nt def="NT-Digits">Digits</nt></rhs></prod>
<prod id="NT-Digits">
<lhs>Digits</lhs>
<rhs>[0-9]+</rhs>
</prod>
<prod id="NT-Color"><lhs>Color</lhs><rhs>'#' <nt def="NT-AlphaOrDigits">AlphaOrDigits</nt></rhs></prod>
<prod id="NT-AlphaOrDigits">
<lhs>AlphaOrDigits</lhs>
<rhs>[a-fA-F0-9]+</rhs>
</prod>
<prod id="NT-Literal">
<lhs>Literal</lhs>
<rhs>'"' [^"]* '"'</rhs>
<rhs>| "'" [^']* "'"</rhs>
</prod>
<prod id="NT-Operator">
<lhs>Operator</lhs>
<rhs><nt def="NT-OperatorName">OperatorName</nt></rhs>
<rhs>| <nt def="NT-MultiplyOperator">MultiplyOperator</nt></rhs>
<rhs>| '+' | '-'</rhs>
</prod>
<prod id="NT-OperatorName">
<lhs>OperatorName</lhs>
<rhs>'mod' | 'div'</rhs>
</prod>
<prod id="NT-MultiplyOperator">
<lhs>MultiplyOperator</lhs>
<rhs>'*'</rhs>
</prod>
<prod id="NT-Keyword"><lhs>Keyword</lhs><rhs>'inherit'</rhs></prod>
<prod id="NT-FunctionName">
<lhs>FunctionName</lhs>
<rhs>
<xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt></rhs>
</prod>
<prod id="NT-EnumerationToken"><lhs>EnumerationToken</lhs><rhs><xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt></rhs></prod>
<prod id="NT-AbsoluteUnitName"><lhs>AbsoluteUnitName</lhs><rhs>'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'px'</rhs></prod>
<prod id="NT-RelativeUnitName"><lhs>RelativeUnitName</lhs><rhs>'em'</rhs></prod>
<prod id="NT-ExprWhitespace">
<lhs>ExprWhitespace</lhs>
<rhs><xnt href="http://www.w3.org/TR/REC-xml#NT-S" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">S</xnt></rhs>
</prod>
</prodgroup>
</scrap>
</div3>
<div3 id="expr.value.conv"><head>Expression Value Conversions</head>
<p>Values that are the result of an expression evaluation may be converted
into property value types.  In some instances this is a simple verification
of set membership (e.g., is the value a legal country code).  In other cases,
the value is expected to be a simple type like an integer and must be converted.</p>
<p>It is not necessary that all types be allowed to be converted.  If the
expression value cannot be converted to the necessary type for the property value,
it is an error. </p>
<p>The following table indicates what conversions are allowed.</p>
<table border="1">
<tbody align="left" valign="top">
<tr align="left" valign="top"><th rowspan="1" colspan="1" align="left" valign="top">Type</th><th rowspan="1" colspan="1" align="left" valign="top">Allowed Conversions</th><th rowspan="1" colspan="1" align="left" valign="top">Constraints</th></tr>
<tr align="left" valign="top">
<td rowspan="1" colspan="1" align="left" valign="top"><xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt></td>
<td rowspan="1" colspan="1" align="left" valign="top">
<ulist>
<item>
<p>Color, via the system-color() function.</p></item>
<item>
<p>Enumeration value, as defined in the property definition.</p></item>
<item>
<p>To a string literal</p></item></ulist></td><td rowspan="1" colspan="1" align="left" valign="top">The value may be checked against
a legal set of values depending on the property.</td></tr><tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">
<nt def="NT-AbsoluteNumeric">AbsoluteNumeric</nt></td><td rowspan="1" colspan="1" align="left" valign="top">
<ulist>
<item>
<p>Integer, via the round() function.</p></item>
<item>
<p>Color, as an RGB color value.</p></item></ulist>
</td>
<td rowspan="1" colspan="1" align="left" valign="top">
If converting to an RGB color value, it must be a legal color value from the color
space.</td></tr><tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><nt def="NT-RelativeLength">RelativeLength</nt></td><td rowspan="1" colspan="1" align="left" valign="top">
<ulist>
<item>
<p>To an AbsoluteLength</p></item></ulist>
</td>
<td rowspan="1" colspan="1" align="left" valign="top">
</td>
</tr>
</tbody>
</table>
<p>The specific conversion to be applied is property specific and can be
found in the definition of each property.</p>
</div3>
<div3><head>Definitions of Units of Measure</head>
<p>The units of measure in this Recommendation have the following definitions:</p>
<table border="1">
<tbody align="left" valign="top">
<tr align="left" valign="top"><th rowspan="1" colspan="1" align="left" valign="top">Name</th><th rowspan="1" colspan="1" align="left" valign="top">Definition</th></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">cm</td><td rowspan="1" colspan="1" align="left" valign="top">See <spot id="c11i1_c"/><bibref ref="ISO31"/></td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">mm</td><td rowspan="1" colspan="1" align="left" valign="top">See <spot id="c11i1_d"/><bibref ref="ISO31"/></td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">in</td><td rowspan="1" colspan="1" align="left" valign="top">2.54cm</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">pt</td><td rowspan="1" colspan="1" align="left" valign="top">1/72in</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">pc</td><td rowspan="1" colspan="1" align="left" valign="top">12pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">px</td><td rowspan="1" colspan="1" align="left" valign="top">See <specref ref="pixels"/></td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">em</td><td rowspan="1" colspan="1" align="left" valign="top">See <specref ref="relative.lengths"/></td></tr>
</tbody>
</table>
<div4 id="pixels"><head>Pixels</head>
<p> XSL interprets a 'px' unit to be a request for the formatter to choose a
device-dependent measurement that approximates viewing one pixel on a
typical computer monitor.  This interpretation is follows:
</p>
<olist>

<item><p>The preferred definition of one 'px' is:</p>
<ulist>
<item><p>The actual distance covered by the largest integer number of
device dots (the size of a device dot is measured as the distance
between dot centers) that spans a distance less-than-or-equal-to
the distance specified by the arc-span rule in
<spot id="c11i33"/><xspecref href="http://www.w3.org/TR/REC-CSS2//syndata.html#x39" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2//syndata.html#x39</xspecref>
(for print, desktop computer monitors,
and hand-held devices viewed at normal viewing distances this is
assumed to be 0.28mm [approximately 1/90]).</p>
</item>
<item><p>A minimum of the size of 1 device dot should be used.</p></item>
<item><p>This calculation is done separately in each axis,
and may have a different value in each axis.</p></item>
</ulist>
</item>

<item><p>However, implementors may instead simply pick a fixed conversion
factor, treating 'px' as an absolute unit of measurement (such as
1/92" or 1/72").</p></item>
</olist>

<note>

<p>Pixels should not be mixed with other absolute units in
expressions as they may cause undesirable effects.
Also, particular caution should be used with inherited property values
that may have been specified using pixels.</p>

<p>If the User Agent chooses a measurement for a 'px' that
does not match an integer number of device dots in each axis it may
produce undesirable effects, such as:</p>
<ulist>
<item><p>moir<entity name="eacute"/> patterns in scaled raster graphics</p></item>
<item><p>unrenderable overlapping areas when the renderer rounds fonts
or graphics sizes upward to its actual dot-size</p></item>
<item><p>large spaces between areas when the renderer rounds fonts or
graphics sizes downward to its actual dot-size</p></item>
<item><p>unreadable results including unacceptably small text/layout
(for example, a layout was done at 72 dpi [dots per inch], but
the renderer assumed the result was already specified in device
dots and renders it at 600 dpi).</p></item>
</ulist>

<p>Stylesheet authors should understand a pixel's actual size may
vary from device to device:</p>
<ulist>
<item><p>stylesheets utilizing 'px' units may not produce consistent
results across different implementations or different
output devices from a single implementation</p></item>
<item><p>even if stylesheets are expresses entirely in 'px' units
the results may vary on different devices</p></item>
</ulist>

</note>

</div4>
</div3>
</div2>
<div2><head>Core Function Library</head>
<div3><head>Number Functions</head><proto name="floor" return-type="numeric">
<arg type="numeric"/></proto>
<p>The <function>floor</function> function returns the largest (closest to
positive infinity) integer that is not greater than the argument.
The numeric argument to this function must be of unit power zero.</p>
<note><p>If it is necessary to use the <function>floor</function> function for a
property where a unit power of one is expected, then an expression
such as: <spot id="jf000082_3"/>"floor(1.4in div 1.0in)*1.0in" must be used.
This applies to the ceiling,
round, and other such functions where a unit power of zero is required.</p></note>
<proto name="ceiling" return-type="numeric"><arg type="numeric"/></proto>
<p>The <function>ceiling</function> function returns the smallest (closest
to negative infinity) integer that is not less than the argument.  The numeric
argument to this function must be of unit power zero.</p>
<proto name="round" return-type="numeric"><arg type="numeric"/></proto>
<p>The <function>round</function> function returns the integer that is
closest to the argument.  If there are two such
numbers, then the one that is closest to positive infinity is
returned.  The numeric argument to this function must be of unit power zero.</p>
<proto name="min" return-type="numeric">
<arg type="numeric"/><arg type="numeric"/></proto>
<p>The <function>min</function> function returns the minimum of the
two numeric arguments.  These arguments must have the same unit power.</p>
<proto name="max" return-type="numeric"><arg type="numeric"/>
<arg type="numeric"/></proto>
<p>The <function>min</function> function returns the maximum of the two
numeric arguments.  These arguments must have the same unit power.</p>
<proto name="abs" return-type="numeric">
<arg type="numeric"/></proto><p>The <function>abs</function> functions
returns the absolute value of the numeric argument.
That is, if the numeric argument is negative, it returns the negation of
the argument.</p></div3>
<div3 id="expr-color-functions"><head>Color Functions</head>
<proto name="rgb" return-type="color"><arg type="numeric"/><arg type="numeric"/>
<arg type="numeric"/></proto>
<p>The <function>rgb</function> function returns a specific color from the RGB
color space.  The parameters to this function must be numerics (real numbers) with a
length power of zero.</p>
<proto name="icc-color" return-type="color"><arg type="numeric"/><arg type="numeric"/>
<arg type="numeric"/><arg type="NCName"/><arg type="numeric"/><arg type="numeric" occur="rep"/></proto>
<p>The <function>icc-color</function> function returns a specific color from <spot id="c11i35"/>the ICC Color Profile.  The color profile is specified by the name parameter (the fourth parameter).  This color profile must have been declared in the fo:declarations formatting object using an fo:color-profile formatting object.</p>
<p>The first three parameters specify a fallback color from the sRGB color space.  This color is used when the color profile is not available.</p>
<p>The color is specified by a sequence of one or more color values (real numbers) specified after the name parameter.  These values are specific to the color profile</p>
<proto name="system-color" return-type="color">
<arg type="NCName"/></proto>
<p>The <function>system-color</function> function returns a system defined
color with a given name.</p>
</div3><div3><head>Font Functions</head>
<proto name="system-font" return-type="object">
<arg type="NCName"/><arg type="NCName" occur="opt"/></proto>
<p>The <function>system-font</function> functions returns a
characteristic of a system font.  The first argument is the
name of the system font and the second argument, which is optional,
names the property that specifies the characteristic.  If the second
argument is omitted, then the characteristic returned is the same as
the name of the property to which the expression is being assigned.</p>
<p>For example, the expression
"system-font(heading,font-size)" returns the font-size
characteristic for the system font named "heading".  This is equivalent to the
property assignment
'font-size="system-font(heading)"'.</p></div3>
<div3><head>Property Value Functions</head><proto name="inherited-property-value" return-type="object"><arg type="NCName"/></proto>
<p>The <function>inherited-property-value</function> function returns the
inherited value of the property whose name matches the argument specified.
It is an error if this property is not an inherited property.</p>
<p><spot id="aj000035_13"/>The returned "inherited value" is
the computed value
of this property on this object's parent. In particular,
given the following example:</p>
<eg xml:space="preserve">
&lt;fo:list-block&gt;
  ...
  &lt;fo:list-item color="red"&gt;
    &lt;fo:list-item-body background-color="green"&gt;
      &lt;fo:block background-color="inherited-property-value(color)"&gt;
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
&lt;/fo:list-block&gt;
</eg>
<p>The background-color property on the fo:block is assigned
the value "red" because the (computed, after inheritance)
value of the color (not background-color) property on the
fo:list-item-body that is the parent of fo:block is "red".</p>


<proto name="label-end" return-type="numeric"/>
<p>The <function>label-end</function> function returns the calculated
label-end value for lists.  See the definition in
<spot id="c11i1_e"/><specref ref="provisional-label-separation"/>.</p>
<proto name="body-start" return-type="numeric"/>
<p>The <function>body-start</function> function returns the
calculated body-start value for lists.
See the definition in
<spot id="c11i1_f"/><specref ref="provisional-distance-between-starts"/>.</p>
<note><p>When this function is used outside of a list, it still
returns a calculated value as specified.</p></note>
<proto name="from-parent" return-type="object">
<arg type="NCName"/></proto>
<p>The <function>from-parent</function> function
returns a computed value of the property whose name matches
the argument specified.
The value returned is that for the parent of the
formatting object for which the expression is evaluated.
If there is no parent, the value returned is the initial
value. If the argument specifies a shorthand property and if
the expression only consists of the from-parent function with an
argument matching the property being computed, it is
interpreted
as an expansion of the shorthand with each property into which
the shorthand expands, <spot id="c11i36_a"/>each having a value of from-parent with
an argument matching the property.
It is an error if arguments matching a shorthand property are used
in any other way.
</p>
<proto name="from-nearest-specified-value" return-type="object">
<arg type="NCName" occur="opt"/></proto>
<p>The <function>from-nearest-specified-value</function> function
returns a computed value of the property whose name matches
the argument specified.
The value returned is that for the closest ancestor of the
formatting object for which the expression is evaluated on
which there
is an assignment of the property in the XML result tree in the
fo namespace.
If there is no such ancestor, the value returned is the
initial value.
If the argument specifies a shorthand property and if
the expression only consists of the from-nearest-specified-value function with an
argument matching the property being computed, it is
interpreted
as an expansion of the shorthand with each property into which
the shorthand expands, <spot id="c11i36_b"/>each having a value of from-nearest-specified-value with
an argument matching the property.
It is an error if arguments matching a shorthand property are used
in any other way.
</p>
<proto name="from-table-column" return-type="object">
<arg type="NCName" occur="opt"/></proto>
<p>The <function>from-table-column</function> function
returns the inherited value of the property whose name matches the
argument specified, from the fo:table-column whose column-number
matches the column for which this expression is evaluated and
whose number-columns-spanned also matches any span.
If there is no match for the number-columns-spanned, it is
matched
against a span of 1. If there is still no match, the initial
value is returned.
It is an error to use this function on formatting objects
that are not an fo:table-cell or its descendants.
</p>

<proto name="proportional-column-width" return-type="numeric">
<arg type="numeric"/></proto>
<p>The <function>proportional-column-width</function> function
returns <spot id="aj000035_14"/><var>N</var> units of proportional measure
where <var>N</var> is the argument given to this function.
The column widths are first determined ignoring the proportional
measures. The difference between the table-width and the sum of
the column widths is the available proportional width. One unit
of proportional measure is the available proportional width
divided by the sum of the proportional factors.
It is an error to use this function on formatting objects other
than an fo:table-column. It is also an error to use this function
if the fixed table layout is not used.
</p>
<proto name="merge-property-values" return-type="object">
<arg type="NCName" occur="opt"/></proto>
<p>The <function>merge-property-values</function> function returns a value of the
property whose name matches the argument.
The value returned is the specified value on the last
fo:multi-property-set, of the parent fo:multi-properties,
that applies to the User Agent state.
If there is no such value, the computed value of the
parent fo:multi-properties is returned.
</p>
<note><p>The test for applicability of a User Agent state is
specified using the "active-state" property.</p></note>
<p>It is an error to use this function on formatting objects other
than an fo:wrapper that is the child of an fo:multi-properties.</p>
</div3>
</div2>


<div2><head>Property Datatypes</head>
<p>Certain property values are described in terms of compound
datatypes, in terms of restrictions on permitted number values, or
strings with particular semantics.</p>
<p>The compound datatypes, such as space, are represented in the
result tree as multiple attributes. The names of these attributes
consist of the property name, followed by a period, followed by
the component name. For example <spot id="aj000035_16"/>a "space-before" property may
be specified as:</p>
<eg xml:space="preserve">
space-before.minimum="2.0pt"
space-before.optimum="3.0pt"
space-before.maximum="4.0pt"
space-before.precedence="0"
space-before.conditionality="discard"
</eg>
<p><spot id="aj000035_17"/>A short form of compound value specification may be used, in cases
where the datatype has some &lt;length&gt; components and for the
&lt;keep&gt; datatype. In the first case the
specification consists of giving a &lt;length&gt; value to an attribute
with a name matching a property name. Such a specification gives
that value to each of the &lt;length&gt; components and the initial value
to all the non-&lt;length&gt; components. For example:</p>
<eg xml:space="preserve">
space-before="4.0pt"
</eg>
<p>is equivalent to a specification of</p>
<eg xml:space="preserve">
space-before.minimum="4.0pt"
space-before.optimum="4.0pt"
space-before.maximum="4.0pt"
space-before.precedence="0"
space-before.conditionality="discard"
</eg>
<p>For the &lt;keep&gt; datatype the
specification consists of giving a value that is valid for a component
to an attribute
with a name matching a property name. Such a specification gives
that value to each of the components.
For example:</p>
<eg xml:space="preserve">
keep-together="always"
</eg>
<p>is equivalent to a specification of</p>
<eg xml:space="preserve">
space-together.within-line="always"
space-together.within-colums="always"
space-together.within-page="always"
</eg>
<p>Short forms may be used together with complete forms; the complete
forms <spot id="c11i38"/>have precedence over the expansion of a short form.
For example:</p>
<eg xml:space="preserve">
space-before="4.0pt"
space-before.maximum="6.0pt"
</eg>
<p>is equivalent to a specification of</p>
<eg xml:space="preserve">
space-before.minimum="4.0pt"
space-before.optimum="4.0pt"
space-before.maximum="6.0pt"
space-before.precedence="0"
space-before.conditionality="discard"
</eg>
<p>Compound values of properties are inherited as a unit and not
as individual components.</p>
<p>The following datatypes are defined:</p>


<glist>
<gitem>
<label>&lt;integer&gt;</label>
<def><p>A signed integer value which consists of an optional '+' or '-'
character followed by a sequence of digits.
A property may define additional constraints on the value.
</p></def>
</gitem>
<gitem>
<label>&lt;number&gt;</label>
<def><p>A signed real number which consists of an optional '+' or '-'
character followed by a sequence of digits followed by an optional '.'
character and sequence of digits.
A property may define additional constraints on the value.
</p></def>
</gitem>
<gitem>
<label>&lt;length&gt;</label>
<def><p>A signed length value where a 'length' is a real number plus a unit
qualification.
A property may define additional constraints on the value.
</p></def>
</gitem>
<gitem>
<label>&lt;length-range&gt;</label>
<def><p>A compound datatype, with components:
minimum, optimum, maximum. Each component is a &lt;length&gt;.
A property may define additional constraints on the values.
</p></def>
</gitem>
<gitem>
<label>&lt;length-conditional&gt;</label>
<def><p>A compound datatype, with components:
length, conditionality. The length component is a &lt;length&gt;.
The conditionality component is either "discard" or "retain".
A property may define additional constraints on the values.
</p></def>
</gitem>
<gitem>
<label>&lt;length-bp-ip-direction&gt;</label>
<def><p>A compound datatype, with components:
block-progression-direction, and inline-progression-direction.
Each component is a &lt;length&gt;.
A property may define additional constraints on the values.
</p></def>
</gitem>
<gitem>
<label>&lt;space&gt;</label>
<def><p>A compound datatype, with components:
minimum, optimum, maximum, precedence, and conditionality.
The minimum, optimum, and maximum components are &lt;length&gt;s.
The precedence component is either "force" or an &lt;integer&gt;.
The conditionality component is either "discard" or "retain".
</p></def>
</gitem>
<gitem>
<label>&lt;keep&gt;</label>
<def><p>A compound datatype, with components:
within-line, within-column, and within-page. The value of each
component is either "auto", "always", or an &lt;integer&gt;.
</p></def>
</gitem>
<gitem>
<label>&lt;angle&gt;</label>
<def><p>An &lt;integer&gt; representing an angle.</p></def>
</gitem>
<gitem>
<label>&lt;percentage&gt;</label>
<def><p>A signed real percentage which consists of an optional '+' or '-'
character followed by a sequence of digits followed by an optional '.'
character and sequence of digits followed by '%'.
A property may define additional constraints on the value.
</p></def>
</gitem>
<gitem>
<label>&lt;character&gt;</label>
<def><p>A single Unicode character.</p></def>
</gitem>
<gitem>
<label>&lt;string&gt;</label>
<def><p>A sequence of characters.
</p></def>
</gitem>
<gitem>
<label>&lt;name&gt;</label>
<def><p>A string of characters representing a name.
<spot id="aj000035_18"/>It must conform to the definition of an
<xnt href="http://www.w3.org/TR/REC-xml-names#NT-NCName" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">NCName</xnt> in
<bibref ref="XML"/>.
</p></def>
</gitem>
<gitem>
<label>&lt;family-name&gt;</label>
<def><p>A string of characters identifying a font.
</p></def>
</gitem>
<gitem>
<label>&lt;color&gt;</label>
<def><p>Either a string of characters representing a keyword or a color
function defined in <specref ref="expr-color-functions"/>.
The list of keyword color names is:
aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive,
purple, red, silver, teal, white, and yellow.</p>
</def>
</gitem>
<gitem>
<label>&lt;country&gt;</label>
<def><p>A string of characters conforming to an ISO 3166 country code.
</p></def>
</gitem>
<gitem>
<label>&lt;language&gt;</label>
<def><p>A string of characters conforming to the
ISO 639 3-letter code.
</p></def>
</gitem>
<gitem>
<label>&lt;script&gt;</label>
<def><p>A string of characters conforming to an
ISO 15924 script code.
</p></def>
</gitem>
<gitem>
<label>&lt;id&gt;</label>
<def><p>A string of characters conforming to the XML NMTOKEN definition
that is unique within the stylesheet.
</p></def>
</gitem>
<gitem>
<label>&lt;idref&gt;</label>
<def><p>A string of characters conforming to the XML NMTOKEN definition
that matches an ID property value used within the stylesheet.
</p></def>
</gitem>
<gitem>
<label>&lt;uri-specification&gt;</label>
<def><p>A sequence of characters that is <spot id="aj000035_19a"/>
"url(", followed by optional
whitespace, followed by an optional single quote
(') or double quote (") character, followed by
a URI-reference as defined in <bibref ref="RFC2396"/>,
followed by an optional single quote (') or double quote (")
character, followed by optional whitespace, followed by
")". The two quote characters must be the same and must both be
present or absent. If the URI-reference contains a single quote, the
two quote characters must be present and be double quotes.
</p></def>
</gitem>

</glist>
</div2>


</div1>



<div1 id="fo-section"><head>Formatting Objects</head>

<div2><head>Introduction to Formatting Objects</head>
<p>
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
<specref ref="fo-jc-intro"/>. <spot id="c11i39"/>The presentation
is represented, abstractly, by an area tree, as defined in
the area model.  See <specref ref="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.</p>
<p>
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
<term>flow objects</term>. The third kind is either a
<term>layout object</term> or an <term>auxiliary
object</term>. 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.
</p>
<div3>
<head>Definitions Common to Many Formatting Objects</head>

<p>
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
<trait>generated-by</trait> and
<trait>returned-by</trait>.
</p>

<p>
The value of the <trait>generated-by</trait> trait is a
single formatting
object. A formatting object <var>F</var> is defined to
<term>generate</term> an area <var>A</var>
if the semantics of <var>F</var> specify the generation of
one or more areas and <var>A</var> is one of the areas thus
generated, or is a substituted form of one of the areas thus
generated, as specified in section <specref ref="area-linebuild"/>.</p>
<p>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.
</p>
<p>
The value of the <trait>returned-by</trait> 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.
</p>
<p>
A formatting object <var>F</var> is defined to <term>return
the sequence of
areas</term> <var>A</var>, <var>B</var>, <var>C</var>, ... if
the pair
(<var>F</var>,1) is a member of the
<trait>returned-by</trait> trait of <var>A</var>, the pair
(<var>F</var>,2) is a member of the
<trait>returned-by</trait> trait of <var>B</var>, the pair
(<var>F</var>,3) is a member of the
<trait>returned-by</trait> trait of <var>C</var>, ...
</p>
<p>
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.
</p>
<p>
A set of nodes in a tree is a <term>lineage</term> if:
</p>
<ulist>
<item><p>
there is a node <var>N</var> in the set such that all the
nodes in the set are ancestors of <var>N</var>, and</p>
</item>
<item><p>
for every node <var>N</var> in the set, if the set contains
an ancestor of <var>N</var>, it also contains the parent of
<var>N</var>.</p>
</item>
</ulist>
<p>
The set of formatting objects that an area is returned by is a <term>lineage</term>.
</p>
<p>
Areas returned by a formatting object may be either
<term>normal</term> or
<term>out-of-line</term>. 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
<trait>returned-by</trait> lineage of size one. There is
only one kind of normal area.
</p>
<p>
Out-of-line areas are areas used outside the normal flow of text
either because <spot id="aj000035_20"/>they are absolutely positioned or they are part of a
float or footnote. Out-of-line areas may have a
<trait>returned-by</trait> lineage of size greater than one.
</p>
<p>
The <trait>area-class</trait> 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: <spot id="jf000082_2a"/>"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
<trait>area-class</trait> trait is
<spot id="jf000082_2b"/>"xsl-normal"; otherwise, the area is an out-of-line
area. (See section <specref ref="area-stackcon"/>.)</p>
<p>
The areas <term>returned-by</term> 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 <term>area-class</term>, such as the sub-sequence
of normal areas. An area <var>A</var> precedes an area <var>B</var> in the sub-sequence if
and only if area <var>A</var> precedes area <var>B</var> in the areas <term>returned-by</term> the
formatting objects.
</p>
<p><spot id="fo01jr_6a"/>A <term>reference-area chain</term>
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 main-reference-areas
(see <specref ref="fo_region-body"/>)
generated using region formatting objects assigned to the same
flow (see <specref ref="fafm"/>.
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.</p>
</div3>
</div2>

<div2><head>Formatting Object Content</head>
<p>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.</p>

<p id="block.fo.list">The parameter entity, "%block;" in the content models below,
contains the following formatting objects:</p>
<eg xml:space="preserve">
     block
     block-container
     table-and-caption
     table
     list-block
</eg>
<p id="inline.fo.list">The parameter entity, "%inline;" in the content models below,
contains the following formatting objects:</p>
<eg xml:space="preserve">
     bidi-override
     character
     external-graphic
     instream-foreign-object
     inline
     inline-container
     leader
     page-number
     page-number-citation
     basic-link
     multi-toggle
</eg>
<p>The following formatting objects are "neutral" containers and
may be used anywhere where #PCDATA, %block;, or %inline; are allowed:</p>
<eg xml:space="preserve">
     multi-switch
     multi-properties
     wrapper
</eg>
<p>The following "out-of-line" formatting objects
may be used anywhere where #PCDATA, %block;, or %inline; are allowed
<spot id="aj000035_21"/>(except as a descendant of any "out-of-line"
formatting object):</p>
<eg xml:space="preserve">
     float
     footnote
</eg>
</div2>

<div2><head>Formatting Objects Summary</head>
<glist>
<gitem><label>basic-link</label>
<def><p><spot id="link01_i5d"/>The fo:basic-link is used for representing the start resource of a simple
link.</p></def>
</gitem>
<gitem><label>bidi-override</label>
<def><p>The fo:bidi-override inline formatting object is used
where it is necessary to override the default Unicode-bidirectionality
algorithm direction for different (or nested) inline scripts
in mixed-language documents.</p></def>
</gitem>
<gitem><label>block</label>
<def><p>The fo:block formatting object is commonly used for formatting paragraphs,
titles, headlines, figure and table captions,
etc.</p></def>
</gitem>
<gitem><label>block-container</label>
<def><p>The fo:block-container flow object is used to
generate a block-level reference-area.</p></def>
</gitem>
<gitem><label>character</label>
<def><p>The fo:character flow object represents a character that
is mapped to
a glyph for presentation.</p></def>
</gitem>
<gitem><label>color-profile</label>
<def><p>Used to declare a color profile for a stylesheet.</p></def>
</gitem>
<gitem><label>conditional-page-master-reference</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>declarations</label>
<def><p>Used to group global declarations for a stylesheet.</p></def>
</gitem>
<gitem><label>external-graphic</label>
<def><p>The fo:external-graphic flow object is used for a
<spot id="aj000035_29a"/>graphic where the graphics data resides outside of the
<spot id="c11i40"/>XML result tree in the fo namespace.</p></def>
</gitem>
<gitem><label>float</label>
<def><p>
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.
</p></def>
</gitem>
<gitem><label>flow</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>footnote</label>
<def><p>The fo:footnote is used to produce a footnote citation and the corresponding footnote.</p></def>
</gitem>
<gitem><label>footnote-body</label>
<def><p>The fo:footnote-body is used to generate the content of the footnote.</p></def>
</gitem>
<gitem><label>initial-property-set</label>
<def><p>The fo:initial-property-set specifies formatting properties
for the first line of an fo:block.</p></def>
</gitem>
<gitem><label>inline</label>
<def><p>The fo:inline formatting object is commonly used for formatting
a portion of text with a background or enclosing it in a border.
</p></def>
</gitem>
<gitem><label>inline-container</label>
<def><p>The fo:inline-container flow object is used to
generate an inline reference-area.</p></def>
</gitem>
<gitem><label>instream-foreign-object</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>layout-master-set</label>
<def><p>The fo:layout-master-set is a wrapper around all masters used in the
document.</p></def>
</gitem>
<gitem><label>leader</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>list-block</label>
<def><p>The fo:list-block flow object is used to format a list.</p></def>
</gitem>
<gitem><label>list-item</label>
<def><p>The fo:list-item formatting object contains the label and the
body of an item in a list.</p></def>
</gitem>
<gitem><label>list-item-body</label>
<def><p>The fo:list-item-body formatting object contains the
content
of the body of a list-item.</p></def>
</gitem>
<gitem><label>list-item-label</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>marker</label>
<def><p>The fo:marker is used in conjunction with
fo:retrieve-marker to produce running headers or footers.</p></def>
</gitem>
<gitem><label>multi-case</label>
<def><p><spot id="aj000035_23a"/>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.</p></def>
</gitem>
<gitem><label>multi-properties</label>
<def><p>The fo:multi-properties is used to switch between two or more property sets that
are associated with a given portion of content.
</p></def>
</gitem>
<gitem><label>multi-property-set</label>
<def><p>
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.
</p></def>
</gitem>
<gitem><label>multi-switch</label>
<def><p><spot id="aj000035_22a"/>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.</p></def>
</gitem>
<gitem><label>multi-toggle</label>
<def><p>The fo:multi-toggle is used within an fo:multi-case to
switch to another
fo:multi-case.</p></def>
</gitem>
<gitem><label>page-number</label>
<def><p>The fo:page-number formatting object is used to represent
the
current page-number.</p></def>
</gitem>
<gitem><label>page-number-citation</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>page-sequence</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>page-sequence-master</label>
<def><p>The fo:page-sequence-master specifies sequences of page-masters
that are used when generating a sequence of pages.
</p></def>
</gitem>
<gitem><label>region-after</label>
<def><p>This region defines
a viewport that is located on the "after" side of fo:region-body
region.</p></def>
</gitem>
<gitem><label>region-before</label>
<def><p>This region defines
a viewport that is located on the "before" side of fo:region-body
region.</p></def>
</gitem>
<gitem><label>region-body</label>
<def><p>This region specifies a
viewport/reference pair that is located in the "center" of the
fo:simple-page-master.</p></def>
</gitem>
<gitem><label>region-end</label>
<def><p>This region defines
a viewport that is located on the "end" side of fo:region-body region.</p></def>
</gitem>
<gitem><label>region-start</label>
<def><p>This region defines
a viewport that is located on the "start" side of fo:region-body
region.</p></def>
</gitem>
<gitem><label>repeatable-page-master-alternatives</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>repeatable-page-master-reference</label>
<def><p>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.</p></def>
</gitem>
<gitem><label>retrieve-marker</label>
<def><p>The fo:retrieve-marker is used in
conjunction with fo:marker to produce running headers or footers.</p></def>
</gitem>
<gitem><label>root</label>
<def><p>The fo:root node is the top node of an XSL result tree.
This tree is composed of formatting objects.</p></def>
</gitem>
<gitem><label>simple-page-master</label>
<def><p>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 <spot id="c11i41"/>regions.</p></def>
</gitem>
<gitem><label>single-page-master-reference</label>
<def><p>An fo:single-page-master-reference specifies a sub-sequence consisting
of a single instance of a single page-master.</p></def>
</gitem>
<gitem><label>static-content</label>
<def><p>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. </p></def>
</gitem>
<gitem><label>table</label>
<def><p>The fo:table flow object is used for formatting the
tabular material
of a table.</p></def>
</gitem>
<gitem><label>table-and-caption</label>
<def><p>The fo:table-and-caption flow object is used for
formatting a table
together with its caption.</p></def>
</gitem>
<gitem><label>table-body</label>
<def><p>The fo:table-body formatting object is used to contain
the content
of the table body.</p></def>
</gitem>
<gitem><label>table-caption</label>
<def><p><spot id="aj000035_24a"/>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. </p></def>
</gitem>
<gitem><label>table-cell</label>
<def><p>The fo:table-cell formatting object is used to group
content to be
placed in a <spot id="c11i42_a"/>table cell.</p></def>
</gitem>
<gitem><label>table-column</label>
<def><p>The fo:table-column formatting object specifies
characteristics
applicable to table cells that have the same column and span.</p></def>
</gitem>
<gitem><label>table-footer</label>
<def><p>The fo:table-footer formatting object is used to contain
the content
of the table footer.</p></def>
</gitem>
<gitem><label>table-header</label>
<def><p>The fo:table-header formatting object is used to contain
the content
of the table header.</p></def>
</gitem>
<gitem><label>table-row</label>
<def><p>The fo:table-row formatting object is used to group
table-cells into
rows.</p></def>
</gitem>
<gitem><label>title</label>
<def><p>
The fo:title formatting object is used to associate a title with a
given document. This title may be used by an interactive User Agent to
identify the document. For example, the content of the fo:title can be
formatted and displayed in a "title" window or in a "tool tip".
</p></def>
</gitem>
<gitem><label>wrapper</label>
<def><p>The fo:wrapper formatting object is used to
specify
inherited properties for a group of formatting objects.
It has no additional formatting semantics.</p></def>
</gitem>
</glist>
</div2>





<div2>
<head>Declarations and Pagination and Layout Formatting Objects</head>

<div3 id="pag-intro"><head>Introduction</head>
<p>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 <term>flows</term> (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.
</p>
<p>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.
</p>
<div4><head>Page-sequence-masters</head>
<p>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.
</p>
<p>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).
</p>
<p>The fo:single-page-master-reference is used to specify a sub-sequence
consisting of a single page-master.
</p>
<p>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.
</p>
</div4>
<div4><head>Page-masters</head> <p>A page-master is a master that is
used to generate a <term>page</term>. A page is a viewport/reference
pair in which the viewport-area is a child of the area tree
root.  A <term>page-viewport-area</term> is defined to be the viewport-area of a
page, and a <term>page-area</term> is defined to be the unique child of a
page-viewport-area.
</p>
<p>
The page-viewport-area is defined by the output medium; the page-area
holds the page contents and has the <spot id="aj000035_25"/>effect of positioning the page
contents on the output medium.
</p>
<p>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.
</p>
<note>
<p>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.</p>
</note>
<p>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.
</p>
<p>An fo:simple-page-master has, as children, specifications for one or more
regions.
</p>
<p>A region specification is used as a master, the <term>region-master</term>,
in generating viewport/reference pair consisting of a
<term>region-viewport-area</term> and a <term>region-reference-area</term>.
The region-viewport-area is always a child
of a page-area generated using the parent of the region-master.
</p>
<note>
<p>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.
</p>
</note>
<p>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.
</p>
<p>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.
</p>
<p>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
<spot id="c11i43"/>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.</p>
<p>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.
<spot id="fosg_2b"/>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.</p>
</div4>
<div4><head>Page Generation</head> <p>
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.
</p>
<p>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. <spot id="c11i44"/>An fo:page-sequence references a page-master if
either the fo:page-sequence directly references the page-master via
the "master-name" property or that property references an
fo:page-sequence-master that references the page-master.
</p>
</div4>
<div4 id="fafm"><head>Flows and Flow Mapping</head>
<p>There are two kinds of <term>flows</term>: 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.
</p>
<p>The children of a flow are a sequence of block-level flow objects.
Each flow has a name, and no two fo:flow or fo:static-content
formatting objects in the same page-sequence may have the same
name. </p>
<p>The assignment of flows to regions on a page-master is determined by
a <term>flow-map</term>.  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.
</p>
<p>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.
</p>
<p>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.
</p>
<p>In addition, an fo:static-content formatting object may
have a "region-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 <specref ref="pg-out-of-line"/>.
</p></div4>
<div4><head>Constraints on Page Generation</head>
<p>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
<spot id="c11i45"/>with two exceptions:
for a fo:static-content with a <trait>flow-name</trait> of
<code role="value">xsl-before-float-separator</code>, the processing
is repeated only for those page-reference-areas which have descendant
areas with an area-class of <code role="value">xsl-before-float</code>,
and for a fo:static-content with a <trait>flow-name</trait> of
<code role="value">xsl-footnote-separator</code>, the processing
is repeated only for those page-reference-areas which have descendant
areas with an area-class of <code role="value">xsl-footnote</code>.</p>
</div4>
<div4><head>Pagination Tree Structure</head>
<p>The result tree structure is shown below.</p>
<graphic source="PageTree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
</div4>

</div3>


<div3 id="fo_root"><head>fo:root</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>
<note><p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>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 <term>properly ordered</term>. (See Section <specref ref="area-genorder"/>.)
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_layout-master-set" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">layout-master-set</loc>,<loc href="#fo_declarations" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">declarations</loc>?,<loc href="#fo_page-sequence" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">page-sequence</loc>+)
</eg>

</div3>


<div3 id="fo_declarations"><head>fo:declarations</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:declarations formatting object is used to group global declarations for a stylesheet.</p>

<p><emph>Areas:</emph></p>
<p>The fo:declarations formatting object does not generate
or return any areas.</p>

<p><emph>Constraints:</emph></p>
<p>None.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_color-profile" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">color-profile</loc>)+
</eg>
<p><spot id="wai_4e"/>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).</p>

</div3>


<div3 id="fo_color-profile"><head>fo:color-profile</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>
<p>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. </p>
<p>When the color-profile is referenced (e.g., via the
icc-color function<spot id="aj000035_45b"/><specref ref="expr-color-functions"/>), the following rules are used:</p>
<olist>
<item><p>If the color-profile is available, the color value
identified from the color-profile should be used.</p></item>
<item><p>If the color-profile is not available,
the sRGB fallback must be used.</p></item>
</olist>

<p><emph>Areas:</emph></p>
<p>The fo:color-profile formatting object does not generate
or return any areas.</p>

<p><emph>Constraints:</emph></p>
<p>None.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>

<sitem><specref ref="src"/></sitem>
<sitem><specref ref="color-profile-name"/></sitem>
<sitem><specref ref="rendering-intent"/></sitem>
</slist>
</div3>


<div3 id="fo_page-sequence"><head>fo:page-sequence</head>

<p><emph>Common Usage:</emph></p>
<p>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. The layout of these pages comes from
the fo:page-sequence-master or page-master
referenced by the <trait>master-name</trait>

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.

</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>
<p>All areas generated by an fo:page-sequence have
area-class "xsl-absolute".</p>

<p><emph>Constraints:</emph></p>
<p>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 <trait>master-name</trait> trait of the
fo:page-sequence or a page-master that was directly identified by the
<trait>master-name</trait> trait. The
region-viewport-area children of such a page-reference-area must correspond
to the regions that are children of that page-master.
</p>
<p>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.</p>
<p>
The areas returned to the fo:page-sequence by a flow must satisfy four
types of constraints:</p>
<ulist>
<item><p><emph>Completeness</emph>.  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
<specref ref="area-linebuild"/> and <specref ref="area-inlinebuild"/>.
</p></item>
<item><p><emph>Flow-map association</emph>. 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 <trait>flow-name</trait> of
<code role="value">xsl-before-float-separator</code> or
<code role="value">xsl-footnote-separator</code>.
</p>
<p>
Areas returned from an fo:static-content with a <trait>flow-name</trait> of
<code role="value">xsl-before-float-separator</code> become children of the
before-float-reference-area of an area associated to an fo:region-body,
following all sibling areas of area-class <code role="value">xsl-before-float</code>.
Areas returned from an fo:static-content with a <trait>flow-name</trait>
of <code role="value">xsl-footnote-separator</code> become children of the
footnote-reference-area of an area associated to an fo:region-body, preceding
all sibling areas of area-class <code role="value">xsl-footnote</code>.
</p></item>
<item><p><emph>Area-class association.</emph>  Areas returned by flow children of an
fo:page-sequence are distributed as follows: all areas of area-class
<code role="value">xsl-footnote</code> must be
descendants of a footnote-reference-area; areas of area-class
<code role="value">xsl-before-float</code>
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.</p></item>
<item><p><emph>Stacking</emph>.  The stackable areas of a given class returned
by children of each flow are properly stacked within the appropriate reference-area,
as described above.</p>
</item>
</ulist>
<p>The default ordering constraint of section <specref ref="area-genorder"/>
does not apply to the
fo:page-sequence. The default ordering constraints apply to the child fo:flow
objects; special ordering constraints apply to the child fo:static-content objects.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_title" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">title</loc>?,<loc href="#fo_static-content" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">static-content</loc>*,<loc href="#fo_flow" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">flow</loc>)
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="country"/></sitem>
<sitem><specref ref="format"/></sitem>
<sitem><specref ref="language"/></sitem>
<sitem><specref ref="letter-value"/></sitem>
<sitem><specref ref="grouping-separator"/></sitem>
<sitem><specref ref="grouping-size"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="initial-page-number"/></sitem>
<sitem><specref ref="force-page-count"/></sitem>
<sitem><specref ref="master-name"/></sitem>
</slist>
</div3>


<div3 id="fo_layout-master-set"><head>fo:layout-master-set</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>The value of the <trait>master-name</trait> trait on each
child of the fo:layout-master-set must be unique within the set.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_simple-page-master" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">simple-page-master</loc>|<loc href="#fo_page-sequence-master" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">page-sequence-master</loc>)+
</eg>

</div3>


<div3 id="fo_page-sequence-master"><head>fo:page-sequence-master</head>

<p><emph>Common Usage:</emph></p>
<p>
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.
</p>
<note>
<p>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.
</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:page-sequence-master formatting object generates no area directly.
It is used by the
fo:page-sequence formatting object to generate pages.
</p>

<p><emph>Constraints:</emph></p>
<p>The children of the fo:page-sequence-master are a sequence of
<term>sub-sequence-specifiers</term>. A page-sequence
satisfies the constraint
determined by an fo:page-sequence-master if (a) it can be partitioned
into sub-sequences of pages that map one-to-one, in order,
to the
sub-sequence of sub-sequence-specifiers that are the
children of the
fo:page-sequence-master and, (b) for each sub-sequence of pages, that
sub-sequence satisfies the constraints of the corresponding
sub-sequence-specifier. Note that the mapping of sub-sequences of the sequence
of pages to sub-sequence-specifiers need not be onto; that
is, the
sequence of sub-sequences of pages can be shorter than the sequence of
sub-sequence-specifiers.
</p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_single-page-master-reference" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">single-page-master-reference</loc>|<loc href="#fo_repeatable-page-master-reference" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">repeatable-page-master-reference</loc>|<loc href="#fo_repeatable-page-master-alternatives" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">repeatable-page-master-alternatives</loc>)+
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="master-name"/></sitem>
</slist>
</div3>


<div3 id="fo_single-page-master-reference"><head>fo:single-page-master-reference</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The fo:single-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as the
<trait>master-name</trait> trait on the
fo:single-page-master-reference.
</p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="master-name"/></sitem>
</slist>
</div3>


<div3 id="fo_repeatable-page-master-reference"><head>fo:repeatable-page-master-reference</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The fo:repeatable-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as the
<trait>master-name</trait> trait on the
fo:repeatable-page-master-reference.
</p>
<p>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 <spot id="c11i47"/>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 <trait>maximum-repeats</trait>.
</p>
<p>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.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="master-name"/></sitem>
<sitem><specref ref="maximum-repeats"/></sitem>
</slist>
</div3>


<div3 id="fo_repeatable-page-master-alternatives"><head>fo:repeatable-page-master-alternatives</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>
<note>
<p>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.
</p>
</note>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The children of the fo:repeatable-page-master-alternatives are
fo:conditional-page-master-references. These children will be called
<term>alternatives</term>.
</p>
<p>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 consist 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 <code role="value">true</code>, (d) that
alternative is the first alternative in the sequence of children for
which all the conditions are <code role="value">true</code>, and (e) the length
of the sub-sequence is less than or equal to the value of
<trait>maximum-repeats</trait>.<spot id="aj000035_26"/>
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_conditional-page-master-reference" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">conditional-page-master-reference</loc>+)
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="maximum-repeats"/></sitem>
</slist>
</div3>


<div3 id="fo_conditional-page-master-reference"><head>fo:conditional-page-master-reference</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The fo:conditional-page-master-reference has a reference to the
fo:simple-page-master which has the same master-name as
the <trait>master-name</trait> trait on the fo:conditional-page-master-reference.
</p>
<p>There are three traits, <trait>page-position</trait>,
<trait>odd-or-even</trait>, and <trait>blank-or-not-blank</trait> that
specify the
sub-conditions on the use of the referenced page-master. All three
sub-conditions must be <code role="value">true</code> for the condition on the
fo:conditional-page-master-reference to be <code role="value">true</code>. <spot id="c11i48"/>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 <code role="value">true</code>, this
really means that the subset of traits that are derived from properties
with specified values must make the corresponding
sub-condition <code role="value">true</code>.
</p>
<p>The sub-condition corresponding to the <trait>page-position</trait>
trait is <code role="value">true</code> <spot id="c11i49_a"/>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) or
"any" (all of the previous). The <term>referencing
page-sequence</term> is the fo:page-sequence that referenced the
fo:page-sequence-master from which this
fo:conditional-page-master-reference is a descendant.
</p>
<p>The sub-condition corresponding to the <trait>odd-or-even</trait>
trait is <code role="value">true</code> <spot id="c11i49_b"/>if the value of the <trait>odd-or-even</trait>
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.
</p>
<p>The sub-condition corresponding to the <trait>blank-or-not-blank</trait> trait is
<code role="value">true</code>, <spot id="c11i50_a"/>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; <spot id="c11i50_b"/>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 <spot id="c11i50_c"/>if (3)
the value of the trait is "any".
</p>
<note>
<p>If any page-master referenced from a conditional-page-master-reference
with blank-or-not-blank="<code role="value">true</code>" provides a region
in which to put fo:flow content, no content is put in that region.</p>
</note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="master-name"/></sitem>
<sitem><specref ref="page-position"/></sitem>
<sitem><specref ref="odd-or-even"/></sitem>
<sitem><specref ref="blank-or-not-blank"/></sitem>
</slist>
</div3>


<div3 id="fo_simple-page-master"><head>fo:simple-page-master</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>
<note>
<p>For example, if the <trait>writing-mode</trait> 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.</p>
</note>
<note>
<p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:simple-page-master formatting object generates no area directly.
It is used in the generation of pages by an
fo:page-sequence.
</p>
<p>
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.
</p>
<p>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 (<spot id="c11i1_g"/><specref ref="fo_region-body"/>,
<specref ref="fo_region-before"/>,
<specref ref="fo_region-after"/>,
<specref ref="fo_region-start"/>, and
<specref ref="fo_region-end"/>)
for the details on the generation of these areas.)
</p>
<figure>
<graphic source="ViewportsToPage-level.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p><spot id="aj000029_51"/>Region-viewport-areas</p>
<p>The spacing between the outer four regions and the fo:region-body is determined
by subtracting the relevant <trait>extent</trait> trait on each outer region
from the "margin-x" property on the fo:region-body.</p>
</figcap>
</figure>

<p><emph>Trait Derivation:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>When a page-master is used in the generation of a page, the
<trait>height</trait> and <trait>width</trait> of the
content-rectangle of the page-viewport-area are determined using the
computed values of the
"page-height" and "page-width" properties.
If the
"page-height" and "page-width" properties have
explicit values, they are used to set the corresponding
<trait>height</trait> and <trait>width</trait> trait on the
page-viewport-area. If the "page-height" and/or
"page-width" are set to "auto", the size of the
page-viewport-area will be determined from the size of the media. If
the media has a fixed size, then the size of the media is used. In the
case of continuous media, the size of the User Agent window is used.
</p>
<note>
<p>The above size calculations are intended to match
the handling of a frameset in a browser window when the media is
continuous and to match pages when the media is paged.
</p>
<p>
A User Agent may provide a way to declare the media for which
formatting is to be done. This may be different from the media on
which the formatted result is viewed. For example, a browser User
Agent may be used to preview pages that are formatted for sheet
media. In that case, the size calculation is based on the media for
which formatting is done rather than the media being currently used.
</p>
</note>
<p>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". <spot id="c11i53"/>For display media, the display window is always
upright; the top of the display screen is "top".
</p>
<note>
<p>
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
<trait>writing-mode</trait> currently in use.
</p>
</note>
<graphic source="MediaReferenceArea.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>The value of the <trait>page-number</trait> trait on the
first page returned by the
fo:page-sequence is constrained to equal the value of the
<trait>initial-page-number</trait> trait. The value of the
<trait>page-number</trait>
trait on subsequent pages is constrained to be one greater than the
value on the immediately preceding page.
</p>

<p>The <trait>format</trait>, <trait>letter-value</trait>,
<trait>grouping-separator</trait>, <trait>grouping-size</trait>,
<trait>country</trait>, and
<trait>language</trait> 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.

</p>

<p><emph>Constraints applicable to regions:</emph></p>
<p>There are a number of constraints that apply to all the
regions that are specified within a given fo:simple-page-master.
</p>

<graphic source="PageAndRegion-bodyWithOrientationOnPage.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>
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 <trait>overflow</trait> trait
on the region-master and the kind of flow
assigned to the region.

</p>
<p>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.</p>

<p>If the flow assigned to the corresponding region is an fo:flow formatting
object, then</p>
<ulist>
<item><p>If the value of the <trait>overflow</trait> trait is
<code>scroll</code>, then there is no constraint on the
block-progression-dimension of the region-reference-area.</p>
</item>
<item>
<p>If the value of the <trait>overflow</trait> trait is
<code>hidden</code>, <code>paginate</code>,
<code>error-if-overflow</code>, or <code>visible</code>, 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.</p>
</item>
</ulist>
<p>
The block-progression-dimension of a region-area that
corresponds to a
given region-master depends on the value of the
<trait>overflow</trait> trait on that region-master.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_region-body" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">region-body</loc>,<loc href="#fo_region-before" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">region-before</loc>?,<loc href="#fo_region-after" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">region-after</loc>?,<loc href="#fo_region-start" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">region-start</loc>?,<loc href="#fo_region-end" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">region-end</loc>?)
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="master-name"/></sitem>
<sitem><specref ref="page-height"/></sitem>
<sitem><specref ref="page-width"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>

<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_region-body"><head>fo:region-body</head>

<p><emph>Common Usage:</emph></p>
<p>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 <trait>overflow</trait> trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by <spot id="c11i55_a"/>its parent region-viewport-area.
</p>
<note>
<p>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.
</p>
</note>
<note><p>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.
</p>

<graphic source="PageAndRegion-bodyMargins.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>
The spacing between the last four regions and the fo:region-body is
determined by subtracting the relevant <trait>extent</trait> trait on
the side regions from the trait that corresponds to the
"margin-<var>x</var>" property on the fo:region-body.</p>
</note>
<p>The fo:region-body may be also be used to provide multiple
columns. When the <trait>column-count</trait> trait is greater than one, then
the region-body will be subdivided into multiple columns.
</p>

<p><emph>Areas:</emph></p>
<p>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
<trait>overflow</trait> trait is "scroll".
</p>
<p>
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 <trait>padding</trait>
and <trait>border-width</trait> traits must be "0".
</p>
<p>
The region-reference-area generated using an fo:region-body is the child
of the region-viewport-area. The <trait>reference-orientation</trait> 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).
</p>
<p>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
<term>before-float-reference-area</term>,
the optional <term>footnote-reference-area</term>, and the
<term>main-reference-area</term>. 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.
</p>
<note>
<p>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.</p>
</note>

<p><spot id="fosg_2c"/>The main-reference-area has as its children
a sequence of <term>span-reference-areas</term>.
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.</p>
<p>Each span-reference-area has one or more reference-area children,
designated as <term>normal-flow-reference-areas</term>.
The number and placement of the children of a span-reference-area
depends on the <trait>column-count</trait> trait of the span-reference-area.
In turn, the formatter must generate sufficiently many of these
span-reference-areas, and so set their <trait>column-count</trait> traits,
that block-areas
returned from the fo:flow with a <trait>span</trait> of "all" are children of
span-reference-areas with <trait>column-count</trait> equal to 1,
and block-areas returned from the fo:flow with a <trait>span</trait> of "none"
are children of span-reference-areas with <trait>column-count</trait> equal to
the refined value of the column-count property of the
associated region-reference-area.</p>
<p>For each span-reference-area, the number <var>N</var>
of normal-flow-reference-area children is equal to the value of the
<trait>column-count</trait> trait.</p>
<p>It is an error to specify a <trait>column-count</trait> other
than 1 if the "overflow" property has the value "scroll".
An implementation may recover by behaving as if "1" had been specified.</p>
<p>The inline-progression-dimension of each of these
normal-flow-reference-areas is determined by subtracting
(<var>N</var>-1) times the column-gap trait from the
inline-progression-dimension of the
main-reference-area and dividing that result by <var>N</var>.
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:</p>
<p>column-in-size = (body-in-size - (<var>N</var> - 1)*column-gap)/<var>N</var></p>
<p>The block-progression-dimension of the normal-flow-reference-areas
is the same as that of the parent span-reference-area.</p>
<note><p>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.</p>
</note>
<p>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 <var>J</var>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 ((<var>J</var>-1)*(column-in-size + column-gap))
in the inline-progression-direction.
This results in the end-edge of the content-rectangle of the
<var>N</var>th normal-flow-reference-area being coincident with
the end-edge of the content-rectangle of the span-reference-area.</p>

<note>
<p>If the <trait>writing-mode</trait> 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" <spot id="c11i57"/>writing-mode.</p>
</note>
<p>All areas generated by using the fo:region-body are of area-class "xsl-absolute".</p>

<p><emph>Trait Derivation:</emph></p>
<p>
The <trait>reference-orientation</trait> of the region-viewport-area
is taken from the value <spot id="c11i58_a"/>of the
<trait>reference-orientation</trait> trait on the region-master which
specifies the region. <trait>reference-orientation</trait> of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
</p>
<p>The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.</p>

<p><emph>Constraints:</emph></p>
<p>The constraints applicable to all regions (see
<specref ref="fo_simple-page-master"/>) all apply.
</p>
<p>
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 <trait>start-indent</trait> and <trait>end-indent</trait>
traits of the region-master. The start-edge and end-edge of the
content-rectangle of the region-viewport-area are determined by the
<trait>reference-orientation</trait> trait on the page-master.
</p>
<p>
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
<trait>space-before</trait> and <trait>space-after</trait> traits of
the region-master. The before-edge and after-edge of the content-rectangle
of the region-viewport-area
are determined by the <trait>reference-orientation</trait> trait on
the page-master.
</p>
<p>
The values of the <trait>space-before</trait> and
<trait>start-indent</trait> 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.
</p>
<p>
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 <specref ref="fo_simple-page-master"/>.</p>


<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="column-count"/></sitem>
<sitem><specref ref="column-gap"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="region-name"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_region-before"><head>fo:region-before</head>

<p><emph>Common Usage:</emph></p>
<p>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 <trait>overflow</trait> trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by <spot id="c11i55_b"/>its parent region-viewport-area.</p>

<p><emph>Areas:</emph></p>
<p>The fo:region-before formatting object is used to generate one
region-viewport-area
and one region-reference-area.
</p>
<p><spot id="fosg_00a"/>In version 1.0 of this recommendation,
the values of the <trait>padding</trait>
and <trait>border-width</trait> traits must be "0".
</p>
<p>
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 <trait>extent</trait> trait on the fo:region-before
formatting object.</p>

<p>The inline-progression-dimension of the region-viewport-area is determined by the
<trait>precedence</trait> trait on the fo:region-before.  If the value
of the <trait>precedence</trait> trait is <code role="value">true</code>, then the
inline-progression-dimension extends up to the start- and after-edges 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 <trait>precedence</trait> trait on the fo:region-before
is <code role="value">false</code>, 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.
</p>
<p>
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
<trait>reference-orientation</trait> trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
</p>
<p>
The size of the region-reference-area depends on the setting of the
<trait>overflow</trait> 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
<trait>overflow</trait>
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
<trait>writing-mode</trait> for the region and has no constraint in the
block-progression-direction (which implies that it grows to
<spot id="c11i59_a"/>hold the distribution of all the content bound to the region).</p>

<p><emph>Trait Derivation:</emph></p>
<p>
The <trait>reference-orientation</trait> of the region-viewport-area
is taken from the value <spot id="c11i58_b"/>of the
<trait>reference-orientation</trait> trait on the region-master which
specifies the region. <trait>reference-orientation</trait> of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
</p>
<p>The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.</p>

<p><emph>Constraints:</emph></p>
<p>
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 <specref ref="fo_simple-page-master"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="extent"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="precedence"/></sitem>
<sitem><specref ref="region-name"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_region-after"><head>fo:region-after</head>

<p><emph>Common Usage:</emph></p>
<p>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 <trait>overflow</trait> trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by <spot id="c11i55_c"/>its parent region-viewport-area.
</p>

<p><emph>Areas:</emph></p>
<p>The fo:region-after formatting object is used to generate one
region-viewport-area
and one region-reference-area.
</p>
<p><spot id="fosg_00b"/>In version 1.0 of this recommendation,
the values of the <trait>padding</trait>
and <trait>border-width</trait> traits must be "0".
</p>
<p>
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 <trait>extent</trait> trait on the fo:region-after
formatting object.</p>
<p>The inline-progression-dimension of the region-viewport-area is determined by the
<trait>precedence</trait> trait on the fo:region-after.  If the value
of the <trait>precedence</trait> trait is <code role="value">true</code>, then the
inline-progression-dimension extends up to the start- and after-edges 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 <trait>precedence</trait> trait on the fo:region-after
is <code role="value">false</code>, 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.
</p>
<p>
The region-reference-area lies on a canvas
underneath the region-viewport-area. The
<trait>reference-orientation</trait> trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
</p>
<p>The size of the region-reference-area depends on the setting of the
<trait>overflow</trait> 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
<trait>overflow</trait>
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
<trait>writing-mode</trait> for the region and has no constraint in
block-progression-direction (which implies that it grows to
<spot id="c11i59_b"/>hold the distribution of all the content bound to the region).</p>

<p><emph>Trait Derivation:</emph></p>
<p>
The <trait>reference-orientation</trait> of the region-viewport-area
is taken from the value <spot id="c11i58_c"/>of the
<trait>reference-orientation</trait> trait on the region-master which
specifies the region. <trait>reference-orientation</trait> of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
</p>
<p>The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.</p>

<p><emph>Constraints:</emph></p>
<p>
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 <specref ref="fo_simple-page-master"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="extent"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="precedence"/></sitem>
<sitem><specref ref="region-name"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_region-start"><head>fo:region-start</head>

<p><emph>Common Usage:</emph></p>
<p>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 <trait>overflow</trait> trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by <spot id="c11i55_d"/>its parent region-viewport-area.</p>

<p><emph>Areas:</emph></p>
<p>The fo:region-start formatting object is used to generate one
region-viewport-area
and one region-reference-area.
</p>
<p><spot id="fosg_00c"/>In version 1.0 of this recommendation,
the values of the <trait>padding</trait>
and <trait>border-width</trait> traits must be "0".
</p>
<p>
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 <trait>extent</trait> trait on the fo:region-after
formatting object.</p>
<p>The block-progression-dimension of the region-viewport-area is
determined by the <trait>precedence</trait> trait on the
adjacent fo:region-before and the fo:region-after. If the value of the
<trait>precedence</trait> trait of the fo:region-before (or, respectively,
fo:region-after) is <code role="value">false</code>, 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 <trait>precedence</trait> trait on the adjacent regions is
<code role="value">true</code>, 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 <trait>precedence</trait> trait equal to <code role="value">true</code>.</p>
<p>The region-reference-area lies on a canvas
underneath the region-viewport-area. The
<trait>reference-orientation</trait> trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
</p>
<p>The size of the region-reference-area depends on the setting of the
<trait>overflow</trait> 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
<trait>overflow</trait>
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
<trait>writing-mode</trait> for the region and has no constraint in
block-progression-direction (which implies that it grows to
<spot id="c11i59_c"/>hold the distribution of all the content bound to the region).</p>

<p><emph>Trait Derivation:</emph></p>
<p>
The <trait>reference-orientation</trait> of the region-viewport-area
is taken from the value <spot id="c11i58_d"/>of the
<trait>reference-orientation</trait> trait on the region-master which
specifies the region. <trait>reference-orientation</trait> of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
</p>
<p>The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.</p>

<p><emph>Constraints:</emph></p>
<p>
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 <specref ref="fo_simple-page-master"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="extent"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="region-name"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_region-end"><head>fo:region-end</head>

<p><emph>Common Usage:</emph></p>
<p>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 <trait>overflow</trait> trait controls how
much of the underlying region-reference-area is visible; that is, whether
the region-reference-area is clipped by <spot id="c11i55_e"/>its parent region-viewport-area.</p>

<p><emph>Areas:</emph></p>
<p>The fo:region-end formatting object is used to generate one
region-viewport-area
and one region-reference-area.
</p>
<p><spot id="fosg_00d"/>In version 1.0 of this recommendation,
the values of the <trait>padding</trait>
and <trait>border-width</trait> traits must be "0".
</p>
<p>
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 <trait>extent</trait> trait on the fo:region-after
formatting object.</p>
<p>The block-progression-dimension of the region-viewport-area is
determined by the <trait>precedence</trait> trait on the
adjacent fo:region-before and the fo:region-after. If the value of the
<trait>precedence</trait> trait of the fo:region-before (or, respectively,
fo:region-after) is <code role="value">false</code>, 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 <trait>precedence</trait> trait on the adjacent regions is
<code role="value">true</code>, 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 <trait>precedence</trait> trait equal to <code role="value">true</code>.</p>
<p>The region-reference-area lies on a canvas
underneath the region-viewport-area. The
<trait>reference-orientation</trait> trait is used to orient the
coordinate system of the region-reference-area relative to the
page-reference-area.
</p>
<p>The size of the region-reference-area depends on the setting of the
<trait>overflow</trait> 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
<trait>overflow</trait>
trait is "scroll", the size of the reference-area is
equal
to the size of the viewport in the
inline-progression-direction in the
<trait>writing-mode</trait> for the region and has no constraint in
block-progression-direction (which implies that it grows to
<spot id="c11i59_d"/>hold the distribution of all the content bound to the region).</p>

<p><emph>Trait Derivation:</emph></p>
<p>
The <trait>reference-orientation</trait> of the region-viewport-area
is taken from the value <spot id="c11i58_e"/>of the
<trait>reference-orientation</trait> trait on the region-master which
specifies the region. <trait>reference-orientation</trait> of the
region-reference-area is set to "0" and is, therefore, the
same as the orientation established by the region-viewport-area.
</p>
<p>The remaining traits on the
region-viewport-area and region-reference-area are
set according to normal rules for determining the values of
traits.</p>

<p><emph>Constraints:</emph></p>
<p>
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 <specref ref="fo_simple-page-master"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="extent"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="region-name"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_flow"><head>fo:flow</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The (implicit) flow-map determines the assignment of the content
of the fo:flow to a region.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="flow-name"/></sitem>
</slist>
</div3>


<div3 id="fo_static-content"><head>fo:static-content</head>

<p><emph>Common Usage:</emph></p>
<p>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. </p>
<p>
This content is repeated, in its
entirety, on every page to which it is assigned.
</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>The (implicit) flow-map determines the assignment of the content
of the fo:static-content to a region.</p>
<p>The fo:static-content may be processed multiple times and thus the
default ordering constraint of section <specref ref="area-genorder"/>
does not apply to the fo:static-content. Instead, it must satisfy the
constraint on a per-page basis. Specifically, if <var>P</var> is a page-reference-area
<var>C</var> is an area-class, and <var>S</var> is the set of all descendants of <var>P</var>
of area-class <var>C</var> returned to the fo:static-content descendant, then <var>S</var>
must be properly-ordered.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="flow-name"/></sitem>
</slist>
</div3>


<div3 id="fo_title"><head>fo:title</head>

<p><emph>Common Usage:</emph></p>
<p>
The fo:title formatting object is used to associate a title with a
given document. This title may be used by an interactive User Agent to
identify the document. For example, the content of the fo:title can be
formatted and displayed in a "title" window or in a "tool tip".
</p>

<p><emph>Areas:</emph></p>
<p>
This formatting object returns the sequence of areas returned by the
flow children of this formatting object.
</p>

<p><emph>Constraints:</emph></p>
<p>
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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>)*
</eg>
<p><spot id="fo0001_16aa"/>An fo:title is not permitted to
have an fo:float, fo:footnote or fo:marker as a descendant.</p>
<p>Additionally, an fo:title is not permitted to have as a descendant
an fo:block-container that generates an absolutely positioned area.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="visibility"/></sitem>
<sitem><specref ref="z-index"/></sitem>
</slist>
</div3>


</div2>

<div2>
<head>Block-level Formatting Objects</head>

<div3><head>Introduction</head>
<p>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
style sheet.</p>
<div4><head>Example</head>


<div5><head>Chapter and Section Titles, Paragraphs</head>
<p><spot id="aj000035_27"/>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
  &lt;chapter&gt;
    &lt;title&gt;Chapter title&lt;/title&gt;
    &lt;section&gt;
      &lt;title&gt;First section title&lt;/title&gt;
      &lt;paragraph&gt;Section one's first paragraph.&lt;/paragraph&gt;
      &lt;paragraph&gt;Section one's second paragraph.&lt;/paragraph&gt;
    &lt;/section&gt;
    &lt;section&gt;
      &lt;title&gt;Second section title&lt;/title&gt;
      &lt;paragraph&gt;Section two's only paragraph.&lt;/paragraph&gt;
    &lt;/section&gt;
  &lt;/chapter&gt;
&lt;/doc&gt;
</eg>
<p>In this example the chapter title appears at the top of
the page (its "space-before" is discarded).</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format"&gt;

&lt;xsl:template match="chapter"&gt;
  &lt;fo:block break-before="page"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="chapter/title"&gt;
  &lt;fo:block text-align="center" space-after="8pt"
            space-before="16pt" space-after.precedence="3"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="section"&gt;
  &lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="section/title"&gt;
  &lt;fo:block text-align="center" space-after="6pt"
            space-before="12pt" space-before.precedence="0"
            space-after.precedence="3"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="paragraph[1]" priority="1"&gt;
  &lt;fo:block text-indent="0pc" space-after="7pt"
            space-before.minimum="6pt" space-before.optimum="8pt"
            space-before.maximum="10pt"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="paragraph"&gt;
  &lt;fo:block text-indent="2pc" space-after="7pt"
            space-before.minimum="6pt" space-before.optimum="8pt"
            space-before.maximum="10pt"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:block break-before="page"&gt;

  &lt;fo:block text-align="center" space-after="8pt"
    space-before="16pt"
    space-after.precedence="3"&gt;Chapter title
  &lt;/fo:block&gt;

  &lt;fo:block text-align="center" space-after="6pt"
    space-before="12pt" space-before.precedence="0"
    space-after.precedence="3"&gt;First section title
  &lt;/fo:block&gt;

  &lt;fo:block text-indent="0pc" space-after="7pt"
    space-before.minimum="6pt" space-before.optimum="8pt"
    space-before.maximum="10pt"&gt;Section one's first paragraph.
  &lt;/fo:block&gt;

  &lt;fo:block text-indent="2pc" space-after="7pt"
    space-before.minimum="6pt" space-before.optimum="8pt"
    space-before.maximum="10pt"&gt;Section one's second paragraph.
  &lt;/fo:block&gt;

  &lt;fo:block text-align="center" space-after="6pt"
    space-before="12pt" space-before.precedence="0"
    space-after.precedence="3"&gt;Second section title
  &lt;/fo:block&gt;

  &lt;fo:block text-indent="0pc" space-after="7pt"
    space-before.minimum="6pt" space-before.optimum="8pt"
    space-before.maximum="10pt"&gt;Section two's only paragraph.
  &lt;/fo:block&gt;

&lt;/fo:block&gt;
</eg>
</div5>

</div4>
</div3>


<div3 id="fo_block"><head>fo:block</head>


<p><emph>Common Usage:</emph></p>
<p>The fo:block formatting object is commonly used for formatting paragraphs,
titles, headlines, figure and table captions, etc.</p>

<p><emph>Areas:</emph></p>
<p>The fo:block formatting object generates one or more
<term>normal</term> block-areas.
The fo:block returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:block.</p>

<p><emph>Trait Derivation:</emph></p>

<p>The <trait>half-leading</trait> trait
<spot id="aj000035_28"/>is set to 1/2 the difference of
the computed value of the <trait>line-height</trait> property and the
computed value of the <trait>font-size</trait> property.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:block formatting object.</p>
<p>The children of each normal area returned by an fo:block
must satisfy the constraints specified in <specref ref="area-linebuild"/>.
</p>
<p>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 <specref ref="area_model"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p>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.
</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="common-hyphenation-properties"/></sitem>

<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="font-height-override-after"/></sitem>
<sitem><specref ref="font-height-override-before"/></sitem>
<sitem><specref ref="hyphenation-keep"/></sitem>
<sitem><specref ref="hyphenation-ladder-count"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="last-line-end-indent"/></sitem>
<sitem><specref ref="linefeed-treatment"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="line-stacking-strategy"/></sitem>
<sitem><specref ref="orphans"/></sitem>

<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="space-treatment"/></sitem>
<sitem><specref ref="span"/></sitem>
<sitem><specref ref="text-align"/></sitem>
<sitem><specref ref="text-align-last"/></sitem>
<sitem><specref ref="text-indent"/></sitem>
<sitem><specref ref="visibility"/></sitem>

<sitem><specref ref="white-space-collapse"/></sitem>
<sitem><specref ref="widows"/></sitem>
<sitem><specref ref="wrap-option"/></sitem>
<sitem><specref ref="z-index"/></sitem>
</slist>
</div3>


<div3 id="fo_block-container"><head>fo:block-container</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>
<note><p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:block-container formatting object generates one or more
<term>viewport/reference pair</term>s.
The fo:block-container returns these areas and any
<term>page-level-out-of-line</term> areas
returned by the children of the fo:block-container.</p>

<p><emph>Trait Derivation:</emph></p>
<p>The areas generated by the fo:block-container formatting object have
a value of "true" for the <trait>is-reference-area</trait>.</p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p><spot id="fo0001ab_a"/>The children of each reference-area generated
by an fo:block-container formatting object
must be normal <term>block-area</term>s returned by the children of the fo:block-container,
must be <term>properly stacked</term>, and
must be <term>properly ordered</term>.
</p>
<p>Any <term>reference-level-out-of-line</term>
areas returned by the children of the fo:block-container
are handled as described in <specref ref="fo_float"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition an fo:block-container that does not generate
an <term>absolutely positioned</term> area
may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-absolute-position-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="span"/></sitem>
<sitem><specref ref="width"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>

</div2>

<div2>
<head>Inline-level Formatting Objects</head>

<div3><head>Introduction</head>
<p>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.</p>
<ulist><item><p>
putting the first line of a paragraph into
small-caps,</p></item>
<item><p>turning a normally inline formatting object, fo:external-graphic, into
a block by "wrapping" with an fo:block formatting
object,</p></item>
<item><p>formatting a running footer containing the word
"Page" followed by a page number.</p></item></ulist>
<div4><head>Examples</head>



<div5><head>First Line of Paragraph in Small-caps</head>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
&lt;p&gt;This is the text of a paragraph that is going to be
presented with the first line in small-caps.&lt;/p&gt;
&lt;/doc&gt;
</eg>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="p"&gt;
  &lt;fo:block&gt;
    &lt;fo:initial-property-set font-variant="small-caps"/&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:block&gt;
  &lt;fo:initial-property-set font-variant="small-caps"&gt;
  &lt;/fo:initial-property-set&gt;This is the text of a paragraph that is going to be
presented with the first line in small-caps.
&lt;/fo:block&gt;
</eg>
</div5>

<div5><head>Figure with a Photograph</head>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
  &lt;figure&gt;
    &lt;photo image="TH0317A.jpg"/&gt;
    &lt;caption&gt;C'ieng Tamlung of C'ieng Mai&lt;/caption&gt;
  &lt;/figure&gt;
&lt;/doc&gt;
</eg>
<p>In this example the image (an fo:external-graphic) is
placed as a centered block-level object.
The caption is centered with 10mm indents.</p>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="figure"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="photo"&gt;
  &lt;fo:block text-align="center"&gt;
    &lt;fo:external-graphic src="{@image}"/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="caption"&gt;
  &lt;fo:block space-before="3pt" text-align="center"
    start-indent="10mm" end-indent="10mm"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>fo: element and attribute tree:</p>
<eg xml:space="preserve">
&lt;fo:block&gt;
  &lt;fo:block text-align="center"&gt;
    &lt;fo:external-graphic src="TH0317A.jpg"/&gt;
  &lt;/fo:block&gt;

  &lt;fo:block space-before="3pt" text-align="center" start-indent="10mm"
    end-indent="10mm"&gt;C'ieng Tamlung of C'ieng Mai&lt;/fo:block&gt;
&lt;/fo:block&gt;
</eg>
</div5>

<div5><head>Page numbering and page number reference</head>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;!DOCTYPE doc SYSTEM "pgref.dtd"&gt;
&lt;doc&gt;
  &lt;chapter id="x"&gt;&lt;title&gt;Chapter&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
  &lt;/chapter&gt;
  &lt;chapter&gt;&lt;title&gt;Chapter&lt;/title&gt;
    &lt;p&gt;For a description of X see &lt;ref refid="x"/&gt;.&lt;/p&gt;
  &lt;/chapter&gt;
&lt;/doc&gt;
</eg>
<p>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.</p>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="doc"&gt;
  &lt;fo:root&gt;
    &lt;fo:layout-master-set&gt;
      &lt;fo:simple-page-master master-name="page"
        page-height="297mm" page-width="210mm"
        margin-top="20mm" margin-bottom="10mm"
        margin-left="25mm" margin-right="25mm"&gt;
        &lt;fo:region-body
          margin-top="0mm" margin-bottom="15mm"
          margin-left="0mm" margin-right="0mm"/&gt;
        &lt;fo:region-after extent="10mm"/&gt;
      &lt;/fo:simple-page-master&gt;
    &lt;/fo:layout-master-set&gt;
    &lt;fo:page-sequence master-name="page"&gt;
      &lt;fo:static-content flow-name="xsl-region-after"&gt;
        &lt;fo:block&gt;
          &lt;xsl:text&gt;Page &lt;/xsl:text&gt;
          &lt;fo:page-number/&gt;
        &lt;/fo:block&gt;
      &lt;/fo:static-content&gt;
      &lt;fo:flow flow-name="xsl-region-body"&gt;
        &lt;xsl:apply-templates/&gt;
      &lt;/fo:flow&gt;
    &lt;/fo:page-sequence&gt;
  &lt;/fo:root&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="chapter/title"&gt;
  &lt;fo:block id="{generate-id(.)}"&gt;
    &lt;xsl:number level="multiple" count="chapter" format="1. "/&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="p"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="ref"&gt;
  &lt;xsl:text&gt;page &lt;/xsl:text&gt;
  &lt;fo:page-number-citation refid="{generate-id(id(@refid)/title)}"/&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:root&gt;
  &lt;fo:layout-master-set&gt;
    &lt;fo:simple-page-master master-name="page"
      page-height="297mm" page-width="210mm"
      margin-top="20mm" margin-bottom="10mm"
      margin-left="25mm" margin-right="25mm"&gt;
      &lt;fo:region-body margin-top="0mm" margin-bottom="15mm"
        margin-left="0mm" margin-right="0mm"/&gt;
      &lt;fo:region-after extent="10mm"/&gt;
    &lt;/fo:simple-page-master&gt;
  &lt;/fo:layout-master-set&gt;
  &lt;fo:page-sequence master-name="page"&gt;
    &lt;fo:static-content flow-name="xsl-region-after"&gt;
      &lt;fo:block&gt;Page &lt;fo:page-number/&gt;
      &lt;/fo:block&gt;
    &lt;/fo:static-content&gt;
    &lt;fo:flow flow-name="xsl-region-body"&gt;
      &lt;fo:block id="N5"&gt;1. Chapter&lt;/fo:block&gt;
      &lt;fo:block&gt;Text&lt;/fo:block&gt;
      &lt;fo:block id="N13"&gt;2. Chapter&lt;/fo:block&gt;
      &lt;fo:block&gt;For a description of X see page &lt;fo:page-number-citation refid="N5"/&gt;
      &lt;/fo:block&gt;
    &lt;/fo:flow&gt;
  &lt;/fo:page-sequence&gt;
&lt;/fo:root&gt;
</eg>
</div5>

</div4>
</div3>


<div3 id="fo_bidi-override"><head>fo:bidi-override</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:bidi-override formatting object generates one or more
<term>normal</term> <term>inline-area</term>s.
The fo:bidi-override returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:bidi-override.</p>

<p><emph>Trait Derivation:</emph></p>
<p>The direction traits are derived from the "writing-mode",
"direction", and "unicode-bidi" properties as described in
<specref ref="refine-writing-mode"/>.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:bidi-override formatting object.</p>
<p>The children of each normal area returned by an fo:bidi-override
must satisfy the constraints specified in <specref ref="area-inlinebuild"/>.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p><spot id="fo0001_16a"/>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="direction"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="score-spaces"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="text-transform"/></sitem>
<sitem><specref ref="unicode-bidi"/></sitem>
<sitem><specref ref="word-spacing"/></sitem>
</slist>
</div3>


<div3 id="fo_character"><head>fo:character</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:character flow object represents a character that
is mapped to
a glyph for presentation. It is an atomic unit to the formatter.</p>
<p>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 <spot id="c11i61"/>semantics of an "auto" value for character properties, which is
typically their initial value,
are based on the Unicode codepoint. Overrides may be specified in
an implementation-specific manner.
</p>
<note>
<p>In a stylesheet the explicit creation of an fo:character may be
used to explicitly override the default mapping.</p>
</note>
<p><spot id="i18n_5a"/>Unicode Special-use tag characters on
Plane 14 need not be supported.</p>
<note><p>Unicode TR20 (<bibref ref="UNICODE-TR20"/>), in fact, plans
to declare very clearly that they are not suitable together with
markup.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:character formatting object generates and returns
a single <term>normal</term> <term>inline-area</term>.</p>

<p><emph>Constraints:</emph></p>
<p>The dimensions of the area is determined by the font metrics for
the glyph.</p>
<p>When formatting an fo:character with a "treat-as-wordspace" value
of "yes", the User Agent may use a different method for determining
the <trait>inline-progression-dimension</trait> of the area.</p>
<note><p><spot id="fo0001_10a"/>Such methods typically make use of
a word-space value stored in the font, or
a formatter defined word-space value.</p>
</note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="common-hyphenation-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="treat-as-word-space"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="character"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="font-height-override-after"/></sitem>
<sitem><specref ref="font-height-override-before"/></sitem>
<sitem><specref ref="glyph-orientation-horizontal"/></sitem>
<sitem><specref ref="glyph-orientation-vertical"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="score-spaces"/></sitem>
<sitem><specref ref="suppress-at-line-break"/></sitem>
<sitem><specref ref="text-decoration"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="text-transform"/></sitem>

<sitem><specref ref="word-spacing"/></sitem>
</slist>
</div3>


<div3 id="fo_initial-property-set"><head>fo:initial-property-set</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:initial-property-set auxiliary formatting object
specifies formatting properties
for the first line of an fo:block.</p>
<note><p>It is analogous to the CSS first-line pseudo-element.</p>
<p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>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 <trait>is-first</trait> trait and that was
generated by the parent fo:block of the fo:initial-property-set.
</p>

<p><emph>Trait Derivation:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>None.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="score-spaces"/></sitem>
<sitem><specref ref="text-decoration"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="text-transform"/></sitem>
<sitem><specref ref="word-spacing"/></sitem>
</slist>
</div3>


<div3 id="fo_external-graphic"><head>fo:external-graphic</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:external-graphic flow object is used for a
<spot id="aj000035_29b"/>graphic where the graphics data resides outside of the fo:element tree.</p>

<p><emph>Areas:</emph></p>
<p>The fo:external-graphic
formatting object generates and returns one inline-level
viewport-area and one reference-area containing the external graphic.</p>
<note><p><spot id="aj000035_30"/>An fo:external-graphic may be block-level
by enclosing it in an fo:block.</p>
</note>

<p><emph>Constraints:</emph></p>
<p>The viewport's size is determined by the
<trait>height</trait> and <trait>width</trait> traits.
For values of "auto", the content size of the graphic is used.
</p>
<p>The content size of a graphic is determined by taking the
intrinsic size of the graphic and scaling as specified by the
<trait>content-height</trait>, <trait>content-width</trait>,
and <trait>scaling</trait> 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.
</p>
<p>Once scaled, the reference-area
is aligned with respect to the viewport-area
using the <trait>text-align</trait> and
<spot id="fo0001ab_da"/><trait>display-align</trait>
traits. If it is too large for the viewport-area,
the graphic is aligned as if it would fit and the <trait>overflow</trait>
trait controls the clipping, scroll bars, etc.
</p>
<p>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.</p>
<note><p>For example, using a size of 1/96" as the size of one pixel
for rasterized images.</p>
</note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="text-align"/></sitem>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="content-height"/></sitem>
<sitem><specref ref="content-type"/></sitem>
<sitem><specref ref="content-width"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="scaling"/></sitem>
<sitem><specref ref="scaling-method"/></sitem>
<sitem><specref ref="src"/></sitem>
<sitem><specref ref="text-align"/></sitem>

<sitem><specref ref="width"/></sitem>
</slist>
</div3>


<div3 id="fo_instream-foreign-object"><head>fo:instream-foreign-object</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>
<note>
<p>A common format is SVG.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:instream-foreign-object
formatting object generates and returns one inline
viewport-area and one reference-area containing the instream-foreign-object.</p>

<p><emph>Constraints:</emph></p>
<p><spot id="aj000035_31"/>The viewport's size is determined by the
<trait>height</trait> and <trait>width</trait> traits.
For values of "auto", the content size of the instream foreign object is used.
</p>
<p>The content size of an instream-foreign-object is determined by taking the
intrinsic size of the object and scaling as specified by the
<trait>content-height</trait>, <trait>content-width</trait>,
and <trait>scaling</trait> 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.
</p>
<p>Once scaled, the reference-area
is aligned with respect to the viewport-area
using the <trait>text-align</trait> and
<spot id="fo0001ab_db"/><trait>display-align</trait>
traits. If it is too large for the viewport-area,
the instream-foreign-object is aligned as if it would fit and the <trait>overflow</trait>
trait controls the clipping, scroll bars, etc.
</p>
<p>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.</p>

<p><emph>Contents:</emph></p>
<p>The fo:instream-foreign-object flow object has
<spot id="fo01jr_3a"/>a child from a non-XSL
namespace. The permitted structure of <spot id="fo01jr_3b"/>this child is that
defined for that namespace.
</p>
<p>The fo:instream-foreign-object flow object may have additional attributes
in the non-XSL namespace. These,
<spot id="c19i1"/>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.
</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="content-height"/></sitem>
<sitem><specref ref="content-type"/></sitem>
<sitem><specref ref="content-width"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="scaling"/></sitem>
<sitem><specref ref="scaling-method"/></sitem>
<sitem><specref ref="text-align"/></sitem>

<sitem><specref ref="width"/></sitem>
</slist>
</div3>


<div3 id="fo_inline"><head>fo:inline</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:inline formatting object is commonly used for formatting
a portion of text with a background or enclosing it in a border.
</p>

<p><emph>Areas:</emph></p>
<p>The fo:inline formatting object generates one or more
<term>normal</term> <term>inline-area</term>s.
The fo:inline returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:inline.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:inline formatting object.</p>
<p>The children of each normal area returned by an fo:inline
must satisfy the constraints specified in <specref ref="area-inlinebuild"/>.
</p>
<p>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 <specref ref="area_model"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p><spot id="fo0001_16b"/>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="text-decoration"/></sitem>
<sitem><specref ref="visibility"/></sitem>
<sitem><specref ref="z-index"/></sitem>
</slist>
</div3>


<div3 id="fo_inline-container"><head>fo:inline-container</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:inline-container flow object is used to
generate an inline reference-area, typically containing
text blocks with a different writing-mode.
</p>
<note><p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:inline-container formatting object generates one or more
<term>viewport/reference pair</term>s. The viewport-areas generated
by the fo:inline-container are
<term>normal</term> <term>inline-level</term> areas.
The fo:inline-container returns these areas and any
<term>page-level-out-of-line</term> areas
returned by the children of the fo:inline-container.</p>

<p><emph>Trait Derivation:</emph></p>
<p>The areas generated by the fo:inline-container formatting object have
a value of "true" for the <trait>is-reference-area</trait>.</p>
<p>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.</p>
<p><spot id="aj000031_1"/>The values in the baseline-table of
this object are calculated as follows:</p>
<glist>
<gitem><label>baseline</label>
<def><p>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.
</p>
<p>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.
</p>
</def>
</gitem>
<gitem><label>before-edge</label>
<def><p>The alignment-point is at the position of the before-edge of
the allocation rectangle.
</p>
</def>
</gitem>
<gitem><label>text-before-edge</label>
<def><p>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.
</p>
</def>
</gitem>
<gitem><label>middle</label>
<def><p>The alignment-point is at the position that is half way between
the before-edge and after-edge of the allocation rectangle.
</p>
</def>
</gitem>
<gitem><label>after-edge</label>
<def><p>The alignment-point is at the position of the after-edge of
the allocation rectangle.
</p>
</def>
</gitem>
<gitem><label>text-after-edge</label>
<def><p>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.
</p>
</def>
</gitem>
<gitem><label>ideographic</label>
<def><p>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.
</p>
</def>
</gitem>
<gitem><label>alphabetic</label>
<def><p>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.
</p>
</def>
</gitem>
<gitem><label>hanging</label>
<def><p>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.
</p>
</def>
</gitem>
<gitem><label>mathematical</label>
<def><p>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.
</p>
</def>
</gitem>
</glist>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:inline-container formatting object.</p>
<p>The children of each reference-area generated by an fo:inline-container
formatting object
must be normal <term>block-area</term>s returned by the children of the fo:inline-container,
must be <term>properly stacked</term>, and
must be <term>properly ordered</term>.
</p>
<p>Any <term>reference-level-out-of-line</term>
areas returned by the children of the fo:inline-container
are handled as described in <specref ref="fo_float"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="clip"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="overflow"/></sitem>
<sitem><specref ref="reference-orientation"/></sitem>
<sitem><specref ref="relative-position"/></sitem>

<sitem><specref ref="width"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_leader"><head>fo:leader</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:leader formatting object is often used:</p>
<ulist><item><p>in TOCs to generate sequences of "." glyphs that separate
titles from page numbers</p></item>
<item><p>to create entry fields in fill-in-the-blank forms</p></item>
<item><p>to create horizontal rules for use as separators</p></item></ulist>

<p><emph>Areas:</emph></p>
<p>The fo:leader formatting object generates and returns
a single normal <term>inline-area</term>.</p>

<p><emph>Trait Derivation:</emph></p>
<p>If the value of the <trait>leader-pattern</trait> is "use-content"
the <trait>block-progression-dimension</trait> of the content-rectangle is determined
in the same manner as for line-areas; otherwise it is determined by
the <trait>rule-thickness</trait> trait.</p>

<p><emph>Constraints:</emph></p>
<p>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
<trait>overflow</trait> trait.</p>
<p>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 <trait>leader-pattern</trait> trait is "use-content".</p>
<note><p>If the value of the <trait>leader-pattern</trait> trait is "use-content"
and the fo:leader has no children, the leader shall be filled with
blank space.</p></note>
<p>The inline-area generated by the fo:leader has a dimension in the
inline-progression-direction which shall be at least the
<trait>leader-length.minimum</trait> and at most the
<trait>leader-length.maximum</trait>.</p>
<p>For lines-areas that have been specified to be justified, the justified
line-area must honor the <trait>leader-alignment</trait> trait of any inline-areas
generated by fo:leaders.</p>
<p>If the value of the <trait>leader-pattern</trait> trait is "dots" or "use-content",
the following constraint applies:</p>
<p>
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 <trait>leader-pattern</trait> 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
<trait>leader-pattern-width</trait>
and <trait>leader-alignment</trait> traits.<spot id="fo0001_9a"/></p>
<note><p>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.</p></note>
<note><p>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.</p></note>
<note><p>An fo:leader can be wrapped in an fo:block to create a rule for separating
or decorating block-areas.</p></note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>)*
</eg>

<p>The content must not contain an fo:leader, fo:inline-container,
<spot id="fo0001_16ab"/>fo:block-container,
fo:float, fo:footnote, or fo:marker
either as a direct child or as a descendant.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>
<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="color"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="font-height-override-after"/></sitem>
<sitem><specref ref="font-height-override-before"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="leader-alignment"/></sitem>
<sitem><specref ref="leader-length"/></sitem>
<sitem><specref ref="leader-pattern"/></sitem>
<sitem><specref ref="leader-pattern-width"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="rule-style"/></sitem>
<sitem><specref ref="rule-thickness"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="visibility"/></sitem>
<sitem><specref ref="word-spacing"/></sitem>
<sitem><specref ref="z-index"/></sitem>
</slist>
</div3>



<div3 id="fo_page-number"><head>fo:page-number</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:page-number formatting object generates and returns
a single normal <term>inline-area</term>.</p>

<p><emph>Constraints:</emph></p>
<p>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.</p>
<p>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 specified on the ancestor
fo:page-sequence.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="score-spaces"/></sitem>
<sitem><specref ref="text-decoration"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="text-transform"/></sitem>

<sitem><specref ref="word-spacing"/></sitem>
</slist>
</div3>


<div3 id="fo_page-number-citation"><head>fo:page-number-citation</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:page-number-citation is used to reference the
page-number for the page containing the first <term>normal</term>
area returned by the cited formatting
object.</p>
<note>
<p>It may be used to provide the page-numbers in the table of contents,
cross-references, and index entries.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:page-number-citation formatting object generates and returns
a single normal <term>inline-area</term>.</p>

<p><emph>Constraints:</emph></p>
<p>The <term>cited page-number</term> is the number of the page containing,
as a descendant, the
first normal area returned by the formatting object with
an <trait>id</trait> trait matching the <trait>ref-id</trait> trait
of the fo:page-number-citation (the referenced formatting object).</p>
<p>The <term>cited page-number string</term> is obtained by converting the
cited page-number in accordance with the
number to string conversion properties specified on the ancestor
fo:page-sequence of the referenced formatting object.</p>
<p>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.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-font-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="letter-spacing"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="ref-id"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="score-spaces"/></sitem>
<sitem><specref ref="text-decoration"/></sitem>
<sitem><specref ref="text-shadow"/></sitem>
<sitem><specref ref="text-transform"/></sitem>

<sitem><specref ref="word-spacing"/></sitem>
</slist>
</div3>


</div2>

<div2>
<head>Formatting Objects for Tables</head>

<div3><head>Introduction</head>
<p>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.
</p>
<graphic source="TableTree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>

<div4><head>Examples</head>
<div5><head>Simple Table with CALS Column-width Specifications</head>
<p>This example is using a simple, "CALS-like", markup for the
table elements. The column-widths are specificed using the
full CALS column-width specification.</p>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
&lt;table&gt;
&lt;tgroup cols="3"&gt;
&lt;colspec colname="col1" colwidth="1*"/&gt;
&lt;colspec colname="col2" colwidth="2*+2pi"/&gt;
&lt;colspec colname="col3" colwidth="72"/&gt;
&lt;tbody&gt;
&lt;row&gt;
&lt;entry colnum="1" valign="top"&gt;&lt;p&gt;Cell 1&lt;/p&gt;&lt;/entry&gt;
&lt;entry colnum="2" valign="middle" align="center"&gt;&lt;p&gt;Cell 2&lt;/p&gt;&lt;/entry&gt;
&lt;entry colnum="3" align="center"&gt;&lt;p&gt;Cell 3&lt;/p&gt;&lt;/entry&gt;
&lt;/row&gt;
&lt;/tbody&gt;
&lt;/tgroup&gt;
&lt;/table&gt;
&lt;/doc&gt;
</eg>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="p"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="table"&gt;
  &lt;fo:table width="12cm" table-layout="fixed"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:table&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="colspec"&gt;
  &lt;fo:table-column&gt;
    &lt;xsl:attribute name="column-number"&gt;
      &lt;xsl:number count="colspec"/&gt;
    &lt;/xsl:attribute&gt;
    &lt;xsl:attribute name="column-width"&gt;
      &lt;xsl:call-template name="calc.column.width"&gt;
        &lt;xsl:with-param name="colwidth"&gt;
          &lt;xsl:value-of select="@colwidth"/&gt;
        &lt;/xsl:with-param&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:attribute&gt;
  &lt;/fo:table-column&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="tbody"&gt;
  &lt;fo:table-body&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:table-body&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="row"&gt;
  &lt;fo:table-row&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:table-row&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="entry"&gt;
  &lt;fo:table-cell column-number="{@colnum}"&gt;
    &lt;xsl:if test="@valign"&gt;
      &lt;xsl:choose&gt;
        &lt;xsl:when test="@valign='middle'"&gt;
          &lt;xsl:attribute name="display-align"&gt;center&lt;/xsl:attribute&gt;
        &lt;/xsl:when&gt;
        &lt;xsl:otherwise&gt;
          &lt;xsl:attribute name="display-align"&gt;
            &lt;xsl:value-of select="@valign"/&gt;
          &lt;/xsl:attribute&gt;
        &lt;/xsl:otherwise&gt;
      &lt;/xsl:choose&gt;
    &lt;/xsl:if&gt;
    &lt;xsl:if test="@align"&gt;
      &lt;xsl:attribute name="text-align"&gt;
        &lt;xsl:value-of select="@align"/&gt;
      &lt;/xsl:attribute&gt;
    &lt;/xsl:if&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:table-cell&gt;
&lt;/xsl:template&gt;


&lt;xsl:template name="calc.column.width"&gt;
&lt;!-- **
     * &lt;p&gt;Calculate an XSL FO table column-width specification from a
     * CALS table column-width specification.&lt;/p&gt;
     *
     * &lt;p&gt;CALS expresses table column-widths in the following basic
     * forms:&lt;/p&gt;
     *
     * &lt;ul&gt;
     * &lt;li&gt;&lt;b&gt;99.99units&lt;/b&gt;, a fixed length-specifier.&lt;/li&gt;
     * &lt;li&gt;&lt;b&gt;99.99&lt;/b&gt;, a fixed length-specifier without any units.&lt;/li&gt;
     * &lt;li&gt;&lt;b&gt;99.99*&lt;/b&gt;, a relative length-specifier.&lt;/li&gt;
     * &lt;li&gt;&lt;b&gt;99.99*+99.99units&lt;/b&gt;, a combination of both.&lt;/li&gt;
     * &lt;/ul&gt;
     *
     * &lt;p&gt;The CALS units are points (pt), picas (pi), centimeters (cm),
     * millimeters (mm), and inches (in). These are the same units as XSL,
     * except that XSL abbreviates picas "pc" instead of "pi". If a length
     * specifier has no units, the CALS default unit (pt) is assumed.&lt;/p&gt;
     *
     * &lt;p&gt;Relative length-specifiers are represented in XSL with the
     * proportional-column-width() function.&lt;/p&gt;
     *
     * &lt;p&gt;Here are some examples:&lt;/p&gt;
     *
     * &lt;ul&gt;
     * &lt;li&gt;"36pt" becomes "36pt"&lt;/li&gt;
     * &lt;li&gt;"3pi" becomes "3pc"&lt;/li&gt;
     * &lt;li&gt;"36" becomes "36pt"&lt;/li&gt;
     * &lt;li&gt;"3*" becomes "proportional-column-width(3)"&lt;/li&gt;
     * &lt;li&gt;"3*+2pi" becomes "proportional-column-width(3)+2pc"&lt;/li&gt;
     * &lt;li&gt;"1*+2" becomes "proportional-column-width(1)+2pt"&lt;/li&gt;
     * &lt;/ul&gt;
     *
     * @param colwidth The CALS column width specification.
     *
     * @returns The XSL column width specification.
     * --&gt;
  &lt;xsl:param name="colwidth"&gt;1*&lt;/xsl:param&gt;

  &lt;!-- Ok, the colwidth could have any one of the following forms: --&gt;
  &lt;!--        1*       = proportional width --&gt;
  &lt;!--     1unit       = 1.0 units wide --&gt;
  &lt;!--         1       = 1pt wide --&gt;
  &lt;!--  1*+1unit       = proportional width + some fixed width --&gt;
  &lt;!--      1*+1       = proportional width + some fixed width --&gt;

  &lt;!-- If it has a proportional width, translate it to XSL --&gt;
  &lt;xsl:if test="contains($colwidth, '*')"&gt;
    &lt;xsl:text&gt;proportional-column-width(&lt;/xsl:text&gt;
    &lt;xsl:value-of select="substring-before($colwidth, '*')"/&gt;
    &lt;xsl:text&gt;)&lt;/xsl:text&gt;
  &lt;/xsl:if&gt;

  &lt;!-- Now get the non-proportional part of the specification --&gt;
  &lt;xsl:variable name="width-units"&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="contains($colwidth, '*')"&gt;
        &lt;xsl:value-of
             select="normalize-space(substring-after($colwidth, '*'))"/&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;xsl:value-of select="normalize-space($colwidth)"/&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
  &lt;/xsl:variable&gt;

  &lt;!-- Now the width-units could have any one of the following forms: --&gt;
  &lt;!--                 = &lt;empty string&gt; --&gt;
  &lt;!--     1unit       = 1.0 units wide --&gt;
  &lt;!--         1       = 1pt wide --&gt;
  &lt;!-- with an optional leading sign --&gt;

  &lt;!-- Get the width part by blanking out the units part and discarding --&gt;
  &lt;!-- whitespace. --&gt;
  &lt;xsl:variable name="width"
       select="normalize-space(translate($width-units,
                                         '+-0123456789.abcdefghijklmnopqrstuvwxyz',
                                         '+-0123456789.'))"/&gt;

  &lt;!-- Get the units part by blanking out the width part and discarding --&gt;
  &lt;!-- whitespace. --&gt;
  &lt;xsl:variable name="units"
       select="normalize-space(translate($width-units,
                                         'abcdefghijklmnopqrstuvwxyz+-0123456789.',
                                         'abcdefghijklmnopqrstuvwxyz'))"/&gt;

  &lt;!-- Output the width --&gt;
  &lt;xsl:value-of select="$width"/&gt;

  &lt;!-- Output the units, translated appropriately --&gt;
  &lt;xsl:choose&gt;
    &lt;xsl:when test="$units = 'pi'"&gt;pc&lt;/xsl:when&gt;
    &lt;xsl:when test="$units = '' and $width != ''"&gt;pt&lt;/xsl:when&gt;
    &lt;xsl:otherwise&gt;&lt;xsl:value-of select="$units"/&gt;&lt;/xsl:otherwise&gt;
  &lt;/xsl:choose&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:table width="12cm" table-layout="fixed"&gt;
  &lt;fo:table-column column-number="1" column-width="proportional-column-width(1)"&gt;
  &lt;/fo:table-column&gt;
  &lt;fo:table-column column-number="2" column-width="proportional-column-width(2)+2pc"&gt;
  &lt;/fo:table-column&gt;
  &lt;fo:table-column column-number="3" column-width="72pt"&gt;
  &lt;/fo:table-column&gt;
  &lt;fo:table-body&gt;
    &lt;fo:table-row&gt;
      &lt;fo:table-cell column-number="1" display-align="top"&gt;
        &lt;fo:block&gt;Cell 1
        &lt;/fo:block&gt;
      &lt;/fo:table-cell&gt;
      &lt;fo:table-cell column-number="2" display-align="center" text-align="center"&gt;
        &lt;fo:block&gt;Cell 2
        &lt;/fo:block&gt;
      &lt;/fo:table-cell&gt;
      &lt;fo:table-cell column-number="3" text-align="center"&gt;
        &lt;fo:block&gt;Cell 3
        &lt;/fo:block&gt;
      &lt;/fo:table-cell&gt;
    &lt;/fo:table-row&gt;
  &lt;/fo:table-body&gt;
&lt;/fo:table&gt;
</eg>
</div5>
</div4>
</div3>


<div3 id="fo_table-and-caption"><head>fo:table-and-caption</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table-and-caption flow object is used for
formatting a table
together with its caption.</p>
<note><p>A fo:table-and-caption may be placed inline by enclosing
it in an fo:inline-container.</p>
</note>
<note>
<p>This formatting object corresponds to the CSS anonymous
box that encloses the table caption and the table.</p>
</note>

<p><emph>Areas:</emph></p>
<p>The fo:table-and-caption formatting object generates one or more
<term>normal</term> <term>block-area</term>s.
The fo:table-and-caption returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:table-and-caption.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:table-and-caption formatting object.</p>
<p>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
<trait>caption-side</trait> trait.
They are placed relative to the content-rectangle of the generated area
as specified by the <trait>text-align</trait> trait.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-caption" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-caption</loc>?,<loc href="#fo_table" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table</loc>)
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.<spot id="fo_11b"/></p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="caption-side"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_table"><head>fo:table</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table flow object is used for formatting the
tabular material
of a table.</p>
<p>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.</p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:table formatting object generates <spot id="c14i1_a"/>and
returns one or more
<term>normal</term> <term>block-area</term>s.
In addition the fo:table returns any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:table.</p>
<p>The areas generated <spot id="c14i1_b"/>and returned by the fo:table formatting object have
as children:</p>
<ulist>
<item><p>Areas, with only background, corresponding to the
column-groups, columns, and rows.
</p></item>
<item><p>Areas returned by the fo:table-cell formatting objects.</p></item>
</ulist>
<p>These areas have a z-index controlling the rendering order
determined in accordance with 17.5.1 of the CSS2 specification.</p>
<note><p>A cell that is spanned may have a different background in each
of the grid units it occupies.</p>
</note>

<p><emph>Trait Derivation:</emph></p>
<p>The areas generated <spot id="c14i1_c"/>and returned
by the fo:table formatting object have
a value of "true" for the <trait>is-reference-area</trait>.</p>
<p>The column-progression-direction and row-progression-direction are
determined by the <trait>writing-mode</trait> trait. Columns use the
inline-progression-direction, and
rows use the block-progression-direction.
</p>
<p>The method for deriving the border traits for a table is
specified by the "border-collapse" property.</p>
<p>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.
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.</p>
<p>If the value of the "border-collapse" property is "collapse" the border
is determined, for each segment, at the cell level.</p>
<note><p>By specifying an appropriately
high <spot id="aj000036_1a"/>precedence on the border
specification for the fo:table one may ensure that this specification
is the one used on all border segments.</p>
</note>

<p><emph>Constraints:</emph></p>
<p><spot id="fo0001_14a"/>No area may have more than one normal child area
returned by the same fo:table formatting object.</p>
<p>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 <trait>table-layout</trait> and
the <trait>inline-progression-dimension</trait> traits in the following manner:</p>
<glist>
<gitem><label>inline-progression-dimension="auto" table-layout="auto"</label>
<def><p>The automatic table layout shall be used.</p></def>
</gitem>
<gitem><label>inline-progression-dimension="auto" table-layout="fixed"</label>
<def><p>The automatic table layout shall be used.</p></def>
</gitem>
<gitem><label>inline-progression-dimension=&lt;length&gt;
<spot id="aj000035_32a"/>or &lt;percentage&gt; table-layout="auto"</label>
<def><p>The automatic table layout shall be used.</p></def>
</gitem>
<gitem><label>inline-progression-dimension=&lt;length&gt;
<spot id="aj000035_32b"/>or &lt;percentage&gt; table-layout="fixed"</label>
<def><p>The fixed table layout shall be used.</p></def>
</gitem>
</glist>
<p>The automatic table layout and fixed table layout is defined in
17.5.2 of the CSS2 specification.</p>
<p>The method for determining the block-progression-dimension
of the table is
governed by the <trait>block-progression-dimension</trait> trait.</p>
<note><p>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.</p>
</note>
<note><p>The use of the "proportional-column-width()" function is only
permitted when the fixed table layout is used.</p>
<p><spot id="aj000035_32c"/>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.</p>
</note>
<note><p><spot id="fo0001ab_bb"/>The result of using a percentage for
the width may be unpredictable, especially when using the
automatic table layout.
</p></note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-column" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-column</loc>*,<loc href="#fo_table-header" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-header</loc>?,<loc href="#fo_table-footer" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-footer</loc>?,<loc href="#fo_table-body" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-body</loc>+)
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="border-after-precedence"/></sitem>
<sitem><specref ref="border-before-precedence"/></sitem>
<sitem><specref ref="border-collapse"/></sitem>
<sitem><specref ref="border-end-precedence"/></sitem>
<sitem><specref ref="border-separation"/></sitem>
<sitem><specref ref="border-start-precedence"/></sitem>
<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="table-layout"/></sitem>
<sitem><specref ref="table-omit-footer-at-break"/></sitem>
<sitem><specref ref="table-omit-header-at-break"/></sitem>
<sitem><specref ref="width"/></sitem>
<sitem><specref ref="writing-mode"/></sitem>
</slist>
</div3>


<div3 id="fo_table-column"><head>fo:table-column</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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, <spot id="c14i2_a"/>such as background which
affects the areas generated by the fo:table (see <specref ref="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.
</p>

<p><emph>Constraints:</emph></p>
<p>None.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-border-padding-and-background-properties"/><prnote><p><spot id="c17i1_a"/>Only the background properties
from this set applies.</p>
</prnote></sitem>
<sitem><specref ref="column-number"/></sitem>
<sitem><specref ref="column-width"/></sitem>
<sitem><specref ref="number-columns-repeated"/></sitem>
<sitem><specref ref="number-columns-spanned"/></sitem>
<sitem><specref ref="visibility"/></sitem>
</slist>
</div3>


<div3 id="fo_table-caption"><head>fo:table-caption</head>

<p><emph>Common Usage:</emph></p>
<p><spot id="aj000035_24b"/>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. </p>

<p><emph>Areas:</emph></p>
<p>The fo:table-caption formatting object generates one or more
<term>normal</term> <term>reference-area</term>s.
The fo:table-caption returns these reference-areas and any
<term>page-level-out-of-line</term> areas
returned by the children of the fo:table-caption.</p>

<p><emph>Trait Derivation:</emph></p>
<p>The areas generated by the fo:table-caption formatting object have
a value of "true" for the <trait>is-reference-area</trait>.</p>

<p><emph>Constraints:</emph></p>
<p>For the case when the value of the <trait>caption-side</trait>
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.</p>
<p>When the value is "start" or "end" the inline-progression-dimension
of the generated reference-area is constrained by the value of
the <trait>width</trait> trait.</p>
<p><spot id="fo01jr_1"/>When the value is "top", "bottom", "left", or
"right" the value is mapped in the same way as for corresponding
properties (see <specref ref="compcorr"/>) and the property is then
treated as if the corresponding value had been specified.</p>
<p><spot id="fo0001eg_b"/>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 "0".</p>
<p>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-next" property with value "0".</p>
<p>No area may have more than one normal child area
returned by the same fo:table-caption formatting object.</p>
<p>The children of each normal area returned by an fo:table-caption
formatting object
must be normal <term>block-area</term>s returned by the children of
the fo:table-caption,
must be <term>properly stacked</term>, and
must be <term>properly ordered</term>.
</p>
<p>Any <term>reference-level-out-of-line</term>
areas returned by the children of the fo:table-caption
are handled as described in <specref ref="fo_float"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="inline-progression-dimension"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="width"/></sitem>
</slist>
</div3>


<div3 id="fo_table-header"><head>fo:table-header</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table-header formatting object is used to contain
the content
of the table header.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-row" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-row</loc>+|<loc href="#fo_table-cell" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-cell</loc>+)
</eg>

<p>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.
</p>
<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_table-footer"><head>fo:table-footer</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table-footer formatting object is used to contain
the content
of the table footer.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-row" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-row</loc>+|<loc href="#fo_table-cell" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-cell</loc>+)
</eg>

<p>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.
</p>
<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_table-body"><head>fo:table-body</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table-body formatting object is used to contain
the content
of the table body.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-row" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-row</loc>+|<loc href="#fo_table-cell" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-cell</loc>+)
</eg>

<p>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.
</p>
<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_table-row"><head>fo:table-row</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
<spot id="c14i2_b"/>The fo:table-row holds
a specification of some presentation
characteristics, <spot id="c14i2_c"/>such as background which
affects the areas generated by the fo:table (see <specref ref="fo_table"/>).
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>
<p>The method for determining the height of the row in the grid is
governed by the <trait>row-height</trait> trait.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_table-cell" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">table-cell</loc>+)
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/><prnote><p><spot id="c17i1_b"/>Only the background properties
from this set applies.</p>
</prnote></sitem>

<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_table-cell"><head>fo:table-cell</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:table-cell formatting object is used to group
content to be
placed in a <spot id="c11i42_b"/>table cell.</p>
<p><spot id="aj000035_34"/>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:table-cell formatting object generates one or more
<term>normal</term> <term>reference-area</term>s.
The fo:table-cell returns these reference-areas and any
<term>page-level-out-of-line</term> areas
returned by the children of the fo:table-cell.</p>

<p><emph>Trait Derivation:</emph></p>
<p>The areas generated by the fo:table-cell formatting object have
a value of "true" for the <trait>is-reference-area</trait>.</p>
<p>The method for deriving the border for a cell is
specified by the <trait>border-collapse</trait> trait.</p>
<p>If the value of the <trait>border-collapse</trait> 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 <trait>border-separation</trait> trait.
It is filled in accordance with the <trait>background</trait> 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.</p>
<p>If the value of the <trait>border-collapse</trait> 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 highest <spot id="aj000036_1b"/>precedence. It is an error if there are two such
borders that have the same <spot id="aj000036_1c"/>precedence but are not identical.
Each border segment is placed centered on the table grid boundary line.
</p>

<p><emph>Constraints:</emph></p>
<p>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:</p>
<ulist>
<item><p>If the value of the <trait>border-collapse</trait> trait is "separate":
half the value of the <trait>border-separation</trait> trait; otherwise 0.</p>
</item>
<item><p>If the value of the <trait>border-collapse</trait> trait is "separate":
the thickness of the cell-border; otherwise half the thickness of the
effective border.</p>
</item>
<item><p>The cell padding.</p>
</item>
</ulist>
<p>The method for determining the block-progression-dimension
of the cell in the grid is governed by the <trait>row-height</trait> trait.</p>
<p>No area may have more than one normal child area
returned by the same fo:table-cell formatting object.</p>
<p>The children of each normal area returned by an fo:table-cell
formatting object
must be normal <term>block-area</term>s returned by the children of
the fo:table-cell,
must be <term>properly stacked</term>, and
must be <term>properly ordered</term>.
</p>
<p>Any <term>reference-level-out-of-line</term>
areas returned by the children of the fo:table-cell
are handled as described in <specref ref="fo_float"/>.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>
<sitem><specref ref="border-after-precedence"/></sitem>
<sitem><specref ref="border-before-precedence"/></sitem>
<sitem><specref ref="border-end-precedence"/></sitem>
<sitem><specref ref="border-start-precedence"/></sitem>
<sitem><specref ref="block-progression-dimension"/></sitem>
<sitem><specref ref="column-number"/></sitem>
<sitem><specref ref="display-align"/></sitem>
<sitem><specref ref="relative-align"/></sitem>
<sitem><specref ref="empty-cells"/></sitem>
<sitem><specref ref="ends-row"/></sitem>
<sitem><specref ref="height"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="number-columns-spanned"/></sitem>
<sitem><specref ref="number-rows-spanned"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="starts-row"/></sitem>
<sitem><specref ref="width"/></sitem>
</slist>
</div3>


</div2>

<div2>
<head>Formatting Objects for Lists</head>

<div3><head>Introduction</head>
<p>There are four formatting objects used to construct lists:
fo:list-block, fo:list-item, fo:list-item-label, and fo:list-item-body.
</p>
<figure>
<graphic source="ListTree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap><p>Tree representation of the formatting Objects for Lists.</p>
</figcap>
</figure>
<p>The fo:list-block has the role of containing the complete list and
<spot id="c11i63"/>of specifying values used for the list geometry in the
inline-progression-direction (see details below).</p>
<p>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.</p>
<p>The fo:list-item has the role of containing each item in a list.</p>
<p>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 <spot id="c11i64"/>dingbat character, or a term.</p>
<p>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.</p>
<p>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.</p>
<graphic source="ListGeom.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>The specification of the list geometry in the
inline-progression-direction is achieved by:</p>
<ulist>
<item>
<p>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.
</p>
</item>
<item>
<p>Specifying end-indent="label-end()" on the fo:list-item-label.
</p>
<p>Specifying start-indent="body-start()" on the fo:list-item-body.
</p>
<note><p>These list specific functions are defined below.</p>
</note>
</item>
</ulist>
<p>The start-indent of the list-item-label and end-indent of the
list-item-body, if desired, are typically specified as a length.</p>

<div4><head>Examples</head>

<div5><head><spot id="aj000035_35a"/>Enumerated List</head>
<p>The list-items are contained in an "ol"
element. The items are
contained in "item" elements and contain text (as opposed to
paragraphs).</p>
<p>The style is to <spot id="aj000035_35b"/>enumerate the items
alphabetically with a dot after
the letter.</p>
<p><spot id="c11i65"/>Input sample:</p>
<eg xml:space="preserve">
&lt;ol&gt;
&lt;item&gt;List item 1.&lt;/item&gt;
&lt;item&gt;List item 2.&lt;/item&gt;
&lt;item&gt;List item 3.&lt;/item&gt;
&lt;/ol&gt;
</eg>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="ol"&gt;
  &lt;fo:list-block provisional-distance-between-starts="15mm"
   provisional-label-separation="5mm"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:list-block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="ol/item"&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label start-indent="5mm" end-indent="label-end()"&gt;
      &lt;fo:block&gt;
        &lt;xsl:number format="a."/&gt;
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;
        &lt;xsl:apply-templates/&gt;
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:list-block provisional-distance-between-starts="15mm"
  provisional-label-separation="5mm"&gt;

  &lt;fo:list-item&gt;
    &lt;fo:list-item-label start-indent="5mm" end-indent="label-end()"&gt;
      &lt;fo:block&gt;a.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;List item 1.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;

  &lt;fo:list-item&gt;
    &lt;fo:list-item-label start-indent="5mm" end-indent="label-end()"&gt;
      &lt;fo:block&gt;b.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;List item 2.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;

  &lt;fo:list-item&gt;
    &lt;fo:list-item-label start-indent="5mm" end-indent="label-end()"&gt;
      &lt;fo:block&gt;c.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;List item 3.
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;

&lt;/fo:list-block&gt;
</eg>
</div5>

<div5><head>HTML-style "dl" lists</head>
<p>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.</p>
<p>Balanced pairs of "dt"/"dd"s are converted into fo:list-items.
For unbalanced "dt"/"dd"s, the stylesheet makes the
following assumptions:</p>
<ulist>
<item><p>Multiple "dt"s are grouped together into a single
fo:list-item-label in a single list-item.</p></item>
<item><p>Multiple DDs are:</p>
<ulist>
<item><p>Output as individual FO list-items with an empty
list-item-label if the stylesheet variable
$allow-naked-dd is true.</p></item>
<item><p>Are grouped together into a single FO list-item-body if
$allow-naked-dd is false.</p></item>
</ulist>
</item>
</ulist>
<p>In other words, given a structure like this:</p>
<eg xml:space="preserve">
&lt;doc&gt;
&lt;dl&gt;
  &lt;dt&gt;term&lt;/dt&gt;
  &lt;dd&gt;definition&lt;/dd&gt;
  &lt;dt&gt;term&lt;/dt&gt;
  &lt;dt&gt;term&lt;/dt&gt;
  &lt;dd&gt;definition&lt;/dd&gt;
  &lt;dt&gt;term&lt;/dt&gt;
  &lt;dd&gt;definition&lt;/dd&gt;
  &lt;dd&gt;definition&lt;/dd&gt;
&lt;/dl&gt;
&lt;/doc&gt;
</eg>
<p>If $allow-naked-dd is true, the result instance: elements
and attributes in the fo: namespace is:</p>
<eg xml:space="preserve">
&lt;fo:list-block provisional-distance-between-starts="35mm"
  provisional-label-separation="5mm"&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
&lt;/fo:list-block&gt;
</eg>
<p>If $allow-naked-dd is false, the result instance:
elements and attributes in the fo: namespace is:</p>
<eg xml:space="preserve">
&lt;fo:list-block provisional-distance-between-starts="35mm"
  provisional-label-separation="5mm"&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
  &lt;fo:list-item&gt;
    &lt;fo:list-item-label end-indent="label-end()"&gt;
      &lt;fo:block&gt;term
      &lt;/fo:block&gt;
    &lt;/fo:list-item-label&gt;
    &lt;fo:list-item-body start-indent="body-start()"&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
      &lt;fo:block&gt;definition
      &lt;/fo:block&gt;
    &lt;/fo:list-item-body&gt;
  &lt;/fo:list-item&gt;
&lt;/fo:list-block&gt;
</eg>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:include href="dtdd.xsl"/&gt;

&lt;xsl:template match="doc"&gt;
  &lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="dl"&gt;
  &lt;xsl:call-template name="process.dl"/&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="dt|dd"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Included stylesheet "dtdd.xsl"</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:variable name="allow-naked-dd" select="true()"/&gt;

&lt;xsl:template name="process.dl"&gt;
  &lt;fo:list-block provisional-distance-between-starts="35mm"
   provisional-label-separation="5mm"&gt;
    &lt;xsl:choose&gt;
      &lt;xsl:when test="$allow-naked-dd"&gt;
        &lt;xsl:call-template name="process.dl.content.with.naked.dd"/&gt;
      &lt;/xsl:when&gt;
      &lt;xsl:otherwise&gt;
        &lt;xsl:call-template name="process.dl.content"/&gt;
      &lt;/xsl:otherwise&gt;
    &lt;/xsl:choose&gt;
  &lt;/fo:list-block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template name="process.dl.content.with.naked.dd"&gt;
  &lt;xsl:param name="dts" select="./force-list-to-be-empty"/&gt;
  &lt;xsl:param name="nodes" select="*"/&gt;

  &lt;xsl:choose&gt;
    &lt;xsl:when test="count($nodes)=0"&gt;
      &lt;!-- Out of nodes, output any pending DTs --&gt;
      &lt;xsl:if test="count($dts)&gt;0"&gt;
        &lt;fo:list-item&gt;
          &lt;fo:list-item-label end-indent="label-end()"&gt;
            &lt;xsl:apply-templates select="$dts"/&gt;
          &lt;/fo:list-item-label&gt;
          &lt;fo:list-item-body start-indent="body-start()"/&gt;
        &lt;/fo:list-item&gt;
      &lt;/xsl:if&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:when test="name($nodes[1])='dd'"&gt;
      &lt;!-- We found a DD, output the DTs and the DD --&gt;
      &lt;fo:list-item&gt;
        &lt;fo:list-item-label end-indent="label-end()"&gt;
          &lt;xsl:apply-templates select="$dts"/&gt;
        &lt;/fo:list-item-label&gt;
        &lt;fo:list-item-body start-indent="body-start()"&gt;
          &lt;xsl:apply-templates select="$nodes[1]"/&gt;
        &lt;/fo:list-item-body&gt;
      &lt;/fo:list-item&gt;
      &lt;xsl:call-template name="process.dl.content.with.naked.dd"&gt;
        &lt;xsl:with-param name="nodes" select="$nodes[position()&gt;1]"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:when test="name($nodes[1])='dt'"&gt;
      &lt;!-- We found a DT, add it to the list of DTs and loop --&gt;
      &lt;xsl:call-template name="process.dl.content.with.naked.dd"&gt;
        &lt;xsl:with-param name="dts" select="$dts|$nodes[1]"/&gt;
        &lt;xsl:with-param name="nodes" select="$nodes[position()&gt;1]"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:otherwise&gt;
      &lt;!-- This shouldn't happen --&gt;
      &lt;xsl:message&gt;
        &lt;xsl:text&gt;DT/DD list contained something bogus (&lt;/xsl:text&gt;
        &lt;xsl:value-of select="name($nodes[1])"/&gt;
        &lt;xsl:text&gt;).&lt;/xsl:text&gt;
      &lt;/xsl:message&gt;
    &lt;/xsl:otherwise&gt;
  &lt;/xsl:choose&gt;
&lt;/xsl:template&gt;

&lt;xsl:template name="process.dl.content"&gt;
  &lt;xsl:param name="dts" select="./force-list-to-be-empty"/&gt;
  &lt;xsl:param name="dds" select="./force-list-to-be-empty"/&gt;
  &lt;xsl:param name="output-on"&gt;&lt;/xsl:param&gt;
  &lt;xsl:param name="nodes" select="*"/&gt;

  &lt;!-- The algorithm here is to build up a list of DTs and DDs, --&gt;
  &lt;!-- outputing them only on the transition from DD back to DT --&gt;

  &lt;xsl:choose&gt;
    &lt;xsl:when test="count($nodes)=0"&gt;
      &lt;!-- Out of nodes, output any pending elements --&gt;
      &lt;xsl:if test="count($dts)&gt;0 or count($dds)&gt;0"&gt;
        &lt;fo:list-item&gt;
          &lt;fo:list-item-label end-indent="label-end()"&gt;
            &lt;xsl:apply-templates select="$dts"/&gt;
          &lt;/fo:list-item-label&gt;
          &lt;fo:list-item-body start-indent="body-start()"&gt;
            &lt;xsl:apply-templates select="$dds"/&gt;
          &lt;/fo:list-item-body&gt;
        &lt;/fo:list-item&gt;
      &lt;/xsl:if&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:when test="name($nodes[1])=$output-on"&gt;
      &lt;!-- We're making the transition from DD back to DT --&gt;
      &lt;fo:list-item&gt;
        &lt;fo:list-item-label end-indent="label-end()"&gt;
          &lt;xsl:apply-templates select="$dts"/&gt;
        &lt;/fo:list-item-label&gt;
        &lt;fo:list-item-body start-indent="body-start()"&gt;
          &lt;xsl:apply-templates select="$dds"/&gt;
        &lt;/fo:list-item-body&gt;
      &lt;/fo:list-item&gt;

      &lt;!-- Reprocess this node (and the rest of the node list) --&gt;
      &lt;!-- resetting the output-on state to nil --&gt;
      &lt;xsl:call-template name="process.dl.content"&gt;
        &lt;xsl:with-param name="nodes" select="$nodes"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:when test="name($nodes[1])='dt'"&gt;
      &lt;!-- We found a DT, add it to the list and loop --&gt;
      &lt;xsl:call-template name="process.dl.content"&gt;
        &lt;xsl:with-param name="dts" select="$dts|$nodes[1]"/&gt;
        &lt;xsl:with-param name="dds" select="$dds"/&gt;
        &lt;xsl:with-param name="nodes" select="$nodes[position()&gt;1]"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:when test="name($nodes[1])='dd'"&gt;
      &lt;!-- We found a DD, add it to the list and loop, noting that --&gt;
      &lt;!-- the next time we cross back to DT's, we need to output the --&gt;
      &lt;!-- current DT/DDs. --&gt;
      &lt;xsl:call-template name="process.dl.content"&gt;
        &lt;xsl:with-param name="dts" select="$dts"/&gt;
        &lt;xsl:with-param name="dds" select="$dds|$nodes[1]"/&gt;
        &lt;xsl:with-param name="output-on"&gt;dt&lt;/xsl:with-param&gt;
        &lt;xsl:with-param name="nodes" select="$nodes[position()&gt;1]"/&gt;
      &lt;/xsl:call-template&gt;
    &lt;/xsl:when&gt;

    &lt;xsl:otherwise&gt;
      &lt;!-- This shouldn't happen --&gt;
      &lt;xsl:message&gt;
        &lt;xsl:text&gt;DT/DD list contained something bogus (&lt;/xsl:text&gt;
        &lt;xsl:value-of select="name($nodes[1])"/&gt;
        &lt;xsl:text&gt;).&lt;/xsl:text&gt;
      &lt;/xsl:message&gt;
    &lt;/xsl:otherwise&gt;
  &lt;/xsl:choose&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>The "dtdd.xsl" stylesheet may be customized in the following ways:</p>
<ulist>
<item><p>Set the value of $allow-naked-dd to control the processing of unbalanced
"dd"s.</p></item>
<item>
<p>Change "dt" to the name of the element
which is a term in the list.</p></item>
<item>
<p>Change "dd" to the name of the element
which is a definition in the list.</p></item>
<item>
<p>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.</p>
</item>
</ulist>
<p>In the stylesheet using the "dtdd.xsl" stylesheet change the "dl"
to the name of the element which is the wrapper for the list.</p>
</div5>
</div4>
</div3>


<div3 id="fo_list-block"><head>fo:list-block</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:list-block flow object is used to format a list.</p>

<p><emph>Areas:</emph></p>
<p>The fo:list-block formatting object generates one or more
<term>normal</term> <term>block-area</term>s.
The fo:list-block returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:list-block.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:list-block formatting object.</p>
<p>The children of each normal area returned by an fo:list-block
formatting object
must be normal <term>block-area</term>s returned by the children of the fo:list-block,
must be <term>properly stacked</term>, and
must be <term>properly ordered</term>.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_list-item" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">list-item</loc>+)
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="provisional-distance-between-starts"/></sitem>
<sitem><specref ref="provisional-label-separation"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_list-item"><head>fo:list-item</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:list-item formatting object contains the label and the
body of an item in a list.</p>

<p><emph>Areas:</emph></p>
<p>The fo:list-item formatting object generates one or more
<term>normal</term> <term>block-area</term>s.
The fo:list-item returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:list-item.</p>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:list-item formatting object.</p>
<p>The children of each normal area returned by an fo:list-block
formatting object must be normal <term>block-area</term>s returned by
the fo:list-item-label and the fo:list-item-body flow objects and
must be <term>properly ordered</term>.
Those returned by the fo:list-item-label
must be <term>properly stacked</term> and
those returned by the fo:list-item-body
must be <term>properly stacked</term>.
</p>
<p>The children of each normal area returned by an fo:list-block
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 <trait>relative-align</trait> trait.</p>
<p>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.
</p>
<note><p>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.</p>
</note>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_list-item-label" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">list-item-label</loc>,<loc href="#fo_list-item-body" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">list-item-body</loc>)
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-block"/></sitem>
<sitem><specref ref="break-after"/></sitem>
<sitem><specref ref="break-before"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>

<sitem><specref ref="relative-align"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
</slist>
</div3>


<div3 id="fo_list-item-body"><head>fo:list-item-body</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:list-item-body formatting object contains the
content
of the body of a list-item.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
</slist>
</div3>


<div3 id="fo_list-item-label"><head>fo:list-item-label</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
</slist>
</div3>


</div2>

<div2>
<head><spot id="link01_i6a"/>Dynamic Effects: Link and Multi Formatting Objects</head>

<div3><head>Introduction</head>
<p><spot id="link01_i6b"/>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:</p>
<ulist>
<item><p>One-directional single-target links.</p>
</item>
<item><p>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.
</p>
</item>
<item><p>The ability to switch between different property values, such
as color or font-weight, depending on a User Agent state, such as "hover".
</p>
</item>
</ulist>

<p>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.
</p>
<graphic source="MultiSTree.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<p>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.</p>

<p>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.</p>

<div4><head>Examples</head>

<div5><head>Expandable/Collapsible Table of Contents</head>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
  &lt;chapter&gt;&lt;title&gt;Chapter&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;section&gt;&lt;title&gt;Section&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;/section&gt;
    &lt;section&gt;&lt;title&gt;Section&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;/section&gt;
  &lt;/chapter&gt;
  &lt;chapter&gt;&lt;title&gt;Chapter&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;section&gt;&lt;title&gt;Section&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;/section&gt;
    &lt;section&gt;&lt;title&gt;Section&lt;/title&gt;
    &lt;p&gt;Text&lt;/p&gt;
    &lt;/section&gt;
  &lt;/chapter&gt;
&lt;/doc&gt;
</eg>
<p>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.</p>
<p>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.</p>
<p>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
<spot id="link01_i5b"/>fo:basic-link referring to that id.</p>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="doc"&gt;
  &lt;!-- create the table of contents --&gt;
  &lt;xsl:apply-templates select="chapter/title" mode="toc"/&gt;
  &lt;!-- do the document --&gt;
  &lt;xsl:apply-templates/&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="chapter/title" mode="toc"&gt;
  &lt;fo:multi-switch&gt;
    &lt;fo:multi-case case-name="collapsed" case-title="collapsed"
    starting-state="show"&gt;
      &lt;fo:block&gt;
        &lt;fo:multi-toggle switch-to="expanded"&gt;
          &lt;fo:external-graphic href="plus-icon.gif"/&gt;
        &lt;/fo:multi-toggle&gt;
        &lt;fo:basic-link internal-destination="{generate-id(.)}"&gt;
          &lt;xsl:number level="multiple" count="chapter" format="1. "/&gt;
          &lt;xsl:apply-templates mode="toc"/&gt;
        &lt;/fo:basic-link&gt;
      &lt;/fo:block&gt;
    &lt;/fo:multi-case&gt;
    &lt;fo:multi-case case-name="expanded" case-title="expanded"
    starting-state="hide"&gt;
      &lt;fo:block&gt;
        &lt;fo:multi-toggle switch-to="collapsed"&gt;
          &lt;fo:external-graphic href="minus-icon.gif"/&gt;
        &lt;/fo:multi-toggle&gt;
        &lt;fo:basic-link internal-destination="{generate-id(.)}"&gt;
          &lt;xsl:number level="multiple" count="chapter" format="1. "/&gt;
          &lt;xsl:apply-templates mode="toc"/&gt;
        &lt;/fo:basic-link&gt;
      &lt;/fo:block&gt;
      &lt;xsl:apply-templates select="../section/title" mode="toc"/&gt;
    &lt;/fo:multi-case&gt;
  &lt;/fo:multi-switch&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="section/title" mode="toc"&gt;
  &lt;fo:block start-indent="10mm"&gt;
    &lt;fo:basic-link internal-destination="{generate-id(.)}"&gt;
      &lt;xsl:number level="multiple" count="chapter|section" format="1.1 "/&gt;
      &lt;xsl:apply-templates/&gt;
    &lt;/fo:basic-link&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="chapter/title"&gt;
  &lt;fo:block id="{generate-id(.)}"&gt;
    &lt;xsl:number level="multiple" count="chapter" format="1. "/&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="section/title"&gt;
  &lt;fo:block id="{generate-id(.)}"&gt;
    &lt;xsl:number level="multiple" count="chapter|section" format="1.1 "/&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="p"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:multi-switch&gt;
  &lt;fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show"&gt;
    &lt;fo:block&gt;
      &lt;fo:multi-toggle switch-to="expanded"&gt;
        &lt;fo:external-graphic href="plus-icon.gif"&gt;
        &lt;/fo:external-graphic&gt;
      &lt;/fo:multi-toggle&gt;
      &lt;fo:basic-link internal-destination="N4"&gt;1. Chapter
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
  &lt;/fo:multi-case&gt;
  &lt;fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide"&gt;
    &lt;fo:block&gt;
      &lt;fo:multi-toggle switch-to="collapsed"&gt;
        &lt;fo:external-graphic href="minus-icon.gif"&gt;
        &lt;/fo:external-graphic&gt;
      &lt;/fo:multi-toggle&gt;
      &lt;fo:basic-link internal-destination="N4"&gt;1. Chapter
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
    &lt;fo:block start-indent="10mm"&gt;
      &lt;fo:basic-link internal-destination="N11"&gt;1.1 Section
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
    &lt;fo:block start-indent="10mm"&gt;
      &lt;fo:basic-link internal-destination="N19"&gt;1.2 Section
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
  &lt;/fo:multi-case&gt;
&lt;/fo:multi-switch&gt;
&lt;fo:multi-switch&gt;
  &lt;fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show"&gt;
    &lt;fo:block&gt;
      &lt;fo:multi-toggle switch-to="expanded"&gt;
        &lt;fo:external-graphic href="plus-icon.gif"&gt;
        &lt;/fo:external-graphic&gt;
      &lt;/fo:multi-toggle&gt;
      &lt;fo:basic-link internal-destination="N28"&gt;2. Chapter
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
  &lt;/fo:multi-case&gt;
  &lt;fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide"&gt;
    &lt;fo:block&gt;
      &lt;fo:multi-toggle switch-to="collapsed"&gt;
        &lt;fo:external-graphic href="minus-icon.gif"&gt;
        &lt;/fo:external-graphic&gt;
      &lt;/fo:multi-toggle&gt;
      &lt;fo:basic-link internal-destination="N28"&gt;2. Chapter
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
    &lt;fo:block start-indent="10mm"&gt;
      &lt;fo:basic-link internal-destination="N35"&gt;2.1 Section
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
    &lt;fo:block start-indent="10mm"&gt;
      &lt;fo:basic-link internal-destination="N43"&gt;2.2 Section
      &lt;/fo:basic-link&gt;
    &lt;/fo:block&gt;
  &lt;/fo:multi-case&gt;
&lt;/fo:multi-switch&gt;

&lt;fo:block id="N4"&gt;1. Chapter
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
&lt;fo:block id="N11"&gt;1.1 Section
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
&lt;fo:block id="N19"&gt;1.2 Section
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
&lt;fo:block id="N28"&gt;2. Chapter
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
&lt;fo:block id="N35"&gt;2.1 Section
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
&lt;fo:block id="N43"&gt;2.2 Section
&lt;/fo:block&gt;
&lt;fo:block&gt;Text
&lt;/fo:block&gt;
</eg>
</div5>

<div5><head><spot id="fo0001eg_a"/>Styling an XLink Based on the Active State</head>
<p><spot id="aj000035_36a"/>Input sample:</p>
<eg xml:space="preserve">
&lt;p&gt;Follow this &lt;xlink:mylink xmlns:xlink="http://www.w3.org/1999/xlink"
        xlink:href="http://www.w3.org/TR"
        xlink:title="An Example"
        xlink:show="new"
        xlink:actuate="onRequest"&gt;link&lt;/xlink:mylink&gt; to access all
TRs of the W3C.&lt;/p&gt;
</eg>
<p>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.</p>
<p><spot id="aj000035_36b"/>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="p"&gt;
    &lt;fo:block&gt;
        &lt;xsl:apply-templates/&gt;
    &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="xlink:mylink" xmlns:xlink="http://www.w3.org/1999/xlink"&gt;
    &lt;xsl:variable name="show"&gt;&lt;xsl:value-of select="@xlink:show"/&gt;
    &lt;/xsl:variable&gt;
     &lt;fo:multi-properties text-decoration="underline"&gt;
        &lt;fo:multi-property-set active-state="link" color="blue"/&gt;
        &lt;fo:multi-property-set active-state="visited" color="red"/&gt;
        &lt;fo:multi-property-set active-state="active" color="green"/&gt;
        &lt;fo:multi-property-set active-state="hover" text-decoration="blink"/&gt;
        &lt;fo:multi-property-set active-state="focus" color="yellow"/&gt;
        &lt;fo:wrapper color="merge-property-values()"
                    text-decoration="merge-property-values()"&gt;
              &lt;fo:basic-link external-destination="http://www.w3.org/TR"
                              show-destination="{$show}"&gt;
                  &lt;xsl:attribute name="role"&gt;
                      &lt;xsl:value-of select="@xlink:title"/&gt;
                  &lt;/xsl:attribute&gt;
                  &lt;xsl:apply-templates/&gt;
              &lt;/fo:basic-link&gt;
        &lt;/fo:wrapper&gt;
      &lt;/fo:multi-properties&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p><spot id="aj000035_36c"/>Result Instance: elements and attributes in the fo:
namespace</p>
<eg xml:space="preserve">
&lt;fo:block"&gt;Follow this
  &lt;fo:multi-properties text-decoration="underline"&gt;
    &lt;fo:multi-property-set active-state="link" color="blue"&gt;
    &lt;/fo:multi-property-set&gt;
    &lt;fo:multi-property-set active-state="visited" color="red"&gt;
    &lt;/fo:multi-property-set&gt;
    &lt;fo:multi-property-set active-state="active" color="green"&gt;
    &lt;/fo:multi-property-set&gt;
    &lt;fo:multi-property-set active-state="hover" text-decoration="blink"&gt;
    &lt;/fo:multi-property-set&gt;
    &lt;fo:multi-property-set active-state="focus" color="yellow"&gt;
    &lt;/fo:multi-property-set&gt;
    &lt;fo:wrapper color="merge-property-values()"
      text-decoration="merge-property-values()"&gt;
      &lt;fo:basic-link external-destination="http://www.w3.org/TR"
        show-destination="new" role="An Example"&gt;link
      &lt;/fo:basic-link&gt;
    &lt;/fo:wrapper&gt;
  &lt;/fo:multi-properties&gt; to access all
TRs of the W3C.
&lt;/fo:block&gt;
</eg>
</div5>

</div4>
</div3>


<div3 id="fo_basic-link"><head>fo:basic-link</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:basic-link formatting object generates one or more
<term>normal</term> inline-areas.
The fo:basic-link returns these areas, any
<term>page-level-out-of-line</term> areas, and
any <term>reference-level-out-of-line</term> areas
returned by the children of the fo:basic-link.</p>
<note><p><spot id="aj000035_37"/>An fo:simple-link can be enclosed in
an fo:block to create a display area.</p>
</note>

<p><emph>Constraints:</emph></p>
<p>No area may have more than one normal child area
returned by the same fo:basic-link formatting object.</p>
<p>The children of each normal area returned by an fo:basic-link
must satisfy the constraints specified in <specref ref="area-inlinebuild"/>.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p>In addition this formatting object may have a sequence of
zero or more fo:markers as its initial children.<spot id="fo_11a"/></p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="common-aural-properties"/></sitem>
<sitem><specref ref="common-border-padding-and-background-properties"/></sitem>

<sitem><specref ref="common-margin-properties-inline"/></sitem>
<sitem><specref ref="alignment-adjust"/></sitem>
<sitem><specref ref="alignment-baseline"/></sitem>
<sitem><specref ref="baseline-shift"/></sitem>
<sitem><specref ref="destination-placement-offset"/></sitem>
<sitem><specref ref="dominant-baseline"/></sitem>
<sitem><specref ref="external-destination"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="indicate-destination"/></sitem>
<sitem><specref ref="internal-destination"/></sitem>
<sitem><specref ref="keep-together"/></sitem>
<sitem><specref ref="keep-with-next"/></sitem>
<sitem><specref ref="keep-with-previous"/></sitem>
<sitem><specref ref="line-height"/></sitem>
<sitem><specref ref="line-height-shift-adjustment"/></sitem>
<sitem><specref ref="relative-position"/></sitem>
<sitem><specref ref="show-destination"/></sitem>
<sitem><specref ref="target-processing-context"/></sitem>
<sitem><specref ref="target-presentation-context"/></sitem>
<sitem><specref ref="target-stylesheet"/></sitem>

</slist></div3>


<div3 id="fo_multi-switch"><head>fo:multi-switch</head>

<p><emph>Common Usage:</emph></p>
<p><spot id="aj000035_22b"/>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.</p>
<p>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.</p>
<p>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.</p>
<note><p>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.</p>
</note>

<p><emph>Areas:</emph></p>
<p>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.</p>

<p><emph>Trait Derivation:</emph></p>
<p><spot id="aj000035_38"/>The <trait>currently-visible-multi-case</trait> trait
has as its initial value a reference
to the first fo:multi-case child that has a value of "show" of the
<trait>starting-state</trait> 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
<trait>currently-visible-multi-case</trait> trait value changes to refer to the
fo:multi-case selected by the "switch-to" property value of the
fo:multi-toggle.  Once the <trait>currently-visible-multi-case</trait> 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.</p>

<p><emph>Constraints:</emph></p>
<p>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.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_multi-case" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">multi-case</loc>+)
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="auto-restore"/></sitem>
<sitem><specref ref="id"/></sitem>
</slist>
</div3>


<div3 id="fo_multi-case"><head>fo:multi-case</head>

<p><emph>Common Usage:</emph></p>
<p><spot id="aj000035_23b"/>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p><spot id="fo01jr_9b"/>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.</p>
<p>This restriction applies recursively.</p>
<note><p>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.</p>
</note>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="starting-state"/></sitem>
<sitem><specref ref="case-name"/></sitem>
<sitem><specref ref="case-title"/></sitem>
</slist>
</div3>


<div3 id="fo_multi-toggle"><head>fo:multi-toggle</head>

<p><emph>Common Usage:</emph></p>
<p>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.
</p>

<p><emph>Areas:</emph></p>
<p>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 <trait>switch-to</trait>
trait with the same value as on the returning fo:multi-toggle.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>
<p>Activating an area returned by an fo:multi-toggle causes a change
to the value of the <trait>currently-visible-multi-case</trait>
of the closest <spot id="aj000035_39"/>ancestor fo:multi-switch.
(See <specref ref="switch-to"/> for how
the <trait>switch-to</trait> value selects an fo:multi-case.)</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>
<p>An fo:multi-toggle is only permitted as a descendant of an
fo:multi-case.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="switch-to"/></sitem>
</slist>
</div3>


<div3 id="fo_multi-properties"><head>fo:multi-properties</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:multi-properties is used to switch between two or more property sets that
are associated with a given portion of content.</p>
<note><p>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.
</p></note>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>


<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_multi-property-set" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">multi-property-set</loc>+,<loc href="#fo_wrapper" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">wrapper</loc>)
</eg>

<p>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.
</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="common-accessibility-properties"/></sitem>
<sitem><specref ref="id"/></sitem>
</slist>
</div3>


<div3 id="fo_multi-property-set"><head>fo:multi-property-set</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Constraints:</emph></p>
<p>None.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="id"/></sitem>
<sitem><specref ref="active-state"/></sitem>
</slist>
</div3>


</div2>

<div2>
<head>Out-of-Line Formatting Objects</head>

<div3><head>Introduction</head>
<div4><head>Floats</head>
<p>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 <specref ref="pg-out-of-line"/>
section of this introduction and in the description of the fo:float
formatting object.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
</div4>
<div4><head>Footnotes</head>
<p>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.</p>
<p>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.</p>
</div4>
<div4 id="pg-out-of-line"><head>Conditional Sub-Regions</head>
<p>The region-body has two conditional sub-regions which implicitly
specify corresponding reference-areas called <term>before-float-reference-area</term> and
<term>footnote-reference-area</term>. 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".
</p>
<p>The conditionally generated areas borrow space in the
<term>block-progression-dimension</term> (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.
</p>
<p>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.
</p>
<p>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 <term>inline-progression-dimension</term> (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.
</p>
<p>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.</p>
<p>If there is a fo:static-content in a page-sequence whose "region-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.</p>
<p>If there is an fo:static-content whose "region-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.</p>
<p>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.
</p>
<p>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.</p>
</div4>

</div3>


<div3 id="fo_float"><head>fo:float</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>The fo:float generates a single normal inline-area with no children,
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".)</p>
<p><spot id="fo01jr_7a"/>Areas with area-class "xsl-side-float" are reference areas.</p>

<p>An area with area-class "xsl-before-float" is placed as a child of
a <spot id="fo01jr_4b"/>before-float-reference-area.</p>

<p><emph>Constraints:</emph></p>
<p>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.</p>
<p>The term <term>anchor-area</term> is used here to mean the normal inline-area generated
by the fo:float.</p>
<p>No area may have more than one child block-area returned by the same
fo:float formatting object.</p>
<p>Areas with area-class "xsl-before-float" must be properly ordered within the
area tree relative to other areas with the same area-class.</p>
<p>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.</p>
<p>The following constraints apply to fo:float formatting objects that generate
areas with area-class "xsl-before-float":</p>
<ulist><item><p>It is an error if the fo:float occurs as a descendant of
<spot id="fo0001_13a"/>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".</p></item>
<item><p>A block-area generated by the fo:float may only be descendant from
a <spot id="fo01jr_4c"/>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.</p></item>
<item><p>The fo:float may not generate any additional block-areas 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 <spot id="fo01jr_4d"/>footnote-reference-area.</p></item>
<item><p>The "clear" property does not apply.</p></item></ulist>
<p>The following constraints apply to fo:float formatting objects that generate
areas with area-class "xsl-side-float":</p>
<ulist>
<item><p><spot id="fo01jr_6c"/>Each block-area generated by
the fo: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.</p>
</item>
<item><p>A block-area generated by one fo:float may not be placed so that
it overlaps another area with area-class "xsl-side-float".</p></item>
<item><p>The description in section 9.5 of <bibref ref="CSS2"/> shall
be used to determine the formatting of the fo:float and the rendering of
normal line-areas that overlap a block-area generated by the fo:float,
with these modifications:</p>
<ulist><item><p>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". </p></item>
<item><p>All references to top and bottom shall be interpreted as their
corresponding writing-mode relative directions "before" and "after".</p></item>
<item><p><spot id="fo01jr_6d"/>The phrase "current line box"
shall be interpreted to mean the
nearest ancestor reference-area of the anchor-area, or a later
reference-area in the same reference-area chain.</p>
</item>
<item><p>The areas generated by the fo:float derive their length in the
inline-progression-dimension intrinsically from their child areas; the
length is not determined by an explicit property value.</p></item>
<item><p><spot id="fo01jr_6e"/>The length of a block-area
generated by the fo:float, in the
inline-progression-direction, increases either the
start-intrusion-adjustment or the end-intrusion-adjustment,
depending on which side the block-area floats to, of each normal
child area of the parent reference-area of the generated block-area,
provide the border-rectangle of the child area overlaps the floated
area in the inline-progression-direction.</p>
</item>
</ulist>
</item></ulist>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>
<p>An fo:float is not permitted to have an fo:float, fo:footnote
or fo:marker as a descendant.</p>
<p>Additionally, an fo:float is not permitted to have as a descendant an
fo:block-container that generates an absolutely positioned area.</p>
<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="float"/></sitem>
<sitem><specref ref="clear"/></sitem>
</slist>
</div3>


<div3 id="fo_footnote"><head>fo:footnote</head>

<p><emph>Common Usage:</emph></p>
<p>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.</p>

<p><emph>Areas:</emph></p>
<p>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.</p>
<p>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 <spot id="fo01jr_4e"/>footnote-reference-area.</p>

<p><emph>Constraints:</emph></p>
<p>The term <term>anchor-area</term> is defined to mean the last area that is
generated and returned by the fo:inline child of the fo:footnote.</p>
<p>A block-area returned by the fo:footnote is only permitted as a descendant from
a <spot id="fo01jr_4f"/>footnote-reference-area that is (a) descendant from a "region-reference-area<spot id="aj000029_68"/>"
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.</p>
<p>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:foonote, 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.</p>
<p>It is an error if the fo:footnote occurs as a descendant of
<spot id="fo0001_13b"/>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.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#fo_inline" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">inline</loc>,<loc href="#fo_footnote-body" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">footnote-body</loc>)
</eg>

<p>An fo:footnote is not permitted to have an fo:float, fo:footnote,
or fo:marker as a descendant.</p>
<p>Additionally, an fo:footnote is not permitted to have as a descendant
an fo:block-container that generates an absolutely positioned area.</p>

</div3>


<div3 id="fo_footnote-body"><head>fo:footnote-body</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:footnote-body is used to generate the footnote content.</p>

<p><emph>Areas:</emph></p>
<p>The fo:footnote-body generates and returns one or more block-level
areas with area-class "xsl-footnote".</p>

<p><emph>Constraints:</emph></p>
<p>The fo:footnote-body is only permitted as a child of an fo:footnote.</p>
<p>No area may have more than one child block-area returned by the same
fo:footnote-body formatting object.</p>
<p>Areas with area-class "xsl-footnote" must be properly ordered within the
area tree relative to other areas with the same area-class.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)+
</eg>

</div3>


</div2>

<div2>
<head>Other Formatting Objects</head>

<div3><head>Introduction</head>
<p>The following example shows the use of the fo:wrapper
formatting object that has no semantics but acts as a
"carrier" for inherited properties.</p>
<div4><head>Example</head>
<p>Input sample:</p>
<eg xml:space="preserve">
&lt;doc&gt;
&lt;p&gt;This is an &lt;emph&gt;important word&lt;/emph&gt; in this
sentence that also refers to a &lt;code&gt;variable&lt;/code&gt;.&lt;/p&gt;
&lt;/doc&gt;
</eg>
<p>The "emph" elements are to be presented using a
bold
font and the "code" elements are using a Courier
font.</p>
<p>XSL Stylesheet:</p>
<eg xml:space="preserve">
&lt;?xml version='1.0'?&gt;
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:fo="http://www.w3.org/1999/XSL/Format"
                version='1.0'&gt;

&lt;xsl:template match="p"&gt;
  &lt;fo:block&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:block&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="emph"&gt;
  &lt;fo:wrapper font-weight="bold"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:wrapper&gt;
&lt;/xsl:template&gt;

&lt;xsl:template match="code"&gt;
  &lt;fo:wrapper font-family="Courier"&gt;
    &lt;xsl:apply-templates/&gt;
  &lt;/fo:wrapper&gt;
&lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;
</eg>
<p>fo: element and attribute tree:</p>
<eg xml:space="preserve">
&lt;fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"&gt;This is an
&lt;fo:wrapper font-weight="bold"&gt;important word&lt;/fo:wrapper&gt;
in this sentence that also refers to a
&lt;fo:wrapper font-family="Courier"&gt;variable&lt;/fo:wrapper&gt;.
&lt;/fo:block&gt;
</eg>
</div4>
</div3>


<div3 id="fo_wrapper"><head>fo:wrapper</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:wrapper formatting object is used to
specify
inherited properties for a group of formatting objects.</p>

<p><emph>Areas:</emph></p>
<p>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.
</p>

<p><emph>Trait Derivation:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>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.
</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>

<p><spot id="fo01jr_9a"/>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:</p>
<ulist>
<item><p>An fo:wrapper may always have a sequence of zero or more
fo:markers as its initial children.</p></item>
<item><p>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.</p></item>
</ulist>
<p>This restriction applies recursively.</p>
<note><p>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.</p>
</note>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="id"/></sitem>
</slist>
</div3>


<div3 id="fo_marker"><head>fo:marker</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:marker is used in conjunction with
fo:retrieve-marker to produce running headers or footers. Typical
examples include:</p>
<ulist>
<item><p>dictionary headers showing the first and last word defined on the page.</p></item>
<item><p>headers showing the page's chapter and section titles.</p></item>
</ulist>
<p><spot id="aj000035_40"/>The fo:marker has to be an initial child
of its parent formatting object.</p>

<p><emph>Areas:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>An fo:marker is only permitted as the descendant of an fo:flow.</p>
<p>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.</p>
<p>It is an error if two or more fo:markers that share the same parent
have the same "marker-class-name" property value.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
(#PCDATA|<loc href="#inline.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%inline;</loc>|<loc href="#block.fo.list" show="replace" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">%block;</loc>)*
</eg>
<p>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.</p>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="marker-class-name"/></sitem>
</slist>
</div3>




<div3 id="fo_retrieve-marker"><head>fo:retrieve-marker</head>

<p><emph>Common Usage:</emph></p>
<p>The fo:retrieve-marker is used in
conjunction with fo:marker to produce running headers or footers.
Typical examples include:</p>
<ulist>
<item><p>dictionary headers showing the first and last word defined on the page.</p></item>
<item><p>headers showing the page's chapter and section titles.</p></item>
</ulist>

<p><emph>Areas:</emph></p>
<p>The fo:retrieve-marker does not directly generate any area.  It is
(conceptually) replaced by the children of the fo:marker that it retrieves.</p>

<p><emph>Trait Derivation:</emph></p>
<p>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.</p>

<p><emph>Constraints:</emph></p>
<p>An fo:retrieve-marker is only permitted as the descendant of an
fo:static-content.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>If the hierarchy of areas is empty, no formatting objects are retrieved.</p>

<p><emph>Contents:</emph></p>
<eg xml:space="preserve">
EMPTY
</eg>

<p><emph>The following properties apply to this formatting object:</emph></p><slist>
<sitem><specref ref="retrieve-class-name"/></sitem>
<sitem><specref ref="retrieve-position"/></sitem>
<sitem><specref ref="retrieve-boundary"/></sitem>
</slist>
</div3>


</div2>

</div1>
<div1 id="pr-section"><head>Formatting Properties</head>
<div2><head>Description of Property Groups</head>
<p>The following sections describe the properties of the XSL
formatting objects. </p>
<p>A number of properties are copied from the CSS2 specification.
In addition, the CSS2 errata all apply.  See <bibref ref="CSS2"/>.</p>
<ulist>

<item><p>The first eight sets of property definitions have been
arranged into groups based on similar functionality
and the fact that they apply to many formatting objects.
In the formatting object descriptions the group name is
referred to rather than referring to the individual properties.</p>
<ulist>

<item><p>Common Absolute Position Properties</p>
<p>This set of properties controls the position and size of formatted
areas with absolute positioning.</p>
</item>

<item><p>Common Aural Properties</p>
<p>This group of properties controls the aural rendition of the
content of a formatting object. They appear on all formatting objects
that contain content and other formatting objects that group other
formatting objects and where that grouping is necessary for
the understanding of the aural rendition. An example of the latter
is fo:table-and-caption.</p>
</item>

<item><p>Common Border, Padding, and Background Properties</p>
<p>This set of properties controls the backgrounds and borders on
the block-areas and inline-areas.</p>
</item>

<item><p>Common Font Properties</p>
<p>This set of properties controls the font selection on all formatting
objects that can contain text.</p>
</item>

<item><p>Common Hyphenation Properties</p>
<p>Control of hyphenation for line-breaking, including
language, script, and country. </p>
</item>

<item><p>Common Margin Properties-Block</p>
<p>These properties set the spacing and indents surrounding block-level
formatting objects.</p>
</item>

<item><p>Common Margin Properties-Inline</p>
<p>These properties set the spacing surrounding inline-level
formatting objects.</p>
</item>

</ulist>
</item>

<item><p>The remaining properties are used on a number of
formatting objects. These are arranged into clusters of similar
functionality to
organize the property descriptions. In the formatting object description
the individual properties are referenced.</p>
<ulist>

<item><p>Area Alignment Properties</p>
<p>Properties that control the alignment of inline-areas
with respect to each other, particularly in relation to
the mixing of different baselines for different scripts.
In addition, there are two properties: "display-align" and
"relative-align" that control the placement of block-areas.
</p>
</item>

<item><p>Area Dimension Properties</p>
<p>Properties that control the dimensions of both
block-areas and inline-areas.
</p>
</item>

<item><p>Block and Line-related Properties</p>
<p>Properties that govern the construction of line-areas and
the placement of these line-areas within containing
block-areas.
</p>
</item>

<item><p>Character Properties</p>
<p>Properties that govern the presentation of text,
including word-spacing, letter-spacing, and
word-space treatment and suppression.</p>
</item>

<item><p>Color-related Properties</p>
<p>Properties that govern color and color-model
selection.</p>
</item>

<item><p>Float-related properties</p>
<p>Properties governing the placement of both
side-floats (start- and end-floats) and before-floats
("top" floats in "lr-tb" writing-mode).</p>
</item>

<item><p>Keeps and Breaks Properties</p>
<p>Properties that control keeps and breaks across pages,
columns, and lines, including widow and orphan control and
keeping content together.</p>
</item>

<item><p>Layout-related Properties</p>
<p>These properties control what is "top"
("reference-orientation") as well as clipping, overflow, and
column-spanning conditions.
</p>
</item>

<item><p>Leader and Rule Properties</p>
<p>Properties governing the construction of leaders and
horizontal rules.</p>
</item>

<item><p>Properties for Links</p>
<p>Properties governing the presentation and actions associated
with links.</p>
</item>

<item><p>Properties for Markers</p>
<p>Properties governing the creation and retrieval of
markers.  Markers are used typically for "dictionary"
headers and footers.</p>
</item>

<item><p>Properties for Number to String Conversions</p>
<p>Properties used in the construction of page-numbers and
other formatter-based numbering.</p>
</item>

<item><p>Pagination and Layout Properties</p>
<p>These properties govern the sequencing, layout, and instantiation
of pages, including: the page size and orientation, sizes of regions
on the page-master, the identification and selection of page-masters,
division of the body region into columns, and the assignment of
content flows to layout regions.</p>
</item>

<item><p>Table Properties</p>
<p>Properties governing the layout and presentation
of tables.</p></item>

<item><p>Writing-mode-related Properties</p>
<p>Properties related to various aspects of
"directionality" and writing-mode influencing
block-progression-direction and
inline-progression-direction. </p></item>

<item><p>Miscellaneous Properties</p>
<p>These properties did not reasonably fit into any of the other
categories.</p>
</item>
</ulist>
</item>

<item><p>Shorthand Properties</p>
<p>Shorthand properties that are part of the complete
conformance set.  Shorthands expand to the individual
properties that may be used in place of shorthands.</p>
</item>
</ulist>
</div2>
<div2 id="cssbox"><head>XSL Areas and the CSS Box Model</head>
<p>This section describes how to interpret property descriptions which
incorporate the CSS2 definition of the same property. In CSS2, "boxes"
are generated by "elements" in the same way that XSL areas are generated
by formatting objects.  Any references in the CSS2 definition to "boxes"
are to be taken as referring to "areas" in the XSL area model, and where
"element" appears in a CSS2 definition it should be taken to refer to a
"formatting object".</p>
<p>The position and size of a box are normally taken to refer to the
position and size of the area's content-rectangle.  Additional
correspondences between the CSS2 Box Model and the XSL Area Model are
contained in the following table.</p>
<table>
<thead align="left" valign="top"><tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">Box</td><td rowspan="1" colspan="1" align="left" valign="top">Area</td></tr></thead>
<tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">top content edge</td><td rowspan="1" colspan="1" align="left" valign="top">top edge of the content-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">padding edge</td><td rowspan="1" colspan="1" align="left" valign="top">padding-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">content area</td><td rowspan="1" colspan="1" align="left" valign="top">interior of the content-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">padding area</td><td rowspan="1" colspan="1" align="left" valign="top">region between the content-rectangle and the padding-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">border area</td><td rowspan="1" colspan="1" align="left" valign="top">region between the padding-rectangle and the border-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">background</td><td rowspan="1" colspan="1" align="left" valign="top">background</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">containing block</td><td rowspan="1" colspan="1" align="left" valign="top">closest ancestor block-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">caption</td><td rowspan="1" colspan="1" align="left" valign="top">area generated by fo:table-caption</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">inline box</td><td rowspan="1" colspan="1" align="left" valign="top">inline-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">line box</td><td rowspan="1" colspan="1" align="left" valign="top">line-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">block box</td><td rowspan="1" colspan="1" align="left" valign="top">block-area which is not a line-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top">page box</td><td rowspan="1" colspan="1" align="left" valign="top">page-area</td></tr>
</tbody>
</table>
<p>Box margins map to area traits in accordance with the description of how
area traits are computed from property values
in <spot id="aj000029_69"/><specref ref="refinement"/>.</p>
</div2>



<div2 id="common-accessibility-properties">
<head>Common Accessibility Properties</head>

<div3 id="source-document"><head><quote>source-document</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19b"/>&lt;uri-specification&gt; [&lt;uri-specification&gt;]* | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p><spot id="aj000035_41b"/>It is used by all formatting objects
that can be contained in fo:flow
or fo:static-content (all formatting objects that can be
directly created from an XML source element).</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>The source document is transient, unknown, or unspecified.</p></def></gitem>
<gitem><label>&lt;uri-specification&gt;</label><def><p>A URI-specification giving a reference to the (sub)resource
used as input to the stylesheet.</p>
</def></gitem></glist>

<p><spot id="wai_2"/>This property provides a pointer back
to the original XML document(s) used
to create this formatting object tree, in accordance with the Dublin Core
definition of "Source" ("A Reference to a resource from which the present
resource is derived."
See: <xspecref href="http://purl.org/DC/documents/rec-dces-19990702.htm" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://purl.org/DC/documents/rec-dces-19990702.htm</xspecref>.)
<spot id="aj000035_41a"/>The value is not validated by and
has no inherent standardized semantics for any XSL processor.
</p>
<p>W3C Accessibility guidelines strongly encourage the use of this property
either on the fo:root or on the first formatting object generated from a
given source document.</p>
<p>The URI reference is useful for alternate renderers (aural readers, etc.)
whenever the structure of the formatting object tree is inappropriate for
that renderer.</p>


</div3>

<div3 id="role"><head><quote>role</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;string&gt; | <spot id="wai_4a"/>&lt;uri-specification&gt; | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p>It is used by all formatting objects that can be
contained in fo:flow
or fo:static-content (all formatting objects that can be
directly created from an XML source element).</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>Indicates that no semantic tag is cited by this
formatting object.</p></def></gitem>
<gitem><label>&lt;string&gt;</label><def><p>The value is a string representing a semantic identifier that
may be used in rendering this formatting object.
</p></def></gitem>
<gitem><label>&lt;uri-specification&gt;</label><def><p><spot id="wai_4b"/>An URI-specification, indicating an
RDF resource <bibref ref="RDF"/>; that is, an XML object that
is syntactically valid with respect to the RDF grammar.</p></def></gitem>
</glist>

<p><spot id="wai_4c"/>This property provides a hint for alternate renderers
(aural readers, etc.) as to the role of the XML element or elements
that were used to construct this formatting object, if one could be
identified during XSLT tree construction.
This information can be used to prepare alternate renderings when
the normal rendering of a formatting object is not appropriate
or satisfactory; for example, the role information can be used to
provide better aural renderings of visually formatted material.</p>
<p>To aid alternate renderers, the &lt;string&gt; value should be
the qualified name (QName <bibref ref="XMLNAMES"/> of the element from which
this formatting object is constructed. If a QName does not provide
sufficient context, the &lt;uri-specification&gt; can be used to identify
an RDF resource that describes the role in more detail.
This RDF resource may be embedded in the result tree and referenced
with a relative URI or fragment identifier,
or the RDF resource may be external to the result tree.
This specification does not define any standard QName
or RDF vocabularies; these are frequently
application area dependent. Other groups, for example the Dublin Core,
have defined such  vocabularies.</p>
<p>This property is not inherited, but all subsidiary nodes of
this formatting object that do not bear a role property should utilize
the same alternate presentation properties. (It is not
inherited because knowledge of the start and end of the formatting object subtree
generated by the element may be needed by the renderer.)</p>


</div3>
</div2>

<div2 id="common-absolute-position-properties">
<head>Common Absolute Position Properties</head>

<div3 id="absolute-position"><head><quote>absolute-position</quote></head>
<css-cited border="thin"><p>A Property Derived from a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | absolute | fixed | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block-container</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>auto</label><def><p>There is no absolute-positioning constraint. Positioning is
in accordance with the relative-position property.</p></def></gitem>
<gitem><label>absolute</label><def><p>The area's position (and possibly size) is specified with
the "left", "right", "top", and "bottom" properties. These properties
specify offsets with respect to the area's containing area. Absolutely
positioned areas are taken out of the normal flow. This means they
have no impact on the layout of later siblings. Also, though absolutely
positioned areas have margins, they do not collapse with any other margins.</p></def></gitem>
<gitem><label>fixed</label><def><p>The area's position is calculated according to the "absolute"
model, but in addition, the area is fixed with respect to some reference.
In the case of continuous media, the area is fixed with respect to
the viewport (and doesn't move when scrolled). In the case of paged
media, the area is fixed with respect to the page, even if that page is
seen through a viewport (in the case of a print-preview, for example).
Authors may wish to specify "fixed" in a media-dependent way. For
instance, an author may want an area to remain at the top <spot id="aj000029_70"/>of the viewport
on the screen, but not at the top of each printed page.</p></def></gitem>
</glist>

<p>The following additional restrictions apply for paged
presentations:</p>
<ulist>
<item><p>Only objects with absolute-position="auto"
may have page/column breaks. </p>
<p>For other values any
keep and break properties are ignored.</p>
</item>
<item><p>The area generated is a descendant of the page-area where the
first area from the object would have been placed had the object had
<spot id="aj000029_71"/>absolute-positon="auto" specified.</p>
</item>
</ulist>

</css-cited>
</div3>


<div3 id="top"><head><quote>top</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">positioned elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-top" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-top</xspecref>.
</p>


<p>The "top" property specifies how far a box's top content edge
is offset below the top edge of the box's containing block.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>See definition of property left (<specref ref="left"/>).</p>



</div3>
<div3 id="right"><head><quote>right</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">positioned elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-right" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-right</xspecref>.
</p>


<p>The "right" property specifies how far a box's right content
edge is offset to the left of the right edge of the box's containing
block.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>See definition of property left (<specref ref="left"/>).</p>


</div3>

<div3 id="bottom"><head><quote>bottom</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">positioned elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-bottom" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-bottom</xspecref>.
</p>


<p>The "bottom" property specifies how far a box's bottom content
edge is offset above the bottom of the box's containing block.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>See definition of property left (<specref ref="left"/>).</p>


</div3>

<div3 id="left"><head><quote>left</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">positioned elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-left" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-left</xspecref>.
</p>


<p>The "left" property specifies how far a box's left content edge
is offset to the right of the left edge of the box's containing
block.</p>
<p>The values of the four (position offset) properties have the
following meanings:</p>
<glist><gitem><label>auto</label><def><p>The effect of this value depends on which of related properties
have the value "auto" as well. See the sections on the width and
height of absolutely positioned, non-replaced elements for details.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>The offset is a fixed distance from the reference edge.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The offset is a percentage of the containing block's width
(for "left" or "right") or "height" (for "top" and "bottom"). For
"top" and "bottom", if the "height" of the containing block is not
specified explicitly (i.e., it depends on content height), the percentage
value is interpreted like "auto".</p></def></gitem></glist>
<p>For absolutely positioned boxes, the offsets are with respect
to the box's containing block. For relatively positioned boxes,
the offsets are with respect to the outer edges of the box itself
(i.e., the box is given a position in the normal flow, then offset
from that position according to these properties).</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>These properties set the position of the content-rectangle
of the associated area.</p>

<p>If both "top" and "bottom" are specified, the height of the
content-rectangle is overridden. If both "left" and "right" are specified,
the width of the content-rectangle is overridden.</p>



</div3>

</div2>

<div2 id="common-aural-properties"><head>Common Aural Properties</head>
<div3 id="azimuth"><head><quote>azimuth</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;angle&gt; | [[ left-side | far-left | left
| center-left | center | center-right | right | far-right | right-side
] || behind ] | leftwards | rightwards | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">center</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-azimuth" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-azimuth</xspecref>.
</p>
</css-cited>
</div3>

<div3 id="cue-after"><head><quote>cue-after</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19c"/>&lt;uri-specification&gt; | none | inherit </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-after" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-after</xspecref>.
</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The &lt;uri&gt; value has been changed to a &lt;uri-specification&gt;.</p>


</div3>

<div3 id="cue-before"><head><quote>cue-before</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19d"/>&lt;uri-specification&gt; | none | inherit </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-before" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-before</xspecref>.
</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The &lt;uri&gt; value has been changed to a &lt;uri-specification&gt;.</p>


</div3>

<div3 id="elevation"><head><quote>elevation</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;angle&gt; | below | level | above | higher
| lower | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">level</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-elevation" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-elevation</xspecref>.
</p>
</css-cited>
</div3>

<div3 id="pause-after"><head><quote>pause-after</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;time&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on user agent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-after" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-after</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="pause-before"><head><quote>pause-before</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;time&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on user agent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-before" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-before</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="pitch"><head><quote>pitch</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;frequency&gt; | x-low | low | medium | high
| x-high | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="pitch-range"><head><quote>pitch-range</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">50</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch-range" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch-range</xspecref>.
</p>
</css-cited>
</div3>

<div3 id="play-during"><head><quote>play-during</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19f"/>&lt;uri-specification&gt; mix? repeat? | auto | none | inherit </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-play-during" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-play-during</xspecref>.
</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The &lt;uri&gt; value has been changed to a &lt;uri-specification&gt;.</p>


</div3>

<div3 id="richness"><head><quote>richness</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">50</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-richness" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-richness</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="speak"><head><quote>speak</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | none | spell-out | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="speak-header"><head><quote>speak-header</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">once | always | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">once</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">elements that have table header information</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html#propdef-speak-header" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html#propdef-speak-header</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="speak-numeral"><head><quote>speak-numeral</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">digits | continuous | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">continuous</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-numeral" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-numeral</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="speak-punctuation"><head><quote>speak-punctuation</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">code | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-punctuation" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-punctuation</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="speech-rate"><head><quote>speech-rate</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | x-slow | slow | medium | fast
| x-fast | faster | slower | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speech-rate" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speech-rate</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="stress"><head><quote>stress</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">50</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-stress" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-stress</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="voice-family"><head><quote>voice-family</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">[[&lt;specific-voice&gt; | &lt;generic-voice&gt;
],]* [&lt;specific-voice&gt; | &lt;generic-voice&gt; ] | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on user agent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-voice-family" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-voice-family</xspecref>.
</p>
</css-cited>
</div3>
<div3 id="volume"><head><quote>volume</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | &lt;percentage&gt; | silent | x-soft
| soft | medium | loud | x-loud | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to inherited value</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">aural</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/aural.html#propdef-volume" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/aural.html#propdef-volume</xspecref>.
</p>
</css-cited>
</div3></div2>

<div2 id="common-border-padding-and-background-properties">
<head>Common Border, Padding, and Background Properties</head>
<p>The following common-border-padding-and-background-properties
are taken from CSS2. Those "border", "padding", and "background"
properties that have a before, after, start, or end suffix are writing-mode
relative and are XSL-only properties.</p>


<div3 id="background-attachment"><head><quote>background-attachment</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">scroll | fixed | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">scroll</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-attachment" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-attachment</xspecref>.
</p>

<glist><gitem><label>scroll</label><def><p>The background-image may scroll with the enclosing object.</p></def></gitem>
<gitem><label>fixed</label><def><p>The background-image is to be fixed within the viewable
area of the enclosing object.</p></def></gitem></glist>
<p>If a background-image is specified, this property specifies
whether it is fixed with regard to the viewport (fixed) or scrolls
along with the document (scroll).</p>
<p>Even if the image is fixed, it is still only visible when it
is in the background or padding area of the element. Thus, unless
the image is tiled ("background-repeat: repeat"), it may be invisible.</p>
<p>User agents may treat fixed as scroll. However, it is recommended
they interpret fixed correctly, at least for the HTML and BODY elements,
since there is no way for an author to provide an image only for
those browsers that support fixed. See the section on conformance
for details.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The last paragraph in the CSS description does not apply.</p>



</div3>

<div3 id="background-color"><head><quote>background-color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | transparent | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">transparent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-color</xspecref>.
</p>


<p>This property sets the background color of an element, either
a &lt;color&gt; value or the keyword transparent, to make the underlying
colors shine through.</p>
<glist><gitem><label>transparent</label><def><p>The underlying colors will shine through.</p></def></gitem>
<gitem><label>&lt;color&gt;</label><def><p>Any valid color specification.</p>
</def></gitem></glist></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>XSL adds an "icc-color" function <spot id="aj000035_42"/>(see <specref ref="expr-color-functions"/>)
as a valid value of this property.</p>


</div3>

<div3 id="background-image"><head><quote>background-image</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19g"/>&lt;uri-specification&gt; | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-image" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-image</xspecref>.
</p>


<p>This property sets the background image of an element. When setting
a "background-image", authors should also specify a background-color
that will be used when the image is unavailable. When the image
is available, it is rendered on top of the background color. (Thus,
the color is visible in the transparent parts of the image).</p>
<p>Values for this property are either &lt;uri-specification&gt;, to specify the
image, or "none", when no image is used.</p>
<glist><gitem><label>none</label><def><p>No image is specified.</p></def></gitem>
<gitem><label>&lt;uri-specification&gt;</label><def>
</def></gitem></glist>

</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The &lt;uri&gt; value has been changed to a &lt;uri-specification&gt;.</p>


</div3>

<div3 id="background-repeat"><head><quote>background-repeat</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">repeat | repeat-x | repeat-y | no-repeat | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">repeat</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-repeat" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-repeat</xspecref>.
</p>


<p>If a background image is specified, this property specifies whether
the image is repeated (tiled), and how. All tiling covers the content
and padding areas of a box. Values have the following meanings:</p>
<glist><gitem><label>repeat</label><def><p>The image is repeated both horizontally and vertically.</p></def></gitem>
<gitem><label>repeat-x</label><def><p>The image is repeated horizontally only.</p></def></gitem>
<gitem><label>repeat-y</label><def><p>The image is repeated vertically only.</p></def></gitem>
<gitem><label>no-repeat</label><def><p>The image is not repeated: only one copy of the image is
drawn.</p></def></gitem></glist></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>"Horizontal" and "vertical" are defined relative to the
reference-orientation; "horizontal" is "left" to "right", and "vertical" is
"top" to "bottom".
</p>
<note><p>Thus for a rotated area the tiling is also rotated.
It is, however, independent of the writing-mode.
</p>
</note>



</div3>

<div3 id="background-position-horizontal"><head><quote>background-position-horizontal</quote></head>
<css-cited border="thin"><p>A Property Derived from a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;percentage&gt; | &lt;length&gt; |
left | center | right | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0%</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all formatting objects to which background applies</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the size of the padding-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>If a "background-image" has been specified, this property specifies
its initial position horizontally.</p>


<glist>
<gitem><label>&lt;percentage&gt;</label>
<def>
<p>Specifies that a point, at the given percentage across the image
from left-to-right, shall be placed at a point at the given percentage
across, from left-to-right, the area's padding-rectangle.
</p>
<note>
<p>For example
with a value of 0%, the left-edge of the
image is aligned with the left-edge of the area's padding-rectangle.
A value of 100% places the right-edge of
the image aligned with the right-edge of the padding-rectangle.
With a value
of 14%, a point 14% across the image is
to be placed at a point 14% across the padding-rectangle.</p>
</note>
</def>
</gitem>
<gitem>
<label>&lt;length&gt;</label>
<def>
<p>Specifies that the left-edge of the image shall be placed
at the specified length to the right of the left-edge of the
padding-rectangle.</p>
<note>
<p>For example
with a value of 2cm, the left-edge of the
image is placed 2cm to the right of the left-edge of the
padding-rectangle.</p>
</note>
</def>
</gitem>
<gitem><label>left</label>
<def><p>Same as 0%.</p></def>
</gitem>
<gitem><label>center</label>
<def><p>Same as 50%.</p></def>
</gitem>
<gitem><label>right</label>
<def><p>Same as 100%.</p></def>
</gitem>
</glist>


</css-cited>
</div3>

<div3 id="background-position-vertical"><head><quote>background-position-vertical</quote></head>
<css-cited border="thin"><p>A Property Derived from a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;percentage&gt; | &lt;length&gt; |
top | center | bottom | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0%</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all formatting objects to which background applies</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the size of the padding-rectangle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>If a "background-image" has been specified, this property specifies
its initial position vertically.</p>


<glist>
<gitem><label>&lt;percentage&gt;</label>
<def>
<p>Specifies that a point, at the given percentage down the image
from top-to-bottom, shall be placed at a point at the given percentage
down, from top-to-bottom, the area's padding-rectangle.
</p>
<note>
<p>For example
with a value of 0%, the top-edge of the
image is aligned with the top-edge of the area's padding-rectangle.
A value of 100% places the bottom-edge of
the image aligned with the bottom-edge of the padding-rectangle.
With a value
of 84%, a point 84% down the image is
to be placed at a point 84% down the padding-rectangle.</p>
</note>
</def>
</gitem>
<gitem>
<label>&lt;length&gt;</label>
<def>
<p>Specifies that the top-edge of the image shall be placed
at the specified length below the top-edge of the
padding-rectangle.</p>
<note>
<p>For example
with a value of 2cm, the top-edge of the
image is placed 2cm below the top-edge of the padding-rectangle.</p>
</note>
</def>
</gitem>
<gitem><label>top</label>
<def><p>Same as 0%.</p></def>
</gitem>
<gitem><label>center</label>
<def><p>Same as 50%.</p></def>
</gitem>
<gitem><label>bottom</label>
<def><p>Same as 100%.</p></def>
</gitem>
</glist>


</css-cited>
</div3>

<div3 id="border-before-color"><head><quote>border-before-color</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the color of the border
on the before-edge of a block-area or inline-area.</p>
<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-before-style"><head><quote>border-before-style</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-style for the before-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-before-width"><head><quote>border-before-width</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | &lt;length-conditional&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-width for the before-edge.</p>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;length-conditional&gt;</label><def><p>A compound value specifying the width and any conditionality
of the border for the before-edge.</p>
<p>The .length component is a &lt;length&gt;.
The .conditionality component may be set to "discard" or "retain" to
control if the border should be 0 or retained if <spot id="aj000029_72a"/>its associated
edge is a leading-edge in a reference-area for areas generated from
this formatting object that have an <trait>is-first</trait> value
of "false". See <specref ref="spacecond"/> for further details.
The initial value of the .conditionality component is "retain".</p>
</def></gitem>
</glist>

<note><p>If the border-style is "none" the computed value of the width
is forced to "0pt".</p>
</note>


</div3>

<div3 id="border-after-color"><head><quote>border-after-color</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the color of the border
on the after-edge of a block-area or inline-area.</p>
<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-after-style"><head><quote>border-after-style</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-style for the after-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-after-width"><head><quote>border-after-width</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | &lt;length-conditional&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-width for the after-edge.</p>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;length-conditional&gt;</label><def><p>A compound value specifying the width and any conditionality
of the border for the after-edge.</p>
<p>The .length component is a &lt;length&gt;.
The .conditionality component may be set to "discard" or "retain" to
control if the border should be 0 or retained if <spot id="aj000029_72b"/>its associated
edge is a trailing-edge in a reference-area for areas generated from
this formatting object that have an <trait>is-last</trait> value
of "false". See <specref ref="spacecond"/> for further details.
The initial value of the .conditionality component is "retain".</p>
</def></gitem>
</glist>

<note><p>If the border-style is "none" the computed value of the width
is forced to "0pt".</p>
</note>


</div3>

<div3 id="border-start-color"><head><quote>border-start-color</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the color of the border
on the start-edge of a block-area or inline-area.</p>
<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-start-style"><head><quote>border-start-style</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-style for the start-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-start-width"><head><quote>border-start-width</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-width for the start-edge.</p>
<note><p>If the border-style is "none" the computed value of the width
is forced to "0pt".</p>
</note>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
</div3>

<div3 id="border-end-color"><head><quote>border-end-color</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the color of the border
on the end-edge of a block-area or inline-area.</p>
<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-end-style"><head><quote>border-end-style</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-style for the end-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-end-width"><head><quote>border-end-width</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the border-width for the end-edge.</p>
<note><p>If the border-style is "none" the computed value of the width
is forced to "0pt".</p>
</note>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
</div3>

<div3 id="border-top-color"><head><quote>border-top-color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-color</xspecref>.
</p>


<p>The 'border-color' property sets the color of the four borders.
Values have the following meanings:</p>
<glist><gitem><label>&lt;color&gt;</label><def><p>Any valid color specification.</p></def></gitem></glist>
<p>If an element's border color is not
specified with a "border" property, user agents must use the value
of the element's "color" property as the computed value for the
border color.</p></css-cited>
</div3>

<div3 id="border-top-style"><head><quote>border-top-style</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-style" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-style</xspecref>.
</p>


<p>The border style properties specify the line style of a box's
border (solid, double, dashed, etc.).</p>
<p>The properties defined in this section refer to the &lt;border-style&gt;
value type, which may take one of the following:</p>
<glist><gitem><label>none</label><def><p>No border. This value forces the computed value of 'border-width'
to be '0'.</p></def></gitem>
<gitem><label>hidden</label><def><p>Same as 'none', except in terms of border conflict resolution
for table elements.</p></def></gitem>
<gitem><label>dotted</label><def><p>The border is a series of dots.</p></def></gitem>
<gitem><label>dashed</label><def><p>The border is a series of short line segments.</p></def></gitem>
<gitem><label>solid</label><def><p>The border is a single line segment.</p></def></gitem>
<gitem><label>double</label><def><p>The border is two solid lines. The sum of the two lines
and the space between them equals the value of 'border-width'.</p></def></gitem>
<gitem><label>groove</label><def><p>The border looks as though it were carved into the canvas.</p></def></gitem>
<gitem><label>ridge</label><def><p>The opposite of 'groove': the border looks as
though it were coming out of the canvas.</p></def></gitem>
<gitem><label>inset</label><def><p>The border makes the entire box look as though it were
embedded in the canvas.</p></def></gitem>
<gitem><label>outset</label><def><p>The opposite of 'inset': the border makes the entire box
look as though it were coming out of the canvas.</p></def></gitem></glist>
<p>All borders are drawn on top of the box's background. The
color of borders drawn for values of 'groove', 'ridge', 'inset',
and 'outset' depends on the element's 'color' property.</p>
<p>Conforming HTML user agents may interpret 'dotted', 'dashed',
'double', 'groove', 'ridge', 'inset', and 'outset' to be 'solid'.
</p></css-cited>
</div3>

<div3 id="border-top-width"><head><quote>border-top-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-width</xspecref>.
</p>


<p>The border width properties specify the width of the border area.
The properties defined in this section refer to the &lt;border-width&gt;
value type, which may take one of the following values:</p>
<glist><gitem><label>thin</label><def><p>A thin border.</p></def></gitem>
<gitem><label>medium</label><def><p>A medium border.</p></def></gitem>
<gitem><label>thick</label><def><p>A thick border.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>The border's thickness has an explicit value. Explicit
border widths cannot be negative.</p></def></gitem></glist>
<p>The interpretation of the first three values depends on
the user agent. The following relationships must hold, however:</p>
<ulist><item><p> 'thin' &lt;='medium' &lt;= 'thick'.</p></item>
<item><p>Furthermore, these widths must be constant throughout a
document. </p></item></ulist></css-cited>
</div3>

<div3 id="border-bottom-color"><head><quote>border-bottom-color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-color</xspecref>.
</p>


<p>Specifies the border color for the bottom-edge.</p>

<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-bottom-style"><head><quote>border-bottom-style</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-style" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-style</xspecref>.
</p>


<p>Specifies the border style for the bottom-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-bottom-width"><head><quote>border-bottom-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-width</xspecref>.
</p>


<p>Specifies the border width for the bottom-edge.</p>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
</div3>

<div3 id="border-left-color"><head><quote>border-left-color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-color</xspecref>.
</p>


<p>Specifies the border color for the left-edge.</p>

<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-left-style"><head><quote>border-left-style</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-style" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-style</xspecref>.
</p>


<p>Specifies the border style for the left-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-left-width"><head><quote>border-left-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-width</xspecref>.
</p>


<p>Specifies the border width for the left-edge.</p>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
</div3>

<div3 id="border-right-color"><head><quote>border-right-color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">the value of the 'color' property</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-color</xspecref>.
</p>


<p>Specifies the border color for the right-edge.</p>

<p>See definition of property border-top-color (<specref ref="border-top-color"/>).</p>
</css-cited>
</div3>

<div3 id="border-right-style"><head><quote>border-right-style</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-style&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-style" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-style</xspecref>.
</p>


<p>Specifies the border style for the right-edge.</p>

<p>See definition of property border-top-style (<specref ref="border-top-style"/>).</p>
</css-cited>
</div3>

<div3 id="border-right-width"><head><quote>border-right-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;border-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-width</xspecref>.
</p>


<p>Specifies the border width for the right-edge.</p>

<p>See definition of property border-top-width (<specref ref="border-top-width"/>).</p>
</css-cited>
</div3>

<div3 id="padding-before"><head><quote>padding-before</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | &lt;length-conditional&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the width of the padding
on the before-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;length-conditional&gt;</label><def><p>A compound value specifying the width and any conditionality
of the padding for the before-edge.</p>
<p>The .length component is a &lt;length&gt;.
The .conditionality component may be set to "discard" or "retain" to
control if the padding should be 0 or retained if <spot id="aj000029_72c"/>its associated
edge is a leading-edge in a reference-area for areas generated from
this formatting object that have an <trait>is-first</trait> value
of "false". See <specref ref="spacecond"/> for further details.
The initial value of the .conditionality component is "retain".</p>
</def></gitem>
</glist>

</div3>

<div3 id="padding-after"><head><quote>padding-after</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | &lt;length-conditional&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the width of the padding
on the after-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;length-conditional&gt;</label><def><p>A compound value specifying the width and any conditionality
of the padding for the after-edge.</p>
<p>The .length component is a &lt;length&gt;.
The .conditionality component may be set to "discard" or "retain" to
control if the padding should be 0 or retained if <spot id="aj000029_72d"/>its associated
edge is a trailing-edge in a reference-area for areas generated from
this formatting object that have an <trait>is-last</trait> value
of "false". See <specref ref="spacecond"/> for further details.
The initial value of the .conditionality component is "retain".</p>
</def></gitem>
</glist>

</div3>

<div3 id="padding-start"><head><quote>padding-start</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the width of the padding
on the start-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
</div3>

<div3 id="padding-end"><head><quote>padding-end</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the width of the padding
on the end-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
</div3>

<div3 id="padding-top"><head><quote>padding-top</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-top" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-top</xspecref>.
</p>

<glist><gitem><label>&lt;length&gt;</label></gitem></glist>
<p>Specifies the width of the padding
on the top-edge of a block-area or inline-area.</p></css-cited>
</div3>

<div3 id="padding-bottom"><head><quote>padding-bottom</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-bottom" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-bottom</xspecref>.
</p>

<p>Specifies the width of the padding
on the bottom-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
</div3>

<div3 id="padding-left"><head><quote>padding-left</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-left" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-left</xspecref>.
</p>

<p>Specifies the width of the padding
on the left-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
</div3>

<div3 id="padding-right"><head><quote>padding-right</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;padding-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-right" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-right</xspecref>.
</p>

<p>Specifies the width of the padding
on the right-edge of a block-area or inline-area.</p>
<p>See definition of property padding-top (<specref ref="padding-top"/>).</p>
</css-cited>
</div3>

</div2>

<div2 id="common-font-properties"><head>Common Font Properties</head>
<p>The following common-font-properties all are taken from
CSS2. The reference to CSS2 is: http://www.w3.org/TR/REC-CSS2/fonts.html</p>
<note>
<p>Although these properties reference the individual properties
in the CSS specification, it is recommended that you read the entire
font section of the CSS2 specification.</p></note>

<div3 id="font-model">
<head>Fonts and Font Data</head>
<p>
XSL uses an abstract model of a font. This model is described in this
section and is based on current font technology as exemplified by the
OpenType specification <bibref ref="OpenType"/>.

</p>
<p>
A font consists of a collection of glyphs together with the
information, the font tables, necessary to use those glyphs to present
characters on some medium. A glyph is a recognizable abstract graphic
symbol which is independent of any specific design. The combination of the collection of glyphs and the font tables
is called the font data.
</p>
<p>
The font tables include the information
necessary to map characters to glyphs, to determine the size of glyph
areas and to position the glyph area. Each font table consists of one
or more font characteristics, such as the font-weight and font-style.
</p>
<p>
The geometric font characteristics are expressed in a coordinate
system based on the EM box. (The EM is a relative measure of the
height of the glyphs in the font; see <specref ref="relative.lengths"/>.)
This box that is 1 EM high
and 1 EM wide is called the design space.
Points in this design space are expressed in
geometric coordinates in terms of fractional units of the EM.
</p>
<p>
The coordinate space of the EM box is called the design space
coordinate system. For scalable fonts, the curves and lines that are
used to draw a glyph are represented using this coordinate system.
</p>
<note>
<p>
Most often, the (0,0) point in this coordinate system is
positioned on the left edge of the EM box, but not at the bottom left
corner. The Y coordinate of the bottom of a Roman capital letter is
usually zero. In addition, the descenders on lower case Roman letters have
negative coordinate values.
</p>
</note>
<p>
XSL assumes that the font tables will provide at least three font
characteristics: an ascent, a descent and a set of baseline-tables.
The coordinate values for these are given in the design space
coordinate system.  The ascent is given by the vertical coordinate of
the top of the EM box; the descent is given by the vertical coordinate
of the bottom of the EM box. The baseline-table is explained below.
</p>
<p>
The glyphs of a given script are positioned so that a particular point
on each glyph, the <term>alignment-point</term>, is aligned with the
alignment-points of the other glyphs in that script. The glyphs of
different scripts are typically aligned at different points on the
glyph. For example, Western glyphs are aligned on the bottoms of the
capital letters, certain Indic glyphs (including glyphs from the
Devanagari, Gurmukhi and Bengali scripts) are aligned at the top of a
horizontal stroke near the top of the glyphs and Far-Eastern glyphs
are aligned either at the bottom or center of the EM box of the
glyph. Within a script and within a line of text having a single
font-size, the sequence of alignment-points defines, in the
inline-progression-direction, a geometric line called a
<term>baseline</term>. Western and most other alphabetic and syllabic
glyphs are aligned to an "alphabetic" baseline, the above Indic
glyphs are aligned to a "hanging" baseline and the Far-Eastern glyphs
are aligned to an "ideographic" baseline.
</p>
<figure>
<graphic source="AlignmentPointsMixedScripts2.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>
This figure shows the vertical position of the alignment-point for
alphabetic and many syllabic scripts, illustrated by a Roman "A"; for
certain Indic scripts, illustrated by a Gurmukhi syllable "ji"; and
for ideographic scripts, illustrated by the ideograhic glyph meaning
"country". The thin black rectangle around the ideographic glyph
illustrates the EM box for that glyph and shows the typical
positioning of the "black marks" of the glyph within the EM box.
</p>
</figcap>
</figure>
<p>
A <term>baseline-table</term> specifies the position of one or more
baselines in the design space coordinate system. The function of the
baseline table is to facilitate the alignment of different scripts
with respect to each other when they are mixed on the same text
line. Because the desired relative alignments may depend on which
script is dominant in a line (or block), there may be a different
baseline table for each script. In addition, different alignment
positions are needed for horizontal and vertical writing
modes. Therefore, the font may have a set of baseline tables:
typically, one or more for horizontal writing-modes and zero or more
for vertical writing-modes.
</p>
<figure>
<graphic source="Baselines-HorizAndVert-ApCountry.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>
Examples of horizontal and vertical baseline positions. The thin lined
box in each example is the "EM box". For the Latin glyphs, only the EM box of the first glyph is shown. Example 1 shows typical Latin
text written horizontally.  This text is positioned relative to the
alphabetic baseline, shown in blue. Example 2 shows a typical
ideographic glyph positioned on the horizontal ideographic
baseline. Note that the EM Box is positioned differently for these two
cases. Examples 3 and 4 show the same set of baselines used in
vertical writing. The Latin text, example 3, is shown with a
glyph-orientation of 90 degrees which is typical for proportionally
space Latin glyphs in vertical writing. Even though the ideographic
glyph in Example 4 is positioned on the vertical ideographic baseline,
because it is centered in the EM box, all glyphs with the same EM Box
are centered, vertically, with respect to one another. Additional
examples showing the positioning of mixed scripts are given in the
introductions to <specref ref="area-alignment"/> and
<specref ref="writing-mode-related"/>.
</p>
</figcap>
</figure>
<p>
The font tables for a font include font characteristics for the
individual glyphs in the font. XSL assumes that the font tables
include, for each glyph in the font, one width value, one alignment-baseline and
one alignment-point for the horizontal writing-modes. If vertical
writing-modes are supported, then each glyph must have another width
value, alignment-baseline and alignment-point for the vertical
writing-modes.  (Even though it is specified as a width, for vertical
writing-modes the width is used in the vertical direction.)
</p>
<p>
The script
to which a glyph belongs determines an alignment-baseline to which the
glyph is to be aligned. The position of this baseline in the design
space coordinate system determines the default
block-progression-direction position of the alignment-point. The
inline-progression-direction position of the alignment-point is on the
start-edge of the glyph. (These positions are adjusted according to
the specifications in <specref ref="alignment-adjust"/> when an instance of a glyph is used in an inline or block
formatting object. The "space-start" and/or the "space-end" properties
of the fo:character that maps to the glyph may be adjusted to effect
"kerning" with respect to adjacent glyphs.)
</p>
<figure>
<graphic source="AlignmentPointsMixedScriptsOnBaselines.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>
This figure shows glyphs from three different scripts,
each with its EM box and within the EM box,
the baseline table applicable to that glyph.
The alignment-point of each glyph is shown by an "X" on the start edge
of the EM box and by making alignment-baseline blue.
The baseline-table of the parent formatting object of the characters
that mapped to these glyphs is shown as a set of dashed lines.
</p>
</figcap>
</figure>
<p>
In addition to the font characteristics required above, a font may
also supply substitution and positioning tables that can be used by a
formatter to re-order, combine, and position a sequence of glyphs to
make one or more composite glyphs. The combination may be as simple as
a ligature, or as complex as an Indic syllable which combines, usually
with some re-ordering, multiple consonants and vowel glyphs. See
<specref ref="area-linebuild"/>.
</p>
<note>
<p>
If the font tables do not define values for required font
characteristics, heuristics may be used to approximate these
values.

</p>

</note>
</div3>


<div3 id="font-family"><head><quote>font-family</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">[[ &lt;family-name&gt; | &lt;generic-family&gt;
],]* [&lt;family-name&gt; | &lt;generic-family&gt;] | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on user agent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-family" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-family</xspecref>.
</p>


<p>This property specifies a prioritized list of font family names
and/or generic family names. To deal with the problem that a single
font may not contain glyphs to display all the characters in a document,
or that not all fonts are available on all systems, this property allows
authors to specify a list of fonts, all of the same style and size,
that are tried in sequence to see if they contain a glyph for a
certain character. This list is called a font set.</p>
<p>The generic font family will be used if one or more of the other
fonts in a font set is unavailable. Although many fonts provide
the "missing character" glyph, typically an open box, as its name
implies this should not be considered a match except for the last
font in a font set. </p>
<p>There are two types of font family names:</p>
<glist><gitem><label>&lt;family-name&gt;</label>
<def><p>The name of a font-family of choice. In the previous example
<spot id="aj000029_73a"/>[in the CSS2 Recommendation],
"Baskerville", "Heisi Mincho W3", and "Symbol" are font families.
Font family names containing whitespace should be quoted. If quoting
is omitted, any whitespace characters before and after the font
name are ignored and any sequence of whitespace characters inside the
font name is converted to a single space.</p></def></gitem>
<gitem><label>&lt;generic-family&gt;</label>
<def><p>The following generic families are defined: "serif", "sans-serif",
"cursive", "fantasy", and "monospace". Please see the section on
generic font families for descriptions of these families. Generic
font family names are keywords, and therefore must not be quoted.</p></def></gitem>
</glist></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p><glist><gitem><label>&lt;string&gt;</label><def><p>The names are syntactically expressed as
strings.</p>
<note><p>See the  expression language for a two-argument
"system-font" function that returns a characteristic of a system-font.
This may be used, instead of the "font" shorthand, to specify
the name of a system-font.
</p></note>
</def></gitem></glist>
</div3>

<div3 id="font-selection-strategy"><head><quote>font-selection-strategy</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | character-by-character | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>There is no XSL mechanism to specify a particular font; instead,
a <term>selected font</term> is chosen from the fonts available to the
User Agent based on a set of selection criteria. The <term>selection
criteria</term> are the following font properties:
"font-family",
"font-style",
"font-variant",
"font-weight",
"font-stretch", and
"font-size",
plus, for some formatting
objects, one or more characters.
These characters are called the <term>contextual characters</term>.
The contextual characters can be as few as a single character
and as many as the entire character complement of the result tree
being processed.
</p>
<p>Except for the fo:character formatting object, for all other
formatting objects where "font-family" applies, the selection
criteria consist of the above font properties only.
For the fo:character formatting object, the selection criteria
are these properties plus either the value of the
"character" property of the fo:character alone or that
character together with other contextual characters.
</p>
<p>The strategy to be followed for selecting a font based on these
criteria is specified by the "font-selection-strategy" property.</p>
<p>The "font-family" property is a prioritized list of
font family names, which
are tried in sequence to find an available font that matches the
selection criteria.
The font property selection criteria are matched if the
corresponding font characteristics match
the properties as specified in the property descriptions.</p>
<p>If no matching font is found, a fallback selection
is determined in a system-dependent manner.</p>
<note><p>This fallback may be to seek a match using a User Agent
default "font-family", or it may be a more elaborate fallback
strategy where, for example, "Helvetica" would be used as a
fallback for "Univers".</p>
</note>
<p>If no match has been found for a particular character,
there is no selected font and
the User Agent should indicate
that a character is not being displayed (for example, using the
'missing character' glyph).
</p>
<p>Values of the "font-selection-strategy" property
have the following meanings:</p>
<glist>

<gitem><label>auto</label><def>
<p>The selection criterion given by the contextual characters is used in an
implementation defined manner.</p>
<note><p>An implementation may, for example, use an algorithm where
all characters in the result tree having the same set of
font selection property values influence the selection,
or it may only use the character property of a
single fo:character formatting object for which a font is to be
selected.
Consider, for example, a case where the available fonts include a
font that covers all of Latin, Greek and Cyrillic as well
as three better quality fonts that cover those three separately,
but match each other badly stylistically.  An implementation that takes
a larger view for its set of contextual characters may consider the
glyph complement to allow the selection of the better font if it
covers the glyph complement, but to use the broader font to get
a consistent style if the glyph complement is larger than any one
of the other fonts can cover.
</p>
</note>
</def></gitem>
<gitem><label>character-by-character</label><def><p>The set of contextual characters consists of the single character
that is the value of the "character" property of the fo:character for
which a font is to be selected.</p>
<note>
<p>This selection strategy is the same as the strategy used to select
fonts in CSS.
</p>
</note>
</def></gitem>
</glist>

<p>
Describes the criteria for selecting fonts and the different strategies
for using these criteria to determine a <term>selected font</term>.</p>




</div3>

<div3 id="font-size"><head><quote>font-size</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;absolute-size&gt; | &lt;relative-size&gt; | &lt;length&gt;
| &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">medium</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes, the computed value is inherited</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to parent element's font size</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size</xspecref>.
</p>



<p>This property describes the size of the font when set solid.
Values have the following meanings:</p>
<glist><gitem><label>&lt;absolute-size&gt;</label>
<def><p>An &lt;absolute-size&gt; keyword refers to an entry in a table
of font sizes computed and kept by the user agent. Possible values
are:</p>
<p>[ xx-small | x-small | small | medium | large | x-large | xx-large
]</p>
<p>On a computer screen a scaling factor of 1.2 is suggested between
adjacent indexes; if the "medium" font is 12pt, the "large" font
could be 14.4pt. Different media may need different scaling factors.
Also, the user agent should take the quality and availability of fonts
into account when computing the table. The table may be different
from one font family to another. Note. In CSS1, the suggested scaling
factor between adjacent indexes was 1.5 which user experience proved
to be too large.</p></def></gitem>
<gitem><label>&lt;relative-size&gt;</label>
<def><p>A &lt;relative-size&gt; keyword is interpreted relative to
the table of font sizes and the font size of the parent element.
Possible values are:</p>
<p>[ larger | smaller ]</p>
<p>For example, if the parent element has a font size of "medium",
a value of "larger" will make the font size of the current element
be "large". If the parent element's size is not close to a table
entry, the user agent is free to interpolate between table entries
or round off to the closest one. The user agent may have to extrapolate
table values if the numerical value goes beyond the keywords.</p></def></gitem>
<gitem><label>&lt;length&gt;</label>
<def><p>A length value specifies an absolute font size (that is
independent of the user agent's font table). Negative lengths are
illegal.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label>
<def><p>A percentage value specifies an absolute font size relative
to the parent element's font size. Use of percentage values, or
values in "em's", leads to more robust and cascadable stylesheets.</p></def></gitem></glist>
<p>The actual value of this property may differ from the computed
value due a numerical value on 'font-size-adjust' and the unavailability
of certain font sizes. </p>
<p>Child elements inherit the computed 'font-size' value (otherwise,
the effect of 'font-size-adjust' would compound). </p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>XSL incorporates the following text from CSS2 15.5
(<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm"</xspecref>)
as part of the property definition.
</p>
<p>'font-size' must be matched within a UA-dependent margin of
tolerance. (Typically, sizes for scalable fonts are rounded the
nearest whole pixel, while the tolerance for bitmapped fonts could be
as large as 20%.) Further computations, e.g., by 'em' values in other
properties, are based on the computed 'font-size' value.</p>


</div3>

<div3 id="font-stretch"><head><quote>font-stretch</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | wider | narrower | ultra-condensed
| extra-condensed | condensed | semi-condensed | semi-expanded |
expanded | extra-expanded | ultra-expanded | <spot id="aj000029_74"/>inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling</xspecref>.
</p>


<p>The 'font-stretch' property selects a normal, condensed, or extended
face from a font family.</p>
<glist><gitem><label>ultra-condensed</label></gitem>
<gitem><label>extra-condensed</label></gitem>
<gitem><label>condensed</label></gitem>
<gitem><label>semi-condensed</label></gitem>
<gitem><label>normal</label></gitem>
<gitem><label>semi-expanded</label></gitem>
<gitem><label>expanded</label></gitem>
<gitem><label>extra-expanded</label></gitem>
<gitem><label>ultra-expanded</label><def><p>Absolute keyword values have the following ordering, from
narrowest to widest :</p>
<olist><item><p>ultra-condensed </p></item>
<item><p>extra-condensed </p></item>
<item><p>condensed </p></item>
<item><p>semi-condensed </p></item>
<item><p>normal </p></item>
<item><p>semi-expanded </p></item>
<item><p>expanded </p></item>
<item><p>extra-expanded </p></item>
<item><p>ultra-expanded</p></item></olist></def></gitem>
<gitem><label>wider</label><def><p>The relative keyword "wider" sets the value to the next
expanded value above the inherited value (while not increasing it
above "ultra-expanded").</p></def></gitem>
<gitem><label>narrower</label><def><p>The relative keyword "narrower" sets the value to the next
condensed value below the inherited value (while not decreasing
it below "ultra-condensed").</p></def></gitem></glist>

</css-cited>
</div3>

<div3 id="font-size-adjust"><head><quote>font-size-adjust</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#font-size-props" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#font-size-props</xspecref>.
</p>


<p>In bicameral scripts, the subjective apparent size and legibility
of a font are less dependent on their 'font-size' value than on
the value of their 'x-height', or, more usefully, on the ratio of
these two values, called the aspect value (font size divided by
x-height). The higher the aspect value, the more likely it is that
a font at smaller sizes will be legible. Inversely, faces with a
lower aspect value will become illegible more rapidly below a given threshold
size than faces with a higher aspect value. Straightforward font
substitution that relies on font size alone may lead to illegible
characters. </p>
<p>For example, the popular font Verdana has an aspect value of
0.58; when Verdana's font size 100 units, its x-height is 58 units.
For comparison, Times New Roman has an aspect value of 0.46. Verdana
will therefore tend to remain legible at smaller sizes than Times New
Roman. Conversely, Verdana will often look 'too big' if substituted
for Times New Roman at a chosen size.</p>
<p>This property allows authors to specify an aspect value for an
element that will preserve the x-height of the first choice font
in the substitute font. Values have the following meanings: </p>
<glist><gitem><label>none</label><def><p>Do not preserve the font's x-height.</p></def></gitem>
<gitem><label>&lt;number&gt;</label><def><p>Specifies the aspect value. The number refers to the aspect
value of the first choice font. The scaling factor for available
fonts is computed according to the following formula:</p>
<p>y(a/a') = c</p>
<p>where:</p>
<p>y="font-size" of first-choice font</p>
<p>a' = aspect value of available font</p>
<p>c="font-size" to apply to available font</p></def></gitem></glist>
<p>This property allows authors to specify an aspect value
for an element that will preserve the x-height of the first choice
font in the substitute font.</p>
<p>Font size adjustments take place when computing the actual value
of "font-size". Since inheritance is based on the computed value,
child elements will inherit unadjusted values.</p>

</css-cited>
</div3>

<div3 id="font-style"><head><quote>font-style</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | italic | oblique |  backslant | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling</xspecref>.
</p>


<p>The "font-style" property requests normal (sometimes referred
to as "roman" or "upright"), italic, and oblique faces within a
font family. Values have the following meanings:</p>
<glist><gitem><label>normal</label><def><p>Specifies a font that is classified as "normal" in the
UA's font database.</p></def></gitem>
<gitem><label>oblique</label><def><p>Specifies a font that is classified as "oblique" in the
UA's font database. Fonts with Oblique, Slanted, or Incline in their
names will typically be labeled "oblique" in the font database.
A font that is labeled "oblique" in the UA's font database may actually
have been generated by electronically slanting a normal font.</p></def></gitem>
<gitem><label>italic</label><def><p>Specifies a font that is classified as "italic" in the
UA's font database, or, if that is not available, one labeled 'oblique'.
Fonts with Italic, Cursive, or Kursiv in their names will typically
be labeled "italic".</p></def></gitem></glist></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>backslant</label><def><p>Specifies a font that is classified as "backslant"
in the UA's font database.</p></def></gitem></glist>

<p>XSL incorporates the following text from CSS2 15.5
(<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm"</xspecref>)
as part of the property definition, except that
for XSL the information is obtained from the font tables of the
available fonts.
</p>
<p>'italic' will be satisfied if there is
either a face in the UA's font database labeled with the CSS keyword
'italic' (preferred) or 'oblique'. Otherwise the values must be
matched exactly or font-style will fail.</p>


</div3>

<div3 id="font-variant"><head><quote>font-variant</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | small-caps | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling</xspecref>.
</p>


<p>In a small-caps font, the glyphs for lowercase letters look similar
to the uppercase ones, but in a smaller size and with slightly different
proportions. The "font-variant" property requests such a font for
bicameral (having two cases, as with Roman script). This property has
no visible effect for scripts that are unicameral (having only one
case, as with most of the world's writing systems). Values have
the following meanings:</p>
<glist><gitem><label>normal</label><def><p>Specifies a font that is not labeled as a small-caps font.</p></def></gitem>
<gitem><label>small-caps</label><def><p>Specifies a font that is labeled as a small-caps font.
If a genuine small-caps font is not available, user agents should
simulate a small-caps font, for example by taking a normal font
and replacing the lowercase letters by scaled uppercase characters. As
a last resort, unscaled uppercase letter glyphs in a normal font
may replace glyphs in a small-caps font so that the text appears
in all uppercase letters.</p></def></gitem></glist>
<p>Insofar as this property causes text to be transformed
to uppercase, the same considerations as for "text-transform" apply.</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>XSL incorporates the following text from CSS2 15.5
(<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm"</xspecref>)
as part of the property definition.
</p>
<p>'normal' matches a font not labeled as
'small-caps'; 'small-caps' matches (1) a font labeled as 'small-caps',
(2) a font in which the small caps are synthesized, or (3) a font
where all lowercase letters are replaced by uppercase letters. A
small-caps font may be synthesized by electronically scaling uppercase
letters from a normal font.</p>


</div3>

<div3 id="font-weight"><head><quote>font-weight</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | bold | bolder | lighter | 100 | 200
| 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling</xspecref>.
</p>


<p>The "font-weight" property specifies the weight of the font.</p>
<glist><gitem><label>normal</label><def><p>Same as "400".</p></def></gitem>
<gitem><label>bold</label><def><p>Same as "700".</p></def></gitem>
<gitem><label>bolder</label><def><p>Specifies the next weight that is assigned to a font that
is darker than the inherited one. If there is no such weight, it
simply results in the next darker numerical value (and the font
remains unchanged), unless the inherited value was "900", in which case
the resulting weight is also "900".</p></def></gitem>
<gitem><label>lighter</label><def><p>Specifies the next weight that is assigned to a font that
is lighter than the inherited one. If there is no such weight, it
simply results in the next lighter numerical value (and the font
remains unchanged), unless the inherited value was "100", in which case
the resulting weight is also "100".</p></def></gitem>
<gitem><label>&lt;integer&gt;</label><def><p>These values form an ordered sequence, where each number
indicates a weight that is at least as dark as its predecessor.</p></def></gitem></glist>
<p>Child elements inherit the computed value of the weight.</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>XSL incorporates the following text from CSS2 15.5.1
(<xspecref href="http://www.w3.org/TR/REC-CSS2/fonts.html#q46" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/fonts.html#q46</xspecref>)
as part of the property definition.
</p>
<p>The association of other weights within a family to the numerical
weight values is intended only to preserve the ordering of weights
within that family. User agents must map names to values in a way that
preserves visual order; a face mapped to a value must not be lighter
than faces mapped to lower values. There is no guarantee on how a user
agent will map fonts within a family to weight values. However, the
following heuristics tell how the assignment is done in typical cases:
If the font family already uses a numerical scale with nine values (as
e.g., OpenType does), the font weights should be mapped directly.
</p>
<p>If there is both a face labeled Medium and one labeled Book, Regular,
Roman or Normal, then the Medium is normally assigned to the '500'.
</p>
<p>The font labeled "Bold" will often correspond to the weight value '700'.
</p>
<p>If there are fewer then 9 weights in the family, the default algorithm
for filling the "holes" is as follows. If '500' is unassigned, it will
be assigned the same font as '400'. If any of the values '600', '700',
'800', or '900' remains unassigned, they are assigned to the same face
as the next darker assigned keyword, if any, or the next lighter one
otherwise. If any of '300', '200', or '100' remains unassigned, it is
assigned to the next lighter assigned keyword, if any, or the next
darker otherwise.
</p>
<p>There is no guarantee that there will be a darker face for each of the
'font-weight' values; for example, some fonts may have only a normal
and a bold face, others may have eight different face weights.
</p>


</div3>
</div2>

<div2 id="common-hyphenation-properties"><head>Common Hyphenation
Properties</head>

<div3 id="country"><head><quote>country</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | &lt;country&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>Indicates the country is unknown or
is not significant to the proper formatting of this object.</p></def></gitem>
<gitem><label>&lt;country&gt;</label><def><p>A country-specifier in conformance with <bibref ref="RFC1766"/>.</p></def></gitem></glist>
<p>Specifies the country to be used by
the formatter in language-/locale-coupled services, such as
line-justification strategy, line-breaking, and hyphenation.</p>
<note>
<p>This may affect line composition in
a system-dependent way.</p>
</note>
<p>The country may be the country component of any RFC 1766 <spot id="c11i76"/>code;
(these are derived from ISO 3166).</p>

</div3>

<div3 id="language"><head><quote>language</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | &lt;language&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>Indicates the language is unknown
or is not significant to the proper formatting of this object.</p></def></gitem>
<gitem><label>&lt;language&gt;</label><def><p>A language-specifier in conformance with <bibref ref="RFC1766"/>.</p></def></gitem></glist>
<p>Specifies the language to be used
by the formatter in language-/locale-coupled services, such as
line-justification strategy, line-breaking, and hyphenation.</p>
<note>
<p>This may affect line composition in
a system-dependent way.</p>
</note>
<p>The language may be the language component of any RFC 1766 code
(these are derived from the ISO 639 language codes).</p>



</div3>

<div3 id="script"><head><quote>script</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | auto | &lt;script&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>


<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>Indicates that the script is determined
using codepoint ranges in the text of the document.</p>
<note><p>This provides
the automatic differentiation between Kanji, Katakana,
Hiragana, and Romanji
used in JIS-4051 and similar services in some other countries/languages.</p>
</note>
</def></gitem>
<gitem><label>none</label><def><p>Indicates the script is unknown or
is not significant to the proper formatting of this object.</p></def></gitem>
<gitem><label>&lt;script&gt;</label><def><p>A script specifier in conformance with <bibref ref="ISO15924"/>.</p></def></gitem></glist>
<p>Specifies the script to be used by
the formatter in language-/locale-coupled services, such as
line-justification strategy, line-breaking, and hyphenation.</p>
<note><p>This may affect line composition
in a system-dependent way.</p>
</note>
<p>The script may be any ISO 15924 script code.</p>


</div3>


<div3 id="hyphenate"><head><quote>hyphenate</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">false | true | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">false</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>false</label><def><p>Hyphenation may not be used in the line-breaking algorithm
for the text contained in this object.</p></def></gitem>
<gitem><label>true</label><def><p>Hyphenation may be used in the line-breaking algorithm
for the text contained in this object.</p></def></gitem></glist>
<p>Specifies whether hyphenation is allowed
during line-breaking when the formatter is formatting this formatting
object.</p>


</div3>

<div3 id="hyphenation-character"><head><quote>hyphenation-character</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;character&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">The <spot id="aj000029_77"/>Unicode hyphen character u+2010</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;character&gt;</label></gitem></glist>
<p>Specifies the Unicode character to be presented
when a hyphenation break occurs. The styling properties of this
character are those inherited from its containing flow object.</p>


</div3>

<div3 id="hyphenation-push-character-count"><head><quote>hyphenation-push-character-count</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">2</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;integer&gt;</label><def><p>If a negative or non-integer value is specified, it will
be rounded to the nearest integer greater than zero.</p></def></gitem></glist>
<p>The hyphenation-push-character-count
is a positive integer specifying the minimum number of characters
in a hyphenated word after the hyphenation character. This is the minimum
number of characters in the word pushed to the next line after the
line ending with the hyphenation character. </p>


</div3>

<div3 id="hyphenation-remain-character-count"><head><quote>hyphenation-remain-character-count</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">2</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block, fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;integer&gt;</label><def><p>If a negative or non-integer value is specified, it will
be rounded to the nearest integer greater than zero.</p></def></gitem></glist>
<p>The hyphenation-remain-character-count
is a positive integer specifying the minimum number of characters
in a hyphenated word before the hyphenation character. This is the minimum
number of characters in the word left on the line ending with the
hyphenation character. </p>


</div3>
</div2>

<div2 id="common-margin-properties-block"><head>Common Margin
Properties-Block</head>

<div3 id="margin-top"><head><quote>margin-top</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;margin-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-top" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-top</xspecref>.
</p>


<p>Margin-width may be one of the following:</p>
<glist><gitem><label>auto</label><def><p>See the CSS2 section on computing
widths and margins for behavior.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The percentage is calculated with respect to the width
of the generated box's containing block. This is true for 'margin-top'
and 'margin-bottom', except in the page context, where percentages
refer to page box height.</p></def></gitem></glist>
<p>Negative values for margin properties
are allowed, but there may be implementation-specific limits.</p>
<p>Sets the top margin of a box.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<ulist><item><p>Margin-top is provided
for compatibility with CSS.</p></item>
<item><p>Details on the mapping of CSS "margin" properties for XSL
are given in <specref ref="refinement"/>.
</p></item></ulist>

</div3>

<div3 id="margin-bottom"><head><quote>margin-bottom</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;margin-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-bottom" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-bottom</xspecref>.
</p>

<p>Margin-width may be one of the
following:</p>
<glist><gitem><label>auto</label><def><p>See the CSS2 section on computing
widths and margins for behavior.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The percentage is calculated with respect to the width
of the generated box's containing block. This is true for 'margin-top'
and 'margin-bottom', except in the page context, where percentages
refer to page box height.</p></def></gitem></glist>
<p>Negative values for margin properties
are allowed, but there may be implementation-specific limits.</p>
<p>Sets the bottom margin of a box.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<ulist><item><p>Margin-bottom is provided
for compatibility with CSS.</p></item>
<item><p>Details on the mapping of CSS "margin" properties for XSL
are given in <specref ref="refinement"/>.
</p></item></ulist>

</div3>

<div3 id="margin-left"><head><quote>margin-left</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;margin-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-left" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-left</xspecref>.
</p>

<p>Margin-width may be one of the
following:</p>
<glist><gitem><label>auto</label><def><p>See the CSS2 section on computing
widths and margins for behavior.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The percentage is calculated with respect to the width
of the generated box's containing block.<spot id="aj000029_78a"/></p>
</def></gitem></glist>
<p>Negative values for margin properties
are allowed, but there may be implementation-specific limits.</p>
<p>Sets the left margin of a box.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<ulist><item><p>Margin-left is provided
for compatibility with CSS.</p></item>
<item><p>Details on the mapping of CSS "margin" properties for XSL
are given in <specref ref="refinement"/>.
</p></item></ulist>

</div3>

<div3 id="margin-right"><head><quote>margin-right</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;margin-width&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-right" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-right</xspecref>.
</p>

<p>Margin-width may be one of the
following:</p>
<glist><gitem><label>auto</label><def><p>See the CSS2 section on computing
widths and margins for behavior.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The percentage is calculated with respect to the width
of the generated box's containing block.<spot id="aj000029_78b"/></p>
</def></gitem></glist>
<p>Negative values for margin properties
are allowed, but there may be implementation-specific limits.</p>
<p>Sets the right margin of a box.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<ulist><item><p>Margin-right is provided
for compatibility with CSS.</p></item>
<item><p>Details on the mapping of CSS "margin" properties for XSL
are given in <specref ref="refinement"/>.
</p></item></ulist>

</div3>

<div3 id="space-before"><head><quote>space-before</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space.minimum=0pt, .optimum=0pt, .maximum=0pt,
.conditionality=discard, .precedence=0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all block-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A (Differs from margin-top in CSS)</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>Specifies the minimum, optimum, and maximum values
for the space before any areas generated by this formatting object
and the conditionality and precedence of this space.
</p>
</def></gitem>
</glist>
<p>Specifies the value of the space-specifier for the space before
the areas generated by this formatting object.
A definition of space-specifiers, and
the interaction between space-specifiers occurring in sequence are
given in <specref ref="spacecond"/>.</p>
<note><p>A common example of such a sequence is the "space-after" on
one area and the "space-before" of its next sibling.</p>
</note>

</div3>

<div3 id="space-after"><head><quote>space-after</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space.minimum=0pt, .optimum=0pt, .maximum=0pt,
.conditionality=discard, .precedence=0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all block-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A (Differs from margin-bottom in CSS)</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>Specifies the minimum, optimum, and maximum values
for the space after any areas generated by this formatting object
and the conditionality and precedence of this space.
</p>
</def></gitem>
</glist>
<p>Specifies the value of the space-specifier for the space after
the areas generated by this formatting object.
A definition of space-specifiers, and
the interaction between space-specifiers occurring in sequence are
given in <specref ref="spacecond"/>.</p>
<note><p>A common example of such a sequence is the "space-after" on
one area and the "space-before" of its next sibling.</p>
</note>

</div3>

<div3 id="start-indent"><head><quote>start-indent</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all block-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing reference-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;length&gt;</label><def><p>For each block-area generated by this formatting object, specifies the
distance from the start-edge of the content-rectangle of the containing
reference-area to the start-edge of the content-rectangle of that
block-area.</p></def></gitem></glist>

<p>This property may have a negative value, which indicates an outdent.</p>

</div3>

<div3 id="end-indent"><head><quote>end-indent</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all block-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing reference-area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;length&gt;</label><def><p>For each block-area generated by this formatting object, specifies the
distance from the end-edge of the content-rectangle of
that block-area
to the end-edge of the content-rectangle of the containing
reference-area.</p></def></gitem></glist>

<p>This property may have a negative value, which indicates an outdent.</p>

</div3>

</div2>

<div2 id="common-margin-properties-inline"><head>Common
Margin Properties-Inline</head>
<p>This group also includes all the properties in the common-margin-properties-block
group except space-before, space-after, start-indent, and
end-indent.</p>


<div3 id="space-end"><head><quote>space-end</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space.minimum=0pt, .optimum=0pt, .maximum=0pt,
.conditionality=discard, .precedence=0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the width of the containing area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>Specifies the minimum, optimum, and maximum values
for the space after any areas generated by this formatting object
and the conditionality and precedence of this space.
</p>
</def></gitem>
</glist>
<p>Specifies the value of the space-specifier for the space after
the areas generated by this formatting object.
A definition of space-specifiers, and
the interaction between space-specifiers occurring in sequence are
given in <specref ref="spacecond"/>.</p>
<note><p>A common example of such a sequence is the "space-end" on
one area and the "space-start" of its next sibling.</p>
</note>

</div3>

<div3 id="space-start"><head><quote>space-start</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space.minimum=0pt, .optimum=0pt, .maximum=0pt,
.conditionality=discard, .precedence=0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the width of the containing area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>Specifies the minimum, optimum, and maximum values
for the space before any areas generated by this formatting object
and the conditionality and precedence of this space.
</p>
</def></gitem>
</glist>
<p>Specifies the value of the space-specifier for the space before
the areas generated by this formatting object.
A definition of space-specifiers, and
the interaction between space-specifiers occurring in sequence are
given in <specref ref="spacecond"/>.</p>
<note><p>A common example of such a sequence is the "space-end" on
one area and the "space-start" of its next sibling.</p>
</note>

</div3></div2>

<div2 id="area-alignment"><head>Area Alignment Properties</head>

<p><spot id="jf000081_1a"/>The area alignment properties control
the alignment of child areas with respect to their parent areas. The
parent area is given a frame of reference through its
scaled-baseline-table.
</p>
<p>
The positions of these baselines are illustrated in the following figure:
</p>
<figure>
<graphic source="Baselines-rev.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>
This figure shows samples of Gurmukhi (a hanging Indic script), Latin
and ideographic scripts together with most of the baselines defined
below. The thin line around the ideographic glyphs symbolizes the EM
box in which these glyphs are centered. In this figure, the position
of the "text-before-edge" and "text-after-edge" baselines is computed
assuming that the "alphabetic" baseline is the dominant-baseline. The
"central" baseline has been omitted from the figure, but it lies
halfway between the "text-before-edge" and "text-after-edge"
baselines, just about where the "math" baseline is shown.
</p>
</figcap>
</figure>
<p>The baseline-identifiers below are used in this specification.
Some of these are determined by baseline-tables contained in a font as
described in <specref ref="font-model"/>. Others are
computed from other font characteristics as described below.
</p>
<glist>
<gitem>
<label>
alphabetic
</label>
<def>
<p>This identifies the baseline used by most alphabetic and syllabic
scripts. These include, but are not limited to, many Western, Southern
Indic, Southeast Asian (non-ideographic) scripts.
</p>
</def>
</gitem>
<gitem>
<label>
ideographic
</label>
<def>
<p>This identifies the baseline used by ideographic scripts. For
historical reasons, this baseline is at the bottom of the ideographic
EM box and not in the center of the ideographic EM box. See the
"central" baseline. The ideographic scripts include Chinese, Japanese,
Korean, and Vietnamese Chu Nom.
</p>
</def>
</gitem>
<gitem>
<label>
hanging
</label>
<def>
<p>This identifies the baseline used by certain Indic scripts. These
scripts include Devanagari, Gurmukhi and Bengali.
</p>
</def>
</gitem>
<gitem>
<label>
mathematical
</label>
<def>
<p>This identifies the baseline used by mathematical symbols.
</p>
</def>
</gitem>
<gitem>
<label>
central
</label>
<def>
<p>This identifies a computed baseline that is at the center of the EM
box. This baseline lies halfway between the text-before-edge and
text-after-edge baselines.
</p>
<note>
<p>
For ideographic fonts, this baseline is
often used to align the glyphs; it is an alternative to the
ideographic baseline.
</p>
</note>
</def>
</gitem>
<gitem>
<label>
middle
</label>
<def>
<p>
This identifies a baseline that is offset from the alphabetic baseline
in the <trait>shift-direction</trait> by 1/2 the value of the x-height
font characteristic. The position of this baseline may be obtained
from the font data or, for fonts that have a font characteristic for
"x-height", it may be computed using 1/2 the "x-height". Lacking
either of these pieces of information, the position of this baseline
may be approximated by the "central" baseline.
</p>
</def>
</gitem>
<gitem>
<label>
text-before-edge
</label>
<def>
<p>
This identifies the before-edge of the EM box. The position of this
baseline may be specified in the baseline-table or it may be
calculated.
</p>
<note>
<p>
The position of this baseline is normally around or at the
top of the ascenders, but it may not encompass all accents that can
appear above a glyph. For these fonts the value of the "ascent" font
characteristic is used. For ideographic fonts, the position of this
baseline is normally 1 EM in the <trait>shift-direction</trait> from
the "ideographic" baseline. However, some ideographic fonts have a
reduced width in the inline-progression-direction to allow tighter
setting. When such a font, designed only for vertical writing-modes,
is used in a horizontal writing-mode, the "text-before-edge" baseline
may be less than 1 EM from the text-after-edge.
</p>
</note>
</def>
</gitem>
<gitem>
<label>
text-after-edge
</label>
<def>
<p>
This identifies the after-edge of the EM box. The position of this
baseline may be specified in the baseline-table or it may be
calculated.
</p>
<note>
<p>
For fonts with descenders, the position of this baseline is normally
around or at the bottom of the descenders. For these fonts the value
of the "descent" font characteristic is used. For ideographic fonts,
the position of this baseline is normally at the "ideographic"
baseline.
</p>
</note>
</def>
</gitem>
</glist>
<p>
There are, in addition, two computed baselines that are only defined for line
areas. For each line-area, there is a dominant-baseline, a baseline-table and
a baseline-table font-size which are those of the nearest ancestor
formatting object that completely contains the whole line.  The
"before-edge" and "after-edge" baselines are defined as follows.
</p>
<glist>
<gitem>
<label>
before-edge
</label>
<def>
<p>
The offset of the "before-edge" baseline of the line from the
dominant-baseline of the line is determined by ignoring all
inline-areas whose alignment-baseline is either
"before-edge" or
"after-edge". For the "before-edge", extents are
measured from the dominant-baseline in the direction toward the top of
the reference-area. The top of the reference-area is defined by the
reference-area's <trait>reference-orientation</trait>. The
"before-edge" baseline offset is set to the maximum extent of the
"before-edges" of the allocation-rectangles of the remaining areas. If
all the inline-areas in a line-area are aligned either to the
"before-edge" or to the "after-edge", then use the offset of the
"text-before-edge" baseline of the line as the offset of the
"before-edge" baseline of the line.
</p>
</def>
</gitem>
<gitem>
<label>
after-edge
</label>
<def>
<p>
The offset of the "after-edge" baseline of the line from the
dominant-baseline of the line is determined by ignoring all
inline-areas whose alignment-baseline is <code role="value">after-edge</code>. For the "after-edge", extents are
measured from the dominant-baseline in the direction toward the bottom
of the reference-area. The top of the reference-area is defined by the
reference-area's <trait>reference-orientation</trait>.  The
"after-edge" baseline offset is set to the negative of the maximum of
(1) the maximum extent of the "after-edges" of the allocation-rectangles
of the remaining areas and (2) the maximum height of the
allocation-rectangles of the areas that are ignored minus the offset
of the "before-edge" baseline of the line.
</p>
<note>
<p>
If all the inline-areas in a line-area are aligned to the "after-edge"
then the specification for the "before-edge" will set the
"before-edge" baseline to coincide with the "text-before-baseline" of
the line. Then, case (2) above will determine an offset to the
"bottom-edge" baseline that will align the "before-edge" of the area
with the greatest height to its allocation-rectangle to "before-edge"
baseline.
</p>
</note>
<note>
<p>
The above specifications for "before-edge" and "after-edge" have
the following three properties: (1) the allocation-rectangles of
all the areas are below the "before-edge", (2) the allocation-rectangles
of all the areas are above the "after-edge", and (3) the distance between
the "before-edge" and the "after-edge" cannot be decreased without
violating (1) or (2). The specified placement of the "before-edge"
and "after-edge" is not the only way that (1)-(3) can be satisfied,
but it is the only way they can be
 satisfied with the smallest possible offset to the "before-edge".
</p>
</note>
</def>
</gitem>
</glist>
<p>
Examples showing "before-edge" and "after-edge" alignment:
</p>
<figure>
<graphic source="ArrowsInText.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>
The rectangles with lines or arrows are images with an intrinsic size
as shown. The rectangles with no arrows represent images that receive
the default, dominant baseline, alignment. The alignment of the other
rectangles is at the furthest point from the arrow head (which is in
the middle when there are two arrowheads).  Examples 1 and 2 show the
"before-edge" alignment is determined by the tallest non-"before-edge"
aligned objects: in example 1 this is the default aligned, arrowhead
free rectangular image and in example 2 this is the double headed
arrow rectangle. Examples 3 and 4 show defaulting to the
"text-before-edge" when all the areas have either "before-edge" or
"after-edge" alignment. In example 3, the images with "before-edge"
alignment has a taller member than do the "after-edge" aligned
images. In example 4, the tallest image is in the "after-edge" aligned
set. Example 5 is a repetition of example 2 with largest image being
an "after-edge" aligned image.
</p>
</figcap>
</figure>
<p>There are also four baselines that are defined only for horizontal writing-modes.
</p>
<glist>
<gitem>
<label>
top
</label>
<def>
<p>This baseline is the same as the "before-edge" baseline in a
horizontal writing-mode and is undefined in a vertical writing mode.
</p>
</def>
</gitem>
<gitem>
<label>
text-top
</label>
<def>
<p>This baseline is the same as the "text-before-edge" baseline in a
horizontal writing-mode and is undefined in a vertical writing mode.
</p>
</def>
</gitem>
<gitem>
<label>
bottom
</label>
<def>
<p>This baseline is the same as the "after-edge" baseline in a
horizontal writing-mode and is undefined in a vertical writing mode.
</p>
</def>
</gitem>
<gitem>
<label>
text-bottom
</label>
<def>
<p>This baseline is the same as the "text-after-edge" baseline in a
horizontal writing-mode and is undefined in a vertical writing mode.
</p>
</def>
</gitem>
</glist>
<p>
The alignment of a formatting object with respect to its parent is
determined by three things: the scaled-baseline-table of the parent
and the alignment-baseline and alignment-point of the formatting
object being aligned. Prior to alignment, the scaled-baseline-table of
the parent may be shifted. The property specifications
below provide the information necessary to align the parent and child
formatting objects.
</p>
<p>
There are four properties that control alignment of formatting objects
to the above set of baselines. These properties are all independent
and are designed so that typically only the specification of
one of the properties is needed to achieve a particular alignment goal.
</p>
<p>
The primary baseline alignment property is the
"dominant-baseline" property. This property has a compound
value with three components. The dominant-baseline-identifier
component is the default alignment-baseline to be used when
aligning two inline areas. The baseline-table component specifies the
positions of the baselines in the font design space coordinates. (See
<specref ref="font-model"/>.) The baseline-table acts
something like a musical staff; it defines particular points along the
<trait>block-progression-direction</trait> to which glyphs and inline
formatting objects can be aligned.  The baseline-table font-size component
provides a scaling factor for the baseline-table.
</p>
<p>
For convenience, the specification will sometimes refer to the
baseline identified by the dominant-baseline-identifier component of
the "dominant-baseline" property as the "dominant
baseline" (in an abuse of terminology).
</p>
<p>
A simple example of alignment is shown in the following figure. The
figure shows the presentation of two inline formatting objects, one
inside the other. These inline formatting objects make up the content
of a line in a block where the writing-mode is "lr-tb"  and the
font is "Helvetica".
The structure of the example is as follows:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Apex &lt;fo:inline&gt;Top&lt;/fo:inline&gt;&lt;/fo:inline&gt;</eg>
</p>
<p>
Because no properties are specified, the initial values apply. Since a
horizontal writing-mode is in use, the dominant-baseline-identifier is
set to "alphabetic" and the baseline-table is taken from the
nominal-font for the block in which the line appears, which, in this case,
is Helvetica.
</p>
<p>
In the figure, the positions of the baselines relative
to the current font size are shown as red (staff) lines. These lines
are labeled with abbreviations of the names of the baselines (e.g.,
TBE for "text-before-edge").  The baseline identified by the
dominant-baseline-identifier (A) is shown in blue. There is a break in the
staff lines to separately show the inner inline formatting
object. This is not necessary for this example, but this distinction
will become important in subsequent examples.
</p>
<p>
The "alignment-baseline" property is the primary control on
the positioning of an inner formatting object with respect to its
parent.  For all but fo:character, the initial value of the
"alignment-baseline" property is "baseline". This
aligns the dominant-baseline of the inner inline formatting object
with the dominant baseline of the outer inline formatting object. This
is shown by the short blue line that connects the two separated
staffs (A) in the figure.
</p>
<p>
The glyphs determined by the fo:characters that are in the content of
the two formatting objects are aligned based on the script to which
the glyph belongs. Since this example only has Latin glyphs, they are
aligned to the "alphabetic" baseline.
</p>
<figure>
<graphic source="AlignIntro-1.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>An inner inline formatting object containing Latin characters aligned
to an outer inline formatting object also containing Latin characters.</p>
</figcap>
</figure>
<p>
In the next figure, the content of the inner inline formatting object
is in Gurmukhi, the script of the Punjabi language. The Gurmukhi
syllables are read as, "guru". Rather than use Unicode values for
these characters, they are symbolized by placing the Latin
transliteration in italic type. The structure of the example becomes:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Apex &lt;fo:inline&gt;<emph>guru</emph>&lt;/fo:inline&gt;&lt;/fo:inline&gt;</eg>
</p>
<p>
The only change from the previous example is that the glyphs of the
Gurmukhi script are aligned to the "hanging" baseline
of the inner inline formatting object. The alignment of that
formatting object itself, with respect to the outer inline
formatting object, is unchanged.
</p>
<figure>
<graphic source="AlignIntro-2.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>An inner inline formatting object containing Gurmukhi characters
aligned to an outer inline formatting object containing Latin
characters.</p>
</figcap>
</figure>
<p>
In the next figure, fragments of the text of the previous examples
make up the content of the outer inline formatting object.
The inner inline formatting object has a change of font-size, however.
The structure is:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Ap<emph>guru</emph>
  &lt;fo:inline font-size='.75em'&gt;
    Ex<emph>ji</emph>
  &lt;/fo:inline&gt;
&lt;/fo:inline&gt;</eg>
</p>
<p>
In this example, the alignment of the inner inline formatting object
itself does not change, nor does the alignment of the smaller glyphs
inside the inner formatting object. The Latin glyphs are still
aligned to the "alphabetic" baseline and the Gurmukhi glyphs,
which are pronounced "ji" are aligned to the
"hanging" baseline. Note also that just changing the
"font-size" property did not change the baseline-table
in effect in the inner inline formatting object.
</p>
<figure>
<graphic source="AlignIntroB-2FS.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>The inner inline formatting object has a reduced font-size.</p>
</figcap>
</figure>
<p>
The next figure is equivalent to the previous example with the
Gurmukhi character replaced by ideographic characters.
These are aligned to the "ideographic" baseline.
</p>
<figure>
<graphic source="AlignIntroB-4FS.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>The previous figure re-done with ideographic glyphs instead of
Gurmukhi glyphs. The EM boxes are shown for the ideograms
to clarify the alignment of these glyphs.
</p>
</figcap>
</figure>
<p>
To change the scaling of the lines of the baseline table, it is
necessary to use the "dominant-baseline" property on the
inner inline formatting object. The value of "reset-size"
causes the baseline-table font-size to be reset from the font-size of
the formatting object on which the "dominant-baseline"
property appears. The next figure shows the effect of this, using the
structure:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Ap<emph>guru</emph>
  &lt;fo:inline font-size='.75em'
             dominant-baseline='reset-size'&gt;
     Ex<emph>ji</emph>
  &lt;/fo:inline&gt;
&lt;/fo:inline&gt;</eg>
</p>
<p>
The alignment of the inner inline formatting object, with respect to
the outer inline formatting object, is still
determined by aligning the dominant baselines. But, the baseline-table
of the inner inline formatting object has been rescaled to the
font-size of the inner inline formatting object. Hence the smaller
glyphs align with each other.
</p>
<figure>
<graphic source="AlignIntroB-3RS.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>The baseline-table of the inner inline formatting object has been
re-sized to match the font-size of the inner inline formatting object.</p>
</figcap>
</figure>
<p>
But, what if it is more important that the small Gurmukhi glyphs align
with the large Gurmukhi glyphs than having the Latin glyphs align.
There are at least two ways to achieve this. The structure:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline dominant-baseline='hanging'&gt;Ap<emph>guru</emph>
  &lt;fo:inline font-size='.75em'
             dominant-baseline='reset-size'&gt;
     Ex<emph>ji</emph>
  &lt;/fo:inline&gt;
&lt;/fo:inline&gt;</eg>
</p>
<p>
is illustrated in the next figure. The "hanging" baseline
becomes the dominant baseline and the initial value of the
"alignment-baseline" property causes the (newly) dominant
"hanging" baselines to be aligned as is shown by the
connection of the blue baselines.
</p>
<figure>
<graphic source="AlignIntroB-3DH.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>Changing the dominant baseline to the "hanging" baseline
causes the inner inline formatting object to be aligned on its
parent's "hanging" baseline.</p>
</figcap>
</figure>
<p>
It is also possible to achieve the effect of the above figure without
changing the dominant baseline. Instead it is sufficient to explicitly
specify that the inner inline formatting object is aligned on its
"hanging" baseline. This is done by:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Ap<emph>guru</emph>
  &lt;fo:inline font-size='.75em'
             dominant-baseline='reset-size'
             alignment-baseline='hanging'&gt;
     Ex<emph>ji</emph>
  &lt;/fo:inline&gt;
&lt;/fo:inline&gt;</eg>
</p>
<p>
The only change this approach would make in the above figure is to
color the "hanging" baseline red and keep the
"alphabetic" baseline as the (blue) dominant baseline. This
baseline in the inner inline formatting object would not (as it does
not in the above figure) align with the "alphabetic"
baseline in the outer inline formatting object.
</p>
<p>
The third baseline alignment property is the
"baseline-shift" property. Like the properties other
than the "dominant-baseline" property, this property does
not change the baseline-table or the baseline-table font-size. It does
shift the whole baseline table of the parent formatting object so that
when an inner inline formatting object is aligned to one of the
parents baselines, the position of the inner inline formatting object
is shifted. This is illustrated in the next figure. The structure
which creates this figure is:
</p>
<p>
<eg xml:space="preserve">
&lt;fo:inline&gt;Ap
  &lt;fo:inline baseline-shift='super'&gt;1<emph>ji</emph>&lt;/fo:inline&gt;
&lt;/fo:inline&gt;
</eg>
</p>
<p>
Because the whole set of baseline-table staff lines are shifted to the
position of the superscript baseline: it does not matter to which
baseline the glyphs in the superscript are aligned. The European
number "1" is aligned to the "alphabetic" baseline
and the Gurmukhi syllable "ji" is aligned to the
"hanging" baseline.
</p>
<figure>
<graphic source="AlignIntroB-5.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>Using a "baseline-shift" for a super-script
(or a sub-script).</p>
</figcap>
</figure>
<p>
It is more common for the font-size of the super-script text to be
smaller than the font-size of the text to which it is appended.
Consider:
</p>
<p>
<eg xml:space="preserve">&lt;fo:inline&gt;Ap
  &lt;fo:inline font-size='.75em'
             baseline-shift='super'&gt;
    1<emph>ji</emph>
  &lt;/fo:inline&gt;
&lt;/fo:inline&gt;</eg>
</p>
<p>
Because changing the font-size on a super-script (or sub-script) is
common, this is the one case where changing the font-size does cause
the baseline-table font-size to be reset when the
"dominant-baseline" property has its initial value. After
the rescaling, the default alignment to the dominant baseline
positions the inline formatting object for the super-script to the
dominant baseline position in the shifted baseline-table of the parent
formatting object.
</p>
<figure>
<graphic source="AlignIntroB-5FS.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>Reducing the font-size of the super-script automatically resets the
baseline-table size so that mixed languages in the super-script stay
mutually aligned.</p>
</figcap>
</figure>

<p>
The fourth alignment property is the "alignment-adjust"
property. This property is primarily used for objects, such as some
graphics, that do not belong to a particular script and do not have a
predefined alignment point. The "alignment-adjust"
property allows the author to assign where, on the start-edge
of the object, the
alignment point for that object lies.
</p>


<div3 id="alignment-adjust"><head><quote>alignment-adjust</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | baseline | before-edge
| text-before-edge | middle | central | after-edge
| text-after-edge | ideographic | alphabetic | hanging | mathematical
| &lt;percentage&gt; | &lt;length&gt;
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>The "alignment-adjust" property allows more precise alignment of
areas generated by formatting objects,
in particular for formatting objects,
such as graphics, that do not have a baseline-table
or lack the desired baseline in their baseline-table. With the
"alignment-adjust" property, the position of the baseline identified
by the "alignment-baseline" can be explicitly determined.
</p>
<p>Values for the property have the following meaning:</p>

<glist>

<gitem><label>auto</label><def><p>For a glyph, the alignment-point is the intersection of the
start-edge of the allocation-rectangle of the glyph-area and the
block-progression-direction position of the alignment-point from the
font as specified in <specref ref="font-model"/>.
For other inline-areas, the alignment-point is at the intersection of
the start-edge of the allocation-rectangle and the baseline identified by
the "alignment-baseline" property if this baseline exists in the
baseline-table for the dominant-baseline for the inline-area. If the
baseline-identifier does not exist in the baseline-table for the glyph
or other inline-area, then the User Agent may either use heuristics to
determine where that missing baseline would be or may use the
dominant-baseline as a fallback. For areas generated by a
fo:external-graphic, or fo:instream-foreign-object, the alignment
point is at the intersection of the start-edge and after-edge of the
allocation-rectangle of the area.  </p></def></gitem>
<gitem><label>baseline</label><def><p>The alignment-point is at the intersection of
the start-edge of the allocation-rectangle and the
dominant-baseline of the area.
</p></def></gitem>
<gitem><label>before-edge</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "before-edge"
baseline of the area.
</p>
</def></gitem>
<gitem><label>text-before-edge</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"text-before-edge" baseline of the area.
</p>
</def></gitem>
<gitem><label>central</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"central" baseline of the area.</p>
</def></gitem>
<gitem><label>middle</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"middle" baseline of the area.</p>
</def></gitem>
<gitem><label>after-edge</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "after-edge" baseline of
the area.
</p>
</def></gitem>
<gitem><label>text-after-edge</label><def><p>
The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"text-after-edge" baseline of the area.
</p>
</def></gitem>
<gitem><label>ideographic</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"ideographic" baseline of the area.
</p></def></gitem>
<gitem><label>alphabetic</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"alphabetic" baseline of the area.
</p></def></gitem>
<gitem><label>hanging</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"hanging" baseline of the area.
</p></def></gitem>
<gitem><label>mathematical</label><def><p>The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the
"mathematical" baseline of the area.
</p></def></gitem>
<gitem><label>top</label><def><p>The alignment-point is at the intersection of the start-edge
of the allocation-rectangle and the "top" baseline of the area if the
writing-mode is horizontal. Otherwise, the dominant-baseline is used.
</p>
</def></gitem>
<gitem><label>bottom</label><def>
<p>
The alignment-point is at the intersection of the start-edge of the
allocation-rectangle and the "bottom" baseline of the area if the
writing-mode is horizontal. Otherwise, the dominant-baseline is used.
</p>
</def></gitem>
<gitem><label>text-top</label><def>
<p>
The alignment-point is at the intersection of the start-edge of the
allocation-rectangle and the "text-top" baseline of the area if the
writing-mode is horizontal. Otherwise, the dominant-baseline is used.
</p>
</def></gitem>
<gitem><label>text-bottom</label><def>
<p>
The alignment-point is at the intersection of the start-edge
of the allocation-rectangle and the "text-bottom" baseline of the area
if the writing-mode is horizontal. Otherwise, the dominant-baseline is
used.  </p></def></gitem>

<gitem><label>&lt;percentage&gt;</label><def><p>The computed value of the property is this percentage multiplied by
the area's computed "height" if the area is generated by an
fo:external-graphic or fo:instream-foreign-object,
the "font-size" if the area was generated by an fo:character, and the "line-height"
otherwise.  The alignment-point is on the start-edge of the
allocation-rectangle of the area
being aligned. Its position along the start-edge relative to the
intersection of the dominant-baseline and the start-edge is offset by
the computed value. The offset is opposite to the <trait>shift-direction</trait> if
that value is positive and in the <trait>shift-direction</trait> if that value is
negative value).  A value of "0%" makes the dominant-baseline the
alignment point.
</p>
</def></gitem>

<gitem><label>&lt;length&gt;</label><def><p>The alignment-point is on the start-edge of the
allocation-rectangle of the area being
aligned. Its position along the start-edge relative to the
intersection of the dominant-baseline and the start-edge is offset by
&lt;length&gt; value. The offset is opposite to the <trait>shift-direction</trait> if
that value is positive and in the <trait>shift-direction</trait> if that value is
negative. A value of "0cm" makes the dominant-baseline the
alignment point.
</p>
</def></gitem>

</glist>

</div3>

<div3 id="alignment-baseline"><head><quote>alignment-baseline</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | baseline | before-edge
| text-before-edge | middle | central | after-edge
| text-after-edge | ideographic | alphabetic | hanging | mathematical
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property specifies how an object is aligned with respect to
its parent. That is, to which of the parent's baselines the
alignment-point of this object is aligned.
The alignment-adjust property specifies how the alignment point
is determined. It defaults to the baseline with the same name
as the computed value of the alignment-baseline property.
That is, the
position of "ideographic" alignment-point in the
<trait>block-progression-direction</trait> is the position of the
"ideographic" baseline in the baseline-table of the object being
aligned.
</p>
<p>Values have the following meanings:</p>
<glist>

<gitem><label>auto</label><def>
<p><spot id="jf000081_3a"/>The computed
value depends on the kind of object on which it is being used.
For fo:character, the value
is the dominant-baseline of the script to which the character belongs.
If the value of the "script" property on the parent formatting object is other than "auto" then use the baseline for that script; otherwise, use the dominant-baseline of the parent.
For all other objects, the value is computed as for the "baseline" value.
</p>
</def></gitem>
<gitem><label>baseline</label><def><p>The alignment-point of the object being aligned is aligned with the
dominant-baseline of the parent area.
</p></def></gitem>
<gitem><label>before-edge</label><def><p>The alignment-point of the object being aligned is aligned with the "before-edge"
baseline of the parent area.
</p>
</def></gitem>
<gitem><label>text-before-edge</label><def><p>The alignment-point of the object being aligned is aligned with the
"text-before-edge" baseline of the parent area.
</p>
</def></gitem>
<gitem><label>central</label><def><p>The alignment-point of the object being aligned is aligned with the
"central" baseline of the parent area.</p>
</def></gitem>
<gitem><label>middle</label><def><p>The alignment-point of the object being aligned is aligned with the
"middle" baseline of the parent area.</p>
</def></gitem>
<gitem><label>after-edge</label><def><p>The alignment-point of the object being aligned is aligned with the "after-edge" baseline of
the parent area.
</p>
</def></gitem>
<gitem><label>text-after-edge</label><def><p>
The alignment-point of the object being aligned is aligned with the
"text-after-edge" baseline of the parent area.
</p>
</def></gitem>
<gitem><label>ideographic</label><def><p>The alignment-point of the object being aligned is aligned with the
"ideographic" baseline of the parent area.
</p></def></gitem>
<gitem><label>alphabetic</label><def><p>The alignment-point of the object being aligned is aligned with the
"alphabetic" baseline of the parent area.
</p></def></gitem>
<gitem><label>hanging</label><def><p>The alignment-point of the object being aligned is aligned with the
"hanging" baseline of the parent area.
</p></def></gitem>
<gitem><label>mathematical</label><def><p>The alignment-point of the object being aligned is aligned with the
"mathematical" baseline of the parent area.
</p></def></gitem>
<gitem><label>top</label><def><p>The alignment-point of the object being aligned is aligned
with the "top" baseline of the parent area if the writing-mode is
horizontal. Otherwise, the dominant-baseline is used.  </p></def></gitem>
<gitem><label>bottom</label><def><p>The alignment-point of the object being aligned is aligned
with the "bottom" baseline of the parent area if the writing-mode is
horizontal. Otherwise, the dominant-baseline is used.  </p></def></gitem>
<gitem><label>text-top</label><def><p>The alignment-point of the object being aligned is aligned
with the "text-top" baseline of the parent area if the writing-mode is
horizontal. Otherwise, the dominant-baseline is used.  </p></def></gitem>
<gitem><label>text-bottom</label><def><p>The alignment-point of the object being aligned is aligned
with the "text-bottom" baseline of the parent area if the writing-mode is
horizontal. Otherwise, the dominant-baseline is used.  </p></def></gitem>

</glist>

</div3>

<div3 id="baseline-shift"><head><quote>baseline-shift</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">baseline | sub | super | &lt;percentage&gt; | &lt;length&gt;
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">baseline</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refers to the "line-height" of the parent area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>The "baseline-shift" property allows repositioning of the
dominant-baseline relative to the dominant-baseline of the parent
area. The shifted object might be a sub- or superscript. Within the
shifted object, the whole baseline-table is offset; not just a single
baseline. The amount of the shift is determined from information from
the parent area, the sub- or superscript offset from the
<trait>nominal-font</trait> of the parent area, percent of the
"line-height" of the parent area or an absolute value.
</p>
<p><spot id="jf000081_2"/>When the value of "baseline-shift"
is other than
"0", then the baseline-table font-size component of the
"dominant-baseline" property is re-computed to use the "font-zise"
applicable to the formatting object on which the non-zero "baseline-shift"
property is specified.
</p>
<p>Values for the property have the following meaning:</p>

<glist>

<gitem><label>baseline</label><def><p>There is no baseline shift; the dominant-baseline remains in its original position.
</p></def></gitem>
<gitem><label>sub</label><def><p>The dominant-baseline is shifted to the default position for
subscripts. The offset to this position is determined by the font data
for the nominal font as adjusted by the dominant baseline-table font-size.
If there is no applicable font data the User Agent may use heuristics
to determine the offset.
</p></def></gitem>
<gitem><label>super</label><def><p>The dominant-baseline is shifted to the default position for
superscripts. The offset to this position is determined by the font
data for the nominal font as adjusted by the dominant baseline-table
font-size.
If there is no applicable font data the User Agent may use heuristics
to determine the offset.
</p></def></gitem>

<gitem><label>&lt;percentage&gt;</label><def><p>The computed value of the property is this percentage multiplied by
the computed "line-height" of the parent area.  The dominant-baseline
is shifted in the <trait>shift-direction</trait> (positive value) or opposite to the
<trait>shift-direction</trait> (negative value) of the parent area by the computed
value. A value of "0%" is equivalent to "baseline".
</p>
</def></gitem>

<gitem><label>&lt;length&gt;</label><def><p>The dominant-baseline is shifted in the <trait>shift-direction</trait> (positive
value) or opposite to the <trait>shift-direction</trait> (negative value) of the
parent area by the &lt;length&gt; value. A value of "0cm" is equivalent
to "baseline".
</p>
</def></gitem>

</glist>

<note>
<p>Although it may seem that "baseline-shift" and "alignment-adjust"
properties are doing the same thing, there is an important although,
perhaps, subtle difference. For "alignment-adjust" the percentage
values refer to the "line-height" of the area being aligned. For
"baseline-shift" the percentage values refer to the "line-height" of
the parent. Similarly, it is the "sub" and "super" offsets of the
parent that are used to align the shifted baseline rather than the
"sub" or "super" offsets of the areas being positioned. To ensure a
consistent sub- or superscript position, it makes more sense to use
the parent as the reference rather than the subscript formatting object which
may have a changed "line-height" due to "font-size" changes in the
sub- or superscript formatting object.
</p>
<p>Using the "alignment-adjust" property is more suitable for positioning
objects, such as graphics, that have no internal textual
structure. Using the "baseline-shift" property is intended for sub-
and superscripts where the positioned object may itself be a textual
object. The baseline-shift provides a way to define a specific
baseline offset other than the named offsets that are defined relative
to the dominant-baseline. In addition, having "baseline-shift" makes
it easier for tool to generate the relevant properties; many
formatting programs already have a notion of baseline
shift.
</p>
</note>


</div3>

<div3 id="display-align"><head><quote>display-align</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | before | center | after
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-cell, fo:region-body, fo:region-before, fo:region-after, fo:region-start, fo:region-end
</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property specifies the alignment, in the block-progression-direction,
of the areas that are the children of a reference-area.
</p>
<p>Values for the property have the following meaning:</p>

<glist>

<gitem><label>auto</label><def><p>If the "relative-align" property applies to this formatting object
the "relative-align" property is used. If not, this value is treated
as if "before" had been specified.
</p></def></gitem>
<gitem><label>before</label><def><p>The before-edge of the allocation-rectangle of the first
child area is placed coincident with the before-edge of the
content-rectangle of the reference-area.
</p></def></gitem>
<gitem><label>center</label><def><p>The child areas are placed such that the
distance
between the before-edge of the allocation-rectangle of the
first child area and the before-edge of the content-rectangle
of the reference-area
is the same as the distance
between the after-edge of the allocation-rectangle of the
last child area and the after-edge of the content-rectangle
of the reference-area.
</p></def></gitem>
<gitem><label>after</label><def><p>The after-edge of the allocation-rectangle of the last
child area is placed coincident with the after-edge of the
content-rectangle of the reference-area.
</p></def></gitem>

</glist>

</div3>

<div3 id="dominant-baseline"><head><quote>dominant-baseline</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | use-script | no-change | reset-size
| ideographic | alphabetic | hanging | mathematical
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all inline formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>The "dominant-baseline" property is used to determine or
<spot id="jf000081_1b"/>re-determine a scaled-baseline-table. A scaled-baseline-table is a
compound value with three components: a baseline-identifier for the
dominant-baseline, a baseline-table and a baseline-table font-size.
Some values of the property re-determine all three values; other only
re-establish the baseline-table font-size.  When the initial value,
"auto", would give an undesired result, this property can be used to
explicitly set the desire scaled-baseline-table.
</p>
<p>Values for the property have the following meaning:</p>

<glist>

<gitem><label>auto</label><def>
<p>If this property occurs on a block-level formatting object, then
the computed value depends on the value of the "script"
property. There are two cases. If the value of the "script" property
is "auto", then, if the "writing-mode" is horizontal, then the value of
the dominant-baseline component is "alphabetic", else if the
"writing-mode" is vertical, then the value of the dominant-baseline
component is "central". On the other hand, if the value of the "script"
property is anything other than "auto", then the value of the "script"
property is used to select the dominant baseline. The "writing-mode",
whether horizontal or vertical, is used to select the baseline-table
that corresponds to that baseline. The baseline-table font-size
component is set to the value of the "font-size" property on the
formatting object on which the "dominant-baseline" property occurs.
</p>
<p>
Otherwise, if this property is not on a block-level formatting object,
then the dominant-baseline and the baseline-table components remain
the same as those of the parent formatting object. If the computed
"baseline-shift" value actually shifts the baseline, then the
baseline-table font-size component is set to the value of the
"font-size" property on the formatting object on which the
"dominant-baseline" property occurs, otherwise the baseline-table
font-size remains the same as that of the parent formatting object. If
there is no parent formatting object, the scaled-baseline-table value
is constructed as above for block-level formatting-objects.
</p></def></gitem>
<gitem><label>use-script</label><def><p>The dominant-baseline and the baseline-table components
are
set using the value of the "script" property. The value of the "script"
property is used to select the dominant baseline. The "writing-mode",
whether horizontal or vertical, is used to select the appropriate set
of baseline-tables and the dominant baseline is used to select the
baseline-table that corresponds to that baseline. The baseline-table
font-size component is set to the value of the "font-size" property on
the formatting object on which the "dominant-baseline" property
occurs.
</p></def></gitem>
<gitem><label>no-change</label><def><p>
The dominant-baseline, the baseline-table, and the baseline-table
font-size remain the same as that of the parent formatting object.
</p></def></gitem>
<gitem><label>reset-size</label><def><p>The dominant-baseline and the baseline-table remain the same, but the
baseline-table font-size is changed to the value of the "font-size"
property on this formatting object. This re-scales the baseline-table for the
current "font-size".
</p></def></gitem>
<gitem><label>ideographic</label><def><p>The dominant-baseline is set to the "ideographic" baseline using the
baseline-table and baseline-table font-size of the parent area, the
baseline-table is changed to correspond to the "ideographic" baseline,
and the baseline-table font-size is changed to the value of the
"font-size" property on this formatting object.
</p></def></gitem>
<gitem><label>alphabetic</label><def><p>The dominant-baseline is set to the "alphabetic" baseline using the
baseline-table and baseline-table font-size of the parent area, the
baseline-table is changed to correspond to the "alphabetic" baseline, and
the baseline-table font-size is changed to the value of the
"font-size" property on this formatting object.
</p></def></gitem>
<gitem><label>hanging</label><def><p>The dominant-baseline is set to the "hanging" baseline using the
baseline-table and baseline-table font-size of the parent area, the
baseline-table is changed to correspond to the "hanging" baseline, and
the baseline-table font-size is changed to the value of the
"font-size" property on this formatting object.
</p></def></gitem>
<gitem><label>mathematical</label><def><p>The dominant-baseline is set to the "mathematical" baseline using the
baseline-table and baseline-table font-size of the parent area, the
baseline-table is changed to correspond to the "mathematical"
baseline, and the baseline-table font-size is changed to the value of
the "font-size" property on this formatting object.
</p></def></gitem>

</glist>

<p>If there is no baseline-table in the nominal font or if the
baseline-table lacks an entry for the desired baseline, then the User
Agent may use heuristics to determine the position of the desired
baseline.
</p>


</div3>

<div3 id="relative-align"><head><quote>relative-align</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">before | baseline
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">before</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:list-item, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property specifies the alignment, in the block-progression-direction,
between two or more areas.
If the "display-align" property applies to this formatting object and
has a value other than "auto" this property is ignored.
</p>
<p>Values for the property have the following meaning:</p>

<glist>

<gitem><label>before</label><def><p>For an fo:table-cell: for each row, the first child area of
all the cells that start in the row and that have this value is placed
such that the before-edge of the content-rectangle
is placed at
the same distance from the row grid. In addition, at least, one
of these first child areas of the cells
has to be placed with the before-edge of its allocation-rectangle
coincident with the before-edge of the content-rectangle
of the table-cell.
</p>
<p>For an fo:list-item the before-edge of the first area descendant
generated by the fo:list-item-label is placed coincident with the
before-edge of the area generated by the fo:list-item.
Similarly the before-edge of the first
area descendant generated by the fo:list-item-body is placed coincident
with the before-edge of the area generated by the fo:list-item.
</p></def></gitem>
<gitem><label>baseline</label><def><p>For an fo:table-cell: for each row, the first child area of
all the cells that start in the row and that have this value is placed
such that the dominant-baseline, as specified on the fo:table-row,
of the first line is placed at
the same distance from the row grid. In addition, at least, one
of these first child areas of the cells
has to be placed with the before-edge of its allocation-rectangle
coincident with the before-edge of the content-rectangle
of the table-cell.
</p>
<note><p>That is, for all applicable cells the baseline of all the first
lines are all aligned and placed the minimum distance down in the
block-progression-direction. It should be noted that the start-edges
of the content-rectangles of the cells need not align.
</p>
</note>
<p>For an fo:list-item the distance between the baseline of
the first line-area of the first area descendant generated by the
fo:list-item-label is the same as the distance between
the baseline of the
first line-area of the first area descendant generated by the
fo:list-item-body. In addition, at least, one of these first
area descendants has to be placed such that the before-edge of its
allocation-rectangle is coincident with the before-edge of the
content-rectangle of the list-item.
</p></def></gitem>

</glist>

</div3>


</div2>

<div2><head>Area Dimension Properties</head>

<div3 id="block-progression-dimension"><head><quote>block-progression-dimension</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | &lt;length&gt; | &lt;percentage&gt; | &lt;length-range&gt;
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>This property specifies the block-progression-dimension
of the content-rectangle.
The user
may specify an explicit size (&lt;length&gt; or &lt;percentage&gt;)
or a &lt;length-range&gt;, allowing the size to be adjusted by the formatter.</p>
<p>This property does not apply when the "line-height" property
applies to the same dimension of the
areas generated by this formatting object.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>No constraint is imposed by this property.
The block-progression-dimension is determined by the formatter
taking all other constraints into account.</p>
<p>Specifying block-progression-dimension="auto" will set: </p>
<ulist><item><p>block-progression-dimension.minimum="auto"</p></item>
<item><p>block-progression-dimension.optimum="auto"</p></item>
<item><p>block-progression-dimension.maximum="auto"</p></item></ulist></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed block-progression-dimension.</p>
<p>Specifying block-progression-dimension=&lt;length&gt; will set: </p>
<ulist><item><p>block-progression-dimension.minimum=&lt;length&gt;</p></item>
<item><p>block-progression-dimension.optimum=&lt;length&gt;</p></item>
<item><p>block-progression-dimension.maximum=&lt;length&gt;</p></item></ulist></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage block-progression-dimension. The
percentage is calculated with respect to the corresponding dimension
of the closest area ancestor that was generated by a block-level
formatting object.
If that dimension
is not specified explicitly (i.e., it depends
on content's block-progression-dimension), the value is interpreted
as "auto".</p>
<p>Specifying block-progression-dimension=&lt;percentage&gt; will
set: </p>
<ulist><item><p>block-progression-dimension.minimum=&lt;percentage&gt;</p></item>
<item><p>block-progression-dimension.optimum=&lt;percentage&gt;</p></item>
<item><p>block-progression-dimension.maximum=&lt;percentage&gt;</p></item></ulist></def></gitem>
<gitem><label>&lt;length-range&gt;</label><def><p>Specifies the dimension as a length-range, consisting
of:</p>
<ulist><item><p>block-progression-dimension.optimum</p>
<p>This is the preferred dimension of the area created;<spot id="aj000029_80"/>
if minimum and
maximum are identical, the area is of a fixed dimension. If they are, respectively,
smaller and larger than optimum, then the area may be adjusted in
dimension within that range.</p>
<p>A value of "auto" may be specified for optimum, indicating that
there is no preferred dimension, but that the intrinsic or resolved dimension
of the area should be used. If minimum and/or maximum are not also
auto, then the dimension shall be constrained between those limits.</p></item>
<item><p>block-progression-dimension.minimum</p></item>
<item><p>block-progression-dimension.maximum</p>
<p>A value of "auto" may be specified for block-progression-dimension.maximum.
This indicates that there is no absolute maximum limit, and the
object may be sized to its intrinsic size.</p></item></ulist>
<p>Negative values for block-progression-dimension.minimum, block-progression-dimension.optimum,
and block-progression-dimension.maximum are invalid and are treated
as if "0pt" had been specified.</p>
<p>If the computed value of block-progression-dimension.maximum
is less than the computed value of block-progression-dimension.optimum,
it is treated as if the value of block-progression-dimension.optimum
had been specified. </p>
<p>If the computed value of block-progression-dimension.minimum
is greater than the computed value of block-progression-dimension.optimum,
it is treated as if the value of block-progression-dimension.optimum
had been specified. </p>
<p>If the value of block-progression-dimension.optimum is "auto" and
the computed value of block-progression-dimension.minimum is greater
than the computed value of block-progression-dimension.maximum
the block-progression-dimension.minimum is treated as if the value of
block-progression-dimension.maximum had been specified.</p>
</def></gitem></glist>
</css-cited></div3>

<div3 id="content-height"><head><quote>content-height</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | scale-to-fit | &lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:external-graphic, fo:instream-foreign-object</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">intrinsic height</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>

<gitem><label>auto</label><def><p>The content-height should be the intrinsic content-height.</p></def></gitem>
<gitem><label>scale-to-fit</label><def><p><spot id="c21a"/>A size of the content-height equal
to the height of the viewport.
This value implies a certain scaling factor to be applied onto the
content.
</p></def></gitem>

<gitem><label>&lt;length&gt;</label><def><p>An absolute size for the content-height.
This value implies a certain scaling factor to be applied onto the
content.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>A percentage representing a scaling factor for
the content-height.</p></def></gitem>
</glist>
<p>Specifies the content-height of some object
(e.g., an external graphic). If the value is a percentage,
the value of this property is the percentage applied to the
intrinsic height.</p>


</div3>

<div3 id="content-width"><head><quote>content-width</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | scale-to-fit | &lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:external-graphic, fo:instream-foreign-object</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">intrinsic height</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>

<gitem><label>auto</label><def><p>The content-width should be the intrinsic content-width.</p></def></gitem>
<gitem><label>scale-to-fit</label><def><p><spot id="c21b"/>A size of the content-width equal
to the height of the viewport.
This value implies a certain scaling factor to be applied onto the
content.
</p></def></gitem>

<gitem><label>&lt;length&gt;</label><def><p>An absolute size for the content-width.
This value implies a certain scaling factor to be applied onto the
content.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>A percentage representing a scaling factor for
the content-width.</p></def></gitem>
</glist>
<p>Specifies the content-width of some object
(e.g., an external graphic). If the value is a percentage,
the value of this property is the percentage applied to the intrinsic width.</p>


</div3>

<div3 id="height"><head><quote>height</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements but non-replaced inline elements, table columns,
and column groups</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-height" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-height</xspecref>.
</p>


<p>This property specifies the content height of boxes generated
by block-level and replaced elements.</p>
<p>This property does not apply to non-replaced inline-level elements.
The height of a <spot id="aj000029_81"/>non-replaced inline element's boxes is given by
the element's (possibly inherited) 'line-height' value.</p>
<p> Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>The height depends on the values of other properties.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed height.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage height. The percentage is calculated
with respect to the height of the generated box's containing block.
If the height of the containing block is not specified explicitly
(i.e., it depends on content height), the value is interpreted like
"auto".</p></def></gitem></glist>
<p>Negative values for 'height' are illegal.</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>
<p>For a discussion of the "height" property in tables see:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html</xspecref>
</p>


</div3>

<div3 id="inline-progression-dimension"><head><quote>inline-progression-dimension</quote></head>
<css-cited border="thin"><p>Writing-mode Relative Equivalent of a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | &lt;length&gt; | &lt;percentage&gt; | &lt;length-range&gt;
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>This property specifies the inline-progression-dimension
of the content-rectangle. The user
may specify an explicit size (&lt;length&gt; or &lt;percentage&gt;)
or a &lt;length-range&gt;, allowing the size to be adjusted by the formatter.</p>
<p>This property does not apply when the "line-height" property
applies to the same dimension of the
areas generated by this formatting object.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>No constraint is imposed by this property.
The block-progression-dimension is determined by the formatter
taking all other constraints into account.</p>
<p>Specifying inline-progression-dimension=auto will set: </p>
<ulist><item><p>inline-progression-dimension.minimum=auto</p></item>
<item><p>inline-progression-dimension.optimum=auto</p></item>
<item><p>inline-progression-dimension.maximum=auto</p></item></ulist></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed inline-progression-dimension.</p>
<p>Specifying inline-progression-dimension=&lt;length&gt; will set: </p>
<ulist><item><p>inline-progression-dimension.minimum=&lt;length&gt;</p></item>
<item><p>inline-progression-dimension.optimum=&lt;length&gt;</p></item>
<item><p>inline-progression-dimension.maximum=&lt;length&gt;</p></item></ulist></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage inline-progression-dimension. The
percentage is calculated with respect to the corresponding dimension
of the closest area ancestor that was generated by a block-level
formatting object.
If that dimension
is not specified explicitly (i.e., it depends
on content's inline-progression-dimension), the value is interpreted
as "auto".</p>
<p>Specifying inline-progression-dimension=&lt;percentage&gt; will
set: </p>
<ulist><item><p>inline-progression-dimension.minimum=&lt;percentage&gt;</p></item>
<item><p>inline-progression-dimension.optimum=&lt;percentage&gt;</p></item>
<item><p>inline-progression-dimension.maximum=&lt;percentage&gt;</p></item></ulist></def></gitem>
<gitem><label>&lt;length-range&gt;</label><def><p>Specifies the dimension as a length-range, consisting
of:</p>
<ulist><item><p>inline-progression-dimension.optimum</p>
<p>This is the preferred dimension of the area created, if minimum and
maximum are identical, the area is of a fixed dimension. If they are, respectively,
smaller and larger than optimum, then the area may be adjusted in
dimension within that range.</p>
<p>A value of "auto" may be specified for optimum, indicating that
there is no preferred dimension, but that the intrinsic or resolved dimension
of the area should be used. If minimum and/or maximum are not also
auto, then the dimension shall be constrained between those limits.</p></item>
<item><p>inline-progression-dimension.minimum</p></item>
<item><p>inline-progression-dimension.maximum</p>
<p>A value of "auto" may be specified for inline-progression-dimension.maximum.
This indicates that there is no absolute maximum limit, and the
object may be sized to its intrinsic size.</p></item></ulist>
<p>Negative values for inline-progression-dimension.minimum, inline-progression-dimension.optimum,
and inline-progression-dimension.maximum are invalid and are treated
as if "0pt" had been specified.</p>
<p>If the computed value of inline-progression-dimension.maximum
is less than the computed value of inline-progression-dimension.optimum,
it is treated as if the value of inline-progression-dimension.optimum
had been specified. </p>
<p>If the computed value of inline-progression-dimension.minimum
is greater than  the computed value of inline-progression-dimension.optimum,
it is treated as if the value of inline-progression-dimension.optimum
had been specified. </p></def></gitem></glist>
</css-cited></div3>

<div3 id="max-height"><head><quote>max-height</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | none | inherit </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements except non-replaced inline elements and table
elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-height" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-height</xspecref>.
</p>


<p>These two properties <spot id="aj000029_82a"/>["max-height" and "max-width"]
allow authors to constrain box heights to
a certain range. Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>(Only on "max-height") No limit on the height of the box.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed minimum or maximum computed height.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage for determining the computed value.
The percentage is calculated with respect to the height of the generated
box's containing block. If the height of the containing block is
not specified explicitly (i.e., it depends on content height), the
percentage value is interpreted like "auto".</p></def></gitem></glist>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>


</div3>

<div3 id="max-width"><head><quote>max-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements except non-replaced inline elements and table
elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-width</xspecref>.
</p>


<p>These two properties <spot id="aj000029_82b"/>["max-height" and "max-width"]
allow authors to constrain box widths to
a certain range. Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>(Only on "max-width") No limit on the width of the box.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed minimum or maximum computed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage for determining the computed value.
The percentage is calculated with respect to the width of the generated
box's containing block.</p></def></gitem></glist></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>


</div3>

<div3 id="min-height"><head><quote>min-height</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements except non-replaced inline elements and table
elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to height of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-height" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-height</xspecref>.
</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>


</div3>

<div3 id="min-width"><head><quote>min-width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on UA</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements except non-replaced inline elements and table
elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-width</xspecref>.
</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>


</div3>

<div3 id="scaling"><head><quote>scaling</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">uniform | non-uniform | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">uniform</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:external-graphic, fo:instream-foreign-object</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>

<gitem><label>uniform</label><def><p>Scaling should preserve the aspect ratio.</p></def></gitem>
<gitem><label>non-uniform</label><def><p>Scaling need not preserve the aspect ratio.</p></def></gitem>

</glist>
<p>Specifies whether scaling needs to preserve the
intrinsic aspect ratio.</p>


</div3>

<div3 id="scaling-method"><head><quote>scaling-method</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | integer-pixels | resample-any-method | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:external-graphic, fo:instream-foreign-object</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>

<gitem><label>auto</label><def><p>The User Agent is free to choose either resampling,
integer scaling, or any other scaling method.
</p></def></gitem>
<gitem><label>integer-pixels</label><def><p>The User Agent should scale the image
such that each pixel in the original image is scaled
to the nearest integer number of device-pixels that
yields an image less-then-or-equal-to the image size derived
from the content-height, content-width, and scaling properties.
</p></def></gitem>
<gitem><label>resample-any-method</label><def><p>The User Agent should resample the supplied
image to provide an image that fills the size derived
from the content-height, content-width, and scaling properties.
The user agent may use any sampling method.
</p></def></gitem>

</glist>

<p>This property is used to indicate a preference in the scaling/sizing
tradeoff to be used when formatting bitmapped graphics.</p>
<note><p>This is defined as a preference to allow the user agent the
flexibility to adapt to device limitations and to accommodate
over-constrained situations involving min/max dimensions and
scale factors.</p>
</note>



</div3>

<div3 id="width"><head><quote>width</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements but non-replaced inline elements, table-rows,
and row groups</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-width" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-width</xspecref>.
</p>


<p>This property specifies the content width of boxes generated
by block-level and replaced elements.</p>
<p>This property does not apply to non-replaced inline-level elements.
The width of a non-replaced inline element's boxes is that of the
rendered content within them (before any relative offset of children).
Recall that inline boxes flow into line boxes. The width of line boxes
is given by their containing block, but may be shorted by the
presence of floats.</p>
<p>The width of a replaced element's box is intrinsic and may be
scaled by the user agent if the value of this property is different
than 'auto'.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>The width depends on the values of other properties.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>Specifies a percentage width. The percentage is calculated
with respect to the width of the generated box's containing block.</p></def></gitem></glist>
<p>Negative values for "width" are illegal.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL, this property is mapped to either "inline-progression-dimension"
or "block-progression-dimension", based on the applicable values
of the "writing-mode" and "reference-orientation" properties.
Details on the mapping are given in <specref ref="refinement"/>.
</p>


</div3>

</div2>

<div2><head>Block and Line-related Properties</head>

<div3 id="hyphenation-keep"><head><quote>hyphenation-keep</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | column | page | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_43"/>auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>No restriction applies. The word may
be hyphenated at the end of any region.</p></def></gitem>
<gitem><label>column</label><def><p>Both parts of a hyphenated word shall
lie within a single column.</p></def></gitem>
<gitem><label>page</label><def><p>Both parts of a hyphenated word shall
lie within a single page.</p></def></gitem>
</glist>
<p>Controls whether hyphenation can be
performed on the last line that fits in a given reference-area.</p>


</div3>

<div3 id="hyphenation-ladder-count"><head><quote>hyphenation-ladder-count</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no-limit | &lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no-limit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>no-limit</label><def><p>Any number of successive lines may
be hyphenated.</p></def></gitem>
<gitem><label>&lt;integer&gt;</label><def><p>An integer greater than or equal to 1.</p>
</def></gitem></glist>
<p>Specifies a limit on the number of successive hyphenated
line-areas the formatter may generate in a
block-area.</p>


</div3>

<div3 id="last-line-end-indent"><head><quote>last-line-end-indent</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;length&gt;</label><def><p>The "last-line-end-indent" is specified as a length.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The "last-line-end-indent" is specified as a percentage
of the block's content-rectangle
inline-progression-dimension.</p>
</def></gitem></glist>
<p>Specifies an indent to be applied
to the end-edge of the last (or only) line-area contained in a block-area.
It is
added to the block's end-edge. Positive values indent the
edge, negative values outdent the edge.
</p>



</div3>

<div3 id="line-height"><head><quote>line-height</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | &lt;length&gt; | &lt;number&gt; | &lt;percentage&gt; | &lt;space&gt;
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the font size of the element itself</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-line-height" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-line-height</xspecref>.
</p>


<p>Values have the following meanings:</p>
<glist><gitem><label>normal</label><def><p>Tells user agents to set the computed value to a "reasonable"
value based on the font size of the element. The value has the same
meaning as &lt;number&gt;. We recommend a computed value for "normal"
between 1.0 to 1.2.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>The box height is set to this length. Negative values are
illegal.</p></def></gitem>
<gitem><label>&lt;number&gt;</label><def><p>The computed value of the property is this number multiplied
by the element's font size. Negative values are illegal. However,
the number, not the computed value, is inherited.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The computed value of the property is this percentage multiplied
by the element's computed font size. Negative values are illegal.</p></def></gitem></glist>
<p>If the property is set on a block-level element whose content
is composed of inline-level elements, it specifies the minimal height
of each generated inline box.</p>
<p>If the property is set on an inline-level element, it specifies
the exact height of each box generated by the element. (Except for
inline replaced elements, where the height of the box is given by
the "height" property.)</p>
<p>When an element contains text that is rendered in more than one
font, user agents should determine the "line-height" value according
to the largest font size.</p>
<p>Generally, when there is only one value of "line-height" for
all inline boxes in a paragraph (and no tall images), the above
will ensure that baselines of successive lines are exactly "line-height"
apart. This is important when columns of text in different fonts
have to be aligned, for example in a table.</p>
<p>Note that replaced elements have a "font-size" and a "line-height"
property, even if they are not used directly to determine the height
of the box. The "font-size" is, however, used to define the "em"
and "ex" units, and the "line-height" has a role in the "vertical-align" property.
</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>XSL adds the following value with the following meanings:</p>
<glist><gitem><label>&lt;space&gt;</label><def>
<p>The difference between the inline-area's actual height and the
line-height's space-specifier's three lengths are each divided by 2.0 and
the result is used to set three half-leading
values (optimum, minimum, and maximum).</p>
<p>Negative values for line-height.minimum, line-height.optimum,
and line-height.maximum are invalid and will be interpreted as 0pt.</p>
<p>If the value of line-height.maximum is less than the value of
line-height.optimum, it is treated as if the value of line-height.optimum
had been specified. If the value of line-height.minimum is greater
than the value of line-height.optimum, it is treated as if the value
of line-height.optimum had been specified.</p>
<p>The line-height.conditionality setting
can be used to control the half-leading above the first line or
after the last line that is placed in a reference-area. </p>
<p>The line-height.precedence setting can be used to control the
merging of the half-leading with other spaces.</p>
<p>The <trait>space-before</trait> and <trait>space-after</trait>
space-specifiers are set to the value of the half-leading.
A definition of space-specifiers, and
the interaction between space-specifiers occurring in sequence are
given in <specref ref="spacecond"/>.</p>
</def></gitem>
</glist>

<p>If line-height is specified using &lt;length&gt;, &lt;percentage&gt;,
or &lt;number&gt;, the formatter shall convert the single value to a
space-specifier with the subfields interpreted as follows:</p>
<ulist><item><p>line-height.minimum: the resultant computed value
(as a length) of the &lt;length&gt;, &lt;percentage&gt;, or &lt;number&gt;.</p></item>
<item><p>line-height.optimum: the resultant computed value (as a
length) of the &lt;length&gt;, &lt;percentage&gt;, or &lt;number&gt;.</p></item>
<item><p>line-height.maximum: the resultant computed value (as a
length) of the &lt;length&gt;, &lt;percentage&gt;, or &lt;number&gt;.</p></item>
<item><p>line-height.precedence: force.</p></item>
<item><p>line-height.conditionality: retain</p></item>
</ulist>


</div3>

<div3 id="line-height-shift-adjustment"><head><quote>line-height-shift-adjustment</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">consider-shifts | disregard-shifts | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">consider-shifts</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>consider-shifts</label><def><p>In determining the line-height, include
the adjusted top-edge and bottom-edge of any characters that have
a baseline-shift.</p></def></gitem>
<gitem><label>disregard-shifts</label><def><p>In determining the line-height, include
the unshifted top-edge and bottom-edge of any characters that have
a baseline-shift.</p></def></gitem></glist>
<p>This property is used to control whether
the line-height is adjusted for content that has a baseline-shift.</p>
<note>
<p>This property can be used to prevent superscript and subscript
characters from disrupting the line-spacing.</p></note>


</div3>

<div3 id="line-stacking-strategy"><head><quote>line-stacking-strategy</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">line-height | font-height | max-height | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">line-height</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>line-height</label><def><p>Matches CSS's line-height and positioning
strategy. (Uses the per-inline-height-rectangle as described in
the area model.)</p></def></gitem>
<gitem><label>font-height</label><def><p>Uses the block's font height as adjusted
by the font-height-override-before and font-height-override-after
properties. (Uses the nominal-requested-line-rectangle as described
in the area model.)</p></def></gitem>
<gitem><label>max-height</label><def><p>Uses the adjusted maximum ascender-heights
and maximum descender-depth for the actual fonts and inline-areas
placed on the line. This value may be further influenced by the
line-height-shift-adjustment property. (Uses the maximal-line-rectangle
as described in the area model).</p></def></gitem></glist>
<p>Selects the strategy for positioning
adjacent lines, relative to each other.</p>


</div3>

<div3 id="linefeed-treatment"><head><quote>linefeed-treatment</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">ignore | preserve | treat-as-space | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">treat-as-space</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>ignore</label><def>
<p>Specifies that any character flow object whose Unicode
character code is #xA shall be discarded.</p>
</def></gitem>
<gitem><label>preserve</label><def>
<p>Specifies no special action.</p>
</def></gitem>
<gitem><label>treat-as-space</label><def>
<p>Specifies that any character flow object
whose Unicode character code is #xA shall be treated by subsequent XSL processing
(including collapsing) and the formatter as if its Unicode character code
were #x20.</p>
</def></gitem>
<gitem><label>treat-as-zero-width-space</label><def>
<p>Specifies that any character flow object
whose Unicode character code is #xA shall be treated by subsequent XSL processing
as if its Unicode character code were #x200B.
</p>
<note><p>The Unicode Standard recommends that
the zero width space is considered a valid line-break point and that
if two characters with a zero width space in between are placed
on the same line they are placed with no space between them and that
if they are placed on two lines no additional glyph area, such as for a
hyphen, is created at the line-break.</p>
</note>
</def></gitem>
</glist>

<p>
The "linefeed-treatment" property specifies the treatment of linefeeds (#xA
characters).</p>



</div3>

<div3 id="space-treatment"><head><quote>space-treatment</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">ignore | preserve | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">preserve</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>ignore</label><def>
<p>Specifies that any character flow object whose character
is classified as "white space" in XML,
except for #xA (linefeed) characters
(since their treatment is determine by the <code>linefeed-treatment</code>
property), shall be discarded.</p>
</def></gitem>
<gitem><label>preserve</label><def>
<p>Specifies no special action.</p>
</def></gitem>
<gitem><label>ignore-if-before-linefeed</label><def><p><spot id="i18n_14a"/>
Specifies that any character flow object,
or any sequence of character flow objects,
whose character is classified
as "white space" in XML, except for #xA (linefeed) characters (since
their treatment is determine by the linefeed-treatment property),
that immediately precedes a linefeed
character, shall be discarded. This action shall take place regardless
of the setting of the linefeed-treatment property.</p>
</def></gitem>
<gitem><label>ignore-if-after-linefeed</label><def><p><spot id="i18n_14b"/>
Specifies that any character flow object,
or any sequence of character flow objects,
whose character is classified
as "white space" in XML, except for #xA (linefeed) characters (since
their treatment is determine by the linefeed-treatment property),
that immediately follows a linefeed
character, shall be discarded. This action shall take place regardless
of the setting of the linefeed-treatment property.</p>
</def></gitem>
<gitem><label>ignore-if-surrounding-linefeed</label><def><p><spot id="i18n_14c"/>
Specifies that any character flow object,
or any sequence of character flow objects,
whose character is classified
as "white space" in XML, except for #xA (linefeed) characters (since
their treatment is determine by the linefeed-treatment property),
that immediately precedes or follows
a linefeed character, shall be discarded. This action shall take place
regardless of the setting of the linefeed-treatment property.</p>
</def></gitem>
</glist>

<p>The "space-treatment" property specifies the treatment of space
(#x20) and other whitespace characters except for linefeeds (#xA characters).
</p>



</div3>

<div3 id="text-align"><head><quote>text-align</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">start | center | end | justify | inside | outside
| left | right | &lt;string&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">start</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-align" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-align</xspecref>.
</p>


<p>This property describes how inline content of a block is aligned.
Values have the following meanings:</p>
<glist><gitem><label>left</label></gitem>
<gitem><label>center</label></gitem>
<gitem><label>right</label></gitem>
<gitem><label>justify</label><def><p>Left, right, center, and double justify text, respectively.</p></def></gitem>
<gitem><label>&lt;string&gt;</label><def><p>Specifies a string on which cells in a table column will
align (see the section on horizontal alignment in a column for details
and an example). This value applies only to table cells. If set
on other elements, it will be treated as 'left' or 'right', depending
on whether 'direction' is 'ltr', or 'rtl', respectively. </p></def></gitem></glist>
<p>A block of text is a stack of line boxes. In the case of
'left', 'right' and 'center', this property specifies how the inline
boxes within each line box align with respect to the line box's
left and right sides; alignment is not with respect to the viewport.
In the case of 'justify', the UA may stretch the inline boxes in
addition to adjusting their positions. (See also 'letter-spacing'
and 'word-spacing'.)</p>
<note>
<p>The actual justification algorithm used is user agent and written
language dependent. </p>
<p>Conforming user agents may interpret the value 'justify' as 'left'
or 'right', depending on whether the element's default writing direction
is left-to-right or right-to-left, respectively. </p></note></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>Values have the following meanings:</p>
<glist><gitem><label>start</label><def><p>Specifies that the content is to be aligned on the start-edge
in the inline-progression-direction.
</p></def></gitem>
<gitem><label>center</label><def><p>Specifies that the content is to
be centered in the inline-progression-direction.
</p></def></gitem>
<gitem><label>end</label><def><p>Specifies that the content is to be aligned on the end-edge
in the inline-progression-direction.
</p></def></gitem>
<gitem><label>justify</label><def><p>Specifies that the contents is to
be expanded to fill the available width in the inline-progression-direction.
</p>
<p>The last (or only) line of any block will be aligned in accordance
with the "text-align-last" property value.
If this line is to be justified specify "text-align-last='justify'".</p></def></gitem>
<gitem><label>inside</label><def><p>If the page binding edge is on the start-edge,
the alignment will be start. If the binding is the end-edge,
the alignment will be end. If neither, use start alignment.</p>
</def></gitem>
<gitem><label>outside</label><def><p>If the page binding edge is on the start-edge,
the alignment will be end. If the binding is the end-edge, the
alignment will be start. If neither, use end alignment.</p></def></gitem>
<gitem><label>left</label><def><p>Interpreted as "text-align='start'".
</p></def></gitem>
<gitem><label>right</label><def><p>Interpreted as "text-align='end'".
</p></def></gitem>
<gitem><label>&lt;string&gt;</label><def><p>Specifies a string on which cells in a table column will
align (see the section, in the CSS2 recommendation, on horizontal
alignment in a column for details
and an example). This value applies only to table cells. If set
on other elements, it will be treated as "start".</p></def></gitem></glist>
<p>This property describes how inline content of a block is
aligned.</p>

</div3>

<div3 id="text-align-last"><head><quote>text-align-last</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">relative | start | center | end | justify | inside
| outside | left | right | <spot id="aj000035_44a"/>inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">relative</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>

<gitem><label>relative</label><def><p>If text-align is justify, then the
alignment of the last line will be start. If text-align is not justify,
text-align-last will use the value of text-align.</p></def></gitem>
<gitem><label>start</label><def><p>Specifies that the content is to be aligned on the start-edge
in the inline-progression-direction.</p>
</def></gitem>
<gitem><label>center</label><def><p>Specifies that the contents is to
be centered in the inline-progression-direction.
</p></def></gitem>
<gitem><label>end</label><def><p>Specifies that the content is to be aligned on the end-edge
in the inline-progression-direction.</p>
</def></gitem>
<gitem><label>justify</label><def><p>Specifies that the contents is to
be expanded to fill the available width in the inline-progression-direction.
</p>
</def></gitem>
<gitem><label>inside</label><def><p>If the page binding edge is on the start-edge,
the alignment will be start. If the binding is the end-edge,
the alignment will be end. If neither, use start-side.</p>
</def></gitem>
<gitem><label>outside</label><def><p>If the page binding edge is on the start-edge,
the alignment will be end. If the binding is the end-edge the
alignment will be start. If neither, use end alignment.</p></def></gitem>
<gitem><label>left</label><def><p>Interpreted as "text-align-last='start'".
</p></def></gitem>
<gitem><label>right</label><def><p>Interpreted as "text-align-last='end'".<spot id="aj000035_44b"/>
</p></def></gitem>
</glist>
<p>Specifies the alignment of the last
line-area in a block.</p>


</div3>

<div3 id="text-indent"><head><quote>text-indent</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of containing block</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-indent" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-indent</xspecref>.
</p>


<p>This property specifies the indentation of the first line of
text in a block. More precisely, it specifies the indentation of
the first box that flows into the block's first line box. The box is
indented with respect to the left (or right, for right-to-left layout)
edge of the line box. User agents should render this indentation
as blank space.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;length&gt;</label><def><p>The indentation is a fixed length.</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The indentation is a percentage of the containing block
width</p></def></gitem></glist>
<p>The value of 'text-indent' may be negative, but there may
be implementation-specific limits.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The "text-indent" property specifies an adjustment to the
start-indent of the first line-area in a block-area. This indent
is added to the block's start-indent.</p>
<p>A negative value specifies a hanging indent (outdent) on the
first line.</p>

</div3>

<div3 id="white-space-collapse"><head><quote>white-space-collapse</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">false | true | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">true</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>false</label><def>
<p>Specifies no special action.</p>
</def></gitem>
<gitem><label>true</label><def>
<p>Specifies, for any character flow object such
that:</p>
<ulist>
<item><p>its character
is classified as "white space" in XML,
<emph>and</emph>
</p>
</item>
<item><p>it is <emph>not</emph> a preserved linefeed (due to <code>linefeed-treatment="preserve"
</code>), <emph>and</emph>
</p></item>
<item><p>the immediately preceding (non-ignored) flow object was a character flow
object also with a character of class white-space <emph>or</emph> the immediately <emph>
following</emph> (non-ignored) flow object is a preserved linefeed,
</p></item>
</ulist>
<p>that flow object shall be ignored.</p>
</def></gitem>
</glist>

<p>The "white-space-collapse" property specifies the treatment of
consecutive white-space. The effect is as follows: after all ignored white-space
is discarded and all "treat-as-space" white-space is turned into a space, all
resulting runs of two or more consecutive spaces are replaced by a single
space, then any remaining space immediately adjacent to a remaining linefeed
is also discarded. An implementation is free to use any algorithm to achieve
an equivalent effect.</p>



</div3>

<div3 id="wrap-option"><head><quote>wrap-option</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no-wrap | wrap | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">wrap</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>nowrap</label><def><p>No line-wrapping will be performed.</p>
<p>In the case when lines are longer than the available width of
the content-rectangle, the overflow will be treated in accordance
with the "overflow" property specified on the reference-area.</p></def></gitem>
<gitem><label>wrap</label><def><p>Line-breaking will occur if the line
overflows the available block width. No special markers or other
treatment will occur. </p></def></gitem></glist>
<p>Specifies how line-wrapping (line-breaking)
of the content of the formatting object is to be
handled.</p>

</div3>

</div2>

<div2><head>Character Properties</head>

<div3 id="character"><head><quote>character</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;character&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A, value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;character&gt;</label></gitem></glist>
<p>Specifies the Unicode character
to be presented.</p>


</div3>

<div3 id="letter-spacing"><head><quote>letter-spacing</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | &lt;length&gt; | &lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-letter-spacing" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-letter-spacing</xspecref>.
</p>


<p>This property specifies spacing behavior between text
characters. Values have the following meanings:</p>
<glist><gitem><label>normal</label><def><p>The spacing is the normal spacing for the current font.
This value allows the user agent to alter the space between characters
in order to justify text.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>This value indicates inter-character space in addition
to the default space between characters. Values may be negative,
but there may be implementation-specific limits. User agents may
not further increase or decrease the inter-character space in order
to justify text.</p></def></gitem></glist>
<p>Character-spacing algorithms are user agent
dependent.
Character spacing may also be influenced by justification (see the
"text-align" property).</p>
<p>When the resultant space between two characters is not the same
as the default space, user agents should not use ligatures.</p>
<p>Conforming user agents may consider the value of the 'letter-spacing'
property to be 'normal'. </p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>This allows the user to specify a range of adjustments
in addition to the default space between characters.</p>
<p>The minimum
and maximum values specify the limits of the adjustment.</p>
</def></gitem>
</glist>

<p>Default space between characters is defined to be 0pt, i.e.,
glyph-areas stacked with no extra space between the
allocation-rectangles of the glyph-areas.
The <trait>inline-progression-dimension</trait>
of the glyph-area is obtained by formatting the fo:character.
</p>
<p>For an fo:character that in the Unicode database is
classified as "Alphabetic"
the <trait>start-space</trait> and <trait>end-space</trait> traits are each set to a value
as follows:</p>
<ulist>
<item><p>For "normal":
.optimum = "the normal spacing for the current font" / 2,
.maximum = auto,
.minimum = auto,
.precedence = force, and
.conditionality = discard. A value of auto for a component implies
that the limits are User Agent specific.</p>
</item>
<item><p>For a &lt;length&gt;:
.optimum = &lt;length&gt; / 2,
.maximum = .optimum,
.minimum = .optimum,
.precedence = force, and
.conditionality = discard.</p>
</item>
<item><p>For a &lt;space&gt;:
a value that is half the value of the "letter-spacing"
property
for the numeric components and the value for the .precedence and
.conditionality components.
The initial values for .precedence is "force" and
for .conditionality "discard".</p>
</item>
</ulist>
<p>The CSS statement that "Conforming user agents may consider the
value of the 'letter-spacing' property to be 'normal'." does not apply
in XSL, if the User Agent implements the "Extended" property set.
</p>
<note>
<p>If it is desired that the letter-space combine with other spaces that have
less than forcing precedence, then the value of the letter-space should
be specified as a &lt;space&gt; with precedence less than force which
implies that space combines according to the space resolution
rules described in <specref ref="spacecond"/>.</p>
</note>
<p>
The algorithm for resolving the adjusted values between word-spacing
and letter-spacing is User Agent dependent.</p>



</div3>

<div3 id="suppress-at-line-break"><head><quote>suppress-at-line-break</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | suppress | retain | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p><spot id="fosg_0a"/>This property applies only to fo:character
and determines whether the character's
representation shall be suppressed when it would occur adjacent to a
formatter-generated line break.
Multiple characters may be so suppressed.<spot id="fosg_0b"/></p>
<p>This property has the following values:</p>
<glist><gitem><label>auto</label><def><p>The value of this property is determined by the Unicode value of the
object's character property. The character at <spot id="aj000029_83"/>codepoint u+0020 is
treated as if 'suppress' had been specified. All other characters are
treated as if 'retain' had been specified.</p>
<p>This value does not automatically suppress the presentation of the
non-breaking-space (u+00a0), the fixed spaces (u+2000 through u+200a),
or the ideographic-space (u+3000).</p>
</def></gitem>
<gitem><label>suppress</label><def><p>If the glyph-area generated by the fo:character is first or last in a
line-building partition (see section <specref ref="area-linebuild"/>)
then it is deleted rather than being placed in the area tree, together
with all adjacent areas with a suppress-at-line-break value of <code role="value">suppress</code>. Otherwise it is retained and placed in the
area tree.</p>
</def></gitem>
<gitem><label>retain</label><def><p>The glyph-area generated by the fo:character shall be placed in the area
tree whether or not it is first or last in a line-building partition.</p>
</def></gitem></glist>

</div3>

<div3 id="text-decoration"><head><quote>text-decoration</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | [ [ underline | no-underline] || [ overline | no-overline ]
|| [ line-through | no-line-through ] || [ blink | no-blink ] ]

| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, but see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-decoration" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-decoration</xspecref>.
</p>

<p>This property describes decorations that are added to
the text of an element. If the property is specified for a block-level
element, it affects all inline-level descendants of the element. If
it is specified for (or affects) an inline-level element, it affects
all boxes generated by the element. If the element has no content
or no text content (e.g., the IMG element in HTML), user agents
must ignore this property. </p>
<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>Produces no text decoration.</p></def></gitem>
<gitem><label>underline</label><def><p>Each line of text is underlined.</p></def></gitem>
<gitem><label>overline</label><def><p>Each line of text has a line above it.</p></def></gitem>
<gitem><label>line-through</label><def><p>Each line of text has a line through the middle</p></def></gitem>
<gitem><label>blink</label><def><p>Text blinks (alternates between visible and invisible).
Conforming user agents are not required to support this value.</p></def></gitem></glist>
<p>The color(s) required for the text decoration should be
derived from the "color" property value.</p>
<p>This property is not inherited, but descendant boxes of a block
box should be formatted with the same decoration (e.g., they should
all be underlined). The color of decorations should remain the same
even if descendant elements have different "color" values.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>XSL adds the following values with the following meanings:</p>

<glist>

<gitem><label>no-underline</label><def><p>Turns off underlining, if any.</p>
</def></gitem>
<gitem><label>no-overline</label><def><p>Turns off overlining, if any.</p>
</def></gitem>
<gitem><label>no-line-through</label><def><p>Turns off line-through, if any.</p>
</def></gitem>
<gitem><label>no-blink</label><def><p>Turns off blinking, if any.</p>
</def></gitem>

</glist>


</div3>

<div3 id="text-shadow"><head><quote>text-shadow</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | [&lt;color&gt; || &lt;length&gt; &lt;length&gt; &lt;length&gt;?
,]* [&lt;color&gt; || &lt;length&gt; &lt;length&gt; &lt;length&gt;?] | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-shadow" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-shadow</xspecref>.
</p>

<p>This property accepts a comma-separated list of shadow
effects to be applied to the text of the element. The shadow effects
are applied in the order specified and may thus overlay each other,
but they will never overlay the text itself. Shadow effects do not
alter the size of a box, but may extend beyond its boundaries. The
stack level of the shadow effects is the same as for the element
itself.</p>
<p>Each shadow effect must specify a shadow offset and may optionally
specify a blur radius and a shadow color.</p>
<p>A shadow offset is specified with two "length" values that indicate
the distance from the text. The first length value specifies the
horizontal distance to the right of the text. A negative horizontal
length value places the shadow to the left of the text. The second length
value specifies the vertical distance below the text. A negative
vertical length value places the shadow above the text.</p>
<p>A blur radius may optionally be specified after the shadow offset.
The blur radius is a length value that indicates the boundaries
of the blur effect. The exact algorithm for computing the blur effect
is not specified.</p>
<p>A color value may optionally be specified before or after the
length values of the shadow effect. The color value will be used
as the basis for the shadow effect. If no color is specified, the
value of the "color" property will be used instead.</p>

</css-cited>
</div3>

<div3 id="text-transform"><head><quote>text-transform</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">capitalize | uppercase | lowercase | none | </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-transform" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-transform</xspecref>.
</p>


<p>This property controls capitalization effects of an element's
text. Values have the following meanings:</p>
<glist><gitem><label>capitalize</label><def><p>Puts the first character of each word in uppercase.</p></def></gitem>
<gitem><label>uppercase</label><def><p>Puts all characters of each word in uppercase.</p></def></gitem>
<gitem><label>lowercase</label><def><p>Puts all characters of each word in lowercase.</p></def></gitem>
<gitem><label>none</label><def><p>No capitalization effects.</p></def></gitem></glist>
<p>The actual transformation in each case is written language
dependent. See <spot id="aj000029_84"/><bibref ref="RFC2070"/>
for ways to find the language
of an element.</p>
<p>Conforming user agents may consider the value of "text-transform"
to be "none" for characters that are not from the ISO Latin-1 repertoire
and for elements in languages for which the transformation is different
from that specified by the case-conversion tables of Unicode or
ISO 10646.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>There are severe internationalization issues with the use
of this property. It has been retained for CSS compatibility, but
its use is not recommended in XSL.</p>



</div3>

<div3 id="treat-as-word-space"><head><quote>treat-as-word-space</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | yes | no | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:character</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property determines if the character shall be treated
as a word-space or as a normal letter.
</p>
<p>This property has the following values:</p>
<glist><gitem><label>auto</label><def><p>The value of this property is determined by the Unicode
codepoint for the character. </p>
<p>As the default behavior:</p>
<ulist><item><p>The characters at codepoints u+0020 and u+00a0 are
treated as if 'yes' had been specified. All other characters are
treated as if 'no' had been specified.</p></item>
<item><p>This property does not automatically apply word-spacing
to the fixed spaces (u+2000 through u+200a) or the ideographic-space
(u+3000).</p></item>
<item><p>This default behavior can be overridden by
information in the font used for formatting the character,
which can specify additional characters that may be
treated as "word-spaces".</p></item></ulist></def></gitem>
<gitem><label>yes</label><def><p>This inline-progression-dimension of the character
shall be adjusted as described in
the "word-spacing" property.</p></def></gitem>
<gitem><label>no</label><def><p>This character shall not have a word-spacing adjustment
applied.</p></def></gitem></glist>

</div3>



<div3 id="word-spacing"><head><quote>word-spacing</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal | &lt;length&gt; | &lt;space&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">normal</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/text.html#propdef-word-spacing" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/text.html#propdef-word-spacing</xspecref>.
</p>

<p>This property specifies spacing behavior between words.
Values have the following meanings:</p>
<glist><gitem><label>normal</label><def><p>The normal inter-word space, as defined by the current
font and/or the UA.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>This value indicates inter-word space in addition to the
default space between words. Values may be negative, but there may
be implementation-specific limits.</p></def></gitem></glist>
<p>Word spacing algorithms are user agent-dependent. Word
spacing is also influenced by justification (see the 'text-align'
property).</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>The following value type has been added for XSL:</p>
<glist><gitem><label>&lt;space&gt;</label><def><p>This allows the user to specify a range of adjustments
in addition to the default space between words.</p>
<p>The minimum
and maximum values specify the limits of the adjustment.</p>
</def></gitem>
</glist>

<p>Default space between words is defined to be
the <trait>inline-progression-dimension</trait>
of the glyph-area obtained by formatting the current
fo:character whose
<trait>treat-as-wordspace</trait> trait has the value "yes".</p>
<p>For fo:character whose <trait>treat-as-word-space</trait> trait has the value "yes",
the <trait>start-space</trait> and <trait>end-space</trait> traits are each set to a value
as follows:</p>
<ulist>
<item><p>For "normal":
.optimum = ("the normal inter-word-space, as defined by the
current font and/or the UA" - "the inline-progression-dimension
of the glyph-area obtained by formatting the fo:character") / 2,
.maximum = .optimum,
.minimum = .optimum,
.precedence = force, and
.conditionality = discard.</p>
</item>
<item><p>For a &lt;length&gt;:
.optimum = &lt;length&gt; / 2,
.maximum = .optimum,
.minimum = .optimum,
.precedence = force, and
.conditionality = discard.</p>
</item>
<item><p>For a &lt;space&gt;:
a value that is half the value of the "word-spacing"
property
for the numeric components and the value for the .precedence and
.conditionality components.
The initial values for .precedence is "force" and
for .conditionality "discard".</p>
</item>
</ulist>
<note>
<p>If it is desired that the word-space combine with other spaces that have
less than forcing precedence, then the value of the word-space should
be specified as a &lt;space&gt; with precedence less than force which
implies that space combines according to the space resolution
rules described in <specref ref="spacecond"/>.</p>
</note>
<p>
The algorithm for resolving the adjusted values between word-spacing
and letter-spacing is User Agent dependent.</p>
<note><p>The "word-spacing" property only affects the
placement of glyphs
and not the shape that may be associated with the characters. For example,
adjusting a "_" treated as a word-space does not lengthen or
shorten the
"_" glyph.
</p>
</note>



</div3>

</div2>

<div2><head>Color-related Properties</head>

<div3 id="color"><head><quote>color</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;color&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">depends on user agent</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/colors.html#propdef-color" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/colors.html#propdef-color</xspecref>.
</p>

<glist><gitem><label>&lt;color&gt;</label><def><p>Any valid color specification.</p></def></gitem></glist>
<p>This property describes the foreground color of an element's
text content.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>XSL adds an "icc-color" function <spot id="aj000035_45a"/>(see <specref ref="expr-color-functions"/>) as a valid value of this property.</p>


</div3>

<div3 id="color-profile-name"><head><quote>color-profile-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"/></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:color-profile</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;name&gt;</label></gitem></glist>
<p>Specifies the name of a color-profile for internal references.</p>


</div3>

<div3 id="rendering-intent"><head><quote>rendering-intent</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:color-profile</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>"rendering-intent" permits the specification of a color-profile
rendering-intent other than the default.
"rendering-intent" is applicable primarily to color-profiles
corresponding to CMYK color
spaces. The different options cause different methods to be used for
translating colors to the color gamut of the target rendering device.</p>
<p>Values have the following meanings:</p>
<glist>

<gitem><label>auto</label><def><p>This is the default behavior. The user-agent determines the best
intent based on the content type. For image content containing an
embedded profile, it shall be assumed that the intent specified
within the profile is the desired intent. Otherwise, the user agent
shall use the current profile and force the intent,
overriding any intent that might be stored in the profile itself.</p>
</def></gitem>
<gitem><label>perceptual</label><def><p>This method, often the preferred choice for images,
preserves the relationship between colors. It attempts to
maintain relative color values among the pixels as they are
mapped to the target device
gamut. Sometimes pixel values that were originally within
the target device gamut are changed in order to avoid hue shifts
and discontinuities and to preserve as much as possible the overall
appearance of the scene.</p>
</def></gitem>
<gitem><label>relative-colorimetric</label><def><p>Leaves colors that fall inside the gamut unchanged.
This method usually converts out of gamut colors to colors
that have the same lightness but fall just inside the gamut.</p>
</def></gitem>
<gitem><label>saturation</label><def><p>Preserves the relative saturation (chroma) values of the original pixels.
Out of gamut colors are converted to colors that have
the same saturation but fall just inside the gamut.</p>
</def></gitem>
<gitem><label>absolute-colorimetric</label><def><p>Disables white point matching when converting colors.
This option is generally not recommended.</p>
</def></gitem>

</glist>


</div3>

</div2>

<div2><head>Float-related Properties</head>

<div3 id="clear"><head><quote>clear</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">start | end | left | right | both | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-clear" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-clear</xspecref>.
</p>


<p>This property indicates which sides of an element's box(es) may
not be adjacent to an earlier floating box. (It may be that the
element itself has floating descendants; the 'clear' property has
no effect on those.) </p>
<p>This property may only be specified for block-level elements
(including floats). For compact and run-in boxes, this property
applies to the final block box to which the compact or run-in box
belongs. </p>
<p>Values have the following meanings when applied to non-floating
block boxes:</p>
<glist><gitem><label>left</label><def><p>The top margin of the generated box is increased enough
that the top border edge is below the bottom outer edge of any left-floating
boxes that resulted from elements earlier in the source document.</p></def></gitem>
<gitem><label>right</label><def><p>The top margin of the generated box is increased enough
that the top border edge is below the bottom outer edge of any right-floating
boxes that resulted from elements earlier in the source document.</p></def></gitem>
<gitem><label>both</label><def><p>The generated box is moved below all floating boxes of
earlier elements in the source document.</p></def></gitem>
<gitem><label>none</label><def><p>No constraint on the box's position with respect to floats.</p></def></gitem></glist>

<p>When the property is set on floating elements, it results in
a modification of the rules for positioning the float. An extra
constraint (#10) is added [to those specified in the description
of the 'float' property]: </p>
<p>10. The top outer edge of the float must be below the bottom
outer edge of all earlier left-floating boxes (in the case of 'clear:
left'), or all earlier right-floating boxes (in the case of 'clear:
right'), or both ('clear: both'). </p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>A start-float is defined to mean an area with area-class "xsl-side-float" that
was generated by an fo:float with property "float" specified as "left" or "start".</p>
<p>An end-float is defined to mean an area with area-class "xsl-side-float" that
was generated by an fo:float with property "float" specified as "left" or "start".</p>
<p>A side-float is defined to mean either a start-float or an end-float.</p>
<p><spot id="fo01jr_6f"/>An area is defined to "clear"
a side-float if the before-edge of the
area's border-rectangle is positioned to be after the after-edge of
the float, or if the area is not a descendant of the side-float's parent
reference-area.</p>
<p>A block-level formatting object is defined "to clear" a side-float
if the areas generated by the formatting object clear the side-float.</p>
<p>In XSL this property applies to block-level formatting objects and fo:float.</p>
<p><spot id="fo01jr_6j"/>The clear property
when applied to an fo:float that generates side-floats
does not apply to the fo:float's anchor-area.</p>
<p>Values have the following meanings:</p>
<glist>
<gitem><label>start</label><def>
<p><spot id="fo01jr_6g"/>Specifies that each area generated
by the formatting object must
clear every start-float whose parent reference-area is the nearest
ancestor reference-area of the generated area, provided the start-float
was generated by an fo:float that is before this formatting object,
using pre-order traversal order of the formatting tree. Additionally
specifies that each area generated by the formatting object must
be placed so that the reference-area chain containing the generated
area's nearest ancestor reference-area does not contain a later
reference-area that is the parent of a start-float generated by an
fo:float that is before this formatting object, using pre-order
traversal of the formatting tree.</p>
</def></gitem>
<gitem><label>end</label><def><p><spot id="fo01jr_6h"/>Specifies that each area
generated by the formatting object must
clear every end-float whose parent reference-area is the nearest
ancestor reference-area of the generated area, provided the end-float
was generated by an fo:float that is before this formatting object,
using pre-order traversal order of the formatting tree. Additionally
specifies that each area generated by the formatting object must
be placed so that the reference-area chain containing the generated
area's nearest ancestor reference-area does not contain a later
reference-area that is the parent of an end-float generated by an
fo:float that is before this formatting object, using pre-order traversal
of the formatting tree.</p>
</def></gitem>
<gitem><label>left</label><def><p>Interpreted as "clear='start'".</p></def></gitem>
<gitem><label>right</label><def><p>Interpreted as "clear='end'".</p></def></gitem>
<gitem><label>both</label><def><p><spot id="fo01jr_6i"/>Specifies that each area generated
by the formatting object must
clear every side-float whose parent reference-area is the nearest
ancestor reference-area of the generated area, provided the side-float
was generated by an fo:float that is before this formatting object,
using pre-order traversal order of the formatting tree. Additionally
specifies that each area generated by the formatting object must
be placed so that the reference-area chain containing the generated
area's nearest ancestor reference-area does not contain a later
reference-area that is the parent of a side-float generated by an
fo:float that is before this formatting object, using pre-order traversal
of the formatting tree.</p>
</def></gitem>
<gitem><label>none</label><def><p>This property does not impose any constraints.</p></def></gitem>
</glist>

<p>When a block-level formatting object is constrained by the "clear" property,
its space-before property component values may be altered as necessary
for each area that it generates, in order to meet the
constraint.  The alterations are constrained to produce the minimum
additional space required to meet the constraint of the "clear" property.</p>
<note><p>Depending on how near a side-float's after-edge is to the
after-edge of its parent reference-area, a block-level formatting object
may not be able to generate an area that is a child of the same parent
reference-area of the side-float. In this case the first block-area
generated by the formatting object must be placed in one of the following
columns in the same region or in one of the following pages.</p></note>


</div3>

<div3 id="float"><head><quote>float</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">before | start | end | left | right | none | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all but positioned elements and generated content</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-float" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-float</xspecref>.
</p>

<p>This property specifies whether a box should float to
the left, right, or not at all. It may be set for elements that
generate boxes that are not absolutely positioned. Values have the following
meanings:</p>
<glist><gitem><label>left</label><def><p>The element generates a block box that is floated to the
left. Content flows on the right side of the box, starting at the
top (subject to the "clear" property). The "display" is ignored,
unless it has the value "none".</p></def></gitem>
<gitem><label>right</label><def><p>Same as "left", but content flows on the left side of the
box, starting at the top.</p></def></gitem>
<gitem><label>none</label><def><p>The box is not floated.</p></def></gitem></glist>

<p>Here are the precise rules that govern the behavior of floats:</p>
<p>1. The left outer edge of a left-floating box may not be to the
left of the left edge of its containing block. An analogous rule
holds for right-floating elements.</p>
<p>2. If the current box is left-floating, and there are any left
floating boxes generated by elements earlier in the source document,
then for each such earlier box, either the left outer edge of the
current box must be to the right of the right outer edge of the
earlier box, or its top must be lower than the bottom of the earlier
box. Analogous rules hold for right-floating boxes. </p>
<p>3. The right outer edge of a left-floating box may not be to the
right of the left outer edge of any right-floating box that is to
the right of it. Analogous rules hold for right-floating elements. </p>
<p>4. A floating box's outer top may not be higher than the top of
its containing block.</p>
<p>5. The outer top of a floating box may not be higher than the
outer top of any block or floated box generated by an element earlier
in the source document.</p>
<p>6. The outer top of an element's floating box may not be higher
than the top of any line-box containing a box generated by an element
earlier in the source document.</p>
<p>7. A left-floating box that has another left-floating box to its
left may not have its right outer edge to the right of its containing
block's right edge. (Loosely: a left float may not stick out at
the right edge, unless it is already as far to the left as possible.)
An analogous rule holds for right-floating elements. </p>
<p>8. A floating box must be placed as high as possible. </p>
<p>9. A left-floating box must be put as far to the left as possible,
a right-floating box as far to the right as possible. A higher position
is preferred over one that is further to the left/right. </p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>The following values have been added for XSL: "before", "start", and "end".
</p>
<p>In XSL this property applies only to fo:float</p>
<p>Values have the following meanings:</p>
<glist>
<gitem><label>before</label><def><p>Specifies that the block-areas generated by the fo:float shall be
with area-class "xsl-before-float", and shall be descendants of
a <spot id="fo01jr_4a"/>before-float-reference-area generated by a conditional sub-region
of a region-body.</p></def></gitem>
<gitem><label>start</label><def><p>Specifies that the block-areas generated by the fo:float
shall be with area-class "xsl-side-float" and shall be <spot id="fo01jr_8a"/>floated toward
the start-edge of the reference area.</p></def></gitem>
<gitem><label>end</label><def><p>Specifies that the block-areas returned by the fo:float shall be
with area-class "xsl-side-float" and shall be <spot id="fo01jr_8b"/>floated toward
the end-edge of the reference area.</p></def></gitem>
<gitem><label>left</label><def><p>Interpreted as "float='start'".</p></def></gitem>
<gitem><label>right</label><def><p>Interpreted as "float='end'".</p></def></gitem>
<gitem><label>none</label><def><p>Specifies that the block-areas generated by the fo:float
shall be normal.</p></def></gitem>
</glist>
<p>This property determines the <trait>area-class</trait> trait of the
block-areas returned by the fo:float, which <spot id="fo01jr_8c"/>controls the placement
and parent of these block-areas.</p>


</div3>

</div2>

<div2><head>Keeps and Breaks Properties</head>


<p>Page breaks only apply to descendants of the fo:flow
formatting object, and not within absolutely
positioned areas, or out-of-line areas.
In descendants of fo:flow formatting objects, column breaks apply,
and a column break in the last (or only) column implies a page break;
column breaks in static-content apply except for those in
the last (or only) column which are ignored.</p>
<p>The semantics of keeps and breaks are further described in
<specref ref="keepbreak"/>.</p>


<div3 id="break-after"><head><quote>break-after</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | column | page | even-page | odd-page | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level formatting objects, fo:list-item, and
fo:table-row.</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values for these properties have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>No break shall be forced. </p>
<note>
<p>Page breaks may occur as determined by the formatter's
processing as affected by the "widow",
"orphan", "keep-with-next", "keep-with-previous", and "keep-together"
properties.</p></note></def></gitem>
<gitem><label>column</label><def><p>Imposes a break-after condition with a context
consisting of column-areas.</p>
</def></gitem>
<gitem><label>page</label><def><p>Imposes a break-after condition with a context
consisting of page-areas.</p>
</def></gitem>
<gitem><label>even-page</label><def><p>Imposes a break-after condition with a context consisting
of even page-areas (a blank page may be generated if necessary).</p>
</def></gitem>
<gitem><label>odd-page</label><def><p>Imposes a break-after condition with a context consisting of odd
page-areas (a blank page may be generated if necessary).</p>
</def></gitem></glist>
<p>Specifies that the last area generated by formatting this
formatting object shall be the last one placed in a
particular context (e.g., page-area, column-area).</p>
<p>This property has no effect when it appears on an fo:table-row
formatting object in which there is any row spanning occurring
that includes both the current fo:table-row and the subsequent one.</p>

</div3>

<div3 id="break-before"><head><quote>break-before</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | column | page | even-page | odd-page | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level formatting objects, fo:list-item, and
fo:table-row.</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>No break shall be forced. </p>
<note>
<p>Page breaks may occur as determined by the formatter's processing
as affected by the "widow", "orphan", "keep-with-next",
"keep-with-previous",
and "keep-together" properties.</p></note></def></gitem>
<gitem><label>column</label><def><p>Imposes a break-before condition with a context
consisting of column-areas.</p>
</def></gitem>
<gitem><label>page</label><def><p>Imposes a break-before condition with a context
consisting of page-areas.</p>
</def></gitem>
<gitem><label>even-page</label><def><p>Imposes a break-before condition with a context consisting of even
page-areas (a blank page may be generated if necessary).</p>
</def></gitem>
<gitem><label>odd-page</label><def><p>Imposes a break-before condition with a context consisting of odd
page-areas (a blank page may be generated if necessary).</p>
</def></gitem>
</glist>
<p>Specifies that the first area generated by
formatting this formatting object shall be the first one
placed in a particular context (e.g., page-area, column-area).</p>
<p>This property has no effect when it appears on an fo:table-row
formatting object in which there is any row spanning occurring
that includes both the current fo:table-row and the previous one.</p>


</div3>

<div3 id="keep-together"><head><quote>keep-together</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;keep&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">.within-line=auto, .within-column=auto, .within-page=auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level formatting objects, inline formatting objects,
fo:title, fo:list-item, fo:list-item-label, and fo:list-item-body</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property imposes keep-together conditions on formatting objects.</p>
<p>The &lt;keep&gt; datatype is composed of three components: within-line,
within-column, and within-page. Different components apply to different
classes of formatting objects and provide keep conditions relative to
different contexts. In the case of the within-line
component, the keep context consists of line-areas;
for the within-column component, the keep
context consists of column-areas;
for the within-page component, the keep context consists of page-areas.
In the descriptions below, the term
"appropriate context" should be
interpreted in terms of the previous sentence.</p>
<p>Values of the components have the following meanings:</p>
<glist>

<gitem><label>auto</label><def><p>There are no keep-together conditions
imposed by this property.</p>
</def></gitem>
<gitem><label>always</label><def><p>Imposes a keep-together condition with strength "always" in the
appropriate context.</p>
</def></gitem>

<gitem><label>&lt;integer&gt;</label><def>
<p>Imposes a keep-together condition with strength of the given
&lt;integer&gt; in the appropriate context.</p>
</def></gitem>

</glist>

<p>The semantics of keeps and breaks are further described in
<specref ref="keepbreak"/>.</p>



</div3>

<div3 id="keep-with-next"><head><quote>keep-with-next</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;keep&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">.within-line=auto, .within-column=auto, .within-page=auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level formatting objects, inline formatting objects,
fo:list-item, and fo:table-row</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property imposes keep-with-next conditions on formatting objects.</p>
<p>The &lt;keep&gt; datatype is composed of three components: within-line,
within-column, and within-page. Different components apply to
different classes of formatting objects and provide keep conditions
relative to different contexts. In the case of the
within-line component, the keep context consists of line-areas;
for the within-column component, the keep context consists of
column-areas;
for the within-page component, the keep context consists of page-areas.
In the descriptions
below, the term "appropriate context"
should be interpreted in terms of the previous sentence.</p>
<p>Values of the components have the following meanings:</p>
<glist>
<gitem><label>auto</label><def><p>There are no keep-with-next conditions
imposed by this property.</p>
</def></gitem>
<gitem><label>always</label><def><p>Imposes a keep-with-next condition with strength "always" in the
appropriate context.</p>
</def></gitem>

<gitem><label>&lt;integer&gt;</label><def>
<p>Imposes a keep-with-next condition with strength of the given
&lt;integer&gt; in the appropriate context.</p>
</def></gitem>

</glist>

<p>The semantics of keeps and breaks are further described in
<specref ref="keepbreak"/>.</p>

</div3>

<div3 id="keep-with-previous"><head><quote>keep-with-previous</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;keep&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">.within-line=auto, .within-column=auto, .within-page=auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level formatting objects, inline-level formatting objects,
fo:list-item, and fo:table-row</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property imposes keep-with-previous conditions on formatting objects.</p>
<p>The &lt;keep&gt; datatype is composed of three components: within-line,
within-column, and within-page. Different components apply to
different classes of formatting objects and provide keep conditions
relative to different contexts. In the case of the
within-line component, the keep context consists of line-areas;
for the within-column component, the keep context consists of
column-areas;
for the within-page component, the keep context consists of page-areas.
In the descriptions
below, the term "appropriate context"
should be interpreted in terms of the previous sentence.</p>
<p>Values of the components have the following meanings:</p>
<glist>
<gitem><label>auto</label><def><p>There are no keep-with-previous conditions
imposed by this property.</p>
</def></gitem>
<gitem><label>always</label><def><p>Imposes a keep-with-previous condition with strength "always" in
the appropriate context.</p>
</def></gitem>

<gitem><label>&lt;integer&gt;</label><def>
<p>Imposes a keep-with-previous condition with strength of the given
&lt;integer&gt; in the appropriate context.</p>
</def></gitem>

</glist>

<p>The semantics of keeps and breaks are further described in
<specref ref="keepbreak"/>.</p>


</div3>

<div3 id="orphans"><head><quote>orphans</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">2</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/page.html#propdef-orphans" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/page.html#propdef-orphans</xspecref>.
</p>

<p>See definition of property widows (<specref ref="widows"/>).</p></css-cited>
</div3>

<div3 id="widows"><head><quote>widows</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">2</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/page.html#propdef-widows" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/page.html#propdef-widows</xspecref>.
</p>

<p>The "orphans" property specifies the minimum number of
lines of a paragraph that must be left at the bottom of a page.
The "widows" property specifies the minimum number of lines of a
paragraph that must be left at the top of a page.</p></css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>
<p>In XSL the "orphans" property specifies the minimum number of
line-areas in the first area generated by the formatting object.
The "widows" property specifies the minimum number of line-areas
in the last area generated by the formatting object.
</p>

</div3>

</div2>

<div2><head>Layout-related Properties</head>
<p>The following are layout-related properties that are not
common to all formatting objects.
</p>

<div3 id="clip"><head><quote>clip</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;shape&gt; | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level and replaced elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-clip" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-clip</xspecref>.
</p>


<p>The 'clip' property applies to elements that have a 'overflow'
property with a value other than 'visible'. Values have the following
meanings:</p>
<glist><gitem><label>auto</label><def><p>The clipping region has the same size and location as the
element's box(es).</p></def></gitem>
<gitem><label>&lt;shape&gt;</label><def><p>In CSS2, the only valid &lt;shape&gt; value is: rect (&lt;top&gt; &lt;right&gt; &lt;bottom&gt; &lt;left&gt;) where &lt;top&gt;, &lt;bottom&gt; &lt;right&gt;,
and &lt;left&gt; specify offsets from the respective sides of the
box.</p>
<p>&lt;top&gt;, &lt;right&gt;, &lt;bottom&gt;, and &lt;left&gt; may either
have a &lt;length&gt; value or "auto". Negative lengths are permitted.
The value "auto" means that a given edge of the clipping region
will be the same as the edge of the element's generated box (i.e., "auto"
means the same as "0".)</p>
<p>When coordinates are rounded to pixel coordinates, care should
be taken that no pixels remain visible when &lt;left&gt; + &lt;right&gt;
is equal to the element's width (or &lt;top&gt; + &lt;bottom&gt; equals
the element's height), and conversely that no pixels remain hidden
when these values are 0.</p></def></gitem></glist>
<p>The element's ancestors may also have clipping regions
(in case their "overflow" property is not "visible"); what is rendered
is the intersection of the various clipping regions.</p>
<p>If the clipping region exceeds the bounds of the UA's document
window, content may be clipped to that window by the native operating
environment.</p></css-cited>
</div3>

<div3 id="overflow"><head><quote>overflow</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visible | hidden | scroll | error-if-overflow | auto | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">block-level and replaced elements</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-overflow" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-overflow</xspecref>.
</p>


<p>This property specifies whether the content of a block-level
element is clipped when it overflows the element's box (which is
acting as a containing block for the content). Values have the following
meanings:</p>
<glist><gitem><label>visible</label><def><p>This value indicates that content is not clipped, i.e.,
it may be rendered outside the block box.</p></def></gitem>
<gitem><label>hidden</label><def><p>This value indicates that the content is clipped and that
no scrolling mechanism should be provided to view the content outside
the clipping region; users will not have access to clipped content.
The size and shape of the clipping region is specified by the "clip"
property.</p></def></gitem>
<gitem><label>scroll</label><def><p>This value indicates that the content is clipped and that
if the user agent uses scrolling mechanism that is visible on the
screen (such as a scroll bar or a panner), that mechanism should
be displayed for a box whether or not any of its content is clipped.
This avoids any problem with scrollbars appearing and disappearing
in a dynamic environment. When this value is specified and the target
medium is "print" or 'projection', overflowing content should be
printed.</p></def></gitem>
<gitem><label>auto</label><def><p>The behavior of the "auto" value is user agent
dependent,
but should cause a scrolling mechanism to be provided for overflowing
boxes.</p></def></gitem></glist>
<p>Even if "overflow" is set to "visible", content may be
clipped to a UA's document window by the native operating environment.</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p><spot id="fo_8a"/>One more value is defined
as follows:</p>

<glist>

<gitem><label>error-if-overflow</label><def>
<p>This value implies the same semantics as the value "hidden" with the
additional semantic that an error shall be indicated; implementations may
recover by clipping the region.</p>
</def></gitem>

</glist>

</div3>

<div3 id="reference-orientation"><head><quote>reference-orientation</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"> 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes (see prose)</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>0</label><def><p>The reference-orientation of this
reference-area has the same reference-orientation as
the containing reference-area.</p></def></gitem>
<gitem><label>90</label><def><p>The reference-orientation of this
reference-area is rotated 90 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p></def></gitem>
<gitem><label>180</label><def><p>The reference-orientation of this
reference-area is rotated 180 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p></def></gitem>
<gitem><label>270</label><def><p>The reference-orientation of this
reference-area is rotated 270 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p></def></gitem>
<gitem><label>-90</label><def><p>The reference-orientation of this
reference-area is rotated 270 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p>
<note>
<p>This is equivalent to specifying "270".</p></note></def></gitem>
<gitem><label>-180</label><def><p>The reference-orientation of this
reference-area is rotated 180 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p>
<note>
<p>This is equivalent to specifying "180".</p></note></def></gitem>
<gitem><label>-270</label><def><p>The reference-orientation of this
reference-area is rotated 90 degrees counter-clockwise from the
reference-orientation of the containing reference-area.</p>
<note>
<p>This is equivalent to specifying "90".</p></note></def></gitem></glist>
<p>The reference-orientation specifies
the direction for "top" for the content-rectangle of the "reference-area".
This is used as the reference for deriving directions, such as the
block-progression-direction, inline-progression-direction,
etc.
as specified by the "writing-mode" and "direction" properties.</p>
<p>The "reference-orientation" property is applied only on formatting objects
that establish a  reference-area.
Each value of "reference-orientation" sets the absolute direction
for "top", "left", "bottom", and "right"; which is used by "writing-mode",
"direction", and all positioning operations that are referenced
to the reference-area or are nested within it. </p>
<p>The <trait>reference-orientation</trait> trait on an area is indirectly derived
from the "reference-orientation" property on the formatting object
that generates the area or the formatting object ancestors of that
formatting object.</p>


</div3>

<div3 id="relative-position"><head><quote>relative-position</quote></head>
<css-cited border="thin"><p>A Property Derived from a CSS2 Property.</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | static | relative | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">static</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all block-level and inline-level formatting objects</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>static</label><def><p>The area is normally stacked.</p></def></gitem>
<gitem><label>relative</label><def><p>The area's position is determined as if it was normally
stacked. Only during rendering is the area
rendered offset relative to this position.
The fact that one area is relatively positioned does not
influence the position on any other area.</p>
<p>For areas that break over a page boundary,
only the portion that would have been on a given page originally
is included in the repositioned area on that page. Any portion
of the repositioned area that was originally on the current page, but
falls off the current page due to repositioning is "off" (typically
clipped), thus does not fall onto any other page.</p>
</def></gitem>
</glist>

</css-cited>
</div3>

<div3 id="span"><head><quote>span</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | all | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>none</label><def><p>This object does not span multiple
columns.</p></def></gitem>
<gitem><label>all</label><def><p>The areas resulting from this flow
object shall span all the columns of a multi-column region.</p></def></gitem></glist>
<p>Specifies if a block-level object
should be placed in the current column or should span all columns
of a multi-column region.</p>


</div3>

</div2>

<div2><head>Leader and Rule Properties</head>

<div3 id="leader-alignment"><head><quote>leader-alignment</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | reference-area | page | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>

<glist><gitem><label>none</label><def><p>Leader-pattern has no special alignment.</p></def></gitem>
<gitem><label>reference-area</label><def><p>Leader-pattern is aligned as if it began on the current
reference-area's content-rectangle start-edge.</p></def></gitem>
<gitem><label>page</label><def><p>Leader-pattern is aligned as if it began on the current
page's start-edge.</p></def></gitem></glist>

<p>Specifies whether fo:leaders having identical content and property values
shall have their patterns aligned with each other, with respect to their
common reference-area or page.</p>
<p>For fo:leaders where the "leader-pattern" property is specified as
"dot" or as "use-content", this property will be honored.
</p>
<p>If the fo:leader is aligned, the start-edge of each cycle of the
repeated pattern will be placed on the start-edge of the next cycle
in the appropriate pattern-alignment grid.</p>



</div3>

<div3 id="leader-pattern"><head><quote>leader-pattern</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space | rule | dots | use-content | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">space</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>

<glist><gitem><label>space</label><def><p>Leader is to be filled with blank space.</p></def></gitem>
<gitem><label>rule</label><def><p>Leader is to be filled with a rule.</p>
<p>If this choice is selected, the "rule-thickness" and "rule-style"
properties are used to set the leader's style.</p></def></gitem>
<gitem><label>dots</label><def><p>Leader is to be filled with a repeating sequence of dots.
The choice of dot character is dependent on the user agent.</p></def></gitem>
<gitem><label>use-content</label><def><p>Leader is to be filled with a repeating pattern as specified
by the children of the fo:leader.</p></def></gitem></glist>

<p>Provides the specification of how to fill in the leader.</p>
<p>If the leader is aligned, the start-edge of each cycle of each
repeating pattern component will be placed on the start-edge of
the next cycle in the pattern-alignment grid.</p>


</div3>

<div3 id="leader-pattern-width"><head><quote>leader-pattern-width</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-font-metrics | &lt;length&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-font-metrics </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">Refer to width of containing box</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>

<glist><gitem><label>use-font-metrics</label><def><p>Use the width of the leader-pattern as determined from
its font metrics.</p></def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Sets length for leader-pattern-repeating. </p>
<p>The leader will have an inline-space inserted after each pattern
cycle to account for any difference between the width of the pattern
as determined by the font metrics and the width specified in this
property. </p>
<p>If the length specified is less than the value that would be
determined via the use-font-metrics choice,
<spot id="fo0001_9b"/>the value of this property is computed
as if use-font-metrics choice had been specified.</p></def></gitem></glist>

<p>Specifies the length of each repeat cycle in a repeating leader. </p>
<p>For leaders where the "leader-pattern" property is specified as
"dot" or as "use-content", this property will be honored.
</p>



</div3>

<div3 id="leader-length"><head><quote>leader-length</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length-range&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100% </td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of content-rectangle of parent area</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>

<glist><gitem><label>&lt;length-range&gt;</label><def><p>leader-length.minimum=sets minimum length for a leader</p>
<p>leader-length.optimum=sets optimum length for a leader</p>
<p>leader-length.maximum=sets maximum length for a leader</p></def></gitem></glist>

<p>Specifies the minimum, optimum, and maximum length of an fo:leader.
</p>
<p>This property constrains the length of the leader to be between the minimum
and maximum lengths.</p>
<note><p>User agents may choose to use the value of "leader-length.optimum"
to determine where to break the line, then use the minimum and maximum
values during line justification."</p>
</note>


</div3>

<div3 id="rule-style"><head><quote>rule-style</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none | dotted | dashed | solid | double | groove
| ridge | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">solid</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the style (pattern) of the rule.</p>
<p>This property applies only if the "leader-pattern" property is
specified as "rule".</p>
<p>Values have the following meanings:</p>

<glist><gitem><label>none</label><def><p>No rule, forces rule-thickness to 0.</p></def></gitem>
<gitem><label>dotted</label><def><p>The rule is a series of dots.</p></def></gitem>
<gitem><label>dashed</label><def><p>The rule is a series of short line segments.</p></def></gitem>
<gitem><label>solid</label><def><p>The rule is a single line segment.</p></def></gitem>
<gitem><label>double</label><def><p>The rule is two solid lines. The sum of the two lines and
the space between them equals the value of "rule-thickness". </p></def></gitem>
<gitem><label>groove</label><def><p>The rule looks as though it were carved into the canvas.
(Top/left half of the rule's thickness is the color specified;<spot id="aj000029_86a"/>
the other half is white.)</p></def></gitem>
<gitem><label>ridge</label><def><p>The opposite of "groove", the rule looks as though it were
coming out of the canvas. (Bottom/right half of the rule's thickness
is the color specified;<spot id="aj000029_86b"/>
the other half is white.)</p></def></gitem></glist>

</div3>

<div3 id="rule-thickness"><head><quote>rule-thickness</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1.0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:leader</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Specifies the overall thickness of the rule.</p>
<p>This property applies only if the "leader-pattern" property is
specified as "rule".</p>
<p>Values have the following meanings:</p>

<glist><gitem><label>&lt;length&gt;</label><def><p>The "rule-thickness" is always perpendicular
to its length-axis. </p>
<p>The rule is thickened equally above and below the line's
alignment position. This can be adjusted through the "baseline-shift"
property.</p></def></gitem></glist>

</div3>

</div2>

<div2><head>Properties for Dynamic Effects Formatting Objects</head>

<div3 id="active-state"><head><quote>active-state</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">

<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">link | visited | active | hover | focus</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-property-set</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>link</label><def><p>This fo:multi-property-set applies if
there is a <spot id="link01_i5c"/>fo:basic-link descendant of the parent fo:multi-properties
and that link has not yet been visited.</p>
</def></gitem>
<gitem><label>visited</label><def><p>This fo:multi-property-set applies if
there is a fo:basic-link descendant of the parent fo:multi-properties
and that link has been visited.</p>
</def></gitem>
<gitem><label>active</label><def><p>This fo:multi-property-set applies
while a normal area returned by the parent fo:multi-properties is
being activated by the user. For example, between the times the user
presses the mouse button and releases it.
</p></def></gitem>
<gitem><label>hover</label><def><p>This fo:multi-property-set applies
while the user designates a normal area returned by
the parent fo:multi-properties (with some pointing device),
but does not activate it. For example
the cursor (mouse pointer) hovers over such an area.
</p></def></gitem>
<gitem><label>focus</label><def><p>This fo:multi-property-set applies
while a normal area returned by the parent fo:multi-properties
has the focus (accepts keyboard events or other forms of
text input).
</p></def></gitem>

</glist>
<p>The "active-state" property is used to control which of the
fo:multi-property-sets
are used to format the child flow objects within an
fo:multi-properties
formatting object. The states (or at least the events that
cause the state to be entered) are defined by the DOM.</p>



</div3>

<div3 id="auto-restore"><head><quote>auto-restore</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-switch</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>yes</label><def>
<p>If this fo:multi-switch
is contained in another fo:multi-switch, and that fo:multi-switch
changes the active fo:multi-case (hiding this fo:multi-switch),
then this fo:multi-switch should restore its initial fo:multi-case.</p>
</def></gitem>
<gitem><label>no</label><def>
<p>This fo:multi-switch
should retain its current fo:multi-case.</p>
</def></gitem>

</glist>
<p>Specifies if the initial fo:multi-case should be restored
when the fo:multi-switch gets hidden by an ancestor fo:multi-switch.</p>
<note>
<p>A common case of using this property with a "yes" value
is when several nested fo:multi-switch objects
<spot id="aj000029_88"/>build an expandable/collapsible table-of-contents view. If the
table-of-contents is expanded far down the hierarchy, and an (far
above) ancestor is closed, one would want all sub-titles to have
restored to their original state when that ancestor is opened again.</p></note>


</div3>

<div3 id="case-name"><head><quote>case-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-case</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>&lt;name&gt;</label><def>
<p>Specifies a name for an fo:multi-case. The name must be unique
among the current fo:multi-case siblings, i.e., in the scope of
the fo:multi-switch object that (directly) contains them. Other
instances of fo:multi-switch objects may use the same names for
its fo:multi-case objects.</p>
</def></gitem>
</glist>

<p>The purpose of this property is to allow fo:multi-toggle objects
to select fo:multi-case objects to switch to.</p>



</div3>

<div3 id="case-title"><head><quote>case-title</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;string&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">none, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-case</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>&lt;string&gt;</label><def>
<p>Specifies a descriptive title for the fo:multi-case. The title
can be displayed in a menu to represent this fo:multi-case when
an fo:multi-toggle object names several fo:multi-case objects as
allowed destinations.</p></def></gitem>
</glist>


</div3>

<div3 id="destination-placement-offset"><head><quote>destination-placement-offset</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>&lt;length&gt;</label></gitem></glist>
<p>The "destination-placement-offset" property specifies
the distance from the beginning (top) of the page to the innermost
line-area that contains the first destination area. If the first
destination area is not contained in a line-area, the "destination-placement-offset" property
instead directly specifies the distance to the top of the destination
area.</p>
<p>If the specification of destination-placement-offset would
result in a distance longer than the distance from the start of
the document, the distance from the start of the document should
be used.</p>
<p>If the specified distance would push the first destination area
below the page-area, the distance should be decreased so the whole
first destination area becomes visible, if possible. If the first
destination area is higher than the page, the top of the area should
be aligned with the top of the page.</p>



</div3>

<div3 id="external-destination"><head><quote>external-destination</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="aj000035_19h"/>&lt;uri-specification&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">null string</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>&lt;uri-specification&gt;</label></gitem></glist>


<p>Specifies the destination resource (or, when a fragment
identifier is given, sub-resource) for an fo:basic-link.</p>
<p>How the destination (sub-)resource is used and/or displayed
is application and implementation-dependent.  In typical
browsing applications, the destination resource is displayed
in the browser positioned so that some rendered portion
resulting from the processing of some part of the specific
destination sub-resource indicated by the fragment identifier
is in view.</p>

<p>At least one of the external-destination and internal-destination
properties should be assigned. If both are assigned, the system
may either report the error, or use the internal-destination property.</p>


</div3>

<div3 id="indicate-destination"><head><quote>indicate-destination</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>yes</label><def><p>The areas that belong to the link target
when traversed should, in a system-dependent manner, be indicated.</p>
</def></gitem>
<gitem><label>no</label><def><p>No special indication should be made.</p></def></gitem>

</glist>

<note>
<p>This could be indicated in any feasible way, e.g., by reversed
video, etc.</p></note>


</div3>

<div3 id="internal-destination"><head><quote>internal-destination</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">null string |  &lt;idref&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">null string</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>&lt;idref&gt;</label></gitem></glist>
<p>Specifies the destination flow object of an fo:basic-link.
This property allows the destination flow object node to be explicitly
specified.</p>
<p>At least one of the external-destination and internal-destination
properties should be assigned. If both are assigned, the system
may either report the error, or use the internal-destination property.</p>



</div3>

<div3 id="show-destination"><head><quote>show-destination</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">replace | new</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">replace</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>replace</label><def><p>The current document view should be replaced. However,
if the destination area(s) are already available in a page/region,
those areas should simply be moved/scrolled "into sight".</p></def></gitem>
<gitem><label>new</label><def><p>A new (additional) document view should always be opened.</p></def></gitem></glist>
<p>Specifies where the destination resource should be displayed.</p>



</div3>

<div3 id="starting-state"><head><quote>starting-state</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">show | hide</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">show</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-case</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>show</label><def>
<p>The content of the fo:multi-case is a candidate for being
displayed initially.</p>
</def></gitem>
<gitem><label>hide</label><def>
<p>The content of the fo:multi-case is not a candidate for being
displayed initially.</p>
</def></gitem>

</glist>

<p>Specifies if the fo:multi-case can be initially displayed.</p>
<p>The parent fo:multi-switch shall choose the first fo:multi-case
child where the property "starting-state" has the value equal to "show".</p>
<note>
<p>Any number of the fo:multi-case objects may assign "starting-state"
to "show".</p></note>
<p>If no fo:multi-case has "starting-state" property value of "show", the
contents of no fo:multi-case should be displayed.</p>
<note>
<p>If no multi-case is displayed, the entire fo:multi-switch will
effectively be hidden.</p></note>


</div3>

<div3 id="switch-to"><head><quote>switch-to</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">xsl-preceding | xsl-following | xsl-any | &lt;name&gt;[ &lt;name&gt;]*</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">xsl-any</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:multi-toggle</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist><gitem><label>xsl-preceding</label><def><p>Activating the switch should result in <spot id="aj000035_46"/>the current
fo:multi-case being replaced by its preceding sibling.</p>
<note>
<p>The current fo:multi-case is the closest ancestor fo:multi-case.</p></note>
<p>In other words, the current fo:multi-switch should switch to
the previous sibling of the fo:multi-case that is currently selected.</p>
<note>
<p>The current fo:multi-switch is the closest ancestor fo:multi-switch.</p></note>
<p><spot id="aj000029_89a"/>If the current fo:multi-case is the first sibling, xsl-preceding
should switch to the last fo:multi-case sibling.</p></def></gitem>
<gitem><label>xsl-following</label><def><p>Activating the switch should result in that the current
fo:multi-case is replaced by its next sibling.</p>
<p><spot id="aj000029_89b"/>If the current fo:multi-case is the last sibling, xsl-following
should switch to the first fo:multi-case sibling.</p></def></gitem>
<gitem><label>xsl-any</label><def><p>Activating the switch should allow the user to select any
other fo:multi-case sibling.</p>
<p>If there is only a single other fo:multi-case, the toggle should
immediately switch to it (and not show that single choice to the
user).</p></def></gitem>
<gitem><label>&lt;name&gt;</label><def><p>A name matching a case-name of an fo:multi-case.</p></def></gitem>

</glist>
<p>Specifies what fo:multi-case object(s) this fo:multi-toggle
shall switch to.</p>
<p>If switch-to is a name list, the user can switch to any of the
named multi-case objects. If a multi-toggle with a single name is
activated, it should immediately switch to the named multi-case.</p>
<note>
<p>How to actually select the multi-case from a list
is system dependent.</p>
</note>



</div3>

<div3 id="target-presentation-context"><head><quote>target-presentation-context</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-target-processing-context |  &lt;uri-specification&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-target-processing-context</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>use-target-processing-context</label><def><p>The context specified by the "target-processing-context" property
shall be used.</p>
</def></gitem>

<gitem><label>&lt;uri-specification&gt;</label></gitem>
</glist>

<p>Specifies the limited context in which the resource should be
presented if the external destination
is a resource of a processed structured media type for which a
limited presentational context makes sense (e.g., XML, XHTML, SVG).
</p>
<p>This property is ignored if the "external-destination" property has
a null string value or if the external destination is not of
a processed structured media type for which a
limited presentational context makes sense.
</p>
<note>
<p>For example, an XML and XSL implementation may parse the XML
document, but begin XSLT processing by applying templates to the node
set indicated by the "target-presentation-context" property.</p>
</note>
<note>
<p>If this is a node other than the document root,
numbering and other contextually-dependent presentation may differ
between implementations. Some implementations may want to make
this tradeoff for memory or performance reasons.</p>
</note>



</div3>

<div3 id="target-processing-context"><head><quote>target-processing-context</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">document-root |  &lt;uri-specification&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">document-root</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>document-root</label><def><p>The root of the document of the external-destination is used.</p>
</def></gitem>

<gitem><label>&lt;uri-specification&gt;</label></gitem>
</glist>

<p>Specifies the root of a virtual document that the processor
preparing the new presentation should process if the external destination
is a resource of a processed structured media type (e.g., XML, SVG).
</p>
<p>This property is ignored if the "external-destination" property has
a null string value or if the external destination is not of
a processed structured media type.
</p>
<note>
<p>Not all URI references will be sensible roots, e.g., an XPointer that
gives a string range into an XML document.</p>
</note>
<p>If the root is not valid for the media type
the processor may ignore this property.</p>



</div3>

<div3 id="target-stylesheet"><head><quote>target-stylesheet</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-normal-stylesheet |  &lt;uri-specification&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">use-normal-stylesheet</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:basic-link</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">interactive</td></tr>
</tbody></table>
<glist>

<gitem><label>use-normal-stylesheet</label><def><p>The implementation will
discover stylesheets using its usual methods.</p>
</def></gitem>

<gitem><label>&lt;uri-specification&gt;</label></gitem>
</glist>

<p>Specifies the stylesheet that shall be used for processing the
resource. This stylesheet shall be used instead of any other stylesheet
that otherwise would be used.
</p>
<note><p>For example from
HTTP header information, XML stylesheet processing instructions,
or XHTML style and link elements.</p>
</note>
<p>This property is ignored if the "external-destination" property has
a null string value or if the external destination is not of
a media type that uses stylesheets.</p>
<note>
<p>In this version of XSL, only a single stylesheet URI reference is
permitted.
A future version of XSL may extend the stylesheet specification.
</p>
</note>



</div3>

</div2>

<div2><head>Properties for Markers</head>

<div3 id="marker-class-name"><head><quote>marker-class-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">an empty name</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:marker</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">paged</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;name&gt;</label><def><p>Names used as identifiers must be unique among
fo:markers that are (conceptually) attached to the same area.</p>
<p>If the name is empty or if a name-conflict is encountered,
an error shall be reported. A processor may then continue processing.</p>
</def></gitem>
</glist>
<p>This property identifies the fo:marker as being in
a group with others that have the same name, each of which
becomes a candidate to be retrieved by an fo:retrieve-marker
that has a "retrieve-class-name" property of the same value.</p>


</div3>



<div3 id="retrieve-class-name"><head><quote>retrieve-class-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">an empty name</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:retrieve-marker</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">paged</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;name&gt;</label><def><p>A name that matches the "marker-class-name"
property value of an fo:marker.</p></def></gitem>
</glist>
<p>This property constrains that the fo:marker whose children are
retrieved by the fo:retrieve-marker must have a "marker-class-name"
property value that is the same as the value of this property.</p>


</div3>



<div3 id="retrieve-position"><head><quote>retrieve-position</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">first-starting-within-page | first-including-carryover |
last-starting-within-page | last-ending-within-page</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">first-starting-within-page</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:retrieve-marker</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">paged</td></tr>
</tbody></table>

<p>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.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>first-starting-within-page</label><def><p>Specifies a preference for retrieving the children
of an fo:marker attached to an area that is</p>
<ulist><item><p>within the containing page</p></item>
<item><p>whose "is-first" trait is set to "true"</p></item></ulist>
<p>and that precedes in the area tree any other similarly
constrained area that is attached to an identically named
fo:marker, using pre-order traversal order.</p></def></gitem>
<gitem><label>first-including-carryover</label><def><p>Specifies a preference for retrieving the children of
an fo:marker attached to an area that is within the containing
page and that precedes in the area tree any other similarly
constrained area that is attached to an identically named fo:marker,
using pre-order traversal order.</p></def></gitem>
<gitem><label>last-starting-within-page</label><def><p>Specifies a preference for retrieving the children
of an fo:marker attached to an area that is</p>
<ulist><item><p>within the containing page</p></item>
<item><p>whose "is-first" trait is set to "true"</p></item></ulist>
<p>and that follows in the area tree any other similarly
constrained area that is attached to an identically named
fo:marker, using pre-order traversal order.</p></def></gitem>
<gitem><label>last-ending-within-page</label><def><p>Specifies a preference for retrieving the children
of an fo:marker attached to an area that is within the containing
page whose "is-last" trait is set to "true" and that follows in
the area tree any other similarly constrained area that is attached
to an identically named fo:marker, using pre-order traversal order.</p></def></gitem>
</glist>
<p>This property specifies the preference for which
fo:marker's children shall be retrieved by an fo:retrieve-marker,
based on the areas returned by the parent of the fo:marker
relative to the areas returned by the parents of other identically
named fo:marker's.</p>


</div3>


<div3 id="retrieve-boundary"><head><quote>retrieve-boundary</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">page | page-sequence | document</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:retrieve-marker</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">paged</td></tr>
</tbody></table>

<p>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.</p>
<p>Values have the following meanings:</p>
<glist><gitem><label>page</label><def><p>Specifies that the children of any fo:markers whose
parent generated or returned a normal area within the containing
page or generated non-normal area within the containing page
may be retrieved by this fo:retrieve-marker.</p></def></gitem>
<gitem><label>page-sequence</label><def><p>Specifies that only the children of fo:markers
that are descendants of the fo:flow within the containing
fo:page-sequence may be retrieved by this fo:retrieve-marker.</p>
</def></gitem>
<gitem><label>document</label><def><p>Specifies that the children of any fo:marker that
is a descendant of any fo:flow within the document may be
retrieved by this fo:retrieve-marker.</p></def></gitem></glist>


</div3>

</div2>

<div2><head>Properties for Number to String Conversion</head>

<div3 id="format"><head><quote>format</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;string&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1.</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p>This property is defined in <spot id="aj000029_90a"/><bibref ref="XSLT"/>:
Number to String Conversion Attributes.</p>

</div3>

<div3 id="grouping-separator"><head><quote>grouping-separator</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;character&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no separator</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p>This property is defined in <spot id="aj000029_90b"/><bibref ref="XSLT"/>:
Number to String Conversion Attributes.</p>

</div3>

<div3 id="grouping-size"><head><quote>grouping-size</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no grouping</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p>This property is defined in <spot id="aj000029_90c"/><bibref ref="XSLT"/>:
Number to String Conversion Attributes.</p>

</div3>

<div3 id="letter-value"><head><quote>letter-value</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | alphabetic | traditional</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">all</td></tr>
</tbody></table>
<p>This property is defined in <spot id="aj000029_90d"/><bibref ref="XSLT"/>:
Number to String Conversion Attributes.
A value of "auto" corresponds to the XSLT definition for
when the attribute is not specified.
</p>

</div3>

</div2>

<div2><head>Pagination and Layout Properties</head>
<p>The following pagination and layout properties are all
XSL only.</p>

<div3 id="blank-or-not-blank"><head><quote>blank-or-not-blank</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">blank | not-blank | any | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">any</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:conditional-page-master-reference</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>This property forms part of a selection rule to determine
if the referenced page-master is eligible for selection at
this point in the page-sequence.</p>
<p>The values have the following meanings:</p>
<glist><gitem><label>blank</label><def><p>This master is eligible for selection if a page
must be generated (e.g., to maintain proper page parity
at the start or end of the page-sequence) and there are
no areas from the fo:flow to be put on that page.</p></def></gitem>
<gitem><label>not-blank</label><def><p>This master is eligible for selection if this page
contains areas from the fo:flow.</p></def></gitem>
<gitem><label>any</label><def><p>This master is always eligible for selection.</p></def></gitem></glist>

</div3>

<div3 id="column-count"><head><quote>column-count</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:region-body</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem></glist>
<p>Specifies the number of columns in
the region.</p>
<p>A value of 1 indicates that this is not a multi-column region.</p>


</div3>

<div3 id="column-gap"><head><quote>column-gap</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">12.0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:region-body</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to width of the region being divided into columns.</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>&lt;length&gt;</label><def><p>This is an unsigned length. If a negative value has been
specified a value of 0pt will be used.
</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The value is a percentage of the inline-progression-dimension
of the content-rectangle of the region.</p></def></gitem>
</glist>
<p>Specifies the width of the
separation between adjacent columns in a multi-column region.
See the description in <specref ref="fo_region-body"/> for further details.
</p>


</div3>

<div3 id="extent"><head><quote>extent</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">0.0pt</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:region-before, fo:region-after, fo:region-start, fo:region-end</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">refer to the corresponding height or width of the region
reference-area.</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist>
<gitem><label>&lt;length&gt;</label><def><p>This is an unsigned length. If a negative value has been
specified a value of 0pt will be used.
</p></def></gitem>
<gitem><label>&lt;percentage&gt;</label><def><p>The value is a percentage of corresponding height or width of
the page.</p></def></gitem>
</glist>
<p>Specifies the
width
of the region-start
or region-end or the
height
of the region-before or region-after.
</p>


</div3>

<div3 id="flow-name"><head><quote>flow-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">an empty name</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:flow, fo:static-content</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;name&gt;</label><def><p>Names used as identifiers must be unique within
an fo:page-sequence.</p>
<p>If the name is empty or if a name-conflict is
encountered, an
error shall be reported. A
processor may then
continue processing.</p></def></gitem></glist>
<p>Defines the name of the flow.</p>
<p>The flow-name and region-name are used to assign the flow's content
(or static-content's content) to a specific region or series of
regions in the layout. In XSL this is done by specifying
the name of the target region as the flow-name. (For example, text placed
in the region-body would specify
flow-name="xsl-region-body".) </p>

</div3>

<div3 id="force-page-count"><head><quote>force-page-count</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | even | odd | end-on-even | end-on-odd | no-force
| inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Force-page-count is used to impose a constraint on
the
number of pages in a page-sequence. In the event that this
constraint
is not satisfied, an additional page will be added to the end of
the sequence. This page becomes the "last" page of that sequence.</p>
<p>The values have the following meanings:</p>
<glist>
<gitem><label>auto</label><def><p>Force the last page in this page-sequence to be an odd-page
if the initial-page-number of the next page-sequence is even.
Force it to be an even-page if the initial-page-number of the
next page-sequence is odd. If there is no next page-sequence or if the
value of its initial-page-number is "auto" do not force any page.
</p></def></gitem>
<gitem><label>even</label><def><p>Force an even number of pages in this
page-sequence.</p></def></gitem>
<gitem><label>odd</label><def><p>Force an odd number of pages in this
page-sequence.</p></def></gitem>
<gitem><label>end-on-even</label><def><p>Force the last page in this page-sequence to be an even-page.
</p></def></gitem>
<gitem><label>end-on-odd</label><def><p>Force the last page in this page-sequence to be an odd-page.
</p></def></gitem>
<gitem><label>no-force</label><def><p>Do not force either an even or an odd number of pages in
this page-sequence</p></def></gitem></glist>

<note><p>Whether a page is an odd-page or even-page is determined from
the <trait>page-number</trait> trait.</p>
</note>


</div3>

<div3 id="initial-page-number"><head><quote>initial-page-number</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | auto-odd | auto-even | &lt;number&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>The initial number shall be set to 1 if no previous fo:page-sequence
exists in the document.</p>
<p>If a preceding page-sequence exists, the initial number
will
be one greater than the last number for that sequence. </p></def></gitem>
<gitem><label>auto-odd</label><def><p>A value is determined in the same manner as for "auto".
If that value is an even number 1 is added.</p>
</def></gitem>
<gitem><label>auto-even</label><def><p>A value is determined in the same manner as for "auto".
If that value is an odd number 1 is added.</p>
</def></gitem>

<gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem></glist>
<p>Sets the initial-page-number to be used on this page-sequence.</p>
</div3>

<div3 id="master-name"><head><quote>master-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">an empty name</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:page-sequence,
fo:simple-page-master,
fo:page-sequence-master, fo:single-page-master-reference,
fo:repeatable-page-master-reference, fo:conditional-page-master-reference</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">viaual</td></tr>
</tbody></table>
<p>Values have the following meanings:</p>
<glist><gitem><label>&lt;name&gt;</label><def><p>Names used as master identifiers may not be empty and must
be unique. </p>
<p>Uses of the name to reference a given named object need not be
unique, but may not be empty and must refer to a master-name that
exists within the document.</p></def></gitem></glist>
<p>This property is used for two purposes:</p>
<ulist><item><p>Identifying a master:</p>
<p>If this property is specified on an fo:simple-page-master, it
provides an identifying name of the master. This name is subsequently
referenced as the value of properties on the following formatting objects:
fo:single-page-master-reference, fo:repeatable-page-master-reference,
and fo:conditional-page-master-reference to request the use of this master
when creating a page instance. It may also be used on an fo:page-sequence
to specify the use of this master when creating page instances.
</p>
<p>If this property is specified on an fo:page-sequence-master, it
provides an identifying name of the master. This name is
subsequently referenced as the value of properties on the fo:page-sequence
to request the use of this page-sequence-master when creating page instances.</p>
<p>A master-name must be unique across all page-masters
and page-sequence-masters.</p>
<p>If the name is empty or if a name-conflict is
encountered, an
error shall be reported. A
processor may then
continue processing.</p></item>
<item><p>Selecting a master:</p>
<ulist>
<item><p>If this property is specified on the fo:page-sequence
it specifies the name of the page-sequence-master or page-master
to be used to create pages in the sequence.</p></item>
<item><p>If this property is specified on the fo:single-page-master-reference,
it specifies the name of the page-master to be used to create a
single page instance.</p></item>
<item><p>If this property is specified on the fo:repeatable-page-master-reference,
it specifies the name of the page-master to be used in repetition
until the content is exhausted or the maximum-repeats limit is reached,
whichever occurs first.</p></item>
<item><p>If this property is specified on the fo:conditional-page-master-reference,
it specifies the name of the page-master to be used whenever this
alternative is chosen.</p></item></ulist>
<p>If the name is empty or if a name-conflict is
encountered, an
error shall be reported. A
processor may then
continue processing.</p></item>
</ulist>

</div3>

<div3 id="maximum-repeats"><head><quote>maximum-repeats</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt; | no-limit | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no-limit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:repeatable-page-master-reference, fo:repeatable-page-master-alternatives</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>Specifies the constraint on the maximum number of pages
in the sub-sequence of pages that may be generated by an
fo:page-sequence
that uses the fo:repeatable-page-master-reference or
fo:repeatable-page-master-alternatives
on which this property is specified.</p>
<p>The values have the following meanings:</p>
<glist><gitem><label>no-limit</label><def><p>No constraint is specified.</p></def></gitem>
<gitem><label>&lt;integer&gt;</label><def><p>The maximum number of pages in the sub-sequence.</p>
<p>The value is an integer greater than or equal to 0. </p>
<p>If a fractional value or a value less than 0 is specified, it
will be rounded to the nearest integer greater than or equal to
0.</p>
<p>A value of 0 indicates this master-reference will not be used.</p>
</def></gitem></glist>

</div3>

<div3 id="odd-or-even"><head><quote>odd-or-even</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">odd | even | any | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">any</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:conditional-page-master-reference</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>This property forms part of a selection rule to determine
if the referenced page-master is eligible for selection at
this point in the page-sequence.</p>
<p>The values have the following meanings:</p>
<glist><gitem><label>odd</label><def><p>This master is eligible for selection if the page number is
odd.</p></def></gitem>
<gitem><label>even</label><def><p>This master is eligible for selection if the page number is
even.</p></def></gitem>
<gitem><label>any</label><def><p>This master is eligible for selection regardless of whether
the page number is odd or even.</p></def></gitem></glist>

<note><p>"Page number" refers to the <trait>page-number</trait> trait
for the page to be generated.</p>
</note>


</div3>

<div3 id="page-height"><head><quote>page-height</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | indefinite | &lt;length&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:simple-page-master</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>The "page-height" shall be determined
by the formatter from the height of the media or browser window.
If media information is not available this dimension shall be
implementation-defined.</p>
<note><p>A fallback to 11.0in would fit
on both 8+1/2x11 and A4 pages).</p></note></def></gitem>
<gitem><label>indefinite</label><def><p>The height of the page is determined
from the size of the laid-out content.</p>
<p>"Page-width" and "page-height" may not both be set to "indefinite".
Should that occur,
the dimension that is parallel to the block-progression-direction,
as determined by the "reference-orientation" and "writing-mode"
on the fo:simple-page-master, of the page-reference-area
will remain "indefinite" and the other will revert to "auto".</p>
</def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed height for the page.</p></def></gitem></glist>
<p>Specifies the height of a page.</p>
</div3>

<div3 id="page-position"><head><quote>page-position</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">first | last | rest | any | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">any</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:conditional-page-master-reference</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>This property forms part of a selection rule to determine
if the referenced page-master is eligible for selection at
this point in the page-sequence.</p>
<p>The values have the following meanings:</p>
<glist><gitem><label>first</label><def><p>This master is eligible for selection if this is the first
page in the page-sequence.</p></def></gitem>
<gitem><label>last</label><def><p>This master is eligible for selection if this is the last
page in the page-sequence.</p></def></gitem>
<gitem><label>rest</label><def><p>This master is eligible for selection if this is not the
first page nor the last page in the page-sequence.</p></def></gitem>
<gitem><label>any</label><def><p>This master is eligible for selection regardless of page
positioning within the page-sequence.</p></def></gitem></glist>

</div3>

<div3 id="page-width"><head><quote>page-width</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | indefinite | &lt;length&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:simple-page-master</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>auto</label><def><p>The "page-width" shall be determined
by the formatter from the width of the media or browser window.
If media information is not available this dimension shall be
implementation-defined.</p>
<note><p>A fallback to  8.26in would fit
on both 8+1/2x11 and A4 pages).</p></note>
</def></gitem>
<gitem><label>indefinite</label><def><p>The width of the page is determined
from the size of the laid-out content.</p>
<p>"Page-width" and "page-height" properties may not both be set
to "indefinite". Should that occur,
the dimension that is parallel to the block-progression-direction,
as determined by the "reference-orientation" and "writing-mode"
on the fo:simple-page-master, of the page-reference-area
will remain "indefinite" and the other will revert to "auto".</p>
</def></gitem>
<gitem><label>&lt;length&gt;</label><def><p>Specifies a fixed width for the
page.</p></def></gitem></glist>
<p>Specifies the width of a page.</p>

</div3>

<div3 id="precedence"><head><quote>precedence</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">true | false | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">false</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:before-region, fo:after-region, fo:start-region, fo:end-region</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>false</label><def><p>A value of false specifies that this region does not extend
to the page margins. This region has the same width or height as
the body.</p></def></gitem>
<gitem><label>true</label><def><p>A value of true specifies that this region takes precedence
and extends across the full size of the page or view.
</p></def></gitem></glist>
<p>Specifies which region (i.e., region-before,
region-after, region-start, or region-end) takes precedence in terms
of which may extend into the corners of the simple-page-master.</p>
<p>If both adjacent regions have equal precedence, the before-region
or after-region is treated as if 'true' had been specified and the
start-region or end-region will be treated as if 'false' had been
specified.</p>


</div3>

<div3 id="region-name"><head><quote>region-name</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">xsl-region-body | xsl-region-start | xsl-region-end
| xsl-region-before | xsl-region-after | xsl-before-float-separator
| xsl-footnote-separator | &lt;name&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:region-body, fo:region-start, fo:region-end, fo:region-before,
and fo:region-after</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no, a value is required</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p>Values have the following meanings:</p>
<glist><gitem><label>xsl-region-body</label><def><p>Reserved region-name for use as default name of fo:region-body.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-region-start</label><def><p>Reserved region-name for use as default name of fo:region-start.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-region-end</label><def><p>Reserved region-name for use as default name of fo:region-end.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-region-before</label><def><p>Reserved region-name for use as default name of fo:region-before.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-region-after</label><def><p>Reserved region-name for use as default name of fo:region-after.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-before-float-separator</label><def><p>Reserved name for content to be used as a separator at the
end-edge of a before-float-reference-area.
This name may not be used on any other class of region.</p></def></gitem>
<gitem><label>xsl-footnote-separator</label><def><p>Reserved name for content to be used as a separator at the
start-edge of a footnote-reference-area.
This name may not be used on any other class of region.</p></def></gitem>

<gitem><label>&lt;name&gt;</label><def><p>Names used as identifiers must be unique within a page-master.</p>
</def></gitem></glist>
<p>This property is used to identify
a region within a simple-page-master. </p>
<p>The "region-name" may be used to differentiate a region that
lies on a page-master for an odd page from a region that
lies on a page-master for an even page. In this usage, once a name is used
for a specific class
of region (start, end, before, after, or body), that name may only
be used for regions of the same class in any other page-master.
The reserved names may only be used in the manner described above.</p>
</div3>

</div2>

<div2><head>Table Properties</head>

<div3 id="border-after-precedence"><head><quote>border-after-precedence</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">force | &lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table: 1, fo:table-cell: 0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist>
<gitem><label>force</label><def><p>The precedence is higher than any &lt;integer&gt;.
</p>
</def></gitem>

<gitem><label>&lt;integer&gt;</label><def>
<p><spot id="aj000036_1d"/>A numeric precedence specification.
A higher value has a higher precedence than a lower one.
</p>
</def></gitem>

</glist>

<p>Specifies the precedence of the border specification on this
formatting object for the border-after.</p>


</div3>

<div3 id="border-before-precedence"><head><quote>border-before-precedence</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">force | &lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table: 1, fo:table-cell: 0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p><spot id="aj000036_1e"/>Specifies the precedence of the border specification on this
formatting object for the border-before.</p>

<p>See definition of property border-after-precedence (<specref ref="border-after-precedence"/>).</p>

</div3>

<div3 id="border-collapse"><head><quote>border-collapse</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">collapse | separate | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">collapse</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html#propdef-border-collapse" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html#propdef-border-collapse</xspecref>.
</p>

<glist><gitem><label>collapse</label><def><p>The value "collapse" selects the collapsing borders model.</p></def></gitem>
<gitem><label>separate</label><def><p>The value "separate" selects the separated borders border
model.</p></def></gitem></glist>

<p>This property selects a table's border model. The value "separate"
selects the separated borders border model. The value "collapse"
selects the collapsing borders model.</p>

</css-cited>
</div3>

<div3 id="border-end-precedence"><head><quote>border-end-precedence</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">force | &lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table: 1, fo:table-cell: 0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p><spot id="aj000036_1f"/>Specifies the precedence of the border specification on this
formatting object for the border-end.</p>

<p>See definition of property border-after-precedence (<specref ref="border-after-precedence"/>).</p>

</div3>

<div3 id="border-separation"><head><quote>border-separation</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length-bp-ip-direction&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">.block-progression-direction="0pt" .inline-progression-direction="0pt"</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;length-bp-ip-direction&gt;</label></gitem></glist>

<p>The lengths specify the distance that separates adjacent cell
borders in the row-stacking-direction
(given by the block-progression-direction of the table),
and in the column-stacking-direction
(given by the inline-progression-direction of the table).</p>
<p>In the separate borders model, each cell has an individual border.
The "border-separation" property specifies the distance between the
borders of adjacent cells. This space is filled with the background
of the table element. Rows, columns, row groups, and column groups cannot
have borders (i.e., user agents must ignore the border properties
for those elements).</p>



</div3>

<div3 id="border-start-precedence"><head><quote>border-start-precedence</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">force | &lt;integer&gt; | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table: 1, fo:table-cell: 0</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>

<p><spot id="aj000036_1g"/>Specifies the precedence of the border specification on this
formatting object for the border-start.</p>

<p>See definition of property border-after-precedence (<specref ref="border-after-precedence"/>).</p>

</div3>

<div3 id="caption-side"><head><quote>caption-side</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">before | after | start | end | top | bottom | left | right | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">before</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-caption</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html#q6" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html#q6</xspecref>.
</p>

<glist>
<gitem><label>top</label><def><p>Positions the caption box above the table box.</p></def></gitem>
<gitem><label>bottom</label><def><p>Positions the caption box below the table box.</p></def></gitem>
<gitem><label>left</label><def><p>Positions the caption box to the left of the table box.</p></def></gitem>
<gitem><label>right</label><def><p>Positions the caption box to the right of the table box.</p></def></gitem></glist>

<p>This property specifies the position of the caption box with
respect to the table box.</p>
<p>Captions above or below a "table" element are formatted very
much as if they were a block element before or after the table,
except that (1) they inherit inheritable properties from the table,
and (2) they are not considered to be a block box for the purposes
of any "compact" or "run-in" element that may precede the table.</p>
<p>A caption that is above or below a table box also behaves like
a block box for width calculations; the width is computed with respect
to the width of the table box's containing block.</p>
<p>For a caption that is on the left or right side of a table box,
on the other hand, a value other than "auto" for "width" sets the
width explicitly, but "auto" tells the user agent to chose a "reasonable
width". This may vary between "the narrowest possible box" to "a
single line", so we recommend that users do not specify "auto" for
left and right caption widths.</p>
<p>To align caption content horizontally within the caption box,
use the "text-align" property. For vertical alignment of a left
or right caption box with respect to the table box, use the "vertical-align"
property. The only meaningful values in this case are "top", "middle",
and "bottom". All other values are treated the same as "top".</p>
</css-cited>
<p><emph>XSL modifications to the CSS definition:</emph></p>

<p>Insert the following writing-mode relative values:</p>

<glist>
<gitem><label>before</label><def><p>Positions the caption before the table in the block-progression-direction.</p></def></gitem>
<gitem><label>after</label><def><p>Positions the caption after the table in the block-progression-direction.</p></def></gitem>
<gitem><label>start</label><def><p>Positions the caption before the table in the inline-progression-direction.</p></def></gitem>
<gitem><label>end</label><def><p>Positions the caption after the table in the inline-progression-direction.</p></def></gitem>
</glist>

<p>The CSS qualifications (1) and (2) do not apply.
The last three sentences in the last paragraph
(referencing "vertical-align") do not apply.
</p>


</div3>

<div3 id="column-number"><head><quote>column-number</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-column, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem>
</glist>
<p>For an fo:table-column formatting object, it
specifies
the column-number of the table cells that may use
properties
from this fo:table-column formatting object by using
the from-table-column() function.
The initial
value is
1 plus the column-number of the previous table-column, if there
is a previous table-column, and otherwise 1.</p>
<p>For an fo:table-cell it specifies the number of the first column
to be spanned by the table-cell. The initial value is the current
column-number. For the first table-cell in a table-row, the
current
column number is 1. For other table-cells, the current column-number
is the column-number of the previous table-cell in the row plus
the number of columns spanned by that previous cell.</p>


</div3>

<div3 id="column-width"><head><quote>column-width</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;length&gt; | &lt;percentage&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">see prose</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-column</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top"><spot id="fo0001ab_c"/>refer to width of table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;length&gt;</label></gitem></glist>
<p>The "column-width" property specifies the width of the
column whose value is given by the "column-number" property. This
property, if present, is ignored if the "number-columns-spanned" property
is greater than 1. The <spot id="fo0002ab_a"/>"column-width" property must be
specified for every column,
unless the automatic table layout is used.</p>
<note><p><spot id="fo0001ab_ba"/>The result of using a percentage for
the width may be unpredictable, especially when using the
automatic table layout.
</p></note>


</div3>

<div3 id="empty-cells"><head><quote>empty-cells</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">show | hide | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">show</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html#propdef-empty-cells" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html#propdef-empty-cells</xspecref>.
</p>

<glist><gitem><label>show</label><def><p>When this property has the value "show", borders are drawn
around empty cells (like normal cells).</p></def></gitem>
<gitem><label>hide</label><def><p>A value of "hide" means that no borders are drawn around
empty cells. Furthermore, if all the cells in a row have a value
of "hide" and have no visible content, the entire row behaves as
if it had "display: none".</p></def></gitem></glist>

<p>In the separated borders model, this property controls the rendering
of borders around cells that have no visible content. Empty cells
and cells with the "visibility" property set to "hidden" are considered
to have no visible content. Visible content includes
<spot id="aj000029_91"/>"&amp;nbsp;" (non-breaking-space)
and other whitespace except ASCII CR ("\0D"), LF ("\0A"), tab ("\09"),
and space ("\20").</p>

</css-cited>
</div3>

<div3 id="ends-row"><head><quote>ends-row</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>yes</label><def><p>This cell ends a row.</p></def></gitem>
<gitem><label>no</label><def><p>This cell does not end a row.</p></def></gitem></glist>
<p>Specifies whether this cell ends a row. This is only allowed
for table-cells that are not in table-rows.</p>


</div3>

<div3 id="number-columns-repeated"><head><quote>number-columns-repeated</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-column</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem>
</glist>
<p>The "number-columns-repeated" property specifies the repetition
of a table-column specification n times; with the same effect as
if the fo:table-column formatting object had been repeated <var>n</var> times
in the result tree. The "column-number" property, for all but the
first, is the column-number of the previous one plus its value of
the "number-columns-spanned" property.</p>
<note>
<p>This handles HTML's "colgroup" element.</p></note>


</div3>

<div3 id="number-columns-spanned"><head><quote>number-columns-spanned</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-column, fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem>
</glist>
<p>For an fo:table-column the "number-columns-spanned" property
specifies the number of columns spanned by table-cells that may use
properties from this fo:table-column
formatting object using the from-table-column() function.</p>
<p>For an fo:table-cell the "number-columns-spanned" property specifies
the number of columns which this cell spans in the column-progression-direction
starting with the current column.</p>

</div3>

<div3 id="number-rows-spanned"><head><quote>number-rows-spanned</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">&lt;number&gt;</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">1</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>&lt;integer&gt;</label><def><p>A positive integer. If a negative or non-integer value
is provided, the value will be rounded to the nearest integer value
greater than or equal to 1.</p></def></gitem>
</glist>
<p>The "number-rows-spanned" property specifies the number of rows
which this cell spans in the row-progression-direction starting
with the current row.</p>

</div3>

<div3 id="starts-row"><head><quote>starts-row</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table-cell</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>yes</label><def><p>This cell starts a row.</p></def></gitem>
<gitem><label>no</label><def><p>This cell does not start a row.</p></def></gitem></glist>
<p>Specifies whether this cell starts a row. This is only
allowed for table-cells that are not in table-rows.</p>
<note><p>The "starts-row" and "ends-row" properties
with a "yes" value are
typically 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.</p>
</note>



</div3>

<div3 id="table-layout"><head><quote>table-layout</quote></head>
<css-cited border="medium"><p>CSS2 Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto | fixed | inherit</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">auto</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<p>CSS2 Reference:
<xspecref href="http://www.w3.org/TR/REC-CSS2/tables.html#propdef-table-layout" show="new" actuate="user" xmlns:xlink="http://www.w3.org/TR/WD-xlink">http://www.w3.org/TR/REC-CSS2/tables.html#propdef-table-layout</xspecref>.
</p>

<glist><gitem><label>fixed</label><def><p>Use the fixed table layout algorithm</p></def></gitem>
<gitem><label>auto</label><def><p>Use any automatic table layout algorithm</p></def></gitem></glist>

<p>The "table-layout" property controls the algorithm used to lay
out the table cells, rows, and columns.</p>

</css-cited>
</div3>

<div3 id="table-omit-footer-at-break"><head><quote>table-omit-footer-at-break</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>yes</label><def><p>This property specifies that the footer should be omitted.</p></def></gitem>
<gitem><label>no</label><def><p>This property specifies that the footer should not be omitted.</p></def></gitem></glist>
<p>The "table-omit-footer-at-break" property
specifies if a
table whose last area is not at the end of an area produced by the
table should end with the content of the fo:table-header formatting object
or not.</p>


</div3>

<div3 id="table-omit-header-at-break"><head><quote>table-omit-header-at-break</quote></head>
<p>XSL Definition:</p>
<table border="0" class="prop-summary"><tbody align="left" valign="top">
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Value:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">yes | no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Initial:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Applies to:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">fo:table</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Inherited:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">no</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Percentages:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">N/A</td></tr>
<tr align="left" valign="top"><td rowspan="1" colspan="1" align="left" valign="top"><emph>Media:  </emph></td><td rowspan="1" colspan="1" align="left" valign="top">visual</td></tr>
</tbody></table>
<glist><gitem><label>yes</label><def><p>This property specifies that the header should be omitted.</p></def></gitem>
<gitem><label>no</label><def><p>This property specifies that the header should not be omitted.</p></def></gitem></glist>
<p>The "table-omit-header-at-break" property
specifies if a
table whose first area is not at the beginning of an area produced
by the table should start with the content of the fo:table-header
formatting object or not.</p>


</div3>

</div2>

<div2 id="writing-mode-related"><head>Writing-mode-related Properties</head>

<p>The properties in this section control the setting of the
inline-progression-direction, the block-progression-direction and the
orientation of the glyphs that are placed on a baseline in the
inline-progression-direction. The "writing-mode" property sets both
the "inline-progression-direction" and the
"block-progression-direction"s.
</p>
<p>The glyph orientation properties, "glyph-orientation-horizontal" and
"glyph-orientation-vertical" set the orientation of the glyph
relative to the default glyph orientation. The default orientation for
glyphs is with the top of the glyph oriented toward the top of the
reference area of which the glyph area is a descendant; that is, the
glyph orientation is the same as the reference-orientation of the
reference area.  Glyphs that are oriented at '90' or '-90' degrees
from the reference-orientation are said to be <term>rotated
glyphs</term>. Glyphs that are oriented 180 degrees from the
reference-orientation are said to be <term>inverted glyphs</term>.
</p>
<p>The "direction" property (which is controlled by the "unicode-bidi"
property) only affects text in which the orientation of the glyphs is
perpendicular to the dominant-baseline. For horizontal writing-modes,
the "direction" property only affects character sequences that
generate glyphs that are not rotated. For vertical writing-modes, the
"direction" property only affects character sequences that generate
glyphs that are rotated.
</p>
<p>The following sample fragment of XML is used to illustrate the
interaction between the "writing-mode," "direction" and
"glyph-orientation-vertical" properties.
</p>
<figure>
<graphic source="GlyphOrientationVerticalandDir-apex-markup.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>Markup of text in the next figure</p>
</figcap>
</figure>
<p>In the XML markup of the figure above, the characters are represented by
their presentation form (and not their Unicode character codes).  The
order in which the characters are depicted is their storage order.
The Hebrew characters in the third line are (from left to right) the
first four letters of the Hebrew alphabet: aleph, beth, gimel and
daleth. The generic identifiers in the XML markup are arbitrary, but
are intended to suggest a sequence of text with two embedded text
spans.
</p>
<p>The following figure shows the effect of specifying an assortment of
values for the "direction" and "glyph-orientation-vertical" properties
that are specified on the three elements in the above XML fragment. In
all cases, the "writing-mode" is "tb-rl". And in all cases the Unicode
Bidi Algorithm <bibref ref="UNICODE-TR9"/> is applied to the characters that are the children or
descendants of the &lt;t&gt; element, sometimes with explicit directional
markup in terms of the "direction" property and other times using the
intrinsic direction properties of the underlying characters. The Unicode
Bidi Algorithm is applied as the last step of refinement
(see <specref ref="refinement"/>)
and before mapping the characters to glyphs and applying any
rotation due to a glyph-orientation value.
</p>
<p>The figure shows seven possible presentations of the sample XML
fragment, one with all glyphs having a vertical orientation and six
with various combinations of a perpendicular glyph-orientation and
direction. In the figure, the correct reading order of the glyphs
(left-to-right for the Latin and right-to-left for the Hebrew
sub-sequences) is shown by the (red) arrow that is placed on the
alphabetic baseline under the glyphs.
</p>
<p>The six combinations of the "direction" and
"glyph-orientation-vertical" properties that generated cases (2)
through (7) have the property that they preserve the correct reading
order when the glyphs are viewed upright. For some of the cases, it is
necessary to turn the page one way to view the glyphs of one language
and the opposite way to view the glyphs of the other language in an
upright position. The reading order is preserved by combining a visual
re-ordering of the glyphs using the Unicode Bidi Algorithm with a
glyph-orientation that ensures the proper reading order for the
ordering of the glyphs that results from the Unicode Bidi
Algorithm. Sometimes it is necessary to explicitly specify the
"direction" property to force the desired visual ordering of the
glyphs.
</p>
<p>The property specifications that yield the six presentations
are given in the table that follows the figure.
</p>
<figure>
<graphic source="GlyphOrientationVerticalandDir-apex-AllVariants.gif" xml:attributes="href source" show="embed" actuate="auto" xmlns:xlink="http://www.w3.org/TR/WD-xlink"/>
<figcap>
<p>Achievable rotations of Bidi text</p>
</figcap>
</figure>
<table border="1" cellpadding="2" cellspacing="0">
<caption>Table: Properties that produce the above figure</caption>
<thead align="left" valign="top">
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1">Elements/ Cases</td>
<td align="center" valign="middle" rowspan="1" colspan="1">&lt;t&gt;</td>
<td align="center" valign="middle" rowspan="1" colspan="1">&lt;t-s1&gt;</td>
<td align="center" valign="middle" rowspan="1" colspan="1">&lt;t-s2&gt;</td>
</tr>
</thead>
<tbody align="left" valign="top">
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(2)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90</td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90</td>
</tr>
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(3)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90</td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p>
<p>direction: ltr</p>
</td>
</tr>
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(4)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p>
<p>direction: rtl</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p>
<p>direction: ltr</p>
</td>
</tr>
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(5)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p>
<p>direction: rtl</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90</td>
</tr>
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(6)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p>
<p>direction: rtl</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: -90
<p>unicode-bidi: bidi-override</p>
<p>direction: ltr</p></td>
</tr>
<tr align="left" valign="top">
<td align="center" valign="middle" rowspan="1" colspan="1"><p>(7)</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">writing-mode: tb-rl
<p>glyph-orientation-vertical: 0</p>
<p>direction: rtl</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90
<p>unicode-bidi: embed</p>
<p>direction: ltr</p></td>
<td valign="top" rowspan="1" colspan="1" align="left">glyph-orientation-vertical: 90</td>
</tr>
</tbody>
</table>
<note>
<olist>
<item>
<p>Case (1) has no rotated text. This can occur either because
"glyph-orientation-vertical" is set to "0" or because it is set to
"auto" and all the characters in the string are the full width
variants of the characters. If the orientation of the all glyphs is
vertical, then there is no re-ordering of characters.
If the "writing-mode" is set to "tb-lr" or "tb-rl" then the "direction" is
set to "ltr" and correspondingly, a "writing-mode" set of "bt-lr" or
"bt-rl" sets the "direction" to "rtl". Therefore, it is only necessary
to explicitly set the "direction" property when it would be different
than that set by setting the "writing-mode"; for example, cases (5)
through (7).</p>
</item>
<item>
<p>Case (2) can either have the explicit property settings shown in the
Table or the "glyph-orientation-vertical" property on the &lt;t&gt;
element can have the value "auto" and the English and Hebrew
characters can be half-width characters. (Of course, there are not any
half-width Hebrew characters in real Unicode.) In this case, the
re-ordering of characters comes from the bi-directional characters
types that are assigned to each Unicode character: the Roman
characters have type "L" for left to right and the Hebrew characters
have type "R" for right to left.</p>
</item>
<item>
<p>Cases (5) through (7) all explicitly set the "direction" property to
"rtl". This sets the paragraph embedding level for the Unicode Bidi
Algorithm to be right to left. Even though the "direction" property is
set to "rtl", the ideographic glyphs are not re-ordered because their
orientation is not perpendicular to the dominant-baseline.</p>
</item>
<item>
<p>In cases (5) and (6) for the &lt;t-s1&gt; element, the "unicode-bidi"
property is set to override even though there is no explicit
specification for the "direction" property. The inherited value of the
"direction" property (which is "rtl" in this case) is used.</p>
</item>
<item>
<p>In case (7) for the &lt;t-s1&gt; element, the "unicode-bidi" property
is set to "embed". It is not necessary to use "bidi-override" because
the bi-directional character type for the content of &lt;t-s1&gt; is
already "L". (Using the value "bidi-override" would have the same
effect as the "embed", however.) The embed resets the embedding level
of the content of the &lt;t-s1&gt; to be left to right. Even the
"embed" (and the specific setting of the "unicode-bidi" property) is
not needed because the bi-directional character type, "L" of the
English characters is sufficient to raise the embedding level and
cause them to be ordered left to right. Setting the "direction"
property to "ltr" is needed if the "unicode-bidi" property is other
than "normal" because the inherited value of "direction" is "rtl".</p>
</item>
</olist>
</note>
<p>If paired punctuation characters, such as parentheses, had been
included in one of the text spans, then these characters may need to
be "mirrored" as described in the Unicode Bidi Algorithm. Mirroring a
character means reversing the direction the character faces; for
example, mirroring a left parenthesis makes it into a right
parenthesis. This insures that the mirrored characters always face the
text they surround.
</p>
<p>If the "glyph-orientation" of the characters to which the glyphs
correspond is "90" and the embedding level in which the characters lie
is odd, then the paired glyphs need to be mirrored. Alternatively, if
the "glyph-orientation" of the characters to which the glyphs
correspond is "-90" and the embedding level in which the characters
lie is even, then the paired glyphs need to be mirrored. In the
example above, parentheses that surround the Latin text would not be
mirrored in cases (2), (3) and (8), but would need to be mirrored in
cases (4) through (6). Conversely, parentheses that surround the
Hebrew text would not be mirrored in cases (4) through (6), but would
need to be mirrored in cases (2), (3), and (8).
</p>
<p>Within a string of vertical text, when the value of the
"glyph-orientation-vertical" property is "90", then each affected
glyph is rotated 90 degrees clockwise. This rotation changes the way
the rotated glyph is aligned. The horizontal alignment-point of the
rotated glyph is aligned with the appropriate baseline from the
vertical baseline-table. The appropriate baseline is the baseline
identified by the "alignment-baseline" property of the character(s)
that generate the glyph area.  For example, if the
"alignment-baseline" property is not explicitly specified, Latin
glyphs are aligned to the (vertical) "alphabetic" baseline and some
Indic glyphs are aligned to the (vertical) "hanging" baseline.
</p>
<note>
<p>If a glyph, such as a ligature or syllabic glyph, is generated from
more than one character, then all those characters must have
the same value for the "alignment-baseline" property.
</p>
</note>
<p>The positions of the (vertical) baselines are chosen to insure that
the rotated glyphs will not protrude too far (if at all) outside the
line area for the 