Movatterモバイル変換


[0]ホーム

URL:


W3C

Extensible Stylesheet Language (XSL) Version 1.1

W3C Recommendation 05 December 2006

This version:
http://www.w3.org/TR/2006/REC-xsl11-20061205/
Latest version:
http://www.w3.org/TR/xsl11/
Previous version:
http://www.w3.org/TR/2006/PR-xsl11-20061006/
Editor:
Anders Berglund, IBM<alrb@us.ibm.com>

Please refer to theerrata for this document, which may include normative corrections.

See alsotranslations.

This document is also available in these non-normative formats:PDF by RenderX and XML file.

Copyright © 2006 W3C® (MIT,ERCIM,Keio), All Rights Reserved. W3Cliability,trademark anddocument use rules apply.


Abstract

This specification defines the features and syntax forthe Extensible Stylesheet Language (XSL),a language for expressing stylesheets. It consists of twoparts:

  1. a language for transforming XML documents (XSLT), and

  2. an XML vocabulary for specifying formattingsemantics.

An XSL stylesheet specifies the presentation of a class of XMLdocuments by describing how an instance of the class is transformedinto an XML document that uses the formatting vocabulary.

Status of this Document

This section describes the status of this document at the time of its publication.Other documents may supersede this document.A list of current W3C publications and the latest revision of this technical report can be foundin theW3C technical reports index athttp://www.w3.org/TR/.

Please see the Working Group'simplementation report.

This Recommendation supersedes[XSL 1.0], which was published 15 October 2001.New functionality has been added to supportchange marks,indexes,multiple flows,and bookmarks.Existing functionality has been extended in the areas ofgraphics scaling,"markers" and their retrieval in tables to support e.g. partial sums,andpage number referencing.The changes made in this document areintended to meet the requirements for XSL 1.1 describedin[XSL 1.1 Requirements].A number of errata have been incorporated into the text.SeeE Changes from XSL 1.0.

This document has been produced as part of theW3C XML Activity bytheXSL Working Group.

Please send comments about this documenttoxsl-editors@w3.org (withpublic archive).

General public discussion of XSL takes placeon theXSL-Listandon thewww-xsl-fomailing lists.

This document has been reviewed by W3C Members,by software developers, and by other W3C groups and interested parties,and is endorsed by the Director as a W3C Recommendation.It is a stable document and may be used as reference material orcited from another document. W3C's role in making the Recommendationis to draw attention to the specification and to promoteits widespread deployment. This enhances the functionalityand interoperability of the Web.

This document was produced by a group operating under the5 February 2004 W3C Patent Policy.W3C maintains apublic list of any patent disclosuresmade in connection with the deliverables of the group;that page also includes instructions for disclosing a patent.An individual who has actual knowledge of a patent which theindividual believes containsEssential Claim(s)must disclose the information in accordance with section6 of the W3C Patent Policy.

Table of Contents

1Introduction and Overview
    1.1Processing a Stylesheet
        1.1.1Tree Transformations
        1.1.2Formatting
    1.2Benefits of XSL
        1.2.1Paging and Scrolling
        1.2.2Selectors and Tree Construction
        1.2.3An Extended Page Layout Model
        1.2.4A Comprehensive Area Model
        1.2.5Internationalization and Writing-Modes
        1.2.6Linking
2XSL Transformation
    2.1Tree Construction
    2.2XSL Namespace
3Introduction to Formatting
    3.1Conceptual Procedure
4Area Model
    4.1Introduction
    4.2Rectangular Areas
        4.2.1Area Types
        4.2.2Common Traits
        4.2.3Geometric Definitions
        4.2.4Tree Ordering
        4.2.5Stacking Constraints
        4.2.6Font Baseline Tables
    4.3Spaces and Conditionality
        4.3.1Space-resolution Rules
        4.3.2Overconstrained space-specifiers
    4.4Block-areas
        4.4.1Stacked Block-areas
        4.4.2Intrusion Adjustments
    4.5Line-areas
    4.6Inline-areas
        4.6.1Stacked Inline-areas
        4.6.2Glyph-areas
    4.7Ordering Constraints
        4.7.1General Ordering Constraints
        4.7.2Line-building
        4.7.3Inline-building
    4.8Keeps and Breaks
    4.9Rendering Model
        4.9.1Geometry
        4.9.2Viewport Geometry
        4.9.3Visibility
        4.9.4Border, Padding, and Background
        4.9.5Intrinsic Marks
        4.9.6Layering and Conflict of Marks
    4.10Sample Area Tree
5Property Refinement / Resolution
    5.1Specified, Computed, and Actual Values, and Inheritance
        5.1.1Specified Values
        5.1.2Computed Values
        5.1.3Actual Values
        5.1.4Inheritance
    5.2Shorthand Expansion
    5.3Computing the Values of Corresponding Properties
        5.3.1Border and Padding Properties
        5.3.2Margin, Space, and Indent Properties
        5.3.3Height, and Width Properties
        5.3.4Overconstrained Geometry
    5.4Simple Property to Trait Mapping
        5.4.1Background-position-horizontal and background-position-vertical Properties
        5.4.2Column-number Property
        5.4.3Text-align Property
        5.4.4Text-align-last Property
        5.4.5z-index Property
        5.4.6Language Property
    5.5Complex Property to Trait Mapping
        5.5.1Word spacing and Letter spacing Properties
        5.5.2Reference-orientation Property
        5.5.3Writing-mode and Direction Properties
        5.5.4Absolute-position Property
        5.5.5Relative-position Property
        5.5.6Text-decoration Property
        5.5.7Font Properties
    5.6Non-property Based Trait Generation
    5.7Property Based Transformations
        5.7.1Text-transform Property
    5.8Unicode BIDI Processing
    5.9Expressions
        5.9.1Property Context
        5.9.2Evaluation Order
        5.9.3Basics
        5.9.4Function Calls
        5.9.5Numerics
        5.9.6Absolute Numerics
        5.9.7Relative Numerics
            5.9.7.1Percents
            5.9.7.2Relative Lengths
        5.9.8Strings
        5.9.9Colors
        5.9.10Keywords
            5.9.10.1inherit
        5.9.11Lexical Structure
        5.9.12Expression Value Conversions
        5.9.13Definitions of Units of Measure
            5.9.13.1Pixels
    5.10Core Function Library
        5.10.1Number Functions
        5.10.2Color Functions
        5.10.3Font Functions
        5.10.4Property Value Functions
    5.11Property Datatypes
6Formatting Objects
    6.1Introduction to Formatting Objects
        6.1.1Definitions Common to Many Formatting Objects
    6.2Formatting Object Content
    6.3Formatting Objects Summary
    6.4Declarations and Pagination and Layout Formatting Objects
        6.4.1Introduction
            6.4.1.1Page-sequence-masters
            6.4.1.2Page-masters
            6.4.1.3Page Generation
            6.4.1.4Flows and Flow Mapping
            6.4.1.5Constraints on Page Generation
            6.4.1.6Pagination Tree Structure
            6.4.1.7Example Flow Maps
                6.4.1.7.1Two flows mapping into their own regions
                6.4.1.7.2A flow mapping into two regions
                6.4.1.7.3Two flows mapping into a region
                6.4.1.7.4Two flows mapping into two regions
        6.4.2fo:root
        6.4.3fo:declarations
        6.4.4fo:color-profile
        6.4.5fo:page-sequence
        6.4.6fo:page-sequence-wrapper
        6.4.7fo:layout-master-set
        6.4.8fo:page-sequence-master
        6.4.9fo:single-page-master-reference
        6.4.10fo:repeatable-page-master-reference
        6.4.11fo:repeatable-page-master-alternatives
        6.4.12fo:conditional-page-master-reference
        6.4.13fo:simple-page-master
        6.4.14fo:region-body
        6.4.15fo:region-before
        6.4.16fo:region-after
        6.4.17fo:region-start
        6.4.18fo:region-end
        6.4.19fo:flow
        6.4.20fo:static-content
        6.4.21fo:title
        6.4.22fo:flow-map
        6.4.23fo:flow-assignment
        6.4.24fo:flow-source-list
        6.4.25fo:flow-name-specifier
        6.4.26fo:flow-target-list
        6.4.27fo:region-name-specifier
    6.5Block-level Formatting Objects
        6.5.1Introduction
            6.5.1.1Example
        6.5.2fo:block
        6.5.3fo:block-container
    6.6Inline-level Formatting Objects
        6.6.1Introduction
            6.6.1.1Examples
                6.6.1.1.1First Line of Paragraph in Small-caps
                6.6.1.1.2Figure with a Photograph
                6.6.1.1.3Page numbering and page number reference
                6.6.1.1.4Table of Contents with Leaders
        6.6.2fo:bidi-override
        6.6.3fo:character
        6.6.4fo:initial-property-set
        6.6.5fo:external-graphic
        6.6.6fo:instream-foreign-object
        6.6.7fo:inline
        6.6.8fo:inline-container
        6.6.9fo:leader
        6.6.10fo:page-number
        6.6.11fo:page-number-citation
        6.6.12fo:page-number-citation-last
        6.6.13fo:folio-prefix
        6.6.14fo:folio-suffix
        6.6.15fo:scaling-value-citation
    6.7Formatting Objects for Tables
        6.7.1Introduction
            6.7.1.1Examples
                6.7.1.1.1Simple Table, Centered and Indented
                6.7.1.1.2Simple Table with Relative Column-width Specifications
        6.7.2fo:table-and-caption
        6.7.3fo:table
        6.7.4fo:table-column
        6.7.5fo:table-caption
        6.7.6fo:table-header
        6.7.7fo:table-footer
        6.7.8fo:table-body
        6.7.9fo:table-row
        6.7.10fo:table-cell
    6.8Formatting Objects for Lists
        6.8.1Introduction
            6.8.1.1Examples
                6.8.1.1.1Enumerated List
                6.8.1.1.2HTML-style "dl" lists
        6.8.2fo:list-block
        6.8.3fo:list-item
        6.8.4fo:list-item-body
        6.8.5fo:list-item-label
    6.9Dynamic Effects: Link and Multi Formatting Objects
        6.9.1Introduction
            6.9.1.1Examples
                6.9.1.1.1Expandable/Collapsible Table of Contents
                6.9.1.1.2Styling an XLink Based on the Active State
        6.9.2fo:basic-link
        6.9.3fo:multi-switch
        6.9.4fo:multi-case
        6.9.5fo:multi-toggle
        6.9.6fo:multi-properties
        6.9.7fo:multi-property-set
    6.10Formatting Objects for Indexing
        6.10.1Introduction
            6.10.1.1Example
                6.10.1.1.1Associating Index Keys with Formatting Objects
                6.10.1.1.2Building the Index
            6.10.1.2Processing the Example Index
                6.10.1.2.1merge-pages-across-index-key-references="leave-separate"
                6.10.1.2.2merge-pages-across-index-key-references="merge"
            6.10.1.3Example Index
        6.10.2fo:index-page-number-prefix
        6.10.3fo:index-page-number-suffix
        6.10.4fo:index-range-begin
        6.10.5fo:index-range-end
        6.10.6fo:index-key-reference
        6.10.7fo:index-page-citation-list
        6.10.8fo:index-page-citation-list-separator
        6.10.9fo:index-page-citation-range-separator
    6.11Formatting Objects for Bookmarks
        6.11.1fo:bookmark-tree
        6.11.2fo:bookmark
        6.11.3fo:bookmark-title
    6.12Out-of-Line Formatting Objects
        6.12.1Introduction
            6.12.1.1Floats
            6.12.1.2Footnotes
            6.12.1.3Conditional Sub-Regions
            6.12.1.4Examples
                6.12.1.4.1Floating Figure
                6.12.1.4.2Footnote
        6.12.2fo:float
        6.12.3fo:footnote
        6.12.4fo:footnote-body
    6.13Other Formatting Objects
        6.13.1Introduction
            6.13.1.1Examples
                6.13.1.1.1Wrapper
                6.13.1.1.2Table Markers
        6.13.2fo:change-bar-begin
        6.13.3fo:change-bar-end
        6.13.4fo:wrapper
        6.13.5fo:marker
        6.13.6fo:retrieve-marker
        6.13.7fo:retrieve-table-marker
7Formatting Properties
    7.1Description of Property Groups
    7.2XSL Areas and the CSS Box Model
    7.3Reference Rectangle for Percentage Computations
    7.4Additional CSS Datatypes
    7.5Common Accessibility Properties
        7.5.1source-document
        7.5.2role
    7.6Common Absolute Position Properties
        7.6.1absolute-position
        7.6.2top
        7.6.3right
        7.6.4bottom
        7.6.5left
    7.7Common Aural Properties
        7.7.1azimuth
        7.7.2cue-after
        7.7.3cue-before
        7.7.4elevation
        7.7.5pause-after
        7.7.6pause-before
        7.7.7pitch
        7.7.8pitch-range
        7.7.9play-during
        7.7.10richness
        7.7.11speak
        7.7.12speak-header
        7.7.13speak-numeral
        7.7.14speak-punctuation
        7.7.15speech-rate
        7.7.16stress
        7.7.17voice-family
        7.7.18volume
    7.8Common Border, Padding, and Background Properties
        7.8.1background-attachment
        7.8.2background-color
        7.8.3background-image
        7.8.4background-repeat
        7.8.5background-position-horizontal
        7.8.6background-position-vertical
        7.8.7border-before-color
        7.8.8border-before-style
        7.8.9border-before-width
        7.8.10border-after-color
        7.8.11border-after-style
        7.8.12border-after-width
        7.8.13border-start-color
        7.8.14border-start-style
        7.8.15border-start-width
        7.8.16border-end-color
        7.8.17border-end-style
        7.8.18border-end-width
        7.8.19border-top-color
        7.8.20border-top-style
        7.8.21border-top-width
        7.8.22border-bottom-color
        7.8.23border-bottom-style
        7.8.24border-bottom-width
        7.8.25border-left-color
        7.8.26border-left-style
        7.8.27border-left-width
        7.8.28border-right-color
        7.8.29border-right-style
        7.8.30border-right-width
        7.8.31padding-before
        7.8.32padding-after
        7.8.33padding-start
        7.8.34padding-end
        7.8.35padding-top
        7.8.36padding-bottom
        7.8.37padding-left
        7.8.38padding-right
    7.9Common Font Properties
        7.9.1Fonts and Font Data
        7.9.2font-family
        7.9.3font-selection-strategy
        7.9.4font-size
        7.9.5font-stretch
        7.9.6font-size-adjust
        7.9.7font-style
        7.9.8font-variant
        7.9.9font-weight
    7.10Common Hyphenation Properties
        7.10.1country
        7.10.2language
        7.10.3script
        7.10.4hyphenate
        7.10.5hyphenation-character
        7.10.6hyphenation-push-character-count
        7.10.7hyphenation-remain-character-count
    7.11Common Margin Properties-Block
        7.11.1margin-top
        7.11.2margin-bottom
        7.11.3margin-left
        7.11.4margin-right
        7.11.5space-before
        7.11.6space-after
        7.11.7start-indent
        7.11.8end-indent
    7.12Common Margin Properties-Inline
        7.12.1margin-top
        7.12.2margin-bottom
        7.12.3margin-left
        7.12.4margin-right
        7.12.5space-end
        7.12.6space-start
    7.13Common Relative Position Properties
        7.13.1top
        7.13.2right
        7.13.3bottom
        7.13.4left
        7.13.5relative-position
    7.14Area Alignment Properties
        7.14.1alignment-adjust
        7.14.2alignment-baseline
        7.14.3baseline-shift
        7.14.4display-align
        7.14.5dominant-baseline
        7.14.6relative-align
    7.15Area Dimension Properties
        7.15.1allowed-height-scale
        7.15.2allowed-width-scale
        7.15.3block-progression-dimension
        7.15.4content-height
        7.15.5content-width
        7.15.6height
        7.15.7inline-progression-dimension
        7.15.8max-height
        7.15.9max-width
        7.15.10min-height
        7.15.11min-width
        7.15.12scaling
        7.15.13scaling-method
        7.15.14width
    7.16Block and Line-related Properties
        7.16.1hyphenation-keep
        7.16.2hyphenation-ladder-count
        7.16.3last-line-end-indent
        7.16.4line-height
        7.16.5line-height-shift-adjustment
        7.16.6line-stacking-strategy
        7.16.7linefeed-treatment
        7.16.8white-space-treatment
        7.16.9text-align
        7.16.10text-align-last
        7.16.11text-indent
        7.16.12white-space-collapse
        7.16.13wrap-option
    7.17Character Properties
        7.17.1character
        7.17.2letter-spacing
        7.17.3suppress-at-line-break
        7.17.4text-decoration
        7.17.5text-shadow
        7.17.6text-transform
        7.17.7treat-as-word-space
        7.17.8word-spacing
    7.18Color-related Properties
        7.18.1color
        7.18.2color-profile-name
        7.18.3rendering-intent
    7.19Float-related Properties
        7.19.1clear
        7.19.2float
        7.19.3intrusion-displace
    7.20Keeps and Breaks Properties
        7.20.1break-after
        7.20.2break-before
        7.20.3keep-together
        7.20.4keep-with-next
        7.20.5keep-with-previous
        7.20.6orphans
        7.20.7widows
    7.21Layout-related Properties
        7.21.1clip
        7.21.2overflow
        7.21.3reference-orientation
        7.21.4span
    7.22Leader and Rule Properties
        7.22.1leader-alignment
        7.22.2leader-pattern
        7.22.3leader-pattern-width
        7.22.4leader-length
        7.22.5rule-style
        7.22.6rule-thickness
    7.23Properties for Dynamic Effects Formatting Objects
        7.23.1active-state
        7.23.2auto-restore
        7.23.3case-name
        7.23.4case-title
        7.23.5destination-placement-offset
        7.23.6external-destination
        7.23.7indicate-destination
        7.23.8internal-destination
        7.23.9show-destination
        7.23.10starting-state
        7.23.11switch-to
        7.23.12target-presentation-context
        7.23.13target-processing-context
        7.23.14target-stylesheet
    7.24Properties for Indexing
        7.24.1index-class
        7.24.2index-key
        7.24.3page-number-treatment
        7.24.4merge-ranges-across-index-key-references
        7.24.5merge-sequential-page-numbers
        7.24.6merge-pages-across-index-key-references
        7.24.7ref-index-key
    7.25Properties for Markers
        7.25.1marker-class-name
        7.25.2retrieve-boundary-within-table
        7.25.3retrieve-class-name
        7.25.4retrieve-position
        7.25.5retrieve-boundary
        7.25.6retrieve-position-within-table
    7.26Properties for Number to String Conversion
        7.26.1format
        7.26.2grouping-separator
        7.26.3grouping-size
        7.26.4letter-value
    7.27Pagination and Layout Properties
        7.27.1blank-or-not-blank
        7.27.2column-count
        7.27.3column-gap
        7.27.4extent
        7.27.5flow-name
        7.27.6force-page-count
        7.27.7initial-page-number
        7.27.8master-name
        7.27.9master-reference
        7.27.10maximum-repeats
        7.27.11media-usage
        7.27.12odd-or-even
        7.27.13page-height
        7.27.14page-position
        7.27.15page-width
        7.27.16precedence
        7.27.17region-name
        7.27.18flow-map-name
        7.27.19flow-map-reference
        7.27.20flow-name-reference
        7.27.21region-name-reference
    7.28Table Properties
        7.28.1border-after-precedence
        7.28.2border-before-precedence
        7.28.3border-collapse
        7.28.4border-end-precedence
        7.28.5border-separation
        7.28.6border-start-precedence
        7.28.7caption-side
        7.28.8column-number
        7.28.9column-width
        7.28.10empty-cells
        7.28.11ends-row
        7.28.12number-columns-repeated
        7.28.13number-columns-spanned
        7.28.14number-rows-spanned
        7.28.15starts-row
        7.28.16table-layout
        7.28.17table-omit-footer-at-break
        7.28.18table-omit-header-at-break
    7.29Writing-mode-related Properties
        7.29.1direction
        7.29.2glyph-orientation-horizontal
        7.29.3glyph-orientation-vertical
        7.29.4text-altitude
        7.29.5text-depth
        7.29.6unicode-bidi
        7.29.7writing-mode
    7.30Miscellaneous Properties
        7.30.1change-bar-class
        7.30.2change-bar-color
        7.30.3change-bar-offset
        7.30.4change-bar-placement
        7.30.5change-bar-style
        7.30.6change-bar-width
        7.30.7content-type
        7.30.8id
        7.30.9intrinsic-scale-value
        7.30.10page-citation-strategy
        7.30.11provisional-label-separation
        7.30.12provisional-distance-between-starts
        7.30.13ref-id
        7.30.14scale-option
        7.30.15score-spaces
        7.30.16src
        7.30.17visibility
        7.30.18z-index
    7.31Shorthand Properties
        7.31.1background
        7.31.2background-position
        7.31.3border
        7.31.4border-bottom
        7.31.5border-color
        7.31.6border-left
        7.31.7border-right
        7.31.8border-style
        7.31.9border-spacing
        7.31.10border-top
        7.31.11border-width
        7.31.12cue
        7.31.13font
        7.31.14margin
        7.31.15padding
        7.31.16page-break-after
        7.31.17page-break-before
        7.31.18page-break-inside
        7.31.19pause
        7.31.20position
        7.31.21size
        7.31.22vertical-align
        7.31.23white-space
        7.31.24xml:lang
8Conformance

Appendices

AFormatting Object Summary
    A.1Declaration and Pagination and Layout Formatting Objects
    A.2Block Formatting Objects
    A.3Inline Formatting Objects
    A.4Table Formatting Objects
    A.5List Formatting Objects
    A.6Link and Multi Formatting Objects
    A.7Out-of-line Formatting Objects
    A.8Formatting Objects for Indexing
    A.9Formatting Objects for Bookmarks
    A.10Other Formatting Objects
BProperty Summary
    B.1Explanation of Trait Mapping Values
    B.2Property Table: Part I
    B.3Property Table: Part II
    B.4Properties and the FOs they apply to
CReferences
    C.1Normative References
    C.2Other References
DProperty Index
EChanges from XSL 1.0 (Non-Normative)
FAcknowledgements (Non-Normative)


1 Introduction and Overview

This specification defines the Extensible Stylesheet Language(XSL). XSL is a language for expressing stylesheets. Given a class ofarbitrarily structured XML[XML] or[XML 1.1]documents or data files, designers usean XSL stylesheet to express their intentions about how thatstructured content should be presented; that is, how the sourcecontent should be styled, laid out, and paginated onto somepresentation medium, such as a window in a Web browser or ahand-held device, or a set ofphysical pages in a catalog, report, pamphlet, or book.

1.1 Processing a Stylesheet

An XSLstylesheet processor accepts a documentor data in XMLand an XSL stylesheet and produces the presentation of that XML sourcecontent that was intended by the designer of thatstylesheet. There are two aspects of thispresentation process:first, constructing a result tree from the XML source tree and second,interpreting the result tree to produce formattedresults suitable for presentation on adisplay, on paper, in speech, or onto other media. The firstaspect is calledtree transformation and thesecondis calledformatting. The process of formattingis performed by theformatter. This formattermay simply be a rendering engine inside a browser.

Tree transformation allows the structure of the result tree to be significantlydifferent from the structure of the source tree. For example, one could adda 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 toformat that result tree.

Formatting is enabled by including formatting semanticsin the result tree. Formatting semantics areexpressed in terms of a catalog of classes offormattingobjects. The nodes of the result tree are formattingobjects. The classes of formatting objectsdenote typographic abstractions such as page, paragraph,table, and soforth. Finer control over the presentation of these abstractions isprovided by a set offormatting properties, such asthose controlling indents, word- andletter spacing, and widow, orphan, and hyphenation control.In XSL, theclasses of formatting objects andformatting propertiesprovide the vocabulary for expressing presentation intent.

The XSL processing model is intended to beconceptual only. An implementation is notmandated to provide these as separateprocesses. Furthermore, implementations are free to processthe source document in any way that produces the same resultas if it were processed using the conceptual XSL processingmodel. A diagram depicting the detailed conceptual model isshown below.

The XSL two processes: transformation and formatting   [D]

XSL Two Processes: Transformation & Formatting

1.1.1 Tree Transformations

Tree transformation constructs the result tree. In XSL,this tree is called theelement and attributetree, with objects primarily in the"formatting object" namespace. In this tree, a formattingobjectis represented as an XML element, with the properties represented by aset of XML attribute-value pairs. The content of the formatting objectis the content of the XML element. Treetransformation is defined in the XSLT Recommendation[XSLT].A diagram depicting this conceptual process isshown below.

The XSL Transformation process   [D]

Transform to Another Vocabulary

The XSL stylesheet is used in tree transformation. A stylesheetcontains a set of tree construction rules. The tree construction ruleshave two parts: a pattern that is matched against elements in thesource tree and a template that constructs a portion of the resulttree. This allows a stylesheet to be applicable to a wide class ofdocuments that have similar source tree structures.

In some implementations of XSL/XSLT,the result of tree constructioncan be output as an XML document. This would allow an XML documentwhich contains formatting objects and formatting properties to beoutput. This capability is neither necessary for an XSL processor noris it encouraged. There are, however, cases where this is important,such as a server preparing input for a known client; for example, the waythat a WAP(http://www.wapforum.org/faqs/index.htm)server prepares specialized input for a WAP capablehand held device. To preserve accessibility, designers of Web systemsshould not develop architectures that require (or use) thetransmission of documents containing formatting objects and propertiesunless either the transmitter knows that the client can acceptformatting objects and properties or the transmitted document containsa reference to the source document(s) used in the construction of thedocument with the formatting objects and properties.

1.1.2 Formatting

Formatting interprets the result tree in its formatting object treeform to produce the presentation intended by the designerof the stylesheet from which the XML element and attributetree in the "fo" namespace was constructed.

The vocabulary of formatting objects supported by XSL - the set offo: element types - represents the set oftypographic abstractions available to thedesigner. Semantically, each formatting object represents aspecification for a part of the pagination, layout, and stylinginformation that will be applied to the content of that formattingobject as a result of formatting the whole result tree. Eachformatting object class represents a particular kind of formattingbehavior. For example, the block formatting object class representsthe breaking of the content of a paragraph into lines. Other parts ofthe specification may come from other formatting objects; forexample, the formatting of a paragraph (block formattingobject)depends on both the specification of properties on the blockformatting object and the specification of the layout structure intowhich the block is placed by the formatter.

The properties associated with an instance of a formatting objectcontrol the formatting of that object. Some of the properties, forexample "color", directly specify the formatted result.Other properties, for example 'space-before', only constrain the setof possible formatted results without specifying any particularformatted result. The formatter may make choices among otherpossible considerations such as esthetics.

Formatting consists of the generation of a treeof geometric areas, called thearea tree. Thegeometric areas arepositioned on a sequence of one or more pages (a browser typicallyuses a single page). Each geometric area has a position on the page, aspecification of what to display in that area and may have abackground, padding, and borders. For example, formatting asinglecharacter generates an area sufficiently large enough to hold theglyph that is used to present the character visually and the glyph iswhat is displayed in this area. These areas may be nested. Forexample, the glyph may be positioned within a line, within ablock, within a page.

Renderingtakes the area tree, the abstract model of the presentation (in termsof pages and their collections of areas), and causes apresentation to appear on the relevant medium, such as a browserwindow on a computer display screen or sheets of paper. The semanticsof rendering are not described in detail in this specification.

The first step in formatting is to "objectify" the elementand attributetree obtained via an XSLT transformation.Objectifying the tree basically consists of turning theelements in thetree into formatting object nodes and theattributes into property specifications. The result of this step istheformatting object tree.

Objectification of the FO tree   [D]

Build the XSL Formatting Object Tree

As part of the step of objectifying, the characters that occur inthe result tree are replaced by fo:character nodes.Characters in text nodes which consistsolely of white space characters andwhich are children of elements whose corresponding formatting objects donot permit fo:character nodes as children are ignored. Other characterswithin elements whose corresponding formatting objects do not permitfo:character nodes as children are errors.

The content of the fo:instream-foreign-objectis not objectified;instead the object representing the fo:instream-foreign-objectelement points to the appropriate node in the element andattribute tree.Similarly any non-XSL namespace child elementof fo:declarations is not objectified; instead the object representingthe fo:declarations element points to the appropriate node in theelement and attribute tree.

The second phase in formatting is to refine the formattingobject treeto produce therefined formatting object tree.The refinement process handles the mapping from propertiesto traits. This consists of: (1) shorthand expansion intoindividual properties, (2) mapping of correspondingproperties, (3) determining computed values (may includeexpression evaluation),(4) handling white-space-treatment and linefeed-treatmentproperty effects, and (5) inheritance.Details onrefinement are found in5 Property Refinement / Resolution.

The refinement step is depicted in the diagram below.

Refinement of the FO tree   [D]

Refine the Formatting Object Tree

The third step in formatting is the construction of the areatree. Thearea tree is generated as described in the semantics of eachformatting object. The traits applicable to each formattingobjectclass control how the areas are generated. Although everyformatting property may be specified on every formatting object, foreach formatting object class, only a subset of the formattingproperties are used to determine the traits for objects ofthat class.

Area generation is depicted in the diagram below.

Area tree generation   [D]

Generate the Area Tree

FO-to-area process summary   [D]

Summary of the Process

1.2 Benefits of XSL

Unlike the case of HTML, element names in XML have no intrinsicpresentation semantics. Absent a stylesheet, a processor could notpossibly know how to render the content of an XML document otherthan as an undifferentiated string of characters. XSL providesa comprehensive model and a vocabulary for writing such stylesheets using XML syntax.

This document is intended for implementors of such XSL processors.Although it can be used as a reference manual for writers of XSLstylesheets, it is not tutorial in nature.

XSL builds on the prior work on Cascading Style Sheets[CSS2] andthe Document Style Semantics and Specification Language[DSSSL].While many of XSL's formatting objects and properties correspondto the common set of properties, this would not besufficient byitself to accomplish all the goals of XSL. In particular, XSL introducesa model for pagination and layout that extends what is currently availableand that can in turn be extended, in a straightforward way, to pagestructures beyond the simple page models described in this specification.

1.2.1 Paging and Scrolling

Doing both scrollable document windows and pagination introducesnew complexities to the styling (and pagination) of XML content.Because pagination introduces arbitrary boundaries(pages or regions on pages) on the content, concepts such asthe controlof spacing at page, region, and block boundaries becomeextremely important. There are also concepts related toadjusting the spaces between lines (to adjust the pagevertically)and between words and letters (to justify the lines of text).These do not always arise with simple scrollable documentwindows, such as those found in today's browsers. However, thereis a correspondence between a page with multiple regions, such as a body,header, footer, and left and right sidebars, and a Webpresentation using "frames". The distribution of content into the regionsis basically the same in both cases, and XSL handles bothcases in an analogous fashion.

XSL was developed to give designers control over the featuresneeded when documents are paginated as well as to provide anequivalent "frame" based structure for browsing on the Web.To achieve this control, XSL has extended the set of formattingobjects and formatting properties beyond those available ineither CSS2 or DSSSL.In addition, the selectionof XML source components that can be styled (elements,attributes, text nodes, comments, and processinginstructions) is based on XSLT andXPath[XPath],thus providing theuser with an extremely powerful selection mechanism.

The design of the formatting objects and properties extensionswas first inspired by DSSSL. The actual extensions, however, do notalways look like the DSSSL constructs on which they were based. To eitherconform more closely with the CSS2 specification or tohandle cases more simply than in DSSSL, some extensions have diverged from DSSSL.

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 reflecta variety of writing-modes, such as top-to-bottom and bottom-to-top, ratherthan just left-to-right and right-to-left.

In other cases, common properties that are expressed in CSS2as one property with multiple simultaneous values, were split intoseveral new properties to provide independent control over independentaspects of the property. For example, the "white-space" property wassplit into four properties:a "white-space-treatment" property thatcontrols how white space is processed, a "linefeed-treatment" property that controlshow line feeds are processed,a "white-space-collapse" property that controlshow multiple consecutive spaces are collapsed,and a "wrap-option" propertythat controls whether lines are automatically wrapped whenthey 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 CSS2property a "shorthand" for the set of sub-properties it subsumes.

In still other cases, it was necessary to create new properties.For example, there are a number of new properties that control howhyphenation is done. These include identifying the script and countrythe text is from as well as such properties as "hyphenation-character"(which varies from script to script).

Some of the formatting objects and many of the properties in XSLcome from the CSS2 specification, ensuring compatibilitybetween the two.

There are four classes of XSL properties that can be identified as:

  1. CSS properties by copy (unchanged from their CSS2semantics)

  2. CSS properties with extended values

  3. CSS properties broken apart and/or extended

  4. XSL-only properties

1.2.2 Selectors and Tree Construction

As mentioned above, XSL uses XSLT and XPath for tree constructionand pattern selection, thus providing a high degree of controlover how portions of the source content are presented, and whatproperties are associated with those content portions, even wheremixed namespaces are involved.

For example, the patterns of XPath allow the selection of a portionof a string or the Nth text node in a paragraph. This allowsusers to have a rule that makes all third paragraphs inprocedural steps appear in bold, for instance. In addition,properties can be associated with a content portion based on thenumeric value of that content portion or attributes on thecontaining element. This allows one to have a style rulethat makes negative values appear in "red" and positivevalues appear in "black". Also, text can be generateddepending on a particular context in the source tree,or portions of the source tree may be presentedmultiple times with different styles.

1.2.3 An Extended Page Layout Model

There is a set of formatting objects in XSL to describe both thelayout structure of a page or "frame"(how big is the body; are there multiple columns;are there headers, footers, or sidebars; how big are these)and the rules by which the XML source content is placed into these "containers".

The layout structure is defined in terms of one or more instancesof a "simple-page-master" formatting object. This formattingobject allows one to define independently filled regions forthe body (with multiple columns), a header, a footer, and sidebarson a page. These simple-page-masters can be used in page sequencesthat 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-mastersfor a book chapter where the page instances are automaticallygenerated by the formatter or an explicit sequence of pagessuch as used in a magazine layout. Styled content is assignedto the various regions on a page by associating the name of theregion with names attached to styled content in the result tree.

In addition to these layout formatting objects and properties,there are properties designed to provide the level of controlover formatting that is typical of paginated documents.This includes control over hyphenation, and expanding the control overtext that is kept with other text in the same line, column,or on the same page.

1.2.4 A Comprehensive Area Model

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 theCSS2 box formatting model. This extended model is describedin4 Area Model of thisspecification. The CSS2 box model is asubset of this model. See the mapping of the CSS2 box modelterminology to the XSL Area Model terminology in7.2 XSL Areas and the CSS Box Model.The area model provides a vocabulary for describingthe relationships and space-adjustment betweenletters, words, lines, and blocks.

1.2.5 Internationalization and Writing-Modes

There are some scripts, in particular in the Far East, that aretypically set with words proceeding from top-to-bottom andlines proceeding either from right-to-left (most common) orfrom left-to-right. Other directions are alsoused. 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 rightor right to left do not generalize well totext written in those scripts.

For this reason XSL (and before it DSSSL) uses a relative frame ofreference for the formatting object and property descriptions. Just asthe 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 thedirections needed by a formatter to correctly placeglyphs, words, lines, blocks, etc. on the page or screen.The "writing-mode" expresses the basic directions notedabove. 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. See7.29.7 writing-modefor the description of the "writing-mode" property.Typically, the writing-mode value specifies two directions:the first is the inline-progression-direction which determinesthe direction in which words willbe placed and the second is the block-progression-directionwhich determines the direction in which blocks (and lines)are placed one after another.In addition, the inline-progression-directionfor a sequence of characters may be implicitly determined usingbidirectional character types for those characters from theUnicode Character Database[UNICODE Character Database]for those characters and the Unicode bidirectional (BIDI) algorithm[UNICODE UAX #9].

Besides the directions that are explicit in the name of thevalue of the "writing-mode" property, the writing-mode determinesother directions needed by the formatter, such as theshift-direction (used for subscripts and superscripts), etc.

1.2.6 Linking

Because XML, unlike HTML, has no built-in semantics,there is no built-in notion of a hypertext link.In this context, "link" refersto "hypertext link" as defined inhttp://www.w3.org/TR/html401/struct/links.html#h-12.1as well as some of the aspects of "link" as defined inhttp://www.w3.org/TR/xlink/#intro,where "link is a relationship between two or more resources orportions of resources, made explicit by an XLink linking element".Therefore,XSL has a formatting object that expresses the dual semantics offormatting the content of the link reference and thesemantics of following the link.

XSL provides a few mechanisms for changing the presentationof a link target that is being visited. One of these mechanismspermits indicating the link target as such;another allows for control over the placement of the linktarget in the viewing area; still another permits some degree ofcontrol over the way the link target is displayed in relationshipto the originating link anchor.

XSL also provides a general mechanism for changing the way elementsare formatted depending on their active state. This is particularlyuseful in relation to links, to indicate whether a given linkreference has already been visited, or to apply a given styledepending on whether the mouse, for instance, is hovering overthe link reference or not.

2 XSL Transformation

2.1 Tree Construction

The Tree Construction is described in"XSL Transformations"[XSLT].The data model in XSLT is capable of representing either anXML 1.0 document(conforming to[XML] and[XML Names])or an XML 1.1 document(conforming to[XML 1.1] and[XML Names 1.1]),and it makes no distinction between the two.In principle, therefore, XSL 1.1 can be used with either of these XML versions;the only differences arise outside the boundary of the transformation proper,while creating the data model from textual XML (parsing).

The provisions in "XSL Transformations" form an integral part ofthis Recommendation and are considered normative.Because the data model is the same whether the original document wasXML 1.0 or XML 1.1, the semantics of XSLT processingdo not depend on the version of XML used by the original document.There is no reason in principle why all the documentsused in a single transformation must conform to the same version of XML.

2.2 XSL Namespace

The XSL namespace has the URIhttp://www.w3.org/1999/XSL/Format.

Note:

The1999 in the URI indicates the year in whichthe URI was allocated by the W3C. It does not indicate the version ofXSL being used.

XSL processors must use the XML namespaces mechanism([XML Names] or[XML Names 1.1])to recognize elements and attributes from thisnamespace. Elements from the XSL namespace are recognized only in thestylesheet, not in the source document.Implementors must not extend the XSLnamespace with additional elements or attributes. Instead, anyextension must be in a separate namespace.The expanded-name of extension elements must have anon-null namespace URI.

This specification uses the prefixfo: for referringto elements in the XSL namespace. However, XSL stylesheets are freeto use any prefix, provided that there is a namespace declaration thatbinds the prefix to the URI of the XSL namespace.

An element from the XSL namespace may have any attribute not fromthe XSL namespace, provided that theexpanded-name of theattribute has a non-null namespace URI. The presence of suchattributes must not change the behavior of XSL elements and functionsdefined in this document.This means that an extension attribute may change the processing ofan FO, but only provided that the constraints specified by XSL onthat FO remain satisfied.Thus, an XSL processor is always free toignore such attributes, and must ignore such attributes without givingan error if it does not recognize the namespace URI. Such attributescan provide, for example, unique identifiers, optimization hints, ordocumentation.

It is an error for an element from the XSL namespace to haveattributes with expanded-names that have null namespace URIs(i.e., attributes with unprefixed names) other thanattributes defined in this document.

Note:

The conventions used for the names of XSL elements,attributes, and functions are as follows:names are all lowercase,hyphens are used to separate words, dots are used toseparate names for the components of complex datatypes,and abbreviations are used only if they alreadyappear in the syntax of a related language such as XML orHTML.

3 Introduction to Formatting

The aim of this section is to describe the general processof formatting, enough to read the area model and theformatting object descriptions and properties and tounderstand the process of refinement.

Formatting is the process of turning the result of an XSLtransformation into a tangible form for the reader or listener. Thisprocess comprises several steps, some of which depend on others in anon-sequential way.Our model for formatting will be the construction of anarea tree, which is an ordered tree containinggeometric informationfor the placement of every glyph, shape, and image in the document,together with information embodying spacing constraints and other renderinginformation; this information is referred to under the rubric oftraits, which are to areas what properties are to formatting objectsand attributes are to XML elements.4 Area Model willdescribe the area tree anddefine the default placement constraints on stacked areas. However, this isan abstract model which need not be actually implemented in this wayin a formatter, so long as the resulting tangible form obeys the implied constraints.Constraints might conflict to the point where it isimpossible to satisfy them all. In that case, it isimplementation-defined which constraints should be relaxedand in what order to satisfy the others.

Formatting objects are elements in the formatting object tree, whosenames are from the XSL namespace; a formatting object belongs to aclass of formatting objects identified by its element name. Theformatting behavior of each class of formatting objects is described interms of what areas are created by a formatting object of that class, howthe traits of the areas are established, and how the areas arestructured hierarchically with respect to areas created by other formattingobjects.6 Formatting Objects and7 Formatting Propertiesdescribe formatting objects and their properties.

Some formatting objects areblock-level and others areinline-level. This refers to the types of areas which they generate,which in turn refer to their default placement method. Inline-areas (forexample, glyph-areas) are collected into lines and the direction in whichthey are stacked is the inline-progression-direction. Lines are a type ofblock-area and these are stacked in a direction perpendicular to theinline-progression-direction, called the block-progression-direction. See4 Area Model for detailed decriptionsof these area types and directions.

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 systemsas well and introduces the terms "block" and "inline"instead of using absolute indicators like "vertical" and"horizontal". Similarly this specification tries to giverelatively-specified directions ("before" and "after"in the block-progression-direction, "start" and "end"in the inline-progression-direction) where appropriate, either in additionto or in place of absolutely-specified directions such as "top","bottom", "left", and "right". These areinterpreted according to the value of the writing-mode property.

Central to this model of formatting isrefinement.This is a computationalprocess which finalizes the specification of properties based on the attributevalues in the XML result tree. Though the XML result tree and the formatting objecttree have very similar structure, it is helpful to think of them asseparate conceptual entities. Refinement involves

Some of these operations (particularly evaluating expressions) depend on knowledgeof the area tree. Thus refinement is not necessarily a straightforward, sequentialprocedure, but may involve look-ahead, back-tracking, or control-splicing withother processes in the formatter. Refinement is described more fully in5 Property Refinement / Resolution.

To summarize, formatting proceeds by constructing an area tree(containing areas and their traits) which satisfies constraints based oninformation contained in the XML result tree (containingelement nodes and theirattributes). Conceptually, there are intermediate steps ofconstructing a formatting object tree (containing formatting objects and theirproperties) and refinement;these steps may proceed in an interleaved fashion during theconstruction of the area tree.

3.1 Conceptual Procedure

This subsection contains a conceptual description of howformatting could work. This conceptualprocedure does not mandate any particular algorithms or data structures aslong as the result obeys the implied constraints.

The procedure works by processing formatting objects. Each object,while being processed, may initiate processing of other objects. While theobjects are hierarchically structured, the processing is not; processing ofa given object is rather like a co-routine which may pass control to otherprocesses, but pick up again later where it left off. The procedure startsby initiating the processing of the fo:rootformatting object.

Unless otherwise specified, processing a formatting object creates areasand returnsthem to its parent to be placed in the area tree. Like a co-routine, whengiven control, it initiates, then continuesformatting of its own children (ifany), or some subset of them. The formatting object supplies parameters to itschildrenbased on the traits of areas already in the area tree, possibly includingareas generated by the formatting object or its ancestors. It then disposes of theareasreturned by its formatting object children. It might simplyreturn such an area to itsparent (and will always do this if it does not generate areas itself), oralternatively it might arrange the area in the area tree according to thesemantics of the formatting object; this may involve changing its geometric position.Itterminates processing when all its children have terminated processing (ifinitiated) and it is finished generating areas.

Some formatting objects do not themselves generate areas; instead theseformatting objects simplyreturn the areas returned to them by their children. Alternatively, a formatting objectmay continue to generate (and return) areas based on information discoveredwhile formatting its own children; for example, the fo:page-sequence formatting objectwill continue generating pages as long as it contains a flow withunprocessed descendants.

Areas returned to an fo:root formatting object arepage-viewport-areas, and are simply placed aschildren of the area tree root in the order in which they are returned,with no geometrical implications.

As a general rule, the order of the area tree parallels the order of theformatting object tree. That is, if one formatting objectprecedes another in the depth-firsttraversal of the formatting object tree, with neithercontaining the other, thenall the areas generated by the first will precede all the areas generatedby the second in the depth-first traversal of the area tree, unlessotherwise specified. Typical exceptions to this rule would be things likeside floats, before floats, and footnotes.

At the end of the procedure, the areas and their traits have beenconstructed, and they are required to satisfy constraints described in thedefinitions of their associated formatting objects, and in the area modelsection. In particular, size and position of the areas will be subject tothe placement and spacing constraints described in the area model, unlessthe formatting object definition indicates otherwise.

The formatting object definitions, property descriptions, and area modelare not algorithms. Thus, the formatting object semantics do not specify howthe 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 thingsand describes the constraints which the result is supposed tosatisfy.Thus, the constraints do not specify at what time an implementationmakes use of that information; the constraints only specify what mustbe true after processing has been completed.An actual implementation may well make use of some constraints at atime other than when formatting the formatting object for which theconstraint applies. For example, the constraint given by the"hyphenate" property on an fo:character would typically be used duringline-building, rather than when progessing the fo:character.Other examples include constraints for keeps and breaks.

4 Area Model

In XSL, one creates a tree of formatting objects that serve as inputs orspecifications to a formatter. The formatter generates a hierarchical arrangementof areas which comprise the formatted result. This section defines the generalmodel of these areas and how they interact. The purpose is to present an abstractframework which is used in describing the semantics of formatting objects.It should be seen as describing a series of constraints forconforming implementations,and not as prescribing particular algorithms.

4.1 Introduction

The formatter generates an ordered tree, thearea tree, whichdescribes a geometric structuring of the output medium. The termschild, sibling, parent, descendant, andancestorrefer to this tree structure. The tree has aroot node.

Each area tree node other than the root is called anarea and isassociated to a rectangular portion of the output medium. Areas arenot formatting objects; rather, a formatting object generates zero or morerectangular areas, and normally each area is generated by a unique object in theformatting object tree.

Note:

The only exceptions to this rule are when several leaf nodes of the formatting objecttree are combinedto generate a single area, for example when several charactersin sequence generate a single ligatureglyph. In all such cases, relevant properties such asfont-family andfont-size must be the same forall the generating formatting objects (see section4.7.2 Line-building).

An area has acontent-rectangle,the portion in which its child areas are assigned, and optionalpadding andborder. The diagram showshow these portions are related to one another. The outer bound of the borderis called theborder-rectangle, and the outerbound of thepadding is called thepadding-rectangle.

Elements of an area   [D]

Each area has a set oftraits, a mapping of names to values,in the way elements have attributes and formatting objects have properties.Individual traits are used eitherfor rendering the area or for defining constraints on the result of formatting,or both. Traits used strictly for formatting purposes or for definingconstraints may be calledformatting traits, and traits used forrendering may be calledrendering traits.Traits whose values are copied or derived from a propertyof the same or a correspondingname are listed inB Property Summary and5 Property Refinement / Resolution;other traits are listed below.

Note:

Traits are also associated with FOs during the process of refinement.Some traits are assigned during formatting, while others are already present afterrefinement.

The semantics of each type of formatting object that generates areas aregiven in terms of which areas it generates and their place in the area-treehierarchy. This may be further modified by interactions between the varioustypes of formattingobjects. The properties of the formatting object determine what areas aregenerated 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 glyphsdistributed into areas on two separate line-areas.)

The traits of an area are either:

directly-derived: the values of directly-derived traits are the computedvalue of a property of the same or a corresponding name on the generating formatting object, or

indirectly-derived: the values of indirectly-derived traits are theresult of a computation involving the computed values of one or more propertieson the generating formatting object, other traits on this area or otherinteracting areas (ancestors, parent, siblings, and/or children) and/orone or more values constructed by the formatter. The calculation formulamay depend on the type of the formatting object.

This description assumes that refined values have been computed for allproperties of formatting objects in the result tree, i.e.,all relative and corresponding values have been computed and the inheritablevalues have been propagated as described in5 Property Refinement / Resolution. Thisallows theprocess of inheritance to be described once and avoids a need to repeatinformation on computing valuesin this description.

The indirectly-derived traits are:block-progression-direction,inline-progression-direction,shift-direction,glyph-orientation,is-reference-area,is-viewport-area,left-position,right-position,top-position,bottom-position,left-offset,top-offset,is-first,is-last,alignment-point,area-class,start-intrusion-adjustment,end-intrusion-adjustment,generated-by,returned-by,folio-number,blink,underline-score,overline-score,through-score,underline-score-color,overline-score-color,through-score-color,alignment-baseline,baseline-shift,nominal-font,dominant-baseline-identifier,actual-baseline-table, andscript.

4.2 Rectangular Areas

4.2.1 Area Types

There are two types of areas:block-areas andinline-areas. These differ according to howthey are typically stacked by the formatter. An area can haveblock-area children or inline-area children as determinedby the generating formatting object, but a given area's children must all be ofone type. Although block-areas and inline-areas aretypically stacked, some areas can be explicitly positioned.

Aline-area is a special kind of block-area whose childrenare all inline-areas. Aglyph-area is a special kind ofinline-area which has no child areas, and has a singleglyph image as its content.

Typical examples of areas are: a paragraph rendered by usingan fo:block formatting object,which generates block-areas,and a character rendered by using an fo:characterformatting object,which generates an inline-area (in fact, a glyph-area).

4.2.2 Common Traits

Associated with any area are two directions, which are derived from thegeneratingformatting object'swriting-mode andreference-orientation properties: theblock-progression-direction is the direction for stacking block-areadescendants of the area, and theinline-progression-direction is the direction for stacking inline-areadescendants of the area. Anothertrait, theshift-direction, is present on inline-areas and refers tothe direction in which baselineshifts are applied. Also theglyph-orientation defines the orientationof glyph-images in the rendered result.

If the reference-orientation for an area is 0, then thetop, bottom, left, and right edges of the content are parallel to those ofthe area's parent and consistent with them. Otherwise the edges are rotatedfrom those of the area's parent as described in7.21.3 reference-orientation.The inline-progression-direction and block-progression-direction are determinedby the location of these edges as described in7.29.7 writing-mode.

The Boolean traitis-reference-area determineswhether or not an area establishes a coordinate system forspecifying indents. An area for which this trait istrueis called areference-area.Only a reference-area may have a block-progression-direction which is different fromthat of its parent.A reference-area may be either ablock-area or an inline-area.Only specific formatting objects generate reference areas.

The Boolean traitis-viewport-area determineswhether or not an area establishes an opening through which itsdescendant areas can be viewed, and can be used topresent clipped or scrolled material; for example, in printingapplications where bleed and trim is desired.An area for which this trait istrueis called aviewport-area.A viewport-area also has the valuetruefor theis-reference-area trait.

A common construct is aviewport/reference pair.This is a viewport-areaV and a block-areareference-areaR, whereR is the sole childofV and where the start-edge and end-edge of thecontent-rectangle ofR are parallel to the start-edge andend-edge of the content-rectangle ofV.

Each area has the traitstop-position,bottom-position,left-position, andright-position which represent the distancefrom the edges of its content-rectangle to the like-named edges of thenearest ancestor reference-area (or the page-viewport-areain thecase of areas generated by descendants of formatting objectswhose absolute-position isfixed); theleft-offsetandtop-offset determine the amount by whicha relatively-positioned area is shifted for rendering. These traits receivetheir values during the formatting process, or in the caseof absolutely positioned areas, during refinement.

Theblock-progression-dimension andinline-progression-dimension of an area represent theextent of the content-rectangle of that area in each of the tworelative directions.

Other traits include:

  • theis-first andis-last traits, which are Boolean traitsindicating the order in which areas are generated and returned(See6.1.1 Definitions Common to Many Formatting Objects)by a givenformatting object.is-first istruefor the first area (or only area) generated and returned by a formatting object,andis-lastistrue for the last area (or only area);

  • the amount of space outside the border-rectangle:space-before,space-after,space-start, andspace-end(though some of these may be required to be zero on certain classes of area);

    Note:

    "Before", "after", "start",and "end" refer to relative directions and are definedbelow.

  • the thickness of each of the four sides of the padding:padding-before,padding-after,padding-start, andpadding-end;

  • the style, thickness, and color of each of thefour sides of the border:border-before, etc.;

  • the background rendering of thearea:background-color,background-image, andother background traits; and

  • thenominal-font for an area, asdetermined by the font properties and the character descendants of thearea's generating formatting object.(see5.5.7 Font Properties)

Unless otherwise specified, the traits of aformatting object are present on each of its generated areas,and with the same value. (However, see sections4.7.2 Line-building and4.9.4 Border, Padding, and Background.)Theid trait is computed for formatting objects butis not present on areas.

4.2.3 Geometric Definitions

As described above, thecontent-rectangle is the rectanglebounding the inside of the padding and is used to describethe constraints on the positions of descendant areas. It is possible thatmarks from descendant glyphs or other areas may appear outside thecontent-rectangle.

Related to this is theallocation-rectangleof an area,which is used to describe the constraints on the position ofthe area within its parent area. For an inline-area this is either thenormal-allocation-rectangle or thelarge-allocation-rectangle.Thenormal-allocation-rectangleextendsto the content-rectanglein the block-progression-direction and to the border-rectangle in theinline-progression-direction. Thelarge-allocation-rectangleis the border-rectangle. Unlessotherwise specified, the allocation-rectangle for an area is thenormal-allocation-rectangle.

Normal-allocation-rectangle of an inline-area   [D]

Normal-allocation-rectangle of an inline-area

Large-allocation-rectangle of an inline-area   [D]

Large-allocation-rectangle of an inline-area

For a block-area, the allocation-rectangle extends to the border-rectangle inthe block-progression-direction and outside the content-rectanglein the inline-progression-direction by an amount equal totheend-indent,and in the opposite direction by an amount equal to thestart-indent.

Note:

The inclusion of space outside the border-rectangle of a block-areain the inline-progression-direction does not affectplacement constraints, andis intended to promote compatibility with the CSS box model.

Allocation- and content-rectangles of a block-area   [D]

Allocation- and content-rectangles of a block-area

The edges of a rectangle are designated as follows:

  • thebefore-edge is the edge occurring first in theblock-progression-direction and perpendicularto it;

  • theafter-edge is the edge oppositethe before-edge;

  • thestart-edge is the edge occurringfirst in the inline-progression-direction and perpendicularto it,

  • theend-edge is the edge opposite thestart-edge.

For purposes of this definition, the content-rectangle of an area uses theinline-progression-direction and block-progression-direction of that area;but the border-rectangle, padding-rectangle, andallocation-rectangle use thedirections of its parent area. Thus the edges designated for thecontent-rectangle may not correspond to the same-named edgeson the padding-, border-,and allocation-rectangles. This is important in the case ofnested areas with different writing-modes or reference-orientation.

The following diagram shows the correspondence between the various edgenames for a mixed writing-mode example:

Embedded areas with different writing-modes   [D]

Each inline-area has analignment-point determined by the formatter,on the start-edgeof its allocation-rectangle; for a glyph-area, this isa 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.

4.2.4 Tree Ordering

In the area tree, the set of areas with a given parent is ordered.The termsinitial, final, preceding, andfollowing refer to this ordering.

In any ordered tree, this sibling order extends to an ordering of the entire treein at least two ways.

  • In thepre-order traversal order of a tree, the childrenof each node (their order unchanged relative to one another) follow the node, butprecede any following siblings of the node or of its ancestors.

  • In thepost-order traversal order of a tree, the children ofeach node precede the node, but follow any preceding siblings of the node or of itsancestors.

"Preceding" and "following", when applied to non-siblings, will depend on theextension order used, which must be specified. However, in either of these given orders,the leaves of the tree (nodes without children) are unambiguously ordered.

4.2.5 Stacking Constraints

This section defines the notion ofblock-stacking constraints andinline-stacking constraints involving areas. These are defined asordered relations, i.e., ifA andBhave a stacking constraintit does not necessarily mean thatB andA have a stackingconstraint. These definitions are recursive in nature and some cases may dependupon simpler cases of the same definition. This is not circularity but rather aconsequence of recursion. The intention of thedefinitions is to identify areas at any level of thetree which may have only space between them.

Thearea-class trait is an enumerated value which isxsl-normal for an area which is stacked withother areas in sequence. Anormal area is anarea for which this trait isxsl-normal. Apage-level-out-of-linearea is an area with area-classxsl-footnote,xsl-before-float,orxsl-fixed; placement of these areas is controlledby the fo:page-sequenceancestor of its generating formatting object. Areference-level-out-of-linearea is an area with area-classxsl-side-float orxsl-absolute;placement of these areas is controlled by the formatting object generatingthe relevant reference-area. Ananchorarea is an area with area-classxsl-anchor;placement of these areas is arbitrary and does not affect stacking.Areas with area-class equal to one ofxsl-normal,xsl-footnote, orxsl-before-float are defined to bestackable,indicating that they are supposed to be properly stacked.

Block-stacking constraints

IfP is a block-area, then there is afence precedingP ifP is a reference-area or if theborder-before-widthor padding-before-width ofP are non-zero.Similarly, there is afence followingP ifP is areference-areaor if the border-after-width or padding-after-width ofP are non-zero.

IfA andB are stackable areas, andS isa sequence of space-specifiers (see4.3 Spaces and Conditionality),it is defined thatA andBhave block-stacking constraintS ifany of the following conditions holds:

  1. B is a block-area which is the first normalchild ofA, andS is the sequence consisting of thespace-before ofB.

  2. A is a block-area which is the last normalchild ofB, andS is the sequence consisting of thespace-after ofA.

  3. A andB are both block-areas, and either

    a.B is the next stackable sibling area ofA, andS is the sequence consisting of the space-after ofA and the space-before ofB;

    b.B is the first normal child of a block-areaP,B is not a line-area, there is no fence precedingP,A andP have a block-stacking constraintS', andS consists ofS' followed by the space-before ofB; or

    c.A is the last normal child of a block-areaP,A is not a line-area, there is no fence followingP,P andB have a block-stacking constraintS'', andS consists of the space-after ofA followed byS''.

    d.A has a block-stacking constraintS' with a block-areaE,E has a block-stacking constraintS'' withB,E isempty (i.e., it has zero border, padding, and block-progression-dimension, and no normal children), andS consists ofS' followed byS''.

Note:

The use of "stackable" in two places in the above definition allowsblock-stacking constraints to apply between areas of area-classxsl-before-floatorxsl-footnote.

Adjacent Edges with Block-stacking   [D]

Adjacent Edges with Block-stacking

WhenA andB have a block-stacking constraint, theadjacent edges ofA andB are an orderedpair recursively defined as:

  • In case 1, the before-edge of thecontent-rectangle ofAand the before-edge of the allocation-rectangle ofB.

  • In case 2, the after-edge of the allocation-rectangleofA andthe after-edge of the content-rectangle ofB.

  • In case 3a, the after-edge of theallocation-rectangle ofAand the before-edge of the allocation-rectangle ofB.

  • In case 3b, the first of the adjacent edges ofA andP,and the before-edge of the allocation-rectangle ofB.

  • In case 3c, the after-edge of theallocation-rectangle ofAand the second of the adjacent edges ofP andB.

  • Incase 3d, the first of the adjacent edges ofA andE,and the second of the adjacent edges ofE andB.

Example. In this diagram each node represents a block-area.Assume that all paddingand border widths are zero, and none of the areas arereference-areas. ThenPandA have a block-stacking constraint, as doAandB,A andC,B andC,C andD,D andB,B andE,D andE, andE andP; theseare the only pairs in the diagram having block-stacking constraints. IfB had non-zero padding-after, thenDandE would not have any block-stacking constraint (thoughBandE would continue to have a block-stacking constraint).

Block-stacking constraint example   [D]

Block-stacking constraint example

Inline-stacking constraints.

This section will recursively define theinline-stacking constraints between two areas (either two inline-areas or one inline-areaand one line-area),together with the notion offence preceding andfence following; these definitions are interwoven with one another.This parallels the definition for block-stackingconstraints, but with the additional complication that we may have a stackingconstraint between inline-areas which are stacked in opposite inline-progression-directions.(This is not an issue for block-stacking constraints becausea block-area which is not a reference-area may not have ablock-progression-directiondifferent from that of its parent.)

IfP andQ have an inline-stacking constraint, thenP has afence precedingQ ifP isa reference-area or has non-zero border-width or padding-width at the firstadjacent edge ofP andQ. Similarly,Q hasafence followingP ifQ is a reference-areaor has non-zero border-width or padding-width at the secondadjacent edge ofP andQ.

IfA andB are normal areas, andSis a sequence of space-specifiers, it is defined thatA andB have inline-stacking constraintS if any of thefollowing conditions holds:

  1. A is an inline-area or line-area,B is an inline-area which is the first normal child ofA, andS is the sequence consisting of the space-start ofB.

  2. B is an inline-area or line-area,A is an inline-area which is the last normal child ofB, andS is the sequence consisting of the space-end ofA.

  3. A andB are each either an inline-area or a line-area, and either

    a. bothA andB are inline-areas,B is the next normal sibling area ofA, andS is the sequence consisting of the space-end ofA and the space-start ofB;

    b.B is an inline-area which is the first normal child of an inline-areaP,P has no fence followingA,A andP have an inline-stacking constraintS', the inline-progression-direction ofP is the same as the inline-progression-direction of the nearest common ancestor area ofA andP, andS consists ofS' followed by the space-start ofB.

    c.A is an inline-area which is the last normal child of an inline-areaP,P has no fence precedingB,P andB have an inline-stacking constraintS'', the inline-progression-direction ofP is the same as the inline-progression-direction of the nearest common ancestor area ofP andB, andS consists of the space-end ofA followed byS''.

    d.B is an inline-area which is the last normal child of an inline-areaP,P has no fence followingA,A andP have an inline-stacking constraintS', the inline-progression-direction ofP is opposite to the inline-progression-direction of the nearest common ancestor area ofA andP, andS consists ofS' followed by the space-end ofB.

    e.A is an inline-area which is the first normal child of an inline-areaP,P has no fence precedingB,P andB have an inline-stacking constraintS'', the inline-progression-direction ofP is opposite to the inline-progression-direction of the nearest common ancestor area ofP andB, andS consists of the space-start ofA followed byS''.

Adjacent Edges with Inline-stacking   [D]

Adjacent Edges with Inline-stacking

Adjacent Edges with Inline-stacking, continued   [D]

Adjacent Edges with Inline-stacking, continued

Adjacent Edges with Inline-stacking, continued   [D]

Mixed English and Arabic

Adjacent Edges with Inline-stacking, continued   [D]

Mixed English and Arabic

WhenA andB have an inline-stacking constraint,theadjacent edges ofA andB are an orderedpair defined as:

  • In case 1, the start-edge of thecontent-rectangle ofAand the start-edge of the allocation-rectangle ofB.

  • In case 2, the end-edge of the allocation-rectangle ofA andthe end-edge of the content-rectangle ofB.

  • In case 3a, the end-edge of theallocation-rectangle ofA andthe start-edge of the allocation-rectangle ofB.

  • In case 3b, the first of the adjacent edges ofA andP, and the start-edge of the allocation-rectangle ofB.

  • In case 3c, the end-edge of theallocation-rectangle ofAand the second of the adjacent edges ofP andB.

  • In case 3d, the first of the adjacent edges ofA andP, and the end-edge of the allocation-rectangle ofB.

  • In case 3e, the start-edge of theallocation-rectangle ofAand the second of the adjacent edges ofP andB.

Two areas areadjacent if they have a block-stacking constraintor an inline-stacking constraint. It follows from the definitions that areas of the sametype (inline or block) can be adjacent only if all their non-common ancestorsare 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 neveradjacent.

An areaAbegins an areaP ifA is adescendant ofP andP andA have either ablock-stacking constraint or an inline-stacking constraint,provided that no descendant ofP which is an ancestorofA has a space-before (in the case of a block-stacking constraint)or a space-start (in the case of an inline-stacking constraint)whose computed minimum, maximum, or optimum valuesare nonzero.In this case thesecond of the adjacent edges ofP andA is definedto bealeading edge inP. A space-specifier whichapplies tothe leading edge is also defined tobeginP.

Similarly, An areaAends an areaP ifA is adescendant ofP andA andP have either ablock-stacking constraint or an inline-stacking constraint,provided that no descendant ofP which is an ancestorofA has a space-after (in the case of a block-stacking constraint)or a space-end (in the case of an inline-stacking constraint)whose computed minimum, maximum, or optimum valuesare nonzero.In this case thefirst of the adjacent edges ofA andP is definedto beatrailing edge inP. A space-specifier whichapplies tothe trailing edge is also defined toendP.

4.2.6 Font Baseline Tables

Each script has its preferred "baseline" for aligning glyphs from that script.Western scripts typically use an "alphabetic" baseline that touches at or near thebottom of capital letters. Further, for each font there is apreferred way of aligning embedded glyphs from different scripts, e.g., for aWestern font there are separate baselines for aligning embedded ideographic or Indicglyphs.

Each block-area and inline-area has adominant-baseline-identifier trait whose value is a baseline identifiercorresponding to the type of alignment expected for inline-area descendants of that area,and each inline-area has analignment-baseline which specifies how thearea is aligned to its parent. These traits are interpreted as described in section7.9.1 Fonts and Font Data.

For each font, anactual-baseline-table maps these identifiersto points on the start-edge of the area. Byabuse of terminology, the line in the inline-progression-directionthrough the point corresponding to the dominant-baseline-identifier is calledthe "dominant baseline."

4.3 Spaces and Conditionality

A space-specifier is a compound datatype whose components are minimum, optimum,maximum, conditionality, and precedence.

Minimum,optimum, andmaximum are lengthsand can be used to define a constrainton 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 thesevalues may be negative, which can (forexample) cause areas to overlap, but in any case the minimum should be lessthan or equal to the optimum value, and the optimum less than or equal tothe maximum value.

Conditionality is an enumerated value which controls whether aspace-specifier has effect at the beginning or end of a reference-area or aline-area. Possible values areretain anddiscard;aconditional space-specifier is one for which this value isdiscard.

Precedence has a value which is either an integer or the specialtokenforce. Aforcing space-specifieris one for which this value isforce.

Space-specifiers occurring in sequence may interact with each other. Theconstraint imposed by a sequence of space-specifiers is computed bycalculating for each space-specifierits associatedresolved space-specifier in accordance withtheir conditionality and precedence, asshown below in the space-resolution rules.

The constraint imposed on a distance by a sequence of resolved space-specifiersis additive; that is, the distance is constrained to be no less than thesum of the resolved minimum values and no larger than the sum of the resolvedmaximum values.

4.3.1 Space-resolution Rules

Theresolved space-specifier of a given space-specifierS iscomputed as follows. Consider the maximal inline-stacking constraint orblock-stacking constraintS'' containing the space-specifierS as an element of the sequence (S'' is a sequenceof space-specifiers; see4.2.5 Stacking Constraints). DefineS' to be a subsequence ofS'' as follows:

  • ifS is the space-before or space-after of a line-area,thenS' is the maximal subsequence ofS'' containingS such that all the space-specifiers inS' are traitsof line-areas,

  • ifS is the space-before or space-after of a block-areawhich is not a line-area, thenS' is the maximal subsequenceofS'' containingS such that all the space-specifiersinS' are traits of block-areas which are notline-areas,

  • ifS is the space-start or space-end of an inline-area,thenS' is all ofS''.

The resolved space-specifier ofS is a non-conditional,forcing space-specifier computed in terms of thesequenceS'.

  1. If any of the space-specifiers inS' is conditional,and begins a reference-area or line-area, then it issuppressed,which means that its resolved space-specifier is zero. Further, any conditionalspace-specifiers which consecutively follow it in the sequence are also suppressed.For purposes of this rule, a space-specifierUconsecutively follows a space-specifierV if itU followsV andU andV are separated inthe sequence only by conditional space-specifiers and/orspace-specifiers whose computed minimum, maximum, and optimum values arezero.

    If a conditional space-specifier ends a reference-area or line-area, then itis suppressed together with any other conditional space-specifiers whichconsecutively precede it in the sequence.For purposes of this rule, a space-specifierUconsecutively precedes a space-specifierV ifitU precedesV andU andVare separated inthe sequence only by conditional space-specifiers and/orspace-specifiers whose computed minimum, maximum, and optimum values arezero.

  2. If any of the remaining space-specifiers inS' is forcing, all non-forcingspace-specifiers are suppressed, and the value of each of the forcing space-specifiersis taken as its resolved value.

  3. Alternatively if all of the remaining space-specifiers inS' are non-forcing,then the resolved space-specifier is defined in terms of those non-suppressed space-specifierswhose precedence is numerically highest, and among these those whose optimum value is thegreatest. All other space-specifiers are suppressed. If there is only one ofthese then its value is taken as its resolved value.

    Otherwise, follow these rules when there aretwo or morespace-specifiers all of the same highest precedence and the same(largest) optimum: The resolved space-specifier of the lastspace-specifier in the sequence is derived from these spaces bytaking their common optimum value as its optimum. The greatest oftheir minimum values is its minimum. The least of their maximumvalues is its maximum. All other space-specifiers are suppressed.

  4. IfS is subject to overconstrainment relaxing,then its maximum value is set to the actual block-progression-dimension of thecontaining block-area. See4.3.2 Overconstrained space-specifiers

Example. Suppose the sequence of space values occurring at thebeginning of a reference-area is:first, a space with value 10 points (that isminimum, optimum, and maximum all equal to 10 points) and conditionalitydiscard; second, a space with value 4 points andconditionalityretain; and third, a spacewith value 5 points and conditionalitydiscard;all three spaces having precedence zero. Then the first (10 point) space issuppressed under rule 1, and thesecond (4 point) space is suppressed under rule 3. The resolved value of thethird space is a non-conditional 5 points, even thoughit originally came from a conditional space.

The padding of a block-area does not interact with anyspace-specifier(except that by definition, the presence of padding at the before- or after-edgeprevents areas on either side of it from having a stacking constraint.)

The border or padding at the before-edge or after-edge of a block-areaB maybe specified as conditional. If so, then it is set to zero if its associatededge is a leading edge in a reference-area, and the is-first trait ofBis false, or if its associatededge is a trailing edge in a reference-area, and the is-last trait ofBis false. In either of these cases, the borderor padding is taken to be zero for purposes of the stacking constraint definitions.

The border or padding at the start-edge or end-edge of an inline-areaI maybe specified as conditional. If so, then it is set to zero if its associatededge is a leading edge in a line-area, and the is-first trait ofIis false, or if its associatededge is a trailing edge in a line-area, and the is-last trait ofIis false. In either of these cases, the borderor padding is taken to be zero for purposes of the stacking constraint definitions.

4.3.2 Overconstrained space-specifiers

Whenan areaP is generated by a formatting object whoseblock-progression-dimensionis "auto", then the constraints involving the before-edge and after-edge ofthe content-rectangle ofP, together with the constraints between thevarious descendants ofP, result in a constraint on the actual valueof the block-progression-dimension. If the block-progression-dimension is insteadspecified as a length, then this might result in an overconstrained area tree,for example an incompletely-filled fo:blockwith a specified size. In that case some constraints betweenP and itsdescendants should be relaxed; those that are eligible for this treatment aresaid to besubject to overconstrainment relaxing, and treated as inthe previous section.

  • If the display-align value is "after" or "center" andP is the first normal area generatedby the formatting object, then the space-before of the first normal child ofPis subject to overconstrainment relaxing.

  • If the display-align value is "before" or "center" andP is the last normal area generatedby the formatting object, then the space-after of the last normal child ofPis subject to overconstrainment relaxing.

4.4 Block-areas

Block-areas have several traits which typically affect the placement of theirchildren. Theline-height is used in line placement calculations.Theline-stacking-strategy trait controls what kind of allocationis used for descendant line-areas and has an enumerated value(eitherfont-height,max-height,orline-height). This is all rigorously described below.All areas have these traits,but they only have relevance for areas which have stacked line-area children.

Thespace-before andspace-after traitsdetermine thedistance between the block-area and surrounding block-areas.

A block-area which is not a line-area typically has its size in theinline-progression-direction determinedby itsstart-indent andend-indent and by the size of its nearest ancestorreference-area.A block-area which is not a line-area must be properly stacked (as defined in4.4.1 Stacked Block-areas below)unless otherwise specified in the description of its generating formatting object.In this case its block-progression-dimension will be subject to constraints basedon the block-progression-dimensions and space-specifiers of its descendants.See4.3.2 Overconstrained space-specifiers

4.4.1 Stacked Block-areas

Block-area children of an area are typically stacked in theblock-progression-directionwithin their parent area, and this is the default method ofpositioning block-areas. However, formatting objectsare free to specify other methods of positioning child areas of areas whichthey generate, for example list-items or tables.

For a parent areaP whose children areblock-areas,P is defined to beproperlystacked if all of the following conditions hold:

  1. For each block-areaB which is a descendant ofP,the following hold:

    • the before-edge and after-edgeof its allocation-rectangle are parallel to the before-edge and after-edges of thecontent-rectangle ofP,

    • the start-edge of its allocation-rectangle is parallel to the start-edgeof the content-rectangle ofR (whereR is the closestancestor reference-area ofB), and offset from it inwardby a distance equal tothe block-area's start-indent plus itsstart-intrusion-adjustment(as defined below), minus its border-start,padding-start, and space-start values, and

    • the end-edge of its allocation-rectangle is parallel to theend-edgeof the content-rectangle ofR, and offset from it inwardby a distance equal tothe block-area's end-indent plus itsend-intrusion-adjustment(as defined below),minus its border-end, padding-end, and space-endvalues.

    Metrics of a block area   [D]

    Content Rectangle of Reference Area

    Note:

    The notion of indent is intended to apply to the content-rectangle, butthe constraint is written in terms of theallocation-rectangle, because as noted earlier(4.2.3 Geometric Definitions)the edges of thecontent-rectangle may notcorrespond to like-named edges of theallocation-rectangle.

    Thestart-intrusion-adjustment andend-intrusion-adjustment are traits used todeal with intrusions fromfloats in the inline-progression-direction.

    See also section5.3.2 Margin, Space, and Indent Propertiesfor how the margin properties affect the indents.

  2. For each pair of normal areasB andB'in the subtree belowP, ifB andB' have a block-stacking constraintSandB is not empty (see4.2.5 Stacking Constraints),then the distance between the adjacent edges ofB andB'is consistent with theconstraint imposed by theresolved values of the space-specifiers inS.

    Example of stacked areas   [D]

    Example. In the diagram, if areaAhas a space-after value of 3 points,B aspace-beforeof 1 point, andC a space-before of 2 points, allwithprecedence offorce, and with zero border and padding,then the constraints will placeB'sallocation-rectangle4 points below that ofA, andC'sallocation-rectangle6 points below thatofA. Thus the 4-point gap receives thebackground colorfromP, and the 2-point gap beforeCreceives the background color fromB.

4.4.2 Intrusion Adjustments

Intrusion adjustments (both start- and end-) are defined to account for theindentation that occurs as the result of side floats.

IfA andB are areas which have the same nearest reference area ancestor, thenAandB are defined to beinline-overlapping if there is some lineparallel to the inline-progression-direction, which intersects both theallocation-rectangle ofA and the allocation-rectangle ofB.

IfA is an area of classxsl-side-float with float="start", andB is a block-area, andA andBhave the same nearest reference area ancestor, thenA is defined toencroach uponB ifA andBare inline-overlapping and the start-indent ofB is less than the sum of the start-indent ofAand the inline-progression-dimension ofA. Thestart-encroachment ofA onB is then defined tobe amount by which the start-indent ofB is less than the sum of the start-indent ofA andthe inline-progression-dimension ofA.

IfA is an area of classxsl-side-float with float="end", andB is a block-area, andA andBhave the same nearest reference area ancestor, thenA is defined toencroach uponB ifA andBare inline-overlapping and the end-indent ofB is less than the sum of the end-indent ofAand the inline-progression-dimension ofA. Theend-encroachment ofA onB is thendefined to be amount by which the end-indent ofB is less than the sum of the end-indent ofA andthe inline-progression-dimension ofA.

IfB is a block-area which is not a line-area, then itslocal-start-intrusion-adjustment is computed as the maximum ofthe following lengths:

  1. zero;

  2. if the parent ofB is not a reference area: the start-intrusion-adjustment of the parent ofB;and

  3. ifB has intrusion-displace="block",then for each areaA of classxsl-side-floatwith float="start" such that the generating formatting object ofA is not a descendant ofthe generating formatting object ofB, and such thatA encroaches upon some line-area child ofB: the start-encroachment ofA onB;and

  4. ifB has intrusion-displace = "block", then for each areaA of classxsl-side-float with float="start"such thatA andB are inline-overlapping, and for each block-area ancestorB' ofB which isa descendant of the nearest reference area ancestor ofB, such thatA encroaches on a line-areachild ofB': the start-encroachment ofA onB'.

The start-intrusion-adjustment of a block-areaB is then defined to bethe maximum of the local-start-intrusion-adjustments of the normal block-areas generatedand returned by the generating formatting object ofB.

IfL is a line-area, then its start-intrusion-adjustment is computed as the maximum ofthe following lengths:

  1. the start-intrusion-adjustment of the parent ofL;

  2. for each areaA of classxsl-side-float with float="start" such thatA encroaches uponL:the start-encroachment ofA onL; and

  3. if the parent ofL has intrusion-displace = "indent",then for each areaA of classxsl-side-float with float="start" such thatA andL are inline-overlapping, and for each block-area ancestorB' ofL which isa descendant of the nearest reference area ancestor ofL, such thatA encroaches on some line-areachildL' ofB': the start-encroachment ofA onB'.

The end-intrusion-adjustment for a block-area is computed in a precisely analogous manner.That is:

IfB is a block-area which is not a line-area, then itslocal-end-intrusion-adjustment is computed as the maximum ofthe following lengths:

  1. zero;

  2. if the parent ofB is not a reference area: the end-intrusion-adjustment of the parent ofB;and

  3. ifB has intrusion-displace="block",then for each areaA of classxsl-side-floatwith float="end" such that the generating formatting object ofA is not a descendant ofthe generating formatting object ofB, and such thatA encroaches upon some line-area child ofB: the end-encroachment ofA onB;and

  4. ifB has intrusion-displace = "block", then for each areaA of classxsl-side-float with float="end"such thatA andB are inline-overlapping, and for each block-area ancestorB' ofB which isa descendant of the nearest reference area ancestor ofB, such thatA encroaches on a line-areachild ofB': the end-encroachment ofA onB'.

The end-intrusion-adjustment of a block-areaB is then defined to bethe maximum of the local-end-intrusion-adjustments of the normal block-areas generatedand returned by the generating formatting object ofB.

IfL is a line-area, then its end-intrusion-adjustment is computed as the maximum ofthe following lengths:

  1. the end-intrusion-adjustment of the parent ofL;

  2. for each areaA of classxsl-side-float with float="end" such thatA encroaches uponL:the end-encroachment ofA onL; and

  3. if the parent ofL has intrusion-displace = "indent",then for each areaA of classxsl-side-float with float="end" such thatA andL are inline-overlapping, and for each block-area ancestorB' ofL which isa descendant of the nearest reference area ancestor ofL, such thatA encroaches on some line-areachildL' ofB': the end-encroachment ofA onB'.

4.5 Line-areas

A line-area is a special type of block-area, and is generated by the sameformatting object which generatedits 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-arearelative to abaseline-start-point which is a point determined by theformatter, on the start-edge of the line area's content-rectangle.

The allocation-rectangle of a line is determined by the value of theline-stacking-strategy trait: if thevalue isfont-height, the allocation-rectangle isthenominal-requested-line-rectangle, defined below; if the value ismax-height, the allocation-rectangle is themaximum-line-rectangle, defined below; and ifthe value isline-height, the allocation-rectangle is theper-inline-height-rectangle, defined below.If theline-stacking-strategy trait isfont-heightormax-height thespace-before andspace-afterare both set to the half-leading value; otherwise they are both set to zero.

Thenominal-requested-line-rectangle for a line-area is the rectanglewhose start-edge is parallel to the start-edge of thecontent-rectangle of the nearest ancestor reference-area and offset from it by the sumof the start-indent and the start-intrusion-adjustment of the line area,whose end-edge is parallel to the end-edge of thecontent-rectangle of the nearest ancestor reference-area and offset from it by the sumof the end-indent and the end-intrusion-adjustment of the line area,whose before-edge is separated from thebaseline-start-point by the text-altitude of the parent block-area, and whose after-edge isseparated from the baseline-start-point by the text-depth of the parent block-area. It has thesame block-progression-dimension for each line-area child of a block-area.

Themaximum-line-rectangle for a line-area is the rectanglewhose start-edge and end-edge are parallel to and coincident with the start-edgeand end-edge of the nominal-requested-line-rectangle, and whoseextent in the block-progression-direction is the minimum required to enclose both thenominal-requested-line-rectangle and the allocation-rectangles of all theinline-areas stacked within the line-area; this may vary depending on thedescendants of the line-area.

Nominal and Maximum Line Rectangles   [D]

Nominal and Maximum Line Rectangles

Theper-inline-height-rectangle for a line-area is the rectanglewhose start-edge and end-edge are parallel to and coincident with the start-edgeand end-edge of the nominal-requested-line-rectangle, and whose extent in theblock-progression-dimension is determined as follows.

Theexpanded-rectangle of an inline-area is the rectangle with start-edgeand end-edge coincident with those of its allocation-rectangle, and whosebefore-edge and after-edge are outside those of its allocation-rectangle by adistance equal to either (a.) the half-leading, when the area's allocation-rectangle isspecified to be the normal-allocation-rectangle by the description of the generatingformatting object , or (b.) the space-before and space-after (respectively),when the area's allocation-rectangle is specified to be the large-allocation-rectangle. Theexpanded-nominal-requested-line-rectangle is the rectangle with start-edgeand end-edge coincident with those of the nominal-requested-line-rectangle, and whosebefore-edge and after-edge are outside those of the nominal-requested-line-rectangle by adistance equal to the half-leading.

The extent of theper-inline-height-rectangle in the block-progression-direction is then defined tobe the minimum required to enclose boththe expanded-nominal-requested-line-rectangle and the expanded-rectangles of all theinline-areas stacked within the line-area; this may vary depending on thedescendants of the line-area.

Note:

Using the nominal-requested-line-rectangle allows equal baseline-to-baselinespacing. Using the maximum-line-rectangle allows constant space between line-areas.Using theper-inline-height-rectangle and zero space-before and space-after allowsCSS-style line box stacking. Also, the value of half-leading is included in theexpanded-rectangle regardless of conditionality, and thus a line-height conditionalityof "discard" does not have effect in this case.

4.6 Inline-areas

An inline-area has its ownline-height trait, which may bedifferent from the line-height of its containing block-area. This may affect theplacement of its ancestor line-area when the line-stacking-strategyisline-height. An inline-area has anactual-baseline-tablefor itsnominal-font. It hasadominant-baseline-identifier trait which determines howits stacked inline-area descendants are to be aligned.

An inline-area may or may not have child areas, and if so it may or may notbe a reference-area. The dimensions of the content-rectangle for an inline-areawithout children is computed as specified by the generating formatting object,as are those of an inline-area with block-area children.

An inline-area with inline-area children has a content-rectanglewhich extends from its dominant baseline (see4.2.6 Font Baseline Tables) by itstext-depth in the block-progression-direction, and in the oppositedirection by its text-altitude; in the inline-progression-direction itextends from the start-edge of the allocation-rectangle of its first child tothe end-edge of the allocation-rectangle of its last child. The allocation-rectangleof such an inline-area is the same as its content-rectangle.

The allocation-rectangle of an inline-area without children is eitherthe normal-allocation-rectangle or the large-allocation-rectangle, as specifiedin the description of the generating formatting object.

Note:

When the line-stacking-strategy isline-height,allocation is done with respect to the expanded-rectangle.

Examples of inline-areas with children might include portions of inlinemathematical expressions or areas arising from mixed writing systems(left-to-right within right-to-left, for example).

4.6.1 Stacked Inline-areas

Inline-area children of an area are typically stacked in theinline-progression-directionwithin their parent area, and this is the default method ofpositioning inline-areas.

Inline-areas are stacked relative to thedominant baseline,as defined above(4.2.6 Font Baseline Tables).

For a parent areaP whose children are inline-areas,Pis defined to beproperly stacked if all of the following conditionshold:

  1. For each inline-area descendantI ofP, thestart-edge, end-edge, before-edge and after-edge of the allocation-rectangleofI are parallel to corresponding edges of the content-rectangleof the nearest ancestor reference-area ofI.

  2. For each pair of normal areasI andI'in the subtree belowP, ifI andI' havean inline-stacking constraintS, then the distance between theadjacent edges ofI andI' is consistent with theconstraint imposed by the resolved values of the space-specifiers inS.

  3. For any inline-area descendantI ofP, thedistance in the shift-direction from the dominant baseline of the parentQ ofI, to the alignment-point ofIequals the offset between the dominant baseline ofQ andthe baseline ofQ corresponding to the alignment-baselinetrait ofI, plusthe baseline-shift forI.

    The first summand is computed to compensate formixed writing systems with different baseline types, and the othersummands involve deliberate baseline shifts for things like superscriptsand subscripts.

4.6.2 Glyph-areas

The most common inline-area is a glyph-area, which contains therepresentation for a character (or characters) in a particular font.

A glyph-area has an associatednominal-font, determined bythe area's typographic traits, which apply to its character data, andaglyph-orientation determined by its writing-mode andreference-orientation, which determine the orientation of the glyphwhen it is rendered.

The alignment-point and dominant-baseline-identifier of a glyph-area are assignedaccording to the writing-system in use (e.g., the glyph baselinein Western languages), and are used to control placement of inline-areasdescendants of a line-area. The formatter may generate inline-areas withdifferent inline-progression-directions from their parent to accommodatecorrect inline-area stacking in the case of mixed writing systems.

A glyph-area has no children. Its block-progression-dimension andactual-baseline-table are the same for all glyphs in a font.Conforming implementations may choose tocompute the block-progression-dimension for a glyph area based on theactual glyph size rather than using a common size for all glyphsin a font.

4.7 Ordering Constraints

4.7.1 General Ordering Constraints

A subsetS of the areas returned to a formatting object iscalledproperly ordered if the areas in thatsubset have thesame order as their generating formatting objects. Specifically, ifA1andA2 are areas inS, returned by childformatting objectsF1 andF2whereF1 precedesF2,thenA1 must precedeA2 in thepre-order traversal order of the area tree. IfF1equalsF2 andA1 isreturned prior toA2, thenA1must precedeA2 in the pre-order-traversalof the area tree.

For each formatting objectF and each area-classC,the subset consisting of the areas returned toF with area-classC must be properly ordered, except whereotherwise specified.

4.7.2 Line-building

This section describes the ordering constraints that apply to formattingan fo:block or similar block-level object.

A block-level formatting objectF whichconstructs lines does so byconstructing block-areas which it returns to its parentformatting object, and placing normal areas and/or anchor areas returned toF by its childformatting objects as children of those block-areas or ofline-areaswhich it constructs as children of those block-areas.

For each such formatting objectF, it must bepossible to form anordered partitionP consisting of ordered subsetsS1,S2, ...,Sn ofthe normal areas and anchor areas returned by the child formatting objects,such that the following are all satisfied:

  1. Each subset consists of a sequence of inline-areas, or of a singleblock-area.

  2. The ordering of the partition follows the ordering of theformatting object tree. Specifically, ifA is inSiandB is inSj withi <j, or ifA andB are both in the same subsetSi withA beforeB in thesubset order, then eitherA is returned by a preceding siblingformatting object ofB, orA andB are returned by the sameformatting object withA being returned beforeB.

  3. The partitioning occurs at legal line-breaks. Specifically, ifA isthe last area ofSi andB is the first area ofSi+1, then the rules ofthe language, script and hyphenation constraints(7.10 Common Hyphenation Properties,7.16.1 hyphenation-keep, and7.16.2 hyphenation-ladder-count)in effect must permit a line-breakbetweenA andB, within the context of all areas inSiandSi+1.

  4. Forced line-breaks are respected.Specifically, if C is a descendant of F, and C is an fo:characterwhose Unicode character is U+000A, and A is the area generated by C,then either C is a child of F and A is the last area in a subset Si,or C is a descendant of a child C' of F, and A ends(in the sense of 4.2.5) an area A' returned by C',such that A' is the last area in a subset Si.

  5. The partition follows the ordering of the area tree,except for certain glyph substitutions and deletions.Specifically, if B1, B2, ..., Bp arethe normal child areas of the area or areas returned by F,(ordered in the pre-order traversal order of the area tree),then there is a one-to-one correspondence between these child areasand the partition subsets (i.e. n = p), and for each i,

    • Si consists of a single block-area andBi is that block-area, or

    • Si consists of inline-areas and Bi is a line-areawhose child areas are the same as the inline-areas in Si,and in the same order, except that where the rules of the languageand script in effect call for glyph-areas to be substituted,inserted, or deleted, then the substituted or inserted glyph-areasappear in the area tree in the corresponding place, and thedeleted glyph-areas do not appear in the area tree.For example, insertions and substitutions may occur because ofaddition of hyphens or spelling changes due to hyphenation,or glyph image construction from syllabification, or ligature formation.Deletions occur as specified in6.,below.

  6. white-space-treatment is enforced. In particular,deletions in5.occur when there is a glyph area G such that

    (a.) the white-space-treatment of G is "ignore" and the character of Gis classified as white space in XML; or

    (b.) the white-space-treatment of G is "ignore-if-before-linefeed" or"ignore-if-surrounding-linefeed", the suppress-at-line-break of G is"suppress", and G would end a line-area; or

    (c.) the white-space-treatment of G is "ignore-if-after-linefeed" or"ignore-if-surrounding-linefeed", the suppress-at-line-break of G is"suppress", and G would begin a line-area.

    In these cases the area G is deleted; this may cause the condition inclauses (b.) or (c.) to become true and lead to further deletions.

Substitutions that replace a sequence of glyph-areas with a singleglyph-area should only occur when the margin, border, and padding in theinline-progression-direction (start- and end-), baseline-shift, andletter-spacing values are zero, treat-as-word-space isfalse, and thevalues of all other relevant traits match (i.e.,alignment-adjust, alignment-baseline, colortrait, background traits, dominant-baseline-identifier, font traits,text-depth,text-altitude, glyph-orientation-horizontal,glyph-orientation-vertical, line-height, line-height-shift-adjustment,text-decoration, text-shadow).

Note:

Line-areas do not receive the background traits or text-decorationof their generating formatting object, or any other trait that requiresgeneration of a mark during rendering.

4.7.3 Inline-building

This section describes the ordering constraints that apply to formattingan fo:inline or similar inline-level object.

An inline-level formatting objectF whichconstructs one or more inline-areas does so byplacing normal inline-areas and/or anchor inline-areas returned toF by its childformatting objects as children of inline-areas which itgenerates.

For each such formatting objectF, it must bepossible to form anordered partitionP consisting of ordered subsetsS1,S2, ...,Sn ofthe normal and/or anchor inline-areas and normal block-areasreturned by the child formatting objects,such that the following are all satisfied:

  1. Each subset consists of a sequence of inline-areas,or of a single block-area.

  2. The ordering of the partition followsthe ordering of the formatting object tree, as defined above.

  3. The partitioning occurs at legal line-breaks, as defined above.

  4. Forced line-breaks are respected, as defined above.

  5. The partition follows the ordering of the area tree,except for certain glyph substitutions and deletions, asdefined above.

4.8 Keeps and Breaks

Keep and break conditions apply to a class of areas, which are typicallypage-reference-areas,column-areas, and line-areas. The appropriate class for a given condition is referredto as acontext and an area in this class is acontext-area.As defined in Section6.4.1 Introduction,page-reference-areas areareas generated by an fo:page-sequence using thespecifications in an fo:page-master, andcolumn-areas arenormal-flow-reference-areas generated from a region-body, orregion-reference-areas generated from other types of region-master.

A keep or break condition is an open statement about a formatting object and thetree relationships of the areas it generates with the relevant context-areas. Thesetree relationships are defined mainly in terms ofleading ortrailingareas. IfA is a descendant ofP, thenA is defined tobeleading inP ifA has no preceding sibling whichis a normal area, nor does any of its ancestor areas up to but not includingP. Similarly,A is defined tobetrailing inP ifA has no following sibling whichis a normal area, nor does any of its ancestor areas up to but not includingP. For any given formatting object, thenext formatting objectin the flow is the first formatting object following (in the pre-order traversal order)which is not a descendant of the given formatting object andwhich generates and returns normal areas.

Break conditions are either break-before or break-after conditions. A break-beforecondition issatisfied if the first area generated and returnedby the formatting object isleading within a context-area. A break-after conditiondepends on the next formatting object inthe flow; the conditionis satisfied if either there is no such next formatting object, or if thefirst normal area generated and returned by that formatting object is leading in a context-area.

Break conditions are imposed by thebreak-before andbreak-after properties. Arefined value ofpage for these traits imposes abreak condition with a contextconsisting of the page-reference-areas; a value ofeven-pageorodd-page imposes abreak condition with a context of even-numbered page-reference-areasor odd-numberedpage-reference-areas, respectively; a value ofcolumn imposes abreak condition with acontext of column-areas. A value ofauto in abreak-before or break-aftertrait imposes no break condition.

Keep conditions are either keep-with-previous, keep-with-next, or keep-togetherconditions. A keep-with-previous condition on an object is satisfied if the firstarea generated and returned by the formatting object is not leading within acontext-area, or ifthere are no preceding areas in a post-order traversal of the area tree. Akeep-with-next condition is satisfied if the last area generated and returned by theformatting object is not trailing within a context-area, orif there areno following areas in a pre-order traversal of the area tree. A keep-togethercondition is satisfied if all areas generated and returned by the formatting object aredescendants of a single context-area.

Keep conditions are imposed by the "within-page", "within-column", and "within-line" componentsof the "keep-with-previous", "keep-with-next", and"keep-together" properties.The refined value of each component specifies thestrength of the keep conditionimposed, with higher numbers being stronger than lower numbers and the valuealways being stronger than all numeric values.A component with valueautodoes not impose a keep condition. A "within-page" component imposes a keep-conditionwith context consisting of the page-reference-areas; "within-column", with context consisting ofthe column-areas; and "within-line" with context consisting of the line-areas.

The area tree is constrained to satisfy all break conditions imposed.Each keep condition must also be satisfied, except when this would cause abreak condition or a stronger keep condition to fail to be satisfied. If notall of a set of keep conditions of equal strength can be satisfied, then somemaximal satisfiable subset of conditions of that strengthmust be satisfied (together with all break conditionsand maximal subsets of stronger keep conditions, if any).

4.9 Rendering Model

This section makes explicit the relationship between the area treeand visually rendered output.

Areas generate three types of marks: (1) the areabackground, if any, (2) the marksintrinsic to the area (a glyph, image, or decoration) if any, and (3) thearea border, if any.

An area tree is rendered by causing marks to appear on an output medium inaccordance with the areas in the area tree. This section describes thegeometric location of such marks, and how conflicts between marks are tobe resolved.

4.9.1 Geometry

Each area is rendered in a particular location. Formatting object semanticsdescribe the location of intrinsic marks relative to the object's location,i.e., the left, right, top, and bottom edges of its content-rectangle. Thissection describes how the area's location is determined,which determines the location of its intrinsic marks.

For each page, the page-viewport-area corresponds isometrically to theoutput medium.

The page-reference-area is offset from the page-viewport-area as describedbelow in section4.9.2 Viewport Geometry.

All areas in the tree with an area-class ofxsl-fixedare positioned suchthat the left-, right-, top-, and bottom-edges of itscontent-rectangle areoffset inward from the content-rectangle of its ancestor page-viewport-areaby distances specified by theleft-position,right-position,top-position,andbottom-position traits, respectively.

Any area in the tree which is the child of a viewport-area is renderedas described in section4.9.2 Viewport Geometry.

All other areas in the tree are positioned such that theleft-, right-, top-,and bottom-edges of its content-rectangle are offset inwardfrom thecontent-rectangle of its nearest ancestor reference-area by distancesspecified by theleft-position,right-position,top-position,andbottom-position traits, respectively. These are shifted downand left by the values of thetop-offsetandleft-offset traits, respectively, if the areahas arelative-position ofrelative.

4.9.2 Viewport Geometry

A reference-area which is the child of a viewport-area is positionedsuch thatthe start-edge and end-edge of its content-rectangle areparallel to thestart-edge and end-edge of the content-rectangle of its parentviewport-area. The start-edge of its content-rectangleis offset from the start-edge of the content-rectangle of its parent viewport-areaby aninline-scroll-amount, and the before-edge of its content-rectangle is offset from thebefore-edge ofthe content-rectangle of its parent viewport-area by ablock-scroll-amount.

If the block-progression-dimension of the reference-area is largerthan thatof the viewport-area and theoverflow traitfor the reference-area isscroll,then the inline-scroll-amount and block-scroll-amount aredetermined by a scrolling mechanism, if any,provided by the user agent. Otherwise, both are zero.

4.9.3 Visibility

The visibility of marks depends upon the location of the marks,thevisibility of the area, and theoverflow of any ancestorviewport-areas.

If an area has visibilityhidden it generates no marks.

If an area has anoverflow ofhidden,or when the environment is non-dynamic and theoverflow isscroll then the area determinesaclipping rectangle, which is defined to be therectangle determined by the value of theclip trait of the area, andfor any markgenerated by one of its descendant areas, portions of the marklying outsidethe clipping rectangle do not appear.

4.9.4 Border, Padding, and Background

The border- and padding-rectangles are determined relative to thecontent-rectangle by the values of the common padding and border widthtraits (border-before-width, etc.).

For any area, which is not a child of a viewport-area, the border isrendered between the border-rectangle and the padding-rectangle inaccordance with the common border color and style traits. For a child ofa viewport-area, the border is not rendered.

For an area, which is not part of a viewport/reference pair, thebackground is rendered. For an area that is either a viewport-area or areference-area in a viewport/reference pair, if the refined value ofbackground-attachment isscrolland the block-progression-dimension of the reference-area is larger thanthat of the viewport-area, then the background is rendered on thereference-area and not the viewport-area, and otherwise it is renderedon the viewport-area and not the reference-area.

The background, if any, is rendered in thepadding-rectangle, in accordancewith thebackground-image,background-color,background-repeat,background-position-vertical, andbackground-position-horizontal traits.

4.9.5 Intrinsic Marks

For each class of formatting objects, the marks intrinsic to itsgenerated areas are specified in the formatting object description.For example, an fo:character object generates a glyph-area, and thisis rendered by drawing a glyph within that area'scontent-rectangle in accordance with the area's font traits andglyph-orientationandblink traits.

In addition, other traits (for example the various score and score-color traits) specifyother intrinsicmarks. In the case of score traits (underline-score,overline-score andthrough-score), the score thickness and positionare specified by the nominal-font in effect; where the font fails tospecify these quantities, they are implementation-dependent.

4.9.6 Layering and Conflict of Marks

Marks are layered as described below, which defines a partialordering of which marks arebeneath which other marks.

Two marks are defined toconflict if they apply tothe same pointin the output medium. When two marks conflict, the one which isbeneath the other does not affect points in the output medium wherethey both apply.

Marks generated by the same area are layered as follows: the areabackground is beneath the area's intrinsic marks, and the intrinsicmarks are beneath the border. Layering among the area's intrinsicmarks is defined by the semantics of the area's generating formattingobject and its properties. For example, a glyph-area's glyph drawingcomes beneath the marks generated for text-decoration.

The stacking layer of an area is defined by its stacking context andits z-index value. The stacking layer of an areaA is defined to be lessthan that of an areaB if some ancestor-or-selfA' ofAandB' ofB have the same stacking context andthe z-index ofA' is lessthan the z-index ofB'. If neither stacking layer is less than theother then they are defined to have the same stacking layer.

IfA andB are areas, and the stacking layerofA is less than the stacking layerofB, then all marks generated byAare beneath all marks generated byB.

IfA andB are areas with the samestacking layer, the backgrounds ofA andBcome beneath all other marks generated byA andB. Further, ifA is anancestor ofB (still with the same stacking layer), thenthe background ofAis beneath all the areas ofB, and all the areasofB are beneath the intrinsic areas (and border)ofA.

IfA andB have the same stacking layer andneither is an ancestor of the other,then it is an error if either their backgrounds conflict or if anon-background mark ofA conflicts with anon-background mark ofB.An implementation may recover by proceeding as if the marks from thefirst area in the pre-order traversal order are beneath those of theother area.

4.10 Sample Area Tree

A typical area tree   [D]

A Typical Area Tree

5 Property Refinement / Resolution

Every formatting property may be specified on every formattingobject. For each formatting object class, however, only a subset ofthe formatting properties are used; those thatapplyto the class.

During refinement the set ofproperties that apply to a formattingobject is transformed into a set oftraits thatdefine constraints on the result of formatting. For many traits thereis a one-to-one correspondence with a property; for other traits thetransformation is more complex. Details on the transformation aredescribed below.

The first step in refinement of a particular formatting objectis to obtain the effective value of each property that applies to theobject. Any shorthand property specified on the formatting object isexpanded into the individual properties. This is further described in5.2 Shorthand Expansion. For any property that has not been specifiedon the object the inherited (see5.1.4 Inheritance)or initial value, as applicable, is used as the effective value.The second step is to transform this property set into traits.

Note:

Although the refinement process is described in a series ofsteps, this is solely for the convenience of expositionand does not imply they must be implemented as separatesteps in any conforming implementation. A conforming implementationmust only achieve the same effect.

5.1 Specified, Computed, and Actual Values, and Inheritance

For every property that is applicable to a givenformatting object, it is necessary to determinethe value of the property.Three variants of the property value aredistinguished: the specified value, the computed value, andthe actual value. The "specified value" is one that isplaced on the formatting object during the tree-construction process.A specified value may not be in aform that is directly usable; for example, it may be apercentage or other expressionthat 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 berealizable on the output medium and may need to be adjustedprior to use in rendering. For example, a line width may beadjusted to become an integral number of outputmedium pixels. This adjusted value is the "actual value."

5.1.1 Specified Values

The specified value of a property isdetermined using the following mechanisms(in order of precedence):

  1. If the tree-construction process placed the propertyon the formatting object, use the value of that propertyas the specified value. This is called "explicitspecification".

  2. Otherwise, if the property is inheritable, use the value of thatproperty from the parent formatting object, generally thecomputed value (see below).

  3. Otherwise use the property's initial value, if it has one.The initial value of each property is indicated in theproperty's definition. If there is no initial value, thatproperty is not specified on the formatting object.In general, this is an error.

Since it has no parent, the root of the result treecannot use values from a parent formattingobject; in this case, the initial value is used if necessary.

5.1.2 Computed Values

Specified values may be absolute (i.e., they are notspecified 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, nocomputation is needed to find the computed value. Relative values,on the other hand, must be transformed into computed values: percentagesmust be multiplied by a reference value (each property defines which valuethat 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 witheach property, certain propertyvalues ("smaller", "bolder") must be replacedaccording to their definitions.The computed value of any property that controls a border widthwhere the style ofthe border is "none" is forced to be "0pt".

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 specifiedeither 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 therelative property and the absolute property, respectively.Collectively, they are called "corresponding properties".

Specifying a value for one property determines both acomputed value for the specified property and a computed valuefor the corresponding property.Which relative property corresponds to which absoluteproperty depends on the writing-mode. For example, ifthe "writing-mode" at the top level of a document is"lr-tb",then "padding-start" corresponds to "padding-left", but ifthe "writing-mode" is "rl-tb", then "padding-start"corresponds to "padding-right".The exact specification of how to compute the values ofcorresponding properties is given in5.3 Computing the Values of Corresponding Properties.

In most cases, elements inherit computed values. However,there are some properties whose specified value may beinherited (e.g., 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.

5.1.3 Actual Values

A computed value is in principle ready to beused, but a user agent may not be able to makeuse of the value in a given environment. Forexample, a user agent may only be able to renderborders with integer pixel widths and may, therefore,have to adjust the computed width to an integral numberof media pixels. The actualvalue is the computed value after any such adjustments have been applied.

5.1.4 Inheritance

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 formattingobject. The inheritable properties are propagated down theformatting object tree from a parent to each child. (These propertiesare given their initial value at the root of the result tree.)For a given inheritable property, if that property is present on achild, 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 thecomputed value of that property on the parent formattingobject. Hence there is always a specified valuedefined for every inheritable property for everyformatting object.

5.2 Shorthand Expansion

In XSL there are two kinds of shorthand properties; those originatingfrom CSS, such as "border", and those that arise from breaking apartand/or combining CSS properties, such as "page-break-inside". In XSLboth types of shorthands are handled in the same way.

Note:

Shorthands are included only in the highest XSL conformancelevel: "complete" (see8 Conformance).

The conformance level for each property is shown inB.3 Property Table: Part II.

Shorthand properties do not inherit fromthe shorthand on the parent. Instead the individual properties thatthe shorthand expands into may inherit.

Some CSS shorthands are interrelated; their expansion has oneor more individual properties in common.CSS indicates that the user must specify the order of processingfor combinations of multiple interrelated shorthands and individualinterrelated properties. In XML, attributes are defined as unordered.To resolve this issue, XSL defines a precedence orderwhen multiple interrelated shorthand properties or a shorthand propertyand an interrelated individual property are specified:

They are processed in increasing precision (i.e., "border" is less precisethan "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 tobe:

  1. "border-style", "border-color", and "border-width"is less precise than

  2. "border-top", "border-bottom", "border-right",and "border-left".

Processing is conceptually in the following steps:

  1. Set the effective value ofall properties to their initial values.

  2. Process all shorthands in increasing precision.

    If the shorthand is set to "inherit": set the effectivevalue of each property that can be set by the shorthand tothe computed value of the corresponding property in the parent.

    If the value of the shorthand is not "inherit": determine whichindividual properties are to be set, and replace theinitial value with the computed value derived from the specifiedvalue.

  3. Process all specified individual properties.

  4. Carry out any inheritance for properties that werenot given a value other than by the first step.

Note:

For example,if both the "background"and the "background-color" properties are specified on a givenformatting object:process the "background" shorthand, then process the"background-color" property.

5.3 Computing the Values of Corresponding Properties

Where there are corresponding properties, such as "padding-left"and "padding-start", a computed value is determined for all thecorresponding properties. How the computed values are determinedfor a given formatting object is dependent on which ofthe corresponding properties are specified on the object. See descriptionbelow.

The correspondence mapping from absolute to relative propertyis as follows:

If the "writing-mode" specifies a block-progression-direction of"top-to-bottom": "top" maps to "before", and "bottom" maps to "after".

If the "writing-mode" specifies a block-progression-direction of"bottom-to-top": "top" maps to "after", and "bottom" maps to "before".

If the "writing-mode" specifies a block-progression-direction of"left-to-right": "left" maps to "before", and "right" maps to "after".

If the "writing-mode" specifies a block-progression-direction of"right-to-left": "left" maps to "after", and "right" maps to "before".

If the "writing-mode" specifies an inline-progression-direction of"left-to-right": "left" maps to "start", and "right" maps to "end".

If the "writing-mode" specifies an inline-progression-direction of"right-to-left": "left" maps to "end", and "right" maps to "start".

If the "writing-mode" specifies an inline-progression-direction of"top-to-bottom": "top" maps to "start", and "bottom" maps to "end".

If the "writing-mode" specifies an inline-progression-direction of"bottom-to-top": "top" maps to "end", and "bottom" maps to "start".

If the "writing-mode" specifies an inline-progression-direction of"left-to-right" for odd-numbered lines, and "right-to-left" foreven-numbered lines: "left" maps to "start", and "right" maps to "end".

Note:

"reference-orientation" is a rotation and does not influencethe correspondence mapping.

5.3.1 Border and Padding Properties

The simplest class of corresponding properties arethose for which there are only two variants in thecorrespondence, an absolute property and a relativeproperty, and the property names differ only in thechoice of absolute orrelative designation; for example, "border-left-color" and"border-start-color".

For this class, the computed values of the correspondingproperties are determined as follows. If the correspondingabsolute variant of the property is specified on the formattingobject, its computed value is used to set the computed value of thecorresponding relative property. If the corresponding absolute propertyis not explicitly specified, then the computedvalue of the absolute property is set to the computed value of thecorresponding relative property.If the corresponding relative property is specified on theformatting object and the absolute property only specified bythe expansion of a shorthand, then the computed value of theabsolute property is set to the computed value of the correspondingrelative property.

Note that if both the absolute and the relativeproperties are notexplicitly specified, then the rules for determining the specifiedvalue will use either inheritance if that is defined for the propertyor the initial value. The initial value must be the same for all possiblecorresponding properties. If both an absolute and a corresponding relativeproperty are explicitly specified, then the above rule gives precedence to theabsolute property, and the specified value of thecorresponding relative propertyis ignored in determining the computed value of the corresponding properties.

The (corresponding) properties that use the above rule todetermine their computed value are:

  • border-after-color

  • border-before-color

  • border-end-color

  • border-start-color

  • border-after-style

  • border-before-style

  • border-end-style

  • border-start-style

  • border-after-width

  • border-before-width

  • border-end-width

  • border-start-width

  • padding-after

  • padding-before

  • padding-end

  • padding-start

5.3.2 Margin, Space, and Indent Properties

The "space-before", and "space-after" properties (block-levelformatting objects), "space-start", and "space-end" properties(inline-level formatting objects) are handled in the same way as theproperties immediately above, but the correspondingabsolute properties are in the set: "margin-top","margin-bottom", "margin-left", and "margin-right".The .conditionality component of any space-before or space-after determinedfrom a margin property is set to "retain".

Note:

The treatment of the .conditionality component is for CSS2compatibility.

Note:

The computed value of a CSS2 margin in theblock-progression-dimension specified as "auto" is 0pt. Any space-beforeor space-after determined from a margin value of "auto" is set to 0pt.

There are two more properties, "end-indent"and "start-indent" (block-levelformatting objects) which correspond to thevarious absolute "margin" properties. For these properties,the correspondence is more complex and involves the corresponding"border-X-width" and "padding-X" properties,where X is one of "left", "right", "top" or "bottom".The computed values of these corresponding properties are determinedas follows:

If the corresponding absolute "margin" property is specified on theformatting object and the formatting object generates a reference areathe computed value of the margin is used to calculate the computedvalue of the corresponding "Y-indent" property,where Y is either "start" or "end".The computed value of the of the absolute "margin" propertyis determined by the CSS descriptions of the propertiesand the relevant sections (in particular section 10.3) of theCSS Recommendation referenced by these properties.The formulae for "start-indent"and "end-indent" are":

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

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

If the corresponding absolute "margin" property is specified on theformatting object and the formatting object does not generate areference area, the computed value of the margin and the computed valuesof the corresponding "border-X-width" and "padding-X" properties are used tocalculate the computed value of the corresponding "Y-indent" property.The formulae for "start-indent"and "end-indent" are:

start-indent = inherited_value_of(start-indent) +margin-corresponding + padding-corresponding +border-corresponding-width

end-indent = inherited_value_of(end-indent) +margin-corresponding + padding-corresponding +border-corresponding-width

If the corresponding absolute margin property is not explicitlyspecified, or ifthe corresponding relative property is specified on theformatting object and the absolute property only specified bythe expansion of a shorthand,the corresponding absolute margin property is calculatedaccording to the following formulae:

margin-corresponding = start-indent -inherited_value_of(start-indent) - padding-corresponding -border-corresponding-width

margin-corresponding = end-indent -inherited_value_of(end-indent) - padding-corresponding -border-corresponding-width

Note:

If the "start-indent" or "end-indent" properties are notspecified their inherited value is used in these formulae.

5.3.3 Height, and Width Properties

Based on the writing-mode in effect for the formatting object,either the "height", "min-height", and "max-height" properties, orthe "width", "min-width", and "max-width" properties are convertedto the corresponding block-progression-dimension, orinline-progression-dimension.

The "height" properties are absolute and indicate the dimensionfrom "top" to "bottom"; the width properties the dimension from"left" to "right".

If the "writing-mode" specifies a block-progression-direction of"top-to-bottom" or "bottom-to-top" the conversion is as follows:

  • If any of "height", "min-height", or "max-height" is specified:

    • If "height" is specified then first set:

      block-progression-dimension.minimum=<height>

      block-progression-dimension.optimum=<height>

      block-progression-dimension.maximum=<height>

    • If "height" is not specified, then first set:

      block-progression-dimension.minimum=auto

      block-progression-dimension.optimum=auto

      block-progression-dimension.maximum=auto

    • Then, if "min-height" is specified, reset:

      block-progression-dimension.minimum=<min-height>

    • Then, if "max-height" is specified, reset:

      block-progression-dimension.maximum=<max-height>

    • However, if "max-height" is specifiedas "none", reset:

      block-progression-dimension.maximum=auto

  • If any of "width", "min-width", or "min-width" is specified:

    • If "width" is specified then first set:

      inline-progression-dimension.minimum=<width>

      inline-progression-dimension.optimum=<width>

      inline-progression-dimension.maximum=<width>

    • If "width" is not specified, then first set:

      inline-progression-dimension.minimum=auto

      inline-progression-dimension.optimum=auto

      inline-progression-dimension.maximum=auto

    • Then, if "min-width" is specified, reset:

      inline-progression-dimension.minimum=<min-width>

    • Then, if "max-width" is specified, reset:

      inline-progression-dimension.maximum=<max-width>

    • However, if "max-width" is specifiedas "none", reset:

      inline-progression-dimension.maximum=auto

If the "writing-mode" specifies a block-progression-direction of"left-to-right" or "right-to-left" the conversion is as follows:

  • If any of "height", "min-height", or "max-height" is specified:

    • If "height" is specified then first set:

      inline-progression-dimension.minimum=<height>

      inline-progression-dimension.optimum=<height>

      inline-progression-dimension.maximum=<height>

    • If "height" is not specified, then first set:

      inline-progression-dimension.minimum=auto

      inline-progression-dimension.optimum=auto

      inline-progression-dimension.maximum=auto

    • Then, if "min-height" is specified, reset:

      inline-progression-dimension.minimum=<min-height>

    • Then, if "max-height" is specified, reset:

      inline-progression-dimension.maximum=<max-height>

    • However, if "max-height" is specifiedas "none", reset:

      inline-progression-dimension.maximum=auto

  • If any of "width", "min-width", or "min-width" is specified:

    • If "width" is specified then first set:

      block-progression-dimension.minimum=<width>

      block-progression-dimension.optimum=<width>

      block-progression-dimension.maximum=<width>

    • If "width" is not specified, then first set:

      block-progression-dimension.minimum=auto

      block-progression-dimension.optimum=auto

      block-progression-dimension.maximum=auto

    • Then, if "min-width" is specified, reset:

      block-progression-dimension.minimum=<min-width>

    • Then, if "max-width" is specified, reset:

      block-progression-dimension.maximum=<max-width>

    • However, if "max-width" is specifiedas "none", reset:

      block-progression-dimension.maximum=auto

5.3.4 Overconstrained Geometry

The sum of the start-indent, end-indent, and inline-progression-dimensionof the content-rectangle of an area should be equal to theinline-progression-dimension of the content-rectangle of the closestancestor reference-area. In the case where a specification wouldlead to them being different the end-indent (and thus the correspondingmargin) is adjusted such that the equality is true.

5.4 Simple Property to Trait Mapping

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 inB.3 Property Table: Part II.For example, the propertyfont-style="italic" isrefined into afont-style trait with a value of "italic".

Some traits have a value that is differentfrom the value of the property. These are classified as "Value change"in the property table.For example, the propertybackground-position-horizontal="left"is refined into abackground-position-horizontal traitwith a value of "0pt".The value mapping for these traits is given below.

5.4.1 Background-position-horizontal and background-position-vertical Properties

A value of "top", "bottom", "left", "right", or "center" isconverted to a length as specified in the property definition.

5.4.2 Column-number Property

If a value has not been specified on a formatting object to whichthis property applies the initial value is computed as specifiedin the property definition.

5.4.3 Text-align Property

A value of "left", or "right" is converted to the writing-moderelative value as specified in the property definition.

5.4.4 Text-align-last Property

A value of "left", or "right" is converted to the writing-moderelative value as specified in the property definition.

5.4.5 z-index Property

The value is converted to one that is absolute; i.e., the refined valueis the specified value plus the refined value of z-index of its parentformatting object, if any.

5.4.6 Language Property

A value being a 2-letter code in conformance with[ISO639] is converted to the corresponding3-letter[ISO639-2] terminology code,a 3-letter code in conformance with[ISO639-2]bibliographic code is converted to the corresponding 3-letterterminology code, a value of 'none' or 'mul' is converted to 'und'.

5.5 Complex Property to Trait Mapping

A small number of properties influence traits in a morecomplex manner. Details are given below.

5.5.1 Word spacing and Letter spacing Properties

These properties may set values for thespace-startandspace-end traits, as described in the propertydefinitions.

5.5.2 Reference-orientation Property

Thereference-orientation trait is copied fromthe reference-orientation property during refinement. Duringcomposition an absolute orientation is determined(see4.2.2 Common Traits).

5.5.3 Writing-mode and Direction Properties

Thewriting-mode,direction, andunicode-bidi traitsare copied fromthe properties of the same name during refinement.During composition these are used in the determination ofabsolute orientations for theblock-progression-direction,inline-progression-direction, andshift-direction traitsin accordance with4.2.2 Common Traits.

5.5.4 Absolute-position Property

If absolute-position has the value"absolute" or "fixed", the values of theleft-position,top-position, etc. traitsare copied directly from thevalues of the "left", "top", etc. properties. Otherwise these traits'values are left undefined during refinement and determined duringcomposition.

5.5.5 Relative-position Property

If relative-position has the value"relative" then the values of theleft-offset andtop-offset traits are copied directlyfrom the "left" and "top"properties. If the "right" property is specified but "left" is not,thenleft-offset is set to the negative of thevalue of "right". If neither"left" nor "right" is specified theleft-offset is 0.If the "bottom"property is specified but "top" is not, thentop-offset is set to thenegative of the value of "bottom". If neither "top" nor "bottom" isspecified thetop-offset is 0.

5.5.6 Text-decoration Property

The "text-decoration" property value provides values fortheblink trait and a set ofscore and score-color traits. Thespecified color has thevalue of thecolor trait of the formatting objectfor which the "text-decoration" property is being refined.

A property value containing the token "underline" sets a value of"true" to theunderline-score trait, and a value ofspecified color to theunderline-score-colortrait.

A property value containing the token "overline" sets a value of"true" to theoverline-score trait, and a value ofspecified color to theoverline-score-colortrait.

A property value containing the token "line-through" sets a value of"true" to thethrough-score trait, and a value ofspecified color to thethrough-score-colortrait.

A property value containing the token "blink" sets a value of"true" to theblink trait.

A property value containing the token "no-underline" sets a value of"false" to theunderline-score trait, and a value ofspecified color to theunderline-score-colortrait.

A property value containing the token "no-overline" sets a value of"false" to theoverline-score trait, and a value ofspecified color to theoverline-score-colortrait.

A property value containing the token "no-line-through" sets a value of"false" to thethrough-score trait, and a value ofspecified color to thethrough-score-colortrait.

A property value containing the token "no-blink" sets a value of"false" to theblink trait.

5.5.7 Font Properties

The font traits on an area are indirectly derived from the combinationof the font properties, which are used to select a font, and thefont tables from that font.

The abstract model that XSL assumes for a font is described in7.9.1 Fonts and Font Data.

There is no XSL mechanism to specify a particular font; instead,aselected font is chosen from the fonts available to theUser Agent based on a set of selection criteria. Theselectioncriteria are the following font properties:"font-family","font-style","font-variant","font-weight","font-stretch", and"font-size",plus, for some formattingobjects, one or more characters.The details ofhow the selection criteria are used is specified in the"font-selection-strategy" property (see7.9.3 font-selection-strategy).

Thenominal-font trait is set to the selected font. In thecase where there is no selected font and the 'missing character' glyphis displayed, thenominal-font trait is set to the font containingthat glyph, otherwise(i.e., some other mechanism was used to indicate that a characteris not being displayed) thenominal-font is asystem font.

Thedominant-baseline-identifier andactual-baseline-table traits are derived from thevalue of the "dominant-baseline" property. The value of this propertyis a compound value with three components: a baseline-identifier forthe dominant-baseline, a baseline-table and a baseline-tablefont-size. Thedominant-baseline-identifier is set fromthe first component. The baseline-table font-size is used to scale thethe positions of the baselines from the baseline table and, then, theposition of the dominant-baseline is subtracted from the positionsof the other baselines to yield a table of offsets from the dominantbaseline. This table is the value of theactual-baseline-table trait.

5.6 Non-property Based Trait Generation

Theis-reference-area trait is set to "true" forspecific formatting objects.The description of these formatting objects specify explicitly thatthis is the case.For all other formatting objects it is set to "false".

5.7 Property Based Transformations

5.7.1 Text-transform Property

The case changes specified by this property are carried out duringrefinement by changing the value of the "character" propertyappropriately.

Note:

The use of the "text-transform" property is deprecated in XSLdue to its severe internationalization issues.

5.8 Unicode BIDI Processing

The characters in certain scripts are written horizontally from rightto left. In some documents, in particular those written with theArabic or Hebrew script, and in some mixed-language contexts, text ina single (visually displayed) block may appear with mixeddirectionality. This phenomenon is called bidirectionality, or "BIDI"for short.

The Unicode BIDI algorithm[UNICODE UAX #9]defines a complex algorithm fordetermining the proper directionality of text. The algorithm is basedon both an implicit part based on character properties, as well asexplicit controls for embeddings and overrides.

The final step of refinement uses this algorithm and the Unicodebidirectional character type of each character to convert the implicitdirectionality of the text into explicit markup in terms of formattingobjects. For example, a sub-sequence of Arabic characters in anotherwise English paragraph would cause the creation of an inlineformatting object with the Arabic characters as its content, with a"direction" property of "rtl" and a "unicode-bidi" property of"bidi-override". The formatting object makes explicit the previouslyimplicit right to left positioning of the Arabic characters.

As defined in[UNICODE UAX #9],the Unicode BIDI algorithmtakes a stream of text as input, and proceeds in three main phases:

  1. Separation of the input text into paragraphs. The rest of the algorithmaffects only the text between paragraph separators.

  2. Resolution of the embedding levels of the text. In this phase, thebidirectional character types, plus the Unicode directional formattingcodes, are used to produceresolved embedding levels. Thenormative bidirectional character type for each character is specifiedin the Unicode Character Database[UNICODE Character Database].

  3. Reordering the text for display on a line-by-line basis using theresolved embedding levels, once the text has been broken into lines.

The algorithm, as described above, requires some adaptions to fitinto the XSL processing model. First, the final, text reordering stepis not done during refinement. Instead, the XSL equivalent ofre-ordering is done during area tree generation. Theinline-progression-direction of each glyph is used tocontrol the stacking of glyphs as described in4.2.5 Stacking Constraints. Theinline-progression-direction is determined at the blocklevel by the "writing-mode" property and within the inline formattingobjects within a block by the "direction" and "unicode-bidi"properties that were either specified on inline formatting objectsgenerated by tree construction or are on inline formatting objectsintroduced by this step of refinement (details below).

Second, the algorithm is applied to a sequence of characters comingfrom the content of one or more formatting objects. The sequence ofcharacters is created by processing a fragment of the formattingobject tree. Afragment is any contiguous sequence ofchildren of some formatting object in the tree. The sequence iscreated by doing a pre-order traversal of the fragment down to thefo:character level. During the pre-order traversal, every fo:characterformatting 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 "bidi-override", add a Unicode RLO/LROor RLE/LRE character to the sequence as appropriate to the value ofthe "direction" and "unicode-bidi" properties. On returning to thatnode after traversing its content, add a Unicode PDF character. Inthis way, the formatting object tree fragment is flattened into asequence of characters. This sequence of characters is called theflattened sequence of characters below.

Third, in XSL the algorithm is applied todelimited textranges instead of just paragraphs. A delimited text range is amaximal flattened sequence of characters that does not contain anydelimiters. Any formatting object that generates block-areas is adelimiter. It acts as a delimiter for its content. It also acts as adelimiter for its parent's content. That is, if the parent hascharacter content, then its children formatting objects that generateblock-areas act to break that character content intoanonymousblocks each of which is a delimited text range. In a similarmanner, the fo:multi-case formatting object acts as delimiter for itscontent and the content of its parent. Finally, text with anorientation that is not perpendicular to the dominant-baseline acts asa delimiter to text with an orientation perpendicular to thedominant-baseline. We say thattext has an orientationperpendicular to the dominant-baseline if the glyphs that correspondto the characters in the text are all oriented perpendicular to thedominant-baseline.

Note:

In most cases, a delimited text range is the maximal sequence ofcharacters that would be formatted into a sequence of one or moreline-areas. For the fo:multi-case and the text with an orientationperpendicular to the dominant-baseline, the delimited range may be asub-sequence of a line or sequence of lines. For example, in Japaneseformatted in a vertical writing-mode, rotated Latin and Arabic textwould be delimited by the vertical Japanese characters thatimmediately surround the Latin and Arabic text. Any formatting objectsthat generated inline-areas would have no affect on the determinationof the delimited text range.

For each delimited text range, theinline-progression-directionof the nearest ancestor (including self) formatting object that generatesa block-area determines theparagraph embedding level usedin the Unicode BIDI algorithm. This is the default embedding levelfor the delimited text range.

Embedding levels are numbers that indicate how deeply thetext is nested, and the default direction of text on that level. Theminimum embedding level of text is zero, and the maximum embeddinglevel is level 61. Having more than 61 embedding levels is anerror. An XSL processor may signal the error. If it does not signalthe error, it must recover by allowing a higher maximum number ofembedding levels.

The second step of the Unicode BIDI algorithm labels each characterin the delimited text range with aresolved embedding level.The resolved embedding level of each character will be greater thanor equal to the paragraph embedding level. Right-to-left text willalways end up with an odd level, and left-to-right and numeric textwill always end up with an even level. In addition, numeric textwill always end up with a higher level than the paragraph level.

Once the resolved embedding levels are determined for thedelimited text range, new fo:bidi-override formatting objects withappropriate values for the "direction" and "unicode-bidi" propertiesare inserted into the formatting object tree fragment that wasflattened into the delimited text range such that the followingconstraints are satisfied:

  1. For any character in the delimited text range, theinline-progression-direction of thecharacter must match its resolved embedding level.

  2. For each resolved embedding levelL from the paragraphembedding level to the maximum resolved embedding level, and for eachmaximal contiguous sequence of charactersS for which theresolved embedding level of each character is greater than or equal toL,

    1. There is an inline formatting objectF which has as itscontent the formatting object tree fragment that flattens toS and has a "direction" property consistent with theresolved embedding levelL.

      Note:

      F need not be an inserted formatting object if theconstraint is met by an existing formatting object or by specifyingvalues for the "direction" and "unicode-bidi" properties on anexisting formatting object.

    2. All formatting objects that contain any part of the sequenceS are properly nested inF and retain thenesting relationships they had in the formatting object tree prior tothe insertion of the new formatting objects.

      Note:

      Satisfying this constraint may requiresplitting one or more existingformatting objects in the formatting object tree each into a pair offormatting objects each of which has the same set of computed propertyvalues as the original, unsplit formatting object. One of the pairwould be ended before the start ofF or start after the endofF and the other would start after the start ofF or would end before the end ofF,respectively. The created pairs must continue to nest properly tosatisfy this constraint. For example, assume Left-to-right text isrepresented by the character "L" and Right-to-left text is represented by "R".In the sub-tree

        <fo:block>    LL    <fo:inline color="red">LLLRRR</fo:inline>    RR  </fo:block>

      assuming a paragraph embedding level of "0", the resolved embeddinglevels would require the following (inserted and replicated) structure:

         <fo:block>    LL    <fo:inline color="red">LLL</fo:inline>    <fo:bidi-override direction="rtl">      <fo:inline color="red">RRR</fo:inline>      RR    </fo:bidi-override>  </fo:block>

      Note that the fo:inline with id equal to "A" has been split into twofo:inlines, with only the first one retaining the original id of "A". Since id'smust be unique within the formatting object tree, the computed value ofany id must not be replicated in the second member of the pair.

  3. No fewer fo:bidi-override formatting objects can be inserted and stillsatisfy the above constraints. That is, add to the refined formattingobject tree only as many fo:bidi-override formatting objects, beyond theformatting objects created during tree construction, as are needed torepresent the embedding levels present in the document.

5.9 Expressions

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.

Note:

The expression language supports operations on a limited set ofdatatypes. These do not include <angle>, <time>, and <frequency>.Values of these datatypes must be strings in the expression language.The definition of these datatypes specify the allowed formof these strings.

5.9.1 Property Context

Properties are evaluated against a property-specific context. This context provides:

  • A list of allowed resultant types for a property value.

  • Conversions from resultant expression value types to an allowed type for the property.

  • The current font-size value.

  • Conversions from relative numerics by type to absolute numerics within additive expressions.

Note:

It is not necessary that a conversion be provided for all types. If no conversion is specified, it is an error.

When a type instance (e.g., a string, a keyword, anumeric, etc.) is recognized in the expression it is evaluated againstthe property context. This provides the ability for specific values to beconverted with the property context's specific algorithms or conversionsfor use in the evaluation of the expression as a whole.

For example, the "auto" enumeration token for certainproperties is a calculated value. Such a token would be convertedinto 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 widthof some aspect of the formatting object.

In addition, this allows certain types like relative numerics to beresolved into absolute numerics prior to mathematicaloperations.

All property contexts allow conversions as specified in5.9.12 Expression Value Conversions.

5.9.2 Evaluation Order

When a set of properties is being evaluated for aspecific formatting object in the formatting object treethere is a specific order in which properties must be evaluated.Essentially, the "font-size" property must be evaluated first beforeall other properties. Once the "font-size" property has been evaluated,all other properties may be evaluated in any order.

When the "font-size" property is evaluated, the currentfont-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 thecurrent font-size for all property contexts of all properties value expressionsbeing further evaluated.

5.9.3 Basics

[1]   Expr   ::=   AdditiveExpr
[2]   PrimaryExpr   ::=   '('Expr ')'
|Numeric
|Literal
|Color
|Keyword
|EnumerationToken
|FunctionCall

5.9.4 Function Calls

[3]   FunctionCall   ::=   FunctionName '(' (Argument ( ','Argument)*)? ')'
[4]   Argument   ::=   Expr

5.9.5 Numerics

A numeric represents all the types of numbers in an XSL expression.Some of these numbers are absolute values. Others arerelative to some other set of values. All of these values use a floating-point number to represent the number-part of their definition.

A floating-point number can have anydouble-precision 64-bit format IEEE 754 value[IEEE 754].These include a special "Not-a-Number" (NaN) value,positive and negative infinity, and positive and negative zero. SeeSection 4.2.3 of[JLS] for a summary of the keyrules of the IEEE 754 standard.

[5]   Numeric   ::=   AbsoluteNumeric
|RelativeNumeric
[6]   AbsoluteNumeric   ::=   AbsoluteLength
[7]   AbsoluteLength   ::=   NumberAbsoluteUnitName?
[8]   RelativeNumeric   ::=   Percent
|RelativeLength
[9]   Percent   ::=   Number '%'
[10]   RelativeLength   ::=   NumberRelativeUnitName

The following operators may be used with numerics:

+

Performs addition.

-

Performs subtraction or negation.

*

Performs multiplication.

div

Performs floating-point division according to IEEE 754.

mod

Returns the remainder from a truncating division.

Note:

Since XML allows- in names, the-operator (when not used as a UnaryExpr negation) typically needs to bepreceded by white space. For example the expression10pt - 2ptmeans subtract 2 points from 10 points. The expression10pt-2ptwould mean a length value of 10 with a unit of "pt-2pt".

Note:

The following are examples of themod operator:

  • 5 mod 2 returns1

  • 5 mod -2 returns1

  • -5 mod 2 returns-1

  • -5 mod -2 returns-1

Note:

Themod operator is the same as the% operator in Java andECMAScript and is not the same as the IEEE remainder operation, whichreturns the remainder from a rounding division.

Numeric Expressions
[11]   AdditiveExpr   ::=   MultiplicativeExpr
|AdditiveExpr '+'MultiplicativeExpr
|AdditiveExpr '-'MultiplicativeExpr
[12]   MultiplicativeExpr   ::=   UnaryExpr
|MultiplicativeExprMultiplyOperatorUnaryExpr
|MultiplicativeExpr 'div'UnaryExpr
|MultiplicativeExpr 'mod'UnaryExpr
[13]   UnaryExpr   ::=   PrimaryExpr
| '-'UnaryExpr

Note:

The effect of this grammar is that the order of precedence is (lowest precedence first):

  • +, -

  • *, div, mod

and the operators are all left associative. For example, 2*3 + 4 div 5 is equivalent to (2*3) + (4 div 5).

If a non-numeric value is used in anAdditiveExpr and there is no property context conversion from that type into an absolute numeric value, the expression is invalid and considered an error.

5.9.6 Absolute Numerics

An absolute numeric is an absolute length which is a pair consisting of aNumber and aUnitName 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.

Each unit name has associated with it an internal ratio to some commoninternal unit of measure (e.g., a meter). When a value iswritten in aproperty expression, it is first converted to the internal unit of measureand then mathematical operations are performed.

Inaddition, only the mod,addition, and subtraction operators require that the numerics oneither side of the operation be absolute numerics of the same unit power.For other operations, the unit powers may be different and the resultshould be mathematically consistent as with the handling of powers in algebra.

A property definition may constrain an absolute length to aparticular power.For example, when specifying font-size, the value is expected to be ofpower "one".That is, it is expected to have a single powered unit specified (e.g., 10pt).

When the final value of a property is calculated, the resulting power of theabsolute numeric must be either zero or one. If any other power is specified,the value is an error.

5.9.7 Relative Numerics

Relative lengths are values that arecalculated relative to some other set of values. When written as part of anexpression, they are either converted via the propertycontext into an absolute numeric or passed verbatim as the property value.

It is an error if the property context has no available conversionfor the relative numeric and a conversion is required for expressionevaluation (e.g., within an add operation).

5.9.7.1 Percents

Percentages are values that are counted in 1/100 units. That is,10%as a percentage value is0.10 as a floating point number.When converting to an absolute numeric, the percentage is defined in theproperty definition as being a percentage of some knownproperty value. If the percentage evaluates to"auto" the complete expression evaluates to "auto".

For example, a value of "110%" on a "font-size"propertywould be evaluated to mean 1.1 times the current font size.Such a definition of the allowed conversion for percentages is specified onthe property definition. If no conversion is specified, the resulting valueis a percentage.

5.9.7.2 Relative Lengths

A relative length is a unit-based value that is measured against thecurrent value of thefont-size property.

There is only one relative unit of measure, the "em". Thedefinition of "1em" is equal to the current font size. Forexample, a value of "1.25em" is 1.25 times the current fontsize.

When an em measurement is used in an expression, it is converted accordingto the font-size value of the current property's context.The result of the expression is an absolute length.See7.9.4 font-size.

5.9.8 Strings

Strings are represented either asliterals oras anenumeration token.All properties contexts allow conversion from enumeration tokens to strings.See5.9.12 Expression Value Conversions.

5.9.9 Colors

A color is a set of values used to identify a particular color from a color space.Only RGB[sRGB](Red, Green, Blue)and ICC (International Color Consortium)[ICC]colors are included in this Recommendation.

RGB colors are directly represented in the expression language using ahexadecimal notation. ICC colors can be specified through an rgb-iccfunction.Colors can also be specified through the system-colorfunction or through conversion from anEnumerationTokenvia the property context.

5.9.10 Keywords

Keywords are special tokens in the grammar that provide access tocalculated values or other property values.The allowed keywords are defined in the following subsections.

5.9.10.1 inherit

The property takes the samecomputed value as the propertyfor the formatting object's parent object.

Note:

"inherit" is not allowed as an expression mixed with operations.The same functionality is provided by the from-parent() function, whichcan be mixed with operations.

5.9.11 Lexical Structure

When processing an expression,white space (ExprWhitespace) may beallowed before or after any expression token even though it is notexplicitly defined as such in the grammar. In some cases, white spaceis necessary to make tokens in the grammar lexically distinct.Essentially, white space should be treated as if it does not existafter tokenization of the expression has occurred.

The following special tokenization rules must be applied in theorder specified to disambiguate the grammar:

  • If the character following anNCName (possibly after interveningExprWhitespace) is"(",then the token must be recognized asFunctionName.

  • A number terminates at the first occurrence of a non-digit character otherthan ".". This allows the unit token forlength quantities to parse properly.

  • When anNCName immediately follows aNumber, it should be recognized as aUnitName or it is an error.

  • TheKeyword values take precedence overEnumerationToken.

  • If aNCName follows anumeric,it should be recognized as anOperatorName or it is an error.

Expression Lexical Structure
[14]   ExprToken   ::=   '(' | ')' | '%'
|Operator
|FunctionName
|EnumerationToken
|Number
[15]   Number   ::=   FloatingPointNumber
[16]   FloatingPointNumber   ::=   Digits ('.'Digits?)?
| '.'Digits
[17]   Digits   ::=   [0-9]+
[18]   Color   ::=   '#'AlphaOrDigits
[19]   AlphaOrDigits   ::=   [a-fA-F0-9]+
[20]   Literal   ::=   '"' [^"]* '"'
| "'" [^']* "'"
[21]   Operator   ::=   OperatorName
|MultiplyOperator
| '+' | '-'
[22]   OperatorName   ::=   'mod' | 'div'
[23]   MultiplyOperator   ::=   '*'
[24]   Keyword   ::=   'inherit'
[25]   FunctionName   ::=   NCName
[26]   EnumerationToken   ::=   NCName
[27]   AbsoluteUnitName   ::=   'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'px'
[28]   RelativeUnitName   ::=   'em'
[29]   ExprWhitespace   ::=   S

5.9.12 Expression Value Conversions

Values that are the result of an expression evaluation may be convertedinto property value types. In some instances this is a simple verificationof 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.

It is not necessary that all types be allowed to be converted. If theexpression value cannot be converted to the necessary type for the property value,it is an error.

The following table indicates what conversions are allowed.

TypeAllowed ConversionsConstraints
NCName
  • Color, via the system-color() function.

  • Enumeration value, as defined in the property definition.

  • To a string literal

The value may be checked againsta legal set of values depending on the property.
AbsoluteNumeric
  • Integer, via the round() function.

  • Color, as an RGB color value.

If converting to an RGB color value, it must be a legal color value from the colorspace.
RelativeLength
  • To an AbsoluteLength

The specific conversion to be applied is property specific and can befound in the definition of each property.

Note:

Conversions of compound property values are not allowed; thusfor example,space-before.optimum="inherited-property-value(space-before)" is invalid.Permitted are, for example,space-before="inherited-property-value(space-before)" andspace-before.optimum="inherited-property-value(space-before.optimum)"since they do not require conversion.

5.9.13 Definitions of Units of Measure

The units of measure in this Recommendation have the following definitions:

NameDefinition
cmSee[ISO31]
mmSee[ISO31]
in2.54cm
pt1/72in
pc12pt
pxSee5.9.13.1 Pixels
emSee5.9.7.2 Relative Lengths
5.9.13.1 Pixels

XSL interprets a 'px' unit to be a request for the formatter to choose adevice-dependent measurement that approximates viewing one pixel on atypical computer monitor. This interpretation is follows:

  1. The preferred definition of one 'px' is:

    • The actual distance covered by the largest integer number ofdevice dots (the size of a device dot is measured as the distancebetween dot centers) that spans a distance less-than-or-equal-tothe distance specified by the arc-span rule inhttp://www.w3.org/TR/REC-CSS2//syndata.html#x39or superceding errata.

    • A minimum of the size of 1 device dot should be used.

    • This calculation is done separately in each axis,and may have a different value in each axis.

  2. However, implementors may instead simply pick a fixed conversionfactor, treating 'px' as an absolute unit of measurement (such as1/92" or 1/72").

Note:

Pixels should not be mixed with other absolute units inexpressions as they may cause undesirable effects.Also, particular caution should be used with inherited property valuesthat may have been specified using pixels.

If the User Agent chooses a measurement for a 'px' thatdoes not match an integer number of device dots in each axis it mayproduce undesirable effects, such as:

  • moiré patterns in scaled raster graphics

  • unrenderable overlapping areas when the renderer rounds fontsor graphics sizes upward to its actual dot-size

  • large spaces between areas when the renderer rounds fonts orgraphics sizes downward to its actual dot-size

  • unreadable results including unacceptably small text/layout(for example, a layout was calculated at 72 dpi [dots per inch], butthe renderer assumed the result was already specified in devicedots and rendered it at 600 dpi).

Stylesheet authors should understand a pixel's actual size mayvary from device to device:

  • stylesheets utilizing 'px' units may not produce consistentresults across different implementations or differentoutput devices from a single implementation

  • even if stylesheets are expressed entirely in 'px' unitsthe results may vary on different devices

5.10 Core Function Library

5.10.1 Number Functions

numericfloor(numeric)

Thefloor function returns the largest (closest topositive infinity) integer that is not greater than the argument.The numeric argument to this function must be of unit power zero.

Note:

If it is necessary to use thefloor function for aproperty where a unit power of one is expected, then an expressionsuch as: "floor(1.4in div 1.0in)*1.0in" must be used.This also applies to the ceiling,round, and other such functions where a unit power of zero is required.

numericceiling(numeric)

Theceiling function returns the smallest (closestto negative infinity) integer that is not less than the argument. The numericargument to this function must be of unit power zero.

numericround(numeric)

Theround function returns the integer that isclosest to the argument. If there are two suchnumbers, then the one that is closest to positive infinity isreturned. The numeric argument to this function must be of unit power zero.

numericmin(numeric,numeric)

Themin function returns the minimum of thetwo numeric arguments. These arguments must have the same unit power.

numericmax(numeric,numeric)

Themax function returns the maximum of the twonumeric arguments. These arguments must have the same unit power.

numericabs(numeric)

Theabs functionreturns the absolute value of the numeric argument.That is, if the numeric argument is negative, it returns the negation ofthe argument.

5.10.2 Color Functions

colorrgb(numeric,numeric,numeric)

Thergb function returns a specific color from the RGBcolor space. The parameters to this function must be numerics (real numbers) with alength power of zero.

colorrgb-icc(numeric,numeric,numeric,NCName,numeric,numeric)

Thergb-icc functionreturns a specific color from 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.

The first three parameters specify a fallback color from the sRGB color space. This color is used when the color profile is not available.

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.

colorsystem-color(NCName)

Thesystem-color function returns a system definedcolor with a given name.

5.10.3 Font Functions

objectsystem-font(NCName,NCName?)

Thesystem-font function returns acharacteristic of a system font. The first argument is thename of the system font and the second argument, which is optional,names the property that specifies the characteristic. If the secondargument is omitted, then the characteristic returned is the same asthe name of the property to which the expression is being assigned.

For example, the expression"system-font(heading,font-size)" returns the font-sizecharacteristic for the system font named "heading". This is equivalent to theproperty assignment'font-size="system-font(heading)"'.

5.10.4 Property Value Functions

objectinherited-property-value(NCName?)

Theinherited-property-value function returns theinherited value of the property whose name matches the argument specified,or if omitted for the property for whichthe expression is being evaluated.It is an error if this property is not an inherited property.If the argument specifies a shorthand property and if the expressiononly consists of the inherited-property-value function with an argumentmatching the property being computed, it is interpreted as an expansionof the shorthand with each property into which the shorthand expands,each having a value of inherited-property-value with an argumentmatching the property. It is an error if arguments matchinga shorthand property are used in any other way. Similarly,if the argumentspecifies a property of a compound datatype and if the expressiononly consists of the inherited-property-value function withan argument matching the property being computed,it is interpreted as an expansion with each component of thecompound property having a value of inherited-property-valuewith an argument matching the component. It is an error ifarguments matching a property of a compound datatype are usedin any other way.

The returned "inherited value" isthe computed valueof this property on this object's parent. For example,given the following:

<fo:list-block>  ...  <fo:list-item color="red">    <fo:list-item-body background-color="green">      <fo:block background-color="inherited-property-value(color)">      </fo:block>    </fo:list-item-body>  </fo:list-item></fo:list-block>

The background-color property on the fo:block is assignedthe value "red" because the (computed, after inheritance)value of the color (not background-color) property on thefo:list-item-body that is the parent of the fo:block is "red".

numericlabel-end()

Thelabel-end function returns the calculatedlabel-end value for lists. See the definition in7.30.11 provisional-label-separation.

numericbody-start()

Thebody-start function returns thecalculated body-start value for lists.See the definition in7.30.12 provisional-distance-between-starts.

objectfrom-parent(NCName?)

Thefrom-parent functionreturns a computed value (see5.1 Specified, Computed, and Actual Values, and Inheritance)of the property whose name matchesthe argument specified,or if omitted for the property for whichthe expression is being evaluated.The value returned is that for the parent of theformatting object for which the expression is evaluated.If there is no parent, the value returned is the initialvalue. If the argument specifies a shorthand property and ifthe expression only consists of the from-parent function with anargument matching the property being computed, it isinterpretedas an expansion of the shorthand with each property into whichthe shorthand expands, each having a value of from-parent withan argument matching the property.It is an error if arguments matching a shorthand property are usedin any other way.Similarly, if the argument specifies a property of a compound datatypeand if the expression only consists of the from-parent function withan argument matching the property being computed, it is interpretedas an expansion with each component of the compound property havinga value of from-parent with an argument matching the component.It is an error if arguments matching a property of a compound datatypeare used in any other way.

objectfrom-nearest-specified-value(NCName?)

Thefrom-nearest-specified-value functionreturns a computed value of the property whose name matchesthe argument specified,or if omitted for the property for whichthe expression is being evaluated.The value returned is that for the closest ancestor of theformatting object for which the expression is evaluated onwhich thereis an assignment of the property in the XML result tree in thefo namespace.If there is no such ancestor, the value returned is theinitial value.If the argument specifies a shorthand property and ifthe expression only consists of the from-nearest-specified-value function with anargument matching the property being computed, it isinterpretedas an expansion of the shorthand with each property into whichthe shorthand expands, each having a value of from-nearest-specified-value withan argument matching the property.It is an error if arguments matching a shorthand property are usedin any other way.Similarly, if the argument specifies a property ofa compound datatype and if the expression only consists ofthe from-nearest-specified-value function with an argument matchingthe property being computed, it is interpreted as an expansion witheach component of the compound property having a value offrom-nearest-specified-value with an argument matching the component.It is an error if arguments matching a property of a compound datatypeare used in any other way.

objectfrom-page-master-region(NCName?)

Thefrom-page-master-region function returns thecomputed value of the property whose name matches the argument specified,or if omitted for the property for whichthe expression is being evaluated.

In XSL 1.1 this function may only be used as the value of the"writing-mode" and "reference-orientation" properties.In addition the argument of the functionmust be omitted.If an argument is present, it is an error.

The computed value of the designatedproperty is taken from that property on the layout formatting objectbeing used to generate the region viewport/reference area pair.

If this function is used in an expression on a formatting object,F,that is a descendant of an fo:page-sequence, then the computed valueis taken from the region specification that was used to generatethe nearest ancestor region reference area which has asits descendants the areas returned byF.

If the argument specifies a property of a compound datatype andif the expression only consists of the inherited-property-value functionwith an argument matching the property being computed,it is interpreted as an expansion with each component ofthe compound property having a value of inherited-property-value withan argument matching the component. It is an errorif arguments matching a property of a compound datatype are usedin any other way.

Note:

Consider the following example:

<fo:root><fo:layout-master-set>  <fo:simple-page-master master-name="all-pages">    <fo:region-body region-name="xsl-region-body" margin="0.75in"                    writing-mode="tb-rl" />    <fo:region-before region-name="xsl-region-before" extent="0.75in"/>  </fo:simple-page-master>  <fo:page-sequence-master master-name="default-sequence">    <fo:repeatable-page-master-reference master-reference="all-pages"/>  </fo:page-sequence-master></fo:layout-master-set><fo:page-sequence master-name="default-sequence">  <fo:flow flow-name="xsl-region-body">    <fo:block>        [Content in a language which allows either         horizontal or vertical formatting]    </fo:block>  </fo:flow></fo:page-sequence></fo:root>

This example shows a very simple page layout specification.There is a single simple-page-master, named "all-pages".This page-master has two regions defined upon it, "xsl-region-body"and "xsl-region-before". The region named "xsl-region-before" isa page header that accepts static-content (said content is omittedfor simplicity in this example). The region named "xsl-region-body"is assigned the content of the single fo:flow in the singlefo:page-sequence.

In this example, the definition of "xsl-region-body" hasa "writing-mode" property. As written, the computed value ofthis property, "tb-rl", would have no effect on the writing-modeused to fill the region because the writing-mode value used whengenerating the region viewport/reference area pair would be the computedvalue on the fo:page-sequence that uses the "xsl-region-body" region definitionto generate a region viewport/reference area pair.Since no "writing-mode" property is specified on either the fo:rootnor its child, the fo:page-sequence, the initial value would be usedfor the writing mode for the content that fills the region reference area.The initial value of "writing-mode" is "lr-tb".

If, however, the above line that reads:

<fo:page-sequence master-name="default-sequence">

becomes

<fo:page-sequence master-name="default-sequence"                  writing-mode="from-page-master-region()">

then the computed value of the "writing-mode" property onthe region definitions would be used when instantiating all theviewport/reference area pairs. Thus for the xsl-region-body thespecification on the region definition for "xsl-region-body"would be used andthe content would receive vertical formatting instead ofthe default horizontal formatting.Similarly for the xsl-region-before, the computed value of the"writing-mode"on the region definition would be used, in this case theinitial value of "lr-tb" inherited from fo:root and the content of thexsl-region-before would be formatted horizontally.

objectfrom-table-column(NCName?)

Thefrom-table-column functionreturns the inherited value of the property whose name matches theargument specified,or if omitted for the property for whichthe expression is being evaluated,from the fo:table-column whose column-numbermatches the column for which this expression is evaluated andwhose number-columns-spanned also matches any span.If there is no match for the number-columns-spanned, it ismatchedagainst a span of 1. If there is still no match, the initialvalue is returned.If the argument specifies a shorthand property and if the expressiononly consists of the from-table-column function with an argumentmatching the property being computed, it is interpreted asan expansion of the shorthand with each property into whichthe shorthand expands, each having a value of from-table-column withan argument matching the property. It is an error if arguments matchinga shorthand property are used in any other way. Similarly,if the argument specifies aproperty of a compound datatype and if the expression only consists ofthe from-table-column function with an argument matchingthe property being computed, it is interpreted as an expansionwith each component of the compound property having a value offrom-table-column with an argument matching the component.It is an error if arguments matching a property of a compound datatypeare used in any other way.It is also an error to use this function on formatting objectsthat are not an fo:table-cell or its descendants.

numericproportional-column-width(numeric)

Theproportional-column-width functionreturnsN units of proportional measurewhereN is the argument given to this function.The column widths are first determined ignoring the proportionalmeasures. The difference between the table-width and the sum ofthe column widths is the available proportional width. One unitof proportional measure is the available proportional widthdivided by the sum of the proportional factors.It is an error to use this function on formatting objects otherthan an fo:table-column. It is also an error to use this functionif the fixed table layout is not used.

objectmerge-property-values(NCName?)

Themerge-property-values function returns a value of theproperty whose name matches the argument,or if omitted for the property for whichthe expression is being evaluated.The value returned is the specified value on the lastfo: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 theparent fo:multi-properties is returned.If the argument specifies a shorthand property and if the expressiononly consists of the merge-property-values function with an argumentmatching the property being computed, it is interpreted as an expansionof the shorthand with each property into which the shorthand expands,each having a value of merge-property-values with an argument matchingthe property. It is an error if arguments matching a shorthand propertyare used in any other way. Similarly, if the argumentspecifies a property of a compound datatype and if the expressiononly consists of the merge-property-values function with an argumentmatching the property being computed, it is interpreted asan expansion with each component of the compound property having avalue of merge-property-values with an argument matching the component.It is an error if arguments matching a property of a compound datatypeare used in any other way.

Note:

The test for applicability of a User Agent state isspecified using the "active-state" property.

It is an error to use this function on formatting objects otherthan an fo:wrapper that is the child of an fo:multi-properties.

5.11 Property Datatypes

Certain property values are described in terms of compounddatatypes, in terms of restrictions on permitted number values, orstrings with particular semantics.

The compound datatypes, such as space, are represented in theresult tree as multiple attributes. The names of these attributesconsist of the property name, followed by a period, followed bythe component name. For example a "space-before" property maybe specified as:

space-before.minimum="2.0pt"space-before.optimum="3.0pt"space-before.maximum="4.0pt"space-before.precedence="0"space-before.conditionality="discard"

A short form of compound value specification may be used, in caseswhere the datatype has some <length> components and for the<keep> datatype. In the first case thespecification consists of giving a <length> value to an attributewith a name matching a property name. Such a specification givesthat value to each of the <length> components and the initial valueto all the non-<length> components. For example:

space-before="4.0pt"

is equivalent to a specification of

space-before.minimum="4.0pt"space-before.optimum="4.0pt"space-before.maximum="4.0pt"space-before.precedence="0"space-before.conditionality="discard"

Note:

Since a <percentage> value,that is not interpreted as "auto",is a valid <length> value it may be used in a short form.

For the <keep> datatype thespecification consists of giving a value that is valid for a componentto an attributewith a name matching a property name. Such a specification givesthat value to each of the components.For example:

keep-together="always"

is equivalent to a specification of

keep-together.within-line="always"keep-together.within-column="always"keep-together.within-page="always"

Short forms may be used together with complete forms; the completeforms have precedence over the expansion of a short form.For example:

space-before="4.0pt"space-before.maximum="6.0pt"

is equivalent to a specification of

space-before.minimum="4.0pt"space-before.optimum="4.0pt"space-before.maximum="6.0pt"space-before.precedence="0"space-before.conditionality="discard"

Compound values of properties are inherited as a unit and notas individual components.After inheritance any complete form specificationfor a component is used to set its value.

If the computed value of a corresponding relative property isset from the corresponding absolute property, the latter is usedin determining all the components of the former.

Note:

For example, assuming a block-progression-direction of"top-to-bottom", in a specification of

margin-top="10.0pt"space-before.minimum="4.0pt"

the explicit setting of one of the components of the correspondingrelative property will have no effect.

The following defines the syntax for specifying thedatatypes usable in property values:

<integer>

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.

Note:

A '+' sign is allowed for CSS2 compatibility.

<number>

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.

<length>

A signed length value where a 'length' is a real number plus a unitqualification.A property may define additional constraints on the value.

<length-range>

A compound datatype, with components:minimum, optimum, maximum. Each component is a <length>.If "minimum" is greater than optimum, it will be treated as if it hadbeen set to "optimum".If "maximum" is less than optimum, it will be treated as if it hadbeen set to "optimum".A property may define additional constraints on the values,and additional permitted values and their semantics; e.g. 'auto'or <percentage>.

<length-conditional>

A compound datatype, with components:length, conditionality. The length component is a <length>.The conditionality component is either "discard" or "retain".A property may define additional constraints on the values.

<length-bp-ip-direction>

A compound datatype, with components:block-progression-direction, and inline-progression-direction.Each component is a <length>.A property may define additional constraints on the values.

<space>

A compound datatype, with components:minimum, optimum, maximum, precedence, and conditionality.The minimum, optimum, and maximum components are <length>s.The precedence component is either "force" or an <integer>.The conditionality component is either "discard" or "retain".If "minimum" is greater than optimum, it will be treated as if it hadbeen set to "optimum".If "maximum" is less than optimum, it will be treated as if it hadbeen set to "optimum".

<keep>

A compound datatype, with components:within-line, within-column, and within-page. The value of eachcomponent is either "auto", "always", or an <integer>.

<angle>

A representation of an angle consisting ofan optional '+' or '-' character immediately followed bya <number> immediately followed by an angle unit identifier.Angle unit identifiers are:'deg' (for degrees),'grad' (for grads), and'rad' (for radians).The specified values are normalized to the range 0deg to 360deg.A property may define additional constraints on the value.

<percentage>

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.

<character>

A single Unicode charactervalid in accordance with production [2] of[XML] or[XML 1.1].For example, "c" or "&#x2202;".

<string>

A sequence of characters.

Note:

Given the allowable Expression Value Conversions(5.9.12 Expression Value Conversions),a property value of type <string> must be a quoted value,an NCName, or a expression that evaluates to a <string>;anything else (e.g., an integer) is an error.An implementation may recover from this error by treating theunevaluated property value as a string.

<name>

A string of characters representing a name.It must conform to the definition of anNCName in[XML Names] or[XML Names 1.1].

<family-name>

A string of characters identifying a font.

<color>

Either a string of characters representing a keyword or a colorfunction defined in5.10.2 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.

<country>

A string of characters conforming to an ISO 3166([ISO3166-1],[ISO3166-2], and[ISO3166-3])country code.

<language>

A string of characters conforming to either a[ISO639-2] 3-letter terminologyor bibliographic codeor a[ISO639] 2-letter coderepresenting the name of a language.

<script>

A string of characters conforming to anISO 15924 script code.

<id>

A string of characters conformingto the definition of anNCName in[XML Names] or[XML Names 1.1]and is unique within the stylesheet.

<idref>

A string of characters conformingto the definition of anNCName in[XML Names] or[XML Names 1.1] andthat matches an ID property value used within the stylesheet.

<uri-specification>

A sequence of characters that is"url(", followed by optionalwhite space, followed by an optional single quote(') or double quote (") character, followed byan IRI reference as defined in[RFC3987],followed by an optional single quote (') or double quote (")character, followed by optional white space, followed by")". The two quote characters must be the same and must both bepresent or absent. If the IRI reference contains a single quote, thetwo quote characters must be present and be double quotes.

Note:

The definition differs from that in CSS2in that this Recommendation allows IRIs whereas CSS2only allows URIs.

<shape>

"rect (" <top> <right> <bottom> <left> ")"where <top>, <bottom> <right>, and <left>specify offsets from the respective sides of the content rectangle ofthe area.

<top>, <right>, <bottom>, and <left>may either have a <length> value or 'auto'.Negative lengths are permitted. The value 'auto' means that a given edgeof the clipping region will be the same as the edge of thecontent rectangle of the area (i.e., 'auto' means the same as '0pt'.)

<time>

A <number> immediately followed by a time unit identifier.Time unit identifiers are: 'ms' (for milliseconds) and 's' (for seconds).

<frequency>

A <number> immediately followed by a frequency unit identifier.Frequency unit identifiers are: 'Hz' (for Hertz) and 'kHz' (for kilo Hertz).

6 Formatting Objects

6.1 Introduction to Formatting Objects

The refined formatting object tree describes one or moreintended presentations ofthe information within this tree. Formatting is the processwhich converts the description into a presentation. See3 Introduction to Formatting. The presentationis represented, abstractly, by an area tree, as defined inthe area model. See4 Area Model.Each possible presentationis represented by one or more area trees in which the information inthe refined formatting object tree is positioned on a twoand one-half dimensional surface.

There are three kinds of formatting objects: (1) those that generateareas, (2) those that return areas, but do not generatethem, and (3) those that are used in the generation ofareas. The first and second kinds are typically calledflow objects. The third kind is either alayout object or anauxiliaryobject. Thekind of formatting object is indicated by the terminology used withthe object. Formatting objects of the first kind are said to "generateone or more areas". Formatting objects of the second kind are said to"return one or more areas". Formatting objects of the first kind mayboth generate and return areas. Formatting objects of the third kindare "used in the generation of areas"; that is, they act likeparameters to the generation process.

6.1.1 Definitions Common to Many Formatting Objects

This categorization leads to defining two traits which characterizethe relationship between an area and the formatting objects whichgenerate and return that area. These traits aregenerated-by andreturned-by.

The value of thegenerated-by trait is asingle formattingobject. A formatting objectF is defined togenerate an areaAif the semantics ofF specify the generation ofone or more areas andA is one of the areas thusgenerated, or is a substituted form of one of the areas thusgenerated, as specified in section4.7.2 Line-building.

In the case of substituted glyph-areas, the generating formattingobject is deemed to be the formatting object which generated theglyph-area which comes first in the sequence of substitutedglyph-areas. In the case of an inserted glyph-area (e.g., anautomatically-generated hyphen) the generating formatting object isdeemed to be the generating formatting object of the last glyph-areapreceding the inserted glyph-area in the pre-ordertraversal of the area tree.

The value of thereturned-by trait is a setof pairs, where eachpair consists of a formatting object and a positive integer. Theinteger represents the position of the area in the ordering of allareas returned by the formatting object.

A formatting objectF is defined toreturnthe sequence ofareasA,B,C, ... ifthe pair(F,1) is a member of thereturned-by trait ofA, the pair(F,2) is a member of thereturned-by trait ofB, the pair(F,3) is a member of thereturned-by trait ofC, ...

If an area is a member of the sequence of areas returned by aformatting object, then either it was generated by the formattingobject or it was a member of the sequence of areas returned by a childof that formatting object. Not all areas returned by a child of aformatting object need be returned by that formatting object. Aformatting object may generate an area that has, as some ofits children areas, areas returned by the children of thatformattingobject. These children (in the area tree) of the generated area arenot returned by the formatting object to which they were returned.

A set of nodes in a tree is alineage if:

  • there is a nodeN in the set such that all thenodes in the set are ancestors ofN, and

  • for every nodeN in the set, if the set containsan ancestor ofN, it also contains the parent ofN.

The set of formatting objects that an area is returned by is alineage.

Areas returned by a formatting object may be eithernormal orout-of-line. Normal areas represent areas inthe"normal flowof text"; that is, they become area children of the areas generated bythe formatting object to which they are returned. Normal areas have areturned-by lineage of size one. There isonly one kind of normal area.

Out-of-line areas are areas used outside the normal flow of texteither because they are absolutely positioned or they are part of afloat or footnote. Out-of-line areas may have areturned-by lineage of size greater than one.

Thearea-class trait indicates which class,normal orout-of-line, an area belongs to. For out-of-line areas, it alsoindicates the subclass of out-of-line area. The values for this traitare: "xsl-normal", "xsl-absolute", "xsl-footnote","xsl-side-float", or "xsl-before-float".An areais normal if and only if the value of thearea-class trait is"xsl-normal"; otherwise, the area is an out-of-linearea. (See section4.2.5 Stacking Constraints.)

The areasreturned-by a given formatting object are ordered asnoted above. This ordering defines an ordering on the sub-sequence ofareas that are of a givenarea-class, such as the sub-sequenceof normal areas. An areaA precedes an areaB in the sub-sequence ifand only if areaA precedes areaB in the areasreturned-by theformatting objects.

Areference-area chainis defined as a sequenceof reference-areas that is either generated by the same formattingobject that is not a page-sequence formatting object, or that consistsof the region reference-areas or normal-flow-reference-areas(see6.4.14 fo:region-body)generated using region formatting objects assigned to the sameflow (see6.4.1.4 Flows and Flow Mapping).The reference-areas in the sequence are saidto be "contained" by the reference-area chain, and they have thesame ordering relative to each other in the sequence as they havein the area tree, using pre-order traversal order of the area tree.

6.2 Formatting Object Content

The content of a formatting object is described using XMLcontent-model syntax. In some cases additional constraints, not expressiblein XML content models, are given in prose.

The parameter entity, "%block;" in the content models below,contains the following formatting objects:

     block     block-container     table-and-caption     table     list-block

The parameter entity, "%inline;" in the content models below,contains the following formatting objects:

     bidi-override     character     external-graphic     instream-foreign-object     inline     inline-container     leader     page-number     page-number-citation     page-number-citation-last     scaling-value-citation     basic-link     multi-toggle     index-page-citation-list

The following formatting objects are "neutral" containers andmay be used,provided that the additional constraints listedunder each formatting object are satisfied,anywhere where #PCDATA, %block;, or %inline; are allowed:

     multi-switch     multi-properties     index-range-begin     index-range-end     wrapper     retrieve-marker

The following formatting objects are "neutral" containers that maybe used as described by the constraints listedunder each formatting object:

     retrieve-table-marker

The following formatting objects define "points" and may be usedanywhere as a descendant of fo:flow or fo:static-content:

     change-bar-begin     change-bar-end

The following "out-of-line" formatting objectsmay be used anywhere where #PCDATA, %block;, or %inline; are allowed(except as a descendant of any "out-of-line"formatting object):

     float

The following "out-of-line" formatting objectsmay be used anywhere where #PCDATA or %inline; are allowed(except as a descendant of any "out-of-line"formatting object):

     footnote

6.3 Formatting Objects Summary

basic-link

The fo:basic-link is used for representing the start resource of a simplelink.

bidi-override

The fo:bidi-override inline formatting object is usedwhere it is necessary to override the defaultUnicode-bidirectional-algorithmdirection for different (or nested) inline scriptsin mixed-language documents.

block

The fo:block formatting object is commonly used for formatting paragraphs,titles, headlines, figure and table captions,etc.

block-container

The fo:block-container flow object is used togenerate a block-level reference-area.

bookmark

The fo:bookmark formatting object is used to identifyan access point, by name, and to specify where thataccess point is within the current document or anotherexternal document. A given bookmark may be furthersubdivided into a sequence of (sub-)bookmarks to asmany levels as the authors desire.

bookmark-title

The fo:bookmark-title formatting object is used to identify,in human readable form, an access point.

bookmark-tree

The fo:bookmark-tree formatting object is used to hold a list ofaccess points within the document such as a table of contents, a listof figures or tables, etc. Each access point is represented by a bookmark.

change-bar-begin

The fo:change-bar-begin is used to indicate the beginning of a"change region" that is ended by its matching fo:change-bar-end.The change region is decorated with a change bar down eitherthe start or end edge of the column. The style of the change bar isdetermined by the value of various change bar related properties.

change-bar-end

The fo:change-bar-end is used to indicate the end of a"change region" that is started by its matching fo:change-bar-begin.

character

The fo:character flow object represents a character thatis mapped toa glyph for presentation.

color-profile

Used to declare a color profile for a stylesheet.

conditional-page-master-reference

The fo:conditional-page-master-reference is used to identify apage-master that is to be used when the conditions on its use aresatisfied.

declarations

Used to group global declarations for a stylesheet.

external-graphic

The fo:external-graphic flow object is used for agraphic where the graphics data resides outside of theXML result tree in the fo namespace.

float

The fo:float serves two purposes. It can be used so that during the normalplacement of content, some related content is formatted into a separate areaat beginning of the page (or of some following page) where it is availableto be read without immediately intruding on the reader.Alternatively, it can be used when an area is intended to floatto one side, with normal content flowing alongside.

flow

The content of the fo:flow formatting object is asequence offlow objects that provides the flowing text content that isdistributed into pages.

flow-assignment

The fo:flow-assignment is used to specify the assignment of onesequence of flows to a sequenceof regions.

flow-map

The fo:flow-map is used to specify the assignment of flows toregions.

flow-name-specifier

The fo:flow-name-specifieris used to specify one flow in a source-list.

flow-source-list

The fo:flow-source-list isused to specify the sequence of flows to assign in a particularfo:flow-assignment.

flow-target-list

The fo:flow-target-list isused to specify the sequence of regions to which flows are assigned ina particular fo:flow-assignment.

folio-prefix

The fo:folio-prefix formatting object specifiesa static prefix for the folio numbers within a page-sequence.

folio-suffix

The fo:folio-suffix formatting object specifiesa static suffix for the folio numbers within a page-sequence.

footnote

The fo:footnote is used to produce a footnote citation and the corresponding footnote.

footnote-body

The fo:footnote-body is used to generate the content of the footnote.

index-key-reference

The fo:index-key-reference formatting object is used to generatea set of cited page items for all the occurrences of the specifiedindex-key.

index-page-citation-list

The fo:index-page-citation-list formatting object is used togroup together the sets of cited page items generated by itsfo:index-key-reference children.The ultimate effect of thefo:index-page-citation-list is to generate a formatted list ofpage numbers and ranges.

index-page-citation-list-separator

The fo:index-page-citation-list-separator formatting object specifiesthe formatting objects used to separate singleton page numbers orpage number ranges in the generated list of page numbers.

index-page-citation-range-separator

The fo:index-page-citation-range-separator formatting object specifiesthe formatting objects used to separate two page numbers forming arange in the generated list of page numbers.

index-page-number-prefix

The fo:index-page-number-prefix formatting object specifiesa static prefix for the cited page items created byfo:index-key-reference.

index-page-number-suffix

The fo:index-page-number-suffix formatting object specifiesa static suffix for the cited page items created byfo:index-key-reference.

index-range-begin

The fo:index-range-begin formatting object is used to indicatethe beginning of an "indexed range" associated with an index key.The index range is ended by a corresponding fo:index-range-end.

index-range-end

The fo:index-range-end is used to indicate the end ofan "indexed range" that is started by its matchingfo:index-range-begin.

initial-property-set

The fo:initial-property-set specifies formatting propertiesfor the first line of an fo:block.

inline

The fo:inline formatting object is commonly used for formattinga portion of text with a background or enclosing it in a border.

inline-container

The fo:inline-container flow object is used togenerate an inline reference-area.

instream-foreign-object

The fo:instream-foreign-object flow object is used for an inlinegraphic or other "generic" objectwhere the object data resides as descendants of thefo:instream-foreign-object.

layout-master-set

The fo:layout-master-set is a wrapper around all masters used in thedocument.

leader

The fo:leader formatting object is used to generate leaders consistingeither of a rule or of a row of a repeating character or cyclicallyrepeating pattern of characters that may be used for connecting twotext formatting objects.

list-block

The fo:list-block flow object is used to format a list.

list-item

The fo:list-item formatting object contains the label and thebody of an item in a list.

list-item-body

The fo:list-item-body formatting object contains thecontentof the body of a list-item.

list-item-label

The fo:list-item-label formatting object contains thecontentof the label of a list-item; typically used to either enumerate,identify, or adorn the list-item's body.

marker

The fo:marker is used in conjunction withfo:retrieve-marker or fo:retrieve-table-markerto produce running headers or footers.

multi-case

The fo:multi-case is used to contain (withinan fo:multi-switch) each alternative sub-tree of formattingobjects among which the parent fo:multi-switch will chooseone to show and will hide the rest.

multi-properties

The fo:multi-properties is used to switch between two or more property sets thatare associated with a given portion of content.

multi-property-set

The fo:multi-property-set is used to specify an alternativeset of formattingproperties that, dependent on a User Agent state, are applied to the content.

multi-switch

The fo:multi-switch wraps the specification ofalternative sub-trees of formatting objects (each sub-treebeing within an fo:multi-case), and controls the switching(activated via fo:multi-toggle) from one alternative toanother.

multi-toggle

The fo:multi-toggle is used within an fo:multi-case toswitch to anotherfo:multi-case.

page-number

The fo:page-number formatting object is used to representthecurrent page-number.

page-number-citation

The fo:page-number-citation is used to reference thepage-number for the page containing the first normalarea returned by the cited formattingobject.

page-number-citation-last

The fo:page-number-citation-last is used to reference thepage-number for the last page containing the anarea that is (a) returned by the cited formattingobject and (b) has an area-class that is consistent with the specified page-citation-strategy.

page-sequence

The fo:page-sequence formatting object is used to specify how tocreate a (sub-)sequence of pages within a document; for example, achapter of a report. The content of these pages comes from flowchildren of the fo:page-sequence.

page-sequence-master

The fo:page-sequence-master specifies sequences of page-mastersthat are used when generating a sequence of pages.

page-sequence-wrapper

The fo:page-sequence-wrapper formatting object is used to specifyinherited properties for a group of fo:page-sequence formatting objects.It has no additional formatting semantics.

region-after

This region definesa viewport that is located on the "after" side of fo:region-bodyregion.

region-before

This region definesa viewport that is located on the "before" side of fo:region-bodyregion.

region-body

This region specifies aviewport/reference pair that is located in the "center" of thefo:simple-page-master.

region-end

This region definesa viewport that is located on the "end" side of fo:region-body region.

region-name-specifier

The fo:region-name-specifieris used to specify one region in a target-list.

region-start

This region definesa viewport that is located on the "start" side of fo:region-bodyregion.

repeatable-page-master-alternatives

Anfo:repeatable-page-master-alternativesspecifies a sub-sequence consisting ofrepeated instances of a set of alternative page-masters.The number of repetitions may be bounded orpotentially unbounded.

repeatable-page-master-reference

Anfo:repeatable-page-master-referencespecifies a sub-sequence consisting ofrepeated instances of a single page-master. The number of repetitionsmay be bounded or potentially unbounded.

retrieve-marker

The fo:retrieve-marker is used inconjunction with fo:marker to produce running headers or footers.

retrieve-table-marker

The fo:retrieve-table-marker is used in conjunction with fo:marker toproduce table-headers and table-footers whose content can change overdifferent pages, different regions or different columns.

root

The fo:root node is the top node of an XSL result tree.This tree is composed of formatting objects.

scaling-value-citation

The fo:scaling-value-citation is used to obtain thescale-factor applied to the cited fo:external-graphic.

simple-page-master

The fo:simple-page-master is used in the generation of pages andspecifies the geometry of the page. The page is subdivided intoregions.

single-page-master-reference

An fo:single-page-master-reference specifies a sub-sequence consistingof a single instance of a single page-master.

static-content

Thefo:static-content formatting object holds a sequence or atree offormatting objects that is to be presented in a singleregionor repeated in like-named regions on one or more pages in the page-sequence.Its common use is for repeating or running headers and footers.

table

The fo:table flow object is used for formatting thetabular materialof a table.

table-and-caption

The fo:table-and-caption flow object is used forformatting a tabletogether with its caption.

table-body

The fo:table-body formatting object is used to containthe contentof the table body.

table-caption

The fo:table-caption formatting objectis used to contain block-level formatting objects containingthe caption for the table only when using the fo:table-and-caption.

table-cell

The fo:table-cell formatting object is used to groupcontent to beplaced in a table cell.

table-column

The fo:table-column formatting object specifiescharacteristicsapplicable to table cells that have the same column and span.

table-footer

The fo:table-footer formatting object is used to containthe contentof the table footer.

table-header

The fo:table-header formatting object is used to containthe contentof the table header.

table-row

The fo:table-row formatting object is used to grouptable-cells intorows.

title

The fo:title formatting object is used to associate a title with agiven page-sequence. This title may be used by an interactive User Agent toidentify the pages. For example, the content of the fo:title can beformatted and displayed in a "title" window or in a "tool tip".

wrapper

The fo:wrapper formatting object is used tospecifyinherited properties for a group of formatting objects.It has no additional formatting semantics.

6.4 Declarations and Pagination and Layout Formatting Objects

6.4.1 Introduction

The root node of the formatting object tree must be anfo:rootformatting object. The children of the fo:root formatting object area single fo:layout-master-set, an optional fo:declarations,an optional fo:bookmark-tree,and a sequence of one or morefo:page-sequences and/or fo:page-sequence-wrapper elements.The fo:layout-master-set defines the geometry andsequencing of the pages; the children of the fo:page-sequences, whichare calledflows (contained in fo:flow andfo:static-content), provide the content that is distributedinto the pages. The fo:declarations object is a wrapper for formatting objectswhose content is to be used as a resource to the formattingprocess. The process of generating the pages is done automaticallyby the XSL processor formatting the result tree.

The children of the fo:layout-master-set are the pagination and layoutspecifications and flow-map specifications.There are two types of pagination and layoutspecifications: page-masters and page-sequence-masters. Page-mastershave the role of describing the intended subdivisions of a page andthe geometry of these subdivisions. Page-sequence-masters have therole of describing the sequence of page-masters that will be used togenerate pages during the formatting of an fo:page-sequence.Flow-maps have the role of assigning flows to regions.

6.4.1.1 Page-sequence-masters

Each fo:page-sequence-master characterizes a set of possible sequencesof page-masters. For any given fo:page-sequence, only one of thepossible set of sequences will be used. The sequence that is used isany sequence that satisfies the constraints determined bythe individual page-masters, the flows which generate pages from thepage-masters, and the fo:page-sequence-master itself.

The fo:page-sequence-master is used to determine which page-mastersare used and in which order. The children of thefo:page-sequence-master are a sequence of sub-sequence specifications.The page-masters in a sub-sequence may be specified by a referenceto a single page-master or as a repetition of one or morepage-masters. For example, a sequence might begin with severalexplicit page-masters and continue with a repetition of some otherpage-master (or masters).

The fo:single-page-master-reference is used to specify a sub-sequenceconsisting of a single page-master.

There are two ways to specify a sub-sequence that is a repetition. Thefo:repeatable-page-master-reference specifies a repetition of a singlepage-master. The fo:repeatable-page-master-alternatives specifiesthe repetition of a set of page-masters. Which of the alternativepage-masters is used at a given point in the sub-sequence isconditional 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 ofrepetitions. If this property is not specified, there is no limit onthe number of repetitions.

6.4.1.2 Page-masters

A page-master is a master that isused to generate apage. A page is a viewport/referencepair in which the viewport-area is a child of the area treeroot. Apage-viewport-area is defined to be the viewport-area of apage, and apage-area is defined to be the unique child of apage-viewport-area.

The page-viewport-area is defined by the output medium; the page-areaholds the page contents and has the effect of positioning the pagecontents on the output medium.

A single page-master may be used multiple times. Each time it is usedit generates a single page; for example, a page-master that isreferenced from an fo:repeatable-page-master-reference will be usedby the fo:page-sequence to generateone page for each occurrence of the reference in the specifiedsub-sequence.

Note:

When pages are used with a User Agent such as a Webbrowser, it is common that the each document has only onepage. Theviewport used to view the page determines the size of the page. Whenpages are placed on non-interactive media, such as sheets of paper,pages correspond to one or more of the surfaces of the paper. The sizeof the paper determines the size of the page.

In this specification, there is only one kind of page-master, thefo:simple-page-master. Future versions of this specification may addadditional kinds of page-masters.

An fo:simple-page-master has, as children, specifications for one or moreregions.

A region specification is used as a master, theregion-master,in generating a viewport/reference pair consisting of aregion-viewport-area and aregion-reference-area.The region-viewport-area is always a childof a page-area generated using the parent of the region-master.

Note:

The regions on the page are analogous to "frames" in anHTML document. Typically, at least one of these regions is ofindefinite length in one of its dimensions. For languages with a lr-tb(or rl-tb) writing-mode, this region is typically of indefinite lengthin the top-to-bottom direction. The viewport represents thevisiblepart of the frame. The flows assigned to the region are viewed by scrollingthe region reference-area through the viewport.

Each region is defined by a region formatting object. Eachregion formatting object has a name and a definite position. Inaddition, the region's height or width is fixed and the otherdimension may be either fixed or indefinite. For example, a regionthat is the body of a Web page may have indefinite height.

The specification of the region determines the size and position ofregion-viewport-areas generated using the region formatting object.The positioning of the viewport is relative to its page-area parent.

For version 1.1 of this Recommendation, a page-master willconsist of the following regions: "region-body" (one or more)and four other regions,one on each side of the body. To allow the side regions to correspondto 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 correspondsto a "right-sidebar" in the "lr-tb" writing-mode). It isexpected that a future version of the Recommendation will introduce amechanism that allows a page-master to contain an arbitrary number ofarbitrarily sized and positioned regions.

Some types of region have conditional sub-regions associated with them, and theassociated region-reference-areas are divided up by having child areascorresponding to the sub-regions, including a "main-reference-area" forthe region.For region-masters to whichthe column-count property applies,the main-reference-area is further subdivided by having child-areasdesignated as "span-reference-areas" whose number depends upon thenumber of spans (i.e. block-areas with span="all")occurring on the page. These in turn are subdivided by havingchild-areas designated as "normal-flow-reference-areas",whose number depends on the number of columns specified.

6.4.1.3 Page Generation

Pages are generated by the formatter's processing of fo:page-sequences.As noted above, each page is a viewport/reference pair in which theviewport-area is a child of the area tree root. Each page is generated usinga page-master to define the region-viewport-areasand region-reference-areas that correspond to the regions specified bythat page-master.

Each fo:page-sequence references either an fo:page-sequence-master ora page-master. If the reference is to a page-master, this isinterpreted as if it were a reference to an fo:page-sequence-masterthat repeats the referenced page-master an unbounded number oftimes. An fo:page-sequence references a page-master ifeither the fo:page-sequence directly references the page-master viathe "master-reference" property or that property references anfo:page-sequence-master that references the page-master.

6.4.1.4 Flows and Flow Mapping

There are two kinds offlows: fo:static-content and fo:flow. Anfo:static-content flow holds content, such as the text that goesinto headers and footers, that is repeated on many of the pages. Anfo:flow flow holds content that is distributed across a sequence ofpages. The processing of the fo:flow flows is what determines how manypages are generated to hold the fo:page-sequence. Thefo:page-sequence-master is used as the generator of the sequence ofpage-masters into which the flow children content is distributed.

The children of a flow are a sequence of block-level flow objects.Each flow has a name that is given by its "flow-name" property.No two flows that are children of the same fo:page-sequencemay have the same name.

The assignment of flows to regions on a page-master is determined byaflow-map. The flow-map is an associationbetween the flow children of the fo:page-sequence and regions definedwithin the page-masters referenced by that fo:page-sequence.

Flow-maps are specified by fo:flow-map formattingobjects. An fo:page-sequence uses the flow-mapindicated by its flow-map-reference property whenassigning its flows to regions. If theflow-map-reference property is not specified for thepage-sequence then the implicit flow-map is used forthat page-sequence, as in version 1.0of this Recommendation. The "flow-name" property of a flow specifies towhich region that flow is assigned. Each region has a "region-name"property. The flow-map assigns a flow to the region that has the samename.

To avoid requiring users to generate region-names, the regions all havedefault values for the "region-name" property. The region-body,region-before, region-after, region-start, and region-end have thedefault names "xsl-region-body", "xsl-region-before","xsl-region-after", "xsl-region-start", and "xsl-region-end",respectively. It is an error for a page master to have two region-bodydescendants with the default region-name.

In addition, an fo:static-content formatting object may have a"flow-name" property value of "xsl-before-float-separator" or"xsl-footnote-separator". If a conditional sub-region of the region-bodyis used to generate a reference-area on a particular page, thefo:static-content whose name corresponds to the conditional sub-regionshall be formatted into the reference-area associated with thesub-region, as specified in6.12.1.3 Conditional Sub-Regions.

6.4.1.5 Constraints on Page Generation

The areas that are descendants of a page-area are constrained by thepage-master used to generate the page-area and the flows that are assignedto the regions specified on the page-master.For fo:flow flows, the areas generated by the descendants of the floware distributed across the pages in the sequence according to theflow-map in effect for that page-sequence.For fo:static-contentflows, the processing of the flow is repeated for each page generatedusing a page-master having the region to which the flow is assignedwith two exceptions:for an fo:static-content with aflow-name ofxsl-before-float-separator, the processingis repeated only for those page-reference-areas which have descendantareas with an area-class ofxsl-before-float,and for an fo:static-content with aflow-name ofxsl-footnote-separator, the processingis repeated only for those page-reference-areas which have descendantareas with an area-class ofxsl-footnote.

6.4.1.6 Pagination Tree Structure

The result tree structure is shown below.

Tree representation of the Formatting Objects for pagination   [D]

Tree Representation of the Formatting Objects for Pagination

6.4.1.7 Example Flow Maps

A typical use of flow maps are where there are two or more flowsthat each, independently of each other, flow into separate regionson the pages. Another one is when the flow is flowed from one regioninto another region on the same page and continuing onto further pages.A third use is when two or more flows are "concatenated";each flow beginning where the previous one ends.

6.4.1.7.1 Two flows mapping into their own regions

A->R; B->S   [D]

Mapping flow A to region R, flow B to region S

In this case the flows are specified as:

<fo:flow flow-name="A">  <fo:block>In the second century ofthe Christian Aera, the empire of Rome ... </fo:block></fo:flow>

and

<fo:flow flow-name="B">  <fo:block>Quo usque tandem abutere, Catilina, patientia nostra? ...</fo:block></fo:flow>

The regions are specified withregion-name="R"andregion-name="S", respectively, and theflow map is specified as follows:

<fo:flow-map flow-map-name="E1">  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier flow-name-reference="A"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier region-name-reference="R"/>    </fo:flow-target-list>  </fo:flow-assignment>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier flow-name-reference="B"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier region-name-reference="S"/>    </fo:flow-target-list>  </fo:flow-assignment></fo:flow-map>
6.4.1.7.2 A flow mapping into two regions

A->R1,R2   [D]

Mapping flow A to regions R1 and R2

In this case the flow map is specified as follows:

<fo:flow-map flow-map-name="E2">  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier flow-name-reference="A"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier region-name-reference="R1"/>      <fo:region-name-specifier region-name-reference="R2"/>    </fo:flow-target-list>  </fo:flow-assignment></fo:flow-map>
6.4.1.7.3 Two flows mapping into a region

A,B->R   [D]

Mapping flows A and B to region R

In this case the flow map is specified as follows:

<fo:flow-map flow-map-name="E3">  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier flow-name-reference="A"/>      <fo:flow-name-specifier flow-name-reference="B"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier region-name-reference="R"/>    </fo:flow-target-list>  </fo:flow-assignment></fo:flow-map>
6.4.1.7.4 Two flows mapping into two regions

A,B->R1,R2   [D]

Mapping flows A and B to regions R1 and R2

In this case the flow map is specified as follows:

<fo:flow-map flow-map-name="E4">  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier flow-name-reference="A"/>      <fo:flow-name-specifier flow-name-reference="B"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier region-name-reference="R1"/>      <fo:region-name-specifier region-name-reference="R2"/>    </fo:flow-target-list>  </fo:flow-assignment></fo:flow-map>

6.4.2 fo:root

Common Usage:

This is the top node of the formatting object tree. It holds anfo:layout-master-set formatting object (which holds all masters usedin the document), an optional fo:declarations,an optional fo:bookmark-tree,and one or more fo:page-sequence or fo:page-sequence-wrapper objects. Eachfo:page-sequence represents a sequence of pages that result fromformatting the content children of the fo:page-sequence.An fo:page-sequence-wrapper can also occur as the child of fo:root.An fo:page-sequence-wrapper can contain zero or morefo:page-sequence objects or fo:page-sequence-wrappers.The fo:page-sequence-wrapper is used to specify inherited propertiesfor the fo:page-sequence objects it wraps; it has no additionalformatting semantics.

Note:

A document can contain multiple fo:page-sequences. For example,each chapter of a document could be a separate fo:page-sequence; thiswould allow chapter-specific content, such as the chaptertitle, to be placed within a header or footer.

Areas:

Page-viewport-areas are returned by the fo:page-sequence children of thefo:root formatting object. The fo:root does not generate any areas.

Constraints:

The children of the root of the area tree consist solely of, and totally of, thepage-viewport-areas returned by the fo:page-sequence children of thefo:root. The set of all areas returned by the fo:page-sequence childrenisproperly ordered. (See Section4.7.1 General Ordering Constraints.)

Contents:

(layout-master-set,declarations?,bookmark-tree?,(page-sequence|page-sequence-wrapper)+)

It is an error if there is not at least one fo:page-sequencedescendant of fo:root.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.27.11 media-usage

6.4.3 fo:declarations

Common Usage:

The fo:declarations formatting object is used to group global declarations for a stylesheet.

Areas:

The fo:declarations formatting object does not generateor return any areas.

Constraints:

None.

Contents:

(color-profile)*

The fo:declarations formatting object may haveadditional 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 fortheir namespace(s).

6.4.4 fo:color-profile

Common Usage:

The fo:color-profile formatting object is used to declarean ICC Color Profile for a stylesheet.The color-profile is referenced again via the name specified inthe "color-profile-name" property.

The color-profile is identified by the URI specified in the "src"property value. This URI may identify an internally recognizedcolor-profile or it may point to a ICC Color Profile encodingthat should be loaded and interpreted.

When the color-profile is referenced (e.g., via thergb-icc function5.10.2 Color Functions), the following rules are used:

  1. If the color-profile is available, the color valueidentified from the color-profile should be used.

  2. If the color-profile is not available,the sRGB([sRGB]) fallback must be used.

Areas:

The fo:color-profile formatting object does not generateor return any areas.

Constraints:

None.

Contents:

EMPTY

The following properties apply to this formatting object:

7.30.16 src
7.18.2 color-profile-name
7.18.3 rendering-intent

6.4.5 fo:page-sequence

Common Usage:

The fo:page-sequence formatting object is used to specify how tocreate a (sub-)sequence of pages within a document; for example, achapter of a report. The content of these pages comes from flowchildren of the fo:page-sequence as assigned by the flow-map in effectfor thatfo:page-sequence. The layout of these pages comes fromthe fo:page-sequence-master or page-masterreferenced by themaster-referencetrait on the fo:page-sequence. The sequence of areas returned byeach of the flow-object children of the fo:page-sequence aremade descendants of the generated pages as described below.

Areas:

The fo:page-sequence formatting object generates a sequence ofviewport/reference pairs, and returns the page-viewport-areas. Foreach page-reference-area, and each region specified in the page-master used togenerate that page-reference-area, the fo:page-sequence object also generatesthe viewport/reference pair for the occurrence of that region in thatpage-reference-area, and may generate a before-float-reference-area,footnote-reference-area,and main-reference-area, and one or more normal-flow-reference-areas.The generation of these further areas is described in the descriptionsof the fo:simple-page-master, region-masters and fo:flow-map.It may also generate a title-area.

All areas generated by an fo:page-sequence havearea-class "xsl-absolute".

The page-viewport-areas identify one of the sides as a page binding edge.This recommendation does not specify the mechanism for selectingwhich side is the page binding edge.

Note:

If the User Agent can determine that the result is to be bound,then the page binding edge of any given page is the edge on whichthat page is intended to be bound.

Commonly the page binding edge of a page with an odd folio-number is thestart-edge of that page and the binding-edge of a page with an evenfolio-number is the end-edge of that page.

The binding can be a simple as stapling or may be as complexas producing a book using an imposition scheme.

For each formatting object descendantD under the change bar influenceof a given fo:change-bar-begin objectF (as defined in6.13.2 fo:change-bar-begin),the fo:page-sequence generates a "change bar area"for each areaA returned byD, as a child of the ancestor region-area ofA. Each change bar area is of class xsl-absolute, with zero margin andpadding, with border-end-color given by the change-bar-color ofF, withborder-end-style given by the change-bar-style ofF, withborder-end-width given by the change-bar-width ofF, with inlineprogression-dimension equal to zero and block-progression-dimensionequal to the dimension ofA parallel to the block-progression-dimensionof the region-area.

The change bar area is positioned to be adjacent to the nearest ancestorareaC ofA which is either a normal-flow-reference-area orregion-reference-area. The change bar area is aligned withA and liesaway fromC by a distance given by the change-bar-offset ofF, withrespect to the start-edge or the end-edge ofC as determined by thechange-bar-placement trait ofF.

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-areasare determined by the values of the "reference-orientation" and"writing-mode" properties of the fo:page-sequence.

Note:

The value may be given as an explicit valueor the from-page-master-region function may be used to obtain the valuespecified on the layout formatting object being used to generatethe region viewport/reference area pair.

Constraints:

Each page-viewport-area/page-reference-area pair is generated using apage-master that satisfies the constraints of the page-sequence-masteridentified by themaster-reference trait of thefo:page-sequence or a page-master that was directly identified by themaster-reference trait. Theregion-viewport-area children of such a page-reference-area must correspondto the regions that are children of that page-master.

The areas generated by the fo:page-sequence have as theirdescendants the areas returned by the flows that are children of thefo:page-sequence.

The areas returned to the fo:page-sequence by a flow must satisfy fivetypes of constraints:

  • Completeness. All areas returned by formatting objectdescendants of the flow children of the fo:page-sequencebecome descendants of areas generated by the fo:page-sequence,with the exception of glyph-areas subject to deletion or substitution as in Sections4.7.2 Line-building and4.7.3 Inline-building.

  • Flow-map association. The areas returned from aflow child of thefo:page-sequence must be descendants of region-reference-areas generatedusing regions to which the flow is assigned by the flow-map in effect.

    Areas returned from an fo:static-content with aflow-nameofxsl-before-float-separatorbecome children of thebefore-float-reference-area of an area associated to an fo:region-body,following all sibling areas of area-classxsl-before-float. Areasreturned from an fo:static-content with aflow-name ofxsl-footnote-separator become children ofthe footnote-reference-area of an area associated to an fo:region-body,preceding all sibling areas ofarea-classxsl-footnote.

    If the flow-map-reference is specified, the flow-map in effect is theone described by the fo:flow-map child of the fo:layout-master-sethaving a flow-map-name matching the specified value offlow-map-reference on the fo:page-sequence. If the flow-map-referenceis not specified, the flow-map in effect is the implicit flow-mapshown in6.4.22 fo:flow-map.

  • Area-class association. Areas returned byflow children of an fo:page-sequence are distributed as follows:

    • All areas of area-classxsl-footnote,and all areas returned from an fo:static-content with a flow-name ofxsl-footnote-separator,must be descendants of a footnote-reference-area;

    • all areas of area-classxsl-before-float,and all areas returned from an fo:static-content with a flow-name ofxsl-before-float-separator,must be descendants of a before-float-reference-area;

    all other areas must be descendants of a region-reference-area andfurther they must be descendants of a main-reference-area child ofthat region-reference-area if it has one.

  • Stacking. The stackable areas of a given class returnedby children of each flow are properly stacked within the appropriate reference-area,as described above.

  • Flow-assignment ordering.The default ordering constraint of4.7.1 General Ordering Constraintsdoes not apply to the fo:page-sequence.The default ordering constraint applies to the flow object childreninside each fo:flow; special ordering constraints apply to thechild fo:static-content objects.

    If the flow-map in effect for a page-sequence has aflow-assignment child with flow-source-listS andflow-target-listT and the child flow-name-specifiersofS have flow-name-reference valuesF1,...,Fm, andthe child region-name-specifiers ofT haveregion-name-reference valuesR1,...,Rn,then for each area-classC, the areas returned tothe page-sequence belonging to that class have thesame order in the area tree (relative to the region ordering)as their generating formatting objects (relative to the flow ordering).That is, ifA andB are areas ofarea-classC and eitherA andBare returned by the same flow withAreturned prior toB, orAandB are returned by flowswith flow-name valuesFiandFj, respectively,for somei andj such thati<j, then one ofthe following conditions must hold:

    • the ancestor page-reference-area ofAprecedes the ancestor page-reference-area ofB, or

    • A andB share the same ancestorpage-reference-area,A is a descendant of aregion-reference-area generated usinga region whose region-name value isRkandB is a descendant of a region-reference-area generatedusing a region whose region-name value isRl for somek andl such thatk<l, or

    • A andB are descendants of the sameregion-reference-area andA precedesB in thepre-order-tree traversal of the area tree.

If a title-area is generated the following constraints must besatisfied:

  • Completeness. All areas returned by formatting objectdescendants of the fo:title child of the fo:page-sequencebecome descendants of the title-area generated by the fo:page-sequence,with the exception of glyph-areas subject to deletion or substitution as in Sections4.7.2 Line-building and4.7.3 Inline-building.

  • Stacking. The areas returnedby children of the fo:title are properly stacked within the title-area.

The default ordering constraint of section4.7.1 General Ordering Constraintsdoes apply to the fo:title.

Contents:

(title?,folio-prefix?,folio-suffix?,static-content*,flow+)

The following properties apply to this formatting object:

7.10.1 country
7.27.19 flow-map-reference
7.26.1 format
7.10.2 language
7.26.4 letter-value
7.26.2 grouping-separator
7.26.3 grouping-size
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.27.7 initial-page-number
7.27.6 force-page-count
7.27.9 master-reference
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.6 fo:page-sequence-wrapper

Common Usage:

The fo:page-sequence-wrapper formatting object is used to specifyinherited properties for a group of fo:page-sequence formatting objects.

Areas:

The fo:page-sequence-wrapper formatting object does not generateany areas. The fo:page-sequence-wrapper formatting object returnsthe sequence of areas created by concatenating the sequences of areasreturned by each of the children of the fo:page-sequence-wrapper.

Trait Derivation:

Except for "id", "index-class", and "index-key",the fo:page-sequence-wrapper has no propertiesthat are directly used by it. However, it does serve as a carrier tohold inheritable properties that are utilized by its children.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:page-sequence-wrapper is the same order asthe children are ordered under the fo:page-sequence-wrapper.An fo:page-sequence-wrapper that contains no fo:page-sequence objectsas descendants returns no areas.

Note:

Because an fo:page-sequence-wrapper that contains nofo:page-sequence objects as descendants returns no areas, any id,index-key, or index-class property on such an fo:page-sequence-wrapperis ignored; the result would be as if they were not assigned on this FO.In particular, any attempt to refer to this id would result in thesame action as if this id were never declared withinthe FO result tree.

Contents:

(page-sequence|page-sequence-wrapper)*

The following properties apply to this formatting object:

7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.4.7 fo:layout-master-set

Common Usage:

The fo:layout-master-set is a wrapper around all masters used in thedocument. This includes page-sequence-masters, page-masters, andflow-maps.

Areas:

The fo:layout-master-set formatting object generates no area directly.The masters that are the children of the fo:layout-master-set areused by the fo:page-sequence to generate pages.

Constraints:

The value of themaster-name trait on eachchild of the fo:layout-master-set must be unique within the set.

Contents:

(simple-page-master|page-sequence-master|flow-map)+

6.4.8 fo:page-sequence-master

Common Usage:

The fo:page-sequence-master is used to specify the constraints on andthe order in which a given set of page-masters will be used ingenerating a sequence of pages. Pages are automatically generated whenthe fo:page-sequence-master is used in formatting an fo:page-sequence.

Note:

There are several ways of specifying a potentialsequence of pages. One can specify a sequence of references toparticular page-masters. This yields a bounded sequence of potentialpages. Alternatively, one can specify a repeating sub-sequence of oneor more page-masters. This sub-sequence can be bounded orunbounded. Finally one can intermix the two kinds of sub-sequence-specifiers.

Areas:

The fo:page-sequence-master formatting object generates no area directly.It is used by thefo:page-sequence formatting object to generate pages.

Constraints:

The children of the fo:page-sequence-master are a sequence ofsub-sequence-specifiers. A page-sequencesatisfies the constraintdetermined by an fo:page-sequence-master if(a) it can be partitionedinto a sequence of sub-sequences of pages that map one-to-oneto an initial sub-sequence of the sequence ofsub-sequence-specifiers that are thechildren of thefo:page-sequence-master and, (b) for each sub-sequence of pagesin the partition, thatsub-sequence satisfies the constraints of the correspondingsub-sequence-specifier.Thesequence of sub-sequences of pages can be shorter than the sequence ofsub-sequence-specifiers.

It is an error if the entire sequence of sub-sequence-specifiers children isexhausted while some areas returned by an fo:flow are not placed. Implementationsmay recover, if possible, by re-using the sub-sequence-specifier that was lastused to generate a page.

Contents:

(single-page-master-reference|repeatable-page-master-reference|repeatable-page-master-alternatives)+

The following properties apply to this formatting object:

7.27.8 master-name

6.4.9 fo:single-page-master-reference

Common Usage:

An fo:single-page-master-reference is thesimplest sub-sequence-specifier. It specifies a sub-sequence consistingof a single instance of a single page-master. It is used to specifythe use of a particular page-master at a given point in the sequenceof pages that would be generated using the fo:page-sequence-masterthat is the parent of the fo:single-page-master-reference.

Areas:

The fo:single-page-master-reference formatting object generates no area directly.It is used by the fo:page-sequence formattingobject to generate pages.

Constraints:

The fo:single-page-master-reference has a reference to thefo:simple-page-master which has the same master-name as themaster-reference trait on thefo:single-page-master-reference.

The sub-sequence of pages mapped to thissub-sequence-specifier satisfiesthe constraints of this sub-sequence-specifier if (a) thesub-sequence of pages consists of a single page and (b) that page isconstrained to have been generated using the fo:simple-page-masterreferenced by the fo:single-page-master-reference.

Contents:

EMPTY

The following properties apply to this formatting object:

7.27.9 master-reference

6.4.10 fo:repeatable-page-master-reference

Common Usage:

An fo:repeatable-page-master-reference is the next simplestsub-sequence-specifier. It specifies a sub-sequenceconsisting ofrepeated instances of a single page-master. The number of repetitionsmay be bounded or potentially unbounded.

Areas:

The fo:repeatable-page-master-reference formatting object generates no area directly.It is used by the fo:page-sequence formatting object to generatepages.

Constraints:

The fo:repeatable-page-master-reference has a reference to thefo:simple-page-master which has the same master-name as themaster-reference trait on thefo:repeatable-page-master-reference.

The sub-sequence of pages mapped to thissub-sequence-specifier satisfiesthe constraints of this sub-sequence-specifier if (a) thesub-sequence of pages consists of zero or more pages, (b) each page isgenerated using the fo:simple-page-masterreferenced by the fo:repeatable-page-master-reference, and (c) length ofthe sub-sequence is less than or equal to the value ofmaximum-repeats.

If no region-master child of the page-master referred to by thisformatting object has a region-nameassociated to any flow in an fo:page-sequence, then thesub-sequence is constrained to have length zero.

Contents:

EMPTY

The following properties apply to this formatting object:

7.27.9 master-reference
7.27.10 maximum-repeats

6.4.11 fo:repeatable-page-master-alternatives

Common Usage:

The fo:repeatable-page-master-alternativesformatting object is the most complexsub-sequence-specifier. Itspecifies a sub-sequence consisting of repeated instances of a set ofalternative page-masters. The number of repetitions may be bounded orpotentially unbounded. Which of the alternative page-masters is usedat any point in the sequence depends on the evaluation of a conditionon the use of the alternative. Typical conditions include, testingwhether the page which is generated using the alternative is the firstor last page in a page-sequence or is the page blank. The full set ofconditions allows different page-masters to be used for the firstpage, for odd and even pages, for blank pages, etc.

Note:

Because the conditions are tested in order from thebeginning of the sequence of children, the last alternative in thesequence usually has a condition that is always true and thisalternative references the page-master that is used for all pages thatdo not receive some specialized layout.

Areas:

The fo:repeatable-page-master-alternativesformatting object generates no area directly. This formatting objectis used by the fo:page-sequence formatting object to generate pages.

Constraints:

The children of the fo:repeatable-page-master-alternatives arefo:conditional-page-master-references. These children are calledalternatives.

The sub-sequence of pages mapped to thissub-sequence-specifier satisfiesthe constraints of this sub-sequence-specifier if (a) thesub-sequence of pages consists of zero or more pages, (b) each page isgenerated using the fo:simple-page-masterreferenced by the one of the alternatives thatare the children of the fo:repeatable-page-master-alternatives, (c)the conditions on that alternative aretrue, (d) thatalternative is the first alternative in the sequence of children forwhich all the conditions aretrue, and (e) the lengthof the sub-sequence is less than or equal to the value ofmaximum-repeats.

Contents:

(conditional-page-master-reference+)

The following properties apply to this formatting object:

7.27.10 maximum-repeats

6.4.12 fo:conditional-page-master-reference

Common Usage:

The fo:conditional-page-master-reference is used to identify apage-master that is to be used when the conditions on its use aresatisfied. This allows different page-masters to be used, for example,for even and odd pages, for the first page in a page-sequence, or forblank pages. This usage is typical in chapters of a book or reportwhere the first page has a different layout than the rest of thechapter and the headings and footings on even and odd pagesmay be different as well.

Areas:

The fo:conditional-page-master-reference formatting object generates no area directly.It is used bythe fo:page-sequence formatting object to generate pages.

Constraints:

The fo:conditional-page-master-reference has a reference to thefo:simple-page-master which has the same master-name asthemaster-reference trait on the fo:conditional-page-master-reference.

There are three traits,page-position,odd-or-even, andblank-or-not-blank thatspecify thesub-conditions on the use of the referenced page-master. All threesub-conditions must betrue for the condition on thefo:conditional-page-master-reference to betrue.

Note:

Since the properties from which these traitsare derived are not inherited and the initial value ofall the properties makes the correspondingsub-conditiontrue,only the subset of traits that arederived from properties with specified values musthave their corresponding sub-condition betrue.

The sub-condition corresponding to thepage-positiontrait istrue if the page generated using thefo:conditional-page-master-reference has the specified position in thesequence of pages generated by the referencing page-sequence; namely,"first", "last","only" (both first and last),"rest" (not firstnor last) or"any" (all of the previous). Thereferencingpage-sequence is the fo:page-sequence that referenced thefo:page-sequence-master from which thisfo:conditional-page-master-reference is a descendant.

The sub-condition corresponding to theodd-or-eventrait istrue if the value of theodd-or-eventrait is "any" or if the value matches the parity of thepage number of the page generated using thefo:conditional-page-master-reference.

The sub-condition corresponding to theblank-or-not-blank trait istrue, if (1) the value of the trait is"not-blank" and the page generated using thefo:conditional-page-master-reference has areas generated by descendants ofthe fo:flow formatting objects; if (2) the value of the trait is"blank" and the page generated using thefo:conditional-page-master-reference is such that there areno areas from any fo:flow to be put on that page (e.g.,(a) to maintain proper page parity due to (i) a break-afteror break-before value of "even-page" or "odd-page" or (ii) at thestart or end of the page-sequence or (b) because theconstraintson the areas generated by descendants of the fo:flow formatting objects wouldnot be satisfied if they were descendant from this page); or if (3)the value of the trait is "any".

Note:

A "blank page" is a page generated under (2) ofthe sub-condition corresponding to "blank-or-not-blank"above. This has nothing to do with whether the page appearscompletely blank to the reader.

Contents:

EMPTY

The following properties apply to this formatting object:

7.27.9 master-reference
7.27.14 page-position
7.27.12 odd-or-even
7.27.1 blank-or-not-blank

6.4.13 fo:simple-page-master

Common Usage:

The fo:simple-page-master is used in the generation of pages andspecifies the geometry of the page. The page is subdivided intoregions: one or more region-body, and up to four other regions:region-before, region-after,region-start, and region-end.

Note:

For example, if thewriting-mode of thefo:simple-page-master is "lr-tb", then these regionscorrespond to the body of a document, the header, the footer, theleft sidebar, and the right sidebar.

Note:

The simple-page-master is intended for systems that wish to providea simple page layout facility. Future versions of this Recommendationmay support more complex page layouts constructed using thefo:page-master formatting object.

Areas:

The fo:simple-page-master formatting object generates no area directly.It is used in the generation of pages by anfo:page-sequence.

When the fo:simple-page-master is used to generate a page, a viewport/referencepair is generated, consisting of a page-viewport-area and apage-reference-area. The page-viewport-area represents thephysical bounds of the output medium. The page-reference-arearepresents the portion of the page on which content is intended toappear; that is, the area inside the page margins.

In addition, when the fo:simple-page-master is used to generate apage, viewport/reference pairs that correspond to the regions that are thechildren of the fo:simple-page-master are also generated.(See the formatting object specifications forthe five regions (6.4.14 fo:region-body,6.4.15 fo:region-before,6.4.16 fo:region-after,6.4.17 fo:region-start, and6.4.18 fo:region-end)for the details on the generation of these areas.)The "writing-mode" of the pageis used to determine the placement of the five regions on the master.

Region-viewport-areas   [D]

Region-viewport-areas

The spacing between the outer four regions and each fo:region-body is determinedby subtracting the relevantextent trait on each outer regionfrom the "margin-x" property on that fo:region-body.

Trait Derivation:

Thereference-orientation of the page-reference-areaandwriting-modeof the page-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thewriting-mode of thepage-reference-area is set to the same value as that ofthe page-viewport-area.Reference-orientation does not affect the page-viewport-area and itsreference-orientation is set to "0".Borders and padding are notallowed with a page-reference-area.The remaining traits on thepage-reference-area areset according to the normal rules for determining the values oftraits.

Constraints:

When a page-master is used in the generation of a page, theblock-progression-dimension andinline-progression-dimension of thecontent-rectangle of the page-viewport-area are determined using thecomputed values of the"page-height" and "page-width" properties.For sheet media, the computed values of the"page-height" and "page-width" propertiesdetermine the orientation of the sheet;"page-height" is measured from "top" to"bottom". For display media, the display window is alwaysupright; the top of the display screen is "top".

The traits derived from the "margin-top","margin-bottom", "margin-left" and"margin-right" properties are used to indent the page-reference-areacontent-rectangle from the corresponding edge of the content-rectangle of thepage-viewport-area.

Note:

The reference points for the page-viewport-area content-rectangleare in terms of the "top", "bottom","left", and "right" rather than"before-edge", "after-edge","start-edge", and "end-edge" because users see themedia relative to its orientation and not relative to thewriting-mode currently in use.

Margins of a page   [D]

The value of thefolio-number trait on thefirst page returned by thefo:page-sequence is constrained to equal the value of theinitial-page-number trait. The value of thefolio-numbertrait on subsequent pages is constrained to be one greater than thevalue on the immediately preceding page.

Theformat,letter-value,grouping-separator,grouping-size,country, andlanguage traits are used to format the number into astring form, as specified in[XSLT].This formatted number is used by the fo:page-number flow object.

Constraints applicable to regions:

There are a number of constraints that apply to all theregions that are specified within a given fo:simple-page-master.

Two page model examples   [D]

If the block-progression-dimension of the properly stackedregion-reference-area is greater than the block-progression-dimension of theregion-viewport-area that is its parent, then the constraints onthe relationship between the region-viewport-area and theregion-reference-area depend on values of theoverflow traiton the region-master and the kind of flowsassigned to the region.

If all the flows assigned to the corresponding region arefo:static-content flow objects, then there is no constrainton the block-progression-dimension of the region-reference-area.

If all the flows assigned to the corresponding region are fo:flow formattingobjects, then

  • If the value of themedia-usage trait ispaginate,or the value of theoverflow trait isvisible,hidden, orerror-if-overflow,then the block-progression-dimension of the region-reference-area isconstrained to be no greater than the block-progression-dimension ofthe region-viewport-area.

  • If the value of themedia-usage trait isbounded-in-one-dimension orunbounded,and the value of theoverflow trait isscroll orauto,then there is no constraint on theblock-progression-dimension of the region-reference-area.

Contents:

(region-body+,region-before?,region-after?,region-start?,region-end?)

The following properties apply to this formatting object:

7.11 Common Margin Properties-Block
7.27.8 master-name
7.27.13 page-height
7.27.15 page-width
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.14 fo:region-body

Common Usage:

Used in constructing a simple-page-master. This region specifies aviewport/reference pair that is located in the "center" of thefo:simple-page-master. Theoverflow trait controls howmuch of the underlying region-reference-area is visible; that is, whetherthe region-reference-area is clipped by its parent region-viewport-area.

Note:

Typically, for paged media and when no explicit flow map isspecified, the areasreturned by the fo:flow formatting object in anfo:page-sequence are made to bedescendants of a sequence of region-reference-areas thatcorrespond tothe region-body. These region-reference-areas are all area descendantsof page-areas for which the page-master included an fo:region-body. Ifthe fo:flow flow is assigned to some other region, then the areasreturned by the fo:flow are constrained to be descendants ofregion-reference-areas generated using the assigned region-master.

Note:

The body region should be sized and positioned within thefo:simple-page-master so that there is roomfor the areas returned by the flow that is assigned to thefo:region-body and for any desired side regions, that is,fo:region-before, fo:region-after, fo:region-start and fo:region-end'sthat are to be placed on the same page. These side regions arepositioned within the content-rectangle of the page-reference-area. Themargins on the fo:region-body are used to position the region-viewport-areafor the fo:region-body and to leave space for the other regions thatsurround the fo:region-body.

A close-up of the first case in the previous figure.   [D]

The spacing between the last four regions and the fo:region-body isdetermined by subtracting the relevantextent trait onthe side regions from the trait that corresponds to the"margin-x" property on the fo:region-body.

The fo:region-body may be also be used to provide multiplecolumns. When thecolumn-count trait is greater than one, thenthe region-body will be subdivided into multiple columns.

Areas:

The fo:region-body formatting object is used to generate oneregion-viewport-area and one region-reference-area whenever anfo:simple-page-master that has an fo:region-body as a childis used togenerate a page.A scrolling mechanism shall be provided, in an implementation-definedmanner, if the value of theoverflow trait is "scroll".

The position and size of the region-viewport-area isspecified relative to the content-rectangle of thepage-reference-area generated by fo:simple-page-master. The content-rectangleof the region-viewport-area is indented from the content-rectangleof the page-reference-area by the values of the "margin-top","margin-bottom", "margin-left" and "margin-right" properties.The values of thepaddingandborder-width traits must be "0".

The region-reference-area generated using an fo:region-body is the childof the region-viewport-area.The "writing-mode" of the fo:region-body definesthe column-progression within the region. The inline-progression-directionis used to determine the stacking direction for columns (and thedefault flow order of text from column-to-column).

In addition to the viewport/reference pair, when theregion-body is used togenerate areas,at least one and up to three additional reference-areas aregenerated. These reference-areas are the optionalbefore-float-reference-area,the optionalfootnote-reference-area, and themain-reference-area. The latter reference-area comprisesthe space left after space is borrowed for the other tworeference-areas. The main-reference-area has nopadding, border, or space associated with it.

Note:

If there is no before-float-reference-area or footnote-reference-areachild of the region-reference-area, then the content-rectangle of themain-reference-area is coterminous with the content-rectangleof the region-reference-area.

The main-reference-area has as its childrena sequence ofspan-reference-areas.These are reference-area block-areas with zero border and padding,whose inline-progression-dimension isequal to that of the main-reference-area,and which are normally stacked within the main-reference-area.

Each span-reference-area has one or more reference-area children,designated asnormal-flow-reference-areas.The number and placement of the children of a span-reference-areadepends on thecolumn-count trait of the span-reference-area.In turn, the formatter must generate precisely enough of thesespan-reference-areas, and so set theircolumn-count traits,that block-areasreturned from the flows with aspan of "all" are children ofspan-reference-areas withcolumn-count equal to 1,and block-areas returned from the flows with aspan of "none"are children of span-reference-areas withcolumn-count equal tothe refined value of the column-count property of theassociated region-reference-area.

For each span-reference-area, the numberNof normal-flow-reference-area children is equal to the value of thecolumn-count trait.

It is an error to specify acolumn-count otherthan 1 if the "overflow" property has the value "scroll".An implementation may recover by behaving as if "1" had been specified.

The inline-progression-dimension of each of thesenormal-flow-reference-areas is determined by subtracting(N-1) times the column-gap trait from theinline-progression-dimension of themain-reference-area and dividing that result byN.Using "body-in-size" for the name of the inline-progression-dimensionof the span-reference-area and "column-in-size" for the name of the sizeof the normal-flow-reference-areas in the inline-progression-direction,the formula is:

column-in-size = (body-in-size - (N - 1)*column-gap)/N

The block-progression-dimension of the normal-flow-reference-areasis the same as that of the parent span-reference-area.

Note:

As noted above, the block-progression-dimension of thespan-reference-area may be less than the size of theregion-reference-area if a before-float-reference-area orfootnote-reference-area are present, or if there is more than onespan-reference-area child of the main-reference-area.

The normal-flow-reference-areas are positioned within thespan-reference-area as follows: The first column is positionedwith the before-edge and start-edge of its content-rectanglecoincident with the before-edge and start-edge of the content-rectangleof the span-reference-area. The content-rectangle of theJthnormal-flow-reference-area child of the span-reference-areais positioned with its before-edge coincident with the before-edgeof the content-rectangle of the span-reference-area and with isstart-edge at ((J-1)*(column-in-size + column-gap))in the inline-progression-direction.This results in the end-edge of the content-rectangle of theNth normal-flow-reference-area being coincident withthe end-edge of the content-rectangle of the span-reference-area.

Note:

If thewriting-mode is "rl-tb", theabove description means that the columns are ordered from right-to-leftas would be expected. This follows because the start-edge is onthe right in an "rl-tb" writing-mode.

All areas generated by using the fo:region-body are of area-class "xsl-absolute".

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thereference-orientation of theregion-reference-area is set to "0" and is, therefore, thesame as the orientation established by the region-viewport-area.Thewriting-mode of theregion-reference-area is set to the same value as that ofthe region-viewport-area.

The remaining traits on theregion-viewport-area and region-reference-area areset according to the normal rules for determining the values oftraits.

The traits on the span-reference-areas and on thenormal-flow-reference-areas are determinedin the same manner as described in5 Property Refinement / Resolution.

Constraints:

The constraints applicable to all regions (see6.4.13 fo:simple-page-master) all apply.

The inline-progression-dimension of the region-viewport-area isdetermined by the inline-progression-dimension of thecontent-rectangle of the page-reference-area minus the valuesof thestart-indent andend-indenttraits of the region-master. The start-edge and end-edge of thecontent-rectangle of the region-viewport-area are determined by thereference-orientation trait on the page-master.

The block-progression-dimension of the region-viewport-area isdetermined by the block-progression-dimension of the content-rectanglefor the page-reference-area minus the values of thespace-before andspace-after traits ofthe region-master. The before-edge and after-edge of the content-rectangleof the region-viewport-areaare determined by thereference-orientation trait onthe page-master.

The values of thespace-before andstart-indent traits are used to position theregion-viewport-area relative to the before-edge andstart-edge of the content-rectangle ofthe page-reference-area.

The constraints on the size and position of the region-reference-areagenerated using the fo:region-body are covered in the "Constraintsapplicable to regions" section of6.4.13 fo:simple-page-master.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.21.1 clip
7.27.2 column-count
7.27.3 column-gap
7.14.4 display-align
7.21.2 overflow
7.27.17 region-name
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.15 fo:region-before

Common Usage:

Used in constructing a simple-page-master. This region specifiesa viewport/reference pair that is located on the "before" side ofthe page-reference-area.In lr-tb writing-mode, this region corresponds tothe headerregion. Theoverflow trait controls howmuch of the underlying region-reference-area is visible; that is, whetherthe region-reference-area is clipped by its parent region-viewport-area.

Areas:

The fo:region-before formatting object is used to generate oneregion-viewport-areaand one region-reference-area.

The values of thepaddingandborder-width traits must be "0".

The before-edge of the content-rectangle of thisregion-viewport-area is positioned coincident with thebefore-edge of the content-rectangle of the page-reference-areagenerated using the parent fo:simple-page-master. The block-progression-dimensionof the region-viewport-area isdetermined by theextent trait on the fo:region-beforeformatting object.

The inline-progression-dimension of the region-viewport-area is determined by theprecedence trait on the fo:region-before. If the valueof theprecedence trait istrue, then theinline-progression-dimension extends up to the start-edge andend-edge of thecontent-rectangle of the page-reference-area. In this case, the region-beforeregion-viewport-area acts like a float into areasgenerated by the region-start and region-end. If thevalue of theprecedence trait on the fo:region-beforeisfalse, then these adjacent regions float into the areagenerated by the fo:region-before and the extent of thefo:region-before is (effectively) reduced by the incursions of theadjacent regions.

The region-reference-area lies on a canvasunderneath the region-viewport-area.

The size of the region-reference-area depends on the setting of theoverflow trait on the region. If the value of thattraitis "auto", "hidden", "error-if-overflow", "paginate",or "visible" then the size of thereference-areais the same as the size of the viewport. If the value of theoverflowtrait is "scroll", the size of the reference-area isequalto the size of the viewport in theinline-progression-direction in thewriting-mode for the region and has no constraint in theblock-progression-direction (which implies that it grows tohold the distribution of all the content bound to the region).

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thereference-orientation of theregion-reference-area is set to "0" and is, therefore, thesame as the orientation established by the region-viewport-area.Thewriting-mode of theregion-reference-area is set to the same value as that ofthe region-viewport-area.

The remaining traits on theregion-viewport-area and region-reference-area areset according to the normal rules for determining the values oftraits.

Constraints:

The constraints on the size and position of the region-reference-areagenerated using the fo:region-before are covered in the "Constraintsapplicable to regions" section of6.4.13 fo:simple-page-master.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.21.1 clip
7.14.4 display-align
7.27.4 extent
7.21.2 overflow
7.27.16 precedence
7.27.17 region-name
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.16 fo:region-after

Common Usage:

Used in constructing a simple-page-master. This region specifiesa viewport/reference pair that is located on the "after" side ofthe page-reference-area.In lr-tb writing-mode, this region corresponds tothe footerregion. Theoverflow trait controls howmuch of the underlying region-reference-area is visible; that is, whetherthe region-reference-area is clipped by its parent region-viewport-area.

Areas:

The fo:region-after formatting object is used to generate oneregion-viewport-areaand one region-reference-area.

The values of thepaddingandborder-width traits must be "0".

The after-edge of the content-rectangle of thisregion-viewport-area is positioned coincident with theafter-edge of the content-rectangle of the page-reference-areagenerated using the parent fo:simple-page-master. The block-progression-dimensionof the region-viewport-area isdetermined by theextent trait on the fo:region-afterformatting object.

The inline-progression-dimension of the region-viewport-area is determined by theprecedence trait on the fo:region-after. If the valueof theprecedence trait istrue, then theinline-progression-dimension extends up to the start-edge andend-edge of thecontent-rectangle of the page-reference-area. In this case, the region-afterregion-viewport-area acts like a float into areasgenerated by the region-start and region-end. If thevalue of theprecedence trait on the fo:region-afterisfalse, then these adjacent regions float into the areagenerated by the fo:region-after and the extent of thefo:region-after is (effectively) reduced by the incursions of theadjacent regions.

The region-reference-area lies on a canvasunderneath the region-viewport-area.

The size of the region-reference-area depends on the setting of theoverflow trait on the region. If the value of thattraitis "auto", "hidden", "error-if-overflow", "paginate",or "visible" then the size of thereference-areais the same as the size of the viewport. If the value of theoverflowtrait is "scroll", the size of the reference-area isequalto the size of the viewport in theinline-progression-direction in thewriting-mode for the region and has no constraint in theblock-progression-direction (which implies that it grows tohold the distribution of all the content bound to the region).

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thereference-orientation of theregion-reference-area is set to "0" and is, therefore, thesame as the orientation established by the region-viewport-area.Thewriting-mode of theregion-reference-area is set to the same value as that ofthe region-viewport-area.

The remaining traits on theregion-viewport-area and region-reference-area areset according to the normal rules for determining the values oftraits.

Constraints:

The constraints on the size and position of the region-reference-areagenerated using the fo:region-after are covered in the "Constraintsapplicable to regions" section of6.4.13 fo:simple-page-master.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.21.1 clip
7.14.4 display-align
7.27.4 extent
7.21.2 overflow
7.27.16 precedence
7.27.17 region-name
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.17 fo:region-start

Common Usage:

Used in constructing a simple-page-master. This region specifiesa viewport/reference pair that is located on the "start" side ofthe page-reference-area.In lr-tb writing-mode, this region corresponds to a leftsidebar. Theoverflow trait controls howmuch of the underlying region-reference-area is visible; that is, whetherthe region-reference-area is clipped by its parent region-viewport-area.

Areas:

The fo:region-start formatting object is used to generate oneregion-viewport-areaand one region-reference-area.

The values of thepaddingandborder-width traits must be "0".

The start-edge of the content-rectangle of thisregion-viewport-area is positioned coincident with thestart-edge of the content-rectangle of the page-reference-areagenerated using the parent fo:simple-page-master. The inline-progression-dimensionof the region-viewport-area isdetermined by theextent trait on the fo:region-startformatting object.

The block-progression-dimension of the region-viewport-area isdetermined by theprecedence trait on theadjacent fo:region-before and the fo:region-after, if these exist;otherwise it is determined as if the value of theprecedencetrait wasfalse.If the value of theprecedence trait of the fo:region-before (or, respectively,fo:region-after) isfalse, then theblock-progression-dimensionextends up to the before- (or, respectively, after-) edge of thecontent-rectangle of the page-reference-area. In this case, theregion-start acts like a float into areasgenerated by the region-before (respectively, the region-after). Ifthe value of theprecedence trait on the adjacent regions istrue, then these adjacent regions float intothe area generated bythe fo:region-start and the extent of the fo:region-start is(effectively) reduced by the incursions of the adjacent regions withthe value of theprecedence trait equal totrue.

The region-reference-area lies on a canvasunderneath the region-viewport-area.

The size of the region-reference-area depends on the setting of theoverflow trait on the region. If the value of thattraitis "auto", "hidden", "error-if-overflow", "paginate",or "visible" then the size of thereference-areais the same as the size of the viewport. If the value of theoverflowtrait is "scroll", the size of the reference-area isequalto the size of the viewport in theinline-progression-direction in thewriting-mode for the region and has no constraint in theblock-progression-direction (which implies that it grows tohold the distribution of all the content bound to the region).

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thereference-orientation of theregion-reference-area is set to "0" and is, therefore, thesame as the orientation established by the region-viewport-area.Thewriting-mode of theregion-reference-area is set to the same value as that ofthe region-viewport-area.

The remaining traits on theregion-viewport-area and region-reference-area areset according to the normal rules for determining the values oftraits.

Constraints:

The constraints on the size and position of the region-reference-areagenerated using the fo:region-start are covered in the "Constraintsapplicable to regions" section of6.4.13 fo:simple-page-master.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.21.1 clip
7.14.4 display-align
7.27.4 extent
7.21.2 overflow
7.27.17 region-name
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.18 fo:region-end

Common Usage:

Used in constructing a simple-page-master. This region specifiesa viewport/reference pair that is located on the "end" side ofthe page-reference-area.In lr-tb writing-mode, this region corresponds to a right sidebar.Theoverflow trait controls howmuch of the underlying region-reference-area is visible; that is, whetherthe region-reference-area is clipped by its parent region-viewport-area.

Areas:

The fo:region-end formatting object is used to generate oneregion-viewport-areaand one region-reference-area.

The values of thepaddingandborder-width traits must be "0".

The end-edge of the content-rectangle of thisregion-viewport-area is positioned coincident with theend-edge of the content-rectangle of the page-reference-areagenerated using the parent fo:simple-page-master. The inline-progression-dimensionof the region-viewport-area isdetermined by theextent trait on the fo:region-endformatting object.

The block-progression-dimension of the region-viewport-area isdetermined by theprecedence trait on theadjacent fo:region-before and the fo:region-after, if these exist;otherwise it is determined as if the value of theprecedencetrait wasfalse.If the value of theprecedence trait of the fo:region-before (or, respectively,fo:region-after) isfalse, then theblock-progression-dimensionextends up to the before- (or, respectively, after-) edge of thecontent-rectangle of the page-reference-area. In this case, theregion-end acts like a float into areasgenerated by the region-before (respectively, the region-after). Ifthe value of theprecedence trait on the adjacent regions istrue, then these adjacent regions float intothe area generated bythe fo:region-end and the extent of the fo:region-end is(effectively) reduced by the incursions of the adjacent regions withthe value of theprecedence trait equal totrue.

The region-reference-area lies on a canvasunderneath the region-viewport-area.

The size of the region-reference-area depends on the setting of theoverflow trait on the region. If the value of thattraitis "auto", "hidden", "error-if-overflow", "paginate",or "visible" then the size of thereference-areais the same as the size of the viewport. If the value of theoverflowtrait is "scroll", the size of the reference-area isequalto the size of the viewport in theinline-progression-direction in thewriting-mode for the region and has no constraint in theblock-progression-direction (which implies that it grows tohold the distribution of all the content bound to the region).

Trait Derivation:

Thereference-orientation andwriting-modeof the region-viewport-area are determined by the formatting objectthat generates the area (see6.4.5 fo:page-sequence).Thereference-orientation of theregion-reference-area is set to "0" and is, therefore, thesame as the orientation established by the region-viewport-area.Thewriting-mode of theregion-reference-area is set to the same value as that ofthe region-viewport-area.

The remaining traits on theregion-viewport-area and region-reference-area areset according to the normal rules for determining the values oftraits.

Constraints:

The constraints on the size and position of the region-reference-areagenerated using the fo:region-end are covered in the "Constraintsapplicable to regions" section of6.4.13 fo:simple-page-master.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.21.1 clip
7.14.4 display-align
7.27.4 extent
7.21.2 overflow
7.27.17 region-name
7.21.3 reference-orientation
7.29.7 writing-mode

6.4.19 fo:flow

Common Usage:

The content of the fo:flow formatting object is asequence offlow objects that provides the flowing text content that isdistributed into pages.

Areas:

The fo:flow formatting object does not generate any areas. Thefo:flow formatting object returns a sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:flow. The order of concatenation is the same order as thechildren are ordered under the fo:flow.

Constraints:

The flow-map determines the assignment of the contentof the fo:flow to a region.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.27.5 flow-name

6.4.20 fo:static-content

Common Usage:

Thefo:static-content formatting object holds a sequence or atree offormatting objects that is to be presented in a singleregionor repeated in like-named regions on one or more pages in the page-sequence.Its common use is for repeating or running headers and footers.

This content is repeated, in itsentirety, on every page to which it is assigned.

Areas:

The fo:static-content formatting object does not generate any areas.The fo:static-content formatting object returns the sequence of areascreated by concatenating the sequences of areas returned by each ofthe children of the fo:static-content. The order of concatenation is the sameorder as the children are ordered under the fo:static-content.

Constraints:

The flow-map determines the assignment of the contentof the fo:static-content to a region.

The fo:static-content may be processed multiple times and thus thedefault ordering constraint of section4.7.1 General Ordering Constraintsdoes not apply to the fo:static-content. Instead, it must satisfy theconstraint on a per-page basis. Specifically, ifP is a page-reference-area,C is an area-class, andS is the set of all descendants ofPof area-classC returned to the fo:static-content descendant, thenSmust be properly ordered.

Contents:

(%block;)+

The following properties apply to this formatting object:

7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.27.5 flow-name

6.4.21 fo:title

Common Usage:

The fo:title formatting object is used to associate a title with agiven page-sequence. This title may be used by an interactive User Agent toidentify the pages. For example, the content of the fo:title can beformatted and displayed in a "title" window or in a "tool tip".

Areas:

This formatting object returns the sequence of areas returned by thechildren of this formatting object.

Constraints:

The sequence of returned areas must be the concatenation of thesub-sequences of areas returned by each of the flow children of thefo:title formatting object in the order in which the children occur.

Contents:

(#PCDATA|%inline;)*

An fo:title is not permitted tohave an fo:float, fo:footnote or fo:marker as a descendant.

Additionally, an fo:title is not permitted to have as a descendantan fo:block-container that generates an absolutely positioned area.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.18.1 color
7.16.4 line-height
7.30.17 visibility

6.4.22 fo:flow-map

Common Usage:

The fo:flow-map is used to specify the assignment of flows toregions.

Areas:

The fo:flow-map formatting object generates no area directly. Itis used by the fo:page-sequence formatting object to assign flowsto regions.

Each fo:flow-assignment child of the fo:flow map defines a source listand a target list. The source list is a sequence of flow names whosecorresponding fo:flow objects (in the referring fo:page-sequence) aretreated as a single fo:flow for composition purposes. The target list isa sequence of region-names which identify the region or regions on eachpage which are used for the source content.

Note:

This is independent of the actual sequence of pages, whichis generated as it has always been generated using the fo:simple-page-master,and fo:page-sequence-master objects referred to by the master-referenceproperty of the fo:page-sequence.

For each fo:flow-assignment child of the fo:flow-map, having anfo:flow-source-list child S and an fo:flow-target-list child T,we say that thefo:flow-mapassigns each of the flows referenced by thefo:flow-name-specifier children of S to the regions referenced by thefo:region-name-specifier children of T.

Constraints:

Many of the constraints that a flow-map induces are expressed in6.4.5 fo:page-sequence.

The children of the fo:flow-map are fo:flow-assignment objects containingparallel constraints for assigning flows to regions. It is an error for aflow-name to appear in the source list of more than onefo:flow-assignmentchild of a given fo:flow-map. It is also an error for a region-name toappear in the target list of more than one fo:flow-assignmentchild of agiven fo:flow-map.

Implicit flow-map:

<fo:flow-map>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier        flow-name-reference="xsl-region-body"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier        region-name-reference="xsl-region-body"/>    </fo:flow-target-list>  </fo:flow-assignment>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier        flow-name-reference="xsl-region-before"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier        region-name-reference="xsl-region-before"/>    </fo:flow-target-list>  </fo:flow-assignment>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier        flow-name-reference="xsl-region-after"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier        region-name-reference="xsl-region-after"/>    </fo:flow-target-list>  </fo:flow-assignment>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier        flow-name-reference="xsl-region-start"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier        region-name-reference="xsl-region-start"/>    </fo:flow-target-list>  </fo:flow-assignment>  <fo:flow-assignment>    <fo:flow-source-list>      <fo:flow-name-specifier        flow-name-reference="xsl-region-end"/>    </fo:flow-source-list>    <fo:flow-target-list>      <fo:region-name-specifier        region-name-reference="xsl-region-end"/>     </fo:flow-target-list>  </fo:flow-assignment></fo:flow-map>

Contents:

(flow-assignment+)

The following properties apply to this formatting object:

7.27.18 flow-map-name

6.4.23 fo:flow-assignment

Common Usage:

The fo:flow-assignment is used to specify the assignment of onesequence of flows to a sequenceof regions.

Areas:

The fo:flow-assignment formattingobject generates no area directly. It is used by the fo:page-sequenceformattingobject to assign flows to regions.

Constraints:

The children of the fo:flow-assignmentare a source-list and target-list containing constraints for assigningone sequence of flows to a sequence of regions.

Contents:

(flow-source-list,flow-target-list)

6.4.24 fo:flow-source-list

Common Usage:

The fo:flow-source-list isused to specify the sequence of flows to assign in a particularfo:flow-assignment.

Areas:

The fo:flow-source-list formattingobject generates no area directly. It is used by the fo:page-sequenceformattingobject to assign flows to regions.

Constraints:

The children of the fo:flow-source-listare a sequence of flow-name-specifiers identifying flows of the sequence.These flows must be either all fo:flow formatting objects or allfo:static-content formatting objects.It is an error if they are a mixture.

Contents:

(flow-name-specifier+)

6.4.25 fo:flow-name-specifier

Common Usage:

The fo:flow-name-specifieris used to specify one flow in a source-list.

Areas:

The fo:flow-name-specifierformatting object generates no area directly. It is used by thefo:page-sequenceformatting object to assign flows to regions.

Constraints:

The flow-name-reference propertyspecifies the name of a flow in the source sequence.

Contents:

EMPTY

The following properties apply to this formatting object:

7.27.20 flow-name-reference

6.4.26 fo:flow-target-list

Common Usage:

The fo:flow-target-list isused to specify the sequence of regions to which flows are assigned ina particular fo:flow-assignment.

Areas:

The fo:flow-target-list formattingobject generates no area directly. It is used by the fo:page-sequenceformattingobject to assign flows to regions.

Constraints:

The children of the fo:flow-target-listare a sequence of region-name-specifiers identifying regions in thesequence.

Contents:

(region-name-specifier+)

6.4.27 fo:region-name-specifier

Common Usage:

The fo:region-name-specifieris used to specify one region in a target-list.

Areas:

The fo:region-name-specifierformatting object generates no area directly. It is used by thefo:page-sequenceformatting object to assign flows to regions.

Constraints:

The region-name-referenceproperty specifies the name of a region in the target sequence.

Contents:

EMPTY

The following properties apply to this formatting object:

7.27.21 region-name-reference

6.5 Block-level Formatting Objects

6.5.1 Introduction

The fo:block formatting object is used for formattingparagraphs, titles, figure captions, table titles, etc. Thefollowing example illustrates the usage of fo:block in astylesheet.

6.5.1.1 Example

The following example shows the use of fo:block forchapter and section titles, and paragraphs.

Input sample:

<doc>  <chapter>    <title>Chapter title</title>    <section>      <title>First section title</title>      <paragraph>Section one's first paragraph.</paragraph>      <paragraph>Section one's second paragraph.</paragraph>    </section>    <section>      <title>Second section title</title>      <paragraph>Section two's only paragraph.</paragraph>    </section>  </chapter></doc>

In this example the chapter title appears at the top ofthe page (its "space-before" is discarded).

Space between chapter titleand 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 takeson the initial value of zero), so the latter is discarded.

Space betweenthe first section title and section one's first paragraph is(6pt,6pt,6pt):the section title's "space-after" has higher precedence thanthe paragraph's"space-before", so the latter is discarded.

Space between the two paragraphsis (6pt,8pt,10pt): the "space-after" the first paragraph isdiscarded becauseits precedence is equal to that of the "space-before" thenext paragraph,and the optimum of the "space-after" of the first paragraphis greater thanthe optimum of the "space-before" of the second paragraph.

Space betweenthe second paragraph of the first section and the title ofthe second sectionis (12pt,12pt,12pt): the "space-after" the paragraph isdiscarded becauseits precedence is equal to that of the "space-before" ofthe section title,and the optimum of the "space-after" of the paragraph isless than the optimumof the "space-before" of the section title.

The indent on the firstline of the first paragraph in section one and the onlyparagraph in sectiontwo is zero; the indent on the first line of the secondparagraph in sectionone is 2pc.

XSL Stylesheet:

<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"    xmlns:fo="http://www.w3.org/1999/XSL/Format"><xsl:template match="chapter">  <fo:block break-before="page">    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="chapter/title">  <fo:block text-align="center" space-after="8pt"            space-before="16pt" space-after.precedence="3">    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="section">  <xsl:apply-templates/></xsl:template><xsl:template match="section/title">  <fo:block text-align="center" space-after="6pt"            space-before="12pt" space-before.precedence="0"            space-after.precedence="3">    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="paragraph[1]" priority="1">  <fo:block text-indent="0pc" space-after="7pt"            space-before.minimum="6pt" space-before.optimum="8pt"            space-before.maximum="10pt">    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="paragraph">  <fo:block text-indent="2pc" space-after="7pt"            space-before.minimum="6pt" space-before.optimum="8pt"            space-before.maximum="10pt">    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:block break-before="page">  <fo:block text-align="center" space-after="8pt"    space-before="16pt"    space-after.precedence="3">Chapter title  </fo:block>  <fo:block text-align="center" space-after="6pt"    space-before="12pt" space-before.precedence="0"    space-after.precedence="3">First section title  </fo:block>  <fo:block text-indent="0pc" space-after="7pt"    space-before.minimum="6pt" space-before.optimum="8pt"    space-before.maximum="10pt">Section one's first paragraph.  </fo:block>  <fo:block text-indent="2pc" space-after="7pt"    space-before.minimum="6pt" space-before.optimum="8pt"    space-before.maximum="10pt">Section one's second paragraph.  </fo:block>  <fo:block text-align="center" space-after="6pt"    space-before="12pt" space-before.precedence="0"    space-after.precedence="3">Second section title  </fo:block>  <fo:block text-indent="0pc" space-after="7pt"    space-before.minimum="6pt" space-before.optimum="8pt"    space-before.maximum="10pt">Section two's only paragraph.  </fo:block></fo:block>

6.5.2 fo:block

Common Usage:

The fo:block formatting object is commonly used for formatting paragraphs,titles, headlines, figure and table captions, etc.

Areas:

The fo:block formatting object generates one or morenormal block-areas.The fo:block returns these areas, anypage-level-out-of-line areas, andanyreference-level-out-of-line areasreturned by the children of the fo:block.The fo:block also generates zero or more line-areas as children of thenormal block-areas it returns, in accordance with4.7.2 Line-building.

Trait Derivation:

The .minimum, .optimum, and .maximum components of thehalf-leading traitare set to 1/2 the difference ofthe computed value of theline-height property and thecomputed value of the sum of thetext-altitude andtext-depth properties.The .precedence and .conditionality components are copied from theline-height property.

Note:

The usage of the half-leading is described in4.5 Line-areas.

Constraints:

No area may have more than one normal child areareturned by the same fo:block formatting object.

The children of each normal area generated by an fo:blockmust satisfy the constraints specified in4.7.2 Line-building.

In addition the constraints imposed by the traits derived from theproperties applicable to this formatting object must be satisfied.The geometric constraints are rigorously defined in4 Area Model.

Contents:

(#PCDATA|%inline;|%block;)*

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children,optionally followed by an fo:initial-property-set.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.10 Common Hyphenation Properties
7.11 Common Margin Properties-Block
7.13 Common Relative Position Properties
7.20.1 break-after
7.20.2 break-before
7.19.1 clear
7.18.1 color
7.29.5 text-depth
7.29.4 text-altitude
7.16.1 hyphenation-keep
7.16.2 hyphenation-ladder-count
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.19.3 intrusion-displace
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.3 last-line-end-indent
7.16.7 linefeed-treatment
7.16.4 line-height
7.16.5 line-height-shift-adjustment
7.16.6 line-stacking-strategy
7.20.6 orphans
7.16.8 white-space-treatment
7.21.4 span
7.16.9 text-align
7.16.10 text-align-last
7.16.11 text-indent
7.30.17 visibility
7.16.12 white-space-collapse
7.20.7 widows
7.16.13 wrap-option

6.5.3 fo:block-container

Common Usage:

The fo:block-container flow object is used togenerate a block-level reference-area, typically containingtext blocks with a different writing-mode. In addition, itcan also be used with a different reference-orientation torotate its content.

Note:

The use of this flow object is not required forchangingthe inline-progression-direction only; in that case the Unicode BIDIalgorithm and the fo:bidi-override are sufficient.

Areas:

The fo:block-container formatting object generates one or moreviewport/reference pairs.All generated viewport-areas aresubject to the constraints given by the block-progression-dimension andinline-progression-dimension traits of the fo:block-container. Thefo:block-container returns these areas and any page-level-out-of-lineareas returned by the children of the fo:block-container.

Note:

In the case that the block-progression-dimension.maximumis other than "auto", then overflow processing may apply.The "repeat" value of overflow can be used to generate multipleviewport/reference pairs if this is desired rather than clipping orscrolling.

If the absolute-position trait is "auto", these areas all have anarea-class of "xsl-normal". If the absolution-position trait is"absolute" or "fixed" then there is one viewport/reference pair, and itsarea-class is "xsl-absolute" or "xsl-fixed", respectively.

Trait Derivation:

The reference-orientation and writing-mode traits of the viewport-areaand reference-area come from the fo:block-container. These determine theorientation of the start-edge, end-edge, before-edge and after-edge ofthe content-rectangle of the viewport-area, and of the padding-,border-, and content-rectangles of the reference-area.Thereference-orientation of thereference-area is set to "0" and is, therefore, thesame as the orientation established by the viewport-area.The inline-progression-dimension of the reference-area is the same as thatof the viewport-area, and may not be "auto" if theinline-progression-direction is different from that of the parent of thefo:block-container. The block-progression-dimension of thereference-area is not constrained; thus the reference-area may be largerthan the viewport-area and this may cause the "overflow" property tooperate.

Note:

As a property value applies to each of the areasgenerated by this flow object the size can vary from instanceto instance if the value is "auto" or a<length-range>.

Constraints:

The children of each reference-area generatedby an fo:block-container formatting objectmust be normalblock-areas returned by the children of the fo:block-container,must beproperly stacked, andmust beproperly ordered.

Anyreference-level-out-of-lineareas returned by the children of the fo:block-containerare handled as described in6.12.2 fo:float.

Contents:

(%block;)+

In addition an fo:block-container that does not generateanabsolutely positioned areamay have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.6 Common Absolute Position Properties
7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.15.3 block-progression-dimension
7.20.1 break-after
7.20.2 break-before
7.19.1 clear
7.21.1 clip
7.14.4 display-align
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.19.3 intrusion-displace
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.21.2 overflow
7.21.3 reference-orientation
7.21.4 span
7.15.14 width
7.29.7 writing-mode
7.30.18 z-index

6.6 Inline-level Formatting Objects

6.6.1 Introduction

Inline-level formatting objects are most commonly used toformata portion of text or for generating rules and leaders. Thereare many other uses. The following examples illustratesome of these uses of inline-level formatting objects.

  • putting the first line of a paragraph intosmall-caps,

  • turning a normally inline formatting object, fo:external-graphic, intoa block by "wrapping" with an fo:block formattingobject,

  • formatting a running footer containing the word"Page" followed by a page number.

6.6.1.1 Examples
6.6.1.1.1 First Line of Paragraph in Small-caps

Input sample:

<doc><p>This is the text of a paragraph that is going to bepresented with the first line in small-caps.</p></doc>

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">  <fo:block>    <fo:initial-property-set font-variant="small-caps"/>    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Result instance: elements and attributes in the fo:namespace

<fo:block>  <fo:initial-property-set font-variant="small-caps">  </fo:initial-property-set>This is the text of a paragraph that is going to bepresented with the first line in small-caps.</fo:block>
6.6.1.1.2 Figure with a Photograph

Input sample:

<doc>  <figure>    <photo image="TH0317A.jpg"/>    <caption>C'ieng Tamlung of C'ieng Mai</caption>  </figure></doc>

In this example the image (an fo:external-graphic) isplaced as a centered block-level object.The caption is centered with 10mm indents.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="figure">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="photo">  <fo:block text-align="center">    <fo:external-graphic src="'url({@image})'"/>  </fo:block></xsl:template><xsl:template match="caption">  <fo:block space-before="3pt" text-align="center"    start-indent="10mm" end-indent="10mm">    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

fo: element and attribute tree:

<fo:block>  <fo:block text-align="center">    <fo:external-graphic src="'url(TH0317A.jpg)'"/>  </fo:block>  <fo:block space-before="3pt" text-align="center" start-indent="10mm"    end-indent="10mm">C'ieng Tamlung of C'ieng Mai</fo:block></fo:block>
6.6.1.1.3 Page numbering and page number reference

Input sample:

<!DOCTYPE doc SYSTEM "pgref.dtd"><doc>  <chapter><title>Chapter</title>    <p>Text</p>  </chapter>  <chapter><title>Chapter</title>    <p>For a description of X see <ref refid="x"/>.</p>  </chapter></doc>

In this example each page has a running footer containing the word"Page" followed by the page number. The "ref" element generates theword "page" followed by the page number of the page on which thereferenced by the "refid" attribute was placed.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="doc">  <fo:root>    <fo:layout-master-set>      <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">        <fo:region-body          margin-top="0mm" margin-bottom="15mm"          margin-left="0mm" margin-right="0mm"/>        <fo:region-after extent="10mm"/>      </fo:simple-page-master>    </fo:layout-master-set>    <fo:page-sequence master-reference="page">      <fo:static-content flow-name="xsl-region-after">        <fo:block>          <xsl:text>Page </xsl:text>          <fo:page-number/>        </fo:block>      </fo:static-content>      <fo:flow flow-name="xsl-region-body">        <xsl:apply-templates/>      </fo:flow>    </fo:page-sequence>  </fo:root></xsl:template><xsl:template match="chapter/title">  <fo:block>    <xsl:number level="multiple" count="chapter" format="1. "/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="ref">  <xsl:text>page </xsl:text>  <fo:page-number-citation refid="{generate-id(id(@refid)/title)}"/></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:root>  <fo:layout-master-set>    <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">      <fo:region-body margin-top="0mm" margin-bottom="15mm"        margin-left="0mm" margin-right="0mm"/>      <fo:region-after extent="10mm"/>    </fo:simple-page-master>  </fo:layout-master-set>  <fo:page-sequence master-reference="page">    <fo:static-content flow-name="xsl-region-after">      <fo:block>Page <fo:page-number/>      </fo:block>    </fo:static-content>    <fo:flow flow-name="xsl-region-body">      <fo:block>1. Chapter</fo:block>      <fo:block>Text</fo:block>      <fo:block>2. Chapter</fo:block>      <fo:block>For a description of X see page <fo:page-number-citation refid="N5"/>      </fo:block>    </fo:flow>  </fo:page-sequence></fo:root>
6.6.1.1.4 Table of Contents with Leaders

Input sample:

<doc>  <chapter><title>Chapter</title>    <p>Text</p>    <section><title>Section</title>    <p>Text</p>    </section>    <section><title>Section</title>    <p>Text</p>    </section>  </chapter>  <chapter><title>Chapter</title>    <p>Text</p>    <section><title>Section</title>    <p>Text</p>    </section>    <section><title>Section</title>    <p>Text</p>    </section>  </chapter></doc>

In this example the table of contents is formatted with a dot leaderbetween the heading text and the page number.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="doc">  <!-- create the table of contents -->  <xsl:apply-templates select="chapter/title" mode="toc"/>  <!-- do the document -->  <xsl:apply-templates/></xsl:template><xsl:template match="chapter/title" mode="toc">  <fo:block text-align-last="justify">    <fo:basic-link internal-destination="{generate-id(.)}">      <xsl:number level="multiple" count="chapter" format="1. "/>      <xsl:apply-templates/>    </fo:basic-link>    <xsl:text> </xsl:text>    <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"               leader-length.maximum="100%" leader-pattern="dots"/>    <xsl:text> </xsl:text>    <fo:page-number-citation ref-id="{generate-id(.)}"/>  </fo:block>  <xsl:apply-templates select="../section/title" mode="toc"/></xsl:template><xsl:template match="section/title" mode="toc">  <fo:block start-indent="10mm" text-align-last="justify">    <fo:basic-link internal-destination="{generate-id(.)}">      <xsl:number level="multiple" count="chapter|section" format="1.1 "/>      <xsl:apply-templates/>    </fo:basic-link>    <xsl:text> </xsl:text>    <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"               leader-length.maximum="100%" leader-pattern="dots"/>    <xsl:text> </xsl:text>    <fo:page-number-citation ref-id="{generate-id(.)}"/>  </fo:block></xsl:template><xsl:template match="chapter/title">  <fo:block>    <xsl:number level="multiple" count="chapter" format="1. "/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="section/title">  <fo:block>    <xsl:number level="multiple" count="chapter|section" format="1.1 "/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:block text-align-last="justify">  <fo:basic-link internal-destination="N4">1. Chapter  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N4">  </fo:page-number-citation></fo:block><fo:block start-indent="10mm" text-align-last="justify">  <fo:basic-link internal-destination="N11">1.1 Section  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N11">  </fo:page-number-citation></fo:block><fo:block start-indent="10mm" text-align-last="justify">  <fo:basic-link internal-destination="N19">1.2 Section  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N19">  </fo:page-number-citation></fo:block><fo:block text-align-last="justify">  <fo:basic-link internal-destination="N28">2. Chapter  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N28">  </fo:page-number-citation></fo:block><fo:block start-indent="10mm" text-align-last="justify">  <fo:basic-link internal-destination="N35">2.1 Section  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N35">  </fo:page-number-citation></fo:block><fo:block start-indent="10mm" text-align-last="justify">  <fo:basic-link internal-destination="N43">2.2 Section  </fo:basic-link>  <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt"    leader-length.maximum="100%" leader-pattern="dots">  </fo:leader>  <fo:page-number-citation ref-id="N43">  </fo:page-number-citation></fo:block><fo:block>1. Chapter</fo:block><fo:block>Text</fo:block><fo:block>1.1 Section</fo:block><fo:block>Text</fo:block><fo:block>1.2 Section</fo:block><fo:block>Text</fo:block><fo:block>2. Chapter</fo:block><fo:block>Text</fo:block><fo:block>2.1 Section</fo:block><fo:block>Text</fo:block><fo:block>2.2 Section</fo:block><fo:block>Text</fo:block>

6.6.2 fo:bidi-override

Common Usage:

The fo:bidi-override formatting object is used when the Unicode BIDIalgorithm fails. It forces a string of text to be written in a specificdirection.

Areas:

The fo:bidi-override formatting object generates one or morenormalinline-areas.The fo:bidi-override returns these areas,together with anynormal block-areas,page-level-out-of-line areas,andreference-level-out-of-lineareas returned by the children of the fo:bidi-override.

Trait Derivation:

The direction traits are derived from the "writing-mode","direction", and "unicode-bidi" properties as described in5.5.3 Writing-mode and Direction Properties.

Constraints:

No area may have more than one normal child areareturned by the same fo:bidi-override formatting object.

The children of each normal area returned by an fo:bidi-overridemust satisfy the constraints specified in4.7.3 Inline-building.

Contents:

(#PCDATA|%inline;|%block;)*

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

An fo:bidi-override that is a descendant of an fo:leader or ofthe fo:inline childof an fo:footnote may not have block-level children,unless it has a nearer ancestor that is an fo:inline-container.

The following properties apply to this formatting object:

7.7 Common Aural Properties
7.9 Common Font Properties
7.13 Common Relative Position Properties
7.18.1 color
7.29.1 direction
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.17.2 letter-spacing
7.16.4 line-height
7.30.15 score-spaces
7.29.6 unicode-bidi
7.17.8 word-spacing

6.6.3 fo:character

Common Usage:

The fo:character flow object represents a character thatis mapped toa glyph for presentation. It is an atomic unit to the formatter.

When the result tree is interpreted as a tree of formatting objects,a character in the result tree is treated as if it were an emptyelement of type fo:character with a character attributeequal to the Unicode representation of the character.The semantics of an "auto" value for character properties, which istypically their initial value,are based on the Unicode code point. Overrides may be specified inan implementation-specific manner.

Note:

In a stylesheet the explicit creation of an fo:character may beused to explicitly override the default mapping.

Unicode Tag Characters need not be supported.

Note:

Unicode Version 3.1, in fact,states that they are not to be used"withany protocols that provide alternate means for language tagging,such as HTML or XML.".Unicode TR20 ([UNICODE TR20]) alsodeclares very clearly that they are not suitable together withmarkup.

Areas:

The fo:character formatting object generates and returnsone or morenormalinline-area.

Note:

Cases where more than oneinline-area is generatedare encountered in scripts where a single character generates both aprefix and a suffix glyph to some other character.

Constraints:

The dimensions of the areas are determined by the font metrics forthe glyph.

When formatting an fo:character with a "treat-as-word-space" valueof "true", the User Agent may use a different method for determiningtheinline-progression-dimension of the area.

Note:

Such methods typically make use ofa word space value stored in the font, ora formatter defined word space value.

Contents:

EMPTY

The following properties apply to this formatting object:

7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.10 Common Hyphenation Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.17.7 treat-as-word-space
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.17.1 character
7.18.1 color
7.14.5 dominant-baseline
7.29.5 text-depth
7.29.4 text-altitude
7.29.2 glyph-orientation-horizontal
7.29.3 glyph-orientation-vertical
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.17.2 letter-spacing
7.16.4 line-height
7.30.15 score-spaces
7.17.3 suppress-at-line-break
7.17.4 text-decoration
7.17.5 text-shadow
7.17.6 text-transform
7.30.17 visibility
7.17.8 word-spacing

6.6.4 fo:initial-property-set

Common Usage:

The fo:initial-property-set auxiliary formatting objectspecifies formatting propertiesfor the first line of an fo:block.

Note:

It is analogous to the CSS first-line pseudo-element.

In future versions of this Recommendation a property controllingthe number of lines, or the "depth" that these initial propertiesapply to may be added.

Areas:

The fo:initial-property-set formatting object does not generateor return any areas. It simply holds a set of traits that are applicableto the first line-area of the area thathas a value of "true" for theis-first trait and that wasgenerated by the parent fo:block of the fo:initial-property-set.

Trait Derivation:

The traits on the fo:initial-property-set are taken intoaccount as traits constraining the first line as ifthe child inline formatting objects of the fo:block,or parts of them in thecase of a line-break, that were used in formattingthe first line were enclosed by an fo:inline, as a directchild of the fo:block, with those traits.

Constraints:

None.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.13 Common Relative Position Properties
7.18.1 color
7.17.2 letter-spacing
7.16.4 line-height
7.30.15 score-spaces
7.17.4 text-decoration
7.17.5 text-shadow
7.17.6 text-transform
7.17.8 word-spacing

6.6.5 fo:external-graphic

Common Usage:

The fo:external-graphic flow object is used for agraphic where the graphics data resides outside of the fo:element tree.

Areas:

The fo:external-graphicformatting object generates and returns one inline-levelviewport-area and one reference-area containing the external graphic.The inline-level area uses thelarge-allocation-rectangleas defined in4.2.3 Geometric Definitions.

Note:

An fo:external-graphic may be placedblock-level by enclosing it in an fo:block.

A "line-stacking-strategy" of "max-height" or "line-height" istypically used for stacking one or more lines with fo:external-graphiccontent.

Constraints:

The viewport's size is determined by theblock-progression-dimension andinline-progression-dimension traits.For values of "auto", the content size of the graphic is used.

The content size of a graphic is determined by taking theintrinsic size of the graphic and scaling as specified by thecontent-height,content-width,scaling,allowed-height-scale,andallowed-width-scale traits.If one of the content-height orcontent-width is not "auto", the same scale factor(as calculated from the specified non-auto value) is applied equally toboth directions.

Once scaled, the reference-areais aligned with respect to the viewport-areausing thetext-align anddisplay-aligntraits. If it is too large for the viewport-area,the graphic is aligned as if it would fit and theoverflowtrait controls the clipping, scroll bars, etc.

In the case when the graphics format does not specify an intrinsicsize of the graphic the size is determined in an implementation-definedmanner.

Note:

For example, a size of 1/96" as the sizeof one pixel for rasterized images may be used.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.15.1 allowed-height-scale
7.15.2 allowed-width-scale
7.14.3 baseline-shift
7.15.3 block-progression-dimension
7.21.1 clip
7.15.4 content-height
7.30.7 content-type
7.15.5 content-width
7.14.4 display-align
7.14.5 dominant-baseline
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.4 line-height
7.21.2 overflow
7.15.12 scaling
7.15.13 scaling-method
7.30.16 src
7.16.9 text-align
7.15.14 width

6.6.6 fo:instream-foreign-object

Common Usage:

The fo:instream-foreign-object flow object is used for an inlinegraphic or other "generic" objectwhere the object data resides as descendants of thefo:instream-foreign-object, typically as an XML element subtree ina non-XSL namespace.

Note:

A common format is SVG.

Areas:

The fo:instream-foreign-objectformatting object generates and returns one inlineviewport-area and one reference-area containing the instream-foreign-object.The inline-level area uses thelarge-allocation-rectangleas defined in4.2.3 Geometric Definitions.

Constraints:

The viewport's size is determined by theblock-progression-dimension andinline-progression-dimension traits.For values of "auto", the content size of the instream foreign object is used.

The content size of an instream-foreign-object is determined by taking theintrinsic size of the object and scaling as specified by thecontent-height,content-width,scaling,allowed-height-scale,andallowed-width-scale traits.If one of the content-height orcontent-width is not "auto", the same scale factor(as calculated from the specified non-auto value) is applied equally toboth directions.

Once scaled, the reference-areais aligned with respect to the viewport-areausing thetext-align anddisplay-aligntraits. If it is too large for the viewport-area,the instream-foreign-object is aligned as if it would fit and theoverflowtrait controls the clipping, scroll bars, etc.

In the case when the instream-foreign-object does not specify an intrinsicsize of the object, the size is determined in an implementation definedmanner.

Contents:

The fo:instream-foreign-object flow object hasa child from a non-XSLnamespace. The permitted structure of this child is thatdefined for that namespace.

The fo:instream-foreign-object flow object may have additional attributesin the non-XSL namespace. These,as well as the xsl defined properties,are made available to the processorof the content of the flow object. Their semantics are defined by thatnamespace.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.15.1 allowed-height-scale
7.15.2 allowed-width-scale
7.14.3 baseline-shift
7.15.3 block-progression-dimension
7.21.1 clip
7.15.4 content-height
7.30.7 content-type
7.15.5 content-width
7.14.4 display-align
7.14.5 dominant-baseline
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.4 line-height
7.21.2 overflow
7.15.12 scaling
7.15.13 scaling-method
7.16.9 text-align
7.15.14 width

6.6.7 fo:inline

Common Usage:

The fo:inline formatting object is commonly used for formattinga portion of text with a background or enclosing it in a border.

Areas:

The fo:inline formatting object generates one or morenormalinline-areas.The fo:inline returns these areas,together with anynormal block-areas,page-level-out-of-line areas,andreference-level-out-of-lineareas returned by the children of the fo:inline.

Constraints:

No area may have more than one normal child areareturned by the same fo:inline formatting object.

The children of each normal area returned by an fo:inlinemust satisfy the constraints specified in4.7.3 Inline-building.

In addition the constraints imposed by the traits derived from theproperties applicable to this formatting object must be satisfied.The geometric constraints are rigorously defined in4 Area Model.

Contents:

(#PCDATA|%inline;|%block;)*

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

An fo:inline that is a child of an fo:footnote may not haveblock-level children.An fo:inline that is a descendant of an fo:leader or of thefo:inline child of an fo:footnotemay not have block-level children, unless it has a nearer ancestor thatis an fo:inline-container.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.15.3 block-progression-dimension
7.18.1 color
7.14.5 dominant-baseline
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.4 line-height
7.17.4 text-decoration
7.30.17 visibility
7.15.14 width
7.16.13 wrap-option

6.6.8 fo:inline-container

Common Usage:

The fo:inline-container flow object is used togenerate an inline reference-area, typically containingtext blocks with a different writing-mode.

Note:

The use of this flow object is not required forbi-directional text;in this case the Unicode BIDIalgorithm and the fo:bidi-override are sufficient.

Areas:

The fo:inline-container formatting object generates one or moreviewport/reference pairs.All generated viewport-areas aresubject to the constraints given by the block-progression-dimension andinline-progression-dimension traits of the fo:inline-container. Thefo:inline-container returns these areas and any page-level-out-of-lineareas returned by the children of the fo:inline-container.

Note:

In the case that the block-progression-dimension.maximumis other than "auto", then overflow processing may apply.The "repeat" value of overflow can be used to generate multipleviewport/reference pairs if this is desired rather than clipping orscrolling.

If the absolute-position trait is "auto", these areas all have anarea-class of "xsl-normal". If the absolution-position trait is"absolute" or "fixed" then there is one viewport/reference pair, and itsarea-class is "xsl-absolute" or "xsl-fixed", respectively.

Trait Derivation:

The reference-orientation and writing-mode traits of the viewport-areaand reference-area come from the fo:inline-container. These determinethe orientation of the start-edge, end-edge, before-edge and after-edgeof the content-rectangle of the viewport-area, and of the padding-,border-, and content-rectangles of the reference-area.Thereference-orientation of thereference-area is set to "0" and is, therefore, thesame as the orientation established by the viewport-area.The inline-progression-dimension of the reference-area is the same as thatof the viewport-area, and may not be "auto" if theinline-progression-direction is different from that of the parent of thefo:inline-container. The block-progression-dimension of thereference-area is not constrained; thus the reference-area may be largerthan the viewport-area and this may cause the "overflow" property tooperate.

Note:

As a property value applies to each of the areasgenerated by this flow object the size can vary from instanceto instance if the value is "auto" or a<length-range>.

The values in the baseline-table ofthis object are calculated as follows:

baseline

If the writing mode has a block-progression-direction thatis parallel to the block-progression-direction of the parent:the alignment-point is at the position of the dominant-baselineof the first descendant line-area. If there is no such line-areathe alignment-point is at the position of the after-edge of the allocation rectangle.

If the writing mode has a block-progression-direction thatis not parallel to the block-progression-direction of the parent:the alignment-point is at the position that is half way betweenthe before-edge and after-edge of the content rectangle.

before-edge

The alignment-point is at the position of the before-edge ofthe allocation rectangle.

text-before-edge

The alignment-point is at the position that is the closestto the before-edge of the allocation rectangle selected from thetwo candidate edges.If the writing mode has a block-progression-direction thatis parallel to the block-progression-direction of the parentthe candidate edges are the before-edge andthe after-edge of the content rectangle; if it is not, the candidateedges are the start-edge and the end-edge of the content rectangle.

middle

The alignment-point is at the position that is half way betweenthe before-edge and after-edge of the allocation rectangle.

after-edge

The alignment-point is at the position of the after-edge ofthe allocation rectangle.

text-after-edge

The alignment-point is at the position that is the closestto the after-edge of the allocation rectangle selected from thetwo candidate edges.If the writing mode has a block-progression-direction thatis parallel to the block-progression-direction of the parentthe candidate edges are the before-edge andthe after-edge of the content rectangle; if it is not, the candidateedges are the start-edge and the end-edge of the content rectangle.

ideographic

The alignment-point is at the position that is7/10 of the distance from the before-edge of the allocation rectangleto the after-edge of the allocation rectangle.

alphabetic

The alignment-point is at the position that is6/10 of the distance from the before-edge of the allocation rectangleto the after-edge of the allocation rectangle.

hanging

The alignment-point is at the position that is2/10 of the distance from the before-edge of the allocation rectangleto the after-edge of the allocation rectangle.

mathematical

The alignment-point is at the position that is5/10 of the distance from the before-edge of the allocation rectangleto the after-edge of the allocation rectangle.

Constraints:

No area may have more than one normal child areareturned by the same fo:inline-container formatting object.

The children of each reference-area generated by an fo:inline-containerformatting objectmust be normalblock-areas returned by the children of the fo:inline-container,must beproperly stacked, andmust beproperly ordered.

Anyreference-level-out-of-lineareas returned by the children of the fo:inline-containerare handled as described in6.12.2 fo:float.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.15.3 block-progression-dimension
7.21.1 clip
7.14.4 display-align
7.14.5 dominant-baseline
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.4 line-height
7.21.2 overflow
7.21.3 reference-orientation
7.15.14 width
7.29.7 writing-mode

6.6.9 fo:leader

Common Usage:

The fo:leader formatting object is often used:

  • in table-of-contentsto generate sequences of "." glyphs that separatetitles from page numbers

  • to create entry fields in fill-in-the-blank forms

  • to create horizontal rules for use as separators

Areas:

The fo:leader formatting object generates and returnsa single normalinline-area.

Trait Derivation:

If the value of theleader-pattern is "use-content"theblock-progression-dimension of the content-rectangle is determinedin the same manner as for inline-areas; otherwise it is determined bytherule-thickness trait.

Constraints:

If the leader's minimum length is too long to place in theline-area, the leader will begin a new line. If it is too long to beplaced in a line by itself, it will overflow the line and potentiallyoverflow the reference-area in accordance with that container'soverflow trait.

The fo:leader formatting object can have any inline formatting objects andcharacters as its children, except that fo:leaders may not be nested.Its childrenare ignored unless the value of theleader-pattern trait is "use-content".

Note:

If the value of theleader-pattern trait is "use-content"and the fo:leader has no children, the leader shall be filled withblank space.

The inline-area generated by the fo:leader has a dimension in theinline-progression-direction which shall be at least theleader-length.minimum and at most theleader-length.maximum.

For lines-areas that have been specified to be justified, the justifiedline-area must honor theleader-alignment trait of any inline-areasgenerated by fo:leaders.

If the value of theleader-pattern trait is "dots" or "use-content",the following constraint applies:

The inline-area generated by the fo:leader has as its children the areasreturned by children of the fo:leader, or obtained by formatting the patternspecified in theleader-pattern trait, repeated an integral number oftimes. If the width of even a single repetition is larger than the dimensionof the inline-area in the inline-progression-direction, the inline-area shallbe filled with blank space. The space-start and space-end of the child areasis set to account for the constraints specified in theleader-pattern-widthandleader-alignment traits.

Note:

If it is desired that the leader should stretch to fill all available spaceon a line, the maximum length of the leader should be specified to be at least aslarge as the column width.

Note:

The alignment of the leader may be script specific and may require indicatingwhat alignment point is required, because it is different from the default alignment forthe script. For example, in some usage of Indic scripts the leader is aligned at thealphabetic baseline.

Note:

An fo:leader can be wrapped in an fo:block, yielding a block-areawith a line-area containing the leader,to create a rule for separatingor decorating block-areas.

Contents:

(#PCDATA|%inline;)*

The content must not contain an fo:leader, fo:inline-container,fo:block-container,fo:float, fo:footnote, or fo:markereither as a direct child or as a descendant.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.18.1 color
7.14.5 dominant-baseline
7.29.5 text-depth
7.29.4 text-altitude
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.22.1 leader-alignment
7.22.4 leader-length
7.22.2 leader-pattern
7.22.3 leader-pattern-width
7.22.5 rule-style
7.22.6 rule-thickness
7.17.2 letter-spacing
7.16.4 line-height
7.17.5 text-shadow
7.30.17 visibility
7.17.8 word-spacing

6.6.10 fo:page-number

Common Usage:

The fo:page-number formatting object is used to obtain aninline-areawhose content isthe page-number for the page on which the inline-area isplaced.

Areas:

The fo:page-number formatting object generates and returnsa single normalinline-area.

Constraints:

The content of the inline-area depends on thereference-page and thereference-page-sequence.For the fo:page-number thereference-page is the pageon which the inline-area is placed and thereference-page-sequence is the ancestor fo:page-sequenceof the fo:page-number.

The child areas of this inline-area are the same as the result offormatting a result-tree fragment consisting ofthe content of any fo:folio-prefix child of thereference-page-sequence,followed by fo:character flowobjects; one for each character in the folio-number string andwith only the "character" property specified,followed by thecontent of any fo:folio-suffix child of thereference-page-sequence.

The folio-number string is obtained by converting the folio-numberfor thereference-page in accordance with thenumber to string conversion properties of thereference-page-sequence.

Note:

The conversion properties are:7.26.1 format,7.26.2 grouping-separator,7.26.3 grouping-size,7.26.4 letter-value,7.10.1 country, and7.10.2 language.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.14.5 dominant-baseline
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.17.2 letter-spacing
7.16.4 line-height
7.30.15 score-spaces
7.29.4 text-altitude
7.17.4 text-decoration
7.29.5 text-depth
7.17.5 text-shadow
7.17.6 text-transform
7.30.17 visibility
7.17.8 word-spacing
7.16.13 wrap-option

6.6.11 fo:page-number-citation

Common Usage:

The fo:page-number-citation is used to reference thepage-number for the page containing the firstnormalarea returned by the cited formattingobject.

Note:

It may be used to provide the page-numbers in the table of contents,cross-references, and index entries.

Areas:

The fo:page-number-citation formatting object generates and returnsa single normalinline-area.

Constraints:

Thecited page is the page containing,as a descendant, thefirst normal area returned by the formatting object withanid trait matching theref-id traitof the fo:page-number-citation (the referenced formatting object).

The child areas of the generated inline-area are the same asthe result of formatting the result-tree fragment,defined in6.6.10 fo:page-number,using thecited page as thereference-page,and the fo:page-sequence that generated thecited-pageas thereference-page-sequence.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.14.5 dominant-baseline
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.17.2 letter-spacing
7.16.4 line-height
7.30.13 ref-id
7.30.15 score-spaces
7.29.4 text-altitude
7.17.4 text-decoration
7.29.5 text-depth
7.17.5 text-shadow
7.17.6 text-transform
7.30.17 visibility
7.17.8 word-spacing
7.16.13 wrap-option

6.6.12 fo:page-number-citation-last

Common Usage:

The fo:page-number-citation-last is used to reference thepage-number for the last page containing anarea that is (a) returned by the cited formattingobject and (b) has an area-class that is consistent with the specified page-citation-strategy.

Note:

It may be used to provide the page-numbers in the table of contents,cross-references, and, when combined with fo:page-number-citation, for page range entries.

Areas:

The fo:page-number-citation-last formatting object generates and returnsa single normalinline-area.

Constraints:

Thecited page is the page of the last page area(in the pre-order traversal order of the area tree) that satisfiesthe constraints of thepage-citation-strategy onthis fo:page-number-citation-last.

The child areas of the generated inline-area are the same asthe result of formatting the result-tree fragment,defined in6.6.10 fo:page-number,using thecited page as thereference-page,and the fo:page-sequence that generated thecited-pageas thereference-page-sequence.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.14.5 dominant-baseline
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.17.2 letter-spacing
7.16.4 line-height
7.30.10 page-citation-strategy
7.30.13 ref-id
7.30.15 score-spaces
7.29.4 text-altitude
7.17.4 text-decoration
7.29.5 text-depth
7.17.5 text-shadow
7.17.6 text-transform
7.30.17 visibility
7.17.8 word-spacing
7.16.13 wrap-option

6.6.13 fo:folio-prefix

Common Usage:

The fo:folio-prefix formatting object specifiesa static prefix for the folio numbers within a page-sequence.

Areas:

The fo:folio-prefix formatting object does not directly produceany areas.Its children will be retrieved and used when formatting page numbers.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

An fo:folio-prefix is not permitted to have anfo:page-number, fo:page-number-citation, or fo:page-number-citation-lastas a descendant.

6.6.14 fo:folio-suffix

Common Usage:

The fo:folio-suffix formatting object specifiesa static suffix for the folio numbers within a page-sequence.

Areas:

The fo:folio-suffix formatting object does not directly produceany areas.Its children will be retrieved and used when formatting page numbers.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

An fo:folio-suffix is not permitted to have anfo:page-number, fo:page-number-citation, or fo:page-number-citation-lastas a descendant.

6.6.15 fo:scaling-value-citation

Common Usage:

The fo:scaling-value-citation is used to obtain thescale-factor applied to the cited fo:external-graphic.

Note:

It may be used to provide the scale used in applications where agraphic is normally shown at true size, but is scaled down if itdoes not fit.

Areas:

The fo:scaling-value-citation formatting object generates and returnsa single normalinline-area.

Constraints:

Thecited fo:external-graphic is the fo:external-graphicwithanid trait matching theref-id traitof the fo:scaling-value-citation.

Theapplied scale-factor is the scale-factor that wasapplied to the intrinsic size of the cited fo:external-graphicmultiplied by the value of the "intrinsic-scale-value" property.It is expressed as an integer percentage value.The "scale-option" property specifies if the scale-factor for the widthor height should be used.

Note:

In the case when the graphics format does not specify an intrinsicsize of the graphic and the size has been determined in animplementation-defined manner the scale factor obtained may not bemeaningful.

Theapplied scale-factor string is obtained by convertingthe applied scale-factor in accordance with thenumber to string conversion properties.

Note:

The conversion properties are:7.26.1 format,7.26.2 grouping-separator,7.26.3 grouping-size,7.26.4 letter-value,7.10.1 country, and7.10.2 language.

The child areas of the generated inline-area are the same as the result offormatting a result-tree fragment consisting of fo:character flowobjects; one for each character in the applied scale-factor string andwith only the "character" property specified.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.9 Common Font Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.10.1 country
7.14.5 dominant-baseline
7.26.1 format
7.26.2 grouping-separator
7.26.3 grouping-size
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.10.2 language
7.17.2 letter-spacing
7.26.4 letter-value
7.16.4 line-height
7.30.9 intrinsic-scale-value
7.30.13 ref-id
7.30.15 score-spaces
7.30.14 scale-option
7.29.4 text-altitude
7.17.4 text-decoration
7.29.5 text-depth
7.17.5 text-shadow
7.17.6 text-transform
7.30.17 visibility
7.17.8 word-spacing
7.16.13 wrap-option

6.7 Formatting Objects for Tables

6.7.1 Introduction

There are nine formatting objects used to construct tables:fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row, andfo:table-cell.The result tree structure is shown below.

Tree representation of the Formatting Objects for tables   [D]

Tree Representation of the Formatting Objects for Tables

6.7.1.1 Examples
6.7.1.1.1 Simple Table, Centered and Indented

Input sample:

<doc><table><caption><p>Caption for this table</p></caption><tgroup cols="3" width="325pt"><colspec colwidth="100pt"/><colspec colwidth="150pt"/><colspec colwidth="75pt"/><tbody><row><entry><p>Cell 1</p></entry><entry><p>Cell 2</p></entry><entry><p>Cell 3</p></entry></row></tbody></tgroup></table></doc>

The table and its caption is centered in the available spacebetween the following indents: start-indent="100pt" and end-indent="0pt".The centering and indent is not desired for the content of the captionand the cells.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:attribute-set name="inside-table">  <xsl:attribute name="start-indent">0pt</xsl:attribute>  <xsl:attribute name="text-align">start</xsl:attribute></xsl:attribute-set><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="table">  <fo:table-and-caption text-align="center" start-indent="100pt">    <xsl:apply-templates/>  </fo:table-and-caption></xsl:template><xsl:template match="caption">  <fo:table-caption xsl:use-attribute-sets="inside-table">    <xsl:apply-templates/>  </fo:table-caption></xsl:template><xsl:template match="tgroup">  <fo:table width="{@width}" table-layout="fixed">    <xsl:apply-templates/>  </fo:table></xsl:template><xsl:template match="colspec">  <fo:table-column column-width="{@colwidth}">    <xsl:attribute name="column-number">      <xsl:number count="colspec"/>    </xsl:attribute>  </fo:table-column></xsl:template><xsl:template match="tbody">  <fo:table-body xsl:use-attribute-sets="inside-table">    <xsl:apply-templates/>  </fo:table-body></xsl:template><xsl:template match="row">  <fo:table-row>    <xsl:apply-templates/>  </fo:table-row></xsl:template><xsl:template match="entry">  <fo:table-cell>    <xsl:apply-templates/>  </fo:table-cell></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:table-and-caption text-align="center" start-indent="100pt">  <fo:table-caption start-indent="0pt" text-align="start">    <fo:block>Caption for this table    </fo:block>  </fo:table-caption>  <fo:table width="325pt" table-layout="fixed">    <fo:table-column column-width="100pt" column-number="1">    </fo:table-column>    <fo:table-column column-width="150pt" column-number="2">    </fo:table-column>    <fo:table-column column-width="75pt" column-number="3">    </fo:table-column>    <fo:table-body start-indent="0pt" text-align="start">    <fo:table-row>    <fo:table-cell>    <fo:block>Cell 1    </fo:block>    </fo:table-cell>    <fo:table-cell>    <fo:block>Cell 2    </fo:block>    </fo:table-cell>    <fo:table-cell>    <fo:block>Cell 3    </fo:block>    </fo:table-cell>    </fo:table-row>    </fo:table-body>  </fo:table></fo:table-and-caption>
6.7.1.1.2 Simple Table with Relative Column-width Specifications

This example is using a simple, "Oasis-table-model-like", markup for thetable elements. The column-widths are specified using fullrelative column-width specification.

Input sample:

<doc><table><tgroup cols="3"><colspec colname="col1" colwidth="1*"/><colspec colname="col2" colwidth="2*+2pi"/><colspec colname="col3" colwidth="72"/><tbody><row><entry colnum="1" valign="top"><p>Cell 1</p></entry><entry colnum="2" valign="middle" align="center"><p>Cell 2</p></entry><entry colnum="3" align="center"><p>Cell 3</p></entry></row></tbody></tgroup></table></doc>

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="table">  <fo:table width="12cm" table-layout="fixed">    <xsl:apply-templates/>  </fo:table></xsl:template><xsl:template match="colspec">  <fo:table-column>    <xsl:attribute name="column-number">      <xsl:number count="colspec"/>    </xsl:attribute>    <xsl:attribute name="column-width">      <xsl:call-template name="calc.column.width">        <xsl:with-param name="colwidth">          <xsl:value-of select="@colwidth"/>        </xsl:with-param>      </xsl:call-template>    </xsl:attribute>  </fo:table-column></xsl:template><xsl:template match="tbody">  <fo:table-body>    <xsl:apply-templates/>  </fo:table-body></xsl:template><xsl:template match="row">  <fo:table-row>    <xsl:apply-templates/>  </fo:table-row></xsl:template><xsl:template match="entry">  <fo:table-cell column-number="{@colnum}">    <xsl:if test="@valign">      <xsl:choose>        <xsl:when test="@valign='middle'">          <xsl:attribute name="display-align">center</xsl:attribute>        </xsl:when>        <xsl:when test="@valign='top'">          <xsl:attribute name="display-align">before</xsl:attribute>        </xsl:when>        <xsl:when test="@valign='bottom'">          <xsl:attribute name="display-align">after</xsl:attribute>        </xsl:when>        <xsl:otherwise>          <xsl:attribute name="display-align">before</xsl:attribute>        </xsl:otherwise>      </xsl:choose>    </xsl:if>    <xsl:if test="@align">      <xsl:attribute name="text-align">        <xsl:value-of select="@align"/>      </xsl:attribute>    </xsl:if>    <xsl:apply-templates/>  </fo:table-cell></xsl:template><xsl:template name="calc.column.width"><!-- **     * <p>Calculate an XSL FO table column-width specification from a     * full relative table column-width specification.</p>     *     * <p>Table column-widths are in the following basic     * forms:</p>     *     * <ul>     * <li><b>99.99units</b>, a fixed length-specifier.</li>     * <li><b>99.99</b>, a fixed length-specifier without any units.</li>     * <li><b>99.99*</b>, a relative length-specifier.</li>     * <li><b>99.99*+99.99units</b>, a combination of both.</li>     * </ul>     *     * <p>The 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 default unit (pt) is assumed.</p>     *     * <p>Relative length-specifiers are represented in XSL with the     * proportional-column-width() function.</p>     *     * <p>Here are some examples:</p>     *     * <ul>     * <li>"36pt" becomes "36pt"</li>     * <li>"3pi" becomes "3pc"</li>     * <li>"36" becomes "36pt"</li>     * <li>"3*" becomes "proportional-column-width(3)"</li>     * <li>"3*+2pi" becomes "proportional-column-width(3)+2pc"</li>     * <li>"1*+2" becomes "proportional-column-width(1)+2pt"</li>     * </ul>     *     * @param colwidth The column width specification.     *     * @returns The XSL column width specification.     * -->  <xsl:param name="colwidth">1*</xsl:param>  <!-- Ok, the colwidth could have any one of the following forms: -->  <!--        1*       = proportional width -->  <!--     1unit       = 1.0 units wide -->  <!--         1       = 1pt wide -->  <!--  1*+1unit       = proportional width + some fixed width -->  <!--      1*+1       = proportional width + some fixed width -->  <!-- If it has a proportional width, translate it to XSL -->  <xsl:if test="contains($colwidth, '*')">    <xsl:text>proportional-column-width(</xsl:text>    <xsl:value-of select="substring-before($colwidth, '*')"/>    <xsl:text>)</xsl:text>  </xsl:if>  <!-- Now get the non-proportional part of the specification -->  <xsl:variable name="width-units">    <xsl:choose>      <xsl:when test="contains($colwidth, '*')">        <xsl:value-of             select="normalize-space(substring-after($colwidth, '*'))"/>      </xsl:when>      <xsl:otherwise>        <xsl:value-of select="normalize-space($colwidth)"/>      </xsl:otherwise>    </xsl:choose>  </xsl:variable>  <!-- Now the width-units could have any one of the following forms: -->  <!--                 = <empty string> -->  <!--     1unit       = 1.0 units wide -->  <!--         1       = 1pt wide -->  <!-- with an optional leading sign -->  <!-- Get the width part by blanking out the units part and discarding -->  <!-- white space. -->  <xsl:variable name="width"       select="normalize-space(translate($width-units,                                         '+-0123456789.abcdefghijklmnopqrstuvwxyz',                                         '+-0123456789.'))"/>  <!-- Get the units part by blanking out the width part and discarding -->  <!-- white space. -->  <xsl:variable name="units"       select="normalize-space(translate($width-units,                                         'abcdefghijklmnopqrstuvwxyz+-0123456789.',                                         'abcdefghijklmnopqrstuvwxyz'))"/>  <!-- Output the width -->  <xsl:value-of select="$width"/>  <!-- Output the units, translated appropriately -->  <xsl:choose>    <xsl:when test="$units = 'pi'">pc</xsl:when>    <xsl:when test="$units = '' and $width != ''">pt</xsl:when>    <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise>  </xsl:choose></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:table width="12cm" table-layout="fixed">  <fo:table-column column-number="1" column-width="proportional-column-width(1)">  </fo:table-column>  <fo:table-column column-number="2" column-width="proportional-column-width(2)+2pc">  </fo:table-column>  <fo:table-column column-number="3" column-width="72pt">  </fo:table-column>  <fo:table-body>    <fo:table-row>      <fo:table-cell column-number="1" display-align="before">        <fo:block>Cell 1        </fo:block>      </fo:table-cell>      <fo:table-cell column-number="2" display-align="center" text-align="center">        <fo:block>Cell 2        </fo:block>      </fo:table-cell>      <fo:table-cell column-number="3" text-align="center">        <fo:block>Cell 3        </fo:block>      </fo:table-cell>    </fo:table-row>  </fo:table-body></fo:table>

6.7.2 fo:table-and-caption

Common Usage:

The fo:table-and-caption flow object is used forformatting a tabletogether with its caption.

Note:

An fo:table-and-caption may be placed inline by enclosingit in an fo:inline-container.

Note:

This formatting object corresponds to the CSS anonymousbox that encloses the table caption and the table.

Areas:

The fo:table-and-caption formatting object generates one or morenormalblock-areas.The fo:table-and-caption returns these areas, anypage-level-out-of-line areas, andanyreference-level-out-of-line areasreturned by the children of the fo:table-and-caption.

Constraints:

No area may have more than one normal child areareturned by the same fo:table-and-caption formatting object.

The children of the areas generated by the fo:table-and-captionare 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 thecaption-side trait.They are placed relative to the content-rectangle of the generated areaas specified by thetext-align trait.

Contents:

(table-caption?,table)

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.13 Common Relative Position Properties
7.20.1 break-after
7.20.2 break-before
7.28.7 caption-side
7.19.1 clear
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.19.3 intrusion-displace
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.9 text-align

6.7.3 fo:table

Common Usage:

The fo:table flow object is used for formatting thetabular materialof a table.

The fo:table flow object and its child flow objectsmodel thevisual layout of a table in a "row primary" manner. A complete tablemay be seen as consisting of a grid of rows and columns where eachcell occupies one or more grid units in the row-progression-directionand column-progression-direction.

The table content is divided into a header (optional), footer (optional),and one or more bodies. Properties specify if the headers and footersshould be repeated at a break in the table. Each of these parts occupiesone or more rows in the table grid.

Areas:

The fo:table formatting object generates andreturns one or morenormalblock-areas.These areasconsist of the content of the fo:table-header(unless omitted as specified by the "table-omit-header-at-break"property),followed by some portion of the content of the fo:table-body(s),followed by the content of the fo:table-footer(unless omitted as specified by the "table-omit-footer-at-break"property).In addition the fo:table returns anypage-level-out-of-line areas, andanyreference-level-out-of-line areasreturned by the children of the fo:table.

The areas generated and returned by the fo:table formatting object haveas children:

  • Areas, with only background, corresponding to thetable-header, table-footer, table-body,spanned columns, columns, and rows.

    Note:

    The spanned columns (fo:table-column with a "number-columns-spanned"value greater than 1) are used in the same way as the "column groups"in CSS2 for determining the background.

  • Areas returned by the fo:table-cell formatting objects.

These areas have a z-index controlling the rendering orderdetermined in accordance with 17.5.1 of the CSS2 specification(http://www.w3.org/TR/REC-CSS2/tables.html#table-layers").

Note:

A cell that is spanned may have a different background in eachof the grid units it occupies.

Trait Derivation:

The column-progression-direction and row-progression-direction aredetermined by thewriting-mode trait. Columns use theinline-progression-direction, androws use the block-progression-direction.

The method for deriving the border traits for a table isspecified by the "border-collapse" property.

If the value of the "border-collapse" property is"separate" the borderis composed of two components. The first, which is placedwith the inside edge coincident with the outermost table grid boundary line,has the width of half the value for the "border-separation" property.It is filled in accordance with the "background" property of the fo:table.Second, outside the outermost table grid boundary lineis placed, for each side of the table, a border basedon a border specified on the table.

If the value of the "border-collapse" property is "collapse"or "collapse-with-precedence" the borderis determined, for each segment, at the cell level.

Note:

By specifying "collapse-with-precedence" andan appropriatelyhigh precedence on the borderspecification for the fo:table one may ensure that this specificationis the one used on all border segments.

Constraints:

No area may have more than one normal child areareturned by the same fo:table formatting object.

The content of the fo:table-header and fo:table-footer,unless omitted as specified by the "table-omit-header-at-break" and"table-omit-footer-at-break" properties, shall be repeated foreach normal block-area generated and returned by the fo:tableformatting object.

The inline-progression-dimensionof the content-rectangle of the table is thesum of the inline-progression-dimensionsof the columns in the table grid. The method used to determine theseinline-progression-dimensions is governed by the values ofthetable-layout andtheinline-progression-dimension traits in the following manner:

inline-progression-dimension="auto" table-layout="auto"

The automatic table layout shall be used.

inline-progression-dimension="auto" table-layout="fixed"

The automatic table layout shall be used.

inline-progression-dimension=<length>or <percentage> table-layout="auto"

The automatic table layout shall be used.

inline-progression-dimension=<length>or <percentage> table-layout="fixed"

The fixed table layout shall be used.

The automatic table layout and fixed table layout is defined in17.5.2 of the CSS2 specification(http://www.w3.org/TR/REC-CSS2/tables.html#width-layout").

The method for determining the block-progression-dimensionof the table isgoverned by theblock-progression-dimension trait.

Note:

The CSS2 specification explicitly does not specifywhat the behaviorshould be if there is a mismatch between an explicitlyspecified table block-progression-dimensionand the block-progression-dimensions of the content.

Note:

The use of the "proportional-column-width()" function is onlypermitted when the fixed table layout is used.

If the use of proportional column widths aredesired 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" andinline-progression-dimension="100%" would allow proportionalcolumn widths while simultaneously creating a table as wide aspossible in the current context.

Note:

The result of using a percentage forthe width may be unpredictable, especially when using theautomatic table layout.

It is an error if two or more table-cells overlap, for example becausetwo or more table-cells attempt to span rows or columns into thesame cell position within the table grid.An implementation may recover from this error by repositioning thetable-cells so that all of the content is shown.

Table-cells must each be entirely contained both horizontally andvertically in a single table-body, table-header or table-footer. It istherefore an error if table-cells attempt to span too far. This mightfor example happen in a table whose table-layout is fixed by having anumber-rows-spanned or number-columns-spanned value larger than the numberof available rows or columns in the spanned direction. An implementationmay recover by behaving as if the table-cell spanned only as many rowsor columns as are actually available.

Contents:

(table-column*,table-header?,table-footer?,table-body+)

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.13 Common Relative Position Properties
7.15.3 block-progression-dimension
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.3 border-collapse
7.28.4 border-end-precedence
7.28.5 border-separation
7.28.6 border-start-precedence
7.20.1 break-after
7.20.2 break-before
7.19.1 clear
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.19.3 intrusion-displace
7.15.6 height
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.28.16 table-layout
7.28.17 table-omit-footer-at-break
7.28.18 table-omit-header-at-break
7.15.14 width
7.29.7 writing-mode

6.7.4 fo:table-column

Common Usage:

The fo:table-column auxiliary formatting object specifiescharacteristicsapplicable to table cells that have the same column and span.The most important property is the "column-width" property.

Areas:

The fo:table-column formatting object does not generateor return any areas.It holds a set of traits that provide constraints on thecolumn widths and a specification of some presentationcharacteristics, such as background whichaffects the areas generated by the fo:table (see6.7.3 fo:table).Inheritable properties may also be specified on the fo:table-column.These can be referenced by the from-table-column() functionin an expression.

Note:

More details,in particular the use of an fo:table-column withnumber-columns-spanned greater than 1, are given inthe description of fo:table and of the from-table-column() function.

Constraints:

None.

Contents:

EMPTY

The following properties apply to this formatting object:

7.8 Common Border, Padding, and Background Properties
NOTE:Only the background properties:background-attachment,background-color,background-image,background-repeat,background-position-horizontal, andbackground-position-verticalfrom this set apply.If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table theborder properties:border-before-color,border-before-style,border-before-width,border-after-color,border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,border-end-color,border-end-style,border-end-width,border-top-color,border-top-style,border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style, andborder-right-widthalso apply.

7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.28.8 column-number
7.28.9 column-width
7.28.12 number-columns-repeated
7.28.13 number-columns-spanned
7.30.17 visibility

6.7.5 fo:table-caption

Common Usage:

The fo:table-caption formatting objectis used to contain block-level formatting objects containingthe caption for the table only when using the fo:table-and-caption.

Areas:

The fo:table-caption formatting object generates one or morenormalreference-areas.The fo:table-caption returns these reference-areas and anypage-level-out-of-line areasreturned by the children of the fo:table-caption.

Constraints:

For the case when the value of thecaption-sidetrait is "before" or "after" the inline-progression-dimension ofthe content-rectangle of the generatedreference-area is equal to the inline-progression-dimension ofthe content-rectangle of the reference-area that enclosesit.

When the value is "start" or "end" the inline-progression-dimensionof the generated reference-area is constrained by the value oftheinline-progression-dimension trait.

When the value is "top", "bottom", "left", or"right" the value is mapped in the same way as for correspondingproperties (see5.3 Computing the Values of Corresponding Properties) and the property is thentreated as if the corresponding value had been specified.

If the captionis to be positioned before the table, the areas generated bythe fo:table-caption shall be placed in the area tree as though the fo:table-captionhad a "keep-with-next" property with value "always".

If the caption is to be positioned after the table, the areas generated bythe fo:table-caption shall be placed in the area tree as though the fo:table-captionhad a "keep-with-previous" property with value "always".

No area may have more than one normal child areareturned by the same fo:table-caption formatting object.

The children of each normal area returned by an fo:table-captionformatting objectmust be normalblock-areas returned by the children ofthe fo:table-caption,must beproperly stacked, andmust beproperly ordered.

Anyreference-level-out-of-lineareas returned by the children of the fo:table-captionare handled as described in6.12.2 fo:float.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.13 Common Relative Position Properties
7.15.3 block-progression-dimension
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.19.3 intrusion-displace
7.20.3 keep-together
7.15.14 width

6.7.6 fo:table-header

Common Usage:

The fo:table-header formatting object is used to containthe contentof the table header.

Areas:

The fo:table-header formatting object does not generate any areas. Thefo:table-header formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:table-header.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:table-headeris the same order as the children are ordered under the fo:table-header.

Contents:

(table-row+|table-cell+)

The fo:table-header has fo:table-row (one or more) asits children,or alternatively fo:table-cell (one or more). In the latter casecells are grouped into rows using the starts-row and ends-row properties.

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
NOTE:Only the background properties:background-attachment,background-color,background-image,background-repeat,background-position-horizontal, andbackground-position-verticalfrom this set apply.If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table theborder properties:border-before-color,border-before-style,border-before-width,border-after-color,border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,border-end-color,border-end-style,border-end-width,border-top-color,border-top-style,border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style, andborder-right-widthalso apply.

7.13 Common Relative Position Properties
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.30.17 visibility

6.7.7 fo:table-footer

Common Usage:

The fo:table-footer formatting object is used to containthe contentof the table footer.

Areas:

The fo:table-footer formatting object does not generate any areas. Thefo:table-footer formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:table-footer.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:table-footeris the same order as the children are ordered under the fo:table-footer.

Contents:

(table-row+|table-cell+)

The fo:table-footer has fo:table-row (one or more) asits children,or alternatively fo:table-cell (one or more). In the latter casecells are grouped into rows using the starts-row and ends-row properties.

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
NOTE:Only the background properties:background-attachment,background-color,background-image,background-repeat,background-position-horizontal, andbackground-position-verticalfrom this set apply.If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table theborder properties:border-before-color,border-before-style,border-before-width,border-after-color,border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,border-end-color,border-end-style,border-end-width,border-top-color,border-top-style,border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style, andborder-right-widthalso apply.

7.13 Common Relative Position Properties
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.30.17 visibility

6.7.8 fo:table-body

Common Usage:

The fo:table-body formatting object is used to containthe contentof the table body.

Areas:

The fo:table-body formatting object does not generate any areas. Thefo:table-body formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:table-body.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:table-bodyis the same order as the children are ordered under the fo:table-body.

Contents:

(table-row+|table-cell+)

The fo:table-body has fo:table-row (one or more) as itschildren,or alternatively fo:table-cell (one or more). In the latter casecells are grouped into rows using the starts-row and ends-row properties.

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
NOTE:Only the background properties:background-attachment,background-color,background-image,background-repeat,background-position-horizontal, andbackground-position-verticalfrom this set apply.If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table theborder properties:border-before-color,border-before-style,border-before-width,border-after-color,border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,border-end-color,border-end-style,border-end-width,border-top-color,border-top-style,border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style, andborder-right-widthalso apply.

7.13 Common Relative Position Properties
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.30.17 visibility

6.7.9 fo:table-row

Common Usage:

The fo:table-row formatting object is used to grouptable-cells intorows; all table-cells in a table-row start in the same geometric row onthe table grid.

Areas:

The fo:table-row formatting object does not generate any areas. Thefo:table-row formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:table-row.The fo:table-row holdsa specification of some presentationcharacteristics, such as background whichaffects the areas generated by the fo:table (see6.7.3 fo:table).

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:table-rowis the same order as the children are ordered under the fo:table-row.

The method for determining the height of the row in the grid isgoverned by therow-height trait.

Contents:

(table-cell+)

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.15.3 block-progression-dimension
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
NOTE:Only the background properties:background-attachment,background-color,background-image,background-repeat,background-position-horizontal, andbackground-position-verticalfrom this set apply.If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table theborder properties:border-before-color,border-before-style,border-before-width,border-after-color,border-after-style,border-after-width,border-start-color,border-start-style,border-start-width,border-end-color,border-end-style,border-end-width,border-top-color,border-top-style,border-top-width,border-bottom-color,border-bottom-style,border-bottom-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style, andborder-right-widthalso apply.

7.13 Common Relative Position Properties
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.20.1 break-after
7.20.2 break-before
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.6 height
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.30.17 visibility

6.7.10 fo:table-cell

Common Usage:

The fo:table-cell formatting object is used to groupcontent to beplaced in a table cell.

The "starts-row" and "ends-row" properties can beused when the input data does not have elements containingthe cells in each row, but instead, for example, each row startsat elements of a particular type.

Areas:

The fo:table-cell formatting object generates one or morenormalreference-areas.The fo:table-cell returns these reference-areas and anypage-level-out-of-line areasreturned by the children of the fo:table-cell.

Trait Derivation:

The method for deriving the border for a cell isspecified by theborder-collapse trait.

If the value of theborder-collapse trait is "separate" the borderis composed of two components. The first, which is placedwith the outside edge coincident with the table grid boundary line,has the width of half the value for theborder-separation trait.It is filled in accordance with thebackground trait of the fo:table.Inside this border is placed, for each side of the cell, a border basedon a border specified on the cell or inherited.

If the value of theborder-collapse trait is "collapse-with-precedence" the borderfor each side of the cell is determined by, for each segment of a border,selecting, from all border specifications for that segment, the borderthat has the highest precedence. It is an error if there are two suchborders that have the same precedence but are not identical.An implementation may recover by selectingone of the borders.Each border segment is placed centered on the table grid boundary line.On devices that do not support sub-pixel rendering,if an effective border width is determined to be an odd number of pixelsit is implementation defined on which side of the grid boundary linethe odd pixel is placed.

If the value of the border-collapse trait is "collapse", the border foreach side of the cell is determined by, for each segment of a border,selecting, from all border specifications for that segment, the border thathas the most "eye catching" border style, see below for the details. Eachborder segment is placed centered on the table grid boundary line. Ondevices that do not support sub-pixel rendering, if an effective borderwidth is determined to be an odd number of pixels it is implementationdefined on which side of the grid boundary line the odd pixel is placed.Where there is a conflict between the styles of border segments thatcollapse, the following rules determine which border style "wins":

  1. Borders with the 'border-style' of 'hidden' take precedence over allother conflicting borders. Any border with this value suppresses allborders at this location.

  2. Borders with a style of 'none' have the lowest priority. Only if theborder properties of all the elements meeting at this edge are 'none' willthe border be omitted (but note that 'none' is the default value for theborder style.)

  3. If none of the styles is 'hidden' and at least one of them is not'none', then narrow borders are discarded in favor of wider ones.

  4. If the remaining border styles have the same 'border-width' than stylesare preferred in this order: 'double', 'solid', 'dashed', 'dotted','ridge', 'outset', 'groove', and the lowest: 'inset'.

  5. If border styles differ only in color, then a style set on a cell winsover one on a row, which wins over a row group, column, column group and,lastly, table.

Constraints:

A table-cell occupies one or more grid units in therow-progression-direction andcolumn-progression-direction.The content-rectangle of the cell is the size of the portionof the gridthe cell occupies minus, for each of the four sides:

  • If the value of theborder-collapse trait is "separate":half the value of theborder-separation trait; otherwise 0.

  • If the value of theborder-collapse trait is "separate":the thickness of the cell-border; otherwise half the thickness of theeffective border.

  • The cell padding.

The method for determining the block-progression-dimensionof the cell in the grid is governed by therow-height trait.

No area may have more than one normal child areareturned by the same fo:table-cell formatting object.

The children of each normal area returned by an fo:table-cellformatting objectmust be normalblock-areas returned by the children ofthe fo:table-cell,must beproperly stacked, andmust beproperly ordered.

Anyreference-level-out-of-lineareas returned by the children of the fo:table-cellare handled as described in6.12.2 fo:float.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.13 Common Relative Position Properties
7.28.1 border-after-precedence
7.28.2 border-before-precedence
7.28.4 border-end-precedence
7.28.6 border-start-precedence
7.15.3 block-progression-dimension
7.28.8 column-number
7.14.4 display-align
7.14.6 relative-align
7.28.10 empty-cells
7.28.11 ends-row
7.15.6 height
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.15.7 inline-progression-dimension
7.28.13 number-columns-spanned
7.28.14 number-rows-spanned
7.28.15 starts-row
7.15.14 width

6.8 Formatting Objects for Lists

6.8.1 Introduction

There are four formatting objects used to construct lists:fo:list-block, fo:list-item, fo:list-item-label, and fo:list-item-body.

Tree representation of the Formatting Objects for lists   [D]

Tree representation of the formatting Objects for Lists.

The fo:list-block has the role of containing the complete list andof specifying values used for the list geometry in theinline-progression-direction (see details below).

The children of the fo:list-block are one or more fo:list-item, eachcontaining a pair of fo:list-item-label and fo:list-item-body.

The fo:list-item has the role of containing each item in a list.

The fo:list-item-label has the role of containing the content,block-level formatting objects, of the label for thelist-item; typically an fo:block containinga number, a dingbat character, or a term.

The fo:list-item-body has the role of containing the content,block-level formatting objects, of the body of thelist-item; typically one or more fo:block.

The placement, in the block-progression-direction, of thelabel with respect to the body is made in accordance with the"vertical-align" property of the fo:list-item.

Areas generated by a list   [D]

The specification of the list geometry in theinline-progression-direction is achieved by:

  • Specifying appropriate values of the "provisional-distance-between-starts"and "provisional-label-separation" properties.The "provisional-distance-between-starts" specifies the desireddistance between the start-indents of the label and the body ofthe list-item.The "provisional-label-separation" specifies the desiredseparation between the end-indent of the label and the start-indentof the body of the list-item.

  • Specifying end-indent="label-end()" on the fo:list-item-label.

    Specifying start-indent="body-start()" on the fo:list-item-body.

    Note:

    These list specific functions are defined in7.30.11 provisional-label-separation and7.30.12 provisional-distance-between-starts.

The start-indent of the list-item-label and end-indent of thelist-item-body, if desired, are typically specified as a length.

6.8.1.1 Examples
6.8.1.1.1 Enumerated List

The list-items are contained in an"ol"element. The items arecontained in"item" elements and contain text (as opposed toparagraphs).

The style is to enumerate the itemsalphabetically with a dot afterthe letter.

Input sample:

<ol><item>List item 1.</item><item>List item 2.</item><item>List item 3.</item></ol>

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="ol">  <fo:list-block provisional-distance-between-starts="15mm"   provisional-label-separation="5mm">    <xsl:apply-templates/>  </fo:list-block></xsl:template><xsl:template match="ol/item">  <fo:list-item>    <fo:list-item-label start-indent="5mm" end-indent="label-end()">      <fo:block>        <xsl:number format="a."/>      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>        <xsl:apply-templates/>      </fo:block>    </fo:list-item-body>  </fo:list-item></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:list-block provisional-distance-between-starts="15mm"  provisional-label-separation="5mm">  <fo:list-item>    <fo:list-item-label start-indent="5mm" end-indent="label-end()">      <fo:block>a.      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>List item 1.      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label start-indent="5mm" end-indent="label-end()">      <fo:block>b.      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>List item 2.      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label start-indent="5mm" end-indent="label-end()">      <fo:block>c.      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>List item 3.      </fo:block>    </fo:list-item-body>  </fo:list-item></fo:list-block>
6.8.1.1.2 HTML-style"dl" lists

In this example the stylesheet processes HTML-style"dl" lists, whichcontain unwrapped pairs of"dt" and"dd" elements, transformingthem into fo:list-blocks.

Balanced pairs of"dt"/"dd"s are converted into fo:list-items.For unbalanced"dt"/"dd"s, the stylesheet makes thefollowing assumptions:

  • Multiple"dt"s are grouped together into a singlefo:list-item-label in a single list-item.

  • Multiple DDs are:

    • Output as individual FO list-items with an emptylist-item-label if the stylesheet variable$allow-naked-dd istrue.

    • Are grouped together into a single FO list-item-body if$allow-naked-dd isfalse.

In other words, given a structure like this:

<doc><dl>  <dt>term</dt>  <dd>definition</dd>  <dt>term</dt>  <dt>term</dt>  <dd>definition</dd>  <dt>term</dt>  <dd>definition</dd>  <dd>definition</dd></dl></doc>

If$allow-naked-dd istrue, the result instance: elementsand attributes in the fo: namespace is:

<fo:list-block provisional-distance-between-starts="35mm"  provisional-label-separation="5mm">  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label end-indent="label-end()">    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item></fo:list-block>

If$allow-naked-dd isfalse, the result instance:elements and attributes in the fo: namespace is:

<fo:list-block provisional-distance-between-starts="35mm"  provisional-label-separation="5mm">  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item>  <fo:list-item>    <fo:list-item-label end-indent="label-end()">      <fo:block>term      </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">      <fo:block>definition      </fo:block>      <fo:block>definition      </fo:block>    </fo:list-item-body>  </fo:list-item></fo:list-block>

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:include href="dtdd.xsl"/><xsl:template match="doc">  <xsl:apply-templates/></xsl:template><xsl:template match="dl">  <xsl:call-template name="process.dl"/></xsl:template><xsl:template match="dt|dd">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Included stylesheet "dtdd.xsl"

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:variable name="allow-naked-dd" select="true()"/><xsl:template name="process.dl">  <fo:list-block provisional-distance-between-starts="35mm"   provisional-label-separation="5mm">    <xsl:choose>      <xsl:when test="$allow-naked-dd">        <xsl:call-template name="process.dl.content.with.naked.dd"/>      </xsl:when>      <xsl:otherwise>        <xsl:call-template name="process.dl.content"/>      </xsl:otherwise>    </xsl:choose>  </fo:list-block></xsl:template><xsl:template name="process.dl.content.with.naked.dd">  <xsl:param name="dts" select="./force-list-to-be-empty"/>  <xsl:param name="nodes" select="*"/>  <xsl:choose>    <xsl:when test="count($nodes)=0">      <!-- Out of nodes, output any pending DTs -->      <xsl:if test="count($dts)>0">        <fo:list-item>          <fo:list-item-label end-indent="label-end()">            <xsl:apply-templates select="$dts"/>          </fo:list-item-label>          <fo:list-item-body start-indent="body-start()"/>        </fo:list-item>      </xsl:if>    </xsl:when>    <xsl:when test="name($nodes[1])='dd'">      <!-- We found a DD, output the DTs and the DD -->      <fo:list-item>        <fo:list-item-label end-indent="label-end()">          <xsl:apply-templates select="$dts"/>        </fo:list-item-label>        <fo:list-item-body start-indent="body-start()">          <xsl:apply-templates select="$nodes[1]"/>        </fo:list-item-body>      </fo:list-item>      <xsl:call-template name="process.dl.content.with.naked.dd">        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>      </xsl:call-template>    </xsl:when>    <xsl:when test="name($nodes[1])='dt'">      <!-- We found a DT, add it to the list of DTs and loop -->      <xsl:call-template name="process.dl.content.with.naked.dd">        <xsl:with-param name="dts" select="$dts|$nodes[1]"/>        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>      </xsl:call-template>    </xsl:when>    <xsl:otherwise>      <!-- This shouldn't happen -->      <xsl:message>        <xsl:text>DT/DD list contained something bogus (</xsl:text>        <xsl:value-of select="name($nodes[1])"/>        <xsl:text>).</xsl:text>      </xsl:message>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template name="process.dl.content">  <xsl:param name="dts" select="./force-list-to-be-empty"/>  <xsl:param name="dds" select="./force-list-to-be-empty"/>  <xsl:param name="output-on"></xsl:param>  <xsl:param name="nodes" select="*"/>  <!-- The algorithm here is to build up a list of DTs and DDs, -->  <!-- outputing them only on the transition from DD back to DT -->  <xsl:choose>    <xsl:when test="count($nodes)=0">      <!-- Out of nodes, output any pending elements -->      <xsl:if test="count($dts)>0 or count($dds)>0">        <fo:list-item>          <fo:list-item-label end-indent="label-end()">            <xsl:apply-templates select="$dts"/>          </fo:list-item-label>          <fo:list-item-body start-indent="body-start()">            <xsl:apply-templates select="$dds"/>          </fo:list-item-body>        </fo:list-item>      </xsl:if>    </xsl:when>    <xsl:when test="name($nodes[1])=$output-on">      <!-- We're making the transition from DD back to DT -->      <fo:list-item>        <fo:list-item-label end-indent="label-end()">          <xsl:apply-templates select="$dts"/>        </fo:list-item-label>        <fo:list-item-body start-indent="body-start()">          <xsl:apply-templates select="$dds"/>        </fo:list-item-body>      </fo:list-item>      <!-- Reprocess this node (and the rest of the node list) -->      <!-- resetting the output-on state to nil -->      <xsl:call-template name="process.dl.content">        <xsl:with-param name="nodes" select="$nodes"/>      </xsl:call-template>    </xsl:when>    <xsl:when test="name($nodes[1])='dt'">      <!-- We found a DT, add it to the list and loop -->      <xsl:call-template name="process.dl.content">        <xsl:with-param name="dts" select="$dts|$nodes[1]"/>        <xsl:with-param name="dds" select="$dds"/>        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>      </xsl:call-template>    </xsl:when>    <xsl:when test="name($nodes[1])='dd'">      <!-- We found a DD, add it to the list and loop, noting that -->      <!-- the next time we cross back to DT's, we need to output the -->      <!-- current DT/DDs. -->      <xsl:call-template name="process.dl.content">        <xsl:with-param name="dts" select="$dts"/>        <xsl:with-param name="dds" select="$dds|$nodes[1]"/>        <xsl:with-param name="output-on">dt</xsl:with-param>        <xsl:with-param name="nodes" select="$nodes[position()>1]"/>      </xsl:call-template>    </xsl:when>    <xsl:otherwise>      <!-- This shouldn't happen -->      <xsl:message>        <xsl:text>DT/DD list contained something bogus (</xsl:text>        <xsl:value-of select="name($nodes[1])"/>        <xsl:text>).</xsl:text>      </xsl:message>    </xsl:otherwise>  </xsl:choose></xsl:template></xsl:stylesheet>

The "dtdd.xsl" stylesheet may be customized in the following ways:

  • Set the value of$allow-naked-dd to control the processing of unbalanced"dd"s.

  • Change"dt" to the name of the elementwhich is a term in the list.

  • Change"dd" to the name of the elementwhich is a definition in the list.

  • In the, perhaps unlikely, event that the documents may containan element named"force-list-to-be-empty", that element nameshould be changed to a name that is not used in the documents.

In the stylesheet using the "dtdd.xsl" stylesheet change the"dl"to the name of the element which is the wrapper for the list.

6.8.2 fo:list-block

Common Usage:

The fo:list-block flow object is used to format a list.

Areas:

The fo:list-block formatting object generates one or morenormalblock-areas.The fo:list-block returns these areas, anypage-level-out-of-line areas, andanyreference-level-out-of-line areasreturned by the children of the fo:list-block.

Constraints:

No area may have more than one normal child areareturned by the same fo:list-block formatting object.

The children of each normal area returned by an fo:list-blockformatting objectmust be normalblock-areas returned by the children of the fo:list-block,must beproperly stacked, andmust beproperly ordered.

Contents:

(list-item+)

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.13 Common Relative Position Properties
7.20.1 break-after
7.20.2 break-before
7.19.1 clear
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.19.3 intrusion-displace
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.30.12 provisional-distance-between-starts
7.30.11 provisional-label-separation

6.8.3 fo:list-item

Common Usage:

The fo:list-item formatting object contains the label and thebody of an item in a list.

Areas:

The fo:list-item formatting object generates one or morenormalblock-areas.The fo:list-item returns these areas, anypage-level-out-of-line areas, andanyreference-level-out-of-line areasreturned by the children of the fo:list-item.

Constraints:

No area may have more than one normal child areareturned by the same fo:list-item formatting object.

The children of each normal area returned by an fo:list-itemformatting object must be normalblock-areas returned bythe fo:list-item-label and the fo:list-item-body flow objects andmust beproperly ordered.Those returned by the fo:list-item-labelmust beproperly stacked andthose returned by the fo:list-item-bodymust beproperly stacked.

The children of each normal area returned by an fo:list-itemformatting object returned by thefo:list-item-labeland fo:list-item-body objects are positionedin the block-progression-direction with respect to eachother according to therelative-align trait.

In the inline-progression-directionthese areas are positioned in the usual manner for properlystacked areas.It is an error if the content-rectangles of the areas overlap.

The block-progression-dimension of thecontent-rectangle of an areagenerated by the fo:list-item is just large enough so that theallocation-rectangles of all its child areas are contained in it. Inparticular, the space-before and space-after of the child areas have noeffect on the spacing of the list item. For purposes of theblock-stacking constraints the areas generated by fo:list-item aretreated as if there they have a fence preceding and a fence followingthem.

Note:

These areas are not reference-areas, hence the indents on allobjects within them are measured relative to the reference-area thatholds the content of the fo:list-block.

Contents:

(list-item-label,list-item-body)

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.11 Common Margin Properties-Block
7.13 Common Relative Position Properties
7.20.1 break-after
7.20.2 break-before
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.19.3 intrusion-displace
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.14.6 relative-align

6.8.4 fo:list-item-body

Common Usage:

The fo:list-item-body formatting object contains thecontentof the body of a list-item.

Areas:

The fo:list-item-body formatting object does not generate any areas. Thefo:list-item-body formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:list-item-body.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:list-item-bodyis the same order as the children are ordered under the fo:list-item-body.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.3 keep-together

6.8.5 fo:list-item-label

Common Usage:

The fo:list-item-label formatting object contains thecontentof the label of a list-item, typically used to either enumerate,identify, or adorn the list-item's body.

Areas:

The fo:list-item-label formatting object does not generate any areas. Thefo:list-item-label formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:list-item-label.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:list-item-labelis the same order as the children are ordered under the fo:list-item-label.

Contents:

(%block;)+

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.20.3 keep-together

6.9 Dynamic Effects: Link and Multi Formatting Objects

6.9.1 Introduction

Dynamic effects,whereby user actions (including User Agent state)can influence the behavior and/or representation of portions ofa document, can beachieved through the use of the formatting objects included in thissection:

  • One-directional single-target links.

  • The ability to switch between the display of two or moreformatting object subtrees. This can be used for, e.g.,expandable/collapsible table of contents, display of an icon ora full table or graphic.

  • The ability to switch between different property values, suchas color or font-weight, depending on a User Agent state, such as "hover".

The switching between subtrees is achieved by using thefollowing three formatting objects:fo:multi-switch,fo:multi-case, andfo:multi-toggle.The result tree structure is shown below.

Tree representation of the multi Formatting Objects   [D]

Tree Representation of the Multi Formatting Objects

The role of the fo:multi-switch is to wrap fo:multi-caseformatting objects, each containing a subtree. Each subtree isgiven 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 typicallypresent a list of choices each labeled using the "case-title" propertyof the fo:multi-case.The initial subtree displayed is controlled by the "starting-state"property on the fo:multi-case.

Switching between different property values is achieved by using thefo:multi-properties and fo:multi-property-set formatting objects, andthe merge-property-values() function. For example, anfo:multi-property-set can be used to specify various properties foreach of the possible values of the active-state property, andmerge-property-values() can be used to apply them on a given formattingobject.

6.9.1.1 Examples
6.9.1.1.1 Expandable/Collapsible Table of Contents

Input sample:

<doc>  <chapter><title>Chapter</title>    <p>Text</p>    <section><title>Section</title>    <p>Text</p>    </section>    <section><title>Section</title>    <p>Text</p>    </section>  </chapter>  <chapter><title>Chapter</title>    <p>Text</p>    <section><title>Section</title>    <p>Text</p>    </section>    <section><title>Section</title>    <p>Text</p>    </section>  </chapter></doc>

In this examplethe chapter and section titles are extracted into a table of contentsplaced at the front of the result. The chapter titles are precededby an icon indicating either collapsed or expanded state. The sectiontitles are only shown in the expanded state. Furthermore, there arelinks from the titles in the table of contents to the correspondingtitles in the body of the document.

The two states are achieved by, for each chapter title, usingan fo:multi-switch with a fo:multi-case for each state. The iconis contained in an fo:multi-toggle with the appropriate fo:multi-case"switch-to" property to select the other state.

The links in the table of contents are achieved byadding a unique id on the title text in the body of the documentand wrapping the title text in the table of contents in anfo:basic-link referring to that id.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="doc">  <!-- create the table of contents -->  <xsl:apply-templates select="chapter/title" mode="toc"/>  <!-- do the document -->  <xsl:apply-templates/></xsl:template><xsl:template match="chapter/title" mode="toc">  <fo:multi-switch>    <fo:multi-case case-name="collapsed" case-title="collapsed"    starting-state="show">      <fo:block>        <fo:multi-toggle switch-to="expanded">          <fo:external-graphic href="plus-icon.gif"/>        </fo:multi-toggle>        <fo:basic-link internal-destination="{generate-id(.)}">          <xsl:number level="multiple" count="chapter" format="1. "/>          <xsl:apply-templates mode="toc"/>        </fo:basic-link>      </fo:block>    </fo:multi-case>    <fo:multi-case case-name="expanded" case-title="expanded"    starting-state="hide">      <fo:block>        <fo:multi-toggle switch-to="collapsed">          <fo:external-graphic href="minus-icon.gif"/>        </fo:multi-toggle>        <fo:basic-link internal-destination="{generate-id(.)}">          <xsl:number level="multiple" count="chapter" format="1. "/>          <xsl:apply-templates mode="toc"/>        </fo:basic-link>      </fo:block>      <xsl:apply-templates select="../section/title" mode="toc"/>    </fo:multi-case>  </fo:multi-switch></xsl:template><xsl:template match="section/title" mode="toc">  <fo:block start-indent="10mm">    <fo:basic-link internal-destination="{generate-id(.)}">      <xsl:number level="multiple" count="chapter|section" format="1.1 "/>      <xsl:apply-templates/>    </fo:basic-link>  </fo:block></xsl:template><xsl:template match="chapter/title">  <fo:block>    <xsl:number level="multiple" count="chapter" format="1. "/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="section/title">  <fo:block>    <xsl:number level="multiple" count="chapter|section" format="1.1 "/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:multi-switch>  <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show">    <fo:block>      <fo:multi-toggle switch-to="expanded">        <fo:external-graphic href="plus-icon.gif">        </fo:external-graphic>      </fo:multi-toggle>      <fo:basic-link internal-destination="N4">1. Chapter      </fo:basic-link>    </fo:block>  </fo:multi-case>  <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide">    <fo:block>      <fo:multi-toggle switch-to="collapsed">        <fo:external-graphic href="minus-icon.gif">        </fo:external-graphic>      </fo:multi-toggle>      <fo:basic-link internal-destination="N4">1. Chapter      </fo:basic-link>    </fo:block>    <fo:block start-indent="10mm">      <fo:basic-link internal-destination="N11">1.1 Section      </fo:basic-link>    </fo:block>    <fo:block start-indent="10mm">      <fo:basic-link internal-destination="N19">1.2 Section      </fo:basic-link>    </fo:block>  </fo:multi-case></fo:multi-switch><fo:multi-switch>  <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show">    <fo:block>      <fo:multi-toggle switch-to="expanded">        <fo:external-graphic href="plus-icon.gif">        </fo:external-graphic>      </fo:multi-toggle>      <fo:basic-link internal-destination="N28">2. Chapter      </fo:basic-link>    </fo:block>  </fo:multi-case>  <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide">    <fo:block>      <fo:multi-toggle switch-to="collapsed">        <fo:external-graphic href="minus-icon.gif">        </fo:external-graphic>      </fo:multi-toggle>      <fo:basic-link internal-destination="N28">2. Chapter      </fo:basic-link>    </fo:block>    <fo:block start-indent="10mm">      <fo:basic-link internal-destination="N35">2.1 Section      </fo:basic-link>    </fo:block>    <fo:block start-indent="10mm">      <fo:basic-link internal-destination="N43">2.2 Section      </fo:basic-link>    </fo:block>  </fo:multi-case></fo:multi-switch><fo:block>1. Chapter</fo:block><fo:block>Text</fo:block><fo:block>1.1 Section</fo:block><fo:block>Text</fo:block><fo:block>1.2 Section</fo:block><fo:block>Text</fo:block><fo:block>2. Chapter</fo:block><fo:block>Text</fo:block><fo:block>2.1 Section</fo:block><fo:block>Text</fo:block><fo:block>2.2 Section</fo:block><fo:block>Text</fo:block>
6.9.1.1.2 Styling an XLink Based on the Active State

Input sample:

<p>Follow this <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">link</xlink:mylink> to access allTRs of the W3C.</p>

In this example an fo:basic-link contains a series offo:multi-property-setsthat specify various colors or text-decorations depending on the activestate, and a wrapper around the fo:basic-link that allows for themergingof the properties of the fo:multi-properties with those of theappropriate fo:multi-property-sets.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">    <fo:block>        <xsl:apply-templates/>    </fo:block></xsl:template><xsl:template match="xlink:mylink" xmlns:xlink="http://www.w3.org/1999/xlink">    <xsl:variable name="show"><xsl:value-of select="@xlink:show"/>    </xsl:variable>     <fo:multi-properties text-decoration="underline">        <fo:multi-property-set active-state="link" color="blue"/>        <fo:multi-property-set active-state="visited" color="red"/>        <fo:multi-property-set active-state="active" color="green"/>        <fo:multi-property-set active-state="hover" text-decoration="blink"/>        <fo:multi-property-set active-state="focus" color="yellow"/>        <fo:wrapper color="merge-property-values()"                    text-decoration="merge-property-values()">              <fo:basic-link external-destination="http://www.w3.org/TR"                              show-destination="{$show}">                  <xsl:attribute name="role">                      <xsl:value-of select="@xlink:title"/>                  </xsl:attribute>                  <xsl:apply-templates/>              </fo:basic-link>        </fo:wrapper>      </fo:multi-properties></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:block>Follow this  <fo:multi-properties text-decoration="underline">    <fo:multi-property-set active-state="link" color="blue">    </fo:multi-property-set>    <fo:multi-property-set active-state="visited" color="red">    </fo:multi-property-set>    <fo:multi-property-set active-state="active" color="green">    </fo:multi-property-set>    <fo:multi-property-set active-state="hover" text-decoration="blink">    </fo:multi-property-set>    <fo:multi-property-set active-state="focus" color="yellow">    </fo:multi-property-set>    <fo:wrapper color="merge-property-values()"      text-decoration="merge-property-values()">      <fo:basic-link external-destination="http://www.w3.org/TR"        show-destination="new" role="An Example">link      </fo:basic-link>    </fo:wrapper>  </fo:multi-properties> to access allTRs of the W3C.</fo:block>

6.9.2 fo:basic-link

Common Usage:

The fo:basic-link is used for representing the start resource of a simpleone-directional single-target link. The object allows for traversal to thedestination resource, typically by clicking on any of the containing areas.

Areas:

The fo:basic-link formatting object generates one or morenormal inline-areas.The fo:basic-link returns these areas,together with anynormal block-areas,page-level-out-of-line areas,andreference-level-out-of-lineareas returned by the children of the fo:basic-link.

Note:

An fo:basic-link can be enclosed inan fo:block to create a display area.

Constraints:

One of the external-destination and internal-destinationproperties should be specified. If both are specified, the systemmay either report it as an error, or use the internal-destinationproperty.

No area may have more than one normal child areareturned by the same fo:basic-link formatting object.

The children of each normal area returned by an fo:basic-linkmust satisfy the constraints specified in4.7.3 Inline-building.

Contents:

(#PCDATA|%inline;|%block;)*

In addition this formatting object may have a sequence ofzero or more fo:markers as its initial children.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.8 Common Border, Padding, and Background Properties
7.12 Common Margin Properties-Inline
7.13 Common Relative Position Properties
7.14.1 alignment-adjust
7.14.2 alignment-baseline
7.14.3 baseline-shift
7.23.5 destination-placement-offset
7.14.5 dominant-baseline
7.23.6 external-destination
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.23.7 indicate-destination
7.23.8 internal-destination
7.20.3 keep-together
7.20.4 keep-with-next
7.20.5 keep-with-previous
7.16.4 line-height
7.23.9 show-destination
7.23.13 target-processing-context
7.23.12 target-presentation-context
7.23.14 target-stylesheet

6.9.3 fo:multi-switch

Common Usage:

The fo:multi-switch wraps the specification ofalternative sub-trees of formatting objects (each sub-treebeing within an fo:multi-case), and controls the switching(activated via fo:multi-toggle) from one alternative toanother.

The direct children of an fo:multi-switch object arefo:multi-case objects.Only a single fo:multi-case may be visible at a single time. The user mayswitch between the available multi-cases.

Each fo:multi-case may contain one or more fo:multi-toggle objects, whichcontrols the fo:multi-case switching of the fo:multi-switch.

Note:

An fo:multi-switch can be used for many interactive tasks, such astable-of-content views, embedding link targets, or generalized (evenmulti-layered hierarchical), next/previous views. Thelatter are todaynormally handled in HTML by next/previous links to otherdocuments, forcingthe whole document to be replaced whenever the users decides tomove on.

Areas:

The fo:multi-switch formatting object does not generate any areas.The fo:multi-switch formatting object returns the sequence ofareas returned by the currently visible fo:multi-case. If there is nocurrently visible fo:multi-case no areas are returned.

Trait Derivation:

Thecurrently-visible-multi-case traithas as its initial value a referenceto the first fo:multi-case child that has a value of "show" of thestarting-state trait. If there is no such child, it has a valueindicating that there is no currently visible fo:multi-case.When an fo:multi-toggle is actuated, its closest ancestralfo:multi-switch'scurrently-visible-multi-case trait value changes to refer to thefo:multi-case selected by the "switch-to" property value of thefo:multi-toggle. Once thecurrently-visible-multi-case traitgets a value indicating that there is no currently visible fo:multi-case, itbecomes impossible to actuate an fo:multi-toggle in this fo:multi-switch.

Constraints:

The order of the sequence of areas returned by the fo:multi-switchis the same as the order of the areas returned by the currently visiblefo:multi-case.

Note:

Any number of the fo:multi-case objects may assign "starting-state"to "show".

If no fo:multi-case has "starting-state" property value of "show", thecontents of no fo:multi-case should be displayed.

Note:

If no multi-case is displayed, the entire fo:multi-switch willeffectively be hidden.

Contents:

(multi-case+)

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.23.2 auto-restore
7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.9.4 fo:multi-case

Common Usage:

The fo:multi-case is used to contain (withinan fo:multi-switch) each alternative sub-tree of formattingobjects among which the parent fo:multi-switch will chooseone to show and will hide the rest.

Areas:

The fo:multi-case formatting object does not generate any areas. Thefo:multi-case formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:multi-case.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:multi-caseis the same order as the children are ordered under the fo:multi-case.

Contents:

(#PCDATA|%inline;|%block;)*

An fo:multi-case is only permitted to havechildren that would be permitted to be childrenof the parent of the fo:multi-switch that is the parent of thefo:multi-case, except that anfo:multi-case may not contain fo:marker children.In particular,it can contain fo:multi-toggle objects (at any depth), which controls thefo:multi-case switching.

This restriction applies recursively.

Note:

For example, an fo:multi-case whose parentfo:multi-switch is a child of another fo:multi-casemay only have children thatwould be permitted in place of the outer fo:multi-case's parentfo:multi-switch.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.23.10 starting-state
7.23.3 case-name
7.23.4 case-title

6.9.5 fo:multi-toggle

Common Usage:

The fo:multi-toggle is typically used to establish an area that whenactuated (for example implemented as "clicked"),has the effect of switching from one fo:multi-case to another.The "switch-to" propertyvalue of the fo:multi-toggle typically matches the "case-name" propertyvalue of the fo:multi-case to switch to.

Areas:

The fo:multi-toggle formatting object does not generate any areas. Thefo:multi-toggle formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:multi-toggle.Each of the areas returned by the fo:multi-toggle has aswitch-totrait with the same value as on the returning fo:multi-toggle.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:multi-toggleis the same order as the children are ordered under the fo:multi-toggle.

Activating an area returned by an fo:multi-toggle causes a changeto the value of thecurrently-visible-multi-caseof the closest ancestor fo:multi-switch.(See7.23.11 switch-to for howtheswitch-to value selects an fo:multi-case.)

Contents:

(#PCDATA|%inline;|%block;)*

An fo:multi-toggle is only permitted as a descendant of anfo:multi-case.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.23.11 switch-to

6.9.6 fo:multi-properties

Common Usage:

The fo:multi-properties is used to switch between two or more property sets thatare associated with a given portion of content.

Note:

An fo:multi-properties formatting object can beused to give differentappearances to a given portion of content. For example, whena link changesfrom the not-yet-visited state to the visited-state, thiscould change theset of properties that would be used to format the content. Designersshould be careful in choosing which properties they change, because manyproperty changes could cause reflowing of the text which maynot bedesired in many circumstances. Changing properties such as"color" or"text-decoration" should not require re-flowing the text.

The direct children of an fo:multi-propertiesformatting objectis an ordered set of fo:multi-property-set formatting objectsfollowed by a single fo:wrapper formatting object.The properties, specified on the fo:wrapper, that have beenspecified with a value of "merge-property-values()" will takea value that is a merger of the value on the fo:multi-propertiesand the specified values on the fo:multi-property-setformatting objects that apply.

Areas:

The fo:multi-properties formatting object does not generate any areas. Thefo:multi-properties formatting object returns the sequence of areas created byconcatenating the sequences of areas returned by each of the childrenof the fo:multi-properties.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:multi-propertiesis the same order as the children are ordered under the fo:multi-properties.

Contents:

(multi-property-set+,wrapper)

The properties that should take a merged value shall be specifiedwith a value of "merge-property-values()". This function, when applied onan fo:wrapperthat is a direct child of an fo:multi-properties, merges the applicableproperty definitions on the fo:multi-property-set siblings.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties

6.9.7 fo:multi-property-set

Common Usage:

The fo:multi-property-set auxiliary formatting objectis used to specify an alternativeset of formattingproperties that can be used to provide an alternate presentation of thechildren flow objects of the fo:wrapper child of theparent of this fo:multi-property-set.

Areas:

The fo:multi-property-set formatting object does not generateor return any areas. It simply holds a set of traits that maybe accessed by expressions.

Constraints:

None.

Contents:

EMPTY

The following properties apply to this formatting object:

7.30.8 id
7.24.1 index-class
7.24.2 index-key
7.23.1 active-state

6.10 Formatting Objects for Indexing

6.10.1 Introduction

The formatting objects and properties for indexing enablethe generation of lists of page numbersassociated with specific items in the formatting object tree,such as for use in back-of-the-book indexes.There are two kinds of such objects and properties: those thatassociate index keys with formatting objects throughout the treeandformatting objects that are used in the back-of-the-book indexto assemble page referencesto the pages where the areas from formatting objects with a particularindex key occur.Further formatting properties and objects control the way in whichthese page references are grouped and arranged into ranges.

There are two properties for associating index keys withformatting objects:"index-key" and "index-class".These two properties apply to almost all formatting objects.There are two formatting objects forassociating explicit index key ranges,fo:index-range-begin and fo:index-range-end.

Cited page items associated with a particular index key are obtainedusing the fo:index-key-reference. Its parent,fo:index-page-citation-list,groups and arranges these.In addition, the form of the generated page number listcan be defined and controlled using theformatting objectsfo:index-page-number-prefix,fo:index-page-number-suffix,fo:index-page-citation-list-separator, andfo:index-page-citation-range-separator.For a back-of-the-book indexeach index term would have an index key that is usedto identify each occurrence of thatterm within the document.In the back-of-the-book index there would beat least one fo:index-key-referencefor each index key used. For example,

<fo:block>Eiffel Tower  <fo:index-page-citation-list>    <fo:index-key-reference ref-index-key="Eiffel Tower;;"/>  </fo:index-page-citation-list></fo:block>

The structure and content of the generated list ofpage numbers can be further controlledthrough the use of index classes to distinguish differenttypes of index entries or todistinguish entries present in different parts of the document.For example, differentclasses could be used to distinguish index entries for figuresfrom normal entries or todistinguish entries within one section, e.g. the preface,of a document from entriesfrom another section, e.g. the main body, inorder to control the construction of page ranges.The fo:index-page-number-prefix and fo:index-page-number-suffixspecify additional text, e.g. "[" and "]", to surround thepage numbers in the index.

Note:

The formatting objects for indexing only provide facilities forgenerating the list of page numbers for individual index keys.Assembling the index entries; identifying all the entries,sorting them, and creatingthe formatting objects, e.g. fo:block, andtext, e.g. "Eiffel Tower", for the entry and referencing theappropriate index key, e.g. "Eiffel Tower;;",is done by the general stylesheet mechanisms.

6.10.1.1 Example

The following example document is used throughoutthis section to describethe indexing process and how the various optionschange the presentation of the index.

The source document uses typical XML markup for representingback-of-the-book index entries.The document consists of a preface, four chapters, a glossary,and an index.The formatting style for this document specifies that the preface,body chapters,and glossary all use different page numbers as shown below.

ComponentNumbered pagesOrdinal page numbers
Title Page Recto/Verson/a1-2
Table of Contentsiii/iv3/4
List of Figuresv/vi5/6
Prefacevii/x7-10
Chapter 11-3/411-13/14
Chapter 25-12 (pg 4 is blank)15-22
Chapter 313-17/1823-27/28
Chapter 419-24 (pg 18 is blank)29-34
GlossaryG-1 to G-435-38
IndexI-1 to ...39-...

The composite page numbers (e.g., "G-1") used in the glossaryare created using an fo:folio-prefix, e.g.

<fo:page-sequence initial-page-number="1">  <fo:page-number-folio-prefix>    <fo:inline>G-</fo:inline>  </fo:page-number-folio-prefix>  <fo:flow>...</fo:flow></fo:page-sequence>

Throughout the document, there are a number of index terms for theEiffel Tower.This example uses explicit markup in thesourcedocument's vocabulary.Other mechanisms, such as external index documents,can also be supported as long as the correct formatting objectscan be generated.In this example index terms may be primary, secondary, or tertiary,reflecting a typical multi-level index.Primary entries may have subordinate secondary entries.Secondary entries may have subordinate tertiary entries.For this document only the lowest-level entries are associatedwith page numbers (which means that each "indexterm" element can besimply translated into an index key valueby concatenating the primary, secondary, and tertiary term values withsome separator, ";" in this example, between them).

  • Each individual reference to the tower is identified:

    <indexterm><primary>Eiffel Tower</primary></indexterm>
  • Some of these terms identify a preferred description of the tower:

    <indexterm significance="preferred"><primary>Eiffel Tower</primary></indexterm>
  • For a long description of the tower, individual terms markthe beginning and endof the span:

    <indexterm><primary>Eiffel Tower</primary></indexterm>...<indexterm startref="ei.idx"/>
  • Two of the terms occur inside figures:

    <figure><head>The Eiffel Tower</head><indexterm><primary>Eiffel Tower</primary></indexterm>...</figure>
6.10.1.1.1 Associating Index Keys with Formatting Objects

The first step in generating an index is to transferthe index term information fromthe source document into the formatting objects.It is the location of thisinformation in the formatting object tree that will determinewhat pages appear in the index.

Any formatting object to which the "id" property applies can alsohave an "index-key" property.Any formatting object with an "index-key" specifieddefines a point or range of text that is associatedwith the corresponding index key.

To simplify this example, point anchors will be generatedfor each term (as opposedto placing "index-key" on formatting objects usedfor other purposes).

Consider the following templates:

<xsl:template match="indexterm[@significance='preferred']"     priority="100">  <fo:wrapper>    <xsl:attribute name="index-key">      <xsl:value-of select="primary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="secondary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="tertiary"/>      <xsl:text>;preferred</xsl:text>    </xsl:attribute>  </fo:wrapper></xsl:template><xsl:template match="indexterm[@class='startofrange']"     priority="75">  <fo:index-range-begin/>    <xsl:attribute name="index-key">      <xsl:value-of select="primary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="secondary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="tertiary"/>    </xsl:attribute></xsl:template><xsl:template match="indexterm[@class='endofrange']"     priority="75">  <fo:index-range-end ref-id="{@startref}">  </fo:index-range-end></xsl:template><xsl:template match="figure/indexterm" priority="50">  <fo:wrapper>    <xsl:attribute name="index-key">      <xsl:value-of select="primary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="secondary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="tertiary"/>      <xsl:text>;figure</xsl:text>    </xsl:attribute>  </fo:wrapper></xsl:template><xsl:template match="indexterm">  <fo:wrapper>    <xsl:attribute name="index-key">      <xsl:value-of select="primary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="secondary"/>      <xsl:text>;</xsl:text>      <xsl:value-of select="tertiary"/>    </xsl:attribute>  </fo:wrapper></xsl:template>

Applied to the example index terms, these templates will producea set of index key associations, e.g.(interspersed among the other formatting objects):

[E  9] <fo:wrapper index-key="Eiffel Tower;;"/>[F 10] <fo:wrapper index-key="Eiffel Tower;;"/>[G 11] <fo:wrapper index-key="Eiffel Tower;;"/>[H 13] <fo:index-range-begin index-key="Eiffel Tower;;"/>[Y 15] <fo:wrapper index-key="Eiffel Tower;;"/>[C 15] <fo:wrapper index-key="Eiffel Tower;;;figure"/>[K 16] <fo:index-range-end ref-id="ei.idx"/>[L 18] <fo:index-range-begin index-key="Eiffel Tower;;"/>[A 19] <fo:wrapper index-key="Eiffel Tower;;;preferred"/>[O 21] <fo:index-range-end ref-id="ei2.idx"/>[B 23] <fo:wrapper index-key="Eiffel Tower;;;preferred"/>[D 25] <fo:wrapper index-key="Eiffel Tower;;;figure"/>[P 27] <fo:wrapper index-key="Eiffel Tower;;"/>[Q 29] <fo:wrapper index-key="Eiffel Tower;;"/>[R 30] <fo:wrapper index-key="Eiffel Tower;;"/>[S 31] <fo:wrapper index-key="Eiffel Tower;;"/>[T 32] <fo:wrapper index-key="Eiffel Tower;;"/>[U 33] <fo:wrapper index-key="Eiffel Tower;;"/>[V 34] <fo:wrapper index-key="Eiffel Tower;;"/>[X 37] <fo:wrapper index-key="Eiffel Tower;;"/>

In the list above a label has been added for each formattingobject consisting of a letter and the ordinal page number (see below).These are carried through below to make referencing andreading the example easier.

These formatting objects are spread throughout the document,appearing in the formatting objecttree where each index page reference is desired.Naturally, in a real document, there would be manymore of these formatting objects,one or more for each term that will appear in the index.

6.10.1.1.2 Building the Index

Assembling a properly collated and sorted index isaccomplished using the general stylesheet mechanisms.These details are not considered here.

Note:

Index cross references("see" and "see also" entries)are not associated with page numbers, so they do not use theindexing formatting objects.

This section describes the formatting objects used forcollating and sorting the lists of page number citationsassociated witheach entry in the index.The formatting objects referenced by index keys are usedto generate sets of cited page items referencingsets of pages from the paginated area tree.These cited page items are then collated, sorted, and possibly collapsedinto cited page item ranges,and then the final formatting processing is applied.That is, the index processing starts asreferences to formatting objects by index key, moves to the domainof real pages on which those formatting objects fall, and then,once the lists of pages have been reduced to sets and ranges,results in formatted lists of page numbers and ranges.

The fo:index-page-citation-list formatting objectis used to group index key references together.Its ultimate effect is to produce a formatted list of page numbersand ranges.The starting set of cited page itemsis created using "fo:index-key-reference" formatting objects.Eachfo:index-key-reference formatting object uses a single index keyto generate cited page items for the pages on which theformatting objects with that key occur.The fo:index-key-reference also provides the formattingproperties for these page numbers.All of the cited page items generated from a singlefo:index-page-citation-list formatting object are sorted andcollated together.

For this example, the formatting style is to distinguish pagesthat have the principal description of an item by using bold page numbersand to enclose in square brackets thepage numbers where the index key occured in a figure.The following formatting objects accomplish this:

<fo:index-page-citation-list   merge-sequential-page-numbers="merge"/>  <fo:index-key-reference ref-index-key="Eiffel Tower;;;preferred"         font-weight="bold"        />  <fo:index-key-reference ref-index-key="Eiffel Tower;;;figure"         font-style="italic"        >    <fo:index-page-number-prefix>      <fo:inline>[</fo:inline>    </fo:index-page-number-prefix>    <fo:index-page-number-suffix>      <fo:inline>]</fo:inline>    </fo:index-page-number-suffix>  </fo:index-key-reference>  <fo:index-key-reference ref-index-key="Eiffel Tower;;"                /></fo:index-page-citation-list>

In this index page citation list, three different groups ofpage citations, represented by references to three different,but related, keys, are mergedinto a single result list of page citations.

Note:

The "id" values on the fo:index-key-reference formatting objectsare for reference purposes in the text below. They are notnecessary for index processing.

6.10.1.2 Processing the Example Index

This section describes how the index items in the exampleare processed to produce the finallists of formatted page numbers and page ranges.

For the purpose of the example, assume that the followingindex classes are used; the preface specifiesindex-class="preface", all the chapters specifyindex-class="chapter", and the glossary specifiesindex-class="glossary".

Each fo:index-key-reference references one or more pages or pageranges (that is, the page-viewport-areas in the area treethat has as descendants areas generated by thereferenced formatting objects).Each page-viewport-area in the full area tree has an ordinal numberwhich is called the ordinal page number.

In this example the following sets of pages are referencedby the three fo:index-key-reference objects:

KeyOrdinal page numbers
Eiffel Tower;;;preferred19, 23
Eiffel Tower;;;figure15, 25
Eiffel Tower;;9, 10, 11, 13-16, 15, 18-21, 27, 29, 30, 31, 32, 33, 34, 37

Note:

Formatting differences,e.g. ordinal page number 9 formats as "ix" and ordinal page number 37 formats as "G-3",will be considered later.

Within each fo:index-key-reference, page ranges are expanded toa sequence of individual pages and duplicate pages are removed asdescribed in6.10.6 fo:index-key-reference resulting in:

KeyOrdinal page numbers
Eiffel Tower;;;preferred19, 23
Eiffel Tower;;;figure15, 25
Eiffel Tower;;9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 27, 29, 30, 31, 32, 33, 34, 37

For the purpose of processing by the fo:index-page-citation-list eachcited page item can be considered a tuple of four members: the ordinalpage number, the formatting object that is referenced by theindex-key-reference, the index class of the referenced formattingobject, and the fo:index-key-reference that referenced the page (hererepresented by the ID values assigned in the example above).

[A] (19, fo:wrapper,           chapter,  XB)[B] (23, fo:wrapper,           chapter,  XB)[C] (15, fo:wrapper,           chapter,  XI)[D] (25, fo:wrapper,           chapter,  XI)[E] ( 9, fo:wrapper,           preface,  XX)[F] (10, fo:wrapper,           preface,  XX)[G] (11, fo:wrapper,           chapter,  XX)[H] (13, fo:index-range-begin, chapter,  XX)[I] (14, null,                 chapter,  XX)[J] (15, null,                 chapter,  XX)[K] (16, fo:index-range-end,   chapter,  XX)[L] (18, fo:index-range-begin, chapter,  XX)[M] (19, null,                 chapter,  XX)[N] (20, null,                 chapter,  XX)[O] (21, fo:index-range-end,   chapter,  XX)[P] (27, fo:wrapper,           chapter,  XX)[Q] (29, fo:wrapper,           chapter,  XX)[R] (30, fo:wrapper,           chapter,  XX)[S] (31, fo:wrapper,           chapter,  XX)[T] (32, fo:wrapper,           chapter,  XX)[U] (33, fo:wrapper,           chapter,  XX)[V] (34, fo:wrapper,           chapter,  XX)[X] (37, fo:wrapper,           glossary, XX)

Note:

In the case of ranges, the first page in the range isassociated with the start of the range and the last page is associatedwith the end of the range.Intermediate pages don't refer to any particular location on the page,they just refer to that page as a whole.

The next section describes the abstract steps in processing anfo:index-page-citation-list when themerge-pages-across-index-key-references property has the value"leave-separate".6.10.1.2.2 merge-pages-across-index-key-references="merge" describes the same steps whenmerge-pages-across-index-key-referenceshas the value "merge".

6.10.1.2.1 merge-pages-across-index-key-references="leave-separate"

Step A in the processing of fo:index-page-citation-list(see6.10.7 fo:index-page-citation-list)is collating and sorting the cited page items from all the childfo:index-key-reference formatting objects.Themerge-pages-across-index-key-references controlswhether multiple references to the same page are retained.

The following set of tuples represents the case whenmerge-pages-across-index-key-references has the value"leave-separate".For example, ordinal page number 19 is represented twice, once for eachfo:index-key-referencethat referenced it:

[E] ( 9, fo:wrapper,           preface,  XX)[F] (10, fo:wrapper,           preface,  XX)[G] (11, fo:wrapper,           chapter,  XX)[H] (13, fo:index-range-begin, chapter,  XX)[I] (14, null,                 chapter,  XX)[J] (15, null,                 chapter,  XX)[C] (15, fo:wrapper,           chapter,  XI)[K] (16, fo:index-range-end,   chapter,  XX)[L] (18, fo:index-range-begin, chapter,  XX)[A] (19, fo:wrapper,           chapter,  XB)[M] (19, null,                 chapter,  XX)[N] (20, null,                 chapter,  XX)[O] (21, fo:index-range-end,   chapter,  XX)[B] (23, fo:wrapper,           chapter,  XB)[D] (25, fo:wrapper,           chapter,  XI)[P] (27, fo:wrapper,           chapter,  XX)[Q] (29, fo:wrapper,           chapter,  XX)[R] (30, fo:wrapper,           chapter,  XX)[S] (31, fo:wrapper,           chapter,  XX)[T] (32, fo:wrapper,           chapter,  XX)[U] (33, fo:wrapper,           chapter,  XX)[V] (34, fo:wrapper,           chapter,  XX)[X] (37, fo:wrapper,           glossary, XX)

Step B is performed ifmerge-sequential-page-numbershas the value "merge". It consists of merging cited page itemsreferring to three or more sequential pages(see6.10.7 fo:index-page-citation-list) into a range.

Ifmerge-ranges-across-index-key-references has thevalue "leave-separate", the ranges will be as shown below(ranges are represented by a pair of tuples, the first for thestart of the range, the second for the end of the range):

[E] ( 9,   fo:wrapper,            preface,  XX)[F] (10,   fo:wrapper,            preface,  XX)[G] (11,   fo:wrapper,            chapter,  XX)([H] (13,  fo:index-range-begin,  chapter,  XX),  [K] (16, fo:index-range-end,    chapter,  XX))[C] (15,   fo:wrapper,            chapter,  XI)([L] (18,  fo:index-range-begin,  chapter,  XX),  [O] (21, fo:index-range-end,    chapter,  XX))[A] (19,   fo:wrapper,            chapter,  XB)[B] (23,   fo:wrapper,            chapter,  XB)[D] (25,   fo:wrapper,            chapter,  XI)[P] (27,   fo:wrapper,            chapter,  XX)([Q] (29,  fo:wrapper,            chapter,  XX),  [V] (34, fo:wrapper,            chapter,  XX))[X] (37,   fo:wrapper,            glossary, XX)

Ifmerge-ranges-across-index-key-references has thevalue "merge", the ranges will be:

[E] ( 9,   fo:wrapper,            preface,  XX)[F] (10,   fo:wrapper,            preface,  XX)[G] (11,   fo:wrapper,            chapter,  XX)([H] (13,  fo:index-range-begin,  chapter,  XX),  [K] (16, fo:index-range-end,    chapter,  XX))([L] (18,  fo:index-range-begin,  chapter,  XX),  [O] (21, fo:index-range-end,    chapter,  XX))[B] (23,   fo:wrapper,            chapter,  XB)[D] (25,   fo:wrapper,            chapter,  XI)[P] (27,   fo:wrapper,            chapter,  XX)([Q] (29,  fo:wrapper,            chapter,  XX),  [V] (34, fo:wrapper,            chapter,  XX))[X] (37,   fo:wrapper,            glossary, XX)

Step C consists of formatting the cited page items andcited page item ranges as actual page numbers and ranges,taking into account any index page number prefix and suffix andusing the appropriate index page citation list separator andindex page citation range separator.

6.10.1.2.2 merge-pages-across-index-key-references="merge"

The following shows steps A and B whenmerge-pages-across-index-key-references has the value"merge".

In step A tuple [C] is merged with tuple [J] and tuple [M] is mergedwith tuple [A]:

[E] ( 9, fo:wrapper,           preface,  XX)[F] (10, fo:wrapper,           preface,  XX)[G] (11, fo:wrapper,           chapter,  XX)[H] (13, fo:index-range-begin, chapter,  XX)[I] (14, null,                 chapter,  XX)[C] (15, fo:wrapper,           chapter,  XI)[K] (16, fo:index-range-end,   chapter,  XX)[L] (18, fo:index-range-begin, chapter,  XX)[A] (19, fo:wrapper,           chapter,  XB)[N] (20, null,                 chapter,  XX)[O] (21, fo:index-range-end,   chapter,  XX)[B] (23, fo:wrapper,           chapter,  XB)[D] (25, fo:wrapper,           chapter,  XI)[P] (27, fo:wrapper,           chapter,  XX)[Q] (29, fo:wrapper,           chapter,  XX)[R] (30, fo:wrapper,           chapter,  XX)[S] (31, fo:wrapper,           chapter,  XX)[T] (32, fo:wrapper,           chapter,  XX)[U] (33, fo:wrapper,           chapter,  XX)[V] (34, fo:wrapper,           chapter,  XX)[X] (37, fo:wrapper,           glossary, XX)

In step B, ifmerge-ranges-across-index-key-referenceshas the value "leave-separate", the ranges will be:

[E] ( 9,   fo:wrapper,           preface,  XX)[F] (10,   fo:wrapper,           preface,  XX)[G] (11,   fo:wrapper,           chapter,  XX)[H] (13,   fo:index-range-begin, chapter,  XX)[I] (14,   null,                 chapter,  XX)[C] (15,   fo:wrapper,           chapter,  XI)[K] (16,   fo:index-range-end,   chapter,  XX)[L] (18,   fo:index-range-begin, chapter,  XX)[A] (19,   fo:wrapper,           chapter,  XB)[N] (20,   null,                 chapter,  XX)[O] (21,   fo:index-range-end,   chapter,  XX)[B] (23,   fo:wrapper,           chapter,  XB)[D] (25,   fo:wrapper,           chapter,  XI)[P] (27,   fo:wrapper,           chapter,  XX)([Q] (29,  fo:wrapper,           chapter,  XX),  [V] (34, fo:wrapper,           chapter,  XX))[X] (37,   fo:wrapper,           glossary, XX)

Ifmerge-ranges-across-index-key-referenceshas the value "merge", the ranges will be:

[E] ( 9,   fo:wrapper,           preface,  XX)[F] (10,   fo:wrapper,           preface,  XX)[G] (11,   fo:wrapper,           chapter,  XX)([H] (13,  fo:index-range-begin, chapter,  XX),  [K] (16, fo:index-range-end,   chapter,  XX))([L] (18,  fo:index-range-begin, chapter,  XX),  [O] (21, fo:index-range-end,   chapter,  XX))[B] (23,   fo:wrapper,           chapter,  XB)[D] (25,   fo:wrapper,           chapter,  XI)[P] (27,   fo:wrapper,           chapter,  XX)([Q] (29,  fo:wrapper,           chapter,  XX),  [V] (34, fo:wrapper,           chapter,  XX))[X] (37,   fo:wrapper,           glossary, XX)
6.10.1.3 Example Index

The final set of page numbers that will appear in the example indexentry depends on the values of themerge-pages-across-index-key-references,merge-ranges-across-index-key-references,andindex-class traits.If the index terms from the preface, chapter and glossary have differentindex-class values as is the case inthe example,then the results for the generated page number list are:

merge-pages-across-index-key-references/ merge-ranges-across-index-key-referencesResulting index pages
leave-separate/leave-separateix, x, 1, 3-6,[5], 8-11,9,13,[15], 17, 19-24, G-3
leave-separate/mergeix, x, 1, 3-6, 8-11,13,[15], 17, 19-24, G-3
merge/leave-separateix, x, 1, 3, 4,[5], 6, 8,9, 10, 11,13,[15], 17, 19-24, G-3
merge/mergeix, x, 1, 3-6, 8-11,13,[15], 17, 19-24, G-3

If the index terms from the preface, chapter, and appendix pagesare in the sameindex-class:

merge-pages-across-index-key-references/ merge-ranges-across-index-key-referencesResulting index pages
leave-separate/leave-separateix-1, 3-6,[5], 8-11,9,13,[15], 17, 19-24, G-3
leave-separate/mergeix-1, 3-6, 8-11,13,[15], 17, 19-24, G-3
merge/leave-separateix-1, 3, 4,[5], 6, 8,9, 10, 11,13,[15], 17, 19-24, G-3
merge/mergeix-1, 3-6, 8-11,13,[15], 17, 19-24, G-3

6.10.2 fo:index-page-number-prefix

Common Usage:

The fo:index-page-number-prefix formatting object specifiesa static prefix for the cited page items created byfo:index-key-reference.

Areas:

The fo:index-page-number-prefix formatting object doesnot directly produce any areas.Its children will be retrieved and used by fo:index-page-citation-listwhen formatting cited page items and cited page item ranges.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

6.10.3 fo:index-page-number-suffix

Common Usage:

The fo:index-page-number-suffix formatting object specifiesa static suffix for the cited page items created byfo:index-key-reference.

Areas:

The fo:index-page-number-suffix formatting object doesnot directly produce any areas.Its children will be retrieved and used by fo:index-page-citation-listwhen formatting cited page items and cited page item ranges.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

6.10.4 fo:index-range-begin

Common Usage:

The fo:index-range-begin formatting object is used to indicatethe beginning of an "indexed range" associated with an index key.The index range is ended by a corresponding fo:index-range-end.

All formatting objects following (in document order) thisfo:index-range-begin, and up to the matchingfo:index-range-end, are considered to be under the index range influenceof this fo:index-range-begin.

Areas:

The fo:index-range-begin does not generate any area.

Constraints:

Each fo:index-range-begin formatting object must specify both an idand an index-key property.

An fo:index-range-begin/fo:index-range-end pair is considered amatching pair if the ref-id property of the fo:index-range-end hasthe same value as the id property on the fo:index-range-begin.

Following this fo:index-range-begin in document order, there mustbe an fo:index-range-end with which it forms a matching pair. If thereis no such fo:index-range-end, it is an error, and the implementationshould recover by assuming the equivalent of a matchingfo:index-range-end at the end of the document.

Contents:

EMPTY

The following properties apply to this formatting object:

7.30.8 id
7.24.2 index-key
7.24.1 index-class

6.10.5 fo:index-range-end

Common Usage:

The fo:index-range-end is used to indicate the end ofan "indexed range" that is started by its matchingfo:index-range-begin.See6.10.4 fo:index-range-begin for details.

Areas:

The fo:index-range-end does not generate any area.

Constraints:

Preceding this fo:index-range-end in document order, there mustbe an fo:index-range-begin with which it forms a matching pair. If thereis no such fo:index-range-begin, it is an error, and the implementationshould recover by ignoring this fo:index-range-end.

Contents:

EMPTY

The following properties apply to this formatting object:

7.30.13 ref-id

6.10.6 fo:index-key-reference

Common Usage:

The fo:index-key-reference formatting object is used to generatea set of cited page items for all the occurrences of the specifiedindex-key.

Acited page item is a name for a collection containingthe following information:

  • a reference to a page area

  • a reference to an fo:index-key-reference

  • an index class.

Areas:

The fo:index-key-reference does not generate any areas. The containingfo:index-page-citation-list formatting object uses the cited page itemsthat it contains to produce the generated list of page numbers.

Constraints:

Each fo:index-key-reference formatting object identifiesone or more formatting objects in the formatting object treewith an index-key value that matches the ref-index-key propertyof the fo:index-key-reference.It is an error if there are no such formatting objects.Implementations should recover from this errorby ignoring the fo:index-key-reference.

If the matched index-key occurs on an fo:index-range-begin,all of the pages whose descendants include areas generated byformatting objects under the index rangeinfluence of that fo:index-range-begin are referencedby the generated cited page items.

For each formatting object containing a matching index-key, acited page item is generated for each page whose descendants includeareas returned from that formatting object.The index class of thesecited page items is taken from that formatting object.If there are no areas returned from that formatting object thena cited page item is generated referring to the page containingthe first area returned froma following formatting object, if any, or the last area returnedfrom a preceding formatting object, if any.

Note:

For example,if the matched index-key occurs on an fo:block andthat block spans pages 3 and 4, then pages 3 and 4 are referenced.If the block is wholly contained on page 3, only page 3 is referenced.Equally, if the matched element is an fo:index-range-begin on page 8and the matching pair fo:index-range-end is on page 10,then pages 8-10 are referenced.If the beginning of the range and the end of the rangeboth occur on page 8, then only page 8 is referenced.

Within each fo:index-key-reference, page ranges are expanded to asequence of individual cited page items and all but one cited page itemthat refer to the same page are removed.When two cited page items refer to the same page, the cited page itemreferring to thefo:index-range-begin or fo:index-range-end occurring first indocument order is retained. If none of the referenced formatting objectsis an fo:index-range-begin or fo:index-range-end, the cited page itemreferring to theformatting object that occurs first in the page is retained.

Note:

Duplicates are removed irrespective of index-class.

Contents:

(index-page-number-prefix?,index-page-number-suffix?)

The following properties apply to this formatting object:

7.24.3 page-number-treatment
7.24.7 ref-index-key

6.10.7 fo:index-page-citation-list

Common Usage:

The fo:index-page-citation-list formatting object is used togroup together the sets of cited page items generated by itsfo:index-key-reference children. Each fo:index-key-referencechild provides formatting properties for the correspondingcited page items. The resulting cited page items aresorted and collated together. The ultimate effect of thefo:index-page-citation-list is to generate a formatted list ofpage numbers and ranges.

Areas:

The fo:index-page-citation-list formatting object generates andreturns one or morenormalinline-areas.

Trait Derivation:

The traits used for formatting the individual parts of thelist of page numbers and ranges is described below.

Constraints:

Note:

Although the constraints are described as performing a seriesof steps, this is solely for the convenience of expositionand does not imply they must be implemented as separatesteps in any conforming implementation. A conforming implementationmust only achieve the same effect.

Step A:Cited page items from all the child fo:index-key-referenceformatting objects are sorted in area tree order.There are then two cases:ifmerge-pages-across-index-key-references has the value"leave-separate", cited page items referring to the same pagegenerated by differentfo:index-key-reference formatting objects will be preserved.Ifmerge-pages-across-index-key-references has the value"merge", only one of the cited page items referring to any given pagewill be preserved, as specified in7.24.6 merge-pages-across-index-key-references.

Step B: consists of merging sequences of three or moresequential cited page items into a cited page item range.It is performed only if the value ofmerge-sequential-page-numbersis "merge".

Several conditions influence whether or not any two cited page itemsfrom the complete set of cited page itemsare considered sequential.Two cited page items are sequential if and only if all of the followingconditions hold:

  1. The cited page items refer to page-viewport-areas that areconsecutive children of the root of the area tree.

  2. They have the sameindex-class.

  3. Either the cited page items are generated by the samefo:index-key-referenceor the value ofmerge-ranges-across-index-key-referencesis "merge".

Step C: consists of formatting the cited page items andcited page item ranges intothe list of formatted page numbers and ranges.The result is the same as formattinga sequence of result tree fragments corresponding toindividual page numbers, any index page number prefix or suffix,range and list separators.

For each cited page item, from fo:index-key-referenceR,the result areas are the same as the resultof formatting:

  1. IfR has an fo:index-page-number-prefix child,an fo:inline containing the result-tree fragment that arethe children of the fo:index-page-number-prefix.The traits of the fo:inline are inherited fromR, except forkeep-with-next.within-line which has the value "always".

  2. An fo:inline containing the result-tree fragment,defined in6.6.10 fo:page-number,using the page referenced by the cited page itemas thereference-page,and the fo:page-sequence that generated the referenced pageas thereference-page-sequence.The traits of the fo:inline are inherited fromR.If thepage-number-treatment has the value "link",the fo:inline should be a link back to the source of the referenceas for fo:basic-link.

  3. IfR has an fo:index-page-number-suffix child,an fo:inline containing the result-tree fragment that arethe children of the fo:index-page-number-suffix.The traits of the fo:inline are inherited fromR, except forkeep-with-previous.within-line which has the value "always".

For each cited page item range the result areas are the same as theresult of formatting:

  1. The first cited page item in the range in the same way asa cited page item; see above.

  2. If the fo:index-page-citation-list has anfo:index-page-citation-range-separator child, an fo:inlinecontaining the result-tree fragment that are the children of thefo:index-page-citation-range-separator.The traits of the fo:inline are inherited from thefo:index-page-citation-range-separator, except forkeep-with-previous.within-line andkeep-with-next.within-line that have the value "always".

    Otherwise an fo:character with traits:character with value U+2013 (en dash),keep-with-previous.within-line andkeep-with-next.within-line that have the value "always".All other traits are inherited from the fo:index-page-citation-list.Implementations may provide an alternative default,for example to provide a language- or locale-specific index rangeseparator.

  3. The last cited page item in the range in the same way asa cited page item; see above.

After each formatted page item or range, except the last, a separator isinserted. The result areas are the same as the result of formatting:

If the fo:index-page-citation-list has anfo:index-page-citation-list-separator child,the result-tree fragment that are the children of thefo:index-page-citation-list-separator.The traits of the fo:inline are inherited from thefo:index-page-citation-list-separator.

Otherwise an fo:character with traits:character with value U+002C (comma) andkeep-with-previous.within-line with value "always",followed by an fo:character with trait:character with value U+0020 (space).All other traits are inherited from the fo:index-page-citation-list.Implementations may provide an alternative default,for example to provide a language- or locale-specific index listseparator.

Contents:

(index-page-citation-list-separator?,index-page-citation-range-separator?,index-key-reference+)

The following properties apply to this formatting object:

7.24.5 merge-sequential-page-numbers
7.24.4 merge-ranges-across-index-key-references
7.24.6 merge-pages-across-index-key-references

6.10.8 fo:index-page-citation-list-separator

Common Usage:

The fo:index-page-citation-list-separator formatting object specifiesthe formatting objects used to separate singleton page numbers orpage number ranges in the generated list of page numbers.

Areas:

The fo:index-page-citation-list-separator formatting object doesnot directly produce any areas.Its children will be retrieved and used by fo:index-page-citation-listwhen formatting the list of page references.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

6.10.9 fo:index-page-citation-range-separator

Common Usage:

The fo:index-page-citation-range-separator formatting object specifiesthe formatting objects used to separate two page numbers forming arange in the generated list of page numbers.

Areas:

The fo:index-page-citation-range-separator formatting object doesnot directly produce any areas.Its children will be retrieved and used by fo:index-page-citation-listwhen formatting the list of page references.

Constraints:

None.

Contents:

(#PCDATA|%inline;)*

6.11 Formatting Objects for Bookmarks

6.11.1 fo:bookmark-tree

Common Usage:

The fo:bookmark-tree formatting object is used to hold a list ofaccess points within the document such as a table of contents, a listof figures or tables, etc. Each access point is called a bookmark.

Areas:

This formatting object returns the sequence of areasreturned by the children of this formatting object.

Constraints:

The sequence of returned areas must be the concatenation of thesub-sequences of areas returned by each of the flow children of thefo:bookmark-tree formatting object in the order in which the childrenoccur.

Contents:

(bookmark+)

6.11.2 fo:bookmark

Common Usage:

The fo:bookmark formatting object is used to identifyan access point, by name, and to specify where thataccess point is within the current document or anotherexternal document. A given bookmark may be furthersubdivided into a sequence of (sub-)bookmarks to asmany levels as the authors desire.

Note:

The fo:bookmark is a specialized form of thefo:basic-link with restrictions on the applicableproperties and on its content model.

Areas:

The fo:bookmark formatting object generates one ormore normal inline-areas. The fo:bookmark returnsthese areas.

Constraints:

One of the external-destination and internal-destinationproperties should be specified. If both are specified, the systemmay either report it as an error, or use the internal-destinationproperty.

No area may have more than one normal child areareturned by the same fo:bookmark formatting object.

The children of each normal area returned by anfo:bookmark must satisfy the constraints specified in4.7.3 Inline-building.

The property "starting-state" determines whether any sub-list of bookmarks is initially displayed or is hidden. The value "show" means include the sub-list of bookmarks in the presentation of this bookmark. The value "hide" means show only this bookmark in the presentation.

Contents:

(bookmark-title,bookmark*)

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.23.6 external-destination
7.23.8 internal-destination
7.23.10 starting-state

6.11.3 fo:bookmark-title

Common Usage:

The fo:bookmark-title formatting object is used to identify,in human readable form, an access point.

Note:

The fo:bookmark-title is a specialized form of thefo:inline with restrictions on the applicableproperties and on its content model.

Areas:

The fo:bookmark-title formatting object generates one ormore normal inline-areas. The fo:bookmark-title returnsthese areas.

Trait Derivation:

Even though the white-space-treatment, linefeed-treatment, andwhite-space-collapse properties are not applicableto fo:bookmark-title, the implementation should behave as thoughthese properties applied and had their initial values.

Constraints:

No area may have more than one normal child areareturned by the same fo:bookmark-title formatting object.

The children of each normal area returned by anfo:bookmark-title must satisfy the constraints specifiedin4.7.3 Inline-building.

Contents:

(#PCDATA)

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.18.1 color
7.9.7 font-style
NOTE:with the value space limited to "normal" and "italic",

7.9.9 font-weight
NOTE:with the value space limited to "normal" and "bold"

6.12 Out-of-Line Formatting Objects

6.12.1 Introduction

6.12.1.1 Floats

The fo:float formatting object is used for two distinct purposes.First, so that during the normal placement of content, somerelated content is formatted into a separate area at the beginning ofa page where it is available to be read without immediately intrudingon the reader. The areas generated by this kind of fo:float are calledbefore-floats. An fo:float is specified to generate before-floats if ithas a "float" property value of "before". The constraints on placingbefore-floats on a page are described in the6.12.1.3 Conditional Sub-Regionssection of this introduction and in the description of the fo:floatformatting object.

Second, the fo:float formatting object is used when an areais intended to float to one side, with normal content flowing alongsidethe floated area. The areas generated by this kind of fo:float arecalled side-floats. A side-float is always made a child of the nearestancestor reference-area. The edge of the reference-area towards whichthe side-float floats is controlled by the value of the "float" property.

Flowing normal content flowing alongside side-floats is realizedby increasing the start-intrusion-adjustment or the end-intrusion-adjustmentof normal child areas of the parent reference-area of the side-float.

The "clear" property applies to any block-level formattingobject. If the value of this property for a particular formatting objectis any value other than "none", then the areas generated by the blockwill be positioned to ensure that their border-rectangles do notoverlap the allocation-rectangles of the applicable side-floats as determinedby the "clear" property value.

6.12.1.2 Footnotes

The fo:footnote formatting object is used to generate botha 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 toproduce the footnote citation.The second child is an fo:footnote-body formatting objectwhich generates the content (or body) of the footnote.

The actual areas generated by the descendants of the fo:footnote-bodyformatting object are determined by the formatting objects that comprise thedescendant subtree. For example, the footnote could be formatted witha label and an indented body by using the fo:list-block formatting objectwithin the fo:footnote-body.

6.12.1.3 Conditional Sub-Regions

The region-body has two conditional sub-regions which implicitlyspecify corresponding reference-areas calledbefore-float-reference-area andfootnote-reference-area. These reference-areas are conditionallygenerated as children of the region-reference-area. The before-float-reference-areais 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 areaswith area-class "xsl-footnote".

The conditionally generated areas borrow space in theblock-progression-dimension (this is "height"when the writing-mode is "lr-tb") within the region-reference-area,at the expense of the main-reference-area. Whether or not a conditionally generatedarea is actually generated depends, additionally, on whether thereis sufficient space left in the main-reference-area.

There may be limits on how much space conditionally generated areas canborrow from the region-reference-area. It is left to the user agentto decide these limits.

The block-progression-dimension of the main-reference-area isset equal to the block-progression-dimension of the allocation-rectangleof the region-reference-area minus the sum of the sizes in theblock-progression-direction of the allocation-rectangles of theconditionally generated reference-areas that were actually generated.The main-reference-area is positioned to immediately follow the after-edgeof the allocation-rectangle of the before-float-reference-area.This positions the after-edge of the main-reference-area to coincidewith the before-edge of the allocation-rectangle of the footnote-reference-area.In addition to the constraints normally determined by the region-reference-area,theinline-progression-dimension (this is "width"when the writing-mode is "lr-tb") of a conditionally generated reference-areais constrained to match the inline-progression-dimension of the main-reference-area.

Each conditionally generated reference-area may additionally contain a sequenceof areas used to separate the reference-area from the main-reference-area.The sequence of areas is the sequence returned by formatting an fo:static-contentspecified in the page-sequence that is being used to format the page.

If there is an fo:static-content in a page-sequence whose "flow-name" property value is"xsl-before-float-separator", then the areas returned by formatting thefo:static-content are inserted in the proper order as the last children ofa before-float-reference-area that is generated using the same page-master,provided the main-reference-area on the page is not empty.

If there is an fo:static-content whose "flow-name" property value is"xsl-footnote-separator", then the areas returned by formatting thefo:static-content are inserted in the proper order as the initial children ofa footnote-reference-area that is generated using the same page-master.

An interactive user agent may choose to create "hot links" to the footnotesfrom the footnote-citation, or create "hot links" to the before-floats froman implicit citation, instead of realizing conditional sub-regions.

The generation of areas with area-class "xsl-before-float" or "xsl-footnote"is specified in the descriptions of the formatting objects that initiallyreturn areas with those area-classes.

6.12.1.4 Examples
6.12.1.4.1 Floating Figure

Input sample:

<doc>  <p>C'ieng pieces were made in northern towns, such as C'ieng Mai.They were typically of tamlung weight.</p>  <figure>    <photo image="TH0317A.jpg"/>    <caption>C'ieng Tamlung of C'ieng Mai</caption>  </figure></doc>

In this example the figures are placed as floats at the beforeside (top in a lr-tb writing-mode).

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="figure">  <fo:float float="before">    <xsl:apply-templates/>  </fo:float></xsl:template><xsl:template match="photo">  <fo:block text-align="center">    <fo:external-graphic src="{@image}"/>  </fo:block></xsl:template><xsl:template match="caption">  <fo:block space-before="3pt" text-align="center"    start-indent="10mm" end-indent="10mm">    <xsl:apply-templates/>  </fo:block></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:block>C'ieng pieces were made in northern towns,such as C'ieng Mai. They were typically of tamlung weight.</fo:block><fo:float float="before">  <fo:block text-align="center">    <fo:external-graphic src="TH0317A.jpg">    </fo:external-graphic>  </fo:block>  <fo:block space-before="3pt" text-align="center" start-indent="10mm"    end-indent="10mm">C'ieng Tamlung of C'ieng Mai  </fo:block></fo:float>
6.12.1.4.2 Footnote

Input sample:

<doc>  <p>Some Pod Duang were restruck<fn>Berglund, A., Thai Money, fromEarliest Times to King Rama V, p. 203.</fn> during the reign of King Rama V.</p></doc>

In this example the footnotes are numbered consecutively throughoutthe document. The footnote callout is the number of the footnote,followed by a ")", as a superscript. The footnote itself is formattedusing list formatting objects with the footnote number as the labeland the footnote text as the body.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="fn">  <fo:footnote>    <fo:inline font-size="0.83em" baseline-shift="super">      <xsl:number level="any" count="fn" format="1)"/>    </fo:inline>    <fo:footnote-body>      <fo:list-block provisional-distance-between-starts="20pt"          provisional-label-separation="5pt">        <fo:list-item>          <fo:list-item-label end-indent="label-end()">            <fo:block  font-size="0.83em"                       line-height="0.9em">              <xsl:number level="any" count="fn" format="1)"/>            </fo:block>          </fo:list-item-label>          <fo:list-item-body start-indent="body-start()">            <fo:block  font-size="0.83em"                       line-height="0.9em">              <xsl:apply-templates/>            </fo:block>          </fo:list-item-body>        </fo:list-item>      </fo:list-block>    </fo:footnote-body>  </fo:footnote></xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<fo:block>Some Pod Duang were restruck  <fo:footnote>    <fo:inline font-size="0.83em" baseline-shift="super">1)    </fo:inline>    <fo:footnote-body>    <fo:list-block provisional-distance-between-starts="20pt"      provisional-label-separation="5pt">    <fo:list-item>    <fo:list-item-label end-indent="label-end()">    <fo:block font-size="0.83em" line-height="0.9em">1)    </fo:block>    </fo:list-item-label>    <fo:list-item-body start-indent="body-start()">    <fo:block font-size="0.83em" line-height="0.9em">Berglund, A.,Thai Money, from Earliest Times to King Rama V, p. 203.    </fo:block>    </fo:list-item-body>    </fo:list-item>    </fo:list-block>    </fo:footnote-body>  </fo:footnote> during the reign of King Rama V.</fo:block>

6.12.2 fo:float

Common Usage:

The fo:float formatting object is typically used either to cause animage to be positioned in a separate area at the beginning of a page, orto cause an image to be positioned to one side, with normal contentflowing around and along-side the image.

Areas:

The fo:float generates an optional single area with area-class"xsl-anchor", and one or more block-areas that all share the samearea-class, which is either "xsl-before-float", "xsl-side-float" or"xsl-normal" as specified by the "float" property. (An fo:floatgenerates normal block-areas if its "float" property value is "none".)

Areas with area-class "xsl-side-float" are reference areas.

An area with area-class "xsl-before-float" is placed as a childof a before-float-reference-area.

The optional area with area-class "xsl-anchor" is not generated if the"float" property value is "none", or if, due to an error as describedin the constraints section, the fo:float shall be formatted as thoughits "float" property was "none". Otherwise, the area with area-class"xsl-anchor" shall be generated.

The area with area-class "xsl-anchor" has no children, and is aninline-area, except where this would violate the constraints that(a.) any area's children must be either block-areas or inline-areas,but not a mixture, and(b.) the children of a line-area may not consist only of anchor areas.In the case where an inline-area would violate theseconstraints, thefo:float must instead generate a block-area.

Constraints:

The normal inline-area generated by the fo:float shall be placed in the area treeas 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-dimensionand block-progression-dimension.

The termanchor-area is used here to mean the area with area-class"xsl-anchor" generated by the fo:float.An area with area-class "xsl-side-float" is aside-float.

No area may have more than one child block-area with the samearea-class returned by the samefo:float formatting object.

Areas with area-class "xsl-before-float" must be properly ordered within thearea tree relative to other areas with the same area-class.

The padding-, border-, and content-rectangles of the block-areasgenerated by fo:float all coincide. That is, the padding and borderare zero at all edges of the area.

The following constraints apply to fo:float formatting objects that generateareas with area-class "xsl-before-float":

  • It is an error if the fo:float occurs as a descendant ofa flow that is not assigned to one or more region-body regions,or of an fo:block-container that generates absolutely positioned areas.In either case, the fo:float shall be formatted as though its "float"property was "none".

  • A block-area with area-class "xsl-before-float"generated by the fo:float may only be descendant froma 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 hasthe fo:float as a descendant is assigned, and (b) is descendant from the samepage containing the anchor-area, or from a page following that page.

  • The fo:float may not generate any additional block-areaswith area-class "xsl-before-float" unless thepage containing the preceding block-area generated by the fo:floatcontains no other areas with area-class "xsl-before-float", hasan empty main-reference-area, and does not contain a footnote-reference-area.

  • The "clear" property does not apply.

The following constraints apply to fo:float formatting objects that generateareas with area-class "xsl-side-float":

  • Each side-float is placed either asa child of the nearest ancestor reference-area of the anchor-areaor as a child of a later reference-area in the same reference-areachain.

  • Side-floats that are siblings in the area-tree may overlaptheir content rectangles.

  • The description in section 9.5 of[CSS2] shallbe used to determine the formatting of the fo:float and the rendering ofnormal line-areas and side-floats that are inline-overlapping,with these modifications:

    • All references to left and right shall be interpreted as theircorresponding writing-mode relative directions "start" and "end".The "float" property will additionally have the writing-mode relativevalues "start" and "end".

    • All references to top and bottom shall be interpreted as theircorresponding writing-mode relative directions "before" and "after".

    • The phrase "current line box"shall be interpreted to mean theline-area containing the anchor-area generated by the float.If the anchor-area is a block-area then the "current line box" doesnot exist.

    • Side-floats derive their length in theinline-progression-dimension intrinsically from their child areas; thelength is not determined by an explicit property value.

    • A side-float may add to theintrusion adjustment of any inline-overlapping block-areawhose nearest ancestor reference-area is the parent of the side-float.See4.4.2 Intrusion Adjustments for the description of intrusion adjustments.

    • The user agent may make its own determination,after taking into account the intrusion adjustments caused by oneor more overlapping side-floats, that the remaining space in theinline-progression-direction is insufficient for the next side-floator normal block-area. The user agent may address this by causingthe next side-float or normal block-area to "clear" one ofthe relevant side-floats, as described in the "clear" propertydescription, so the intrusion adjustment is sufficiently reduced.Of the side-floats that could be cleared to meet this constraint,the side-float that is actually cleared must be the one whoseafter-edge is closest to the before-edge of the parentreference-area.

      Note:

      The user agent may determine sufficiency of spaceby using a fixed length, or by some heuristic such as whetheran entire word fits into the available space,or by some combination, in order to handle text and images.

Contents:

(%block;)+

An fo:float is not permitted to have an fo:float, fo:footnoteor fo:marker as a descendant.

Additionally, an fo:float is not permitted to have as a descendant anfo:block-container that generates an absolutely positioned area.

The following properties apply to this formatting object:

7.19.2 float
7.19.1 clear
7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.12.3 fo:footnote

Common Usage:

The fo:footnote is typically used to produce footnote-citations within theregion-body of a page and the corresponding footnote in a separate areanearer the after-edge of the page.

Areas:

The fo:footnote formatting object does not generate any areas.The fo:footnote formatting object returns the areas generated andreturned by its child fo:inline formatting object.

Additionally the fo:footnote formatting object returns the block-areaswith area class "xsl-footnote" generated by its fo:footnote-body child.An area with area-class "xsl-footnote" is placedas a child of a footnote-reference-area.

Constraints:

The termanchor-area is defined to mean the last area that isgenerated and returned by the fo:inline child of the fo:footnote.

A block-area returned by the fo:footnote is only permitted as a descendant froma footnote-reference-area that is (a) descendant from a "region-reference-area"generated using the region-master for the region to which the flow that hasthe fo:footnote as a descendant is assigned, and (b) is descendant from the samepage that contains the anchor-area, or from a page following the page that containsthe anchor-area.

The second block-area and any additional block-areas returned by an fo:footnotemust be placed on the immediately subsequent pages to the page containing thefirst block-area returned by the fo:footnote, before any other content is placed.If a subsequent page does not contain a region-body, the user agent must usethe region-master of the last page that did contain a region-body to holdthe additional block-areas.

It is an error if the fo:footnote occurs as a descendant ofa flow that is not assigned to one or more region-body regions,or of an fo:block-containerthat generates absolutely positioned areas. In either case, the block-areasgenerated by the fo:footnote-body child of the fo:footnote shall be returnedto the parent of the fo:footnote and placed in the area tree as though theywere normal block-level areas.

Contents:

(inline,footnote-body)

An fo:footnote is not permitted to have an fo:float, fo:footnote,or fo:marker as a descendant.

Additionally, an fo:footnote is not permitted to have as a descendantan fo:block-container that generates an absolutely positioned area.

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.12.4 fo:footnote-body

Common Usage:

The fo:footnote-body is used to generate the footnote content.

Areas:

The fo:footnote-body generates and returns one or more block-levelareas with area-class "xsl-footnote".

Constraints:

The fo:footnote-body is only permitted as a child of an fo:footnote.

No area may have more than one child block-area returned by the samefo:footnote-body formatting object.

Areas with area-class "xsl-footnote" must be properly ordered within thearea tree relative to other areas with the same area-class.

Contents:

(%block;)+

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.13 Other Formatting Objects

6.13.1 Introduction

6.13.1.1 Examples
6.13.1.1.1 Wrapper

The following example shows the use of the fo:wrapperformatting object that has no semantics but acts as a"carrier" for inherited properties.

Input sample:

<doc><p>This is an <emph>important word</emph> in thissentence that also refers to a <code>variable</code>.</p></doc>

The "emph" elements are to be presented using aboldfont and the "code" elements using a Courierfont.

XSL Stylesheet:

<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><xsl:template match="p">  <fo:block>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="emph">  <fo:wrapper font-weight="bold">    <xsl:apply-templates/>  </fo:wrapper></xsl:template><xsl:template match="code">  <fo:wrapper font-family="Courier">    <xsl:apply-templates/>  </fo:wrapper></xsl:template></xsl:stylesheet>

fo: element and attribute tree:

<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">This is an<fo:wrapper font-weight="bold">important word</fo:wrapper>in this sentence that also refers to a<fo:wrapper font-family="Courier">variable</fo:wrapper>.</fo:block>
6.13.1.1.2 Table Markers

The following example shows how to use the fo:retrieve-table-markerformatting object to create a 'Table continued...' caption that appears atthe bottom of the table, when the table continues on the next page(assuming enough data is present that page breaks are generated). It willalso show the subtotal at the bottom of the page when the table continueson the next page, and the grand total at the end of the table.

Input sample:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><numbers>  <number>1</number>  <number>2</number>  <!-- and so on... -->  <number>11</number>  <number>12</number></numbers>

XSL Stylesheet:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">  <xsl:strip-space elements="*"/>  <xsl:template match="numbers">    <fo:table>      <fo:table-column/>      <fo:table-footer>        <fo:table-row>          <fo:table-cell font-weight="bold">            <fo:block> <fo:retrieve-table-marker retrieve-class-name="subtotal-caption"retrieve-position-within-table="last-ending"/> <fo:retrieve-table-marker retrieve-class-name="subtotal"retrieve-position-within-table="last-ending"/>            </fo:block>          </fo:table-cell>        </fo:table-row>        <fo:retrieve-table-marker retrieve-class-name="continued"          retrieve-position-within-table="last-ending"/>      </fo:table-footer>      <fo:table-body>        <fo:marker marker-class-name="continued">          <fo:table-row>            <fo:table-cell>              <fo:block>Table continued...</fo:block>            </fo:table-cell>          </fo:table-row>        </fo:marker>        <fo:marker marker-class-name="subtotal-caption">                Subtotal:        </fo:marker>        <xsl:apply-templates/>      </fo:table-body>    </fo:table>  </xsl:template>  <xsl:template match="number">    <fo:table-row>      <fo:marker marker-class-name="subtotal">        <xsl:value-of select="sum(preceding::number)+text()"/>      </fo:marker>      <xsl:if test="position() = last()">        <fo:marker marker-class-name="continued"/>        <fo:marker marker-class-name="subtotal-caption">          Total:        </fo:marker>      </xsl:if>      <fo:table-cell>        <fo:block>          <xsl:apply-templates/>        </fo:block>      </fo:table-cell>    </fo:table-row>  </xsl:template></xsl:stylesheet>

Result Instance: elements and attributes in the fo:namespace

<?xml version="1.0" encoding="UTF-8"?><fo:table>  <fo:table-column/>  <fo:table-footer>    <fo:table-row>      <fo:table-cell font-weight="bold">        <fo:block>          <fo:retrieve-table-marker            retrieve-position-within-table="last-ending"            retrieve-class-name="subtotal-caption"/>          <fo:retrieve-table-marker            retrieve-position-within-table="last-ending"            retrieve-class-name="subtotal"/>        </fo:block>      </fo:table-cell>    </fo:table-row>    <fo:retrieve-table-marker retrieve-class-name="continued"      retrieve-position-within-table="last-ending"/>  </fo:table-footer>  <fo:table-body>    <fo:marker marker-class-name="continued">      <fo:table-row>        <fo:table-cell>          <fo:block>Table continued...</fo:block>        </fo:table-cell>      </fo:table-row>    </fo:marker>    <fo:marker marker-class-name="subtotal-caption">      Subtotal:    </fo:marker>    <fo:table-row>      <fo:marker marker-class-name="subtotal">1</fo:marker>      <fo:table-cell>        <fo:block>1</fo:block>      </fo:table-cell>    </fo:table-row>    <fo:table-row>      <fo:marker marker-class-name="subtotal">3</fo:marker>      <fo:table-cell>        <fo:block>2</fo:block>      </fo:table-cell>    </fo:table-row>    <!-- and so on... -->    <fo:table-row>      <fo:marker marker-class-name="subtotal">66</fo:marker>      <fo:table-cell>        <fo:block>11</fo:block>      </fo:table-cell>    </fo:table-row>    <fo:table-row>      <fo:marker marker-class-name="subtotal">78</fo:marker>      <fo:marker marker-class-name="continued"/>      <fo:marker marker-class-name="subtotal-caption">        Total:      </fo:marker>      <fo:table-cell>        <fo:block>12</fo:block>      </fo:table-cell>    </fo:table-row>  </fo:table-body></fo:table>

The following is meant as a note that shows by another examplehow the retrieve-table-marker funtions, and how the retrieve scope areaset gets determined depending on the properties specified on thefo:retrieve-table-marker.

Consider this XSL-FO result instance:

<fo:root xmlns:fo=http://www.w3.org/1999/XSL/Format>  <fo:layout-master-set>    <fo:simple-page-master master-name="page ">      <fo:region-body region-name=" body"  column-count="2"/>    </fo:simple-page-master>  </fo:layout-master-set>  <fo:page-sequence master-reference="page"    <fo:flow fo:flow-name=" body">      <fo:table>        <fo:table-column/>        <fo:table-header>...</fo:table-header>          <fo:table-footer>            <fo:table-row>              <fo:table-cell>                <fo:block>                  <fo:retrieve-table-marker                    retrieve-class-name="marker-name"                    retrieve-position-within-table="See table for values..."                    retrieve-boundary-within-table="See table for values..."/>                </fo:block>              </fo:table-cell>            </fo:table-row>        </fo:table-footer>        <fo:table-body>          <fo:table-row>            <fo:table-cell>              <!-- cell 1 -->              <fo:marker marker-class-name="marker-name">                <!-- marker 1 -->                ...              </fo:marker>              ...            </fo:table-cell>          </fo:table-row>          <!-- and so on ... -->          <fo:table-row>            <fo:table-cell>              <!-- cell 14 -->              <fo:marker marker-class-name="marker-name">                <!-- marker 14 -->                ...              </fo:marker>              ...            </fo:table-cell>          </fo:table-row>        </fo:table-body>      </fo:table>    </fo:flow>  </fo:page-sequence></fo:root>

Say the XSL-FO instance results in a paginated document withtwo page, that can be represented by this illustration:

Two pages with Table   [D]

The following table shows the behaviour for retrieve-table-marker1 depending on the values for the properties:

retrieve-boundary-within-tableretrieve scopearea setprimary retrievescope arearetrieve-position-within-tableselectedfo-marker
tableA1A1first-starting1
first-including-carryover1
last-starting4
last-ending3
table-fragmentA1A1first-starting1
first-including-carryover1
last-starting4
last-ending3
pageA1A1first-starting1
first-including-carryover1
last-starting4
last-ending3

The following table shows thebehaviour for retrieve-table-marker 2 depending on the values forthe properties:

retrieve-boundary-within-tableretrieve scope areasetprimary retrieve scopearearetrieve-position-within-tableselectedfo-marker
tableA1, A2A2first-starting5
first-including-carryover4
last-starting7
last-ending7
table-fragmentA2A2first-starting5
first-including-carryover4
last-starting7
last-ending7
pageA1, A2A2first-starting5
first-including-carryover4
last-starting7
last-ending7

The following table shows thebehaviour for retrieve-table-marker 3 depending on the values forthe properties:

retrieve-boundary-within-tableretrieve scope areasetprimary retrieve scopearearetrieve-position-within-tableselectedfo-marker
tableA1, A2, A3A3first-starting8
first-including-carryover8
last-starting11
last-ending10
table-fragmentA3A3first-starting8
first-including-carryover8
last-starting11
last-ending10
pageA3A3first-starting8
first-including-carryover8
last-starting11
last-ending10

The following table shows thebehaviour for retrieve-table-marker 4 depending on the values forthe properties:

retrieve-boundary-within-tableretrieve scope areasetprimary retrieve scopearearetrieve-position-within-tableselectedfo-marker
tableA1, A2, A3, A4A4first-starting12
first-including-carryover11
last-starting14
last-ending14
table-fragmentA4A4first-starting12
first-including-carryover11
last-starting14
last-ending14
pageA3, A4A4first-starting12
first-including-carryover11
last-starting14
last-ending14

6.13.2 fo:change-bar-begin

Common Usage:

The fo:change-bar-begin is used to indicate the beginning of a"change region" that is ended by the subsequent fo:change-bar-endwhosechange-bar-class property value matches that of thechange-bar-class property on this fo:change-bar-beginand is at the same nesting level (relative to otherfo:change-bar-begin/fo:change-bar-end pairs with the samechange-bar-class property value) of this fo:change-bar-begin.

The change region is decorated with a change bar down eitherthe start or end edge of the column.That is, a change bar is generated along side of the areas generated within theregion-body's non-conditional reference area by the formatting objects "under the changebar influence".All formatting objects after (in document order) thisfo:change-bar-begin and up to the matching fo:change-bar-end (or end ofdocument) are considered under the change bar influence of thisfo:change-bar-begin.

The position, thickness, style, and color of the generated change baris determined by the respective properties (see each property definition).

Areas:

The fo:change-bar-begin formatting object does not in itself generateany areas, but it causes areas to be generated by the ancestorfo:page-sequence object, near the start or end edge of anormal-flow-reference-area or region-reference-area.

Constraints:

An fo:change-bar-begin/fo:change-bar-end pair is considereda matching pair if (1) the value of theirchange-bar-class propertiesare identical and (2) between (in document order) thefo:change-bar-begin and fo:change-bar-end formatting objects, the onlyoccurrences of fo:change-bar-begin andfo:change-bar-end formatting objects of that class(if any) are matching pairs.

Following this fo:change-bar-begin in document order, there mustbe an fo:change-bar-end with which it forms a matching pair. If thereis no such fo:change-bar-end, it is an error, and the implementationshould recover by assuming the equivalent of a matching fo:change-bar-endat the end of the document.

The generated change bar areas run continuously down the start or end edgeof the column within the region body.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.30.1 change-bar-class
7.30.2 change-bar-color
7.30.3 change-bar-offset
7.30.4 change-bar-placement
7.30.5 change-bar-style
7.30.6 change-bar-width
7.30.18 z-index

6.13.3 fo:change-bar-end

Common Usage:

The fo:change-bar-end is used to indicate the end of a"change region" that is started by its matching fo:change-bar-begin.See6.13.2 fo:change-bar-begin for details.

Areas:

The fo:change-bar-end formatting object does not in itself generateany areas, but it causes areas to be generated by the ancestorfo:page-sequence object, near the start or end edge of anormal-flow-reference-area or region-reference-area.

Constraints:

Preceding this fo:change-bar-end in document order, there mustbe an fo:change-bar-begin with which it forms a matching pair. If thereis no such fo:change-bar-begin, it is an error, and the implementationshould recover by ignoring this fo:change-bar-end.

Contents:

EMPTY

The following properties apply to this formatting object:

7.5 Common Accessibility Properties
7.7 Common Aural Properties
7.30.1 change-bar-class

6.13.4 fo:wrapper

Common Usage:

The fo:wrapper formatting object is used tospecifyinherited properties for a group of formatting objects.

Areas:

The fo:wrapper formatting object returns the sequence of areas createdby concatenating the sequences of areas returned by each of the childrenof the fo:wrapper. If this sequence contains at least one normal area,or if the "id" and "index-key" properties are notspecified on the fo:wrapper, then the fo:wrapper does not itselfgenerate any areas.

If the sequence of areas returned to the fo:wrapper contains no normalareas, and the "id" or "index-key" property is specified onthe fo:wrapper, then it additionally generates and returns one normalarea with inline-progression-dimension and block-progression-dimensionset to zero. This area is an inline-area except where this would violatethe constraint (on some ancestor area) that an area's children are allblock-areas or all inline-areas, but not a mixture. In that case thefo:wrapper must instead generate a block-area.

Trait Derivation:

Except for "id", "index-class", and "index-key",the fo:wrapper has no properties that are directly usedby it. However, it does serve as a carrier to hold inheritable propertiesthat are utilized by its children.

Constraints:

The order of concatenation of the sequences of areas returned bythe children of the fo:wrapperis the same order as the children are ordered under the fo:wrapper.

Contents:

(#PCDATA|%inline;|%block;)*

An fo:wrapper is only permitted to havechildren that would be permitted to be children ofthe parent of the fo:wrapper, with two exceptions:

  • An fo:wrapper may always have a sequence of zero or morefo:markers as its initial children.

  • An fo:wrapper that is a child of an fo:multi-properties isonly permitted to have children that would be permittedin place of the fo:multi-properties.

This restriction applies recursively.

Note:

For example an fo:wrapper that is a child of anotherfo:wrapper may only have children that would be permitted to be children of the parentfo:wrapper.

The following properties apply to this formatting object:

7.30.8 id
7.24.1 index-class
7.24.2 index-key

6.13.5 fo:marker

Common Usage:

The fo:marker is used in conjunction with fo:retrieve-markeror fo:retrieve-table-marker to produce running headers or footersand dynamic table headers or footers. Typical examples include:

  • dictionary headers showing the first and last word defined on the page.

  • headers showing the page's chapter and section titles.

  • subtotals e.g. that give a subtotal of numbers in rows up tothe last row on the current page.

  • table-continued captions that show whether or not a table iscontinued after the current page, or was a continuation from a previouspage.

The fo:marker has to be an initial childof its parent formatting object.

Areas:

The fo:marker does not directly produce any area. Its children may beretrieved and formatted from within an fo:static-content or tableheader/footer, using an fo:retrieve-marker or anfo:retrieve-table-marker respectively, whose "retrieve-class-name" property value is thesame as the "marker-class-name" property value of this fo:marker.

Constraints:

An fo:marker is only permitted as the descendant of an fo:flow.

Note: Property values set on an fo:markeror its ancestors will not be inherited by the children of thefo:marker when they are retrieved by an fo:retrieve-markeror fo:retrieve-table-marker.

It is an error if two or more fo:markers that share the same parenthave the same "marker-class-name" property value.

Contents:

(#PCDATA|%inline;|%block;)*

An fo:marker may contain any formatting objects that arepermitted as a replacement of any fo:retrieve-marker or fo:retrieve-table-markerthat retrievesthe fo:marker's children.No fo:marker may have as a descendant any fo:marker, fo:retrieve-marker,or fo:retrieve-table-marker.

The following properties apply to this formatting object:

7.25.1 marker-class-name

6.13.6 fo:retrieve-marker

Common Usage:

The fo:retrieve-marker is used inconjunction with fo:marker to produce running headers or footers.Typical examples include:

  • dictionary headers showing the first and last word defined on the page.

  • headers showing the page's chapter and section titles.

Areas:

The fo:retrieve-marker does not directly generate any area. It is(conceptually) replaced by the children of the fo:marker that it retrieves.

Trait Derivation:

The properties and traits specified on the ancestors of thefo:retrieve-marker are taken into account when formatting thechildren of the retrieved fo:marker as if the children had thesame ancestors as the fo:retrieve-marker.

Constraints:

An fo:retrieve-marker is only permitted as the descendant of anfo:static-content.

The fo:retrieve-marker specifies that the children of a selected fo:markershall be formatted as though they replaced the fo:retrieve-marker in theformatting tree.

The properties of the fo:retrieve-marker impose a hierarchy of preferenceon the areas of the area tree. Each fo:marker is conceptually attached toeach normal area returned by the fo:marker's parent formatting object.Additionally, an fo:marker is conceptually attached to each non-normalarea 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 ormore fo:marker's conceptually attached. The fo:marker whose children areretrieved is the one that is (conceptually) attached to the area that isat the top of this hierarchy.

Every area in the hierarchy is considered preferential to, or "better" than,any area below it in the hierarchy. When comparing two areas to determine whichone is better, the terms "first" and "last" refer to the pre-order traversalorder of the area tree.

The term "containing page" is used here to mean the page that containsthe first area generated or returned by the children of the retrievedfo:marker.

An area that has an attached fo:marker whose "marker-class-name"property value is the same as the "retrieve-class-name" property valueof the fo:retrieve-marker is defined to be a qualifying area. Onlyqualifying areas have positions in the hierarchy.

A qualifying area within a page is better than any qualifying areawithin a preceding page, except that areas do not have a position in thehierarchy if they are within pages that follow the containing page. If the"retrieve-boundary" property has a value of "page-sequence", then an areadoes not have a position in the hierarchy if it is on a page froma page-sequence preceding the page-sequence of the containing page.If the "retrieve-boundary" property has a value of "page", then an areadoes not have a position in the hierarchy if it is not on the containing page.

If the value of the "retrieve-position" property is"first-starting-within-page", then the first qualifying area in thecontaining page whose "is-first" trait has a value of "true" is betterthan any other area. If there is no such area, then the first qualifyingarea in the containing page is better than any other area.

If the value of the "retrieve-position" property is "first-including-carryover",then the first qualifying area in the containing page is better than any otherarea.

If the value of the "retrieve-position" property is"last-starting-within-page", then the last qualifying area in thecontaining page whose "is-first" trait has a value of "true" is betterthan any other area. If there is no such area, then the last qualifyingarea in the containing page is better than any other area.

If the value of the "retrieve-position" property is"last-ending-within-page", then the last qualifying area in thecontaining page whose "is-last" trait has a value of "true" is betterthan any other area. If there is no such area, then the last qualifyingarea in the containing page is better than any other area.

If the hierarchy of areas is empty, no formatting objects are retrieved.

Contents:

EMPTY

The following properties apply to this formatting object:

7.25.3 retrieve-class-name
7.25.4 retrieve-position
7.25.5 retrieve-boundary

6.13.7 fo:retrieve-table-marker

Common Usage:

The fo:retrieve-table-marker is used in conjunction with fo:marker toproduce table-headers and table-footers whose content can change overdifferent pages, different regions or different columns.

Typical examples include:

  • dictionary headers showing the first and last word defined in the part of the table on the current page.

  • subtotals e.g. that give a subtotal of numbers in rows up to the last row on the current page.For pages with multiple columns and/or multiple regions,the subtotal is to be displayed at the bottom of every table "fragment"in every region or column.

  • table-continued captions that show if a table is continued after the current page, or was a continuation from a previous page.

Areas:

The fo:retrieve-table-marker does not directly generate any area. It is (conceptually) replaced by the children of the fo:marker that it retrieves.

Trait Derivation:

The properties and traits specified on the ancestors of the fo:retrieve-table-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-table-marker.

Constraints:

An fo:retrieve-table-marker is only permitted as the descendant of anfo:table-header or fo:table-footer or as a child of fo:table in a positionwhere fo:table-header or fo:table-footer is permitted.

The fo:retrieve-table-marker specifies that the children of aselected fo:marker shall be formatted as though they replaced thefo:retrieve-table-marker in the formatting tree.

The fo:table that is a parent of both the fo:table-body(that has the fo:markers as its descendants) and the fo:table-header orfo:table-footer that has the fo:retrieve-table-marker as its descendantgenerates one or more normal block-areas.These are are said to be theretrieve scope area set.The retrieve scope area set is limited by the constraintsspecified by retrieve-boundary-within-table property.An area in the retrieve scope area set is called aretrieve scope area.There is exactly one retrieve scope area that contains the areasgenerated or returned by the children on the retrieved fo:marker,and that is called theprimary retrieve scope area.

The properties of the fo:retrieve-table-marker impose a hierarchyof preference on the descendants of the retrieve scope areas.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 whosechildren are retrieved is the one that is conceptually attached to the area that is at the top of this hierarchy.

Every area in the hierarchy is considered preferential to, or "better" than, any area below it in the hierarchy. When comparing two areas to determine which one is better, the terms "first" and "last" refer to the pre-order traversal order of the area tree.

An area that has an attached fo:marker whose "marker-class-name"property value is the same as the "retrieve-class-name" property valueof the fo:retrieve-table-marker, is defined to be a qualifying areaif it is a descendant of a retrieve scope area.Only qualifying areas have positions in the hierarchy.

If the value of the "retrieve-position-within-table" property is"first-starting", then the first qualifying areain the primary retrieve scope area whose "is-first" trait hasa value of "true" is better than any other area.If there is no such area, then the first qualifying areain the primary retrieve scope area is better than any other area.If there is no such area, then the last qualifying area that isa descendant of a retrieve scope area is better than any other area.

If the value of the "retrieve-position-within-table" property is"first-including-carryover", then the first qualifying areain the primary retrieve scope area is better than any other area.If there is no such area, then the last qualifying area that isa descendant of a retrieve scope area is better than any other area.

If the value of the "retrieve-position-within-table" property is"last-starting ", then the last qualifying area that isa descendant of a retrieve scope area whose "is-first" trait hasa value of "true" is better than any other area.If there is no such area, then the last qualifying areathat is a descendant of a retrieve scope area is better thanany other area.

If the value of the "retrieve-position-within-table" property is"last-ending ", then the last qualifying area that is a descendant ofa retrieve scope area 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 areathat is a descendant of a retrieve scope area is better thanany other area.

If the hierarchy of areas is empty, no formatting objects are retrieved.

Contents:

EMPTY

The following properties apply to this formatting object:

7.25.3 retrieve-class-name
7.25.6 retrieve-position-within-table
7.25.2 retrieve-boundary-within-table

7 Formatting Properties

7.1 Description of Property Groups

The following sections describe the properties of the XSLformatting objects.

A number of properties are copied from the CSS2 specification.In addition, the CSS2 errata all apply. See[CSS2].

Properties copied from CSS2 are placedin a box with wide black borders,and properties derived from CSS2 properties areplaced in a box with thin black borders.

  • The first nine sets of property definitions have beenarranged into groups based on similar functionalityand the fact that they apply to many formatting objects.In the formatting object descriptions the group name isreferred to rather than referring to the individual properties.

    • Common Accessibility Properties

      This set of properties are used to support accessibility.

    • Common Absolute Position Properties

      This set of properties controls the position and size of formattedareas with absolute positioning.

    • Common Aural Properties

      This group of properties controls the aural rendition of thecontent of a formatting object. They appear on all formatting objectsthat contain content and other formatting objects that group otherformatting objects and where that grouping is necessary forthe understanding of the aural rendition. An example of the latteris fo:table-and-caption.

    • Common Border, Padding, and Background Properties

      This set of properties controls the backgrounds and borders onthe block-areas and inline-areas.

    • Common Font Properties

      This set of properties controls the font selection on all formattingobjects that can contain text.

    • Common Hyphenation Properties

      Control of hyphenation for line-breaking, includinglanguage, script, and country.

    • Common Margin Properties-Block

      These properties set the spacing and indents surrounding block-levelformatting objects.

    • Common Margin Properties-Inline

      These properties set the spacing surrounding inline-levelformatting objects.

    • Common Relative Position Properties

      This set of properties controls the position of formattedareas with relative positioning.

  • The remaining properties are used on a number offormatting objects. These are arranged into clusters of similarfunctionality toorganize the property descriptions. In the formatting object descriptionthe individual properties are referenced.

    • Area Alignment Properties

      Properties that control the alignment of inline-areaswith respect to each other, particularly in relation tothe 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.

    • Area Dimension Properties

      Properties that control the dimensions of bothblock-areas and inline-areas.

    • Block and Line-related Properties

      Properties that govern the construction of line-areas andthe placement of these line-areas within containingblock-areas.

    • Character Properties

      Properties that govern the presentation of text,including word spacing, letter spacing, andword space treatment and suppression.

    • Color-related Properties

      Properties that govern color and color-modelselection.

    • Float-related properties

      Properties governing the placement of bothside-floats (start- and end-floats) and before-floats("top" floats in "lr-tb" writing-mode).

    • Keeps and Breaks Properties

      Properties that control keeps and breaks across pages,columns, and lines, including widow and orphan control andkeeping content together.

    • Layout-related Properties

      These properties control what is "top"("reference-orientation") as well as clipping, overflow, andcolumn-spanning conditions.

    • Leader and Rule Properties

      Properties governing the construction of leaders andhorizontal rules.

    • Properties for Dynamic Effects

      Properties governing the presentation and actions associatedwith links and other dynamic effects.

    • Properties for Indexing

      Properties governing the creation and presentation of a"back of the book" index.

    • Properties for Markers

      Properties governing the creation and retrieval ofmarkers. Markers are used typically for "dictionary"headers and footers.

    • Properties for Number to String Conversions

      Properties used in the construction of page-numbers andother formatter-based numbering.

    • Pagination and Layout Properties

      These properties govern the sequencing, layout, and instantiationof pages, including: the page size and orientation, sizes of regionson the page-master, the identification and selection of page-masters,division of the body region into columns, and the assignment ofcontent flows to layout regions.

    • Table Properties

      Properties governing the layout and presentationof tables.

    • Writing-mode-related Properties

      Properties related to various aspects of"directionality" and writing-mode influencingblock-progression-direction andinline-progression-direction.

    • Miscellaneous Properties

      These properties did not reasonably fit into any of the othercategories.

  • Shorthand Properties

    Shorthand properties that are part of the completeconformance set. Shorthands expand to the individualproperties that may be used in place of shorthands.

7.2 XSL Areas and the CSS Box Model

This section describes how to interpret property descriptions whichincorporate the CSS2 definition of the same property. In CSS2, "boxes"are generated by "elements" in the same way that XSL areas are generatedby 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 definitionit should be taken to refer to a"formatting object".

The CSS term,positioned elementwill in XSL be taken as referring to an XSL FO that has one of thefollowing: an "absolute-position" property with a computed value otherthan "auto" and/or a "relative-position" property with a computed valueother than "static".

Note:

Since in XSL, the "position" property is a shorthand for the"absolute-position" and "relative-position"properties, this is equivalent to the CSS definition.

The position and size of a box are normally taken to refer to theposition and size of the area's content-rectangle. Additionalcorrespondences between the CSS2 Box Model and the XSL Area Model arecontained in the following table.

BoxArea
top content edgetop edge of the content-rectangle
padding edgepadding-rectangle
content areainterior of the content-rectangle
padding arearegion between the content-rectangle and the padding-rectangle
border arearegion between the padding-rectangle and the border-rectangle
backgroundbackground
containing blockclosest ancestor block-areathat is not a line-area(see below for additional information when the "containing block"is used as a reference for percentage calculations)
captionarea generated by fo:table-caption
inline boxinline-area
line boxline-area
block boxblock-area which is not a line-area
page boxpage-area

Box margins map to area traits in accordance with the description of howarea traits are computed from property valuesin5 Property Refinement / Resolution.

7.3 Reference Rectangle for Percentage Computations

Allowed conversions for percentages,specified on the property definition, is typically in terms ofthe content-rectangle of some area.That area is determined as follows:

  1. For properties defined in CSS2 referring to the"containing block" the content-rectangle of the closest ancestorblock-area that is not a line-area is used.

  2. For properties defined by XSL, the property definitionspecifies which area's content-rectangle is used.

  3. Exceptions to the rules abovefor determining which area is used are:

    1. When used on fo:root, fo:page-sequence, and fo:title andany descendant of fo:title where there is no ancestor block-areathe rectangle used has the dimensions corresponding to the"auto" value of the "page-height" and "page-width" properties.The block-progression-dimension and inline-progression-dimension is thendetermined based on the computed value of the reference-orientationand writing-mode on the formatting object for which the percentageis computed, or on fo:title in the case of a descentdant of fo:title.

    2. When used on fo:static-content and fo:flowthe content rectangle used is based on the region on the first pageinto which the content is directed. For region-body it isthe normal-flow-reference-area andfor the other regions it is the region-reference-area.

    3. When used on fo:footnote-body, and fo:float that generates anarea with area-class "xsl-before-float"the rectangle used is the content rectangle ofthe footnote-reference-area and thebefore-float-reference-area respectively.

    4. When used on fo:float that generates anarea with area-class "xsl-side-float"the content rectangle used is the closest ancestor block-area that is nota line-area of the area of area-type "xsl-anchor" that was generatedby the fo:float.

    5. When the absolute-position is "fixed", the containing block isdefined by the nearest ancestor viewport area.If there is no ancestor viewport area,the containing block is defined by the user agent.

    6. When the absolute-position is "absolute",the containing block is established by the nearestancestor areaA which has an area-class different fromxsl-normal or a relative-position of "relative".

      In the case whereA is a block-area, the rectangle usedis the padding-rectangle ofA.

      In the case whereA is an inline-area, generated by someformatting objectF, the rectangle used is a virtual rectanglewhose before-edge and start-edge are the before-edge and start-edge of thefirst area generated byF, and whose after-edge and end-edge arethe after-edge and end-edge of the last area generated byF.This "rectangle" may have negative extent.

  4. If the formatting object generating the identified areagenerates a sequence of such areas the first area is usedfor the conversion.

7.4 Additional CSS Datatypes

The following "datatypes" are used in the definitions ofsome CSS2 properties. These are not considered datatypes in XSL,as they are merely notational shorthand and expand as follows:

DatatypeExpansion
<padding-width><length> | <percentage>
<border-width>thin | medium | thick | <length>
<border-style>none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset
<generic-voice>'male' | 'female' | 'child'
<specific-voice>values are specific instances (e.g., comedian, trinoids, carlos, lani)
<margin-width><length> | <percentage> | auto
<background-color>shorthand component of background-color
<background-image>shorthand component of background-image
<background-repeat>shorthand component of background-repeat
<background-attachment>shorthand component of background-attachment
<background-position>shorthand component of background-position
<cue-before>shorthand component of cue-before
<cue-after>shorthand component of cue-after
<line-height>shorthand component of line-height
<language-country><string>: a language and optionally a country specifier in conformance with[RFC3066]

7.5 Common Accessibility Properties

7.5.1 "source-document"

XSL Definition:

Value:<uri-specification> [<uri-specification>]* | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

none

The source document is transient, unknown, or unspecified.

<uri-specification>

A URI-specification giving a reference to the (sub)resourceused as input to the stylesheet.

This property provides a pointer backto the original XML document(s) usedto create this formatting object tree, in accordance with the Dublin Coredefinition of "Source" ("A Reference to a resource from which the presentresource is derived."See:http://purl.org/DC/documents/rec-dces-19990702.htm.)The value is not validated by andhas no inherent standardized semantics for any XSL processor.

W3C Accessibility guidelines,http://www.w3.org/TR/WCAG20/,http://www.w3.org/TR/ATAG10/, andhttp://www.w3.org/TR/UAAG10/,strongly encourage the use of this propertyeither on the fo:root or on the first formatting object generated from agiven source document.

The URI-specification is useful for alternate renderers (aural readers, etc.)whenever the structure of the formatting object tree is inappropriate forthat renderer.

7.5.2 "role"

XSL Definition:

Value:<string> | <uri-specification> | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

none

Indicates that no semantic tag is cited by thisformatting object.

<string>

The value is a string representing a semantic identifier thatmay be used in rendering this formatting object.

<uri-specification>

A URI-specification, indicating anRDF resource[RDF]; that is, an XML object thatis syntactically valid with respect to the RDF grammar.

This property provides a hint for alternate renderers(aural readers, etc.) as to the role of the XML element or elementsthat were used to construct this formatting object, if one could beidentified during XSLT tree construction.This information can be used to prepare alternate renderings whenthe normal rendering of a formatting object is not appropriateor satisfactory; for example, the role information can be used toprovide better aural renderings of visually formatted material.

To aid alternate renderers, the <string> value should bethe qualified name (QName[XML Names] or[XML Names 1.1]) of the element from whichthis formatting object is constructed. If a QName does not providesufficient context, the <uri-specification> can be used to identifyan RDF resource that describes the role in more detail.This RDF resource may be embedded in the result tree and referencedwith a relative URI or fragment identifier,or the RDF resource may be external to the result tree.This specification does not define any standard QNameor RDF vocabularies; these are frequentlyapplication area dependent. Other groups, for example the Dublin Core,have defined such vocabularies.

This property is not inherited, but all subsidiary nodes ofthis formatting object that do not bear a role property should utilizethe same alternate presentation properties. (It is notinherited because knowledge of the start and end of the formatting object subtreegenerated by the element may be needed by the renderer.)

7.6 Common Absolute Position Properties

7.6.1 "absolute-position"

A Property Derived from a CSS2 Property.

Value:auto | absolute | fixed | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

There is no absolute-positioning constraint. Positioning isin accordance with the relative-position property.

absolute

The area's position (and possibly size) is specified withthe "left", "right", "top", and "bottom" properties. These propertiesspecify offsets with respect to the area'snearest ancestor reference area.Absolutelypositioned areas are taken out of the normal flow. This means theyhave no impact on the layout of later siblings. Also, though absolutelypositioned areas have margins, they do not collapse with any other margins.

fixed

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 tothe viewport (and doesn't move when scrolled). In the case of pagedmedia, the area is fixed with respect to the page, even if that page isseen through a viewport (in the case of a print-preview, for example).Authors may wish to specify "fixed" in a media-dependent way. Forinstance, an author may want an area to remain at the top of the viewporton the screen, but not at the top of each printed page.

The following additional restrictions apply for pagedpresentations:

  • Only objects with absolute-position="auto"may have page/column breaks.

    For other values anykeep and break properties are ignored.

  • The area generated is a descendant of the page-area where thefirst area from the object would have been placed had the object hadabsolute-position="auto" specified.

If the value is "absolute" or "fixed", any normal areas generatedby the formatting object have their area-class changed toxsl-absolute orxsl-fixed, respectively.

7.6.2 "top"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:refer to height of containing block
Media:visual

CSS2 Reference:"top" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-top

This property specifies how far a box's top margin edge is offsetbelow the top edge of the box's containing block.

XSL modifications to the CSS definition:

See definition of property left (7.6.5 left).

7.6.3 "right"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"right" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-right

This property specifies how far a box's right margin edge is offsetto the left of the right edge of the box's containing block.

XSL modifications to the CSS definition:

See definition of property left (7.6.5 left).

7.6.4 "bottom"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:refer to height of containing block
Media:visual

CSS2 Reference:"bottom" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-bottom

This property specifies how far a box's bottom margin edge is offsetabove the bottom edge of the box's containing block.

XSL modifications to the CSS definition:

See definition of property left (7.6.5 left).

7.6.5 "left"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"left" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-left

This property specifies how far a box's left margin edge is offsetto the right of the left edge of the box's containing block.

The values of the four (position offset) properties have thefollowing meanings:

auto

The effect of this value depends on which of related propertieshave the value "auto" as well. See the sections on the width andheight of absolutely positioned, non-replaced elements for details.

<length>

The offset is a fixed distance from the reference edge.

<percentage>

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 notspecified explicitly (i.e., it depends on content height), the percentagevalue is interpreted like "auto".

For absolutely positioned boxes, the offsets are with respectto 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 offsetfrom that position according to these properties).

XSL modifications to the CSS definition:

These properties set the position of the content-rectangleof the associated area.

The left, right, top, and bottom are interpreted in the prevailingcoordinate system (established by the nearest ancestor reference area)and not relative to the "containing block" as in CSS.

If both "left" and "right" have a valueother than "auto", thenif the "width" is "auto" the width of the content-rectangle isoverridden;else the geometry is overconstrained and is resolved in accordance with5.3.4 Overconstrained Geometry.Similarly, if both "top" and "bottom" have a valueother than "auto", thenif the "height" is "auto" the height of the content-rectangle isoverridden;else the geometry is overconstrained and is resolved in accordance with5.3.4 Overconstrained Geometry.

7.7 Common Aural Properties

7.7.1 "azimuth"

CSS2 Definition:

Value:<angle> | [[ left-side | far-left | left| center-left | center | center-right | right | far-right | right-side] || behind ] | leftwards | rightwards | inherit
Initial:center
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"azimuth" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-azimuth

7.7.2 "cue-after"

CSS2 Definition:

Value:<uri-specification> | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:aural

CSS2 Reference:"cue-after" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-after

XSL modifications to the CSS definition:

The <uri> value has been changed to a <uri-specification>.

7.7.3 "cue-before"

CSS2 Definition:

Value:<uri-specification> | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:aural

CSS2 Reference:"cue-before" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue-before

XSL modifications to the CSS definition:

The <uri> value has been changed to a <uri-specification>.

7.7.4 "elevation"

CSS2 Definition:

Value:<angle> | below | level | above | higher| lower | inherit
Initial:level
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"elevation" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-elevation

7.7.5 "pause-after"

CSS2 Definition:

Value:<time> | <percentage> | inherit
Initial:depends on user agent
Inherited:no
Percentages:see prose
Media:aural

CSS2 Reference:"pause-after" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-after

7.7.6 "pause-before"

CSS2 Definition:

Value:<time> | <percentage> | inherit
Initial:depends on user agent
Inherited:no
Percentages:see prose
Media:aural

CSS2 Reference:"pause-before" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause-before

7.7.7 "pitch"

CSS2 Definition:

Value:<frequency> | x-low | low | medium | high| x-high | inherit
Initial:medium
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"pitch" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch

7.7.8 "pitch-range"

CSS2 Definition:

Value:<number> | inherit
Initial:50
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"pitch-range" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pitch-range

7.7.9 "play-during"

CSS2 Definition:

Value:<uri-specification> mix? repeat? | auto | none | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:aural

CSS2 Reference:"play-during" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-play-during

XSL modifications to the CSS definition:

The <uri> value has been changed to a <uri-specification>.

7.7.10 "richness"

CSS2 Definition:

Value:<number> | inherit
Initial:50
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"richness" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-richness

7.7.11 "speak"

CSS2 Definition:

Value:normal | none | spell-out | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"speak" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak

7.7.12 "speak-header"

CSS2 Definition:

Value:once | always | inherit
Initial:once
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"speak-header" property
http://www.w3.org/TR/REC-CSS2/tables.html#propdef-speak-header

7.7.13 "speak-numeral"

CSS2 Definition:

Value:digits | continuous | inherit
Initial:continuous
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"speak-numeral" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-numeral

7.7.14 "speak-punctuation"

CSS2 Definition:

Value:code | none | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"speak-punctuation" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speak-punctuation

7.7.15 "speech-rate"

CSS2 Definition:

Value:<number> | x-slow | slow | medium | fast| x-fast | faster | slower | inherit
Initial:medium
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"speech-rate" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-speech-rate

7.7.16 "stress"

CSS2 Definition:

Value:<number> | inherit
Initial:50
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"stress" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-stress

7.7.17 "voice-family"

CSS2 Definition:

Value:[[<specific-voice> | <generic-voice>],]* [<specific-voice> | <generic-voice> ] | inherit
Initial:depends on user agent
Inherited:yes
Percentages:N/A
Media:aural

CSS2 Reference:"voice-family" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-voice-family

7.7.18 "volume"

CSS2 Definition:

Value:<number> | <percentage> | silent | x-soft| soft | medium | loud | x-loud | inherit
Initial:medium
Inherited:yes
Percentages:refer to inherited value
Media:aural

CSS2 Reference:"volume" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-volume

7.8 Common Border, Padding, and Background Properties

The following common-border-padding-and-background-propertiesare taken from CSS2. Those "border", "padding", and "background"properties that have a before, after, start, or end suffix are writing-moderelative and are XSL-only properties.

7.8.1 "background-attachment"

CSS2 Definition:

Value:scroll | fixed | inherit
Initial:scroll
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"background-attachment" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-attachment

scroll

The background-image may scroll with the enclosing object.

fixed

The background-image is to be fixed within the viewablearea of the enclosing object.

If a background-image is specified, this property specifieswhether it is fixed with regard to the viewport (fixed) or scrollsalong with the document (scroll).

Even if the image is fixed, it is still only visible when itis in the background or padding area of the element. Thus, unlessthe image is tiled ("background-repeat: repeat"), it may be invisible.

User agents may treat fixed as scroll. However, it is recommendedthey interpret fixed correctly, at least for the HTML and BODY elements,since there is no way for an author to provide an image only forthose browsers that support fixed. See the section on conformancefor details.

XSL modifications to the CSS definition:

The last paragraph in the CSS description does not apply.

7.8.2 "background-color"

CSS2 Definition:

Value:<color> | transparent | inherit
Initial:transparent
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"background-color" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-color

This property sets the background color of an element, eithera <color> value or the keyword transparent, to make the underlyingcolors shine through.

transparent

The underlying colors will shine through.

<color>

Any valid color specification.

XSL modifications to the CSS definition:

XSL adds an "rgb-icc" function (see5.10.2 Color Functions)as a valid value of this property.

7.8.3 "background-image"

CSS2 Definition:

Value:<uri-specification> | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"background-image" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-image

This property sets the background image of an element. When settinga "background-image", authors should also specify a background-colorthat will be used when the image is unavailable. When the imageis available, it is rendered on top of the background color. (Thus,the color is visible in the transparent parts of the image).

Values for this property are either <uri-specification>, to specify theimage, or "none", when no image is used.

none

No image is specified.

<uri-specification>

XSL modifications to the CSS definition:

The <uri> value has been changed to a <uri-specification>.

7.8.4 "background-repeat"

CSS2 Definition:

Value:repeat | repeat-x | repeat-y | no-repeat | inherit
Initial:repeat
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"background-repeat" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-repeat

If a background image is specified, this property specifies whetherthe image is repeated (tiled), and how. All tiling covers the contentand padding areas of a box. Values have the following meanings:

repeat

The image is repeated both horizontally and vertically.

repeat-x

The image is repeated horizontally only.

repeat-y

The image is repeated vertically only.

no-repeat

The image is not repeated: only one copy of the image isdrawn.

XSL modifications to the CSS definition:

"Horizontal" and "vertical" are defined relative to thereference-orientation; "horizontal" is "left" to "right", and "vertical" is"top" to "bottom".

Note:

Thus for a rotated area the tiling is also rotated.It is, however, independent of the writing-mode.

7.8.5 "background-position-horizontal"

A Property Derived from a CSS2 Property.

Value:<percentage> | <length> |left | center | right | inherit
Initial:0%
Inherited:no
Percentages:refer to the size of the padding-rectangle
Media:visual

If a "background-image" has been specified, this property specifiesits initial position horizontally.

<percentage>

Specifies that a point, at the given percentage across the imagefrom left-to-right, shall be placed at a point at the given percentageacross, from left-to-right, the area's padding-rectangle.

Note:

For examplewith a value of 0%, the left-edge of theimage is aligned with the left-edge of the area's padding-rectangle.A value of 100% places the right-edge ofthe image aligned with the right-edge of the padding-rectangle.With a valueof 14%, a point 14% across the image isto be placed at a point 14% across the padding-rectangle.

<length>

Specifies that the left-edge of the image shall be placedat the specified length to the right of the left-edge of thepadding-rectangle.

Note:

For examplewith a value of 2cm, the left-edge of theimage is placed 2cm to the right of the left-edge of thepadding-rectangle.

left

Same as 0%.

center

Same as 50%.

right

Same as 100%.

XSL modifications to the CSS definition:

"Left" and "right" are defined relative to thereference-orientation.

7.8.6 "background-position-vertical"

A Property Derived from a CSS2 Property.

Value:<percentage> | <length> |top | center | bottom | inherit
Initial:0%
Inherited:no
Percentages:refer to the size of the padding-rectangle
Media:visual

If a "background-image" has been specified, this property specifiesits initial position vertically.

<percentage>

Specifies that a point, at the given percentage down the imagefrom top-to-bottom, shall be placed at a point at the given percentagedown, from top-to-bottom, the area's padding-rectangle.

Note:

For examplewith a value of 0%, the top-edge of theimage is aligned with the top-edge of the area's padding-rectangle.A value of 100% places the bottom-edge ofthe image aligned with the bottom-edge of the padding-rectangle.With a valueof 84%, a point 84% down the image isto be placed at a point 84% down the padding-rectangle.

<length>

Specifies that the top-edge of the image shall be placedat the specified length below the top-edge of thepadding-rectangle.

Note:

For examplewith a value of 2cm, the top-edge of theimage is placed 2cm below the top-edge of the padding-rectangle.

top

Same as 0%.

center

Same as 50%.

bottom

Same as 100%.

XSL modifications to the CSS definition:

"Top" and "bottom" are defined relative to thereference-orientation.

7.8.7 "border-before-color"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

Specifies the color of the borderon the before-edge of a block-area or inline-area.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.8 "border-before-style"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-style for the before-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.9 "border-before-width"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-width> | <length-conditional> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-width for the before-edge.

See definition of property border-top-width (7.8.21 border-top-width).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the border for the before-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the border should be 0pt or retained if its associatededge is a leading-edge in a reference-area for areas generated fromthis formatting object that have anis-first valueof "false". See4.3 Spaces and Conditionality for further details.The initial value of the .conditionality component is "discard".

If border-before-width is specified using <length>,the formatter shall convert the single value to componentsas follows:

  • border-before-width.length:the resultant computed value of the <length>.

  • border-before-width.conditional: discard.

If border-before-width is specified using one of the widthkeywords the .conditional component is set to "discard" andthe .length component to a User Agent dependent length.

Note:

If the border-style is "none" the computed value of the widthis forced to "0pt".

7.8.10 "border-after-color"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

Specifies the color of the borderon the after-edge of a block-area or inline-area.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.11 "border-after-style"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-style for the after-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.12 "border-after-width"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-width> | <length-conditional> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-width for the after-edge.

See definition of property border-top-width (7.8.21 border-top-width).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the border for the after-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the border should be 0 or retained if its associatededge is a trailing-edge in a reference-area for areas generated fromthis formatting object that have anis-last valueof "false". See4.3 Spaces and Conditionality for further details.The initial value of the .conditionality component is "discard".

Note:

If the border-style is "none" the computed value of the widthis forced to "0pt".

7.8.13 "border-start-color"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

Specifies the color of the borderon the start-edge of a block-area or inline-area.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.14 "border-start-style"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-style for the start-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.15 "border-start-width"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-width> | <length-conditional> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-width for the start-edge.

Note:

If the border-style is "none" the computed value of the widthis forced to "0pt".

See definition of property border-top-width (7.8.21 border-top-width).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the border for the start-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the border should be 0 or retained if its associatededge is a leading-edge in a line-area for areas generated fromthis formatting object that have anis-first valueof "false". See4.3.1 Space-resolution Rules for further details.The initial value of the .conditionality component is "discard".

7.8.16 "border-end-color"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

Specifies the color of the borderon the end-edge of a block-area or inline-area.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.17 "border-end-style"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-style for the end-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.18 "border-end-width"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<border-width> | <length-conditional> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

Specifies the border-width for the end-edge.

Note:

If the border-style is "none" the computed value of the widthis forced to "0pt".

See definition of property border-top-width (7.8.21 border-top-width).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the border for the end-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the border should be 0 or retained if its associatededge is a trailing-edge in a line-area for areas generated fromthis formatting object that have anis-last valueof "false". See4.3.1 Space-resolution Rules for further details.The initial value of the .conditionality component is "discard".

7.8.19 "border-top-color"

CSS2 Definition:

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-top-color" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-color

The 'border-color' property sets the color of the four borders.Values have the following meanings:

transparent

The border is transparent (though it may have width).

<color>

Any valid color specification.

If an element's border color is notspecified with a "border" property, user agents must use the valueof the element's "color" property as the computed value for theborder color.

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.20 "border-top-style"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x9

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-top-style" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-style

The border style properties specify the line style of a box'sborder (solid, double, dashed, etc.).

The properties defined in this section refer to the <border-style>value type, which may take one of the following:

none

No border. This value forces the computed value of 'border-width'to be '0'.

hidden

Same as 'none', except in terms of border conflict resolutionfor table elements.

dotted

The border is a series of dots.

dashed

The border is a series of short line segments.

solid

The border is a single line segment.

double

The border is two solid lines. The sum of the two linesand the space between them equals the value of 'border-width'.

groove

The border looks as though it were carved into the canvas.

ridge

The opposite of 'groove': the border looks asthough it were coming out of the canvas.

inset

The border makes the entire box look as though it wereembedded in the canvas.

outset

The opposite of 'inset': the border makes the entire boxlook as though it were coming out of the canvas.

All borders are drawn on top of the box's background.The color of borders drawn for values of 'groove','ridge', 'inset', and 'outset' should be based on the element's'border-color' property, but UAs may choose their own algorithm tocalculate the actual colors used. For instance, if the 'border-color'has the value 'silver', then a UA could use a gradient of colors fromwhite to dark gray to indicate a sloping border.

Conforming HTML user agents may interpret 'dotted', 'dashed','double', 'groove', 'ridge', 'inset', and 'outset' to be 'solid'.

7.8.21 "border-top-width"

CSS2 Definition:

Value:<border-width> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-top-width" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top-width

The border width properties specify the width of the border area.The properties defined in this section refer to the <border-width>value type, which may take one of the following values:

thin

A thin border.

medium

A medium border.

thick

A thick border.

<length>

The border's thickness has an explicit value. Explicitborder widths cannot be negative.

The interpretation of the first three values depends onthe user agent. The following relationships must hold, however:

  • 'thin' <='medium' <= 'thick'.

  • Furthermore, these widths must be constant throughout adocument.

7.8.22 "border-bottom-color"

CSS2 Definition:

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-bottom-color" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-color

Specifies the border color for the bottom-edge.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.23 "border-bottom-style"

CSS2 Definition:

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-bottom-style" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-style

Specifies the border style for the bottom-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.24 "border-bottom-width"

CSS2 Definition:

Value:<border-width> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-bottom-width" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom-width

Specifies the border width for the bottom-edge.

See definition of property border-top-width (7.8.21 border-top-width).

7.8.25 "border-left-color"

CSS2 Definition:

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-left-color" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-color

Specifies the border color for the left-edge.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.26 "border-left-style"

CSS2 Definition:

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-left-style" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-style

Specifies the border style for the left-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.27 "border-left-width"

CSS2 Definition:

Value:<border-width> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-left-width" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left-width

Specifies the border width for the left-edge.

See definition of property border-top-width (7.8.21 border-top-width).

7.8.28 "border-right-color"

CSS2 Definition:

Value:<color> | transparent | inherit
Initial:the value of the 'color' property
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-right-color" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-color

Specifies the border color for the right-edge.

See definition of property border-top-color (7.8.19 border-top-color).

XSL modifications to the CSS definition:

The value "transparent" has been added to be consistent withthe definition of the "border-color" shorthand.

7.8.29 "border-right-style"

CSS2 Definition:

Value:<border-style> | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-right-style" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-style

Specifies the border style for the right-edge.

See definition of property border-top-style (7.8.20 border-top-style).

7.8.30 "border-right-width"

CSS2 Definition:

Value:<border-width> | inherit
Initial:medium
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-right-width" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right-width

Specifies the border width for the right-edge.

See definition of property border-top-width (7.8.21 border-top-width).

7.8.31 "padding-before"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<padding-width> | <length-conditional> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

Specifies the width of the paddingon the before-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the padding for the before-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the padding should be 0 or retained if its associatededge is a leading-edge in a reference-area for areas generated fromthis formatting object that have anis-first valueof "false". See4.3 Spaces and Conditionality for further details.The initial value of the .conditionality component is "discard".

7.8.32 "padding-after"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<padding-width> | <length-conditional> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

Specifies the width of the paddingon the after-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the padding for the after-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the padding should be 0 or retained if its associatededge is a trailing-edge in a reference-area for areas generated fromthis formatting object that have anis-last valueof "false". See4.3 Spaces and Conditionality for further details.The initial value of the .conditionality component is "discard".

7.8.33 "padding-start"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<padding-width> | <length-conditional> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

Specifies the width of the paddingon the start-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the padding for the start-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the padding should be 0 or retained if its associatededge is a leading-edge in a line-area for areas generated fromthis formatting object that have anis-first valueof "false". See4.3.1 Space-resolution Rules for further details.The initial value of the .conditionality component is "discard".

7.8.34 "padding-end"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:<padding-width> | <length-conditional> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

Specifies the width of the paddingon the end-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<length-conditional>

A compound value specifying the width and any conditionalityof the padding for the end-edge.

The .length component is a <length>. It may not be negative.The .conditionality component may be set to "discard" or "retain" tocontrol if the padding should be 0 or retained if its associatededge is a trailing-edge in a line-area for areas generated fromthis formatting object that have anis-last valueof "false". See4.3.1 Space-resolution Rules for further details.The initial value of the .conditionality component is "discard".

7.8.35 "padding-top"

CSS2 Definition:

Value:<padding-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"padding-top" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-top

<length>

Specifies the width of the paddingon the top-edge of a block-area or inline-area.Unlike margin properties, values for padding properties cannot benegative.

7.8.36 "padding-bottom"

CSS2 Definition:

Value:<padding-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"padding-bottom" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-bottom

Specifies the width of the paddingon the bottom-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

7.8.37 "padding-left"

CSS2 Definition:

Value:<padding-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"padding-left" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-left

Specifies the width of the paddingon the left-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

7.8.38 "padding-right"

CSS2 Definition:

Value:<padding-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"padding-right" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding-right

Specifies the width of the paddingon the right-edge of a block-area or inline-area.

See definition of property padding-top (7.8.35 padding-top).

7.9 Common Font Properties

The following common-font-properties all are taken fromCSS2. The reference to CSS2 is: http://www.w3.org/TR/REC-CSS2/fonts.html

Note:

Although these properties reference the individual propertiesin the CSS specification, it is recommended that you read the entirefont section of the CSS2 specification.

7.9.1 Fonts and Font Data

XSL uses an abstract model of a font. This model is described in thissection and is based on current font technology as exemplified by theOpenType specification[OpenType].

A font consists of a collection of glyphs together with theinformation, the font tables, necessary to use those glyphs to presentcharacters on some medium. A glyph is a recognizable abstract graphicsymbol which is independent of any specific design. The combination of the collection of glyphs and the font tablesis called the font data.

The font tables include the informationnecessary to map characters to glyphs, to determine the size of glyphareas and to position the glyph area. Each font table consists of oneor more font characteristics, such as the font-weight and font-style.

The geometric font characteristics are expressed in a coordinatesystem based on the em box. (The em is a relative measure of theheight of the glyphs in the font; see5.9.7.2 Relative Lengths.)This box that is 1 em highand 1 em wide is called the design space.Points in this design space are expressed ingeometric coordinates in terms of fractional units of the em.

The coordinate space of the em box is called the design spacecoordinate system. For scalable fonts, the curves and lines that areused to draw a glyph are represented using this coordinate system.

Note:

Most often, the (0,0) point in this coordinate system ispositioned on the left edge of the em box, but not at the bottom leftcorner. The Y coordinate of the bottom of a Roman capital letter isusually zero. In addition, the descenders on lower case Roman letters havenegative coordinate values.

XSL assumes that the font tables will provide at least three fontcharacteristics: an ascent, a descent and a set of baseline-tables.The coordinate values for these are given in the design spacecoordinate system. The ascent is given by the vertical coordinate ofthe top of the em box; the descent is given by the vertical coordinateof the bottom of the em box. The baseline-table is explained below.

The glyphs of a given script are positioned so that a particular pointon each glyph, thealignment-point, is aligned with thealignment-points of the other glyphs in that script. The glyphs ofdifferent scripts are typically aligned at different points on theglyph. For example, Western glyphs are aligned on the bottoms of thecapital letters, certain Indic glyphs (including glyphs from theDevanagari, Gurmukhi and Bengali scripts) are aligned at the top of ahorizontal stroke near the top of the glyphs and Far Eastern glyphsare aligned either at the bottom or center of the em box of theglyph. Within a script and within a line of text having a singlefont-size, the sequence of alignment-points defines, in theinline-progression-direction, a geometric line called abaseline. Western and most other alphabetic and syllabicglyphs are aligned to an "alphabetic" baseline, the above Indicglyphs are aligned to a "hanging" baseline and the Far Eastern glyphsare aligned to an "ideographic" baseline.

Three examples of baselines   [D]

This figure shows the vertical position of the alignment-point foralphabetic and many syllabic scripts, illustrated by a Roman "A"; forcertain Indic scripts, illustrated by a Gurmukhi syllable "ji"; andfor ideographic scripts, illustrated by the ideograhic glyph meaning"country". The thin black rectangle around the ideographic glyphillustrates the em box for that glyph and shows the typicalpositioning of the "black marks" of the glyph within the em box.

Abaseline-table specifies the position of one or morebaselines in the design space coordinate system. The function of thebaseline table is to facilitate the alignment of different scriptswith respect to each other when they are mixed on the same textline. Because the desired relative alignments may depend on whichscript is dominant in a line (or block), there may be a differentbaseline table for each script. In addition, different alignmentpositions are needed for horizontal and vertical writingmodes. Therefore, the font may have a set of baseline tables:typically, one or more for horizontal writing-modes and zero or morefor vertical writing-modes.

Horizontal and vertical baseline alignment   [D]

Examples of horizontal and vertical baseline positions. The thin linedbox 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 Latintext written horizontally. This text is positioned relative to thealphabetic baseline, shown in blue. Example 2 shows a typicalideographic glyph positioned on the horizontal ideographicbaseline. Note that the em box is positioned differently for these twocases. Examples 3 and 4 show the same set of baselines used invertical writing. The Latin text, example 3, is shown with aglyph-orientation of 90 degrees which is typical for proportionallyspace Latin glyphs in vertical writing. Even though the ideographicglyph in example 4 is positioned on the vertical ideographic baseline,because it is centered in the em box, all glyphs with the same em boxare centered, vertically, with respect to one another. Additionalexamples showing the positioning of mixed scripts are given in theintroductions to7.14 Area Alignment Properties and7.29 Writing-mode-related Properties.

The font tables for a font include font characteristics for theindividual glyphs in the font. XSL assumes that the font tablesinclude, for each glyph in the font, one width value, one alignment-baseline andone alignment-point for the horizontal writing-modes. If verticalwriting-modes are supported, then each glyph must have another widthvalue, alignment-baseline and alignment-point for the verticalwriting-modes. (Even though it is specified as a width, for verticalwriting-modes the width is used in the vertical direction.)

The scriptto which a glyph belongs determines an alignment-baseline to which theglyph is to be aligned. The position of this baseline in the designspace coordinate system determines the defaultblock-progression-direction position of the alignment-point. Theinline-progression-direction position of the alignment-point is on thestart-edge of the glyph. (These positions are adjusted according tothe specifications in7.14.1 alignment-adjust when an instance of a glyph is used in an inline or blockformatting object. The "space-start" and/or the "space-end" propertiesof the fo:character that maps to the glyph may be adjusted to effect"kerning" with respect to adjacent glyphs.)

Baseline alignment of glyphs from different scripts   [D]

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 edgeof the em box and by making alignment-baseline blue.The baseline-table of the parent formatting object of the charactersthat mapped to these glyphs is shown as a set of dashed lines.

In addition to the font characteristics required above, a font mayalso supply substitution and positioning tables that can be used by aformatter to re-order, combine, and position a sequence of glyphs tomake one or more composite glyphs. The combination may be as simple asa ligature, or as complex as an Indic syllable which combines, usuallywith some re-ordering, multiple consonants and vowel glyphs. See4.7.2 Line-building.

Note:

If the font tables do not define values for required fontcharacteristics, heuristics may be used to approximate thesevalues.

7.9.2 "font-family"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x73

Value:[[ <family-name> | <generic-family>],]* [<family-name> | <generic-family>] | inherit
Initial:depends on user agent
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-family" property
http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-family

This property specifies a prioritized list of font family namesand/or generic family names. To deal with the problem that a singlefont may not contain glyphs to display all the characters in a document,or that not all fonts are available on all systems, this property allowsauthors 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 acertain character. This list is called a font set.

The generic font family will be used if one or more of the otherfonts in a font set is unavailable. Although many fonts providethe "missing character" glyph, typically an open box, as its nameimplies this should not be considered a match except for the lastfont in a font set.

There are two types of font family names:

<family-name>

The name of a font-family of choice. In the previous example[in the CSS2 Recommendation],"Baskerville", "Heisi Mincho W3", and "Symbol" are font families.Font family names containing whitespace should be quoted. If quotingis omitted, any whitespace characters before and after the fontname are ignored and any sequence of whitespace characters inside thefont name is converted to a single space.

<generic-family>

The following generic families are defined: "serif", "sans-serif","cursive", "fantasy", and "monospace". Please see the section ongeneric font families for descriptions of these families. Genericfont family names are keywords, and therefore must not be quoted.

XSL modifications to the CSS definition:

<string>

The names are syntactically expressed asstrings.

Note:

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 specifythe name of a system-font.

7.9.3 "font-selection-strategy"

XSL Definition:

Value:auto | character-by-character | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

There is no XSL mechanism to specify a particular font; instead,aselected font is chosen from the fonts available to theUser Agent based on a set of selection criteria. Theselectioncriteria are the following font properties:"font-family","font-style","font-variant","font-weight","font-stretch", and"font-size",plus, for some formattingobjects, one or more characters.These characters are called thecontextual characters.The contextual characters can be as few as a single characterand as many as the entire character complement of the result treebeing processed.

Except for the fo:character formatting object, for all otherformatting objects where "font-family" applies, the selectioncriteria consist of the above font properties only.For the fo:character formatting object, the selection criteriaare these properties plus either the value of the"character" property of the fo:character alone or thatcharacter together with other contextual characters.

The strategy to be followed for selecting a font based on thesecriteria is specified by the "font-selection-strategy" property.

The "font-family" property is a prioritized list offont family names, whichare tried in sequence to find an available font that matches theselection criteria.The font property selection criteria are matched if thecorresponding font characteristics matchthe properties as specified in the property descriptions.

If no matching font is found, a fallback selectionis determined in a system-dependent manner.

Note:

This fallback may be to seek a match using a User Agentdefault "font-family", or it may be a more elaborate fallbackstrategy where, for example, "Helvetica" would be used as afallback for "Univers".

If no match has been found for a particular character,there is no selected font andthe User Agent should provide a visual indicationthat a character is not being displayed (for example, using the'missing character' glyph).

Values of the "font-selection-strategy" propertyhave the following meanings:

auto

The selection criterion given by the contextual characters is used in animplementation defined manner.

Note:

An implementation may, for example, use an algorithm whereall characters in the result tree having the same set offont selection property values influence the selection,or it may only use the character property of asingle fo:character formatting object for which a font is to beselected.Consider, for example, a case where the available fonts include afont that covers all of Latin, Greek and Cyrillic as wellas three better quality fonts that cover those three separately,but match each other badly stylistically. An implementation that takesa larger view for its set of contextual characters may consider theglyph complement to allow the selection of the better font if itcovers the glyph complement, but to use the broader font to geta consistent style if the glyph complement is larger than any oneof the other fonts can cover.

character-by-character

The set of contextual characters consists of the single characterthat is the value of the "character" property of the fo:character forwhich a font is to be selected.

Note:

This selection strategy is the same as the strategy used to selectfonts in CSS.

Describes the criteria for selecting fonts and the different strategiesfor using these criteria to determine aselected font.

7.9.4 "font-size"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x74

Value:<absolute-size> | <relative-size> | <length>| <percentage> | inherit
Initial:medium
Inherited:yes, the computed value is inherited
Percentages:refer to parent element's font size
Media:visual

CSS2 Reference:"font-size" property
http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size

This property describes the size of the font when set solid.The font size corresponds to the em square,a concept used in typography.Note that certain glyphs may bleed outside their em squares.Values have the following meanings:

<absolute-size>

An <absolute-size> keyword refers to an entry in a tableof font sizes computed and kept by the user agent. Possible valuesare:

[ xx-small | x-small | small | medium | large | x-large | xx-large]

On a computer screen a scaling factor of 1.2 is suggested betweenadjacent indexes; if the "medium" font is 12pt, the "large" fontcould be 14.4pt. Different media may need different scaling factors.Also, the user agent should take the quality and availability of fontsinto account when computing the table. The table may be differentfrom one font family to another. Note. In CSS1, the suggested scalingfactor between adjacent indexes was 1.5 which user experience provedto be too large.

<relative-size>

A <relative-size> keyword is interpreted relative tothe table of font sizes and the font size of the parent element.Possible values are:

[ larger | smaller ]

For example, if the parent element has a font size of "medium",a value of "larger" will make the font size of the current elementbe "large". If the parent element's size is not close to a tableentry, the user agent is free to interpolate between table entriesor round off to the closest one. The user agent may have to extrapolatetable values if the numerical value goes beyond the keywords.

<length>

A length value specifies an absolute font size (that isindependent of the user agent's font table). Negative lengths areillegal.

<percentage>

A percentage value specifies an absolute font size relativeto the parent element's font size. Use of percentage values, orvalues in "em's", leads to more robust and cascadable stylesheets.

The actual value of this property may differ from the computedvalue due a numerical value on 'font-size-adjust' and the unavailabilityof certain font sizes.

Child elements inherit the computed 'font-size' value (otherwise,the effect of 'font-size-adjust' would compound).

XSL modifications to the CSS definition:

XSL incorporates the following text from CSS2 15.5(http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm")as part of the property definition.

'font-size' must be matched within a UA-dependent margin oftolerance. (Typically, sizes for scalable fonts are rounded to thenearest whole pixel, while the tolerance for bitmapped fonts could beas large as 20%.) Further computations, e.g., by 'em' values in otherproperties, are based on the computed 'font-size' value.

7.9.5 "font-stretch"

CSS2 Definition:

Value:normal | wider | narrower | ultra-condensed| extra-condensed | condensed | semi-condensed | semi-expanded |expanded | extra-expanded | ultra-expanded | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-stretch" property
http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling

The 'font-stretch' property selects a normal, condensed, or extendedface from a font family.

ultra-condensed
extra-condensed
condensed
semi-condensed
normal
semi-expanded
expanded
extra-expanded
ultra-expanded

Absolute keyword values have the following ordering, fromnarrowest to widest :

  1. ultra-condensed

  2. extra-condensed

  3. condensed

  4. semi-condensed

  5. normal

  6. semi-expanded

  7. expanded

  8. extra-expanded

  9. ultra-expanded

wider

The relative keyword "wider" sets the value to the nextexpanded value above the inherited value (while not increasing itabove "ultra-expanded").

narrower

The relative keyword "narrower" sets the value to the nextcondensed value below the inherited value (while not decreasingit below "ultra-condensed").

7.9.6 "font-size-adjust"

CSS2 Definition:

Value:<number> | none | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-size-adjust" property
http://www.w3.org/TR/REC-CSS2/fonts.html#font-size-props

In bicameral scripts, the subjective apparent size and legibilityof a font are less dependent on their 'font-size' value than onthe value of their 'x-height', or, more usefully, on the ratio ofthese two values, called the aspect value(x-height divided by font size).The higher the aspect value, the more likely it is thata font at smaller sizes will be legible. Inversely, faces with alower aspect value will become illegible more rapidly below a given thresholdsize than faces with a higher aspect value. Straightforward fontsubstitution that relies on font size alone may lead to illegiblecharacters.

For example, the popular font Verdana has an aspect value of0.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. Verdanawill therefore tend to remain legible at smaller sizes than Times NewRoman. Conversely, Verdana will often look 'too big' if substitutedfor Times New Roman at a chosen size.

This property allows authors to specify an aspect value for anelement that will preserve the x-height of the first choice fontin the substitute font. Values have the following meanings:

none

Do not preserve the font's x-height.

<number>

Specifies the aspect value. The number refers to the aspectvalue of the first choice font. The scaling factor for availablefonts is computed according to the following formula:

y(a/a') = c

where:

y="font-size" of first-choice font

a = aspect value of first-choice font

a' = aspect value of available font

c="font-size" to apply to available font

This property allows authors to specify an aspect valuefor an element that will preserve the x-height of the first choicefont in the substitute font.

Font size adjustments take place when computing the actual valueof "font-size". Since inheritance is based on the computed value,child elements will inherit unadjusted values.

7.9.7 "font-style"

CSS2 Definition:

Value:normal | italic | oblique | backslant | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-style" property
http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling

The "font-style" property requests normal (sometimes referredto as "roman" or "upright"), italic, and oblique faces within afont family. Values have the following meanings:

normal

Specifies a font that is classified as "normal" in theUA's font database.

oblique

Specifies a font that is classified as "oblique" in theUA's font database. Fonts with Oblique, Slanted, or Incline in theirnames will typically be labeled "oblique" in the font database.A font that is labeled "oblique" in the UA's font database may actuallyhave been generated by electronically slanting a normal font.

italic

Specifies a font that is classified as "italic" in theUA's font database, or, if that is not available, one labeled 'oblique'.Fonts with Italic, Cursive, or Kursiv in their names will typicallybe labeled "italic".

XSL modifications to the CSS definition:

The following value type has been added for XSL:

backslant

Specifies a font that is classified as "backslant"in the UA's font database.

XSL incorporates the following text from CSS2 15.5(http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm)as part of the property definition, except thatfor XSL the information is obtained from the font tables of theavailable fonts.

'italic' will be satisfied if there iseither a face in the UA's font database labeled with the CSS keyword'italic' (preferred) or 'oblique'. Otherwise the values must bematched exactly or font-style will fail.

7.9.8 "font-variant"

CSS2 Definition:

Value:normal | small-caps | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-variant" property
http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling

In a small-caps font, the glyphs for lowercase letters look similarto the uppercase ones, but in a smaller size and with slightly differentproportions. The "font-variant" property requests such a font forbicameral (having two cases, as with Roman script). This property hasno visible effect for scripts that are unicameral (having only onecase, as with most of the world's writing systems). Values havethe following meanings:

normal

Specifies a font that is not labeled as a small-caps font.

small-caps

Specifies a font that is labeled as a small-caps font.If a genuine small-caps font is not available, user agents shouldsimulate a small-caps font, for example by taking a normal fontand replacing the lowercase letters by scaled uppercase characters. Asa last resort, unscaled uppercase letter glyphs in a normal fontmay replace glyphs in a small-caps font so that the text appearsin all uppercase letters.

Insofar as this property causes text to be transformedto uppercase, the same considerations as for "text-transform" apply.

XSL modifications to the CSS definition:

XSL incorporates the following text from CSS2 15.5(http://www.w3.org/TR/REC-CSS2/fonts.html#algorithm)as part of the property definition.

'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 fontwhere all lowercase letters are replaced by uppercase letters. Asmall-caps font may be synthesized by electronically scaling uppercaseletters from a normal font.

7.9.9 "font-weight"

CSS2 Definition:

Value:normal | bold | bolder | lighter | 100 | 200| 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font-weight" property
http://www.w3.org/TR/REC-CSS2/fonts.html#font-styling

The "font-weight" property specifies the weight of the font.

normal

Same as "400".

bold

Same as "700".

bolder

Specifies the next weight that is assigned to a font thatis darker than the inherited one. If there is no such weight, itsimply results in the next darker numerical value (and the fontremains unchanged), unless the inherited value was "900", in which casethe resulting weight is also "900".

lighter

Specifies the next weight that is assigned to a font thatis lighter than the inherited one. If there is no such weight, itsimply results in the next lighter numerical value (and the fontremains unchanged), unless the inherited value was "100", in which casethe resulting weight is also "100".

<integer>

These values form an ordered sequence, where each numberindicates a weight that is at least as dark as its predecessor.

Child elements inherit the computed value of the weight.

XSL modifications to the CSS definition:

XSL incorporates the following text from CSS2 15.5.1(http://www.w3.org/TR/REC-CSS2/fonts.html#q46)as part of the property definition.

The association of other weights within a family to the numericalweight values is intended only to preserve the ordering of weightswithin that family. User agents must map names to values in a way thatpreserves visual order; a face mapped to a value must not be lighterthan faces mapped to lower values. There is no guarantee on how a useragent will map fonts within a family to weight values. However, thefollowing heuristics tell how the assignment is done in typical cases:If the font family already uses a numerical scale with nine values (ase.g., OpenType does), the font weights should be mapped directly.

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'.

The font labeled "Bold" will often correspond to the weight value '700'.

If there are fewer then 9 weights in the family, the default algorithmfor filling the "holes" is as follows. If '500' is unassigned, it willbe assigned the same font as '400'. If any of the values '600', '700','800', or '900' remains unassigned, they are assigned to the same faceas the next darker assigned keyword, if any, or the next lighter oneotherwise. If any of '300', '200', or '100' remains unassigned, it isassigned to the next lighter assigned keyword, if any, or the nextdarker otherwise.

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 normaland a bold face, others may have eight different face weights.

7.10 Common Hyphenation Properties

7.10.1 "country"

XSL Definition:

Value:none | <country> | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

none

Indicates the country is unknown oris not significant to the proper formatting of this object.

<country>

A country-specifier in conformance withISO 3166([ISO3166-1],[ISO3166-2], and[ISO3166-3]).

Specifies the country to be used bythe formatter in language-/locale-coupled services, such asline-justification strategy, line-breaking, and hyphenation.

Note:

This may affect line composition ina system-dependent way.

7.10.2 "language"

XSL Definition:

Value:none | <language> | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

none

Indicates the language is unknownor is not significant to the proper formatting of this object.

<language>

A 3-letter code conforming to a[ISO639-2] terminology or bibliographic code or a2-letter code conforming to a[ISO639] 2-letter code.

Specifies the language to be usedby the formatter in language-/locale-coupled services, such asline-justification strategy, line-breaking, and hyphenation.

Note:

This may affect line composition ina system-dependent way.

Note:

ISO 639 2-letter and ISO 639-2 terminology 3-letter codes are alsoused in the language component of[RFC3066], butuser-defined and IANA registered language codes that are allowed inRFC 3066 are not allowed as the value of this property.

7.10.3 "script"

XSL Definition:

Value:none | auto | <script> | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

auto

Indicates that the script is determinedbased on testing a character in the document againstscript identifiers assigned to Unicodecode point ranges.

For fo:character the character tested is given by the"character" property.For other formatting objects the character tested isthe first character descendant, as determined by the pre-ordertraversal of the refined formatting object tree, which has anunambiguous script identifier.

Note:

This providesthe automatic differentiation between Kanji, Katakana,Hiragana, and Romanjiused in JIS-4051 and similar services in some other countries/languages.

none

Indicates the script is unknown oris not significant to the proper formatting of this object.

<script>

A script specifier in conformance with[ISO15924].

Specifies the script to be used bythe formatter in language-/locale-coupled services, such asline-justification strategy, line-breaking, and hyphenation.

Note:

This may affect line compositionin a system-dependent way.

7.10.4 "hyphenate"

XSL Definition:

Value:false | true | inherit
Initial:false
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

false

Hyphenation may not be used in the line-breaking algorithmbetween characters with this value.

true

Hyphenation may be used in the line-breaking algorithm betweencharacters with this value.

Specifies whether hyphenation is allowed during line-breakingwhen the formatter is formatting this formatting object.It is implementation defined whether hyphenation may be used betweena character for which the value is "true"and one for which the value is "false".

7.10.5 "hyphenation-character"

XSL Definition:

Value:<character> | inherit
Initial:The Unicode hyphen character U+2010
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<character>

Specifies the Unicode character to be presentedwhen a hyphenation break occurs. The styling properties of thischaracter are those inherited from its containing flow object.

7.10.6 "hyphenation-push-character-count"

XSL Definition:

Value:<number> | inherit
Initial:2
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

The hyphenation-push-character-countspecifies the minimum number of charactersin a hyphenated word after the hyphenation character. This is the minimumnumber of characters in the word pushed to the next line after theline ending with the hyphenation character.

7.10.7 "hyphenation-remain-character-count"

XSL Definition:

Value:<number> | inherit
Initial:2
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

The hyphenation-remain-character-countspecifies the minimum number of charactersin a hyphenated word before the hyphenation character. This is the minimumnumber of characters in the word left on the line ending with thehyphenation character.

7.11 Common Margin Properties-Block

7.11.1 "margin-top"

CSS2 Definition:

Value:<margin-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"margin-top" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-top

Margin-width may be one of the following:

auto

See the CSS2 section on computingwidths and margins for behavior.

<length>

Specifies a fixed width.

<percentage>

The percentage is calculated with respect to the widthof the generated box's containing block. This is true for 'margin-top'and 'margin-bottom', except in the page context, where percentagesrefer to page box height.

Negative values for margin propertiesare allowed, but there may be implementation-specific limits.

Sets the top margin of a box.

XSL modifications to the CSS definition:

7.11.2 "margin-bottom"

CSS2 Definition:

Value:<margin-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"margin-bottom" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-bottom

Margin-width may be one of thefollowing:

auto

See the CSS2 section on computingwidths and margins for behavior.

<length>

Specifies a fixed width.

<percentage>

The percentage is calculated with respect to the widthof the generated box's containing block. This is true for 'margin-top'and 'margin-bottom', except in the page context, where percentagesrefer to page box height.

Negative values for margin propertiesare allowed, but there may be implementation-specific limits.

Sets the bottom margin of a box.

XSL modifications to the CSS definition:

7.11.3 "margin-left"

CSS2 Definition:

Value:<margin-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"margin-left" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-left

Margin-width may be one of thefollowing:

auto

See the CSS2 section on computingwidths and margins for behavior.

<length>

Specifies a fixed width.

<percentage>

The percentage is calculated with respect to the widthof the generated box's containing block.

Negative values for margin propertiesare allowed, but there may be implementation-specific limits.

Sets the left margin of a box.

XSL modifications to the CSS definition:

7.11.4 "margin-right"

CSS2 Definition:

Value:<margin-width> | inherit
Initial:0pt
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"margin-right" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin-right

Margin-width may be one of thefollowing:

auto

See the CSS2 section on computingwidths and margins for behavior.

<length>

Specifies a fixed width.

<percentage>

The percentage is calculated with respect to the widthof the generated box's containing block.

Negative values for margin propertiesare allowed, but there may be implementation-specific limits.

Sets the right margin of a box.

XSL modifications to the CSS definition:

7.11.5 "space-before"

XSL Definition:

Value:<space> | inherit
Initial:space.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0
Inherited:no
Percentages:N/A (Differs from margin-top in CSS)
Media:visual

Values have the following meanings:

<space>

Specifies the minimum, optimum, and maximum valuesfor the space before any areas generated by this formatting objectand the conditionality and precedence of this space.

Specifies the value of the space-specifier for the space beforethe areas generated by this formatting object.A definition of space-specifiers, andthe interaction between space-specifiers occurring in sequence aregiven in4.3 Spaces and Conditionality.

Note:

A common example of such a sequence is the "space-after" onone area and the "space-before" of its next sibling.

7.11.6 "space-after"

XSL Definition:

Value:<space> | inherit
Initial:space.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0
Inherited:no
Percentages:N/A (Differs from margin-bottom in CSS)
Media:visual

Values have the following meanings:

<space>

Specifies the minimum, optimum, and maximum valuesfor the space after any areas generated by this formatting objectand the conditionality and precedence of this space.

Specifies the value of the space-specifier for the space afterthe areas generated by this formatting object.A definition of space-specifiers, andthe interaction between space-specifiers occurring in sequence aregiven in4.3 Spaces and Conditionality.

Note:

A common example of such a sequence is the "space-after" onone area and the "space-before" of its next sibling.

7.11.7 "start-indent"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:0pt
Inherited:yes
Percentages:refer to inline-progression-dimensionof containing reference-area
Media:visual

Values have the following meanings:

<length>

The "start-indent" is specified as a length.

<percentage>

The "start-indent" is specified as a percentage ofthe inline-progression-dimension of the containing reference-area.

For each block-area generated by this formatting object, specifies thedistance from the start-edge of the content-rectangle of the containingreference-area to the start-edge of the content-rectangle of thatblock-area.

This property may have a negative value, which indicates an outdent.

7.11.8 "end-indent"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:0pt
Inherited:yes
Percentages:refer to inline-progression-dimensionof containing reference-area
Media:visual

Values have the following meanings:

<length>

The "end-indent" is specified as a length.

<percentage>

The "end-indent" is specified as a percentage ofthe inline-progression-dimension of the containing reference-area.

For each block-area generated by this formatting object, specifies thedistance from the end-edge of the content-rectangle ofthat block-areato the end-edge of the content-rectangle of the containingreference-area.

This property may have a negative value, which indicates an outdent.

7.12 Common Margin Properties-Inline

7.12.1 "margin-top"

See definition in (7.11.1 margin-top).

7.12.2 "margin-bottom"

See definition in (7.11.2 margin-bottom).

7.12.3 "margin-left"

See definition in (7.11.3 margin-left).

7.12.4 "margin-right"

See definition in (7.11.4 margin-right).

7.12.5 "space-end"

XSL Definition:

Value:<space> | <percentage> | inherit
Initial:space.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0
Inherited:no
Percentages:refer to inline-progression-dimension of closest ancestor block-area that is not a line-area
Media:visual

Values have the following meanings:

<space>

The "space-end" is specified as a space.

<percentage>

The "space-end" is specified as a percentage ofthe inline-progression-dimension of the closest ancestor block-area.

Specifies the minimum, optimum, and maximum valuesfor the space after any areas generated by this formatting objectand the conditionality and precedence of this space.

Specifies the value of the space-specifier for the space afterthe areas generated by this formatting object.A definition of space-specifiers, andthe interaction between space-specifiers occurring in sequence aregiven in4.3 Spaces and Conditionality.

Note:

A common example of such a sequence is the "space-end" onone area and the "space-start" of its next sibling.

7.12.6 "space-start"

XSL Definition:

Value:<space> | <percentage> | inherit
Initial:space.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0
Inherited:no
Percentages:refer to inline-progression-dimension of closest ancestor block-area that is not a line-area
Media:visual

Values have the following meanings:

<space>

The "space-start" is specified as a space.

<percentage>

The "space-start" is specified as a percentage ofthe inline-progression-dimension of the closest ancestor block-area.

Specifies the minimum, optimum, and maximum valuesfor the space before any areas generated by this formatting objectand the conditionality and precedence of this space.

Specifies the value of the space-specifier for the space beforethe areas generated by this formatting object.A definition of space-specifiers, andthe interaction between space-specifiers occurring in sequence aregiven in4.3 Spaces and Conditionality.

Note:

A common example of such a sequence is the "space-end" onone area and the "space-start" of its next sibling.

7.13 Common Relative Position Properties

7.13.1 "top"

See definition in (7.6.2 top).

7.13.2 "right"

See definition in (7.6.3 right).

7.13.3 "bottom"

See definition in (7.6.4 bottom).

7.13.4 "left"

See definition in (7.6.5 left).

7.13.5 "relative-position"

A Property Derived from a CSS2 Property.

Value:static | relative | inherit
Initial:static
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

static

The area is normally stacked.

relative

The area's position is determined as if it was normallystacked. Only during rendering is the arearendered offset relative to this position.The fact that one area is relatively positioned does notinfluence the position on any other area.

For areas that break over a page boundary,only the portion that would have been on a given page originallyis included in the repositioned area on that page. Any portionof the repositioned area that was originally on the current page, butfalls off the current page due to repositioning is "off" (typicallyclipped), thus does not fall onto any other page.

7.14 Area Alignment Properties

The area alignment properties controlthe alignment of child areas with respect to their parent areas. Theparent area is given a frame of reference through itsscaled-baseline-table.Ascaled-baseline-table is a compoundvalue with three components: a baseline-identifier for thedominant-baseline,a derived baseline-table with positions for the baselinesexpressed in design space coordinates, and a baseline-table font-sizethat is used to scale the positions of the baselines in thatbaseline table.In a scaled-baseline-table, the positions of the baselines can beadjusted by multiplying the design-space coordinate values bythe baseline-table font-size.

The positions of these baselines are illustrated in the following figure:

Example of alignment of different scripts   [D]

This figure shows samples of Gurmukhi (a hanging Indic script), Latinand ideographic scripts together with most of the baselines definedbelow. The thin line around the ideographic glyphs symbolizes the embox in which these glyphs are centered. In this figure, the positionof the "text-before-edge" and "text-after-edge" baselines is computedassuming that the "alphabetic" baseline is the dominant-baseline. The"central" baseline has been omitted from the figure, but it lieshalfway between the "text-before-edge" and "text-after-edge"baselines, just about where the "math" baseline is shown.

The baseline-identifiers below are used in this specification.Some of these are determined by baseline-tables contained in a font asdescribed in7.9.1 Fonts and Font Data. Others arecomputed from other font characteristics as described below.Whether determined by the font or computed, aderived baseline-table is constructed with positions for each of thebaselines below.

alphabetic

This identifies the baseline used by most alphabetic and syllabicscripts. These include, but are not limited to, many Western, SouthernIndic, Southeast Asian (non-ideographic) scripts.

ideographic

This identifies the baseline used by ideographic scripts. Forhistorical reasons, this baseline is at the bottom of the ideographicem 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.

hanging

This identifies the baseline used by certain Indic scripts. Thesescripts include Devanagari, Gurmukhi and Bengali.

mathematical

This identifies the baseline used by mathematical symbols.

central

This identifies a computed baseline that is at the center of the embox. This baseline lies halfway between the text-before-edge andtext-after-edge baselines.

Note:

For ideographic fonts, this baseline isoften used to align the glyphs; it is an alternative to theideographic baseline.

middle

This identifies a baseline that is offset from the alphabetic baselinein theshift-direction by 1/2 the value of the x-heightfont characteristic. The position of this baseline may be obtainedfrom the font data or, for fonts that have a font characteristic for"x-height", it may be computed using 1/2 the "x-height". Lackingeither of these pieces of information, the position of this baselinemay be approximated by the "central" baseline.

text-before-edge

This identifies the before-edge of the em box. The position of thisbaseline may be specified in the baseline-table or it may becalculated.

Note:

The position of this baseline is normally around or at thetop of the ascenders, but it may not encompass all accents that canappear above a glyph. For these fonts the value of the "ascent" fontcharacteristic is used. For ideographic fonts, the position of thisbaseline is normally 1 em in theshift-direction fromthe "ideographic" baseline. However, some ideographic fonts have areduced width in the inline-progression-direction to allow tightersetting. When such a font, designed only for vertical writing-modes,is used in a horizontal writing-mode, the "text-before-edge" baselinemay be less than 1 em from the text-after-edge.

text-after-edge

This identifies the after-edge of the em box. The position of thisbaseline may be specified in the baseline-table or it may becalculated.

Note:

For fonts with descenders, the position of this baseline is normallyaround or at the bottom of the descenders. For these fonts the valueof the "descent" font characteristic is used. For ideographic fonts,the position of this baseline is normally at the "ideographic"baseline.

There are, in addition, two computed baselines that are only defined for lineareas. For each line-area, there is a dominant-baseline, a baseline-table anda baseline-table font-size which are those of the nearest ancestorformatting object that completely contains the whole line. The"before-edge" and "after-edge" baselines are defined as follows.

before-edge

The offset of the "before-edge" baseline of the line from thedominant-baseline of the line is determined by ignoring allinline-areas whose alignment-baseline is either"before-edge" or"after-edge". For the "before-edge", extents aremeasured from the dominant-baseline in the direction toward the top ofthe reference-area. The top of the reference-area is defined by thereference-area'sreference-orientation. The"before-edge" baseline offset is set to the maximum extent of the"before-edges" of the allocation-rectangles of the remaining areas. Ifall 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.

after-edge

The offset of the "after-edge" baseline of the line from thedominant-baseline of the line is determined by ignoring allinline-areas whose alignment-baseline isafter-edge. For the "after-edge", extents aremeasured from the dominant-baseline in the direction toward the bottomof the reference-area. The top of the reference-area is defined by thereference-area'sreference-orientation. 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-rectanglesof the remaining areas and (2) the maximum height of theallocation-rectangles of the areas that are ignored minus the offsetof the "before-edge" baseline of the line.

Note:

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" ofthe line. Then, case (2) above will determinethe offset to the "after-edge"baseline. In this case the allocation-rectangle of one of the areaswill extend from the "before-edge" baseline to the "after-edge" baseline.

Note:

The above specifications for "before-edge" and "after-edge" havethe following three properties: (1) the allocation-rectangles ofall the areas are below the "before-edge", (2) the allocation-rectanglesof all the areas are above the "after-edge", and (3) the distance betweenthe "before-edge" and the "after-edge" cannot be decreased withoutviolating (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".

Examples showing "before-edge" and "after-edge" alignment:

Line stacking examples   [D]

The rectangles with lines or arrows are images with an intrinsic sizeas shown. The rectangles with no arrows represent images that receivethe default, dominant baseline, alignment. The alignment of the otherrectangles is at the furthest point from the arrow head (which is inthe 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, arrowheadfree rectangular image and in example 2 this is the double headedarrow 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" alignedimages. In example 4, the tallest image is in the "after-edge" alignedset. Example 5 is a repetition of example 2 with largest image beingan "after-edge" aligned image.

The alignment of a formatting object with respect to its parent isdetermined by three things: the scaled-baseline-table of the parentand the alignment-baseline and alignment-point of the formattingobject being aligned. Prior to alignment, the scaled-baseline-table ofthe parent may be shifted. The property specificationsbelow provide the information necessary to align the parent and childformatting objects.

There are four properties that control alignment of formatting objectsto the above set of baselines. These properties are all independentand are designed so that typically only the specification ofone of the properties is needed to achieve a particular alignment goal.

The primary baseline alignment property is the"dominant-baseline" property. This property has a compoundvalue with three components. The dominant-baseline-identifiercomponent is the default alignment-baseline to be used whenaligning two inline-areas. The baseline-table component specifies thepositions of the baselines in the font design space coordinates. (See7.9.1 Fonts and Font Data.) The baseline-table actssomething like a musical staff; it defines particular points along theblock-progression-direction to which glyphs and inlineformatting objects can be aligned. The baseline-table font-size componentprovides a scaling factor for the baseline-table.

For convenience, the specification will sometimes refer to thebaseline identified by the dominant-baseline-identifier component ofthe "dominant-baseline" property as the "dominantbaseline" (in an abuse of terminology).

A simple example of alignment is shown in the following figure. Thefigure shows the presentation of two inline formatting objects, oneinside the other. These inline formatting objects make up the contentof a line in a block where the writing-mode is "lr-tb" and thefont is "Helvetica".The structure of the example is as follows:

<fo:inline>Apex <fo:inline>Top</fo:inline></fo:inline>

Because no properties are specified, the initial values apply. Since ahorizontal writing-mode is in use, the dominant-baseline-identifier isset to "alphabetic" and the baseline-table is taken from thenominal-font for the block in which the line appears, which, in this case,is Helvetica.

In the figure, the positions of the baselines relativeto the current font size are shown as red (staff) lines. These linesare labeled with abbreviations of the names of the baselines (e.g.,TBE for "text-before-edge"). The baseline identified by thedominant-baseline-identifier (A) is shown in blue. There is a break in thestaff lines to separately show the inner inline formattingobject. This is not necessary for this example, but this distinctionwill become important in subsequent examples.

The "alignment-baseline" property is the primary control onthe positioning of an inner formatting object with respect to itsparent. For all but fo:character, the initial value of the"alignment-baseline" property is "baseline". Thisaligns the dominant-baseline of the inner inline formatting objectwith the dominant baseline of the outer inline formatting object. Thisis shown by the short blue line that connects the two separatedstaffs (A) in the figure.

The glyphs determined by the fo:characters that are in the content ofthe two formatting objects are aligned based on the script to whichthe glyph belongs. Since this example only has Latin glyphs, they arealigned to the "alphabetic" baseline.

An inner inline formatting object containing Latin characters aligned to an outer inline formatting object also containing Latin characters.   [D]

An inner inline formatting object containing Latin characters alignedto an outer inline formatting object also containing Latin characters.

In the next figure, the content of the inner inline formatting objectis in Gurmukhi, the script of the Punjabi language. The Gurmukhisyllables are read as, "guru". Rather than use Unicode values forthese characters, they are symbolized by placing the Latintransliteration in italic type. The structure of the example becomes:

<fo:inline>Apex <fo:inline>guru</fo:inline></fo:inline>

The only change from the previous example is that the glyphs of theGurmukhi script are aligned to the "hanging" baselineof the inner inline formatting object. The alignment of thatformatting object itself, with respect to the outer inlineformatting object, is unchanged.

An inner inline formatting object containing Gurmukhi characters aligned to an outer inline formatting object containing Latin characters.   [D]

An inner inline formatting object containing Gurmukhi charactersaligned to an outer inline formatting object containing Latincharacters.

In the next figure, fragments of the text of the previous examplesmake up the content of the outer inline formatting object.The inner inline formatting object has a change of font-size, however.The structure is:

<fo:inline>Apguru  <fo:inline font-size='.75em'>    Exji  </fo:inline></fo:inline>

In this example, the alignment of the inner inline formatting objectitself does not change, nor does the alignment of the smaller glyphsinside the inner formatting object. The Latin glyphs are stillaligned 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-tablein effect in the inner inline formatting object.

Inline alignment of glyphs with reduced font-size   [D]

The inner inline formatting object has a reduced font-size.

The next figure is equivalent to the previous example with theGurmukhi character replaced by ideographic characters.These are aligned to the "ideographic" baseline.

Inline alignment of glyphs with reduced font-size, continued   [D]

The previous figure re-done with ideographic glyphs instead ofGurmukhi glyphs. The em boxes are shown for the ideogramsto clarify the alignment of these glyphs.

To change the scaling of the lines of the baseline table, it isnecessary to use the "dominant-baseline" property on theinner inline formatting object. The value of "reset-size"causes the baseline-table font-size to be reset from the font-size ofthe formatting object on which the "dominant-baseline"property appears. The next figure shows the effect of this, using thestructure:

<fo:inline>Apguru  <fo:inline font-size='.75em'             dominant-baseline='reset-size'>     Exji  </fo:inline></fo:inline>

The alignment of the inner inline formatting object, with respect tothe outer inline formatting object, is stilldetermined by aligning the dominant baselines. But, the baseline-tableof the inner inline formatting object has been rescaled to thefont-size of the inner inline formatting object. Hence the smallerglyphs align with each other.

Inline alignment of glyphs with reduced font-size, continued   [D]

The baseline-table of the inner inline formatting object has beenre-sized to match the font-size of the inner inline formatting object.

But, what if it is more important that the small Gurmukhi glyphs alignwith the large Gurmukhi glyphs than having the Latin glyphs align.There are at least two ways to achieve this. The structure:

<fo:inline dominant-baseline='hanging'>Apguru  <fo:inline font-size='.75em'             dominant-baseline='reset-size'>     Exji  </fo:inline></fo:inline>

is illustrated in the next figure. The "hanging" baselinebecomes 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 theconnection of the blue baselines.

Inline alignment of glyphs with reduced font-size, continued   [D]

Changing the dominant baseline to the "hanging" baselinecauses the inner inline formatting object to be aligned on itsparent's "hanging" baseline.

It is also possible to achieve the effect of the above figure withoutchanging the dominant baseline. Instead it is sufficient to explicitlyspecify that the inner inline formatting object is aligned on its"hanging" baseline. This is done by:

<fo:inline>Apguru  <fo:inline font-size='.75em'             dominant-baseline='reset-size'             alignment-baseline='hanging'>     Exji  </fo:inline></fo:inline>

The only change this approach would make in the above figure is tocolor the "hanging" baseline red and keep the"alphabetic" baseline as the (blue) dominant baseline. Thisbaseline in the inner inline formatting object would not (as it doesnot in the above figure) align with the "alphabetic"baseline in the outer inline formatting object.

The third baseline alignment property is the"baseline-shift" property. Like the properties otherthan the "dominant-baseline" property, this property doesnot change the baseline-table or the baseline-table font-size. It doesshift the whole baseline table of the parent formatting object so thatwhen an inner inline formatting object is aligned to one of theparents baselines, the position of the inner inline formatting objectis shifted. This is illustrated in the next figure. The structurewhich creates this figure is:

<fo:inline>Ap  <fo:inline baseline-shift='super'>1ji</fo:inline></fo:inline>

Because the whole set of baseline-table staff lines are shifted to theposition of the superscript baseline: it does not matter to whichbaseline the glyphs in the superscript are aligned. The Europeannumber "1" is aligned to the "alphabetic" baselineand the Gurmukhi syllable "ji" is aligned to the"hanging" baseline.

Using a 'baseline-shift' for a superscript   [D]

Using a "baseline-shift" for a superscript(or a subscript).

It is more common for the font-size of the superscript text to besmaller than the font-size of the text to which it is appended.Consider:

<fo:inline>Ap  <fo:inline font-size='.75em'             baseline-shift='super'>    1ji  </fo:inline></fo:inline>

Because changing the font-size on a superscript (or subscript) iscommon, this is the one case where changing the font-size does causethe baseline-table font-size to be reset when the"dominant-baseline" property has its initial value. Afterthe rescaling, the default alignment to the dominant baselinepositions the inline formatting object for the superscript to thedominant baseline position in the shifted baseline-table of the parentformatting object.

Alignment of superscripts with reduces fonts   [D]

Reducing the font-size of the superscript automatically resets thebaseline-table size so that mixed languages in the superscript staymutually aligned.

The fourth alignment property is the "alignment-adjust"property. This property is primarily used for objects, such as somegraphics, that do not belong to a particular script and do not have apredefined alignment point. The "alignment-adjust"property allows the author to assign where, on the start-edgeof the object, thealignment point for that object lies.

7.14.1 "alignment-adjust"

XSL Definition:

Value:auto | baseline| before-edge| text-before-edge | middle | central| after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| <percentage> | <length>| inherit
Initial:auto
Inherited:no
Percentages:see prose
Media:visual

The "alignment-adjust" property allows more precise alignment ofareas generated by formatting objects,in particular for formatting objects,such as graphics, that do not have a baseline-tableor lack the desired baseline in their baseline-table. With the"alignment-adjust" property, the position of the baseline identifiedby the "alignment-baseline" can be explicitly determined.

Values for the property have the following meaning:

auto

For a glyph, the alignment-point is the intersection of thestart-edge of the allocation-rectangle of the glyph-area and theblock-progression-direction position of the alignment-point from thefont as specified in7.9.1 Fonts and Font Data.For other inline-areas, the alignment-point is at the intersection ofthe start-edge of the allocation-rectangle and the baseline identified bythe "alignment-baseline" property if this baseline exists in thebaseline-table for the dominant-baseline for the inline-area. If thebaseline-identifier does not exist in the baseline-table for the glyphor other inline-area, then the User Agent may either use heuristics todetermine where that missing baseline would be or may use thedominant-baseline as a fallback. For areas generated by anfo:external-graphic, or fo:instream-foreign-object, the alignmentpoint is at the intersection of the start-edge and after-edge of theallocation-rectangle of the area.

baseline

The alignment-point is at the intersection ofthe start-edge of the allocation-rectangle and thedominant-baseline of the area.

before-edge

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "before-edge"baseline of the area.

text-before-edge

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"text-before-edge" baseline of the area.

central

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"central" baseline of the area.

middle

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"middle" baseline of the area.

after-edge

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "after-edge" baseline ofthe area.

text-after-edge

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"text-after-edge" baseline of the area.

ideographic

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"ideographic" baseline of the area.

alphabetic

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"alphabetic" baseline of the area.

hanging

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"hanging" baseline of the area.

mathematical

The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the"mathematical" baseline of the area.

<percentage>

The computed value of the property is this percentage multiplied bythe area's computed "height" if the area is generated by anfo: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 theallocation-rectangle of the areabeing aligned. Its position along the start-edge relative to theintersection of the dominant-baseline and the start-edge is offset bythe computed value. The offset is opposite to theshift-direction ifthat value is positive and in theshift-direction if that value isnegative value). A value of "0%" makes the dominant-baseline thealignment point.

<length>

The alignment-point is on the start-edge of theallocation-rectangle of the area beingaligned. Its position along the start-edge relative to theintersection of the dominant-baseline and the start-edge is offset by<length> value. The offset is opposite to theshift-direction ifthat value is positive and in theshift-direction if that value isnegative. A value of "0cm" makes the dominant-baseline thealignment point.

Implementations must support at least one of the "alignment-adjust"values defined in this Recommendation.

7.14.2 "alignment-baseline"

XSL Definition:

Value:auto | baseline | before-edge| text-before-edge | middle | central | after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

This property specifies how an object is aligned with respect toits parent. That is, to which of the parent's baselines thealignment-point of this object is aligned.The alignment-adjust property specifies how the alignment pointis determined. It defaultsto the baseline with the same nameas the computed value of the alignment-baseline property.That is, theposition of "ideographic" alignment-point in theblock-progression-direction is the position of the"ideographic" baseline in the baseline-table of the object beingaligned.

Values have the following meanings:

auto

The computedvalue depends on the kind of object on which it is being used.For fo:character, the valueis 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.

baseline

The alignment-point of the object being aligned is aligned with thedominant-baseline of the parent area.

before-edge

The alignment-point of the object being aligned is aligned with the "before-edge"baseline of the parent area.

text-before-edge

The alignment-point of the object being aligned is aligned with the"text-before-edge" baseline of the parent area.

central

The alignment-point of the object being aligned is aligned with the"central" baseline of the parent area.

middle

The alignment-point of the object being aligned is aligned with the"middle" baseline of the parent area.

after-edge

The alignment-point of the object being aligned is aligned with the "after-edge" baseline ofthe parent area.

text-after-edge

The alignment-point of the object being aligned is aligned with the"text-after-edge" baseline of the parent area.

ideographic

The alignment-point of the object being aligned is aligned with the"ideographic" baseline of the parent area.

alphabetic

The alignment-point of the object being aligned is aligned with the"alphabetic" baseline of the parent area.

hanging

The alignment-point of the object being aligned is aligned with the"hanging" baseline of the parent area.

mathematical

The alignment-point of the object being aligned is aligned with the"mathematical" baseline of the parent area.

Implementations must support at least one of the "alignment-baseline"values defined in this Recommendation.

7.14.3 "baseline-shift"

XSL Definition:

Value:baseline | sub | super | <percentage> | <length>| inherit
Initial:baseline
Inherited:no
Percentages:refers to the "line-height" of the parent area
Media:visual

The "baseline-shift" property allows repositioning of thedominant-baseline relative to the dominant-baseline of the parentarea. The shifted object might be a subscript or superscript. Within theshifted object, the whole baseline-table is offset; not just a singlebaseline. The amount of the shift is determined from information fromthe parent area, the subscript or superscript offset from thenominal-font of the parent area, percent of the"line-height" of the parent area or an absolute value.

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-size"applicable to the formatting object on which the non-zero "baseline-shift"property is specified.

Values for the property have the following meaning:

baseline

There is no baseline shift; the dominant-baseline remains in its original position.

sub

The dominant-baseline is shifted to the default position forsubscripts. The offset to this positionis determined using the font data for the nominal font. Because in mostfonts the subscript position is normally given relative to the"alphabetic" baseline, the User Agent may compute the effective position for subscriptsfor superscripts when some other baseline is dominant. The suggestedcomputation is to subtract the difference between the position of thedominant baseline and the position of the "alphabetic" baseline from theposition of the subscript. The resulting offset is determined bymultiplying the effective subscript position by the dominantbaseline-table font-size. If there is no applicable font data theUser Agent may use heuristics to determine the offset.

super

The dominant-baseline is shifted to the default position forsuperscripts. The offset to this positionis determined using the font data for the nominal font. Because in mostfonts the superscript position is normally given relative to the"alphabetic" baseline, the User Agent may compute the effective positionfor superscripts when some other baseline is dominant. The suggestedcomputation is to subtract the difference between the position of thedominant baseline and the position of the "alphabetic" baseline from theposition of the superscript. The resulting offset is determined bymultiplying the effective superscript position by the dominantbaseline-table font-size. If there is no applicable font data theUser Agent may use heuristics to determine the offset.

<percentage>

The computed value of the property is this percentage multiplied bythe computed "line-height" of the parent area. The dominant-baselineis shifted in theshift-direction (positive value) or opposite to theshift-direction (negative value) of the parent area by the computedvalue. A value of "0%" is equivalent to "baseline".

<length>

The dominant-baseline is shifted in theshift-direction (positivevalue) or opposite to theshift-direction (negative value) of theparent area by the <length> value. A value of "0cm" is equivalentto "baseline".

Note:

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 percentagevalues refer to the "line-height" of the area being aligned. For"baseline-shift" the percentage values refer to the "line-height" ofthe parent. Similarly, it is the "sub" and "super" offsets of theparent that are used to align the shifted baseline rather than the"sub" or "super" offsets of the areas being positioned. To ensure aconsistent subscript or superscript position, it makes more sense to usethe parent as the reference rather than the subscript formatting object whichmay have a changed "line-height" due to "font-size" changes in thesubscript or superscript formatting object.

Using the "alignment-adjust" property is more suitable for positioningobjects, such as graphics, that have no internal textualstructure. Using the "baseline-shift" property is intended for subscriptsand superscripts where the positioned object may itself be a textualobject. The baseline-shift provides a way to define a specificbaseline offset other than the named offsets that are defined relativeto the dominant-baseline. In addition, having "baseline-shift" makesit easier for tool to generate the relevant properties; manyformatting programs already have a notion of baselineshift.

7.14.4 "display-align"

XSL Definition:

Value:auto | before | center | after| inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

This property specifies the alignment, in the block-progression-direction,of the areas that are the children of a reference-area.

Values for the property have the following meaning:

auto

If the "relative-align" property applies to this formatting objectthe "relative-align" property is used. If not, this value is treatedas if "before" had been specified.

before

The before-edge of the allocation-rectangle of the firstchild area is placed coincident with the before-edge of thecontent-rectangle of the reference-area.

center

The child areas are placed such that thedistancebetween the before-edge of the allocation-rectangle of thefirst child area and the before-edge of the content-rectangleof the reference-areais the same as the distancebetween the after-edge of the allocation-rectangle of thelast child area and the after-edge of the content-rectangleof the reference-area.

after

The after-edge of the allocation-rectangle of the lastchild area is placed coincident with the after-edge of thecontent-rectangle of the reference-area.

7.14.5 "dominant-baseline"

XSL Definition:

Value:auto | use-script | no-change | reset-size| ideographic | alphabetic | hanging | mathematical| central | middle | text-after-edge | text-before-edge| inherit
Initial:auto
Inherited:no (see prose)
Percentages:N/A
Media:visual

The "dominant-baseline" property is used to determine orre-determine a scaled-baseline-table. A scaled-baseline-table is acompound value with three components: a baseline-identifier for thedominant-baseline, a derived baseline-tableand a baseline-table font-size.Some values of the property re-determine all three values; other onlyre-establish the baseline-table font-size.Although this property is not inherited, components of thescaled-baseline-table propagate to child formatting objectsif the "auto" value is used on these.When the initial value,"auto", would give an undesired result, this property can be used toexplicitly set the desired scaled-baseline-table.

Note:

The derived baseline-table is constructed using a baseline-tablein the font that corresponds to the computed value of the "writing-mode".

Values for the property have the following meaning:

auto

If this property occurs on a block-level formatting object, thenthe computed value depends on the value of the "script"property. There are two cases. If the value of the "script" propertyis "auto", then, if the "writing-mode" is horizontal, then thebaseline-identifier for the dominant baseline is set to be "alphabetic",else if the "writing-mode" is vertical, then the baseline-identifierfor the dominant baseline is set to be "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 baseline-identifier for the dominant baseline.The mapping from script to baseline-identifier is taken from thenominal font. The derived baseline-table is constructed using thebaseline-table in the nominal font that corresponds to thebaseline-identifier for the dominant baseline.The baseline-table font-size is changed to the value of the"font-size" property on this formatting object.

Otherwise, if this property is not on a block-level formatting object,then the baseline-identifier for the dominant baseline, the derivedbaseline-table, and baseline-table font-size remainthe same as those of the parent formatting object. If the computed"baseline-shift" value actually shifts the baseline, then thebaseline-table font-size is set to the value of the"font-size" property on the formatting object on which the"dominant-baseline" property occurs, otherwise the baseline-tablefont-size remains the same as that of the parent formatting object. Ifthere is no parent formatting object, the derived baseline-tableis constructed as above for block-level formatting-objects.

use-script

The "script" property is used to select the baseline-identifier forthe dominant baseline.The mapping from script to baseline-identifier is taken from the nominal font.The derived baseline-table is constructed using thebaseline-table in the nominal font that corresponds to thebaseline-identifier for the dominant baseline.The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

no-change

The dominant-baseline, the baseline-table, and the baseline-tablefont-size remain the same as that of the parent formatting object.

reset-size

The dominant-baseline and the baseline-table remain the same, but thebaseline-table font-size is changed to the value of the "font-size"property on this formatting object. This re-scales the baseline-table for thecurrent "font-size".

ideographic

The baseline-identifier for the dominant-baseline is setto be "ideographic".The derived baseline-table is constructed using the "ideographic"baseline-table in the nominal font.The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

alphabetic

The baseline-identifier for the dominant-baseline is setto be "alphabetic".The derived baseline-table is constructed using the "alphabetic"baseline-table in the nominal font.The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

hanging

The baseline-identifier for the dominant-baseline is setto be "hanging".The derived baseline-table is constructed using the "hanging"baseline-table in the nominal font.The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

mathematical

The baseline-identifier for the dominant-baseline is setto be "mathematical".The derived baseline-table is constructed using the "mathematical"baseline-table in the nominal font.The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

central

The baseline-identifier for thedominant-baseline is set to be "central".The derived baseline-table is constructed from the defined baselinesin a baseline-table in the nominal font. That font baseline-table ischosen using the following priority order of baseline-table names:"ideographic", "alphabetic", "hanging", "mathematical".The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

middle

The baseline-identifier for the dominant-baseline is setto be "middle".The derived baseline-table is constructed from the defined baselinesin a baseline-table in the nominal font. That font baseline-table ischosen using the following priority order of baseline-table names:"alphabetic", "ideographic", "hanging", "mathematical".The baseline-table font-size is changed to the value of the "font-size"property on this formatting object.

text-after-edge

The baseline-identifier for the dominant-baseline is setto be "text-after-edge".The derived baseline-table is constructed from thedefined baselines in a baseline-table in the nominal font. The choice ofwhich font baseline-table to use from the baseline-tables in the nominalfont is implementation defined. The baseline-table font-size is changedto the value of the "font-size" property on this formatting object.

Note:

Using the following priority order of baseline-table names:"alphabetic", "ideographic", "hanging", "mathematical" is probably areasonable strategy for determining which font baseline-table to use.

text-before-edge

The baseline-identifier for the dominant-baseline is setto be "text-before-edge".The derived baseline-table is constructed from thedefined baselines in a baseline-table in the nominal font. The choice ofwhich baseline-table to use from the baseline-tables in the nominalfont is implementation defined.The baseline-table font-size is changed to thevalue of the "font-size" property on this formatting object.

Note:

Using the following priority order of baseline-table names:'alphabetic', 'ideographic', 'hanging', 'mathematical' is probably areasonable strategy for determining which font baseline-table to use.

If there is no baseline-table in the nominal font or if thebaseline-table lacks an entry for the desired baseline, then the UserAgent may use heuristics to determine the position of the desiredbaseline.

Implementations must support at least one of the "dominant-baseline"values defined in this Recommendation.

7.14.6 "relative-align"

XSL Definition:

Value:before | baseline| inherit
Initial:before
Inherited:yes
Percentages:N/A
Media:visual

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 andhas a value other than "auto" this property is ignored.

Values for the property have the following meaning:

before

For an fo:table-cell: for each row, the first child area ofall the cells that start in the row and that have this value is placedsuch that the before-edge of the content-rectangleis placed atthe same distance from the row grid. In addition, at least, oneof these first child areas of the cellshas to be placed with the before-edge of its allocation-rectanglecoincident with the before-edge of the content-rectangleof the table-cell.

For an fo:list-item the before-edge of the first area descendantgenerated by the fo:list-item-label is placed coincident with thebefore-edge of the area generated by the fo:list-item.Similarly the before-edge of the firstarea descendant generated by the fo:list-item-body is placed coincidentwith the before-edge of the area generated by the fo:list-item.

baseline

For an fo:table-cell: for each row, the first child area ofall the cells that start in the row and that have this value is placedsuch that the dominant-baseline, as specified on the fo:table-row,of the first line is placed atthe same distance from the row grid. In addition, at least, oneof these first child areas of the cellshas to be placed with the before-edge of its allocation-rectanglecoincident with the before-edge of the content-rectangleof the table-cell.

Note:

That is, for all applicable cells the baseline of all the firstlines are all aligned and placed the minimum distance down in theblock-progression-direction. It should be noted that the start-edgesof the content-rectangles of the cells need not align.

For an fo:list-item the distance between the baseline ofthe first line-area of the first area descendant generated by thefo:list-item-label is the same as the distance betweenthe baseline of thefirst line-area of the first area descendant generated by thefo:list-item-body. In addition, at least, one of these firstarea descendants has to be placed such that the before-edge of itsallocation-rectangle is coincident with the before-edge of thecontent-rectangle of the list-item.

7.15 Area Dimension Properties

7.15.1 "allowed-height-scale"

XSL Definition:

Value:[ any | <percentage> ]* | inherit
Initial:any
Inherited:yes
Percentages:intrinsic height
Media:visual

A sequence of tokens, each specifyingan allowed scale-factor value.Tokens have the following meanings:

any

No constraint on the scale-factor.

<percentage>

Specifies a constraint on the scale-factor to match thespecified value.

Specifies a list of constraints on the scale-factor values thatmay be used when scaling a graphic in the height direction.The list is unordered, except that an "any" value is consideredlast and is only used if the scaling constraints cannot be satisfiedusing any of the other specified values.

Note:

It is recommended to include "any" inthe list for applications where scrolling is not desired oravailable.

7.15.2 "allowed-width-scale"

XSL Definition:

Value:[ any | <percentage> ]* | inherit
Initial:any
Inherited:yes
Percentages:intrinsic width
Media:visual

A sequence of tokens, each specifyingan allowed scale-factor value.Tokens have the following meanings:

any

No constraint on the scale-factor.

<percentage>

Specifies a constraint on the scale-factor to match thespecified value.

Specifies a list of constraints on the scale-factor values thatmay be used when scaling a graphic in the width direction.The list is unordered, except that an "any" value is consideredlast and is only used if the scaling constraints cannot be satisfiedusing any of the other specified values.

Note:

It is recommended to include "any" inthe list for applications where scrolling is not desired oravailable.

7.15.3 "block-progression-dimension"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:auto | <length> | <percentage> | <length-range>| inherit
Initial:auto
Inherited:no
Percentages:see prose
Media:visual

This property specifies the block-progression-dimensionof the content-rectanglefor each area generated by this formatting object.The usermay specify an explicit size (<length> or <percentage>)or a <length-range>, allowing the size to be adjusted by the formatter.

This property does not apply when the "line-height" propertyapplies to the same dimension of theareas generated by this formatting object.

Values have the following meanings:

auto

No constraint is imposed by this property.The block-progression-dimension is determined by the formattertaking all other constraints into account.

Specifying block-progression-dimension="auto" will set:

  • block-progression-dimension.minimum="auto"

  • block-progression-dimension.optimum="auto"

  • block-progression-dimension.maximum="auto"

<length>

Specifies a fixed block-progression-dimension.

Specifying block-progression-dimension=<length> will set:

  • block-progression-dimension.minimum=<length>

  • block-progression-dimension.optimum=<length>

  • block-progression-dimension.maximum=<length>

<percentage>

Specifies a percentage block-progression-dimension. Thepercentage is calculated with respect to the corresponding dimensionof the closest area ancestor that was generated by a block-levelformatting object.If that dimensionis not specified explicitly (i.e., it dependson content's block-progression-dimension), the value is interpretedas "auto".

Specifying block-progression-dimension=<percentage> willset:

  • block-progression-dimension.minimum=<percentage>

  • block-progression-dimension.optimum=<percentage>

  • block-progression-dimension.maximum=<percentage>

<length-range>

Specifies the dimension as a length-range, consistingof:

  • block-progression-dimension.optimum

    This is the preferred dimension of the area created;if minimum andmaximum are identical, the area is of a fixed dimension. If they are, respectively,smaller and larger than optimum, then the area may be adjusted indimension within that range.

    A value of "auto" may be specified for optimum, indicating thatthere is no preferred dimension, but that the intrinsic or resolved dimensionof the area should be used. If minimum and/or maximum are not alsoauto, then the dimension shall be constrained between those limits.

  • block-progression-dimension.minimum

  • block-progression-dimension.maximum

    A value of "auto" may be specified for block-progression-dimension.maximum.This indicates that there is no absolute maximum limit, and theobject may be sized to its intrinsic size.

Negative values for block-progression-dimension.minimum, block-progression-dimension.optimum,and block-progression-dimension.maximum are invalid and are treatedas if "0pt" had been specified.

If the value of block-progression-dimension.optimum is "auto" andthe computed value of block-progression-dimension.minimum is greaterthan the computed value of block-progression-dimension.maximumthe block-progression-dimension.minimum is treated as if the value ofblock-progression-dimension.maximum had been specified.

7.15.4 "content-height"

XSL Definition:

Value:auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inherit
Initial:auto
Inherited:no
Percentages:intrinsic height
Media:visual

Values have the following meanings:

auto

The content-height should be the intrinsic content-height.

scale-to-fit

The largest scaling-factor permitted will be applied tothe content so that the scaled content-height is less than or equalto the height of the viewport.

scale-down-to-fit

If the intrinsic content-height is less than or equal tothe height of the viewport the content-height should be theintrinsic content-height.Otherwise the largest scaling-factor permitted will be applied tothe content so that the scaled content-height is less than or equalto the height of the viewport.

scale-up-to-fit

If the intrinsic content-height is greater than or equal tothe height of the viewport the content-height should be theintrinsic content-height.Otherwise the largest scaling-factor permitted will be applied tothe content so that the scaled content-height is less than or equalto the height of the viewport.

<length>

An absolute size for the content-height.This value implies a certain scaling factor to be applied onto thecontent.

<percentage>

A percentage representing a scaling factor forthe content-height.

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 theintrinsic height.

7.15.5 "content-width"

XSL Definition:

Value:auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inherit
Initial:auto
Inherited:no
Percentages:intrinsic width
Media:visual

Values have the following meanings:

auto

The content-width should be the intrinsic content-width.

scale-to-fit

The largest scaling-factor permitted will be applied tothe content so that the scaled content-width is less than or equalto the width of the viewport.

scale-down-to-fit

If the intrinsic content-width is less than or equal tothe width of the viewport the content-width should be theintrinsic content-width.Otherwise the largest scaling-factor permitted will be applied tothe content so that the scaled content-width is less than or equalto the width of the viewport.

scale-up-to-fit

If the intrinsic content-width is greater than or equal tothe width of the viewport the content-width should be theintrinsic content-width.Otherwise the largest scaling-factor permitted will be applied tothe content so that the scaled content-width is less than or equalto the width of the viewport.

<length>

An absolute size for the content-width.This value implies a certain scaling factor to be applied onto thecontent.

<percentage>

A percentage representing a scaling factor forthe content-width.

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.

7.15.6 "height"

CSS2 Definition:

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:see prose
Media:visual

CSS2 Reference:"height" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-height

This property specifies the content height of boxes generatedby block-level and replaced elements.

This property does not apply to non-replaced inline-level elements.The height of a non-replaced inline element's boxes is given bythe element's (possibly inherited) 'line-height' value.

Values have the following meanings:

auto

The height depends on the values of other properties.

<length>

Specifies a fixed height.

<percentage>

Specifies a percentage height. The percentage is calculatedwith 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".

Negative values for 'height' are illegal.

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

For a discussion of the "height" property in tables see:http://www.w3.org/TR/REC-CSS2/tables.html

7.15.7 "inline-progression-dimension"

Writing-mode Relative Equivalent of a CSS2 Property.

Value:auto | <length> | <percentage> | <length-range>| inherit
Initial:auto
Inherited:no
Percentages:see prose
Media:visual

This property specifies the inline-progression-dimensionof the content-rectanglefor each area generated by this formatting object.The usermay specify an explicit size (<length> or <percentage>)or a <length-range>, allowing the size to be adjusted by the formatter.

This property does not apply when the "line-height" propertyapplies to the same dimension of theareas generated by this formatting object.

Values have the following meanings:

auto

No constraint is imposed by this property.The inline-progression-dimension is determined by the formattertaking all other constraints into account.

Specifying inline-progression-dimension=auto will set:

  • inline-progression-dimension.minimum=auto

  • inline-progression-dimension.optimum=auto

  • inline-progression-dimension.maximum=auto

<length>

Specifies a fixed inline-progression-dimension.

Specifying inline-progression-dimension=<length> will set:

  • inline-progression-dimension.minimum=<length>

  • inline-progression-dimension.optimum=<length>

  • inline-progression-dimension.maximum=<length>

<percentage>

Specifies a percentage inline-progression-dimension. Thepercentage is calculated with respect to the corresponding dimensionof the closest area ancestor that was generated by a block-levelformatting object.If that dimensionis not specified explicitly (i.e., it dependson content's inline-progression-dimension), the value is interpretedas "auto".

Specifying inline-progression-dimension=<percentage> willset:

  • inline-progression-dimension.minimum=<percentage>

  • inline-progression-dimension.optimum=<percentage>

  • inline-progression-dimension.maximum=<percentage>

<length-range>

Specifies the dimension as a length-range, consistingof:

  • inline-progression-dimension.optimum

    This is the preferred dimension of the area created, if minimum andmaximum are identical, the area is of a fixed dimension. If they are, respectively,smaller and larger than optimum, then the area may be adjusted indimension within that range.

    A value of "auto" may be specified for optimum, indicating thatthere is no preferred dimension, but that the intrinsic or resolved dimensionof the area should be used. If minimum and/or maximum are not alsoauto, then the dimension shall be constrained between those limits.

  • inline-progression-dimension.minimum

  • inline-progression-dimension.maximum

    A value of "auto" may be specified for inline-progression-dimension.maximum.This indicates that there is no absolute maximum limit, and theobject may be sized to its intrinsic size.

Negative values for inline-progression-dimension.minimum, inline-progression-dimension.optimum,and inline-progression-dimension.maximum are invalid and are treatedas if "0pt" had been specified.

7.15.8 "max-height"

CSS2 Definition:

Value:<length> | <percentage> | none | inherit
Initial:none
Inherited:no
Percentages:refer to height of containing block
Media:visual

CSS2 Reference:"max-height" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-height

These two properties ["max-height" and "min-height"]allow authors to constrain box heights toa certain range. Values have the following meanings:

none

(Only on "max-height") No limit on the height of the box.

<length>

Specifies a fixed maximum computed height.

<percentage>

Specifies a percentage for determining the computed value.The percentage is calculated with respect to the height of the generatedbox's containing block. If the height of the containing block isnot specified explicitly (i.e., it depends on content height), thepercentage value is interpreted like "none".

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

7.15.9 "max-width"

CSS2 Definition:

Value:<length> | <percentage> | none | inherit
Initial:none
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"max-width" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-max-width

These two properties ["max-width" and "min-width"]allow authors to constrain box widths toa certain range. Values have the following meanings:

none

(Only on "max-width") No limit on the width of the box.

<length>

Specifies a fixed maximum computed width.

<percentage>

Specifies a percentage for determining the computed value.The percentage is calculated with respect to the width of the generatedbox's containing block.

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

7.15.10 "min-height"

CSS2 Definition:

Value:<length> | <percentage> | inherit
Initial:0pt
Inherited:no
Percentages:refer to height of containing block
Media:visual

CSS2 Reference:"min-height" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-height

These two properties ["max-height" and "min-height"]allow authors to constrain box heights toa certain range. Values have the following meanings:

<length>

Specifies a fixed minimum computed height.

<percentage>

Specifies a percentage for determining the computed value.The percentage is calculated with respect to the height of the generatedbox's containing block. If the height of the containing block isnot specified explicitly (i.e., it depends on content height), thepercentage value is interpreted like "0pt".

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

7.15.11 "min-width"

CSS2 Definition:

Value:<length> | <percentage> | inherit
Initial:depends on UA
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"min-width" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-min-width

These two properties ["max-width" and "min-width"]allow authors to constrain box widths toa certain range. Values have the following meanings:

<length>

Specifies a fixed minimum computed width.

<percentage>

Specifies a percentage for determining the computed value.The percentage is calculated with respect to the width of the generatedbox's containing block.

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

7.15.12 "scaling"

XSL Definition:

Value:uniform | non-uniform | inherit
Initial:uniform
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

uniform

Scaling should preserve the aspect ratio.

non-uniform

Scaling need not preserve the aspect ratio.

Specifies whether scaling needs to preserve theintrinsic aspect ratio.

7.15.13 "scaling-method"

XSL Definition:

Value:auto | integer-pixels | resample-any-method | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

The User Agent is free to choose either resampling,integer scaling, or any other scaling method.

integer-pixels

The User Agent should scale the imagesuch that each pixel in the original image is scaledto the nearest integer number of device-pixels thatyields an image less-then-or-equal-to the image size derivedfrom the content-height, content-width, and scaling properties.

resample-any-method

The User Agent should resample the suppliedimage to provide an image that fills the size derivedfrom the content-height, content-width, and scaling properties.The user agent may use any sampling method.

This property is used to indicate a preference in the scaling/sizingtradeoff to be used when formatting bitmapped graphics.

Note:

This is defined as a preference to allow the user agent theflexibility to adapt to device limitations and to accommodateover-constrained situations involving min/max dimensions andscale factors.

7.15.14 "width"

CSS2 Definition:

Value:<length> | <percentage> | auto | inherit
Initial:auto
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"width" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-width

This property specifies the content width of boxes generatedby block-level and replaced elements.

This property does not apply to non-replaced inline-level elements.The width of a non-replaced inline element's boxes is that of therendered content within them (before any relative offset of children).Recall that inline boxes flow into line boxes. The width of line boxesis given by their containing block, but may be shorted by thepresence of floats.

The width of a replaced element's box is intrinsic and may bescaled by the user agent if the value of this property is differentthan 'auto'.

Values have the following meanings:

auto

The width depends on the values of other properties.

<length>

Specifies a fixed width.

<percentage>

Specifies a percentage width. The percentage is calculatedwith respect to the width of the generated box's containing block.

Negative values for "width" are illegal.

XSL modifications to the CSS definition:

In XSL, this property is mapped to either "inline-progression-dimension"or "block-progression-dimension", based on the applicable valuesof the "writing-mode" and "reference-orientation" properties.Details on the mapping are given in5 Property Refinement / Resolution.

7.16 Block and Line-related Properties

7.16.1 "hyphenation-keep"

XSL Definition:

Value:auto | column | page | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

auto

No restriction applies. The word maybe hyphenated at the end of any region.

column

Both parts of a hyphenated word shalllie within a single column.

page

Both parts of a hyphenated word shalllie within a single page.

Controls whether hyphenation can beperformed on the last line that fits in a given reference-area.

7.16.2 "hyphenation-ladder-count"

XSL Definition:

Value:no-limit | <number> | inherit
Initial:no-limit
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

no-limit

Any number of successive lines maybe hyphenated.

<number>

An integer greater than or equal to 1.

If a zero, negative, or non-integer value is provided, the value willbe rounded to the nearest integer value greater than or equal to 1.

Specifies a limit on the number of successive hyphenatedline-areas the formatter may generate in ablock-area.

7.16.3 "last-line-end-indent"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:0pt
Inherited:yes
Percentages:refer to inline-progression-dimension of closest ancestor block-area that is not a line-area
Media:visual

Values have the following meanings:

<length>

The "last-line-end-indent" is specified as a length.

<percentage>

The "last-line-end-indent" is specified as a percentage ofthe inline-progression-dimension of the closest ancestor block-area.

Specifies an indent to be applied to thelast line-area childof the last block-area generated and returned by the formattingobject, and toany line-area generated by the formatting object whosefollowing sibling is a block-area that is not a line-area.It isadded to the block's end-edge. Positive values indent theedge, negative values outdent the edge.

7.16.4 "line-height"

CSS2 Definition:

Value:normal | <length> | <number> | <percentage> | <space>| inherit
Initial:normal
Inherited:yes
Percentages:refer to the font size of the element itself
Media:visual

CSS2 Reference:"line-height" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-line-height

Values have the following meanings:

normal

Tells user agents to set the computed value to a "reasonable"value based on the font size of the element. The value has the samemeaning as <number>. We recommend a computed value for "normal"between 1.0 to 1.2.

<length>

The box height is set to this length. Negative values areillegal.

<number>

The computed value of the property is this number multipliedby the element's font size. Negative values are illegal. However,the number, not the computed value, is inherited.

<percentage>

The computed value of the property is this percentage multipliedby the element's computed font size. Negative values are illegal.

If the property is set on a block-level element whose contentis composed of inline-level elements, it specifies the minimal heightof each generated inline box.

If the property is set on an inline-level element, it specifiesthe exact height of each box generated by the element. (Except forinline replaced elements, where the height of the box is given bythe "height" property.)

When an element contains text that is rendered in more than onefont, user agents should determine the "line-height" value accordingto the largest font size.

Generally, when there is only one value of "line-height" forall inline boxes in a paragraph (and no tall images), the abovewill ensure that baselines of successive lines are exactly "line-height"apart. This is important when columns of text in different fontshave to be aligned, for example in a table.

Note that replaced elements have a "font-size" and a "line-height"property, even if they are not used directly to determine the heightof 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.

XSL modifications to the CSS definition:

In XSL the "line-height" property is used in determining thehalf-leading trait.

XSL adds the following value with the following meaning:

<space>

Specifies the minimum, optimum, and maximum values,the conditionality, and precedence of the "line-height" thatis used in determining thehalf-leading.

Negative values for line-height.minimum, line-height.optimum,and line-height.maximum are invalid and will be interpreted as 0pt.

The line-height.conditionality settingcan be used to control the half-leading above the first line orafter the last line that is placed in a reference-area.

The line-height.precedence setting can be used to control themerging of the half-leading with other spaces.

If line-height is specified using <length>, <percentage>,or <number>, the formatter shall convert the single value to aspace-specifier with the subfields interpreted as follows:

  • line-height.minimum: the resultant computed value(as a length) of the <length>, <percentage>, or <number>.

  • line-height.optimum: the resultant computed value (as alength) of the <length>, <percentage>, or <number>.

  • line-height.maximum: the resultant computed value (as alength) of the <length>, <percentage>, or <number>.

  • line-height.precedence: force.

  • line-height.conditionality: retain

7.16.5 "line-height-shift-adjustment"

XSL Definition:

Value:consider-shifts | disregard-shifts | inherit
Initial:consider-shifts
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

consider-shifts

In determining the line-height, includethe adjusted top-edge and bottom-edge of any characters that havea baseline-shift.

disregard-shifts

In determining the line-height, includethe unshifted top-edge and bottom-edge of any characters that havea baseline-shift.

This property is used to control whetherthe line-height is adjusted for content that has a baseline-shift.

Note:

This property can be used to prevent superscript and subscriptcharacters from disrupting the line-spacing.

7.16.6 "line-stacking-strategy"

XSL Definition:

Value:line-height | font-height | max-height | inherit
Initial:max-height
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

line-height

Uses the per-inline-height-rectangle as described in4.5 Line-areas.

Note:

This matches CSS's line-height and positioningstrategy.

font-height

Uses the nominal-requested-line-rectangle as described in4.5 Line-areas.

max-height

Uses the maximal-line-rectangle as described in4.5 Line-areas.

Selects the strategy for positioningadjacent lines, relative to each other.

Implementations must support at least the"max-height" and "font-height" values defined in this Recommendation,and may treat "line-height" as if "max-height" had been specified.

7.16.7 "linefeed-treatment"

XSL Definition:

Value:ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit
Initial:treat-as-space
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

ignore

Specifies that any character flow object whose Unicodecode point is U+000A shall be discarded during the refinement process.

preserve

Specifies no special action.

treat-as-space

Specifies that any character flow object whose Unicode code pointis U+000A (linefeed) shall be converted during the refinementprocess into a character flow object whose Unicode code point isU+0020 (space).

treat-as-zero-width-space

Specifies that any character flow object whose Unicode code pointis U+000A shall be converted during the refinement process into acharacter flow object whose Unicode code point is U+200B (zerowidth space).

Note:

The Unicode Standard recommends thatthe zero width space is considered a valid line-break point and thatif two characters with a zero width space in between are placedon the same line they are placed with no space between them and thatif they are placed on two lines no additional glyph area, such as for ahyphen, is created at the line-break.

The "linefeed-treatment" property specifies the treatment of linefeeds(character flow objects whose Unicode code point is U+000A)during the refinement process.

7.16.8 "white-space-treatment"

XSL Definition:

Value:ignore | preserve | ignore-if-before-linefeed |ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit
Initial:ignore-if-surrounding-linefeed
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

ignore

Any glyph-area whose Unicode character is classified as white space inXML, except for U+000A, shall be deleted during line-building andinline-building (see4.7.2 Line-buildingand4.7.3 Inline-building).

preserve

Any glyph-area whose Unicode character is classified as white space inXML shall not be deleted during line-building and inline-building.

ignore-if-before-linefeed

Any glyph-area with a suppress-at-line-break value of 'suppress' shallbe deleted during line-building and inline-building if it would be the lastglyph-area descendant of a line-area.

ignore-if-after-linefeed

Any glyph-area with a suppress-at-line-break value of 'suppress' shallbe deleted during line-building and inline-building if it would be thefirst glyph-area descendant of a line-area.

ignore-if-surrounding-linefeed

Any glyph-area with a suppress-at-line-break value of 'suppress' shallbe deleted during line-building and inline-building if it would be thefirst or last glyph-area descendant of a line-area.

The "white-space-treatment" property specifies the treatment duringline-building and inline-building of glyph areas, except for linefeeds,that are classified as white space in XML. This includesU+0020 (space) and other white space characters but excludes U+000A(linefeed). Linefeed treatment is determined by the"linefeed-treatment" property.

7.16.9 "text-align"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x77

Value:start | center | end | justify | inside | outside| left | right | <string> | inherit
Initial:start
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"text-align" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-align

This property describes how inline content of a block is aligned.Values have the following meanings:

left
center
right
justify

Left, right, center, and justify text, respectively.

<string>

Specifies a string on which cells in a table column willalign (see the section on horizontal alignment in a column for detailsand an example). This value applies only to table cells. If seton other elements, it will be treated as 'left' or 'right', dependingon whether 'direction' is 'ltr', or 'rtl', respectively.

A block of text is a stack of line boxes. In the case of'left', 'right' and 'center', this property specifies how the inlineboxes within each line box align with respect to the line box'sleft and right sides; alignment is not with respect to the viewport.In the case of 'justify', the UA may stretch the inline boxes inaddition to adjusting their positions. (See also 'letter-spacing'and 'word-spacing'.)

Note:

The actual justification algorithm used is user agent and writtenlanguage dependent.

Conforming user agents may interpret the value 'justify' as 'left'or 'right', depending on whether the element's default writing directionis left-to-right or right-to-left, respectively.

XSL modifications to the CSS definition:

Values have the following meanings:

start

Specifies that the content is to be aligned on the start-edgein the inline-progression-direction.

center

Specifies that the content is tobe centered in the inline-progression-direction.

end

Specifies that the content is to be aligned on the end-edgein the inline-progression-direction.

justify

Specifies that the contents is tobe expanded to fill the available width in the inline-progression-direction.

inside

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.

outside

If the page binding edge is on the start-edge,the alignment will be end. If the binding is the end-edge, thealignment will be start. If neither, use end alignment.

left

Interpreted as "text-align='start'".

right

Interpreted as "text-align='end'".

<string>

Specifies a string on which content of cells in a table column willalign (see the section, in the CSS2 Recommendation, on horizontalalignment in a column for detailsand an example). This value applies only if the formatting object isa descendant of atable cell. If set on other formatting objects,it will be treated as "start".

This property describes how inline content of a block isaligned. For fo:external-graphic, fo:instream-foreign-object, andfo:table-and-caption it specifies the alignment of other areas asdescribed in the constraint section for these formatting objects.

7.16.10 "text-align-last"

XSL Definition:

Value:relative | start | center | end | justify | inside| outside | left | right | inherit
Initial:relative
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

relative

If text-align is justify, then the alignment of the lastline, and of any line ending in U+000A,will be start. If text-align is not justify,text-align-last will use the value of text-align.

start

Specifies that the content is to be aligned on the start-edgein the inline-progression-direction.

center

Specifies that the contents is tobe centered in the inline-progression-direction.

end

Specifies that the content is to be aligned on the end-edgein the inline-progression-direction.

justify

Specifies that the contents is tobe expanded to fill the available width in the inline-progression-direction.

inside

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.

outside

If the page binding edge is on the start-edge,the alignment will be end. If the binding is the end-edge thealignment will be start. If neither, use end alignment.

left

Interpreted as "text-align-last='start'".

right

Interpreted as "text-align-last='end'".

Specifies the alignment of the lastline-area child of the last block-area generated and returnedby the formatting object, and toany line-area generated by the formatting object whosefollowing sibling is a block-area that is not a line-area,and any lines in the block ending in U+000A.

7.16.11 "text-indent"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x76

Value:<length> | <percentage> | inherit
Initial:0pt
Inherited:yes
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"text-indent" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-indent

This property specifies the indentation of the first line oftext in a block. More precisely, it specifies the indentation ofthe first box that flows into the block's first line box. The box isindented with respect to the left (or right, for right-to-left layout)edge of the line box. User agents should render this indentationas blank space.

Values have the following meanings:

<length>

The indentation is a fixed length.

<percentage>

The indentation is a percentage of the containing blockwidth

The value of 'text-indent' may be negative, but there maybe implementation-specific limits.If the value of 'text-indent'is negative, the value of 'overflow' will affect whether thetext is visible.

XSL modifications to the CSS definition:

The "text-indent" property specifies an adjustment to thestart-indent of thefirst childL of the first block-areagenerated and returned by the formatting object,providedL is a line-area.

A negative value specifies a hanging indent (outdent) on thefirst line.

7.16.12 "white-space-collapse"

XSL Definition:

Value:false | true | inherit
Initial:true
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

false

Specifies no special action.

true

Specifies, for any character flow object suchthat:

  • its characteris classified as white space in XML,and

  • it isnot,however, a U+000A (linefeed) character,and

  • the immediately preceding flow object is a character flowobject with a characterclassified as white space in XMLor the immediatelyfollowing flow object is a linefeed,

that flow object shall not generate an area.

The "white-space-collapse" property specifies the treatment ofconsecutive white space duringarea tree construction.The overall effect of handling the linefeed-treatment property duringrefinement and the white-space-collapse and white-space-treatmentproperties during area tree generation is as follows:after refinement, where some white spacecharacters may have been discarded or turned into spacecharacters, all remaining runs of two or more consecutive spacesare replaced by a single space, then any remaining spaceimmediately adjacent to a remaining linefeed is also discarded.

An implementation is free to use any algorithm to achieve anequivalent effect.

7.16.13 "wrap-option"

XSL Definition:

Value:no-wrap | wrap | inherit
Initial:wrap
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

no-wrap

No line-wrapping will be performed.

In the case when lines are longer than the available width ofthe content-rectangle, the overflow will be treated in accordancewith the "overflow" property specified on the reference-area.

wrap

Line-breaking will occur if the lineoverflows the available block width. No special markers or othertreatment will occur.

Specifies how line-wrapping (line-breaking)of the content of the formatting object is to behandled.

Implementations must support the "no-wrap" value, as defined inthis Recommendation, when the value of "linefeed-treatment" is"preserve".

7.17 Character Properties

7.17.1 "character"

XSL Definition:

Value:<character>
Initial:N/A, value is required
Inherited:no, a value is required
Percentages:N/A
Media:visual

Values have the following meanings:

<character>

Specifies the Unicode character to be presented.

7.17.2 "letter-spacing"

CSS2 Definition:

Value:normal | <length> | <space> | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"letter-spacing" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-letter-spacing

This property specifies spacing behavior between textcharacters. Values have the following meanings:

normal

The spacing is the normal spacing for the current font.This value allows the user agent to alter the space between charactersin order to justify text.

<length>

This value indicates inter-character space in additionto the default space between characters. Values may be negative,but there may be implementation-specific limits. User agents maynot further increase or decrease the inter-character space in orderto justify text.

Character-spacing algorithms are user agentdependent.Character spacing may also be influenced by justification (see the"text-align" property).

When the resultant space between two characters is not the sameas the default space, user agents should not use ligatures.

Conforming user agents may consider the value of the 'letter-spacing'property to be 'normal'.

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<space>

This allows the user to specify a range of adjustmentsin addition to the default space between characters.

The minimumand maximum values specify the limits of the adjustment.

Default space between characters is defined to be 0pt, i.e.,glyph-areas stacked with no extra space between theallocation-rectangles of the glyph-areas.Theinline-progression-dimensionof the glyph-area is obtained by formatting the fo:character.

For an fo:character that in the Unicode database isclassified as "Alphabetic", unless thetreat-as-word-space trait has the value "true",thespace-start andspace-end traits are each set to a valueas follows:

  • 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 impliesthat the limits are User Agent specific.

  • For a <length>:.optimum = <length> / 2,.maximum = .optimum,.minimum = .optimum,.precedence = force, and.conditionality = discard.

  • For a <space>:a value that is half the value of the "letter-spacing"propertyfor the numeric components and the value for the .precedence and.conditionality components.The initial values for .precedence is "force" andfor .conditionality "discard".

The CSS statement that "Conforming user agents may consider thevalue of the 'letter-spacing' property to be 'normal'." does not applyin XSL, if the User Agent implements the "Extended" property set.

Note:

If it is desired that the letter space combine with other spaces that haveless than forcing precedence, then the value of the "letter-space" shouldbe specified as a <space> with precedence less than force whichimplies that space combines according to the space resolutionrules described in4.3 Spaces and Conditionality.

The algorithm for resolving the adjusted values between word spacingand letter spacing is User Agent dependent.

7.17.3 "suppress-at-line-break"

XSL Definition:

Value:auto | suppress | retain | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

This property applies only to fo:characterand determines whether the character'srepresentation shall be suppressed when it would occur adjacent to aline break.Multiple characters may be so suppressed.

This property has the following values:

auto

The value of this property is determined by the Unicode value of theobject's character property. The character at code point U+0020 istreated as if 'suppress' had been specified. All other characters aretreated as if 'retain' had been specified.

This value does not automatically suppress the presentation of thenon-breaking-space (U+00A0), the fixed spaces (U+2000 through U+200A),or the ideographic-space (U+3000).

suppress

The glyph area generated by the fo:character is eligible to besuppressed at the start or end of a line-area depending on thewhite-space-treatement property. (q.v.)

retain

The glyph area generated by the fo:character shall be placed in thearea tree whether or not it first or last in a line-area.

7.17.4 "text-decoration"

CSS2 Definition:

Value:none | [ [ underline | no-underline] || [ overline | no-overline ]|| [ line-through | no-line-through ] || [ blink | no-blink ] ]| inherit
Initial:none
Inherited:no, but see prose
Percentages:N/A
Media:visual

CSS2 Reference:"text-decoration" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-decoration

This property describes decorations that are added tothe text of an element. If the property is specified for a block-levelelement, it affects all inline-level descendants of the element. Ifit is specified for (or affects) an inline-level element, it affectsall boxes generated by the element. If the element has no contentor no text content (e.g., the IMG element in HTML), user agentsmust ignore this property.

Values have the following meanings:

none

Produces no text decoration.

underline

Each line of text is underlined.

overline

Each line of text has a line above it.

line-through

Each line of text has a line through the middle

blink

Text blinks (alternates between visible and invisible).Conforming user agents are not required to support this value.

The color(s) required for the text decoration should bederived from the "color" property value.

This property is not inherited, but descendant boxes of a blockbox should be formatted with the same decoration (e.g., they shouldall be underlined). The color of decorations should remain the sameeven if descendant elements have different "color" values.

XSL modifications to the CSS definition:

In XSL, the specification of the "underline" value is expandedas follows:The placement of the underline depends on whether the"inline-progression-direction" is oriented horizontally or verticallyand on the "language" property.For horizontal text the underline is placed below the text.For vertical text the placement depends on the value of the"language" property: the underline is placed on or close to either thebefore-edge or the after-edge of the underlined text.

Note:

This specification does not specify the dependence ofthe placement of the vertical underline on the "language".It is possible for two conforming XSL processors to placethe underline on different sides of the vertical text.For Japanese, the placement of the underline istypically close to the before-edge of the underlined text. For otherlanguages, such as Chinese, the typical placement is close to theafter-edge of the underlined text.Implementers should not make any assumptions about how underlinesare placed in particular languages and should properly researchthe languages that they wish to support.

Note:

Some fonts have an attribute that suggests where to place theunderline for text in that font. That value is likely to apply onlywhen the "inline-progression-direction" is oriented horizontally.

XSL adds the following values with the following meanings:

no-underline

Turns off underlining, if any.

no-overline

Turns off overlining, if any.

no-line-through

Turns off line-through, if any.

no-blink

Turns off blinking, if any.

7.17.5 "text-shadow"

CSS2 Definition:

Value:none | [<color> || <length> <length> <length>?,]* [<color> || <length> <length> <length>?] | inherit
Initial:none
Inherited:no, see prose
Percentages:N/A
Media:visual

CSS2 Reference:"text-shadow" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-shadow

This property accepts a comma-separated list of shadoweffects to be applied to the text of the element. The shadow effectsare applied in the order specified and may thus overlay each other,but they will never overlay the text itself. Shadow effects do notalter the size of a box, but may extend beyond its boundaries. Thestack level of the shadow effects is the same as for the elementitself.

Each shadow effect must specify a shadow offset and may optionallyspecify a blur radius and a shadow color.

A shadow offset is specified with two "length" values that indicatethe distance from the text. The first length value specifies thehorizontal distance to the right of the text. A negative horizontallength value places the shadow to the left of the text. The second lengthvalue specifies the vertical distance below the text. A negativevertical length value places the shadow above the text.

A blur radius may optionally be specified after the shadow offset.The blur radius is a length value that indicates the boundariesof the blur effect. The exact algorithm for computing the blur effectis not specified.

A color value may optionally be specified before or after thelength values of the shadow effect. The color value will be usedas the basis for the shadow effect. If no color is specified, thevalue of the "color" property will be used instead.

XSL modifications to the CSS definition:

The "text-shadow" property is not inherited, it is converted into arendering trait. This rendering trait specifies that a rendering effect isto be applied, collectively, to the glyph images within the area forestreturned by the children of the formatting object on which the property isspecified. That is, for any given glyph area, the glyph image, the markedportion of that area not including background, is copied, shifted by theshadow offset, then colored and blurred (if so specified) and renderedafter any background is rendered and prior to rendering theglyph image itself. The shadow is colored with the color that will be usedto color the glyph image itself if no color is specified as part of theshadow effect and with the specified color if a color is specified as partof the shadow effect. If more than one shadow effect is specified that lastspecified effect is rendered first and preceding effects are rendered inthe reverse of the order in which they were specified in the list of shadoweffects.

Note:

Since the entire forest of normal areas returned by the formattingobject on which the property applies is affected by the rendering effect itappears that the shadow effect is inherited. Inheritance would not workhowever, because that would not allow all the images of one shadow effectto be rendered prior to all the glyph images or images or shadow effectspecified before the given shadow effect.

7.17.6 "text-transform"

CSS2 Definition:

Value:capitalize | uppercase | lowercase | none | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"text-transform" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-transform

This property controls capitalization effects of an element'stext. Values have the following meanings:

capitalize

Puts the first character of each word in uppercase.

uppercase

Puts all characters of each word in uppercase.

lowercase

Puts all characters of each word in lowercase.

none

No capitalization effects.

The actual transformation in each case is written languagedependent. See[RFC2070]for ways to find the languageof an element.

Conforming user agents may consider the value of "text-transform"to be "none" for characters that are not from the ISO Latin-1 repertoireand for elements in languages for which the transformation is differentfrom that specified by the case-conversion tables of Unicode orISO 10646.

XSL modifications to the CSS definition:

There are severe internationalization issues with the useof this property. It has been retained for CSS compatibility, butits use is not recommended in XSL.

7.17.7 "treat-as-word-space"

XSL Definition:

Value:auto | true | false | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

This property determines if the character shall be treatedas a word space or as a normal letter.

This property has the following values:

auto

The value of this property is determined by the Unicodecode point for the character.

As the default behavior:

  • The characters at code points U+0020 and U+00A0 aretreated as if 'true' had been specified. All other characters aretreated as if 'false' had been specified.

  • This property does not automatically apply word spacingto the fixed spaces (U+2000 through U+200A) or the ideographic-space(U+3000).

  • This default behavior can be overridden byinformation in the font used for formatting the character,which can specify additional characters that may betreated as "word spaces".

true

This inline-progression-dimension of the charactershall be adjusted as described inthe "word-spacing" property.

false

This character shall not have a word spacing adjustmentapplied.

7.17.8 "word-spacing"

CSS2 Definition:

Value:normal | <length> | <space> | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"word-spacing" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-word-spacing

This property specifies spacing behavior between words.Values have the following meanings:

normal

The normal inter-word space, as defined by the currentfont and/or the UA.

<length>

This value indicates inter-word space in addition to thedefault space between words. Values may be negative, but there maybe implementation-specific limits.

Word spacing algorithms are user agent-dependent. Wordspacing is also influenced by justification (see the 'text-align'property).

XSL modifications to the CSS definition:

The following value type has been added for XSL:

<space>

This allows the user to specify a range of adjustmentsin addition to the default space between words.

The minimumand maximum values specify the limits of the adjustment.

Default space between words is defined to betheinline-progression-dimensionof the glyph-area obtained by formatting the currentfo:character whosetreat-as-word-space trait has the value "true".

For fo:character whosetreat-as-word-space trait has the value "true",thespace-start andspace-end traits are each set to a valueas follows:

  • For "normal":.optimum = ("the normal inter-word space, as defined by thecurrent font and/or the UA" - "the inline-progression-dimensionof the glyph-area obtained by formatting the fo:character") / 2,.maximum = .optimum,.minimum = .optimum,.precedence = force, and.conditionality = discard.

  • For a <length>:.optimum = <length> / 2,.maximum = .optimum,.minimum = .optimum,.precedence = force, and.conditionality = discard.

  • For a <space>:a value that is half the value of the "word-spacing"propertyfor the numeric components and the value for the .precedence and.conditionality components.The initial values for .precedence is "force" andfor .conditionality "discard".

Note:

If it is desired that the word space combine with other spaces that haveless than forcing precedence, then the value of the word space shouldbe specified as a <space> with precedence less than force whichimplies that space combines according to the space resolutionrules described in4.3 Spaces and Conditionality.

The algorithm for resolving the adjusted values between word spacingand letter spacing is User Agent dependent.

Note:

The "word-spacing" property only affects theplacement of glyphsand not the shape that may be associated with the characters. For example,adjusting a "_" treated as a word space does not lengthen orshorten the"_" glyph.

7.18 Color-related Properties

7.18.1 "color"

CSS2 Definition:

Value:<color> | inherit
Initial:depends on user agent
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"color" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-color

<color>

Any valid color specification.

This property describes the foreground color of an element'stext content.

XSL modifications to the CSS definition:

XSL adds an "rgb-icc" function (see5.10.2 Color Functions) as a valid value of this property.

7.18.2 "color-profile-name"

XSL Definition:

Value:<name> | inherit
Initial:N/A, value is required
Inherited:no
Percentages:N/A
Media:visual
<name>

Specifies the name of a color-profile for internal references.

7.18.3 "rendering-intent"

XSL Definition:

Value:auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

"rendering-intent" permits the specification of a color-profilerendering-intent other than the default."rendering-intent" is applicable primarily to color-profilescorresponding to CMYK colorspaces. The different options cause different methods to be used fortranslating colors to the color gamut of the target rendering device.

Values have the following meanings:

auto

This is the default behavior. The User Agent determines the bestintent based on the content type. For image content containing anembedded profile, it shall be assumed that the intent specifiedwithin the profile is the desired intent. Otherwise, the user agentshall use the current profile and force the intent,overriding any intent that might be stored in the profile itself.

perceptual

This method, often the preferred choice for images,preserves the relationship between colors. It attempts tomaintain relative color values among the pixels as they aremapped to the target devicegamut. Sometimes pixel values that were originally withinthe target device gamut are changed in order to avoid hue shiftsand discontinuities and to preserve as much as possible the overallappearance of the scene.

relative-colorimetric

Leaves colors that fall inside the gamut unchanged.This method usually converts out of gamut colors to colorsthat have the same lightness but fall just inside the gamut.

saturation

Preserves the relative saturation (chroma) values of the original pixels.Out of gamut colors are converted to colors that havethe same saturation but fall just inside the gamut.

absolute-colorimetric

Disables white point matching when converting colors.This option is generally not recommended.

7.19 Float-related Properties

7.19.1 "clear"

CSS2 Definition:

Value:start | end | left | right | inside | outside | both | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"clear" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-clear

This property indicates which sides of an element's box(es) maynot be adjacent to an earlier floating box. (It may be that theelement itself has floating descendants; the 'clear' property hasno effect on those.)

This property may only be specified for block-level elements(including floats). For compact and run-in boxes, this propertyapplies to the final block box to which the compact or run-in boxbelongs.

Values have the following meanings when applied to non-floatingblock boxes:

left

The top margin of the generated box is increased enoughthat the top border edge is below the bottom outer edge of any left-floatingboxes that resulted from elements earlier in the source document.

right

The top margin of the generated box is increased enoughthat the top border edge is below the bottom outer edge of any right-floatingboxes that resulted from elements earlier in the source document.

both

The generated box is moved below all floating boxes ofearlier elements in the source document.

none

No constraint on the box's position with respect to floats.

When the property is set on floating elements, it results ina modification of the rules for positioning the float. An extraconstraint (#10) is added [to those specified in the descriptionof the 'float' property]:

10. The top outer edge of the float must be below the bottomouter 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').

XSL modifications to the CSS definition:

A start-float is defined to mean an area with area-class "xsl-side-float" thatwas generated by an fo:float with property "float" specified as "left" or "start".

An end-float is defined to mean an area with area-class "xsl-side-float" thatwas generated by an fo:float with property "float" specified as "right" or "end".

An inside-float is defined to mean an area with area-class "xsl-side-float" thatwas generated by an fo:float with property "float" specified as "inside".

An outside-float is defined to mean an area with area-class "xsl-side-float" thatwas generated by an fo:float with property "float" specified as "outside".

A side-float is defined to mean either a start-float or an end-float.

An area is defined to "clear"a side-float if the before-edge of thearea's border-rectangle is positioned to be after the after-edge ofthe float, or if the area is not a descendant of the side-float's parentreference-area.

A block-level formatting object is defined "to clear" a side-floatif the areas generated by the formatting object clear the side-float.

In XSL this property applies to block-level formatting objects and fo:float.

The clear propertywhen applied to an fo:float that generates side-floatsdoes not apply to the fo:float's anchor-area.

Values have the following meanings:

start

Specifies that each area generatedby the formatting object mustclear every start-float whose parent reference-area is the nearestancestor reference-area of the generated area, provided the start-floatwas generated by an fo:float that is before this formatting object,using pre-order traversal order of the formatting tree. Additionallyspecifies that each area generated by the formatting object mustbe placed so that the reference-area chain containing the generatedarea's nearest ancestor reference-area does not contain a laterreference-area that is the parent of a start-float generated by anfo:float that is before this formatting object, using pre-ordertraversal of the formatting tree.

end

Specifies that each areagenerated by the formatting object mustclear every end-float whose parent reference-area is the nearestancestor reference-area of the generated area, provided the end-floatwas generated by an fo:float that is before this formatting object,using pre-order traversal order of the formatting tree. Additionallyspecifies that each area generated by the formatting object mustbe placed so that the reference-area chain containing the generatedarea's nearest ancestor reference-area does not contain a laterreference-area that is the parent of an end-float generated by anfo:float that is before this formatting object, using pre-order traversalof the formatting tree.

left

Interpreted as "clear='start'".

right

Interpreted as "clear='end'".

inside

Specifies that each areagenerated by the formatting object mustclear every inside-float whose parent reference-area is the nearestancestor reference-area of the generated area, provided the inside-floatwas generated by an fo:float that is before this formatting object,using pre-order traversal order of the formatting tree. Additionallyspecifies that each area generated by the formatting object mustbe placed so that the reference-area chain containing the generatedarea's nearest ancestor reference-area does not contain a laterreference-area that is the parent of an inside-float generated by anfo:float that is before this formatting object, using pre-order traversalof the formatting tree.

outside

Specifies that each areagenerated by the formatting object mustclear every outside-float whose parent reference-area is the nearestancestor reference-area of the generated area, provided the outside-floatwas generated by an fo:float that is before this formatting object,using pre-order traversal order of the formatting tree. Additionallyspecifies that each area generated by the formatting object mustbe placed so that the reference-area chain containing the generatedarea's nearest ancestor reference-area does not contain a laterreference-area that is the parent of an outside-float generated by anfo:float that is before this formatting object, using pre-order traversalof the formatting tree.

both

Specifies that each area generatedby the formatting object mustclear every side-float whose parent reference-area is the nearestancestor reference-area of the generated area, provided the side-floatwas generated by an fo:float that is before this formatting object,using pre-order traversal order of the formatting tree. Additionallyspecifies that each area generated by the formatting object mustbe placed so that the reference-area chain containing the generatedarea's nearest ancestor reference-area does not contain a laterreference-area that is the parent of a side-float generated by anfo:float that is before this formatting object, using pre-order traversalof the formatting tree.

none

This property does not impose any constraints.

When a block-level formatting object is constrained by the "clear" property,its space-before property component values may be altered as necessaryfor each area that it generates, in order to meet theconstraint. The alterations are constrained to produce the minimumadditional space required to meet the constraint of the "clear" property.

Note:

Depending on how near a side-float's after-edge is tothe after-edge of its parent reference-area, a block-levelformatting object may not be able to generate an area that isa descendant of the side-float's parent reference-area.In this case the first block-area generated by the formatting objectmust be placed in one of the following reference-areas inthe reference-area chain that contains the side-float'sparent reference-area.

7.19.2 "float"

CSS2 Definition:

Value:before | start | end | left | right | inside | outside | none | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"float" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-float

This property specifies whether a box should float tothe left, right, or not at all. It may be set for elements thatgenerate boxes that are not absolutely positioned. Values have the followingmeanings:

left

The element generates a block box that is floated to theleft. Content flows on the right side of the box, starting at thetop (subject to the "clear" property). The "display" is ignored,unless it has the value "none".

right

Same as "left", but content flows on the left side of thebox, starting at the top.

none

The box is not floated.

Here are the precise rules that govern the behavior of floats:

1. The left outer edge of a left-floating box may not be to theleft of the left edge of its containing block. An analogous ruleholds for right-floating elements.

2. If the current box is left-floating, and there are any leftfloating boxes generated by elements earlier in the source document,then for each such earlier box, either the left outer edge of thecurrent box must be to the right of the right outer edge of theearlier box, or its top must be lower than the bottom of the earlierbox. Analogous rules hold for right-floating boxes.

3. The right outer edge of a left-floating box may not be to theright of the left outer edge of any right-floating box that is tothe right of it. Analogous rules hold for right-floating elements.

4. A floating box's outer top may not be higher than the top ofits containing block.

5. The outer top of a floating box may not be higher than theouter top of any block or floated box generated by an element earlierin the source document.

6. The outer top of an element's floating box may not be higherthan the top of any line-box containing a box generated by an elementearlier in the source document.

7. A left-floating box that has another left-floating box to itsleft may not have its right outer edge to the right of its containingblock's right edge. (Loosely: a left float may not stick out atthe right edge, unless it is already as far to the left as possible.)An analogous rule holds for right-floating elements.

8. A floating box must be placed as high as possible.

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 positionis preferred over one that is further to the left/right.

XSL modifications to the CSS definition:

The following values have been added for XSL: "before", "start", "end","inside", and "outside".

In XSL this property applies only to fo:float

Values have the following meanings:

before

Specifies that the block-areas generated by the fo:float shall bewith area-class "xsl-before-float", and shall be descendants ofa before-float-reference-area generated by a conditional sub-regionof a region-body.

start

Specifies that the block-areas generated by the fo:floatshall be with area-class "xsl-side-float" and shall be floated towardthe start-edge of the reference area.

end

Specifies that the block-areas returned by the fo:float shall bewith area-class "xsl-side-float" and shall be floated towardthe end-edge of the reference area.

left

Interpreted as "float='start'".

right

Interpreted as "float='end'".

inside

Specifies that the block-areas returned by the fo:float shall bewith area-class "xsl-side-float" and shall be floated toward an edgedetermined by the page binding edge.If the page binding edge is on the start-edge,it shall be floated toward the start-edge of the reference area.If the binding is the end-edge,it shall be floated toward the end-edge of the reference area.If neither,it shall be floated toward the start-edge of the reference area.

outside

Specifies that the block-areas returned by the fo:float shall bewith area-class "xsl-side-float" and shall be floated toward an edgedetermined by the page binding edge.If the page binding edge is on the start-edge,it shall be floated toward the end-edge of the reference area.If the binding is the end-edge,it shall be floated toward the start-edge of the reference area.If neither,it shall be floated toward the end-edge of the reference area.

none

Specifies that the block-areas generated by the fo:floatshall be normal.

This property determines thearea-class trait of theblock-areas returned by the fo:float, which controls the placementand parent of these block-areas.

7.19.3 "intrusion-displace"

XSL Definition:

Value:auto | none | line | indent | block | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

auto

For a reference-area, this value is treated as if "block" hadbeen specified. For any other area, this value is treated as if"line" had been specified.

none

Neither line areas nor block areas are displaced (nor have anyadjustment to their inline progression dimension) due to theintrusion of the float. The float overlays the area withoutaffecting any of the content of the area, unless the "clear"property has a specified value other than "none".

line

The start and end edges of line areas are displaced justenough so that any intrusions no longer intersects thecontent rectangle of the line area.For the purposes of this test, the allocation rectangle of theintrusion is used in the intersection. Also, such intersectionsare done with respect to the line area prior to its adjustment ofany "text-indent". This will cause a reduction in the inlineprogression dimension of the line area.

Note:

This is the behavior of floats described in CSS2.

indent

The start edge (and end edge) of each line within the blockarea on which the property occurs is displaced (a) by at leastthe same amount it would be displaced by the "line" value ofthis property and (b) in addition, by an amount that preservesthe relative offset of that start edge (or end edge) with respectto the start edge (or end edge) of any other line displaced byany intrusion that cause the current line to be displaced. Ifthere is more than one intrusion that could cause adisplacement of the line, the largest such displacement is used.

block

The start edge (and end edge) of the block is displaced by theleast amount necessary to insure that (a) the start edge (endedge) of the block does not intersect any of the start intrusions(end intrusions) that overlap that block and (b) the amount bywhich it is displaced is at least as much as the displacement ofthe parent area, provided the parent is a block-area which isnot a reference-area. An intrusion is said to overlap a block ifthe there is a line parallel to the inline progression directionthat intersects the allocation rectangles of both the block andthe intrusion.

This property determines the displacement strategy in the presence ofintrusions.

Note:

Displacing the start edge (and/or end edge) of a block, necessarilydisplaces the start edge (and/or end edge) of all lines and blocks containedwithin that block.

7.20 Keeps and Breaks Properties

Page breaks only apply to descendants of the fo:flowformatting object, and not within absolutelypositioned 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 inthe last (or only) column, which are ignored.

The semantics of keeps and breaks are further described in4.8 Keeps and Breaks.

7.20.1 "break-after"

XSL Definition:

Value:auto | column | page | even-page | odd-page | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values for these properties have the following meanings:

auto

No break shall be forced.

Note:

Page breaks may occur as determined by the formatter'sprocessing as affected by the "widow","orphan", "keep-with-next", "keep-with-previous", and "keep-together"properties.

column

Imposes a break-after condition with a contextconsisting of column-areas.

page

Imposes a break-after condition with a contextconsisting of page-areas.

even-page

Imposes a break-after condition with a context consistingof even page-areas (a blank page may be generated if necessary).

odd-page

Imposes a break-after condition with a context consisting of oddpage-areas (a blank page may be generated if necessary).

Specifies that the first normal area generatedby formatting the next formatting object, if any, shall be the first oneplaced in a particular context (e.g. page-area, column-area)

This property has no effect when it appears on an fo:table-rowformatting object in which there is any row spanning occurringthat includes both the current fo:table-row and the subsequent one.

7.20.2 "break-before"

XSL Definition:

Value:auto | column | page | even-page | odd-page | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

No break shall be forced.

Note:

Page breaks may occur as determined by the formatter's processingas affected by the "widow", "orphan", "keep-with-next","keep-with-previous",and "keep-together" properties.

column

Imposes a break-before condition with a contextconsisting of column-areas.

page

Imposes a break-before condition with a contextconsisting of page-areas.

even-page

Imposes a break-before condition with a context consisting of evenpage-areas (a blank page may be generated if necessary).

odd-page

Imposes a break-before condition with a context consisting of oddpage-areas (a blank page may be generated if necessary).

Specifies that the first area generated byformatting this formatting object shall be the first oneplaced in a particular context (e.g., page-area, column-area).

This property has no effect when it appears on an fo:table-rowformatting object in which there is any row spanning occurringthat includes both the current fo:table-row and the previous one.

7.20.3 "keep-together"

XSL Definition:

Value:<keep> | inherit
Initial:.within-line=auto, .within-column=auto, .within-page=auto
Inherited:yes
Percentages:N/A
Media:visual

This property imposes keep-together conditions on formatting objects.

The <keep> datatype is composed of three components: within-line,within-column, and within-page. Different components apply to differentclasses of formatting objects and provide keep conditions relative todifferent contexts. In the case of the within-linecomponent, the keep context consists of line-areas;for the within-column component, the keepcontext 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 beinterpreted in terms of the previous sentence.

Values of the components have the following meanings:

auto

There are no keep-together conditionsimposed by this property.

always

Imposes a keep-together condition with strength "always" in theappropriate context.

<integer>

Imposes a keep-together condition with strength of the given<integer> in the appropriate context.

The semantics of keeps and breaks are further described in4.8 Keeps and Breaks.

7.20.4 "keep-with-next"

XSL Definition:

Value:<keep> | inherit
Initial:.within-line=auto, .within-column=auto, .within-page=auto
Inherited:no
Percentages:N/A
Media:visual

This property imposes keep-with-next conditions on formatting objects.

The <keep> datatype is composed of three components: within-line,within-column, and within-page. Different components apply todifferent classes of formatting objects and provide keep conditionsrelative to different contexts. In the case of thewithin-line component, the keep context consists of line-areas;for the within-column component, the keep context consists ofcolumn-areas;for the within-page component, the keep context consists of page-areas.In the descriptionsbelow, the term "appropriate context"should be interpreted in terms of the previous sentence.

Values of the components have the following meanings:

auto

There are no keep-with-next conditionsimposed by this property.

always

Imposes a keep-with-next condition with strength "always" in theappropriate context.

<integer>

Imposes a keep-with-next condition with strength of the given<integer> in the appropriate context.

The semantics of keeps and breaks are further described in4.8 Keeps and Breaks.

7.20.5 "keep-with-previous"

XSL Definition:

Value:<keep> | inherit
Initial:.within-line=auto, .within-column=auto, .within-page=auto
Inherited:no
Percentages:N/A
Media:visual

This property imposes keep-with-previous conditions on formatting objects.

The <keep> datatype is composed of three components: within-line,within-column, and within-page. Different components apply todifferent classes of formatting objects and provide keep conditionsrelative to different contexts. In the case of thewithin-line component, the keep context consists of line-areas;for the within-column component, the keep context consists ofcolumn-areas;for the within-page component, the keep context consists of page-areas.In the descriptionsbelow, the term "appropriate context"should be interpreted in terms of the previous sentence.

Values of the components have the following meanings:

auto

There are no keep-with-previous conditionsimposed by this property.

always

Imposes a keep-with-previous condition with strength "always" inthe appropriate context.

<integer>

Imposes a keep-with-previous condition with strength of the given<integer> in the appropriate context.

The semantics of keeps and breaks are further described in4.8 Keeps and Breaks.

7.20.6 "orphans"

CSS2 Definition:

Value:<integer> | inherit
Initial:2
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"orphans" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-orphans

See definition of property widows (7.20.7 widows).

7.20.7 "widows"

CSS2 Definition:

Value:<integer> | inherit
Initial:2
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"widows" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-widows

The "orphans" property specifies the minimum number oflines of a paragraph that must be left at the bottom of a page.The "widows" property specifies the minimum number of lines of aparagraph that must be left at the top of a page.

XSL modifications to the CSS definition:

In XSL the "orphans" property specifies the minimum number ofline-areas in the first area generated by the formatting object.The "widows" property specifies the minimum number of line-areasin the last area generated by the formatting object.

7.21 Layout-related Properties

The following are layout-related properties that are notcommon to all formatting objects.

7.21.1 "clip"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x68

Value:<shape> | auto | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"clip" property
http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-clip

The 'clip' property applies to elements that have a 'overflow'property with a value other than 'visible'. Values have the followingmeanings:

auto

The clipping region has the same size and location as theelement's box(es).

<shape>

In CSS2, the only valid <shape> value is: rect (<top>, <right>, <bottom>, <left>) where <top>, <bottom> <right>,and <left> specify offsets from the respective sides of thebox.

<top>, <right>, <bottom>, and <left> may eitherhave a <length> value or "auto". Negative lengths are permitted.The value "auto" means that a given edge of the clipping regionwill be the same as the edge of the element's generated box (i.e., "auto"means the same as "0".)

When coordinates are rounded to pixel coordinates, care shouldbe taken that no pixels remain visible when <left> + <right>is equal to the element's width (or <top> + <bottom> equalsthe element's height), and conversely that no pixels remain hiddenwhen these values are 0.

The element's ancestors may also have clipping regions(in case their "overflow" property is not "visible"); what is renderedis the intersection of the various clipping regions.

If the clipping region exceeds the bounds of the UA's documentwindow, content may be clipped to that window by the native operatingenvironment.

7.21.2 "overflow"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x67

Value:visible | hidden | scroll | error-if-overflow | repeat | auto | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"overflow" property
http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-overflow

This property specifies whether the content of a block-levelelement is clipped when it overflows the element's box (which isacting as a containing block for the content). Values have the followingmeanings:

visible

This value indicates that content is not clipped, i.e.,it may be rendered outside the block box.

hidden

This value indicates that the content is clipped and thatno scrolling mechanism should be provided to view the content outsidethe clipping region; users will not have access to clipped content.The size and shape of the clipping region is specified by the "clip"property.

scroll

This value indicates that the content is clipped and thatif the user agent uses a scrolling mechanism that is visible on thescreen (such as a scroll bar or a panner), that mechanism shouldbe displayed for a box whether or not any of its content is clipped.This avoids any problem with scrollbars appearing and disappearingin a dynamic environment. When this value is specified and the targetmedium is "print", overflowing content should beprinted.

auto

The behavior of the "auto" value is user agentdependent,but should cause a scrolling mechanism to be provided for overflowingboxes.

Even if "overflow" is set to "visible", content may beclipped to a UA's document window by the native operating environment.

XSL modifications to the CSS definition:

Two more value are definedas follows:

error-if-overflow

This value implies the same semantics as the value "hidden" with theadditional semantic that an error shall be indicated; implementations mayrecover by clipping the region.

repeat

On a formatting object which generates and returns normalviewport/reference pairs, this value specifies that additionalviewport/reference pairs are to be generated so that the reference-areacomponent of each pair is no larger than its parent viewport-area. Onother formatting objects (including formatting objects whoseabsolute-position trait is "absolute" or "fixed"), it acts as if anoverflow value of "auto" were specified.

For print media, implementations must support "auto" and "visible",as defined in this Recommendation. Other values may be treated asif "auto" had been specified.

7.21.3 "reference-orientation"

XSL Definition:

Value: 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit
Initial:0
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

0

The reference-orientation of thisreference-area has the same reference-orientation asthe containing reference-area.

90

The reference-orientation of thisreference-area is rotated 90 degrees counter-clockwise from thereference-orientation of the containing reference-area.

180

The reference-orientation of thisreference-area is rotated 180 degrees counter-clockwise from thereference-orientation of the containing reference-area.

270

The reference-orientation of thisreference-area is rotated 270 degrees counter-clockwise from thereference-orientation of the containing reference-area.

-90

The reference-orientation of thisreference-area is rotated 270 degrees counter-clockwise from thereference-orientation of the containing reference-area.

Note:

This is equivalent to specifying "270".

-180

The reference-orientation of thisreference-area is rotated 180 degrees counter-clockwise from thereference-orientation of the containing reference-area.

Note:

This is equivalent to specifying "180".

-270

The reference-orientation of thisreference-area is rotated 90 degrees counter-clockwise from thereference-orientation of the containing reference-area.

Note:

This is equivalent to specifying "90".

The reference-orientation specifiesthe direction for "top" for the content-rectangle of the "reference-area".This is used as the reference for deriving directions, such as theblock-progression-direction, inline-progression-direction,etc.as specified by the "writing-mode" and "direction" properties,and the orientation, placement, and tiling of the background.

The "reference-orientation" property is applied only on formatting objectsthat establish a reference-area.Each value of "reference-orientation" sets the absolute directionfor "top", "left", "bottom", and "right"; which is used by "writing-mode","direction", and all positioning operations that are referencedto the reference-area or are nested within it.

Thereference-orientation trait on an area is indirectly derivedfrom the "reference-orientation" property on the formatting objectthat generates the area or the formatting object ancestors of thatformatting object.

7.21.4 "span"

XSL Definition:

Value:none | all | inherit
Initial:none
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

none

This object does not span multiplecolumns.

all

The areas resulting from this flowobject shall span all the columns of a multi-column region.

Specifies if a block-level objectshould be placed in the current column or should span all columnsof a multi-column region.

Note:

This only has effect on areas returned by a flow; e.g.block-areas generated by fo:block children of an fo:flow. Children andfurther descendants of these areas take on the spanning characteristicof their parent.

7.22 Leader and Rule Properties

7.22.1 "leader-alignment"

XSL Definition:

Value:none | reference-area | page | inherit
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

none

Leader-pattern has no special alignment.

reference-area

Leader-pattern is aligned as if it began on the currentreference-area's content-rectangle start-edge.

page

Leader-pattern is aligned as if it began on the currentpage's start-edge.

Specifies whether fo:leaders having identical content and property valuesshall have their patterns aligned with each other, with respect to theircommon reference-area or page.

For fo:leaders where the "leader-pattern" property is specified as"dot" or as "use-content", this property will be honored.

If the fo:leader is aligned, the start-edge of each cycle of therepeated pattern will be placed on the start-edge of the next cyclein the appropriate pattern-alignment grid.

7.22.2 "leader-pattern"

XSL Definition:

Value:space | rule | dots | use-content | inherit
Initial:space
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

space

Leader is to be filled with blank space.

rule

Leader is to be filled with a rule.

If this choice is selected, the "rule-thickness" and "rule-style"properties are used to set the leader's style.

dots

Leader is to be filled with a repeating sequence of dots.The choice of dot character is dependent on the user agent.

use-content

Leader is to be filled with a repeating pattern as specifiedby the children of the fo:leader.

Provides the specification of how to fill in the leader.

If the leader is aligned, the start-edge of each cycle of eachrepeating pattern component will be placed on the start-edge ofthe next cycle in the pattern-alignment grid.

Implementations must support the "space", "rule", and "dots"values, as defined in this Recommendation. The "use-content" valuemay be treated as if "space" had been specified.

7.22.3 "leader-pattern-width"

XSL Definition:

Value:use-font-metrics | <length> | <percentage> | inherit
Initial:use-font-metrics
Inherited:yes
Percentages:refer to the inline-progression-dimension of content-rectangle of parent area
Media:visual

Values have the following meanings:

use-font-metrics

Use the width of the leader-pattern as determined fromits font metrics.

<length>

Sets length for leader-pattern-repeating.

The leader will have an inline-space inserted after each patterncycle to account for any difference between the width of the patternas determined by the font metrics and the width specified in thisproperty.

If the length specified is less than the value that would bedetermined via the use-font-metrics choice,the value of this property is computedas if use-font-metrics choice had been specified.

Specifies the length of each repeat cycle in a repeating leader.

For leaders where the "leader-pattern" property is specified as"dots" or as "use-content", this property will be honored.

7.22.4 "leader-length"

XSL Definition:

Value:<length-range> | <percentage> | inherit
Initial:leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100%
Inherited:yes
Percentages:refer to the inline-progression-dimension of content-rectangle of parent area
Media:visual

Values have the following meanings:

<length-range>

leader-length.minimum=sets minimum length for a leader

leader-length.optimum=sets optimum length for a leader

leader-length.maximum=sets maximum length for a leader

Specifies the minimum, optimum, and maximum length of an fo:leader.

This property constrains the length of the leader to be between the minimumand maximum lengths.

Note:

User agents may choose to use the value of "leader-length.optimum"to determine where to break the line, then use the minimum andmaximum values during line justification.

Leader length values such as:

leader-length.minimum="0pt"leader-length.optimum="12pt"leader-length.maximum="100%"

would specify constraints that would cause the leader tofill all available space within the current line area as part ofthe process of justifying that line area.

Note:

As with all other space andformatting objects within a line areawhose inline-progression-dimension provides minimum/optimum/maximumconstraints, a leader formatting object's length-range providesfurther flexibility to the justification process. Though any resultthat satisfies the specified constraints would conform to thisspecification, current typographic practice wouldtend to make use of leader length flexibilityin preference to other flexibility (e.g. word spaces) within the sameline area when justifying the line.If multiple leader formatting objects occur within the same line area,current typographic practice would tend to make use of the lengthflexibility of all of them in some implementation defined manner(e.g. equally or proportionally to thespecified leader-length.maximum values).

7.22.5 "rule-style"

XSL Definition:

Value:none | dotted | dashed | solid | double | groove| ridge | inherit
Initial:solid
Inherited:yes
Percentages:N/A
Media:visual

Specifies the style (pattern) of the rule.

This property applies only if the "leader-pattern" property isspecified as "rule".

Values have the following meanings:

none

No rule, forces rule-thickness to 0.

dotted

The rule is a series of dots.

dashed

The rule is a series of short line segments.

solid

The rule is a single line segment.

double

The rule is two solid lines. The sum of the two lines andthe space between them equals the value of "rule-thickness".

groove

The rule looks as though it were carved into the canvas.(Top/left half of the rule's thickness is the color specified;the other half is white.)

ridge

The opposite of "groove", the rule looks as though it werecoming out of the canvas. (Bottom/right half of the rule's thicknessis the color specified;the other half is white.)

Implementations must support the "none" and "solid" values,as defined in this Recommendation. Other values may be treated as if"solid" had been specified.

7.22.6 "rule-thickness"

XSL Definition:

Value:<length>
Initial:1.0pt
Inherited:yes
Percentages:N/A
Media:visual

Specifies the overall thickness of the rule.

This property applies only if the "leader-pattern" property isspecified as "rule".

Values have the following meanings:

<length>

The "rule-thickness" is always perpendicularto its length-axis.

The rule is thickened equally above and below the line'salignment position. This can be adjusted through the "baseline-shift"property.

7.23 Properties for Dynamic Effects Formatting Objects

7.23.1 "active-state"

XSL Definition:

Value:link | visited | active | hover | focus
Initial:no, a value is required
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

link

This fo:multi-property-set applies ifthere is an fo:basic-link descendant of the parent fo:multi-propertiesand that link has not yet been visited.

visited

This fo:multi-property-set applies ifthere is an fo:basic-link descendant of the parent fo:multi-propertiesand that link has been visited.

active

This fo:multi-property-set applieswhile a normal area returned by the parent fo:multi-properties isbeing activated by the user. For example, between the times the userpresses the mouse button and releases it.

hover

This fo:multi-property-set applieswhile the user designates a normal area returned bythe parent fo:multi-properties (with some pointing device),but does not activate it. For examplethe cursor (mouse pointer) hovers over such an area.

focus

This fo:multi-property-set applieswhile a normal area returned by the parent fo:multi-propertieshas the focus (accepts keyboard events or other forms oftext input).

The "active-state" property is used to control which of thefo:multi-property-setsare used to format the child flow objects within anfo:multi-propertiesformatting object. The states (or at least the events thatcause the state to be entered) are defined by the DOM.

7.23.2 "auto-restore"

XSL Definition:

Value:true | false
Initial:false
Inherited:yes
Percentages:N/A
Media:interactive

Values have the following meanings:

true

If this fo:multi-switchis contained in another fo:multi-switch, and that fo:multi-switchchanges the active fo:multi-case (hiding this fo:multi-switch),then this fo:multi-switch should restore its initial fo:multi-case.

false

This fo:multi-switchshould retain its current fo:multi-case.

Specifies if the initial fo:multi-case should be restoredwhen the fo:multi-switch gets hidden by an ancestor fo:multi-switch.

Note:

A common case of using this property with a "true" valueis when several nested fo:multi-switch objectsbuild an expandable/collapsible table-of-contents view. If thetable-of-contents is expanded far down the hierarchy, and an (farabove) ancestor is closed, one would want all subtitles to haverestored to their original state when that ancestor is opened again.

7.23.3 "case-name"

XSL Definition:

Value:<name>
Initial:none, a value is required
Inherited:no, a value is required
Percentages:N/A
Media:interactive
<name>

Specifies a name for an fo:multi-case. The name must be uniqueamong the current fo:multi-case siblings, i.e., in the scope ofthe fo:multi-switch object that (directly) contains them. Otherinstances of fo:multi-switch objects may use the same names forits fo:multi-case objects.

The purpose of this property is to allow fo:multi-toggle objectsto select fo:multi-case objects to switch to.

7.23.4 "case-title"

XSL Definition:

Value:<string>
Initial:none, a value is required
Inherited:no, a value is required
Percentages:N/A
Media:interactive
<string>

Specifies a descriptive title for the fo:multi-case. The titlecan be displayed in a menu to represent this fo:multi-case whenan fo:multi-toggle object names several fo:multi-case objects asallowed destinations.

7.23.5 "destination-placement-offset"

XSL Definition:

Value:<length>
Initial:0pt
Inherited:no
Percentages:N/A
Media:interactive
<length>

The "destination-placement-offset" property specifiesthe distance from the beginning (top) of the page to the innermostline-area that contains the first destination area. If the firstdestination area is not contained in a line-area, the "destination-placement-offset" propertyinstead directly specifies the distance to the top of the destinationarea.

If the specification of destination-placement-offset wouldresult in a distance longer than the distance from the start ofthe document, the distance from the start of the document shouldbe used.

If the specified distance would push the first destination areabelow the page-area, the distance should be decreased so the wholefirst destination area becomes visible, if possible. If the firstdestination area is higher than the page, the top of the area shouldbe aligned with the top of the page.

7.23.6 "external-destination"

XSL Definition:

Value:empty string | <uri-specification>
Initial:empty string
Inherited:no
Percentages:N/A
Media:interactive
<uri-specification>

Specifies the destination resource (or, when a fragmentidentifier is given, sub-resource).

How the destination (sub-)resource is used and/or displayedis application and implementation-dependent. In typicalbrowsing applications, the destination resource is displayedin the browser positioned so that some rendered portionresulting from the processing of some part of the specificdestination sub-resource indicated by the fragment identifieris in view.

7.23.7 "indicate-destination"

XSL Definition:

Value:true | false
Initial:false
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

true

The areas that belong to the link targetwhen traversed should, in a system-dependent manner, be indicated.

false

No special indication should be made.

Note:

This could be indicated in any feasible way, e.g., by reversedvideo, etc.

7.23.8 "internal-destination"

XSL Definition:

Value:empty string | <idref>
Initial:empty string
Inherited:no
Percentages:N/A
Media:interactive
<idref>

Specifies the destination flow object within theformatting object tree.This property allows the destination flow object node to be explicitlyspecified.

7.23.9 "show-destination"

XSL Definition:

Value:replace | new
Initial:replace
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

replace

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".

new

A new (additional) document view should always be opened.

Specifies where the destination resource should be displayed.

7.23.10 "starting-state"

XSL Definition:

Value:show | hide
Initial:show
Inherited:no
Percentages:N/A
Media:interactive

Specifies how the formatting object to which it appliesis initially displayed.

Values have the following meanings:

show

The content of the formatting object is a candidate for beingdisplayed initially.

hide

The content of the formatting object is not a candidate for beingdisplayed initially.

Note:

For details of the typical usage of this property, see thedescription of6.9.3 fo:multi-switchand6.11.2 fo:bookmark.

7.23.11 "switch-to"

XSL Definition:

Value:xsl-preceding | xsl-following | xsl-any | <name>[ <name>]*
Initial:xsl-any
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

xsl-preceding

Activating the switch should result in the currentfo:multi-case being replaced by its preceding sibling.

Note:

The current fo:multi-case is the closest ancestor fo:multi-case.

In other words, the current fo:multi-switch should switch tothe previous sibling of the fo:multi-case that is currently selected.

Note:

The current fo:multi-switch is the closest ancestor fo:multi-switch.

If the current fo:multi-case is the first sibling, xsl-precedingshould switch to the last fo:multi-case sibling.

xsl-following

Activating the switch should result in that the currentfo:multi-case is replaced by its next sibling.

If the current fo:multi-case is the last sibling, xsl-followingshould switch to the first fo:multi-case sibling.

xsl-any

Activating the switch should allow the user to select anyother fo:multi-case sibling.

If there is only a single other fo:multi-case, the toggle shouldimmediately switch to it (and not show that single choice to theuser).

<name>

A name matching a case-name of an fo:multi-case.

Specifies what fo:multi-case object(s) this fo:multi-toggleshall switch to.

If switch-to is a name list, the user can switch to any of thenamed multi-case objects. If a multi-toggle with a single name isactivated, it should immediately switch to the named multi-case.

Note:

How to actually select the multi-case from a listis system dependent.

7.23.12 "target-presentation-context"

XSL Definition:

Value:use-target-processing-context | <uri-specification>
Initial:use-target-processing-context
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

use-target-processing-context

The context specified by the "target-processing-context" propertyshall be used.

<uri-specification>

Specifies the limited context in which the resource should bepresented if the external destinationis a resource of a processed structured media type for which alimited presentational context makes sense (e.g., XML, XHTML, SVG).

This property is ignored if the "external-destination" property hasan empty string value or if the external destination is not ofa processed structured media type for which alimited presentational context makes sense.

Note:

For example, an XML and XSL implementation may parse the XMLdocument, but begin XSLT processing by applying templates to the nodeset indicated by the "target-presentation-context" property.

Note:

If this is a node other than the document root,numbering and other contextually-dependent presentation may differbetween implementations. Some implementations may want to makethis tradeoff for memory or performance reasons.

7.23.13 "target-processing-context"

XSL Definition:

Value:document-root | <uri-specification>
Initial:document-root
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

document-root

The root of the document of the external-destination is used.

<uri-specification>

Specifies the root of a virtual document that the processorpreparing the new presentation should process if the external destinationis a resource of a processed structured media type (e.g., XML, SVG).

This property is ignored if the "external-destination" property hasan empty string value or if the external destination is not ofa processed structured media type.

Note:

Not all URI-specifications will be sensible roots, e.g., an XPointer thatgives a string range into an XML document.

If the root is not valid for the media typethe processor may ignore this property.

7.23.14 "target-stylesheet"

XSL Definition:

Value:use-normal-stylesheet | <uri-specification>
Initial:use-normal-stylesheet
Inherited:no
Percentages:N/A
Media:interactive

Values have the following meanings:

use-normal-stylesheet

The implementation willdiscover stylesheets using its usual methods.

<uri-specification>

Specifies the stylesheet that shall be used for processing theresource. This stylesheet shall be used instead of any other stylesheetthat otherwise would be used.

Note:

For example fromHTTP header information, XML stylesheet processing instructions,or XHTML style and link elements.

This property is ignored if the "external-destination" property hasan empty string value or if the external destination is not ofa media type that uses stylesheets.

Note:

In this version of XSL, only a single stylesheet URI-specification ispermitted.A future version of XSL may extend the stylesheet specification.

7.24 Properties for Indexing

7.24.1 "index-class"

XSL Definition:

Value:<string>
Initial:empty string
Inherited:no
Percentages:N/A
Media:all

Associates an index class with a formatting object that also hasan index key specified.

<string>

Specifies the name of the index class.

All elements with an index class that is an empty stringare in the same index class.That class is distinct from all other classes.

The index-class property is ignored on any formatting objectfor which an index-key property has not been specified.

Note:

Index class values enable control over how page numbers aremerged into ranges.Page numbers from different classes are not merged so specifyingan index class can be used to control, for example,whether a range of pages crossing from the preface into the firstchapter will be rendered as "vi-14" or "vi-xx, 1-14".

7.24.2 "index-key"

XSL Definition:

Value:<string>
Initial:none
Inherited:no
Percentages:N/A
Media:all

Associates an index key with the formatting object on which itis specified.

<string>

Specifies the index key.

All index keys with the same value identify the same index itemfor the purpose of generating lists of page number citations.

7.24.3 "page-number-treatment"

XSL Definition:

Value:link | no-link
Initial:no-link
Inherited:yes
Percentages:N/A
Media:interactive

Specifies whether or not page numbers in the index shouldbe hyperlinks.

Values have the following meanings:

link

Page numbers in the index should be navigable linksback to the source of thereference as for fo:basic-link.

no-link

Page numbers should not be links.

7.24.4 "merge-ranges-across-index-key-references"

XSL Definition:

Value:merge | leave-separate
Initial:merge
Inherited:yes
Percentages:N/A
Media:all

Specifies whether or not consecutive page numbers from differentfo:index-key-reference formatting objects are to be merged into single ranges.

Values have the following meanings:

merge

Merge consecutive page numbers into ranges regardless of whichfo:index-key-reference formatting objects referred to them.

leave-separate

Do not merge ranges across fo:index-key-reference formatting objects.

7.24.5 "merge-sequential-page-numbers"

XSL Definition:

Value:merge | leave-separate
Initial:merge
Inherited:yes
Percentages:N/A
Media:all

Specifies whether or not sequential page numbers within anfo:index-key-reference orfo:index-page-citation-list(if merge-ranges-across-index-key-references is "merge")are merged into a range.

Values have the following meanings:

merge

Merge three or more consecutive page numbers into a range.

leave-separate

Do not merge page numbers into ranges.

7.24.6 "merge-pages-across-index-key-references"

XSL Definition:

Value:merge | leave-separate
Initial:merge
Inherited:yes
Percentages:N/A
Media:all

Specifies whether or not multiple references to the samepage by different fo:index-key-reference formatting objectswill be retained as individual cited page items or if onlya single cited page item will be retained.

Values have the following meanings:

merge

Only the first occurrence, in document order of thefo:index-key-reference formatting objects,of a reference to a given page number generatedby multiple fo:index-key-reference formatting objects is retained.

leave-separate

Multiple references to the same page generated by differentfo:index-key-reference formatting objects are retained.

7.24.7 "ref-index-key"

XSL Definition:

Value:<string>
Initial:none, value required
Inherited:no
Percentages:N/A
Media:all

References an index key.

<string>

Specifies the "index-key" of objects in the formatting objecttree.

Reference to the objects having an "index-key" trait equal tothe specified "ref-index-key".It is an error if there are noformatting objects with the specified index key.

7.25 Properties for Markers

7.25.1 "marker-class-name"

XSL Definition:

Value:<name>
Initial:an empty name
Inherited:no, a value is required
Percentages:N/A
Media:paged

Values have the following meanings:

<name>

Names used as identifiers must be unique amongfo:markers that are (conceptually) attached to the same area.

If the name is empty or if a name-conflict is encountered,an error shall be reported. A processor may then continue processing.

This property identifies the fo:marker as being ina group with others that have the same name, each of whichbecomes a candidate to be retrieved by an fo:retrieve-markeror fo:retrieve-table-markerthat has a "retrieve-class-name" property of the same value.

7.25.2 "retrieve-boundary-within-table"

XSL Definition:

Value:table | table-fragment | page
Initial:table
Inherited:no
Percentages:N/A
Media:paged

Note:

The terms defined in6.13.7 fo:retrieve-table-markerare used here.

table

Specifies that the retrieve scope area set is limited tothe primary retrieve scope area and the retrieve scope areasthat precede the primary retrieve scope area.

table-fragment

Specifies that the retrieve scope area set is limited tothe primary retrieve scope area.

page

Specifies that the retrieve scope area set is limited tothe primary retrieve scope area and the retrieve scope areas thatboth precede this primary retrieve scope and are on the same pageas the primary retrieve scope area.

7.25.3 "retrieve-class-name"

XSL Definition:

Value:<name>
Initial:an empty name
Inherited:no, a value is required
Percentages:N/A
Media:paged

Values have the following meanings:

<name>

A name that matches the "marker-class-name"property value of an fo:marker.

This property constrains that the fo:marker whose children areretrieved by the fo:retrieve-marker or fo:retrieve-table-markermust have a "marker-class-name"property value that is the same as the value of this property.

7.25.4 "retrieve-position"

XSL Definition:

Value:first-starting-within-page | first-including-carryover |last-starting-within-page | last-ending-within-page
Initial:first-starting-within-page
Inherited:no
Percentages:N/A
Media:paged

The term "containing page" is used here to mean the pagethat contains the first area generated or returned by thechildren of the retrieved fo:marker.

Values have the following meanings:

first-starting-within-page

Specifies a preference for retrieving the childrenof an fo:marker attached to an area that is

  • within the containing page

  • whose "is-first" trait is set to "true"

and that precedes in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

first-including-carryover

Specifies a preference for retrieving the children ofan fo:marker attached to an area that is within the containingpage and that precedes in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

last-starting-within-page

Specifies a preference for retrieving the childrenof an fo:marker attached to an area that is

  • within the containing page

  • whose "is-first" trait is set to "true"

and that follows in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

last-ending-within-page

Specifies a preference for retrieving the childrenof an fo:marker attached to an area that is within the containingpage whose "is-last" trait is set to "true" and that follows inthe area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

This property specifies the preference for whichfo:marker's children shall be retrieved by an fo:retrieve-marker,based on the areas returned by the parent of the fo:markerrelative to the areas returned by the parents of other identicallynamed fo:marker's.

7.25.5 "retrieve-boundary"

XSL Definition:

Value:page | page-sequence | document
Initial:page-sequence
Inherited:no
Percentages:N/A
Media:paged

The term "containing page" is used here to mean thepage that contains the first area generated or returnedby the children of the retrieved fo:marker.

Values have the following meanings:

page

Specifies that the children of any fo:markers whoseparent generated or returned a normal area within the containingpage or generated non-normal area within the containing pagemay be retrieved by this fo:retrieve-marker.

page-sequence

Specifies that only the children of fo:markersthat are descendants of any fo:flow within the containingfo:page-sequence may be retrieved by this fo:retrieve-marker.

document

Specifies that the children of any fo:marker thatis a descendant of any fo:flow within the document may beretrieved by this fo:retrieve-marker.

7.25.6 "retrieve-position-within-table"

XSL Definition:

Value:first-starting | first-including-carryover |last-starting | last-ending
Initial:first-starting
Inherited:no
Percentages:N/A
Media:paged

Note:

The terms defined in6.13.7 fo:retrieve-table-markerare used here.

first-starting

Specifies a preference for retrieving the children ofan fo:marker attached to an area

  • that is a descendant of the primary retrieve scope area,

  • whose "is-first" trait is set to "true"

  • and precedes in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

first-including-carryover

Specifies a preference for retrieving the children of an fo:markerattached to an area

  • that is a descendant of the primary retrieve scope area,

  • and that precedes in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

last-starting

Specifies a preference for retrieving the children of an fo:markerattached to an area

  • that is a descendant of a retrieve scope area,

  • whose "is-first" trait is set to "true"

  • and that follows in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

last-ending

Specifies a preference for retrieving the children of an fo:markerattached to an area

  • that is a descendant of a retrieve scope area,

  • and whose "is-last" trait is set to "true" and that follows in the area tree,using pre-order traversal order, any other similarly constrained areathat has an attached fo:marker with the samevalue of the "marker-class-name" property.

This property specifies the preference for which fo:marker's children shallbe retrieved by an fo:retrieve-table-marker, based on the areas returned bythe parent of the fo:marker relative to the areas returned by the parentsof other identically named fo:marker's.

7.26 Properties for Number to String Conversion

7.26.1 "format"

XSL Definition:

Value:<string>
Initial:1
Inherited:no
Percentages:N/A
Media:all

This property is defined in[XSLT]:Number to String Conversion Attributes.

7.26.2 "grouping-separator"

XSL Definition:

Value:<character>
Initial:no separator
Inherited:no
Percentages:N/A
Media:all

This property is defined in[XSLT]:Number to String Conversion Attributes.

7.26.3 "grouping-size"

XSL Definition:

Value:<number>
Initial:no grouping
Inherited:no
Percentages:N/A
Media:all

This property is defined in[XSLT]:Number to String Conversion Attributes.

7.26.4 "letter-value"

XSL Definition:

Value:auto | alphabetic | traditional
Initial:auto
Inherited:no
Percentages:N/A
Media:all

This property is defined in[XSLT]:Number to String Conversion Attributes.A value of "auto" corresponds to the XSLT definition forwhen the attribute is not specified.

7.27 Pagination and Layout Properties

The following pagination and layout properties are allXSL only.

7.27.1 "blank-or-not-blank"

XSL Definition:

Value:blank | not-blank | any | inherit
Initial:any
Inherited:no
Percentages:N/A
Media:visual

This property forms part of a selection rule to determineif the referenced page-master is eligible for selection atthis point in the page-sequence.

The values have the following meanings:

blank

This master is eligible for selection if a pagemust be generated (e.g., to maintain proper page parityat the start or end of the page-sequence) and there areno areas from any of the fo:flow flows within the containingfo:page-sequence to be put on that page.

not-blank

This master is eligible for selection if this pagecontains areas from any of the fo:flow flows within the containingfo:page-sequence.

any

This master is always eligible for selection.

7.27.2 "column-count"

XSL Definition:

Value:<number> | inherit
Initial:1
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

Specifies the number of columns inthe region.

A value of 1 indicates that this is not a multi-column region.

7.27.3 "column-gap"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:12.0pt
Inherited:no
Percentages:refer to width of the region being divided into columns.
Media:visual

Values have the following meanings:

<length>

This is an unsigned length. If a negative value has beenspecified a value of 0pt will be used.

<percentage>

The value is a percentage of the inline-progression-dimensionof the content-rectangle of the region.

Specifies the width of theseparation between adjacent columns in a multi-column region.See the description in6.4.14 fo:region-body for further details.

7.27.4 "extent"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:0.0pt
Inherited:no
Percentages:refer to the corresponding block-progression-dimensionor inline-progression-dimension of thepage-viewport-area.
Media:visual

Values have the following meanings:

<length>

This is an unsigned length. If a negative value has beenspecified a value of 0pt will be used.

<percentage>

The value is a percentage of the correspondingblock-progression-dimension or inline-progression-dimension of thepage-viewport-area.

Specifies theinline-progression-dimensionof the region-startor region-end or theblock-progression-dimensionof the region-before or region-after.

7.27.5 "flow-name"

XSL Definition:

Value:<name>
Initial:an empty name
Inherited:no, a value is required
Percentages:N/A
Media:visual

Values have the following meanings:

<name>

Names used as identifiers must be unique withinan fo:page-sequence.

If the name is empty or if a name-conflict isencountered, anerror shall be reported. Aprocessor may thencontinue processing.

Defines the name of the flow.

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 ofregions in the layout. In XSL this is done by specifyingthe name of the target region as the flow-name. (For example, text placedin the region-body would specifyflow-name="xsl-region-body".)

Note:

The flow-names reserved in XSL are:xsl-region-body, xsl-region-before, xsl-region-after, xsl-region-start,xsl-region-end, xsl-before-float-separator, xsl-footnote-separator.

7.27.6 "force-page-count"

XSL Definition:

Value:auto | even | odd | end-on-even | end-on-odd | no-force| inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Force-page-count is used to impose a constraint onthenumber of pages in a page-sequence. In the event that thisconstraintis not satisfied, an additional page will be added to the end ofthe sequence. This page becomes the "last" page of that sequence.

The values have the following meanings:

auto

Force the last page in this page-sequence to be an odd-pageif the initial-page-number of the next page-sequence is even.Force it to be an even-page if the initial-page-number of thenext page-sequence is odd. If there is no next page-sequence or if thevalue of its initial-page-number is "auto" do not force any page.

even

Force an even number of pages in thispage-sequence.

odd

Force an odd number of pages in thispage-sequence.

end-on-even

Force the last page in this page-sequence to be an even-page.

end-on-odd

Force the last page in this page-sequence to be an odd-page.

no-force

Do not force either an even or an odd number of pages inthis page-sequence

Note:

Whether a page is an odd-page or even-page is determined fromthefolio-number trait.

7.27.7 "initial-page-number"

XSL Definition:

Value:auto | auto-odd | auto-even | <number> | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

The initial folio number shall be set to 1 if no previous fo:page-sequenceexists in the document.

If a preceding page-sequence exists, the initial folio numberwillbe one greater than the last number for that sequence.

auto-odd

A value is determined in the same manner as for "auto".If that value is an even number 1 is added.

auto-even

A value is determined in the same manner as for "auto".If that value is an odd number 1 is added.

<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

Sets the initial folio number to be used in this page-sequence.

7.27.8 "master-name"

XSL Definition:

Value:<name>
Initial:an empty name
Inherited:no, a value is required
Percentages:N/A
Media:visual

Values have the following meanings:

<name>

Names identify masters, may not be empty and mustbe unique.

If this property is specified on an fo:simple-page-master, itprovides an identifying name of the master. This name is subsequentlyreferenced 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 masterwhen creating a page instance. It may also be used on an fo:page-sequenceto specify the use of this master when creating page instances.

If this property is specified on an fo:page-sequence-master, itprovides an identifying name of the master. This name issubsequently referenced as the value of properties on the fo:page-sequenceto request the use of this page-sequence-master when creating page instances.

A master-name must be unique across all page-mastersand page-sequence-masters.

If the name is empty or if a name-conflict isencountered, anerror shall be reported. Aprocessor may thencontinue processing.

7.27.9 "master-reference"

XSL Definition:

Value:<name>
Initial:an empty name
Inherited:no, a value is required
Percentages:N/A
Media:visual

Values have the following meanings:

<name>

The names need not beunique, but may not be empty and must refer to a master-name thatexists within the document.

Selecting a master:

  • If this property is specified on the fo:page-sequenceit specifies the name of the page-sequence-master or page-masterto be used to create pages in the sequence.

  • 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 asingle page instance.

  • If this property is specified on the fo:repeatable-page-master-reference,it specifies the name of the page-master to be used in repetitionuntil the content is exhausted or the maximum-repeats limit is reached,whichever occurs first.

  • If this property is specified on the fo:conditional-page-master-reference,it specifies the name of the page-master to be used whenever thisalternative is chosen.

If the name is empty or if a name-conflict isencountered, anerror shall be reported. Aprocessor may thencontinue processing.

7.27.10 "maximum-repeats"

XSL Definition:

Value:<number> | no-limit | inherit
Initial:no-limit
Inherited:no
Percentages:N/A
Media:visual

Specifies the constraint on the maximum number of pagesin the sub-sequence of pages that may be generated by anfo:page-sequencethat uses the fo:repeatable-page-master-reference orfo:repeatable-page-master-alternativeson which this property is specified.

The values have the following meanings:

no-limit

No constraint is specified.

<number>

The maximum number of pages in the sub-sequence.

The value is an integer greater than or equal to 0.

If a fractional value or a value less than 0 is specified, itwill be rounded to the nearest integer greater than or equal to0.

A value of 0 indicates this master-reference will not be used.

7.27.11 "media-usage"

XSL Definition:

Value:auto | paginate | bounded-in-one-dimension | unbounded
Initial:auto
Inherited:no
Percentages:NA
Media:visual

The "media-usage" property is used to control how the selecteddisplay medium is used to present the page(s) specified by thestylesheet.

Values for the property have the following meaning:

auto

The User Agent determines which value of "media-usage" (otherthan the "auto" value) is used. The User Agent may consider the typeof media on which the presentation is to be placed in making thisdetermination.

Note:

For example, the User Agent could use the following decisionprocess. If the media is not continuous and is of fixed bounded size,then the "paginate" (described below) is used. Otherwise, the"bounded-in-one-dimension" is used.

paginate

A sequence of pages is generated from the fo:page-sequences that arechildren of the fo:root as described in6.4.5 fo:page-sequence.

bounded-in-one-dimension

Only one page is generated per fo:page-sequence descendantfrom the fo:root. Exactly one of "page-height" or "page-width" must bespecified on the first page master that is used. The size of the page in theother dimension is determined by the content flowed into the page.

It is an error if more or less than one of "page-height" or"page-width" is specified on the first page master that is used. TheUser Agent may recover as follows: The recovery depends on the"reference-orientation" of the page and "writing-mode" of theregion to which the fo:flow is assigned. There arefour cases: (1) the "reference-orientation" is "0" or "180" and the"writing-mode" is horizontal; (2) the "reference-orientation" is "0"or "180" and the "writing-mode" is vertical; (3) the"reference-orientation" is "90" or "270" and the "writing-mode" ishorizontal; (4) the "reference-orientation" is "90" or "270" and the"writing-mode" is vertical. For cases (1) and (4), the "page-width" isbounded and the "page-height" is not bounded. For case (2) and (3), the"page-height" is bounded and the "page-width" is not bounded.

unbounded

Only one page is generated per fo:page-sequence descendantfrom the fo:root. Neither "page-height" nor "page-width" may bespecified on any page master that is used. If a value is specified foreither property, it is an error and a User Agent may recover byignoring the specified value. Each page begins at the before-edge andstart-edge of the page and the page extends as far as necessary towardthe after-edge and end-edge to contain all the content of thepage-sequence which generates the page.

Note:

This implies that no text content is automatically wrapped;that is, each block will have a single line for each text node thatdoes not contain a U+000A character. If more than one line isgenerated, then the sequence of characters that generated the glyphsin each such line must have been bounded in the original text node,either by the beginning or end of that text node or by an U+000Acharacter within that text node. Control over the treatment of theU+000A character is described in7.16.7 linefeed-treatment.

7.27.12 "odd-or-even"

XSL Definition:

Value:odd | even | any | inherit
Initial:any
Inherited:no
Percentages:N/A
Media:visual

This property forms part of a selection rule to determineif the referenced page-master is eligible for selection atthis point in the page-sequence.

The values have the following meanings:

odd

This master is eligible for selection if the folio number isodd.

even

This master is eligible for selection if the folio number iseven.

any

This master is eligible for selection regardless of whetherthe folio number is odd or even.

Note:

"Folio number" refers to thefolio-number traitfor the page to be generated.

7.27.13 "page-height"

XSL Definition:

Value:auto | indefinite | <length> | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

The "page-height" shall be determined,in the case of continuous media,from the size of the User Agent window,otherwise from the size of the media.If media information is not available this dimension shall beimplementation-defined.

Note:

A fallback to 11.0in would fiton both Letter size (8.5in by 11.0in) and A4 size pages.

indefinite

The height of the page is determinedfrom the size of the laid-out content.

"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"of the page-reference-areawill remain "indefinite" and the other will revert to "auto".

<length>

Specifies a fixed height for the page.

Specifies the height of a page.

Note:

The values for the "page-width" and "page-height" propertiesare intended to permit the size specification to matchthe handling of a frameset in a browser window when the media iscontinuous and to match pages when the media is paged.

A User Agent may provide a way to declare the media for whichformatting is to be done. This may be different from the media onwhich the formatted result is viewed. For example, a browser UserAgent may be used to preview pages that are formatted for sheetmedia. In that case, the size calculation is based on the media forwhich formatting is done rather than the media being currently used.

7.27.14 "page-position"

XSL Definition:

Value:only | first | last | rest | any | inherit
Initial:any
Inherited:no
Percentages:N/A
Media:visual

This property forms part of a selection rule to determineif the referenced page-master is eligible for selection atthis point in the page-sequence.

The values have the following meanings:

only

This master is eligible for selection if this is the only page(i.e. the page is both first and last) page in the page-sequence.

first

This master is eligible for selection if this is the firstpage in the page-sequence.

last

This master is eligible for selection if this is the lastpage in the page-sequence.

rest

This master is eligible for selection if this is not thefirst page nor the last page in the page-sequence.

any

This master is eligible for selection regardless of pagepositioning within the page-sequence.

Note:

Several of these values can be true simultaneously;for example, 'any' is always true and 'only' is true when both 'first'and 'last' are true. For that reason, it is necessary to order thefo:conditional-page-master-references so that the least inclusive testis performed before the more inclusive test which are also true.

7.27.15 "page-width"

XSL Definition:

Value:auto | indefinite | <length> | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

auto

The "page-width" shall be determined,in the case of continuous media,from the size of the User Agent window,otherwise from the size of the media.If media information is not available this dimension shall beimplementation-defined.

Note:

A fallback to 8.26in would fiton both 8+1/2x11 and A4 pages.

indefinite

The width of the page is determinedfrom the size of the laid-out content.

"Page-width" and "page-height" properties may not both be setto "indefinite". Should that occur,the dimension that is parallel to the block-progression-direction,as determined by the "reference-orientation" and "writing-mode"of the page-reference-areawill remain "indefinite" and the other will revert to "auto".

<length>

Specifies a fixed width for thepage.

Specifies the width of a page.

7.27.16 "precedence"

XSL Definition:

Value:true | false | inherit
Initial:false
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

false

A value of false specifies that this region does not extendup to the start-edge and end-edge of the content-rectangle ofthe page-reference-area, but has its inline-progression-dimensionreduced by the incursions of the adjacent regions.

true

A value of true specifies that the inline-progression-dimensionof this region extends up to the start-edge and end-edge of thecontent-rectangle of the page-reference-area.

Specifies which region (i.e., region-before,region-after, region-start, or region-end) takes precedence in termsof which may extend into the corners of the simple-page-master.

7.27.17 "region-name"

XSL Definition:

Value:xsl-region-body | xsl-region-start | xsl-region-end| xsl-region-before | xsl-region-after |<name>
Initial:see prose
Inherited:no, a value is required
Percentages:N/A
Media:visual

Values have the following meanings:

xsl-region-body

Reserved region-name for use as the default name of fo:region-body.This name may not be used on any other class of region.

xsl-region-start

Reserved region-name for use as the default name of fo:region-start.This name may not be used on any other class of region.

xsl-region-end

Reserved region-name for use as the default name of fo:region-end.This name may not be used on any other class of region.

xsl-region-before

Reserved region-name for use as the default name of fo:region-before.This name may not be used on any other class of region.

xsl-region-after

Reserved region-name for use as the default name of fo:region-after.This name may not be used on any other class of region.

<name>

Names used as identifiers must be unique within a page-master.

This property is used to identifya region within a simple-page-master.

The "region-name" may be used to differentiate a region thatlies on a page-master for an odd page from a region thatlies on a page-master for an even page. In this usage, once a name is usedfor a specific classof region (start, end, before, after, or body), that name may onlybe used for regions of the same class in any other page-master.The reserved names may only be used in the manner described above.

7.27.18 "flow-map-name"

XSL Definition:

Value:<name>
Initial:none, a value is required
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

<name>

Names identify flow-maps. They may not be empty andmust be unique.

This property provides an identifying name for an fo:flow-map,which is subsequently referenced as the value of theflow-map-reference property on an fo:page-sequence.

7.27.19 "flow-map-reference"

XSL Definition:

Value:<name>
Initial:see prose
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

<name>

The name identifies a flow map; it may not be emptyand mustrefer to a flow-map-name that exists within the document.

Specifies the flow map to be used for assigning flows to regionswithinthe page-sequence.

If no flow-map-reference is specified on a page-sequence, then theflow-map in effect is the implicit flow-map specified in6.4.5 fo:page-sequence.

7.27.20 "flow-name-reference"

XSL Definition:

Value:<name>
Initial:none, a value is required
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

<name>

The name identifies a flow; it may not be empty and mustrefer to a flow-name that exists within the document.

Specifies a flow to be used within a sequence of flows in theflow-source-list of a particular assignment of flows to regions.

7.27.21 "region-name-reference"

XSL Definition:

Value:<name>
Initial:none, a value is required
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

<name>

The name identifies a region; it may not be empty and mustrefer to a region-name that exists within the document.

Specifies a flow to be used within a sequence of regions in theflow-target-list of a particular assignment of flows to regions.

7.28 Table Properties

7.28.1 "border-after-precedence"

XSL Definition:

Value:force | <integer> | inherit
Initial:fo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0
Inherited:no
Percentages:N/A
Media:visual
force

The precedence is higher than any <integer>.

<integer>

A numeric precedence specification.A higher value has a higher precedence than a lower one.

Specifies the precedence of the border specification on thisformatting object for the border-after.

7.28.2 "border-before-precedence"

XSL Definition:

Value:force | <integer> | inherit
Initial:fo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0
Inherited:no
Percentages:N/A
Media:visual

Specifies the precedence of the border specification on thisformatting object for the border-before.

See definition of property border-after-precedence (7.28.1 border-after-precedence).

7.28.3 "border-collapse"

CSS2 Definition:

Value:collapse | collapse-with-precedence | separate | inherit
Initial:collapse
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"border-collapse" property
http://www.w3.org/TR/REC-CSS2/tables.html#propdef-border-collapse

collapse

The value "collapse" selects the collapsing borders model.

separate

The value "separate" selects the separated borders bordermodel.

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.

XSL modifications to the CSS definition:

XSL adds the following value with the following meaning:

collapse-with-precedence

The value "collapse-with-precedence" selects the collapsing borders modeland the use of the border precedence properties for conflict resolution.

7.28.4 "border-end-precedence"

XSL Definition:

Value:force | <integer> | inherit
Initial:fo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0
Inherited:no
Percentages:N/A
Media:visual

Specifies the precedence of the border specification on thisformatting object for the border-end.

See definition of property border-after-precedence (7.28.1 border-after-precedence).

7.28.5 "border-separation"

XSL Definition:

Value:<length-bp-ip-direction> | inherit
Initial:.block-progression-direction="0pt" .inline-progression-direction="0pt"
Inherited:yes
Percentages:N/A
Media:visual
<length-bp-ip-direction>

The lengths specify the distance that separates adjacent cellborders 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).

In the separate borders model, each cell has an individual border.The "border-separation" property specifies the distance between theborders of adjacent cells. This space is filled with the backgroundof the table element. Rows, columns, row groups, and column groups cannothave borders (i.e., user agents must ignore the border propertiesfor those elements).

7.28.6 "border-start-precedence"

XSL Definition:

Value:force | <integer> | inherit
Initial:fo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0
Inherited:no
Percentages:N/A
Media:visual

Specifies the precedence of the border specification on thisformatting object for the border-start.

See definition of property border-after-precedence (7.28.1 border-after-precedence).

7.28.7 "caption-side"

CSS2 Definition:

Value:before | after | start | end | top | bottom | left | right | inherit
Initial:before
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"caption-side" property
http://www.w3.org/TR/REC-CSS2/tables.html#q6

top

Positions the caption box above the table box.

bottom

Positions the caption box below the table box.

left

Positions the caption box to the left of the table box.

right

Positions the caption box to the right of the table box.

This property specifies the position of the caption box withrespect to the table box.

Captions above or below a "table" element are formatted verymuch 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 purposesof any "compact" or "run-in" element that may precede the table.

A caption that is above or below a table box also behaves likea block box for width calculations; the width is computed with respectto the width of the table box's containing block.

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 thewidth explicitly, but "auto" tells the user agent to chose a "reasonablewidth". This may vary between "the narrowest possible box" to "asingle line", so we recommend that users do not specify "auto" forleft and right caption widths.

To align caption content horizontally within the caption box,use the "text-align" property. For vertical alignment of a leftor 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".

XSL modifications to the CSS definition:

Insert the following writing-mode relative values:

before

Positions the caption before the table in the block-progression-direction.

after

Positions the caption after the table in the block-progression-direction.

start

Positions the caption before the table in the inline-progression-direction.

end

Positions the caption after the table in the inline-progression-direction.

The CSS qualifications (1) and (2) do not apply.The last three sentences in the last paragraph(referencing "vertical-align") do not apply.

7.28.8 "column-number"

XSL Definition:

Value:<number>
Initial:see prose
Inherited:no
Percentages:N/A
Media:visual
<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

For an fo:table-column formatting object, itspecifiesthe column-number of the table cells that may usepropertiesfrom this fo:table-column formatting object by usingthe from-table-column() function.The initialvalue is1 plus the column-number of the previous table-column, if thereis a previous table-column, and otherwise 1.

For an fo:table-cell it specifies the number of the first columnto be spanned by the table-cell. The initial value is the currentcolumn-number. For the first table-cell in a table-row, thecurrentcolumn number is 1. For other table-cells, the current column-numberis the column-number of the previous table-cell in the row plusthe number of columns spanned by that previous cell.

Note:

There is no requirement for column-numbers to be monotonicallyincreasing from formatting object to formatting object.

7.28.9 "column-width"

XSL Definition:

Value:<length> | <percentage>
Initial:see prose
Inherited:no
Percentages:refer to width of table
Media:visual
<length>

The "column-width" property specifies the width of thecolumn whose value is given by the "column-number" property. Thisproperty, if present, is ignored if the "number-columns-spanned" propertyis greater than 1. The "column-width" property must bespecified for every column,unless the automatic table layout is used.

Note:

The use of the "proportional-column-width()" function is onlypermitted when the fixed table layout is used.

If the use of proportional column widths aredesired 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" andinline-progression-dimension="100%" would allow proportionalcolumn widths while simultaneously creating a table as wide aspossible in the current context.

Note:

The result of using a percentage forthe width may be unpredictable, especially when using theautomatic table layout.

7.28.10 "empty-cells"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x79

Value:show | hide | inherit
Initial:show
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"empty-cells" property
http://www.w3.org/TR/REC-CSS2/tables.html#propdef-empty-cells

show

When this property has the value "show", borders are drawnaround empty cells (like normal cells).

hide

A value of "hide" means that no borders are drawn aroundempty cells. Furthermore, if all the cells in a row have a valueof "hide" and have no visible content, the entire row behaves asif it had "display: none".

In the separated borders model, this property controls the renderingof borders around cells and the rendering of the background of cellsthat have no visible content. Empty cellsand cells with the "visibility" property set to "hidden" are consideredto have no visible content. Visible content includes"&nbsp;" (non-breaking-space)and other whitespace except ASCII CR ("\0D"), LF ("\0A"), tab ("\09"),and space ("\20").

7.28.11 "ends-row"

XSL Definition:

Value:true | false
Initial:false
Inherited:no
Percentages:N/A
Media:visual
true

This cell ends a row.

false

This cell does not end a row.

Specifies whether this cell ends a row. This is only allowedfor table-cells that are not in table-rows.

7.28.12 "number-columns-repeated"

XSL Definition:

Value:<number>
Initial:1
Inherited:no
Percentages:N/A
Media:visual
<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

The "number-columns-repeated" property specifies the repetitionof a table-column specification n times; with the same effect asif the fo:table-column formatting object had been repeatedn timesin the result tree. The "column-number" property, for all but thefirst, is the column-number of the previous one plus its value ofthe "number-columns-spanned" property.

Note:

This handles HTML's "colgroup" element.

7.28.13 "number-columns-spanned"

XSL Definition:

Value:<number>
Initial:1
Inherited:no
Percentages:N/A
Media:visual
<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

For an fo:table-column the "number-columns-spanned" propertyspecifies the number of columns spanned by table-cells that may useproperties from this fo:table-columnformatting object using the from-table-column() function.

For an fo:table-cell the "number-columns-spanned" property specifiesthe number of columns which this cell spans in the column-progression-directionstarting with the current column.

7.28.14 "number-rows-spanned"

XSL Definition:

Value:<number>
Initial:1
Inherited:no
Percentages:N/A
Media:visual
<number>

A positive integer. If a non-positive or non-integer valueis provided, the value will be rounded to the nearest integer valuegreater than or equal to 1.

The "number-rows-spanned" property specifies the number of rowswhich this cell spans in the row-progression-direction startingwith the current row.

7.28.15 "starts-row"

XSL Definition:

Value:true | false
Initial:false
Inherited:no
Percentages:N/A
Media:visual
true

This cell starts a row.

false

This cell does not start a row.

Specifies whether this cell starts a row. This is onlyallowed for table-cells that are not in table-rows.

Note:

The "starts-row" and "ends-row" propertieswith a "true" value aretypically used when the input data does not have elements containingthe cells in each row, but instead, for example, each row startsat elements of a particular type.

7.28.16 "table-layout"

CSS2 Definition:

Value:auto | fixed | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"table-layout" property
http://www.w3.org/TR/REC-CSS2/tables.html#propdef-table-layout

fixed

Use the fixed table layout algorithm

auto

Use any automatic table layout algorithm

The "table-layout" property controls the algorithm used to layout the table cells, rows, and columns.

7.28.17 "table-omit-footer-at-break"

XSL Definition:

Value:true | false
Initial:false
Inherited:no
Percentages:N/A
Media:visual
true

This property specifies that the footer should be omitted.

false

This property specifies that the footer should not be omitted.

The "table-omit-footer-at-break" propertyspecifies if atable whose last area is not at the end of an area produced by thetable should end with the content of the fo:table-footer formatting objector not.

7.28.18 "table-omit-header-at-break"

XSL Definition:

Value:true | false
Initial:false
Inherited:no
Percentages:N/A
Media:visual
true

This property specifies that the header should be omitted.

false

This property specifies that the header should not be omitted.

The "table-omit-header-at-break" propertyspecifies if atable whose first area is not at the beginning of an area producedby the table should start with the content of the fo:table-headerformatting object or not.

7.29 Writing-mode-related Properties

The properties in this section control the setting of theinline-progression-direction, the block-progression-direction and theorientation of the glyphs that are placed on a baseline in theinline-progression-direction. The "writing-mode" property sets boththe "inline-progression-direction" and the"block-progression-direction"s.

The glyph orientation properties, "glyph-orientation-horizontal" and"glyph-orientation-vertical" set the orientation of the glyphrelative to the default glyph orientation. The default orientation forglyphs is with the top of the glyph oriented toward the top of thereference area of which the glyph area is a descendant; that is, theglyph orientation is the same as the reference-orientation of thereference area. Glyphs that are oriented at '90' or '-90' degreesfrom the reference-orientation are said to berotatedglyphs. Glyphs that are oriented 180 degrees from thereference-orientation are said to beinverted glyphs.

The "direction" property (which is controlled by the "unicode-bidi"property) only affects text in which the orientation of the glyphs isperpendicular to the dominant-baseline. For horizontal writing-modes,the "direction" property only affects character sequences thatgenerate glyphs that are not rotated. For vertical writing-modes, the"direction" property only affects character sequences that generateglyphs that are rotated.

The following sample fragment of XML is used to illustrate theinteraction between the "writing-mode," "direction" and"glyph-orientation-vertical" properties.

Markup of text in the next figure   [D]

Markup of text in the next figure

In the XML markup of the figure above, the characters are represented bytheir presentation form (and not their Unicode code points). Theorder in which the characters are depicted is their storage order.The Hebrew characters in the third line are (from left to right) thefirst four letters of the Hebrew alphabet: aleph, beth, gimel anddaleth. The generic identifiers in the XML markup are arbitrary, butare intended to suggest a sequence of text with two embedded textspans.

The following figure shows the effect of specifying an assortment ofvalues for the "direction" and "glyph-orientation-vertical" propertiesthat are specified on the three elements in the above XML fragment. Inall cases, the "writing-mode" is "tb-rl". And in all cases the UnicodeBIDI algorithm[UNICODE UAX #9] is applied to the characters that are the children ordescendants of the <t> element, sometimes with explicit directionalmarkup in terms of the "direction" property and other times using theintrinsic direction properties of the underlying characters. The UnicodeBIDI algorithm is applied as the last step of refinement(see5 Property Refinement / Resolution)and before mapping the characters to glyphs and applying anyrotation due to a glyph-orientation value.

The figure shows seven possible presentations of the sample XMLfragment, one with all glyphs having a vertical orientation and sixwith various combinations of a perpendicular glyph-orientation anddirection. In the figure, the correct reading order of the glyphs(left-to-right for the Latin and right-to-left for the Hebrewsub-sequences) is shown by the (red) arrow that is placed on thealphabetic baseline under the glyphs.

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 readingorder when the glyphs are viewed upright. For some of the cases, it isnecessary to turn the page one way to view the glyphs of one languageand the opposite way to view the glyphs of the other language in anupright position. The reading order is preserved by combining a visualre-ordering of the glyphs using the Unicode BIDI algorithm with aglyph-orientation that ensures the proper reading order for theordering of the glyphs that results from the Unicode BIDIalgorithm. Sometimes it is necessary to explicitly specify the"direction" property to force the desired visual ordering of theglyphs.

The property specifications that yield the six presentationsare given in the table that follows the figure.

Achievable rotations of Bidi text   [D]

Achievable rotations of Bidi text

Table: Properties that produce the above figure
Elements/ Cases<t><t-s1><t-s2>

(2)

writing-mode: tb-rl

glyph-orientation-vertical: 0

glyph-orientation-vertical: 90glyph-orientation-vertical: 90

(3)

writing-mode: tb-rl

glyph-orientation-vertical: 0

glyph-orientation-vertical: 90glyph-orientation-vertical: -90

unicode-bidi: bidi-override

direction: ltr

(4)

writing-mode: tb-rl

glyph-orientation-vertical: 0

glyph-orientation-vertical: -90

unicode-bidi: bidi-override

direction: rtl

glyph-orientation-vertical: -90

unicode-bidi: bidi-override

direction: ltr

(5)

writing-mode: tb-rl

glyph-orientation-vertical: 0

direction: rtl

glyph-orientation-vertical: -90

unicode-bidi: bidi-override

glyph-orientation-vertical: 90

(6)

writing-mode: tb-rl

glyph-orientation-vertical: 0

direction: rtl

glyph-orientation-vertical: -90

unicode-bidi: bidi-override

glyph-orientation-vertical: -90

unicode-bidi: bidi-override

direction: ltr

(7)

writing-mode: tb-rl

glyph-orientation-vertical: 0

direction: rtl

glyph-orientation-vertical: 90

unicode-bidi: embed

direction: ltr

glyph-orientation-vertical: 90

Note:

  1. 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 widthvariants of the characters. If the orientation of the all glyphs isvertical, then there is no re-ordering of characters.If the "writing-mode" is set to "tb-lr" or "tb-rl" then the "direction" isset to "ltr" and correspondingly, a "writing-mode" set of "bt-lr" or"bt-rl" sets the "direction" to "rtl". Therefore, it is only necessaryto explicitly set the "direction" property when it would be differentthan that set by setting the "writing-mode"; for example, cases (5)through (7).

  2. Case (2) can either have the explicit property settings shown in thetable or the "glyph-orientation-vertical" property on the <t>element can have the value "auto" and the English and Hebrewcharacters can be half-width characters. (Of course, there are not anyhalf-width Hebrew characters in real Unicode.) In this case, there-ordering of characters comes from the bi-directional charactertypes that are assigned to each Unicode character: the Romancharacters have type "L" for left to right and the Hebrew charactershave type "R" for right to left.

  3. Cases (5) through (7) all explicitly set the "direction" property to"rtl". This sets the paragraph embedding level for the Unicode BIDIalgorithm to be right to left. Even though the "direction" property isset to "rtl", the ideographic glyphs are not re-ordered because theirorientation is not perpendicular to the dominant-baseline.

  4. In cases (5) and (6) for the <t-s1> element, the "unicode-bidi"property is set to override even though there is no explicitspecification for the "direction" property. The inherited value of the"direction" property (which is "rtl" in this case) is used.

  5. In case (7) for the <t-s1> element, the "unicode-bidi" propertyis set to "embed". It is not necessary to use "bidi-override" becausethe bi-directional character type for the content of <t-s1> isalready "L". (Using the value "bidi-override" would have the sameeffect as the "embed", however.) The embed resets the embedding levelof the content of the <t-s1> to be left to right. Even the"embed" (and the specific setting of the "unicode-bidi" property) isnot needed because the bi-directional character type, "L" of theEnglish characters is sufficient to raise the embedding level andcause them to be ordered left to right. Setting the "direction"property to "ltr" is needed if the "unicode-bidi" property is otherthan "normal" because the inherited value of "direction" is "rtl".

If paired punctuation characters, such as parentheses, had beenincluded in one of the text spans, then these characters may need tobe "mirrored" as described in the Unicode BIDI algorithm. Mirroring acharacter means reversing the direction the character faces; forexample, mirroring a left parenthesis makes it into a rightparenthesis. This insures that the mirrored characters always face thetext they surround.

If the "glyph-orientation" of the characters to which the glyphscorrespond is "90" and the embedding level in which the characters lieis odd, then the paired glyphs need to be mirrored. Alternatively, ifthe "glyph-orientation" of the characters to which the glyphscorrespond is "-90" and the embedding level in which the characterslie is even, then the paired glyphs need to be mirrored. In theexample above, parentheses that surround the Latin text would not bemirrored in cases (2), (3) and (7), but would need to be mirrored incases (4) through (6). Conversely, parentheses that surround theHebrew text would not be mirrored in cases (4) through (6), but wouldneed to be mirrored in cases (2), (3), and (7).

Within a string of vertical text, when the value of the"glyph-orientation-vertical" property is "90", then each affectedglyph is rotated 90 degrees clockwise. This rotation changes the waythe rotated glyph is aligned. The horizontal alignment-point of therotated glyph is aligned with the appropriate baseline from thevertical baseline-table. The appropriate baseline is the baselineidentified 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, Latinglyphs are aligned to the (vertical) "alphabetic" baseline and someIndic glyphs are aligned to the (vertical) "hanging" baseline.

Note:

If a glyph, such as a ligature or syllabic glyph, is generated frommore than one character, then all those characters must havethe same value for the "alignment-baseline" property.

The positions of the (vertical) baselines are chosen to insure thatthe rotated glyphs will not protrude too far (if at all) outside theline area for the vertical line when the "line-stacking-strategy"property has the value "line-height" or "font-height". In this case,we will say the rotated text iswell aligned in thevertical line area.

To preserve the property that rotated text in a vertical line is wellaligned when the "glyph-orientation-vertical" property value is"-90", the vertical baseline-table must bereflectedbefore the rotated text is aligned. Let C be the value of the offsetto the "central" baseline in the baseline-table. A baseline-table isreflected by negating every offset in the baseline table (wherenegating "-N" yields "N") and adding 2 times C to each of the negatedoffsets. The "central" baseline is defined in7.14 Area Alignment Properties.

This action is called "reflecting" because the offsetfrom the original dominant baseline to any baseline in the reflectedbaseline-table places that baseline on the opposite side of the"central" baseline and the distance from the "central" baseline to thatbaseline is the same as was from the "central" baseline to thatbaseline in its original (un-reflected) position. In short, thepositions of the baselines are reflected across the"central" baseline.

Note:

IfX is the offset of baseline X andC isthe offset of the "central" baseline, then-X+2*C = C+(C-X).C+(C-X) is the offset of the "central" baseline plus thedistance between the "central" baseline and baseline X, the baselinebeing reflected.

Reflecting is necessary, because both the"alphabetic" and the "hanging" baselines are near the outer edges ofthe vertical line area. If the glyph were simply rotated 180 degrees,then it would stick way out of the intended line area. This isprevented by reflecting the baselines for glyphs that are perpendicularto the dominant baseline and that are rotated 180 degrees from thedirection for which that baseline was intended. This last statementapplies as much to horizontal baselines as it does to verticalbaselines.

Mixed glyph rotations and writing modes   [D]

The figure illustrates the positioning of rotated and inverted glyphsin both vertical and horizontal writing-modes. The three examples showfirst some glyphs typical of the writing mode and then some atypicalglyphs in each of the possible orientations, 0, 90, 180 and -90degrees, in that order. The alignment-point for each glyph is shown asa small "x" whose center is at the alignment-point.

Example 1 shows the "tb-rl" vertical writing-mode. It has theideographic glyph for "country" as its normal glyph and the twoletters sequence, "Ap" as the glyphs that are rotated. Note that inthe default orientation (0 degrees) and in the inverted orientation,the full width Latin glyphs are used; in the two other orientations,the proportional Latin glyphs are used. There is a small amount ofwhite space between the proportional and the full width Latinglyphs. The dominant baseline is the "central" baseline which is shownin blue. The reflected baseline table is shown for the last (-90degree) rotation. Note that the position of the "central" baselinedoes not change when the baseline table is reflected. For the invertedglyphs and the glyphs with a -90 degree rotation, the start-edge ofthe rotated glyph is on the opposite side from where it is in theun-rotated glyph; hence, the alignment-point on that start edge is noton the edge where the font tables normally place it.

Examples 2 and 3 show the "lr-tb" horizontal writing-mode. They havethe Latin glyph sequence, "Ap" as their normal glyphs. Example 2rotates the syllabic Gurmukhi glyph for "ji" and example 3 rotatesthe ideographic glyph for "country". In example 2, the whole syllabicglyph is rotated as in indivisible unit. For the 90 and -90 degreerotations, the vertical alignment-point, aligning to the "central"baseline, is used in both Examples. Similarly, for the inverted glyph,the baseline table is reflected. For the glyphs with a 90 degreerotation and the inverted glyphs, the start-edge of the rotated glyphis on the opposite side from where it is in the un-rotated glyph;hence, the alignment-point on that start edge is not on the edge wherethe font tables normally place it.

7.29.1 "direction"

CSS2 Definition:

Value:ltr | rtl | inherit
Initial:ltr
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"direction" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-direction

This property specifies the base writing direction of blocksand the direction of embeddings and overrides(see[UNICODE UAX #9])for the Unicode BIDI algorithm. In addition, it specifiesthe direction of table column layout, the direction of horizontal overflow,and the position of an incomplete last line in a block in case of'text-align: justify'.

Values for this property have the following meanings:

ltr

Left to right direction.

rtl

Right to left direction.

For the 'direction' property to have any effect on inline-levelelements, the 'unicode-bidi' property's value must be 'embed' or'override'.

Note:

The 'direction' property, when specified for table column elements,is not inherited by cells in the column since columns don't existin the document tree. Thus, CSS cannot easily capture the "dir"attribute inheritance rules described in [HTML40], section 11.3.2.1.

XSL modifications to the CSS definition:

  • The specific use of "direction" and "unicode-bidi" on inlineobjects is to set the inline-progression-direction to be used by the UnicodeBIDI algorithm. This direction may override theinline-progression-direction determined by the current writing-modeand the implicit direction determined by the Unicode BIDIalgorithm.

  • To insure consistency with the "writing-mode" property, the "direction"property is initialized to the value that sets the sameinline-progression-direction as is set by the "writing-mode" propertywhenever that "writing-mode" property sets that direction. If the"direction" property is explicitly specified on the same formatting object thevalue of the "direction" property will override theinline-progression-direction set by the "writing-mode".

  • This property only has an effect on text in which theorientation of the glyphs is perpendicular to theinline-progression-direction. Therefore, vertical ideographic text with the initial value for "glyph-orientation-vertical" isnot affected by this property; vertical text for which the "glyph-orientation-vertical" property has the valueof "90" or "-90" degrees is affected.

    Note:

    When the inline-progression-direction is "tb", as is typical for vertical text, then this corresponds to a "lr" inline-progression-direction for text with a glyph-orientation of '90' degrees and an "rl" inline-progression-direction for text with a glyph-orientation of "-90" degrees.

  • The "writing-mode" propertyestablishes both the block-progression-direction and theinline-progression-direction. The "direction" property only changesthe inline-progression-direction and is used primarily for formattingobjects that generate inline-areas that are not also referenceareas. Use of the "direction" property for other formatting objects isdeprecated in this specification.

  • When mapping CSS to XSL, the XSL "writing-mode" propertyshould be used rather than the "direction" property for all block-leveldirectionality control. XSL's "writing-mode" should also be usedfor any inline-container or block-containerobjects. The "direction" property should be used only for control/overrides ofthe Unicode BIDI algorithm on bidi-override formattingobjects.

Implementations must support the values of the "direction"values defined in this Recommendation that are required to supportthe "writing-mode" values supported by the implementation.

7.29.2 "glyph-orientation-horizontal"

XSL Definition:

Value:<angle> | inherit
Initial:0deg
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<angle>

The angle is restricted to 0, 90, 180, and 270 degrees.The User Agent shall round the value of the angle to the closestof the permitted values.

A value of "0deg" indicates that all glyphs are set with the topof the glyphs toward the top of the reference-area. The top of the reference-areais defined by the reference-area'sreference-orientation.

A value of "90deg" indicates a rotation of 90-degrees clockwisefrom the "0deg" orientation.

This property specifies the orientationof glyphs relative to the path direction specified by the 'writing-mode'.This property is applied only to text writtenin a horizontal writing-mode.

The value of this property affects both the alignment and width of the glyph-areas generated for the affected glyphs. If a glyph is oriented so that it is not perpendicular to the dominant-baseline, then the verticalalignment-point of the rotated glyph is aligned with thealignment-baseline appropriate to that glyph. The baseline to which the rotated glyph is aligned isthe (horizontal) baseline identified by the "alignment-baseline" for thescript to which the glyph belongs. The width of the glyph-area is determined from the vertical width font characteristic for the glyph.

7.29.3 "glyph-orientation-vertical"

XSL Definition:

Value:auto | <angle> | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

auto
  • Fullwidth ideographicand fullwidth Latin text (excluding ideographic punctuation) willbe set with a glyph-orientation of 0-degrees.

    Ideographic punctuation and other ideographic characters havingalternate horizontal and vertical forms will use the vertical formof the glyph.

  • Text which is not fullwidth will be set with a glyph-orientationof 90-degrees.

    This reorientation rule applies only to the first-level non-ideographictext. All further embedding of writing-modes or BIDI processingwill be based on the first-level rotation.

    Note:

    • This is equivalent to having set the non-ideographictext string horizontally honoring the bidi-rule, then rotating theresultant sequence of inline-areas (one area for each change ofglyph direction) 90-degrees clockwise.

      It should be noted that text set in this "rotated" manner maycontain ligatures or other glyph combining and reordering commonto the language and script. (This "rotated" presentation form doesnot disable auto-ligature formation or similar context-driven variations.)

    • The determination of which characters should be auto-rotatedmay vary across User Agents. The determination is based on a complexinteraction between country, language, script, character properties,font, and character context. It is suggested that one consult theUnicode TR 11 and the various JIS or other nationalstandards.

<angle>

The angle is restricted to 0, 90, 180, and 270 degrees.The User Agent shall round the value of the angle to the closestof the permitted values.

A value of "0deg" indicates that all glyphs are set with the topof the glyphs toward the top of the reference-area. The top of the reference-areais defined by the reference-area'sreference-orientation.

A value of "90deg" indicates a rotation of 90-degrees clockwisefrom the "0deg" orientation.

This property specifies the orientationof glyphs relative to the path direction specified by the writing-mode.This property is applied only text writtenwith an inline-progression-directiontop-to-bottom orbottom-to-top.

Its most common usage is to differentiate between the preferredorientation of alphabetic text in vertically written Japanese documents(glyph-orientation="auto") vs. the orientation of alphabetic text inwestern signage and advertising (glyph-orientation="0deg").

The value of this property affects both the alignment and width of the glyph-areas generated for the affected glyphs. If a glyph is oriented so that it is perpendicular to the dominant-baseline, then the horizontalalignment-point of the rotated glyph is aligned with thealignment-baseline appropriate to that glyph. The baseline to which the rotated glyph is aligned isthe (vertical) baseline identified by the "alignment-baseline" for thescript to which the glyph belongs. The width of the glyph-area is determined from the horizontal width font characteristic for the glyph.

7.29.4 "text-altitude"

XSL Definition:

Value:use-font-metrics | <length> | <percentage> | inherit
Initial:use-font-metrics
Inherited:no
Percentages:refer to font's em-height
Media:visual

Values have the following meanings:

use-font-metrics

Uses a value for the "height"of the font above the dominant baseline,calculated as the distance between the text-before baseline andthe dominant baseline,obtained fromthe nominal font for fo:block, fo:character, andfo:leader when theleader-pattern does not havethe value "use-content".For fo:leader, when theleader-pattern has the value "use-content",it is obtained from the nominal font of the first child.

Conforming implementations may choose as anactual value any value in the range of text-altitudes usedby fonts of the same script and font-size, instead of the valuesfrom the font data.

<length>

Replaces the "height" value found in the font.

Specifies the "height" to be used for the ascentabove the dominant baseline.

7.29.5 "text-depth"

XSL Definition:

Value:use-font-metrics | <length> | <percentage> | inherit
Initial:use-font-metrics
Inherited:no
Percentages:refer to font's em-height
Media:visual

Values have the following meanings:

use-font-metrics

Uses a value for the "depth"of the font below the baseline,calculated as the distance betweenthe dominant baseline and the text-after baseline,obtained fromthe nominal font for fo:block, fo:character, andfo:leader when theleader-pattern does not havethe value "use-content".For fo:leader, when theleader-pattern has the value "use-content",it is obtained from the nominal font of the first child.

Conforming implementations may choose as anactual value any value in the range of text-depths usedby fonts of the same script and font-size, instead of the valuesfrom the font data.

<length>

Replaces the "depth" value found in the font.

Specifies the "depth" to be used for the descentbelow the dominant baseline.

7.29.6 "unicode-bidi"

CSS2 Definition:

Value:normal | embed | bidi-override | inherit
Initial:normal
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"unicode-bidi" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-unicode-bidi

Values have the following meanings:

normal

The element does not open an additionallevel of embedding with respect to the bidirectional algorithm.

For inline-level elements, implicit reordering works across elementboundaries.

embed

If the element is inline-level, thisvalue opens an additional level of embedding with respect to thebidirectional algorithm. The direction of this embedding level is givenby the 'direction' property. Inside the element, reordering is doneimplicitly. This corresponds to adding a LRE (U+202A; for 'direction:ltr') or RLE (U+202B; for 'direction: rtl') at the start of theelement and a PDF (U+202C) at the end of the element.

bidi-override

If the element is inline-level ora block-level element that contains only inline-level elements,this creates an override. This means that inside the element, reorderingis strictly in sequence according to the 'direction' property; theimplicit part of the bidirectional algorithm is ignored. This correspondsto adding a LRO (U+202D; for 'direction: ltr') or RLO (U+202E; for'direction: rtl') at the start of the element and a PDF (U+202C)at the end of the element.

The final order of characters in eachblock-level element is the same as if the bidi control codes hadbeen added as described above, markup had been stripped, and theresulting character sequence had been passed to an implementationof the Unicode bidirectional algorithm for plain text that producedthe same line-breaks as the styled text. In this process, non-textualentities such as images are treated as neutral characters, unlesstheir 'unicode-bidi' property has a value other than 'normal', inwhich case they are treated as strong characters in the 'direction'specified for the element.

Please note that in order to be able to flow inline boxes ina uniform direction (either entirely left-to-right or entirely right-to-left),more inline boxes (including anonymous inline boxes) may have tobe created, and some inline boxes may have to be split up and reorderedbefore flowing.

Because the Unicode algorithm has a limit of 15 levels of embedding,care should be taken not to use 'unicode-bidi' with a value otherthan 'normal' unless appropriate. In particular, a value of 'inherit'should be used with extreme caution. However, for elements thatare, in general, intended to be displayed as blocks, a setting of'unicode-bidi: embed' is preferred to keep the element togetherin case display is changed to inline.

XSL modifications to the CSS definition:

The phrasing of the first paragraph of the general description(following the value breakouts) should read "The final order ofpresentation of the characters...".

In Unicode 3.0, the Unicode Consortium has increased the limit ofthe levels of embedding to 61 (definition BD2 in[UNICODE UAX #9]).

Fallback:

If it is not possible to present the characters in the correct order,then the User Agent should display eithera 'missing character' glyphor display some indication that the content cannot be correctly rendered.

7.29.7 "writing-mode"

XSL Definition:

Value:lr-tb |rl-tb |tb-rl |tb-lr |bt-lr |bt-rl |lr-bt |rl-bt |lr-alternating-rl-bt |lr-alternating-rl-tb |lr-inverting-rl-bt |lr-inverting-rl-tb |tb-lr-in-lr-pairs |lr |rl |tb |inherit
Initial:lr-tb
Inherited:yes (see prose)
Percentages:N/A
Media:visual

Values have the following meanings:

lr-tb

Inline components and text withina line are written left-to-right. Lines and blocks are placed top-to-bottom.

Note:

Typically, this is the writing-mode for normal"alphabetic" text.

Establishes the following directions:

  • inline-progression-direction to left-to-right

    If any right-to-left reading characters are present in the text,the inline-progression-direction for glyph-areas may befurther modified by the Unicode BIDI algorithm.

  • block-progression-direction to top-to-bottom

  • shift-direction to bottom-to-top

rl-tb

Inline components and text withina line are written right-to-left. Lines and blocks are placed top-to-bottom.

Note:

Typically, this writing mode is used in Arabic and Hebrew text.

Establishes the following directions:

  • inline-progression-direction to right-to-left

    If any left-to-right reading characters or numbers are presentin the text, the inline-progression-direction forglyph-areas maybe further modified by the Unicode BIDI algorithm.

  • block-progression-direction to top-to-bottom

  • shift-direction to bottom-to-top

tb-rl

Inline components and text withina line are written top-to-bottom. Lines and blocks are placed right-to-left.

Note:

Typically, this writing mode is used in Chinese and Japanesetext.

Establishes the following directions:

  • inline-progression-direction to top-to-bottom

  • block-progression-direction to right-to-left

  • shift-direction to left-to-right

tb-lr

Inline components and text within a line are stacked top-to-bottom.Lines and blocks are stacked left-to-right.

Establishes the following directions:

  • inline-progression-direction to top-to-bottom

  • block-progression-direction to left-to-right

  • shift-direction to right-to-left

bt-lr

Inline components and text within a line are stacked bottom-to-top.Lines and blocks are stacked left-to-right.

Establishes the following directions:

  • inline-progression-direction to bottom-to-top

  • block-progression-direction to left-to-right

  • shift-direction to right-to-left

bt-rl

Inline components and text within a line are stacked bottom-to-top.Lines and blocks are stacked right-to-left.

Establishes the following directions:

  • inline-progression-direction to bottom-to-top

  • block-progression-direction to right-to-left

  • shift-direction to left-to-right

lr-bt

Inline components and text within a line are stacked left-to-right.Lines and blocks are stacked bottom-to-top.

Establishes the following directions:

  • inline-progression-direction to left-to-right

  • block-progression-direction to bottom-to-top

  • shift-direction to bottom-to-top

rl-bt

Inline components and text within a line are stacked right-to-left.Lines and blocks are stacked bottom-to-top.

Establishes the following directions:

  • inline-progression-direction to right-to-left

  • block-progression-direction to bottom-to-top

  • shift-direction to bottom-to-top

lr-alternating-rl-bt

Inline components and text within the firstline are stacked left-to-right, within the second linethey are stacked right-to-left; continuing in alternation.Lines and blocks are stacked bottom-to-top.

Establishes the following directions:

  • inline-progression-direction toleft-to-right for odd-numbered lines,right-to-left for even-numbered lines

  • block-progression-direction to bottom-to-top

  • shift-direction to bottom-to-top

lr-alternating-rl-tb

Inline components and text within the firstline are stacked left-to-right, within the second linethey are stacked right-to-left; continuing in alternation.Lines and blocks are stacked top-to-bottom.

Establishes the following directions:

  • inline-progression-direction toleft-to-right for odd-numbered lines,right-to-left for even-numbered lines

  • block-progression-direction to top-to-bottom

  • shift-direction to bottom-to-top

lr-inverting-rl-bt

Inline components and text within the firstline are stacked left-to-right, within the second linethey inverted and are stacked right-to-left; continuing in alternation.Lines and blocks are stacked bottom-to-top.

Establishes the following directions:

  • inline-progression-direction toleft-to-right for odd-numbered lines,right-to-left for even-numbered lines

  • block-progression-direction to bottom-to-top

  • shift-direction tobottom-to-top for odd-numbered lines,top-to-bottom for even-numbered lines

lr-inverting-rl-tb

Inline components and text within the firstline are stacked left-to-right, within the second linethey inverted and are stacked right-to-left; continuing in alternation.Lines and blocks are stacked top-to-bottom.

Establishes the following directions:

  • inline-progression-direction toleft-to-right for odd-numbered lines,right-to-left for even-numbered lines

  • block-progression-direction to top-to-bottom

  • shift-direction tobottom-to-top for odd-numbered lines,top-to-bottom for even-numbered lines

tb-lr-in-lr-pairs

Text is written in two character, left-to-right,pairs. The pairsare then stacked top-to-bottom to form a line.Lines and blocks are stacked left-to-right.

Establishes the following directions:

  • inline-progression-direction to top-to-bottom

  • block-progression-direction to left-to-right

  • shift-direction to right-to-left

The two glyph areas in the pair are aligned in theinline-progression-direction in the same manner as for lineswith a left-to-right inline progression direction using the values ofthe "alignment-baseline", "alignment-adjust", "baseline-shift", and"dominant-baseline" properties.

Note:

Informally: the two glyph areas are placedwith respect to each other vertically asif they were part of a line written left-to-right.

For stacking into lines each pair is considered a glyph areawith an allocation rectangle that is the minimum rectangle requiredto enclose the allocation rectangles of the glyphs in the pair.

In the block-progression-direction the pairs are aligned ona line that is half-way between the end-edge of the first glyph areaand the start-edge of the second glyph area in the pair.

lr

Shorthand for lr-tb.

rl

Shorthand for rl-tb.

tb

Shorthand for tb-rl.

Thewriting-mode trait on an area is indirectly derivedfrom the "writing-mode" property on the formatting objectthat generates the area or the formatting object ancestors of thatformatting object.The "writing-mode" property appliesonly to formatting objects thatset upa reference-area.Each value of writing-mode sets all three of the directiontraits indicated in each of the value descriptions above on thereference-area. (See the area model for a description of the directiontraits and their usage.)

Note:

To change the "writing-mode" within an fo:flow or fo:static-content,either the fo:block-container or the fo:inline-container,as appropriate, should be used.

If one only wishes to change the inline-progression-directionto override the Unicode BIDI-rule, one need not use an fo:inline-container.Instead, one may use the "direction" property onthe fo:bidi-override.

Implementations must support at least one of the "writing-mode"values defined in this Recommendation.

7.30 Miscellaneous Properties

7.30.1 "change-bar-class"

XSL Definition:

Value:<name>
Initial:none, value required
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

<name>

A name to allow pairing of fo:change-bar-begin andfo:change-bar-end elements.

This property associates a name with an fo:change-bar-begin orfo:change-bar-end element so that they can be matchedto each other even if other fo:change-bar-begin andfo:change-bar-end elements are interspersed. Thisallows for "straddling pairs" of these elements.

7.30.2 "change-bar-color"

XSL Definition:

Value:<color>
Initial:the value of the color property
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<color>

Specifies the color of the change bar.

Note:

The color of any change bar is determined by the value of this propertyat the fo:change-bar-begin that starts the change bar; changes to thisproperty after that do not affect the color of the changebar begin generated.

7.30.3 "change-bar-offset"

XSL Definition:

Value:<length>
Initial:6pt
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<length>

Gives the distance from the edge of the column area containing the textthat is marked as changed to the center of the generated change bar.

A positive distance is directed away from the column region and into themargin regardless of thechange-bar-placement.

Note:

The offset of any change bar is determined by the value of this propertyat the fo:change-bar-begin that starts the change bar; changes to thisproperty after that do not affect the offset of the changebar begin generated.

Note:

Relative lengths (i.e., percentagevalues and lengths with units of "em") are not permitted for the value ofthis property.

7.30.4 "change-bar-placement"

XSL Definition:

Value:start | end | left | right | inside | outside | alternate
Initial:start
Inherited:yes
Percentages:N/A
Media:visual

This property determineswhere, relative to the column areas, the change bars will occur.Values have the following meanings:

start

The change bar will be offset from the start edge of all column areas.

end

The change bar will be offset from the end edge of all column areas.

left

The change bar will be offset from the left edge of all column areas.

right

The change bar will be offset from the right edge of all column areas.

inside

If the page binding edge is on the start-edge, the change bar will be offsetfrom the start edge of all column areas. If the binding is the end-edge, the change bar will be offsetfrom the end edge of all column areas. If the page binding edge is on neither thestart-edge nor end-edge, the change bar will be offset from the start edge of all column areas.

outside

If the page binding edge is on the start-edge, the change bar will be offsetfrom the end edge of all column areas. If the binding is the end-edge, the change bar will be offsetfrom the start edge of all column areas. If the page binding edge is on neither thestart-edge nor end-edge, the change bar will be offset from the end edge of all column areas.

alternate

When there are exactly two columns, the change bar will be offset fromthe start edge of all column one areas and the end edge of all column twoareas; when there are any other number of columns, this value is equivalentto 'outside'.

Note:

The placement of any change bar is determined by the value of this propertyat the fo:change-bar-begin that starts the change bar; changes to thisproperty after that do not affect the placement of the changebar begin generated.

7.30.5 "change-bar-style"

XSL Definition:

Value:<border-style>
Initial:none
Inherited:yes
Percentages:N/A
Media:visual

Specifies the style of the change bar.

See definition of property border-top-style (7.8.20 border-top-style).

Note:

The style of any change bar is determined by the value of this propertyat the fo:change-bar-begin that starts the change bar; changes to thisproperty after that do not affect the style of the changebar begin generated.

Note:

Conforming implementations may interpret 'dotted', 'dashed', 'double', 'groove','ridge', 'inset', and 'outset' to be 'solid'.

7.30.6 "change-bar-width"

XSL Definition:

Value:<border-width>
Initial:medium
Inherited:yes
Percentages:N/A
Media:visual

Specifies the thickness of the change bar.

Values have the following meanings:

thin

A thin border.

medium

A medium border.

thick

A thick border.

<length>

The border's thickness has an explicit value. Explicitborder widths cannot be negative.

Note:

The thickness of any change bar is determined by the value of this propertyat the fo:change-bar-begin that starts the change bar; changes to thisproperty after that do not affect the thickness of the changebar begin generated.

Note:

Relative lengths (i.e., percentagevalues and lengths with units of "em") are not permitted for the value ofthis property.

7.30.7 "content-type"

XSL Definition:

Value:<string> | auto
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

This property specifies the content-type and may be usedby a User Agent to select a rendering processor for the object.

Values for this property have the following meanings:

auto

No identification of the content-type. The User Agentmay determine it by "sniffing" or by other means.

<string>

A specification of the content-type in terms of either amime-type or a namespace.

A mime-type specification has the form "content-type:" followedby a mime content-type, e.g., content-type="content-type:xml/svg".

A namespace specification has the form "namespace-prefix:" followedby a declared namespace prefix, e.g., content-type="namespace-prefix:svg".If the namespace prefix is null, the content-type refers to thedefault namespace.

7.30.8 "id"

XSL Definition:

Value: <id>
Initial:see prose
Inherited:no, see prose
Percentages:N/A
Media:all

Values have the following meanings:

<id>

An identifier unique within all objectsin the result tree with the fo: namespace. It allows referencesto this formatting object by other objects.

The "inherit" value is not allowed on this property.

Theinitial value of this property is a random and uniqueidentifier. The algorithm to generate this identifier issystem-dependent.

7.30.9 "intrinsic-scale-value"

XSL Definition:

Value:<percentage> | inherit
Initial:100%
Inherited:yes
Percentages:user defined
Media:visual

Values have the following meanings:

<percentage>

Specifies the scale factor.

Specifies the scale factor that the intrinsic size correspondsto.

7.30.10 "page-citation-strategy"

XSL Definition:

Value:[ all | normal | non-blank | inherit
Initial:all
Inherited:no
Percentages:N/A
Media:visual

This property determines what set of page areas are considered by apage number citation formatting object. For this property definition,an areamatches aref-id trait withvalue V if the area is generated either(a.) by the formatting object whose id trait is matched by V,or (b.) by any descendant of that formatting object.

A formatting object D is ainitial descendant of anotherformatting object T if D is a descendant of T, the parent of D isa initial descendant of T or is T itself, and D is the initial child ofthat parent. Similarly, A formatting object D is afinal descendant of another formatting object T,if D is a descendant of T, the parent of D is a final descendant of Tor is T itself, and D is the final child of that parent.

Finally, a formatting object will be said togeneratea blank page if that formatting object or any of itsfinal descendants has a "break-after" property that causesthe generation of a blank page or if its immediately following siblingor any if the sibling's initial descendants has a "break-before"property that causes the generation of a blank page or if thatformatting object is an fo:page-sequence and its "force-page-count"property or the "initial-page-number" on its immediate followingsibling causes the generation of a blank page.

The values have the following meanings:

all

The set of pages that might be cited includes the pagescontaining,as a descendant, any area that matches theref-id traitof the formatting object on which this property appears plus anyblank pages generated by the referenced formatting object.

normal

The set of pages that might be cited includes the pages containing,as a descendant, any normal area that matches theref-idtrait of the formatting object on which this property appears,and which is either returned to that formatting object or is adescendant of a normal area returned to that formatting object.

non-blank

The set of pages that might be cited includes the pages containing,as a descendant, any area that matches theref-id traitof the formatting object on which this property appears.This set of pages includes pages containing as descendantsout-of-line areas such as those generated byfo:footnote and fo:float.

7.30.11 "provisional-label-separation"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:6.0pt
Inherited:yes
Percentages:refer to inline-progression-dimension of closest ancestor block-area that is not a line-area
Media:visual

Values have the following meanings:

<length>

The "provisional-label-separation" is specified as a length.

<percentage>

The "provisional-label-separation" is specified as a percentage ofthe inline-progression-dimension of the closest ancestor block-area.

Specifies the provisional distance between the end of thelist-item-label and the start of the list-item-body. The value isnot directly used during formatting, but is used in the computationof the value of the label-end function.

label-end() = width of the content-rectangle of thereference-area intowhich the list-block is placed - (the value of the provisional-distance-between-starts+ the value of the start-indent+ start-intrusion-adjustment- the value of the provisional-label-separation)of the closest ancestor fo:list-block.

If there is no ancestral fo:list-block, the value used for theprovisional-label-separation andprovisional-distance-between-starts in the above formula shall beequal to inherited-property-value(provisional-label-separation) andinherited-property-value(provisional-distance-between-starts)respectivelyof the FO in which the body-start() function is evaluated.

7.30.12 "provisional-distance-between-starts"

XSL Definition:

Value:<length> | <percentage> | inherit
Initial:24.0pt
Inherited:yes
Percentages:refer to inline-progression-dimension of closest ancestor block-area that is not a line-area
Media:visual

Values have the following meanings:

<length>

The "provisional-distance-between-starts" is specified as a length.

<percentage>

The "provisional-distance-between-starts" is specified as a percentage ofthe inline-progression-dimension of the closest ancestor block-area.

Specifies the provisional distance between the start-indentof the list-item-label and the start-indent of thelist-item-body. The value is notdirectly used during formatting, but is used in the computationof the value of the body-start function.

body-start() = the value of the start-indent +start-intrusion-adjustment +the value of theprovisional-distance-between-starts of the closest ancestor fo:list-block.

If there is no ancestral fo:list-block, the value used for theprovisional-distance-between-starts in the above formula shall beequal to inherited-property-value(provisional-distance-between-starts)of the FO in which the body-start() function is evaluated.

7.30.13 "ref-id"

XSL Definition:

Value:<idref> | inherit
Initial:none, value required
Inherited:no
Percentages:N/A
Media:all

Values have the following meanings:

<idref>

The "id" of an object in the formatting objecttree.

Reference to the object having thespecified unique identifier.

7.30.14 "scale-option"

XSL Definition:

Value:width | height | inherit
Initial:width
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

width

Requests the scale-factor applied to the width of the graphic.

height

Requests the scale-factor applied to the height of the graphic.

Specifies whether the scale-factor applied to the width orthe height of the graphic should be retrieved.

7.30.15 "score-spaces"

XSL Definition:

Value:true | false | inherit
Initial:true
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

true

Text-decoration will be applied to spaces

false

Text-decoration will not be applied to spaces

Specifies whether the text-decorationproperty shall be applied to spaces.

7.30.16 "src"

XSL Definition:

Value:<uri-specification> | inherit
Initial:none, value required
Inherited:no
Percentages:N/A
Media:visual

Values have the following meanings:

<uri-specification>

Specifies the URI-specification to locate an external resource suchas image/graphic data to be included as the contentof this object, or color-profile data.

7.30.17 "visibility"

CSS2 Definition:

Value:visible | hidden | collapse | inherit
Initial:visible
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"visibility" property
http://www.w3.org/TR/REC-CSS2/visufx.html#propdef-visibility

The 'visibility' property specifies whether the boxes generatedby an element are rendered. Invisible boxes still affect layout(set the 'display' property to 'none' to suppress box generationaltogether). Values have the following meanings:

visible

The generated box is visible.

hidden

The generated box is invisible (fully transparent), butstill affects layout.

collapse

Please consult the section on dynamic row and column effectsin tables. If used on elements other than rows or columns, "collapse"has the same meaning as "hidden".

This property may be used in conjunction with scripts tocreate dynamic effects.

XSL modifications to the CSS definition:

Changed initial value to visible; (it is "inherit" inCSS) and made it an inherited property.

7.30.18 "z-index"

CSS2 Definition:

Value:auto | <integer> | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"z-index" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-z-index

For a positioned box, the "z-index" property specifies:

1. The stack level of the box in the current stacking context.

2. Whether the box establishes a local stacking context.

Values have the following meanings:

auto

The stack level of the generated box in the current stackingcontext is the same as its parent's box. The box does not establisha new local stacking context.

<integer>

This integer is the stack level of the generated box inthe current stacking context. The box also establishes a local stackingcontext in which its stack level is "0".

This example [see the CSS specification] demonstrates thenotion of transparency. The default behavior of a box is to allowboxes behind it to be visible through transparent areas in its content.In the example, each box transparently overlays the boxes belowit. This behavior can be overridden by using one of the existingbackground properties.

7.31 Shorthand Properties

The following properties are all shorthand properties.Shorthands are only included in the highest XSL conformancelevel: "complete" (see8 Conformance).

Shorthand properties take a list of subproperty valuesorthe value "inherit". One cannot mix 'inherit' with other subpropertyvalues as it would not be possible to specify the subproperty to which"inherit" applied.

7.31.1 "background"

CSS2 Definition:

Value:[<background-color> ||<background-image>|| <background-repeat> || <background-attachment> || <background-position>]] | inherit
Initial:not defined for shorthand properties
Inherited:no
Percentages:allowed on 'background-position'
Media:visual

CSS2 Reference:"background" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background

The "background" property is a shorthand property for settingthe individual background properties (i.e., background-color, background-image,background-repeat, background-attachment and background-position)at the same place in the stylesheet.

The "background" property first sets all the individual backgroundproperties to their initial values, then assigns explicit valuesgiven in the declaration.

7.31.2 "background-position"

CSS2 Definition:

Value:[ [<percentage> | <length> ]{1,2} |[ [top | center | bottom] || [left | center | right] ] ] | inherit
Initial:0% 0%
Inherited:no
Percentages:refer to the size of the box itself
Media:visual

CSS2 Reference:"background-position" property
http://www.w3.org/TR/REC-CSS2/colors.html#propdef-background-position

If a "background-image" has been specified, this property specifiesits initial position.

<percentage> <percentage>

With a value pair of 0% 0%, the upper left corner of theimage is aligned with the upper left corner of the box's paddingedge. A value pair of 100% 100% places the lower right corner ofthe image in the lower right corner of padding area. With a valuepair of 14% 84%, the point 14% across and 84% down the image isto be placed at the point 14% across and 84% down the padding area.

<length> <length>

With a value pair of 2cm 2cm, the upper left corner of theimage is placed 2cm to the right and 2cm below the upper left cornerof the padding area.

top left and left top

Same as 0% 0%.

top, top center, and center top

Same as 50% 0%.

right top and top right

Same as 100% 0%.

left, left center, and center left

Same as 0% 50%.

center and center center

Same as 50% 50%.

right, right center, and center right

Same as 100% 50%.

bottom left and left bottom

Same as 0% 100%.

bottom, bottom center, and center bottom

Same as 50% 100%.

bottom right and right bottom

Same as 100% 100%.

If only one percentage or length value is given, it setsthe horizontal position only, the vertical position will be 50%.If two values are given, the horizontal position comes first. Combinationsof length and percentage values are allowed, (e.g., 50% 2cm). Negative positionsare allowed. Keywords cannot be combined with percentage valuesor length values (all possible combinations are given above).

If the background image is fixed within the viewport (see the"background-attachment" property), the image is placed relativeto the viewport instead of the elements padding area.

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

<percentage>

background-position-horizontal="<percentage>"

background-position-vertical="50%"

<percentage1> <percentage2>

background-position-horizontal="<percentage1>"

background-position-vertical="<percentage2>"

<length>

background-position-horizontal="<length>"

background-position-vertical="50%"

<length1> <length2>

background-position-horizontal="<length1>"

background-position-vertical="<length2>"

<length> <percentage>

background-position-horizontal="<length>"

background-position-vertical="<percentage>"

<percentage> <length>

background-position-horizontal="<percentage>"

background-position-vertical="<length>"

top left and left top

background-position-horizontal="0%"

background-position-vertical="0%"

top, top center, and center top

background-position-horizontal="50%"

background-position-vertical="0%"

right top and top right

background-position-horizontal="100%"

background-position-vertical="0%"

left, left center, and center left

background-position-horizontal="0%"

background-position-vertical="50%"

center and center center

background-position-horizontal="50%"

background-position-vertical="50%"

right, right center, and center right

background-position-horizontal="100%"

background-position-vertical="50%"

bottom left and left bottom

background-position-horizontal="0%"

background-position-vertical="100%"

bottom, bottom center, and center bottom

background-position-horizontal="50%"

background-position-vertical="100%"

bottom right and right bottom

background-position-horizontal="100%"

background-position-vertical="100%"

7.31.3 "border"

CSS2 Definition:

Value:[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border

The "border" property is a shorthandproperty for setting the same width, color, and style for all fourborders, top, bottom, left, and right, of a box. Unlike the shorthand"margin" and "padding" properties, the "border" property cannotset different values on the four borders. To do so, one or moreof the other border properties must be used.

XSL modifications to the CSS definition:

Refer to5.3.1 Border and Padding Propertiesfor information on the precedenceorder of properties.

7.31.4 "border-bottom"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10

Value:[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-bottom" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-bottom

A shorthand property for setting thewidth, style, and color of the bottom border of a block-area or inline-area.

7.31.5 "border-color"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x35

Value:[ <color> | transparent ]{1,4} | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-color" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-color

The 'border-color' property sets the color of the fourborders. Values have the following meanings:

transparent

The border is transparent (though it may have width).

<color>

Any valid color specification.

The "border-color" property can havefrom one to four values, and the values are set on the differentsides as for "border-width".

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.

XSL modifications to the CSS definition:

See the 'border-width' property for a description of howthis property is interpreted when one through four values areprovided.

7.31.6 "border-left"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10

Value:[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-left" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-left

A shorthand property for setting thewidth, style, and color of the left border of a block-area or inline-area.

7.31.7 "border-right"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10

Value:[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-right" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-right

A shorthand property for setting thewidth, style, and color of the right border of a block-area or inline-area.

7.31.8 "border-style"

CSS2 Definition:

Value:<border-style>{1,4} | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-style" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-style

The "border-style" property sets thestyle of the four borders.

It can have from one to four values, and the values are set onthe different sides.

XSL modifications to the CSS definition:

See the 'border-width' property for a description of howthis property is interpreted when one through four values areprovided.

7.31.9 "border-spacing"

CSS2 Definition:

Value:<length> <length>? | inherit
Initial:0pt
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"border-spacing" property
http://www.w3.org/TR/REC-CSS2/tables.html#propdef-border-spacing

<length>

The lengths specify the distance that separates adjacent cellborders. If one length is specified, it gives both the horizontaland vertical spacing. If two are specified, the first gives thehorizontal spacing and the second the vertical spacing. Lengthsmay not be negative.

In the separate borders model, each cell has an individual border.The "border-spacing" property specifies the distance between theborders of adjacent cells. This space is filled with the backgroundof the table element. Rows, columns, row groups, and column groups cannothave borders (i.e., user agents must ignore the border propertiesfor those elements).

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

If one value is specified the "border-separation.block-progression-direction"and "border-separation.inline-progression-direction" are both set tothat value.

If two values are specified the "border-separation.block-progression-direction"is set to the second valueand "border-separation.inline-progression-direction" is set tothe first value.

7.31.10 "border-top"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10

Value:[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-top" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-top

A shorthand property for setting thewidth, style, and color of the top border of a block-area or inline-area.

7.31.11 "border-width"

CSS2 Definition:

Value:<border-width>{1,4} | inherit
Initial:see individual properties
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"border-width" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-border-width

This property is a shorthand propertyfor setting "border-top-width", "border-right-width", "border-bottom-width",and "border-left-width" at the same place in the stylesheet.

If there is only one value, it applies to all sides. If thereare two values, the top and bottom borders are set to the firstvalue and the right and left are set to the second. If there are threevalues, the top is set to the first value, the left and right areset to the second, and the bottom is set to the third. If thereare four values, they apply to the top, right, bottom, and left,respectively.

7.31.12 "cue"

CSS2 Definition:

Value:<cue-before> || <cue-after> | inherit
Initial:not defined for shorthand properties
Inherited:no
Percentages:N/A
Media:aural

CSS2 Reference:"cue" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-cue

7.31.13 "font"

CSS2 Definition:

Value:[ [ <font-style> || <font-variant>|| <font-weight> ]? <font-size> [ / <line-height>]? <font-family>] | caption | icon | menu | message-box | small-caption | status-bar| inherit
Initial:see individual properties
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"font" property
http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font

The "font" property is, except as described below, a shorthandproperty for setting "font-style", "font-variant", "font-weight","font-size", "line-height", and "font-family", at the same placein the stylesheet. The syntax of this property is based on a traditional typographicalshorthand notation to set multiple properties related to fonts.

All font-related properties are first reset to their initialvalues, including those listed in the preceding paragraph plus "font-stretch"and "font-size-adjust". Then, those properties that are given explicitvalues in the "font" shorthand are set to those values. For a definitionof allowed and initial values, see the previously defined properties.For reasons of backward compatibility, it is not possible to set"font-stretch" and "font-size-adjust" to other than their initialvalues using the "font" shorthand property; instead, set the individual properties.

The following [first six] values refer to systemfonts:

caption

The font used for captioned controls (e.g., buttons, drop-downs,etc.).

icon

The font used to label icons.

menu

The font used in menus (e.g., dropdown menus and menu lists).

message-box

The font used in dialog boxes.

small-caption

The font used for labeling small controls.

status-bar

The font used in window status bars.

System fonts may only be set as a whole; that is, the "font-family","size", "weight", "style", etc. are all set at the same time. Thesevalues may then be altered individually if desired. If no font withthe indicated characteristics exists on a given platform, the user agentshould either intelligently substitute (e.g., a smaller versionof the "caption" font might be used for the "small-caption" font),or substitute a user agent default font. As for regular fonts, if,for a system font, any of the individual properties are not partof the operating system's available user preferences, those propertiesshould be set to their initial values.

That is why this property is "almost" a shorthand property: systemfonts can only be specified with this property, not with "font-family"itself, so "font" allows authors to do more than the sum of itssub-properties. However, the individual properties such as "font-weight"are still given values taken from the system font, which can beindependently varied.

XSL modifications to the CSS definition:

In XSL the "font" property is a pure shorthand property. Systemfont characteristics, such as font-family, and font-size, may beobtained by the use of the "system-font" function in the expressionlanguage.

7.31.14 "margin"

CSS2 Definition:

Value:<margin-width>{1,4} | inherit
Initial:not defined for shorthand properties
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"margin" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-margin

A shorthand property for setting margin-top,margin-right, margin-bottom, and margin-left of a block-area orinline-area.

If there is only one value, it applies to all sides. If thereare two values, the top and bottom margins are set to the firstvalue and the right and left margins are set to the second. If thereare three values, the top is set to the first value, the left andright are set to the second, and the bottom is set to the third.If there are four values, they apply to the top, right, bottom,and left, respectively.

XSL modifications to the CSS definition:

7.31.15 "padding"

CSS2 Definition:

Value:<padding-width>{1,4} | inherit
Initial:not defined for shorthand properties
Inherited:no
Percentages:refer to width of containing block
Media:visual

CSS2 Reference:"padding" property
http://www.w3.org/TR/REC-CSS2/box.html#propdef-padding

A shorthand property for setting padding-top,padding-bottom, padding-left, and padding-right of a block-areaor inline-area.

If there is only one value, it applies to all sides. If thereare two values, the top and bottom paddings are set to the firstvalue and the right and left paddings are set to the second. If thereare three values, the top is set to the first value, the left andright are set to the second, and the bottom is set to the third.If there are four values, they apply to the top, right, bottom,and left, respectively.

The surface color or image of the padding area is specified viathe "background" property.

7.31.16 "page-break-after"

CSS2 Definition:

Value:auto | always | avoid | left | right | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"page-break-after" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-page-break-after

Values for these properties have the following meanings:

auto

Neither force nor forbid a page break before (after, inside)the generated box.

always

Always force a page break before (after) the generatedbox.

avoid

Avoid a page break before (after, inside) the generatedbox.

left

Force one or two page breaks before (after) the generatedbox so that the next page is formatted as a left page.

right

Force one or two page breaks before (after) the generatedbox so that the next page is formatted as a right page.

A potential page break location is typically under theinfluence of the parent element's 'page-break-inside' property,the 'page-break-after' property of the preceding element, and the'page-break-before' property of the following element. When theseproperties have values other than 'auto', the values 'always', 'left',and 'right' take precedence over 'avoid'. See the section on allowedpage breaks for the exact rules on how these properties may forceor suppress a page break.

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

auto

break-after = "auto"

keep-with-next = "auto"

always

break-after = "page"

keep-with-next = "auto"

avoid

break-after = "auto"

keep-with-next = "always"

left

break-after = "even-page"

keep-with-next = "auto"

right

break-after = "odd-page"

keep-with-next = "auto"

7.31.17 "page-break-before"

CSS2 Definition:

Value:auto | always | avoid | left | right | inherit
Initial:auto
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"page-break-before" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-page-break-before

Values for these properties have the following meanings:

auto

Neither force nor forbid a page break before (after, inside)the generated box.

always

Always force a page break before (after) the generatedbox.

avoid

Avoid a page break before (after, inside) the generatedbox.

left

Force one or two page breaks before (after) the generatedbox so that the next page is formatted as a left page.

right

Force one or two page breaks before (after) the generatedbox so that the next page is formatted as a right page.

A potential page break location is typically under theinfluence of the parent element's 'page-break-inside' property,the 'page-break-after' property of the preceding element, and the'page-break-before' property of the following element. When theseproperties have values other than 'auto', the values 'always', 'left',and 'right' take precedence over 'avoid'. See the section on allowedpage breaks for the exact rules on how these properties may forceor suppress a page break.

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

auto

break-before = "auto"

keep-with-previous = "auto"

always

break-before = "page"

keep-with-previous = "auto"

avoid

break-before = "auto"

keep-with-previous = "always"

left

break-before = "even-page"

keep-with-previous = "auto"

right

break-before = "odd-page"

keep-with-previous = "auto"

7.31.18 "page-break-inside"

CSS2 Definition:

Value:avoid | auto | inherit
Initial:auto
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"page-break-inside" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-page-break-inside

Note:

The CSS definition for page-break-inside was shared with thedefinitions of page-break-before and page-break-after. The texthere has been edited to include only the value choices valid forpage-break-inside and to remove the before/after/inside triplet.

Values for this property have the following meanings:

auto

Neither force nor forbid a page break inside the generatedbox.

avoid

Avoid a page break inside the generated box.

A potential page break location is typically under theinfluence of the parent element's 'page-break-inside' property,the 'page-break-after' property of the preceding element, and the'page-break-before' property of the following element. When theseproperties have values other than 'auto', values 'always', 'left',and 'right' take precedence over 'avoid'. See the section on allowedpage breaks for the exact rules on how these properties may force orsuppress a page break.

XSL modifications to the CSS definition:

XSL treats this as a shorthand and maps it as follows.

auto

keep-together = "auto"

avoid

keep-together = "always"

7.31.19 "pause"

CSS2 Definition:

Value:[<time> | <percentage>]{1,2} | inherit
Initial:depends on user agent
Inherited:no
Percentages:see descriptions of 'pause-before' and 'pause-after'
Media:aural

CSS2 Reference:"pause" property
http://www.w3.org/TR/REC-CSS2/aural.html#propdef-pause

7.31.20 "position"

CSS2 Definition:as amended byhttp://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x11

Value:static | relative | absolute | fixed | inherit
Initial:static
Inherited:no
Percentages:N/A
Media:visual

CSS2 Reference:"position" property
http://www.w3.org/TR/REC-CSS2/visuren.html#propdef-position

Values have the following meanings:

static

The box is a normal box, laid out according to the normalflow. The "top", "right", "bottom", and "left"properties do not apply.

relative

The box's position is calculated according to the normalflow (this is called the position in normal flow). Then the boxis offset relative to its normal position. When a box B is relativelypositioned, the position of the following box is calculated as thoughB were not offset.

absolute

The box's position (and possibly size) is specified withthe "left", "right", "top", and "bottom" properties. These propertiesspecify offsets with respect to the box's containing block. Absolutelypositioned boxes are taken out of the normal flow. This means theyhave no impact on the layout of later siblings. Also, though absolutelypositioned boxes have margins, they do not collapse with any other margins.

fixed

The box's position is calculated according to the "absolute"model, but in addition, the box is fixed with respect to some reference.In the case of continuous media, the box is fixed with respect tothe viewport (and doesn't move when scrolled). In the case of pagedmedia, the box is fixed with respect to the page, even if that page isseen through a viewport (in the case of a print-preview, for example).Authors may wish to specify "fixed" in a media-dependent way. Forinstance, an author may want a box to remain at the top the viewporton the screen, but not at the top of each printed page.

Specifies the positioning scheme to be used.

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

static

relative-position="static"

absolute-position="auto"

relative

relative-position="relative"

absolute-position="auto"

absolute

relative-position="static"

absolute-position="absolute"

fixed

relative-position="static"

absolute-position="fixed"

7.31.21 "size"

CSS2 Definition:

Value:<length>{1,2} | auto | landscape | portrait| inherit
Initial:auto
Inherited:N/A [XSL:no, is optional]
Percentages:N/A
Media:visual

CSS2 Reference:"size" property
http://www.w3.org/TR/REC-CSS2/page.html#propdef-size

This property specifies the size and orientation of a page box.

The size of a page box may either be "absolute" (fixed size)or "relative" (scalable, i.e., fitting available sheet sizes). Relativepage boxes allow user agents to scale a document and make optimaluse of the target size.

[The first] Three values for the 'size' property create a relativepage box:

auto

The page box will be set to the size and orientation ofthe target sheet.

landscape

Overrides the target's orientation. The page box is thesame size as the target, and the longer sides are horizontal.

portrait

Overrides the target's orientation. The page box is thesame size as the target, and the shorter sides are horizontal.

<length>

Length values for the "size" property create an absolutepage box. If only one length value is specified, it sets both thewidth and height of the page box (i.e., the box is a square). Sincethe page box is the initial containing block, percentage valuesare not allowed for the "size" property.

User agents may allow users to control the transfer ofthe page box to the sheet (e.g., rotating an absolute page box that'sbeing printed).

  • Rendering page boxes that do not fit a target sheet

    If a page box does not fit the target sheet dimensions, the useragent may choose to:

    • Rotate the page box 90 degrees if this will make the pagebox fit.

    • Scale the page to fit the target.

    The user agent should consult the user before performing theseoperations.

  • Positioning the page box on the sheet

    When the page box is smaller than the target size, the user agentis free to place the page box anywhere on the sheet. However, itis recommended that the page box be centered on the sheet sincethis will align double-sided pages and avoid accidental loss ofinformation that is printed near the edge of the sheet.

XSL modifications to the CSS definition:

This is treated as a CSS shorthand property that is mappedto XSL's "page-height" and "page-width" properties.

7.31.22 "vertical-align"

CSS2 Definition:

Value:baseline | middle | sub | super | text-top |text-bottom | <percentage> | <length> | top | bottom | inherit
Initial:baseline
Inherited:no
Percentages:refer to the 'line-height' of the element itself
Media:visual

CSS2 Reference:"vertical-align" property
http://www.w3.org/TR/REC-CSS2/visudet.html#propdef-vertical-align

This property affects the vertical positioning inside a linebox of the boxes generated by an inline-level element. The followingvalues only have meaning with respect to a parent inline-level element,or to a parent block-level element, if that element generates anonymousinline boxes; they have no effect if no such parent exists.

Note:

Values of this property have slightly different meanings in thecontext of tables. Please consult the section on table height algorithmsfor details.

Values have the following meanings:

baseline

Align the baseline of the box with the baseline of theparent box. If the box doesn't have a baseline, align the bottomof the box with the parent's baseline.

middle

Align the vertical midpoint of the box with the baselineof the parent box plus half the x-height of the parent.

sub

Lower the baseline of the box to the proper position forsubscripts of the parent's box. (This value has no effect on thefont size of the element's text.)

super

Raise the baseline of the box to the proper position forsuperscripts of the parent's box. (This value has no effect on thefont size of the element's text.)

text-top

Align the top of the box with the top of the parent element'sfont.

text-bottom

Align the bottom of the box with the bottom of the parentelement's font.

top

Align the top of the box with the top of the line box.

bottom

Align the bottom of the box with the bottom of the linebox.

<percentage>

Raise (positive value) or lower (negative value) the boxby this distance (a percentage of the "line-height" value). Thevalue "0%" means the same as "baseline".

<length>

Raise (positive value) or lower (negative value) the boxby this distance. The value "0cm" means the same as "baseline".

Note:

Values of this property have slightly different meanings in thecontext of tables. Please consult the section on table height algorithmsfor details.

XSL modifications to the CSS definition:

The CSS property shall be treated as a shorthand by XSLand maps as follows:

baseline

alignment-baseline="baseline"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

top

alignment-baseline="before-edge"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

text-top

alignment-baseline="text-before-edge"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

middle

alignment-baseline="middle"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

bottom

alignment-baseline="after-edge"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

text-bottom

alignment-baseline="text-after-edge"

alignment-adjust="auto"

baseline-shift="baseline"

dominant-baseline="auto"

sub

alignment-baseline="baseline"

alignment-adjust="auto"

baseline-shift="sub"

dominant-baseline="auto"

super

alignment-baseline="baseline"

alignment-adjust="auto"

baseline-shift="super"

dominant-baseline="auto"

<percentage>

alignment-baseline="baseline"

alignment-adjust="<percentage>"

baseline-shift="baseline"

dominant-baseline="auto"

<length>

alignment-baseline="baseline"

alignment-adjust="<length>"

baseline-shift="baseline"

dominant-baseline="auto"

7.31.23 "white-space"

CSS2 Definition:

Value:normal | pre | nowrap | inherit
Initial:normal
Inherited:yes
Percentages:N/A
Media:visual

CSS2 Reference:"white-space" property
http://www.w3.org/TR/REC-CSS2/text.html#propdef-white-space

This property declares how whitespace inside the element is handled.Values have the following meanings:

normal

This value directs user agents to collapse sequences ofwhitespace, and break lines as necessary to fill line boxes. Additionalline breaks may be created by occurrences of "\A" in generated content (e.g.,for the BR element in HTML).

pre

This value prevents user agents from collapsing sequencesof whitespace. Lines are only broken at newlines in the source,or at occurrences of "\A" in generated content.

nowrap

This value collapses whitespace as for 'normal', but suppressesline breaks within text except for those created by "\A" in generatedcontent (e.g., for the BR element in HTML).

Conforming user agents may ignore the 'white-space' propertyin author and user style sheets but must specify a value for itin the default style sheet.

XSL modifications to the CSS definition:

XSL splits control of white space collapsing, space and linefeedhandling, and wrapping into separate properties.

The CSS property shall be treated as a shorthand by XSLand maps as follows:

normal

linefeed-treatment="treat-as-space"

white-space-collapse="true"

white-space-treatment="ignore-if-surrounding-linefeed"

wrap-option="wrap"

pre

linefeed-treatment="preserve"

white-space-collapse="false"

white-space-treatment="preserve"

wrap-option="no-wrap"

nowrap

linefeed-treatment="treat-as-space"

white-space-collapse="true"

white-space-treatment="ignore-if-surrounding-linefeed"

wrap-option="no-wrap"

7.31.24 "xml:lang"

XSL Definition:

Value:<language-country> | inherit
Initial:not defined for shorthand properties
Inherited:yes
Percentages:N/A
Media:visual

Values have the following meanings:

<string>

A language and optionally a country specifier in conformance with[RFC3066], or its successor.

Specifies the language and countryto be used by the formatter in linguistic services (such as hyphenation)and in the determination of line breaks. This affects line compositionin a system-dependent way.

The string may be any RFC 3066 code.

XSL treats xml:lang as a shorthand and uses it to set the countryand language properties.

Note:

In general, linguistic services (line-justification strategy,line-breaking and hyphenation) may depend on a combinationof the "language", "script", and "country" properties.

8 Conformance

In this sectionthe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALLNOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and"OPTIONAL" are to be interpreted as described in[RFC2119].

This specification defines three levels of conformance, in orderof completeness:

Basic

includes the set of formatting objects and properties needed tosupport a minimum level of pagination or aural rendering.

Extended

includes everything else, except for shorthands. It isintended for applications whose goal is to provide sophisticatedpagination.

Complete

includes everything.

Conformance to this specification is expressed in terms of conformanceto any of the above levels.

An application that claims conformance to a given level of thisspecification must implement all the formatting objects and propertiesthat apply to it for a given medium.

A Formatting Object Summary specifies which formatting objects belong to each of theabove levels, and for what medium.

B Property Summary specifies which properties belong to each of the above levels.

The minimum level of conformance is Basic. A minimally conformantimplementation must process as specified all the formattingobjects and properties defined for the Basic level of theimplementation's target medium.

Implementations may choose to process formatting objects from levels ortarget media other than the one to which they conform. In order to ensureinteroperability, this specification defines a fallback for eachformatting object in the Extended and Complete levels.

An implementation must not claim conformance to a given level if any ofthe formatting objects at that level is implemented solely as the fallbackspecified here for that level. Correct processing of fallbacks does notconstitute conformance.

Conforming implementations must support at least one of the"writing-mode" values defined in this Recommendation. Althoughwriting-mode is defined as a Basic property with an initial value of"lr-tb", it is not the intention of this specification to impose thisparticular, or any other, writing mode value on conformantapplications. If an implementation does not support a writing-modeused in a stylesheet, either explicitly or by relying on the initialvalue, it should display either a 'missing character' glyphmessage or display some indication that the content cannot be correctlyrendered.

A Formatting Object Summary

This section contains tables summarizingthe conformance level ofeach of the defined formatting objects, i.e., basic or extended. Fora description of basic and extended, see8 Conformance.Included with each formatting object name is a designationof its inclusion or exclusion from the basic set offormatting objects for the particular class.XSL defines visual and aural classes. For certain formatting objects,seeA.6 Link and Multi Formatting Objects, the visual class is subdivided intointeractive and non-interactive media.A proposed fallback treatment is also specified.

A.1 Declaration and Pagination and Layout Formatting Objects

Formatting ObjectVisualAural
fo:rootbasicbasic
fo:page-sequencebasicbasic
fo:page-sequence-wrapperbasicbasic
fo:page-sequence-masterbasicbasic
fo:single-page-master-referencebasicbasic
fo:repeatable-page-master-referencebasicbasic
fo:repeatable-page-master-alternatives

extended

fallback: use the page-master referenced in the first fo:conditional-page-master-reference child

extended

fallback: use the page-master referenced in the first fo:conditional-page-master-reference child

fo:conditional-page-master-reference

extended

fallback: use the page-master referenced in the first fo:conditional-page-master-reference child

extended

fallback: use the page-master referenced in the first fo:conditional-page-master-reference child

fo:layout-master-setbasicbasic
fo:simple-page-masterbasicbasic
fo:region-bodybasicbasic
fo:region-before

extended

fallback: include after content of body region is placed

extended

fallback: include after content of body region is spoken

fo:region-after

extended

fallback: include after content of body region is placed

extended

fallback: include after content of body region is spoken

fo:region-start

extended

fallback: include after content of body region is placed

extended

fallback: include after content of body region is spoken

fo:region-end

extended

fallback: include after content of body region is placed

extended

fallback: include after content of body region is spoken

fo:declarationsbasicbasic
fo:color-profile

extended

fallback: ignore, use the sRGB fallback of the rgb-icc function

N/A

fo:flowbasicbasic
fo:static-content

extended

fallback: include after content of body region is placed

extended

fallback: include after content of body region is spoken

fo:title

extended

fallback: include before content of body region is placed

extended

fallback: include before content of body region is spoken

fo:flow-map

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:flow-assignment

extended

fallback: ignore.

extended

fallback: ignore.

fo:flow-source-list

extended

fallback: ignore.

extended

fallback: ignore.

fo:flow-name-specifier

extended

fallback: ignore.

extended

fallback: ignore.

fo:flow-target-list

extended

fallback: ignore.

extended

fallback: ignore.

fo:region-name-specifier

extended

fallback: ignore.

extended

fallback: ignore.

A.2 Block Formatting Objects

Formatting ObjectVisualAural
fo:blockbasicbasic
fo:block-container

extended

fallback: displayindication that content cannot be correctlyrendered

basic

A.3 Inline Formatting Objects

Formatting ObjectVisualAural
fo:bidi-override

extended

fallback: display indication that content cannot be correctly rendered.

basic
fo:characterbasicbasic
fo:initial-property-set

extended

fallback: ignore any properties specified on this object.

basic

fo:external-graphicbasicbasic
fo:instream-foreign-object

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:inlinebasicbasic
fo:inline-container

extended

fallback: display indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:leaderbasicbasic
fo:page-numberbasic

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:page-number-citation

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:page-number-citation-last

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:folio-prefix

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:folio-suffix

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:scaling-value-citation

extended

fallback: display indication thatcontent cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly rendered.

A.4 Table Formatting Objects

Formatting ObjectVisualAural
fo:table-and-captionbasicbasic
fo:tablebasicbasic
fo:table-columnbasicbasic
fo:table-caption

extended

fallback:

  • caption-side="start" becomes caption-side="before"

  • caption-side="end" becomes caption-side="after"

  • caption-side="left" becomes caption-side="before"

  • caption-side="right" becomes caption-side="after"

extended

fallback:

  • caption-side="start" becomes caption-side="before"

  • caption-side="end" becomes caption-side="after"

  • caption-side="left" becomes caption-side="before"

  • caption-side="right" becomes caption-side="after"

fo:table-headerbasicbasic
fo:table-footer

extended

fallback: place at end of table.

extended

fallback: speak at end of table

fo:table-bodybasicbasic
fo:table-rowbasicbasic
fo:table-cellbasicbasic

A.5 List Formatting Objects

Formatting ObjectVisualAural
fo:list-blockbasicbasic
fo:list-itembasicbasic
fo:list-item-bodybasicbasic
fo:list-item-label

extended

fallback: labels thatbreak across multiple linesare treated as separate blocks beforelist-item-body.

basic

A.6 Link and Multi Formatting Objects

Formatting ObjectVisualAural
fo:basic-link

extended

fallback: promote contentto parent formatting object.

extended

fallback: promote contentto parent formatting object.

fo:multi-switch

extended, need not be implemented for extended conformance for non-interactive media

fallback for basic conformance and extended conformance for non-interactive media:utilize the contents of the first eligiblemulti-case formatting object.

extended

fallback: utilize the contents of the first eligiblemulti-case formatting object.

fo:multi-casebasic: needed as wrapper for fallback formulti-switchbasic: needed as wrapper for fallback formulti-switch
fo:multi-toggle

extended, need not be implemented for extended conformance for non-interactive media

fallback for basic conformance and extended conformance for non-interactive media:promote content to parent formatting object.

extended

fallback: promotecontent to parent formatting object.

fo:multi-properties

extended, need not be implemented for extended conformance for non-interactive media

fallback for basic conformance and extended conformance for non-interactive media:promote content to parent formatting object.

extended

fallback: promotecontent to parent formatting object.

fo:multi-property-set

extended, need not be implemented for extended conformance for non-interactive media

fallback for basic conformance and extended conformance for non-interactive media:ignore.

extended

fallback: ignore.

A.7 Out-of-line Formatting Objects

Formatting ObjectVisualAural
fo:float

extended

fallback: place inline.

extended

fallback: place inline.

fo:footnote

extended

fallback: place inline.

extended

fallback: place inline.

fo:footnote-body

extended

fallback: place inline.

extended

fallback: place inline.

A.8 Formatting Objects for Indexing

Formatting ObjectVisualAural
fo:index-page-citation-list

extended

fallback: display indication thatcontent cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly rendered.

fo:index-key-reference

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-page-number-prefix

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-page-number-suffix

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-page-citation-list-separator

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-page-citation-range-separator

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-range-begin

extended

fallback: ignore.

extended

fallback: ignore.

fo:index-range-end

extended

fallback: ignore.

extended

fallback: ignore.

A.9 Formatting Objects for Bookmarks

Formatting ObjectVisualAural
fo:bookmark-tree

extended

fallback: display an indication that content cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly spoken.

fo:bookmark

extended

fallback: ignore.

extended

fallback: ignore.

fo:bookmark-title

extended

fallback: ignore.

extended

fallback: ignore.

A.10 Other Formatting Objects

Formatting ObjectVisualAural
fo:change-bar-begin

extended

fallback: ignore.

extended

fallback: ignore.

fo:change-bar-end

extended

fallback: ignore.

extended

fallback: ignore.

fo:wrapperbasicbasic
fo:marker

extended

fallback: ignore.

extended

fallback: ignore.

fo:retrieve-marker

extended

fallback: display indication thatcontent cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly rendered.

fo:retrieve-table-marker

extended

fallback: display indication thatcontent cannot be correctly rendered.

extended

fallback: speak an indication thatcontent cannot be correctly rendered.

B Property Summary

B.1 Explanation of Trait Mapping Values

Rendering

Maps directly into a rendering trait of the same name.

Disappears

There is no trait mapping.

Shorthand

A shorthand that is mapped into one or more properties.There are no traits associated with a shorthand property.The traits are associated with the individualproperties.

Refine

Disappears in refinement. During refinement it setsup one or more other traits.

Formatting

Maps directly into a formatting trait of the same name.

Specification

Sub-class of formatting. It is the sameas a formatting trait, but is specified on formattingobjects that are referenced.

See prose

Used to calculate a formatting trait, which does not have thesame name as the property. Other properties may also influence thetrait value. See the property description fordetails.

Font selection

Property that participates in font selection.

Value change

Maps to a trait of the same name, but the value is not justcopied.

Reference

An association between two names. Establishes areference within the formatting object tree.

Action

Behavior trait.

Magic

Handled by the formatter in animplementation-defined way.There are no specific traits for this property.

B.2 Property Table: Part I

NameValuesInitial ValueInheritedPercentages
7.6.1 absolute-positionauto | absolute | fixed | inheritautonoN/A
7.23.1 active-statelink | visited | active | hover | focusno, a value is requirednoN/A
7.14.1 alignment-adjustauto | baseline| before-edge| text-before-edge | middle | central| after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| <percentage> | <length>| inheritautonosee prose
7.14.2 alignment-baselineauto | baseline | before-edge| text-before-edge | middle | central | after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| inheritautonoN/A
7.15.1 allowed-height-scale[ any | <percentage> ]* | inheritanyyesintrinsic height
7.15.2 allowed-width-scale[ any | <percentage> ]* | inheritanyyesintrinsic width
7.23.2 auto-restoretrue | falsefalseyesN/A
7.7.1 azimuth<angle> | [[ left-side | far-left | left| center-left | center | center-right | right | far-right | right-side] || behind ] | leftwards | rightwards | inheritcenteryesN/A
7.31.1 background[<background-color> ||<background-image>|| <background-repeat> || <background-attachment> || <background-position>]] | inheritnot defined for shorthand propertiesnoallowed on 'background-position'
7.8.1 background-attachmentscroll | fixed | inheritscrollnoN/A
7.8.2 background-color<color> | transparent | inherittransparentnoN/A
7.8.3 background-image<uri-specification> | none | inheritnonenoN/A
7.31.2 background-position[ [<percentage> | <length> ]{1,2} |[ [top | center | bottom] || [left | center | right] ] ] | inherit0% 0%norefer to the size of the box itself
7.8.5 background-position-horizontal<percentage> | <length> |left | center | right | inherit0%norefer to the size of the padding-rectangle
7.8.6 background-position-vertical<percentage> | <length> |top | center | bottom | inherit0%norefer to the size of the padding-rectangle
7.8.4 background-repeatrepeat | repeat-x | repeat-y | no-repeat | inheritrepeatnoN/A
7.14.3 baseline-shiftbaseline | sub | super | <percentage> | <length>| inheritbaselinenorefers to the "line-height" of the parent area
7.27.1 blank-or-not-blankblank | not-blank | any | inheritanynoN/A
7.15.3 block-progression-dimensionauto | <length> | <percentage> | <length-range>| inheritautonosee prose
7.31.3 border[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesnoN/A
7.8.10 border-after-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.28.1 border-after-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0noN/A
7.8.11 border-after-style<border-style> | inheritnonenoN/A
7.8.12 border-after-width<border-width> | <length-conditional> | inheritmediumnoN/A
7.8.7 border-before-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.28.2 border-before-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0noN/A
7.8.8 border-before-style<border-style> | inheritnonenoN/A
7.8.9 border-before-width<border-width> | <length-conditional> | inheritmediumnoN/A
7.31.4 border-bottom[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesnoN/A
7.8.22 border-bottom-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.8.23 border-bottom-style<border-style> | inheritnonenoN/A
7.8.24 border-bottom-width<border-width> | inheritmediumnoN/A
7.28.3 border-collapsecollapse | collapse-with-precedence | separate | inheritcollapseyesN/A
7.31.5 border-color[ <color> | transparent ]{1,4} | inheritsee individual propertiesnoN/A
7.8.16 border-end-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.28.4 border-end-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0noN/A
7.8.17 border-end-style<border-style> | inheritnonenoN/A
7.8.18 border-end-width<border-width> | <length-conditional> | inheritmediumnoN/A
7.31.6 border-left[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesnoN/A
7.8.25 border-left-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.8.26 border-left-style<border-style> | inheritnonenoN/A
7.8.27 border-left-width<border-width> | inheritmediumnoN/A
7.31.7 border-right[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesnoN/A
7.8.28 border-right-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.8.29 border-right-style<border-style> | inheritnonenoN/A
7.8.30 border-right-width<border-width> | inheritmediumnoN/A
7.28.5 border-separation<length-bp-ip-direction> | inherit.block-progression-direction="0pt" .inline-progression-direction="0pt"yesN/A
7.31.9 border-spacing<length> <length>? | inherit0ptyesN/A
7.8.13 border-start-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.28.6 border-start-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0noN/A
7.8.14 border-start-style<border-style> | inheritnonenoN/A
7.8.15 border-start-width<border-width> | <length-conditional> | inheritmediumnoN/A
7.31.8 border-style<border-style>{1,4} | inheritsee individual propertiesnoN/A
7.31.10 border-top[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesnoN/A
7.8.19 border-top-color<color> | transparent | inheritthe value of the 'color' propertynoN/A
7.8.20 border-top-style<border-style> | inheritnonenoN/A
7.8.21 border-top-width<border-width> | inheritmediumnoN/A
7.31.11 border-width<border-width>{1,4} | inheritsee individual propertiesnoN/A
7.6.4 bottom<length> | <percentage> | auto | inheritautonorefer to height of containing block
7.20.1 break-afterauto | column | page | even-page | odd-page | inheritautonoN/A
7.20.2 break-beforeauto | column | page | even-page | odd-page | inheritautonoN/A
7.28.7 caption-sidebefore | after | start | end | top | bottom | left | right | inheritbeforeyesN/A
7.23.3 case-name<name>none, a value is requiredno, a value is requiredN/A
7.23.4 case-title<string>none, a value is requiredno, a value is requiredN/A
7.30.1 change-bar-class<name>none, value requirednoN/A
7.30.2 change-bar-color<color>the value of the color propertyyesN/A
7.30.3 change-bar-offset<length>6ptyesN/A
7.30.4 change-bar-placementstart | end | left | right | inside | outside | alternatestartyesN/A
7.30.5 change-bar-style<border-style>noneyesN/A
7.30.6 change-bar-width<border-width>mediumyesN/A
7.17.1 character<character>N/A, value is requiredno, a value is requiredN/A
7.19.1 clearstart | end | left | right | inside | outside | both | none | inheritnonenoN/A
7.21.1 clip<shape> | auto | inheritautonoN/A
7.18.1 color<color> | inheritdepends on user agentyesN/A
7.18.2 color-profile-name<name> | inheritN/A, value is requirednoN/A
7.27.2 column-count<number> | inherit1noN/A
7.27.3 column-gap<length> | <percentage> | inherit12.0ptnorefer to width of the region being divided into columns.
7.28.8 column-number<number>see prosenoN/A
7.28.9 column-width<length> | <percentage>see prosenorefer to width of table
7.15.4 content-heightauto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inheritautonointrinsic height
7.30.7 content-type<string> | autoautonoN/A
7.15.5 content-widthauto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inheritautonointrinsic width
7.10.1 countrynone | <country> | inheritnoneyesN/A
7.31.12 cue<cue-before> || <cue-after> | inheritnot defined for shorthand propertiesnoN/A
7.7.2 cue-after<uri-specification> | none | inheritnonenoN/A
7.7.3 cue-before<uri-specification> | none | inheritnonenoN/A
7.23.5 destination-placement-offset<length>0ptnoN/A
7.29.1 directionltr | rtl | inheritltryesN/A
7.14.4 display-alignauto | before | center | after| inheritautoyesN/A
7.14.5 dominant-baselineauto | use-script | no-change | reset-size| ideographic | alphabetic | hanging | mathematical| central | middle | text-after-edge | text-before-edge| inheritautono (see prose)N/A
7.7.4 elevation<angle> | below | level | above | higher| lower | inheritlevelyesN/A
7.28.10 empty-cellsshow | hide | inheritshowyesN/A
7.11.8 end-indent<length> | <percentage> | inherit0ptyesrefer to inline-progression-dimensionof containing reference-area
7.28.11 ends-rowtrue | falsefalsenoN/A
7.27.4 extent<length> | <percentage> | inherit0.0ptnorefer to the corresponding block-progression-dimensionor inline-progression-dimension of thepage-viewport-area.
7.23.6 external-destinationempty string | <uri-specification>empty stringnoN/A
7.19.2 floatbefore | start | end | left | right | inside | outside | none | inheritnonenoN/A
7.27.18 flow-map-name<name>none, a value is requirednoN/A
7.27.19 flow-map-reference<name>see prosenoN/A
7.27.5 flow-name<name>an empty nameno, a value is requiredN/A
7.27.20 flow-name-reference<name>none, a value is requirednoN/A
7.31.13 font[ [ <font-style> || <font-variant>|| <font-weight> ]? <font-size> [ / <line-height>]? <font-family>] | caption | icon | menu | message-box | small-caption | status-bar| inheritsee individual propertiesyesN/A
7.9.2 font-family[[ <family-name> | <generic-family>],]* [<family-name> | <generic-family>] | inheritdepends on user agentyesN/A
7.9.3 font-selection-strategyauto | character-by-character | inheritautoyesN/A
7.9.4 font-size<absolute-size> | <relative-size> | <length>| <percentage> | inheritmediumyes, the computed value is inheritedrefer to parent element's font size
7.9.6 font-size-adjust<number> | none | inheritnoneyesN/A
7.9.5 font-stretchnormal | wider | narrower | ultra-condensed| extra-condensed | condensed | semi-condensed | semi-expanded |expanded | extra-expanded | ultra-expanded | inheritnormalyesN/A
7.9.7 font-stylenormal | italic | oblique | backslant | inheritnormalyesN/A
7.9.8 font-variantnormal | small-caps | inheritnormalyesN/A
7.9.9 font-weightnormal | bold | bolder | lighter | 100 | 200| 300 | 400 | 500 | 600 | 700 | 800 | 900 | inheritnormalyesN/A
7.27.6 force-page-countauto | even | odd | end-on-even | end-on-odd | no-force| inheritautonoN/A
7.26.1 format<string>1noN/A
7.29.2 glyph-orientation-horizontal<angle> | inherit0degyesN/A
7.29.3 glyph-orientation-verticalauto | <angle> | inheritautoyesN/A
7.26.2 grouping-separator<character>no separatornoN/A
7.26.3 grouping-size<number>no groupingnoN/A
7.15.6 height<length> | <percentage> | auto | inheritautonosee prose
7.10.4 hyphenatefalse | true | inheritfalseyesN/A
7.10.5 hyphenation-character<character> | inheritThe Unicode hyphen character U+2010yesN/A
7.16.1 hyphenation-keepauto | column | page | inheritautoyesN/A
7.16.2 hyphenation-ladder-countno-limit | <number> | inheritno-limityesN/A
7.10.6 hyphenation-push-character-count<number> | inherit2yesN/A
7.10.7 hyphenation-remain-character-count<number> | inherit2yesN/A
7.30.8 id <id>see proseno, see proseN/A
7.24.1 index-class<string>empty stringnoN/A
7.24.2 index-key<string>nonenoN/A
7.23.7 indicate-destinationtrue | falsefalsenoN/A
7.27.7 initial-page-numberauto | auto-odd | auto-even | <number> | inheritautonoN/A
7.15.7 inline-progression-dimensionauto | <length> | <percentage> | <length-range>| inheritautonosee prose
7.23.8 internal-destinationempty string | <idref>empty stringnoN/A
7.30.9 intrinsic-scale-value<percentage> | inherit100%yesuser defined
7.19.3 intrusion-displaceauto | none | line | indent | block | inheritautoyesN/A
7.20.3 keep-together<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autoyesN/A
7.20.4 keep-with-next<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autonoN/A
7.20.5 keep-with-previous<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autonoN/A
7.10.2 languagenone | <language> | inheritnoneyesN/A
7.16.3 last-line-end-indent<length> | <percentage> | inherit0ptyesrefer to inline-progression-dimension of closest ancestor block-area that is not a line-area
7.22.1 leader-alignmentnone | reference-area | page | inheritnoneyesN/A
7.22.4 leader-length<length-range> | <percentage> | inheritleader-length.minimum=0pt, .optimum=12.0pt, .maximum=100%yesrefer to the inline-progression-dimension of content-rectangle of parent area
7.22.2 leader-patternspace | rule | dots | use-content | inheritspaceyesN/A
7.22.3 leader-pattern-widthuse-font-metrics | <length> | <percentage> | inherituse-font-metricsyesrefer to the inline-progression-dimension of content-rectangle of parent area
7.6.5 left<length> | <percentage> | auto | inheritautonorefer to width of containing block
7.17.2 letter-spacingnormal | <length> | <space> | inheritnormalyesN/A
7.26.4 letter-valueauto | alphabetic | traditionalautonoN/A
7.16.7 linefeed-treatmentignore | preserve | treat-as-space | treat-as-zero-width-space | inherittreat-as-spaceyesN/A
7.16.4 line-heightnormal | <length> | <number> | <percentage> | <space>| inheritnormalyesrefer to the font size of the element itself
7.16.5 line-height-shift-adjustmentconsider-shifts | disregard-shifts | inheritconsider-shiftsyesN/A
7.16.6 line-stacking-strategyline-height | font-height | max-height | inheritmax-heightyesN/A
7.31.14 margin<margin-width>{1,4} | inheritnot defined for shorthand propertiesnorefer to width of containing block
7.11.2 margin-bottom<margin-width> | inherit0ptnorefer to width of containing block
7.11.3 margin-left<margin-width> | inherit0ptnorefer to width of containing block
7.11.4 margin-right<margin-width> | inherit0ptnorefer to width of containing block
7.11.1 margin-top<margin-width> | inherit0ptnorefer to width of containing block
7.25.1 marker-class-name<name>an empty nameno, a value is requiredN/A
7.27.8 master-name<name>an empty nameno, a value is requiredN/A
7.27.9 master-reference<name>an empty nameno, a value is requiredN/A
7.15.8 max-height<length> | <percentage> | none | inheritnonenorefer to height of containing block
7.27.10 maximum-repeats<number> | no-limit | inheritno-limitnoN/A
7.15.9 max-width<length> | <percentage> | none | inheritnonenorefer to width of containing block
7.27.11 media-usageauto | paginate | bounded-in-one-dimension | unboundedautonoNA
7.24.6 merge-pages-across-index-key-referencesmerge | leave-separatemergeyesN/A
7.24.4 merge-ranges-across-index-key-referencesmerge | leave-separatemergeyesN/A
7.24.5 merge-sequential-page-numbersmerge | leave-separatemergeyesN/A
7.15.10 min-height<length> | <percentage> | inherit0ptnorefer to height of containing block
7.15.11 min-width<length> | <percentage> | inheritdepends on UAnorefer to width of containing block
7.28.12 number-columns-repeated<number>1noN/A
7.28.13 number-columns-spanned<number>1noN/A
7.28.14 number-rows-spanned<number>1noN/A
7.27.12 odd-or-evenodd | even | any | inheritanynoN/A
7.20.6 orphans<integer> | inherit2yesN/A
7.21.2 overflowvisible | hidden | scroll | error-if-overflow | repeat | auto | inheritautonoN/A
7.31.15 padding<padding-width>{1,4} | inheritnot defined for shorthand propertiesnorefer to width of containing block
7.8.32 padding-after<padding-width> | <length-conditional> | inherit0ptnorefer to width of containing block
7.8.31 padding-before<padding-width> | <length-conditional> | inherit0ptnorefer to width of containing block
7.8.36 padding-bottom<padding-width> | inherit0ptnorefer to width of containing block
7.8.34 padding-end<padding-width> | <length-conditional> | inherit0ptnorefer to width of containing block
7.8.37 padding-left<padding-width> | inherit0ptnorefer to width of containing block
7.8.38 padding-right<padding-width> | inherit0ptnorefer to width of containing block
7.8.33 padding-start<padding-width> | <length-conditional> | inherit0ptnorefer to width of containing block
7.8.35 padding-top<padding-width> | inherit0ptnorefer to width of containing block
7.31.16 page-break-afterauto | always | avoid | left | right | inheritautonoN/A
7.31.17 page-break-beforeauto | always | avoid | left | right | inheritautonoN/A
7.31.18 page-break-insideavoid | auto | inheritautoyesN/A
7.30.10 page-citation-strategy[ all | normal | non-blank | inheritallnoN/A
7.27.13 page-heightauto | indefinite | <length> | inheritautonoN/A
7.24.3 page-number-treatmentlink | no-linkno-linkyesN/A
7.27.14 page-positiononly | first | last | rest | any | inheritanynoN/A
7.27.15 page-widthauto | indefinite | <length> | inheritautonoN/A
7.31.19 pause[<time> | <percentage>]{1,2} | inheritdepends on user agentnosee descriptions of 'pause-before' and 'pause-after'
7.7.5 pause-after<time> | <percentage> | inheritdepends on user agentnosee prose
7.7.6 pause-before<time> | <percentage> | inheritdepends on user agentnosee prose
7.7.7 pitch<frequency> | x-low | low | medium | high| x-high | inheritmediumyesN/A
7.7.8 pitch-range<number> | inherit50yesN/A
7.7.9 play-during<uri-specification> mix? repeat? | auto | none | inheritautonoN/A
7.31.20 positionstatic | relative | absolute | fixed | inheritstaticnoN/A
7.27.16 precedencetrue | false | inheritfalsenoN/A
7.30.12 provisional-distance-between-starts<length> | <percentage> | inherit24.0ptyesrefer to inline-progression-dimension of closest ancestor block-area that is not a line-area
7.30.11 provisional-label-separation<length> | <percentage> | inherit6.0ptyesrefer to inline-progression-dimension of closest ancestor block-area that is not a line-area
7.21.3 reference-orientation 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit0noN/A
7.30.13 ref-id<idref> | inheritnone, value requirednoN/A
7.24.7 ref-index-key<string>none, value requirednoN/A
7.27.17 region-namexsl-region-body | xsl-region-start | xsl-region-end| xsl-region-before | xsl-region-after |<name>see proseno, a value is requiredN/A
7.27.21 region-name-reference<name>none, a value is requirednoN/A
7.14.6 relative-alignbefore | baseline| inheritbeforeyesN/A
7.13.5 relative-positionstatic | relative | inheritstaticnoN/A
7.18.3 rendering-intentauto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inheritautonoN/A
7.25.5 retrieve-boundarypage | page-sequence | documentpage-sequencenoN/A
7.25.2 retrieve-boundary-within-tabletable | table-fragment | pagetablenoN/A
7.25.3 retrieve-class-name<name>an empty nameno, a value is requiredN/A
7.25.4 retrieve-positionfirst-starting-within-page | first-including-carryover |last-starting-within-page | last-ending-within-pagefirst-starting-within-pagenoN/A
7.25.6 retrieve-position-within-tablefirst-starting | first-including-carryover |last-starting | last-endingfirst-startingnoN/A
7.7.10 richness<number> | inherit50yesN/A
7.6.3 right<length> | <percentage> | auto | inheritautonorefer to width of containing block
7.5.2 role<string> | <uri-specification> | none | inheritnonenoN/A
7.22.5 rule-stylenone | dotted | dashed | solid | double | groove| ridge | inheritsolidyesN/A
7.22.6 rule-thickness<length>1.0ptyesN/A
7.30.14 scale-optionwidth | height | inheritwidthyesN/A
7.15.12 scalinguniform | non-uniform | inherituniformnoN/A
7.15.13 scaling-methodauto | integer-pixels | resample-any-method | inheritautonoN/A
7.30.15 score-spacestrue | false | inherittrueyesN/A
7.10.3 scriptnone | auto | <script> | inheritautoyesN/A
7.23.9 show-destinationreplace | newreplacenoN/A
7.31.21 size<length>{1,2} | auto | landscape | portrait| inheritautoN/A [XSL:no, is optional]N/A
7.5.1 source-document<uri-specification> [<uri-specification>]* | none | inheritnonenoN/A
7.11.6 space-after<space> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0noN/A (Differs from margin-bottom in CSS)
7.11.5 space-before<space> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0noN/A (Differs from margin-top in CSS)
7.12.5 space-end<space> | <percentage> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0norefer to inline-progression-dimension of closest ancestor block-area that is not a line-area
7.12.6 space-start<space> | <percentage> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0norefer to inline-progression-dimension of closest ancestor block-area that is not a line-area
7.21.4 spannone | all | inheritnonenoN/A
7.7.11 speaknormal | none | spell-out | inheritnormalyesN/A
7.7.12 speak-headeronce | always | inheritonceyesN/A
7.7.13 speak-numeraldigits | continuous | inheritcontinuousyesN/A
7.7.14 speak-punctuationcode | none | inheritnoneyesN/A
7.7.15 speech-rate<number> | x-slow | slow | medium | fast| x-fast | faster | slower | inheritmediumyesN/A
7.30.16 src<uri-specification> | inheritnone, value requirednoN/A
7.11.7 start-indent<length> | <percentage> | inherit0ptyesrefer to inline-progression-dimensionof containing reference-area
7.23.10 starting-stateshow | hideshownoN/A
7.28.15 starts-rowtrue | falsefalsenoN/A
7.7.16 stress<number> | inherit50yesN/A
7.17.3 suppress-at-line-breakauto | suppress | retain | inheritautonoN/A
7.23.11 switch-toxsl-preceding | xsl-following | xsl-any | <name>[ <name>]*xsl-anynoN/A
7.28.16 table-layoutauto | fixed | inheritautonoN/A
7.28.17 table-omit-footer-at-breaktrue | falsefalsenoN/A
7.28.18 table-omit-header-at-breaktrue | falsefalsenoN/A
7.23.12 target-presentation-contextuse-target-processing-context | <uri-specification>use-target-processing-contextnoN/A
7.23.13 target-processing-contextdocument-root | <uri-specification>document-rootnoN/A
7.23.14 target-stylesheetuse-normal-stylesheet | <uri-specification>use-normal-stylesheetnoN/A
7.16.9 text-alignstart | center | end | justify | inside | outside| left | right | <string> | inheritstartyesN/A
7.16.10 text-align-lastrelative | start | center | end | justify | inside| outside | left | right | inheritrelativeyesN/A
7.29.4 text-altitudeuse-font-metrics | <length> | <percentage> | inherituse-font-metricsnorefer to font's em-height
7.17.4 text-decorationnone | [ [ underline | no-underline] || [ overline | no-overline ]|| [ line-through | no-line-through ] || [ blink | no-blink ] ]| inheritnoneno, but see proseN/A
7.29.5 text-depthuse-font-metrics | <length> | <percentage> | inherituse-font-metricsnorefer to font's em-height
7.16.11 text-indent<length> | <percentage> | inherit0ptyesrefer to width of containing block
7.17.5 text-shadownone | [<color> || <length> <length> <length>?,]* [<color> || <length> <length> <length>?] | inheritnoneno, see proseN/A
7.17.6 text-transformcapitalize | uppercase | lowercase | none | inheritnoneyesN/A
7.6.2 top<length> | <percentage> | auto | inheritautonorefer to height of containing block
7.17.7 treat-as-word-spaceauto | true | false | inheritautonoN/A
7.29.6 unicode-bidinormal | embed | bidi-override | inheritnormalnoN/A
7.31.22 vertical-alignbaseline | middle | sub | super | text-top |text-bottom | <percentage> | <length> | top | bottom | inheritbaselinenorefer to the 'line-height' of the element itself
7.30.17 visibilityvisible | hidden | collapse | inheritvisibleyesN/A
7.7.17 voice-family[[<specific-voice> | <generic-voice>],]* [<specific-voice> | <generic-voice> ] | inheritdepends on user agentyesN/A
7.7.18 volume<number> | <percentage> | silent | x-soft| soft | medium | loud | x-loud | inheritmediumyesrefer to inherited value
7.31.23 white-spacenormal | pre | nowrap | inheritnormalyesN/A
7.16.12 white-space-collapsefalse | true | inherittrueyesN/A
7.16.8 white-space-treatmentignore | preserve | ignore-if-before-linefeed |ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inheritignore-if-surrounding-linefeedyesN/A
7.20.7 widows<integer> | inherit2yesN/A
7.15.14 width<length> | <percentage> | auto | inheritautonorefer to width of containing block
7.17.8 word-spacingnormal | <length> | <space> | inheritnormalyesN/A
7.16.13 wrap-optionno-wrap | wrap | inheritwrapyesN/A
7.29.7 writing-modelr-tb |rl-tb |tb-rl |tb-lr |bt-lr |bt-rl |lr-bt |rl-bt |lr-alternating-rl-bt |lr-alternating-rl-tb |lr-inverting-rl-bt |lr-inverting-rl-tb |tb-lr-in-lr-pairs |lr |rl |tb |inheritlr-tbyes (see prose)N/A
7.31.24 xml:lang<language-country> | inheritnot defined for shorthand propertiesyesN/A
7.30.18 z-indexauto | <integer> | inheritautonoN/A

B.3 Property Table: Part II

The Trait Mapping Values are explained inB.1 Explanation of Trait Mapping Values.

NameValuesInitial ValueTrait mappingCore
7.6.1 absolute-positionauto | absolute | fixed | inheritautoSee prose.Complete
7.23.1 active-statelink | visited | active | hover | focusno, a value is requiredAction

Extended.

Fallback: N/A use fallback for fo:multi-properties

7.14.1 alignment-adjustauto | baseline| before-edge| text-before-edge | middle | central| after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| <percentage> | <length>| inheritautoFormattingBasic
7.14.2 alignment-baselineauto | baseline | before-edge| text-before-edge | middle | central | after-edge| text-after-edge | ideographic | alphabetic | hanging | mathematical| inheritautoFormattingBasic
7.15.1 allowed-height-scale[ any | <percentage> ]* | inheritanyFormatting

Extended.

Fallback: Initial value

7.15.2 allowed-width-scale[ any | <percentage> ]* | inheritanyFormatting

Extended.

Fallback: Initial value

7.23.2 auto-restoretrue | falsefalseAction

Extended.

Fallback: N/A use fallback for fo:multi-switch

7.7.1 azimuth<angle> | [[ left-side | far-left | left| center-left | center | center-right | right | far-right | right-side] || behind ] | leftwards | rightwards | inheritcenterRenderingBasic
7.31.1 background[<background-color> ||<background-image>|| <background-repeat> || <background-attachment> || <background-position>]] | inheritnot defined for shorthand propertiesShorthandComplete
7.8.1 background-attachmentscroll | fixed | inheritscrollRendering

Extended.

Fallback: Initial value

7.8.2 background-color<color> | transparent | inherittransparentRenderingBasic
7.8.3 background-image<uri-specification> | none | inheritnoneRendering

Extended.

Fallback: Initial value

7.31.2 background-position[ [<percentage> | <length> ]{1,2} |[ [top | center | bottom] || [left | center | right] ] ] | inherit0% 0%ShorthandComplete
7.8.5 background-position-horizontal<percentage> | <length> |left | center | right | inherit0%Value change

Extended.

Fallback: Initial value

7.8.6 background-position-vertical<percentage> | <length> |top | center | bottom | inherit0%Value change

Extended.

Fallback: Initial value

7.8.4 background-repeatrepeat | repeat-x | repeat-y | no-repeat | inheritrepeatRendering

Extended.

Fallback: no-repeat

7.14.3 baseline-shiftbaseline | sub | super | <percentage> | <length>| inheritbaselineFormattingBasic
7.27.1 blank-or-not-blankblank | not-blank | any | inheritanySpecification

Extended.

Fallback: N/A use fallback for fo:repeatable-page-master-alternatives

7.15.3 block-progression-dimensionauto | <length> | <percentage> | <length-range>| inheritautoFormattingBasic
7.31.3 border[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesShorthandComplete
7.8.10 border-after-color<color> | transparent | inheritthe value of the 'color' propertyRenderingBasic
7.28.1 border-after-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0FormattingBasic
7.8.11 border-after-style<border-style> | inheritnoneRenderingBasic
7.8.12 border-after-width<border-width> | <length-conditional> | inheritmediumFormatting and RenderingBasic
7.8.7 border-before-color<color> | transparent | inheritthe value of the 'color' propertyRenderingBasic
7.28.2 border-before-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0FormattingBasic
7.8.8 border-before-style<border-style> | inheritnoneRenderingBasic
7.8.9 border-before-width<border-width> | <length-conditional> | inheritmediumFormatting and RenderingBasic
7.31.4 border-bottom[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesShorthandComplete
7.8.22 border-bottom-color<color> | transparent | inheritthe value of the 'color' propertyDisappearsBasic
7.8.23 border-bottom-style<border-style> | inheritnoneDisappearsBasic
7.8.24 border-bottom-width<border-width> | inheritmediumDisappearsBasic
7.28.3 border-collapsecollapse | collapse-with-precedence | separate | inheritcollapseFormatting

Extended.

Fallback: Initial value

7.31.5 border-color[ <color> | transparent ]{1,4} | inheritsee individual propertiesShorthandComplete
7.8.16 border-end-color<color> | transparent | inheritthe value of the 'color' propertyRenderingBasic
7.28.4 border-end-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0FormattingBasic
7.8.17 border-end-style<border-style> | inheritnoneRenderingBasic
7.8.18 border-end-width<border-width> | <length-conditional> | inheritmediumFormatting and RenderingBasic
7.31.6 border-left[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesShorthandComplete
7.8.25 border-left-color<color> | transparent | inheritthe value of the 'color' propertyDisappearsBasic
7.8.26 border-left-style<border-style> | inheritnoneDisappearsBasic
7.8.27 border-left-width<border-width> | inheritmediumDisappearsBasic
7.31.7 border-right[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesShorthandComplete
7.8.28 border-right-color<color> | transparent | inheritthe value of the 'color' propertyDisappearsBasic
7.8.29 border-right-style<border-style> | inheritnoneDisappearsBasic
7.8.30 border-right-width<border-width> | inheritmediumDisappearsBasic
7.28.5 border-separation<length-bp-ip-direction> | inherit.block-progression-direction="0pt" .inline-progression-direction="0pt"Formatting

Extended.

Fallback: Initial value

7.31.9 border-spacing<length> <length>? | inherit0ptShorthandComplete
7.8.13 border-start-color<color> | transparent | inheritthe value of the 'color' propertyRenderingBasic
7.28.6 border-start-precedenceforce | <integer> | inheritfo:table: 6, fo:table-cell: 5, fo:table-column: 4,fo:table-row: 3, fo:table-body: 2, fo:table-header: 1, fo:table-footer: 0FormattingBasic
7.8.14 border-start-style<border-style> | inheritnoneRenderingBasic
7.8.15 border-start-width<border-width> | <length-conditional> | inheritmediumFormatting and RenderingBasic
7.31.8 border-style<border-style>{1,4} | inheritsee individual propertiesShorthandComplete
7.31.10 border-top[ <border-width> || <border-style>|| [ <color> | transparent ] ] | inheritsee individual propertiesShorthandComplete
7.8.19 border-top-color<color> | transparent | inheritthe value of the 'color' propertyDisappearsBasic
7.8.20 border-top-style<border-style> | inheritnoneDisappearsBasic
7.8.21 border-top-width<border-width> | inheritmediumDisappearsBasic
7.31.11 border-width<border-width>{1,4} | inheritsee individual propertiesShorthandComplete
7.6.4 bottom<length> | <percentage> | auto | inheritautoFormatting

Extended.

Fallback: N/A due to fallback for absolute-position, relative-position

7.20.1 break-afterauto | column | page | even-page | odd-page | inheritautoFormattingBasic
7.20.2 break-beforeauto | column | page | even-page | odd-page | inheritautoFormattingBasic
7.28.7 caption-sidebefore | after | start | end | top | bottom | left | right | inheritbeforeFormattingComplete
7.23.3 case-name<name>none, a value is requiredAction

Extended.

Fallback: N/A use fallback for fo:multi-switch

7.23.4 case-title<string>none, a value is requiredAction

Extended.

Fallback: N/A use fallback for fo:multi-switch

7.30.1 change-bar-class<name>none, value requiredReference

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.30.2 change-bar-color<color>the value of the color propertyRendering

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.30.3 change-bar-offset<length>6ptFormatting

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.30.4 change-bar-placementstart | end | left | right | inside | outside | alternatestartFormatting

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.30.5 change-bar-style<border-style>noneRendering

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.30.6 change-bar-width<border-width>mediumRendering

Extended.

Fallback: N/A use fallback for fo:change-bar-begin, fo:change-bar-end

7.17.1 character<character>N/A, value is requiredFormattingBasic
7.19.1 clearstart | end | left | right | inside | outside | both | none | inheritnoneFormatting

Extended.

Fallback: N/A use fallback for fo:float

7.21.1 clip<shape> | auto | inheritautoRendering

Extended.

Fallback: Initial value

7.18.1 color<color> | inheritdepends on user agentRenderingBasic
7.18.2 color-profile-name<name> | inheritN/A, value is requiredFormatting

Extended.

Fallback: N/A use fallback for fo:color-profile

7.27.2 column-count<number> | inherit1Specification

Extended.

Fallback: Initial value

7.27.3 column-gap<length> | <percentage> | inherit12.0ptSpecification

Extended.

Fallback: N/A due to fallback for column-count

7.28.8 column-number<number>see proseValue changeBasic
7.28.9 column-width<length> | <percentage>see proseSpecificationBasic
7.15.4 content-heightauto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inheritautoFormatting

Extended.

Fallback: Initial value

7.30.7 content-type<string> | autoautoFormatting

Extended.

Fallback: Initial value

7.15.5 content-widthauto | scale-to-fit | scale-down-to-fit | scale-up-to-fit |<length> | <percentage> | inheritautoFormatting

Extended.

Fallback: Initial value

7.10.1 countrynone | <country> | inheritnoneFormatting

Extended.

Fallback: Initial value

7.31.12 cue<cue-before> || <cue-after> | inheritnot defined for shorthand propertiesShorthandComplete
7.7.2 cue-after<uri-specification> | none | inheritnoneRenderingBasic
7.7.3 cue-before<uri-specification> | none | inheritnoneRenderingBasic
7.23.5 destination-placement-offset<length>0ptAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.29.1 directionltr | rtl | inheritltrSee prose.Basic
7.14.4 display-alignauto | before | center | after| inheritautoFormatting

Extended.

Fallback: Initial value

7.14.5 dominant-baselineauto | use-script | no-change | reset-size| ideographic | alphabetic | hanging | mathematical| central | middle | text-after-edge | text-before-edge| inheritautoFormattingBasic
7.7.4 elevation<angle> | below | level | above | higher| lower | inheritlevelRenderingBasic
7.28.10 empty-cellsshow | hide | inheritshowFormatting

Extended.

Fallback: Initial value

7.11.8 end-indent<length> | <percentage> | inherit0ptFormattingBasic
7.28.11 ends-rowtrue | falsefalseFormatting

Extended.

Fallback: Initial value

7.27.4 extent<length> | <percentage> | inherit0.0ptSpecification

Extended.

Fallback: N/A use fallback for fo:region-before, fo:region-after, fo:region-start, and fo:region-end

7.23.6 external-destinationempty string | <uri-specification>empty stringAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.19.2 floatbefore | start | end | left | right | inside | outside | none | inheritnoneFormatting

Extended.

Fallback: N/A use fallback for fo:float

7.27.18 flow-map-name<name>none, a value is requiredSpecification

Extended.

Fallback: N/A use fallback for fo:flow-map

7.27.19 flow-map-reference<name>see proseSpecification

Extended.

Fallback: N/A use fallback for fo:flow-map

7.27.5 flow-name<name>an empty nameReferenceBasic
7.27.20 flow-name-reference<name>none, a value is requiredSpecification

Extended.

Fallback: N/A use fallback for fo:flow-map

7.31.13 font[ [ <font-style> || <font-variant>|| <font-weight> ]? <font-size> [ / <line-height>]? <font-family>] | caption | icon | menu | message-box | small-caption | status-bar| inheritsee individual propertiesShorthandComplete
7.9.2 font-family[[ <family-name> | <generic-family>],]* [<family-name> | <generic-family>] | inheritdepends on user agentFont selectionBasic
7.9.3 font-selection-strategyauto | character-by-character | inheritautoFont selectionComplete
7.9.4 font-size<absolute-size> | <relative-size> | <length>| <percentage> | inheritmediumFormatting and RenderingBasic
7.9.6 font-size-adjust<number> | none | inheritnoneFont selection

Extended.

Fallback: Initial value

7.9.5 font-stretchnormal | wider | narrower | ultra-condensed| extra-condensed | condensed | semi-condensed | semi-expanded |expanded | extra-expanded | ultra-expanded | inheritnormalFont selection

Extended.

Fallback: Initial value

7.9.7 font-stylenormal | italic | oblique | backslant | inheritnormalFont selectionBasic
7.9.8 font-variantnormal | small-caps | inheritnormalFont selectionBasic
7.9.9 font-weightnormal | bold | bolder | lighter | 100 | 200| 300 | 400 | 500 | 600 | 700 | 800 | 900 | inheritnormalFont selectionBasic
7.27.6 force-page-countauto | even | odd | end-on-even | end-on-odd | no-force| inheritautoSpecification

Extended.

Fallback: no-force

7.26.1 format<string>1FormattingBasic
7.29.2 glyph-orientation-horizontal<angle> | inherit0degFormatting

Extended.

Fallback: Initial value

7.29.3 glyph-orientation-verticalauto | <angle> | inheritautoFormatting

Extended.

Fallback: Initial value

7.26.2 grouping-separator<character>no separatorFormatting

Extended.

Fallback: no separator

7.26.3 grouping-size<number>no groupingFormatting

Extended.

Fallback: no grouping

7.15.6 height<length> | <percentage> | auto | inheritautoDisappearsBasic
7.10.4 hyphenatefalse | true | inheritfalseFormatting

Extended.

Fallback: Initial value

7.10.5 hyphenation-character<character> | inheritThe Unicode hyphen character U+2010Formatting

Extended.

Fallback: N/A due to fallback for hyphenate

7.16.1 hyphenation-keepauto | column | page | inheritautoFormatting

Extended.

Fallback: N/A due to fallback for hyphenate

7.16.2 hyphenation-ladder-countno-limit | <number> | inheritno-limitFormatting

Extended.

Fallback: N/A due to fallback for hyphenate

7.10.6 hyphenation-push-character-count<number> | inherit2Formatting

Extended.

Fallback: N/A due to fallback for hyphenate

7.10.7 hyphenation-remain-character-count<number> | inherit2Formatting

Extended.

Fallback: N/A due to fallback for hyphenate

7.30.8 id <id>see proseReferenceBasic
7.24.1 index-class<string>empty stringReference

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.24.2 index-key<string>noneReference

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.23.7 indicate-destinationtrue | falsefalseAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.27.7 initial-page-numberauto | auto-odd | auto-even | <number> | inheritautoFormattingBasic
7.15.7 inline-progression-dimensionauto | <length> | <percentage> | <length-range>| inheritautoFormattingBasic
7.23.8 internal-destinationempty string | <idref>empty stringAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.30.9 intrinsic-scale-value<percentage> | inherit100%Refine

Extended.

Fallback: N/A use fallback for fo:scaling-value-citation

7.19.3 intrusion-displaceauto | none | line | indent | block | inheritautoFormatting

Extended.

Fallback: none

7.20.3 keep-together<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autoFormatting

Extended.

Fallback: Initial value

7.20.4 keep-with-next<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autoFormattingBasic
7.20.5 keep-with-previous<keep> | inherit.within-line=auto, .within-column=auto, .within-page=autoFormattingBasic
7.10.2 languagenone | <language> | inheritnoneValue change

Extended.

Fallback: Initial value

7.16.3 last-line-end-indent<length> | <percentage> | inherit0ptFormatting

Extended.

Fallback: Initial value

7.22.1 leader-alignmentnone | reference-area | page | inheritnoneFormatting

Extended.

Fallback: Initial value

7.22.4 leader-length<length-range> | <percentage> | inheritleader-length.minimum=0pt, .optimum=12.0pt, .maximum=100%FormattingBasic
7.22.2 leader-patternspace | rule | dots | use-content | inheritspaceFormattingBasic
7.22.3 leader-pattern-widthuse-font-metrics | <length> | <percentage> | inherituse-font-metricsFormatting

Extended.

Fallback: Initial value

7.6.5 left<length> | <percentage> | auto | inheritautoFormatting

Extended.

Fallback: N/A due to fallback for absolute-position, relative-position

7.17.2 letter-spacingnormal | <length> | <space> | inheritnormalDisappears

Extended.

Fallback: Initial value

7.26.4 letter-valueauto | alphabetic | traditionalautoFormattingBasic
7.16.7 linefeed-treatmentignore | preserve | treat-as-space | treat-as-zero-width-space | inherittreat-as-spaceFormatting

Extended.

Fallback: Initial value

7.16.4 line-heightnormal | <length> | <number> | <percentage> | <space>| inheritnormalFormattingBasic
7.16.5 line-height-shift-adjustmentconsider-shifts | disregard-shifts | inheritconsider-shiftsFormatting

Extended.

Fallback: Initial value

7.16.6 line-stacking-strategyline-height | font-height | max-height | inheritmax-heightFormattingBasic
7.31.14 margin<margin-width>{1,4} | inheritnot defined for shorthand propertiesShorthandComplete
7.11.2 margin-bottom<margin-width> | inherit0ptDisappearsBasic
7.11.3 margin-left<margin-width> | inherit0ptDisappearsBasic
7.11.4 margin-right<margin-width> | inherit0ptDisappearsBasic
7.11.1 margin-top<margin-width> | inherit0ptDisappearsBasic
7.25.1 marker-class-name<name>an empty nameFormatting

Extended.

Fallback: N/A use fallback for fo:marker

7.27.8 master-name<name>an empty nameSpecificationBasic
7.27.9 master-reference<name>an empty nameSpecificationBasic
7.15.8 max-height<length> | <percentage> | none | inheritnoneShorthandComplete
7.27.10 maximum-repeats<number> | no-limit | inheritno-limitSpecification

Extended.

Fallback: N/A use fallback for fo:repeatable-page-master-reference and fo:repeatable-page-master-alternatives

7.15.9 max-width<length> | <percentage> | none | inheritnoneShorthandComplete
7.27.11 media-usageauto | paginate | bounded-in-one-dimension | unboundedautoFormatting

Extended.

Fallback: Initial value

7.24.6 merge-pages-across-index-key-referencesmerge | leave-separatemergeSpecification

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.24.4 merge-ranges-across-index-key-referencesmerge | leave-separatemergeSpecification

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.24.5 merge-sequential-page-numbersmerge | leave-separatemergeSpecification

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.15.10 min-height<length> | <percentage> | inherit0ptShorthandComplete
7.15.11 min-width<length> | <percentage> | inheritdepends on UAShorthandComplete
7.28.12 number-columns-repeated<number>1SpecificationBasic
7.28.13 number-columns-spanned<number>1FormattingBasic
7.28.14 number-rows-spanned<number>1FormattingBasic
7.27.12 odd-or-evenodd | even | any | inheritanySpecification

Extended.

Fallback: N/A use fallback for fo:repeatable-page-master-alternatives

7.20.6 orphans<integer> | inherit2FormattingBasic
7.21.2 overflowvisible | hidden | scroll | error-if-overflow | repeat | auto | inheritautoFormattingBasic
7.31.15 padding<padding-width>{1,4} | inheritnot defined for shorthand propertiesShorthandComplete
7.8.32 padding-after<padding-width> | <length-conditional> | inherit0ptFormatting and RenderingBasic
7.8.31 padding-before<padding-width> | <length-conditional> | inherit0ptFormatting and RenderingBasic
7.8.36 padding-bottom<padding-width> | inherit0ptDisappearsBasic
7.8.34 padding-end<padding-width> | <length-conditional> | inherit0ptFormatting and RenderingBasic
7.8.37 padding-left<padding-width> | inherit0ptDisappearsBasic
7.8.38 padding-right<padding-width> | inherit0ptDisappearsBasic
7.8.33 padding-start<padding-width> | <length-conditional> | inherit0ptFormatting and RenderingBasic
7.8.35 padding-top<padding-width> | inherit0ptDisappearsBasic
7.31.16 page-break-afterauto | always | avoid | left | right | inheritautoShorthandComplete
7.31.17 page-break-beforeauto | always | avoid | left | right | inheritautoShorthandComplete
7.31.18 page-break-insideavoid | auto | inheritautoShorthandComplete
7.30.10 page-citation-strategy[ all | normal | non-blank | inheritallSpecification

Extended.

Fallback: N/A use fallback for fo:page-number-citation-last

7.27.13 page-heightauto | indefinite | <length> | inheritautoSpecificationBasic
7.24.3 page-number-treatmentlink | no-linkno-linkAction

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.27.14 page-positiononly | first | last | rest | any | inheritanySpecification

Extended.

Fallback: N/A use fallback for fo:repeatable-page-master-alternatives

7.27.15 page-widthauto | indefinite | <length> | inheritautoSpecificationBasic
7.31.19 pause[<time> | <percentage>]{1,2} | inheritdepends on user agentShorthandComplete
7.7.5 pause-after<time> | <percentage> | inheritdepends on user agentRenderingBasic
7.7.6 pause-before<time> | <percentage> | inheritdepends on user agentRenderingBasic
7.7.7 pitch<frequency> | x-low | low | medium | high| x-high | inheritmediumRenderingBasic
7.7.8 pitch-range<number> | inherit50RenderingBasic
7.7.9 play-during<uri-specification> mix? repeat? | auto | none | inheritautoRenderingBasic
7.31.20 positionstatic | relative | absolute | fixed | inheritstaticShorthandComplete
7.27.16 precedencetrue | false | inheritfalseSpecification

Extended.

Fallback: N/A use fallback for fo:region-before and fo:region-after

7.30.12 provisional-distance-between-starts<length> | <percentage> | inherit24.0ptSpecificationBasic
7.30.11 provisional-label-separation<length> | <percentage> | inherit6.0ptSpecificationBasic
7.21.3 reference-orientation 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit0See prose.

Extended.

Fallback: Initial value

7.30.13 ref-id<idref> | inheritnone, value requiredReference

Extended.

Fallback: N/A use fallback for fo:page-number-citation

7.24.7 ref-index-key<string>none, value requiredReference

Extended.

Fallback: N/A use fallback for fo:index-page-citation-list

7.27.17 region-namexsl-region-body | xsl-region-start | xsl-region-end| xsl-region-before | xsl-region-after |<name>see proseSpecificationBasic
7.27.21 region-name-reference<name>none, a value is requiredSpecification

Extended.

Fallback: N/A use fallback for fo:flow-map

7.14.6 relative-alignbefore | baseline| inheritbeforeFormatting

Extended.

Fallback: Initial value

7.13.5 relative-positionstatic | relative | inheritstaticSee prose.

Extended.

Fallback: Initial value

7.18.3 rendering-intentauto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inheritautoFormatting

Extended.

Fallback: N/A use fallback for fo:color-profile

7.25.5 retrieve-boundarypage | page-sequence | documentpage-sequenceFormatting

Extended.

Fallback: N/A use fallback for fo:retrieve-marker

7.25.2 retrieve-boundary-within-tabletable | table-fragment | pagetableFormatting

Extended.

Fallback: N/A use fallback for fo:retrieve-table-marker

7.25.3 retrieve-class-name<name>an empty nameFormatting

Extended.

Fallback: N/A use fallback for fo:retrieve-marker

7.25.4 retrieve-positionfirst-starting-within-page | first-including-carryover |last-starting-within-page | last-ending-within-pagefirst-starting-within-pageFormatting

Extended.

Fallback: N/A use fallback for fo:retrieve-marker

7.25.6 retrieve-position-within-tablefirst-starting | first-including-carryover |last-starting | last-endingfirst-startingFormatting

Extended.

Fallback: N/A use fallback for fo:retrieve-table-marker

7.7.10 richness<number> | inherit50RenderingBasic
7.6.3 right<length> | <percentage> | auto | inheritautoFormatting

Extended.

Fallback: N/A due to fallback for absolute-position, relative-position

7.5.2 role<string> | <uri-specification> | none | inheritnoneRenderingBasic
7.22.5 rule-stylenone | dotted | dashed | solid | double | groove| ridge | inheritsolidRenderingBasic
7.22.6 rule-thickness<length>1.0ptRenderingBasic
7.30.14 scale-optionwidth | height | inheritwidthRefine

Extended.

Fallback: N/A use fallback for fo:scaling-value-citation

7.15.12 scalinguniform | non-uniform | inherituniformFormatting

Extended.

Fallback: Initial value

7.15.13 scaling-methodauto | integer-pixels | resample-any-method | inheritautoFormatting

Extended.

Fallback: Initial value

7.30.15 score-spacestrue | false | inherittrueFormatting

Extended.

Fallback: Initial value

7.10.3 scriptnone | auto | <script> | inheritautoFormatting

Extended.

Fallback: none

7.23.9 show-destinationreplace | newreplaceAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.31.21 size<length>{1,2} | auto | landscape | portrait| inheritautoShorthandComplete
7.5.1 source-document<uri-specification> [<uri-specification>]* | none | inheritnoneRenderingBasic
7.11.6 space-after<space> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0FormattingBasic
7.11.5 space-before<space> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0FormattingBasic
7.12.5 space-end<space> | <percentage> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0FormattingBasic
7.12.6 space-start<space> | <percentage> | inheritspace.minimum=0pt, .optimum=0pt, .maximum=0pt,.conditionality=discard, .precedence=0FormattingBasic
7.21.4 spannone | all | inheritnoneFormatting

Extended.

Fallback: Initial value

7.7.11 speaknormal | none | spell-out | inheritnormalRenderingBasic
7.7.12 speak-headeronce | always | inheritonceRenderingBasic
7.7.13 speak-numeraldigits | continuous | inheritcontinuousRenderingBasic
7.7.14 speak-punctuationcode | none | inheritnoneRenderingBasic
7.7.15 speech-rate<number> | x-slow | slow | medium | fast| x-fast | faster | slower | inheritmediumRenderingBasic
7.30.16 src<uri-specification> | inheritnone, value requiredReferenceBasic
7.11.7 start-indent<length> | <percentage> | inherit0ptFormattingBasic
7.23.10 starting-stateshow | hideshowAction

Extended.

Fallback: N/A use fallback for fo:multi-switch

7.28.15 starts-rowtrue | falsefalseFormatting

Extended.

Fallback: Initial value

7.7.16 stress<number> | inherit50RenderingBasic
7.17.3 suppress-at-line-breakauto | suppress | retain | inheritautoFormatting

Extended.

Fallback: Initial value

7.23.11 switch-toxsl-preceding | xsl-following | xsl-any | <name>[ <name>]*xsl-anyAction

Extended.

Fallback: N/A use fallback for fo:multi-switch

7.28.16 table-layoutauto | fixed | inheritautoFormatting

Extended.

Fallback: fixed

7.28.17 table-omit-footer-at-breaktrue | falsefalseFormatting

Extended.

Fallback: Initial value

7.28.18 table-omit-header-at-breaktrue | falsefalseFormatting

Extended.

Fallback: Initial value

7.23.12 target-presentation-contextuse-target-processing-context | <uri-specification>use-target-processing-contextAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.23.13 target-processing-contextdocument-root | <uri-specification>document-rootAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.23.14 target-stylesheetuse-normal-stylesheet | <uri-specification>use-normal-stylesheetAction

Extended.

Fallback: N/A use fallback for fo:basic-link

7.16.9 text-alignstart | center | end | justify | inside | outside| left | right | <string> | inheritstartValue changeBasic
7.16.10 text-align-lastrelative | start | center | end | justify | inside| outside | left | right | inheritrelativeValue change

Extended.

Fallback: Initial value

7.29.4 text-altitudeuse-font-metrics | <length> | <percentage> | inherituse-font-metricsFormatting

Extended.

Fallback: Initial value

7.17.4 text-decorationnone | [ [ underline | no-underline] || [ overline | no-overline ]|| [ line-through | no-line-through ] || [ blink | no-blink ] ]| inheritnoneSee prose.

Extended.

Fallback: Initial value

7.29.5 text-depthuse-font-metrics | <length> | <percentage> | inherituse-font-metricsFormatting

Extended.

Fallback: Initial value

7.16.11 text-indent<length> | <percentage> | inherit0ptFormattingBasic
7.17.5 text-shadownone | [<color> || <length> <length> <length>?,]* [<color> || <length> <length> <length>?] | inheritnoneRendering

Extended.

Fallback: Initial value

7.17.6 text-transformcapitalize | uppercase | lowercase | none | inheritnoneRefine

Extended.

Fallback: Initial value

7.6.2 top<length> | <percentage> | auto | inheritautoFormatting

Extended.

Fallback: N/A due to fallback for absolute-position, relative-position

7.17.7 treat-as-word-spaceauto | true | false | inheritautoFormatting

Extended.

Fallback: Initial value

7.29.6 unicode-bidinormal | embed | bidi-override | inheritnormalFormatting

Extended.

Fallback: See prose

7.31.22 vertical-alignbaseline | middle | sub | super | text-top |text-bottom | <percentage> | <length> | top | bottom | inheritbaselineShorthandComplete
7.30.17 visibilityvisible | hidden | collapse | inheritvisibleMagic

Extended.

Fallback: Initial value

7.7.17 voice-family[[<specific-voice> | <generic-voice>],]* [<specific-voice> | <generic-voice> ] | inheritdepends on user agentRenderingBasic
7.7.18 volume<number> | <percentage> | silent | x-soft| soft | medium | loud | x-loud | inheritmediumRenderingBasic
7.31.23 white-spacenormal | pre | nowrap | inheritnormalShorthandComplete
7.16.12 white-space-collapsefalse | true | inherittrueFormatting

Extended.

Fallback: Initial value

7.16.8 white-space-treatmentignore | preserve | ignore-if-before-linefeed |ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inheritignore-if-surrounding-linefeedFormatting

Extended.

Fallback: Initial value

7.20.7 widows<integer> | inherit2FormattingBasic
7.15.14 width<length> | <percentage> | auto | inheritautoDisappearsBasic
7.17.8 word-spacingnormal | <length> | <space> | inheritnormalDisappears

Extended.

Fallback: Initial value

7.16.13 wrap-optionno-wrap | wrap | inheritwrapFormattingBasic
7.29.7 writing-modelr-tb |rl-tb |tb-rl |tb-lr |bt-lr |bt-rl |lr-bt |rl-bt |lr-alternating-rl-bt |lr-alternating-rl-tb |lr-inverting-rl-bt |lr-inverting-rl-tb |tb-lr-in-lr-pairs |lr |rl |tb |inheritlr-tbSee prose.Basic
7.31.24 xml:lang<language-country> | inheritnot defined for shorthand propertiesShorthandComplete
7.30.18 z-indexauto | <integer> | inheritautoValue change

Extended.

Fallback: N/A due to fallback for fo:block-container

B.4 Properties and the FOs they apply to

For each property the formatting objects it applies to islisted. It should be noted, however, that for some formatting objectsthere are qualifications on applicability or values permitted.

Property absolute-position applies to:fo:block-container.

Property active-state applies to:fo:multi-property-set.

Property alignment-adjust applies to:fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property alignment-baseline applies to:fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property allowed-height-scale applies to:fo:external-graphic, andfo:instream-foreign-object.

Property allowed-width-scale applies to:fo:external-graphic, andfo:instream-foreign-object.

Property auto-restore applies to:fo:multi-switch.

Property azimuth applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property background-attachment applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property background-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property background-image applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property background-position-horizontal applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property background-position-vertical applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property background-repeat applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property baseline-shift applies to:fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property blank-or-not-blank applies to:fo:conditional-page-master-reference.

Property block-progression-dimension applies to:fo:block-container,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:table,fo:table-caption,fo:table-row, andfo:table-cell.

Property border-after-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-after-precedence applies to:fo:table,fo:table-column,fo:table-header,fo:table-footer,fo:table-body,fo:table-row, andfo:table-cell.

Property border-after-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-after-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-before-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-before-precedence applies to:fo:table,fo:table-column,fo:table-header,fo:table-footer,fo:table-body,fo:table-row, andfo:table-cell.

Property border-before-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-before-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-bottom-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-bottom-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-bottom-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-collapse applies to:fo:table.

Property border-end-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-end-precedence applies to:fo:table,fo:table-column,fo:table-header,fo:table-footer,fo:table-body,fo:table-row, andfo:table-cell.

Property border-end-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-end-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-left-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-left-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-left-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-right-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-right-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-right-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-separation applies to:fo:table.

Property border-start-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-start-precedence applies to:fo:table,fo:table-column,fo:table-header,fo:table-footer,fo:table-body,fo:table-row, andfo:table-cell.

Property border-start-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-start-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-top-color applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-top-style applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property border-top-width applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-column,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property bottom applies to:fo:block-container.

Property bottom applies to:fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property break-after applies to:fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:table-row,fo:list-block, andfo:list-item.

Property break-before applies to:fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:table-row,fo:list-block, andfo:list-item.

Property caption-side applies to:fo:table-and-caption.

Property case-name applies to:fo:multi-case.

Property case-title applies to:fo:multi-case.

Property change-bar-class applies to:fo:change-bar-begin, andfo:change-bar-end.

Property change-bar-color applies to:fo:change-bar-begin.

Property change-bar-offset applies to:fo:change-bar-begin.

Property change-bar-placement applies to:fo:change-bar-begin.

Property change-bar-style applies to:fo:change-bar-begin.

Property change-bar-width applies to:fo:change-bar-begin.

Property character applies to:fo:character.

Property clear applies to:fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:float.

Property clip applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:block-container,fo:external-graphic,fo:instream-foreign-object, andfo:inline-container.

Property color applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader, andfo:bookmark-title.

Property color-profile-name applies to:fo:color-profile.

Property column-count applies to:fo:region-body.

Property column-gap applies to:fo:region-body.

Property column-number applies to:fo:table-column, andfo:table-cell.

Property column-width applies to:fo:table-column.

Property content-height applies to:fo:external-graphic, andfo:instream-foreign-object.

Property content-type applies to:fo:external-graphic, andfo:instream-foreign-object.

Property content-width applies to:fo:external-graphic, andfo:instream-foreign-object.

Property country applies to:fo:block, andfo:character.

Property cue-after applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property cue-before applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property destination-placement-offset applies to:fo:basic-link.

Property direction applies to:fo:bidi-override.

Property display-align applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:block-container,fo:external-graphic,fo:instream-foreign-object,fo:inline-container, andfo:table-cell.

Property dominant-baseline applies to:fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property elevation applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property empty-cells applies to:fo:table-cell.

Property end-indent applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property ends-row applies to:fo:table-cell.

Property extent applies to:fo:region-before,fo:region-after,fo:region-start, andfo:region-end.

Property external-destination applies to:fo:basic-link, andfo:bookmark.

Property float applies to:fo:float.

Property flow-map-name applies to:fo:flow-map.

Property flow-map-reference applies to:fo:page-sequence.

Property flow-name applies to:fo:flow, andfo:static-content.

Property flow-name-reference applies to:fo:flow-name-specifier.

Property font-family applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-selection-strategy applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-size applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-size-adjust applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-stretch applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-style applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-variant applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property font-weight applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property force-page-count applies to:fo:page-sequence.

Property format applies to:fo:page-sequence, andfo:scaling-value-citation.

Property glyph-orientation-horizontal applies to:fo:character.

Property glyph-orientation-vertical applies to:fo:character.

Property grouping-separator applies to:fo:page-sequence, andfo:scaling-value-citation.

Property grouping-size applies to:fo:page-sequence, andfo:scaling-value-citation.

Property height applies to:fo:block-container,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:table,fo:table-caption,fo:table-row, andfo:table-cell.

Property hyphenate applies to:fo:block, andfo:character.

Property hyphenation-character applies to:fo:block, andfo:character.

Property hyphenation-keep applies to:fo:block.

Property hyphenation-ladder-count applies to:fo:block.

Property hyphenation-push-character-count applies to:fo:block, andfo:character.

Property hyphenation-remain-character-count applies to:fo:block, andfo:character.

Property id applies to:fo:root,fo:page-sequence,fo:page-sequence-wrapper,fo:flow,fo:static-content,fo:block,fo:block-container,fo:bidi-override,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label,fo:basic-link,fo:multi-switch,fo:multi-case,fo:multi-toggle,fo:multi-property-set,fo:index-range-begin,fo:float,fo:footnote,fo:footnote-body, andfo:wrapper.

Property index-class applies to:fo:root,fo:page-sequence,fo:page-sequence-wrapper,fo:flow,fo:static-content,fo:block,fo:block-container,fo:bidi-override,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label,fo:basic-link,fo:multi-switch,fo:multi-case,fo:multi-toggle,fo:multi-property-set,fo:index-range-begin,fo:float,fo:footnote,fo:footnote-body, andfo:wrapper.

Property index-key applies to:fo:root,fo:page-sequence,fo:page-sequence-wrapper,fo:flow,fo:static-content,fo:block,fo:block-container,fo:bidi-override,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label,fo:basic-link,fo:multi-switch,fo:multi-case,fo:multi-toggle,fo:multi-property-set,fo:index-range-begin,fo:float,fo:footnote,fo:footnote-body, andfo:wrapper.

Property indicate-destination applies to:fo:basic-link.

Property initial-page-number applies to:fo:page-sequence.

Property inline-progression-dimension applies to:fo:block-container,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:table,fo:table-caption, andfo:table-cell.

Property internal-destination applies to:fo:basic-link, andfo:bookmark.

Property intrinsic-scale-value applies to:fo:scaling-value-citation.

Property intrusion-displace applies to:fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:table-caption,fo:list-block, andfo:list-item.

Property keep-together applies to:fo:block,fo:block-container,fo:inline,fo:inline-container,fo:table-and-caption,fo:table,fo:table-caption,fo:table-row,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label, andfo:basic-link.

Property keep-with-next applies to:fo:block,fo:block-container,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-row,fo:list-block,fo:list-item, andfo:basic-link.

Property keep-with-previous applies to:fo:block,fo:block-container,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-row,fo:list-block,fo:list-item, andfo:basic-link.

Property language applies to:fo:block, andfo:character.

Property last-line-end-indent applies to:fo:block.

Property leader-alignment applies to:fo:leader.

Property leader-length applies to:fo:leader.

Property leader-pattern applies to:fo:leader.

Property leader-pattern-width applies to:fo:leader.

Property left applies to:fo:block-container.

Property left applies to:fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property letter-spacing applies to:fo:bidi-override,fo:character,fo:initial-property-set,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property letter-value applies to:fo:page-sequence, andfo:scaling-value-citation.

Property linefeed-treatment applies to:fo:block.

Property line-height applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property line-height-shift-adjustment applies to:fo:block.

Property line-stacking-strategy applies to:fo:block.

Property margin-bottom applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property margin-bottom applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property margin-left applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property margin-left applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property margin-right applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property margin-right applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property margin-top applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property margin-top applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property marker-class-name applies to:fo:marker.

Property master-name applies to:fo:page-sequence-master, andfo:simple-page-master.

Property master-reference applies to:fo:page-sequence,fo:single-page-master-reference,fo:repeatable-page-master-reference, andfo:conditional-page-master-reference.

Property maximum-repeats applies to:fo:repeatable-page-master-reference, andfo:repeatable-page-master-alternatives.

Property media-usage applies to:fo:root.

Property merge-pages-across-index-key-references applies to:fo:index-page-citation-list.

Property merge-ranges-across-index-key-references applies to:fo:index-page-citation-list.

Property merge-sequential-page-numbers applies to:fo:index-page-citation-list.

Property number-columns-repeated applies to:fo:table-column.

Property number-columns-spanned applies to:fo:table-column, andfo:table-cell.

Property number-rows-spanned applies to:fo:table-cell.

Property odd-or-even applies to:fo:conditional-page-master-reference.

Property orphans applies to:fo:block.

Property overflow applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:block-container,fo:external-graphic,fo:instream-foreign-object, andfo:inline-container.

Property padding-after applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-before applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-bottom applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-end applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-left applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-right applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-start applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property padding-top applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:title,fo:block,fo:block-container,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property page-citation-strategy applies to:fo:page-number-citation-last.

Property page-height applies to:fo:simple-page-master.

Property page-number-treatment applies to:fo:index-key-reference.

Property page-position applies to:fo:conditional-page-master-reference.

Property page-width applies to:fo:simple-page-master.

Property pause-after applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property pause-before applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property pitch applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property pitch-range applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property play-during applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property precedence applies to:fo:region-before, andfo:region-after.

Property provisional-distance-between-starts applies to:fo:list-block.

Property provisional-label-separation applies to:fo:list-block.

Property reference-orientation applies to:fo:page-sequence,fo:simple-page-master,fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:block-container, andfo:inline-container.

Property ref-id applies to:fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:index-range-end.

Property ref-index-key applies to:fo:index-key-reference.

Property region-name applies to:fo:region-body,fo:region-before,fo:region-after,fo:region-start, andfo:region-end.

Property region-name-reference applies to:fo:region-name-specifier.

Property relative-align applies to:fo:table-cell, andfo:list-item.

Property relative-position applies to:fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property rendering-intent applies to:fo:color-profile.

Property retrieve-boundary applies to:fo:retrieve-marker.

Property retrieve-boundary-within-table applies to:fo:retrieve-table-marker.

Property retrieve-class-name applies to:fo:retrieve-marker, andfo:retrieve-table-marker.

Property retrieve-position applies to:fo:retrieve-marker.

Property retrieve-position-within-table applies to:fo:retrieve-table-marker.

Property richness applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property right applies to:fo:block-container.

Property right applies to:fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property role applies to:fo:root,fo:title,fo:block,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label,fo:basic-link,fo:multi-switch,fo:multi-case,fo:multi-toggle,fo:multi-properties,fo:bookmark,fo:bookmark-title,fo:footnote,fo:footnote-body,fo:change-bar-begin, andfo:change-bar-end.

Property rule-style applies to:fo:leader.

Property rule-thickness applies to:fo:leader.

Property scale-option applies to:fo:scaling-value-citation.

Property scaling applies to:fo:external-graphic, andfo:instream-foreign-object.

Property scaling-method applies to:fo:external-graphic, andfo:instream-foreign-object.

Property score-spaces applies to:fo:bidi-override,fo:character,fo:initial-property-set,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property script applies to:fo:block, andfo:character.

Property show-destination applies to:fo:basic-link.

Property source-document applies to:fo:root,fo:title,fo:block,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:list-item-body,fo:list-item-label,fo:basic-link,fo:multi-switch,fo:multi-case,fo:multi-toggle,fo:multi-properties,fo:bookmark,fo:bookmark-title,fo:footnote,fo:footnote-body,fo:change-bar-begin, andfo:change-bar-end.

Property space-after applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property space-before applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property space-end applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property space-start applies to:fo:title,fo:character,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation, andfo:basic-link.

Property span applies to:fo:block, andfo:block-container.

Property speak applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property speak-header applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property speak-numeral applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property speak-punctuation applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property speech-rate applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property src applies to:fo:color-profile, andfo:external-graphic.

Property start-indent applies to:fo:simple-page-master,fo:region-body,fo:block,fo:block-container,fo:table-and-caption,fo:table,fo:list-block, andfo:list-item.

Property starting-state applies to:fo:multi-case, andfo:bookmark.

Property starts-row applies to:fo:table-cell.

Property stress applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property suppress-at-line-break applies to:fo:character.

Property switch-to applies to:fo:multi-toggle.

Property table-layout applies to:fo:table.

Property table-omit-footer-at-break applies to:fo:table.

Property table-omit-header-at-break applies to:fo:table.

Property target-presentation-context applies to:fo:basic-link.

Property target-processing-context applies to:fo:basic-link.

Property target-stylesheet applies to:fo:basic-link.

Property text-align applies to:fo:block,fo:external-graphic,fo:instream-foreign-object, andfo:table-and-caption.

Property text-align-last applies to:fo:block.

Property text-altitude applies to:fo:block,fo:character,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property text-decoration applies to:fo:character,fo:initial-property-set,fo:inline,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property text-depth applies to:fo:block,fo:character,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property text-indent applies to:fo:block.

Property text-shadow applies to:fo:character,fo:initial-property-set,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property text-transform applies to:fo:character,fo:initial-property-set,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property top applies to:fo:block-container.

Property top applies to:fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item, andfo:basic-link.

Property treat-as-word-space applies to:fo:character.

Property unicode-bidi applies to:fo:bidi-override.

Property visibility applies to:fo:title,fo:block,fo:character,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-column,fo:table-header,fo:table-footer,fo:table-body, andfo:table-row.

Property voice-family applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property volume applies to:fo:title,fo:block,fo:bidi-override,fo:character,fo:initial-property-set,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last,fo:scaling-value-citation,fo:table-and-caption,fo:table,fo:table-caption,fo:table-header,fo:table-footer,fo:table-body,fo:table-row,fo:table-cell,fo:list-block,fo:list-item,fo:basic-link,fo:change-bar-begin, andfo:change-bar-end.

Property white-space-collapse applies to:fo:block.

Property white-space-treatment applies to:fo:block.

Property widows applies to:fo:block.

Property width applies to:fo:block-container,fo:external-graphic,fo:instream-foreign-object,fo:inline,fo:inline-container,fo:table,fo:table-caption, andfo:table-cell.

Property word-spacing applies to:fo:bidi-override,fo:character,fo:initial-property-set,fo:leader,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property wrap-option applies to:fo:block,fo:inline,fo:page-number,fo:page-number-citation,fo:page-number-citation-last, andfo:scaling-value-citation.

Property writing-mode applies to:fo:page-sequence,fo:simple-page-master,fo:region-body,fo:region-before,fo:region-after,fo:region-start,fo:region-end,fo:block-container,fo:inline-container, andfo:table.

Property z-index applies to:fo:block-container, andfo:change-bar-begin.

C References

C.1 Normative References

XML
World Wide Web Consortium.ExtensibleMarkup Language (XML) 1.0. W3C Recommendation. (Seehttp://www.w3.org/TR/REC-xml/.)
XML 1.1
World Wide Web Consortium.ExtensibleMarkup Language (XML) 1.1. W3C Recommendation. (Seehttp://www.w3.org/TR/xml11/.)
XML Names
World Wide WebConsortium.Namespaces in XML. W3C Recommendation. (Seehttp://www.w3.org/TR/REC-xml-names/.)
XML Names 1.1
World Wide WebConsortium.Namespaces in XML 1.1. W3C Recommendation. (Seehttp://www.w3.org/TR/xml-names11/.)
XSLT
World Wide Web Consortium.XSL Transformations (XSLT). W3C Recommendation. (Seehttp://www.w3.org/TR/xslt.)
XPath
World Wide Web Consortium.XML PathLanguage. W3C Recommendation. (Seehttp://www.w3.org/TR/xpath.)
RDF
World Wide Web Consortium.Resource Description Framework (RDF) Model and Syntax Specification.W3C Recommendation. (Seehttp://www.w3.org/TR/REC-rdf-syntax/.)
IEEE 754
Institute of Electrical andElectronics Engineers.IEEE Standard for Binary Floating-PointArithmetic. ANSI/IEEE Std 754-1985.
ISO31
International Organizationfor Standardization.ISO 31:1992, Amended 1998. Quantities and unitsInternational Standard.
ISO639
International Organizationfor Standardization.ISO 639:1998. Code for the representation of names of languagesInternational Standard.
ISO639-2
International Organizationfor Standardization.ISO 639-2:1998. Codes for the representation of names of languages — Part 2: Alpha-3 code.International Standard.
ISO3166-1
International Organizationfor Standardization.ISO 3166-1:1997. Codes for the representation of names of countries and their subdivisions — Part 1: Country codes.International Standard.
ISO3166-2
International Organizationfor Standardization.ISO 3166-2:1998. Codes for the representation of names of countries and their subdivisions — Part 2: Country subdivision code.International Standard.
ISO3166-3
International Organizationfor Standardization.ISO 3166-3:1999. Codes for the representation of names of countries and their subdivisions — Part 3: Code for formerly used names of countries.International Standard.
ISO15924
International Organizationfor Standardization.ISO 15924:1998. Code for the representation of names ofscripts. Draft International Standard.
ISO10646
International Organizationfor Standardization, International Electrotechnical Commission.ISO/IEC 10646:2000.Information technology — Universal Multiple-Octet Coded Character Set (UCS) —Part 1: Architecture and Basic Multilingual Plane.International Standard.
RFC2070
IETF.RFC 2070. Internationalization of the Hypertext Markup Language. (Seehttp://www.ietf.org/rfc/rfc2070.txt.)
RFC2119
IETF.RFC 2119. Key words for use in RFCs to Indicate Requirement Levels. (Seehttp://www.ietf.org/rfc/rfc2119.txt.)
RFC3066
IETF.RFC 3066. Tags for the Identification of Languages. (Seehttp://www.ietf.org/rfc/rfc3066.txt.)
RFC3987
IETF.RFC 3987. Internationalized Resource Identifiers (IRIs). (Seehttp://www.ietf.org/rfc/rfc3987.txt.)
UNICODE UAX #9
Unicode Consortium.The Unicode Standard, Version 3.1.0.Unicode Standard Annex #9:The Bidirectional Algorithm. (Seehttp://www.unicode.org/unicode/reports/tr9/.)
UNICODE Character Database
Unicode Consortium.Unicode Character Database. (Seehttp://www.unicode.org/Public/UNIDATA/.)
sRGB
Anderson, M., Motta, R., Chandrasekar, S., andStokes, M.A Standard Default Color Space for the Internet - sRGB. (Seehttp://www.w3.org/Graphics/Color/sRGB.html.)
ICC
International Color Consortium.Specification ICC.1:1998-09, File Format for Color Profiles. (Seehttp://www.color.org/ICC-1_1998-09.PDF.)

C.2 Other References

XSL 1.0
World Wide Web Consortium.Extensible Stylesheet Language (XSL).W3C Recommendation. (Seehttp://www.w3.org/TR/2001/REC-xsl-20011015/.)
XSL 1.1 Requirements
World Wide Web Consortium.XSL Requirements, Version 1.1.W3C Recommendation. (Seehttp://www.w3.org/TR/2003/WD-xsl11-req-20031217/.)
CSS2
World Wide Web Consortium.CascadingStyle Sheets, level 2 (CSS2), as amended by Errata document 2001/04/04.W3C Recommendation. (Seehttp://www.w3.org/TR/1998/REC-CSS2-19980512/.)
DSSSL
International Organizationfor Standardization, International Electrotechnical Commission.ISO/IEC 10179:1996. Document Style Semantics and SpecificationLanguage (DSSSL). International Standard.
UNICODE TR10
Unicode Consortium.Davis, Mark and Whistler, Ken.Unicode Technical Standard #10: Unicode Collation Algorithm.Unicode Technical Standard. (Seehttp://www.unicode.org/unicode/reports/tr10/.)
UNICODE TR20
Unicode Consortium.Dürst, Martin and Freytag, Asmus.Unicode Technical Report #20. Unicode in XML and other Markup LanguagesUnicode Technical Report. (Seehttp://www.unicode.org/unicode/reports/tr20/.)
OpenType
Microsoft, Adobe.OpenType specification v.1.2. (Seehttp://www.microsoft.com/truetype/tt/tt.htm.)
XML Stylesheet
World Wide WebConsortium.Associating stylesheets with XML documents.W3C Recommendation. (Seehttp://www.w3.org/TR/xml-stylesheet/.)
JLS
J. Gosling, B. Joy, and G. Steele.TheJava Language Specification. (Seehttp://java.sun.com/docs/books/jls/index.html.)

D Property Index

E Changes from XSL 1.0 (Non-Normative)

This section lists all non-editorial changes that have beenmade:

F Acknowledgements (Non-Normative)

This specification was developed and approved for publication by theW3C XSL Working Group (WG). WG approval of this specification does notnecessarily imply that all WG members voted for its approval.

During the development of XSL 1.1 the members of the XSL FO Subgroup were:

Sharon Adler, IBM;Klaas Bals, Inventive Designers;Anders Berglund, IBM;Jeff Caruso, Pageflex;Stephen Deach, Adobe;Fabio Giannetti, HP;Paul Grosso, PTC-Arbortext;Eliot Kimber, Isogen;Michael Sulyaev, RenderX;Norman Walsh, Sun Microsystems;Liam Quin, W3C;Steve Zilles, Adobe

The XSL Working Group wishes to thank RenderX, Inc. for producingthe PDF version of this specification.

The PDF version has been produced from the XML source throughan intermediate XSL Formatting Object representation, convertedto PDF using XEP - an XSL FO rendering engine by RenderX, Inc.(http://www.renderX.com).


[8]ページ先頭

©2009-2025 Movatter.jp