W3C XSL-FO 1.0 Standard

One of FOP's design goals is conformance to the W3C XSL-FO 1.0 standard, which specifies three levels of "conformance": basic, extended, and complete. Although FOP does not currently conform to any of these levels, it is nevertheless a useful work-in-progress for many applications. The information presented here demonstrates FOP's progress toward the goal of conformance, which progress consists of implementation of specific objects and properties in the standard. The information presented is useful not only to the developers as a sort of "to do" list, but also for setting proper expectations for users and potential users.

In the tables below, "yes" (green background) indicates conformance, "no" (red background) indicates a lack of conformance, "partial" (greyish background) indicates partial conformance, and "na" indicates that the item is "not applicable" to FOP usually because FOP supports only visual media.

XSL-FO Object Support

XSL-FO Property Support

XSL-FO Object Support Table (§6)

The following is a summary of FOP's current support for the standard XSL-FO objects.

Object Name XSL-FO Conformance Level Citation Support in FOP Comments
0.20.5 (current stable) 0.91 beta (unstable)
Declarations and Pagination and Layout Formatting Objects (§6.4)
root Basic §6.4.2 yes yes  
declarations Basic §6.4.3 no no  
color-profile Extended §6.4.4 no no  
page-sequence Basic §6.4.5 yes yes  
layout-master-set Basic §6.4.6 yes yes  
page-sequence-master Basic §6.4.7 yes yes  
single-page-master-reference Basic §6.4.8 yes yes  
repeatable-page-master-reference Basic §6.4.9 yes yes  
repeatable-page-master-alternatives Extended §6.4.10 yes yes  
conditional-page-master-reference Extended §6.4.11 yes yes  
simple-page-master Basic §6.4.12 yes yes  
region-body Basic §6.4.13 yes yes  
region-before Extended §6.4.14 yes yes  
region-after Extended §6.4.15 yes yes  
region-start Extended §6.4.16 yes yes  
region-end Extended §6.4.17 yes yes  
flow Basic §6.4.18 yes yes  
static-content Extended §6.4.19 yes yes  
title Extended §6.4.20 no no  
Block Formatting Objects (§6.5)
block Basic §6.5.2 yes yes  
block-container Extended §6.5.3 partial partial
  • [0.20.5] Currently only works as direct child of fo:flow.
  • [0.20.5] For absolute positioning, use 'position="absolute"' (as 'absolute-position="absolute"' is not implemented), and specify all four of "left", "top", "width" and "height"
  • [0.91 beta] No known restrictions.
Inline Formatting Objects (§6.6)
bidi-override Extended §6.6.2 no no  
character Basic §6.6.3 yes yes  
initial-property-set Extended §6.6.4 no no  
external-graphic Basic §6.6.5 yes yes  
instream-foreign-object Extended §6.6.6 yes yes
  • Built-in support for SVG only, additional namespaces through optional extensions.
inline Basic §6.6.7 yes yes  
inline-container Extended §6.6.8 no no  
leader Basic §6.6.9 partial yes  
page-number Basic §6.6.10 yes yes  
page-number-citation Extended §6.6.11 partial partial
  • [0.20.5] Only works for table of contents without any problems. The case where the page number doesn't fit on a line isn't handled, and any text on the same line and after the page-number might not appear exactly where you want it to.
  • [0.91 beta] After the page number is known, no relayout is performed. The appearance may be suboptimal depending on the use case.
Table Formatting Objects (§6.7)
table-and-caption Basic §6.7.2 no no  
table Basic §6.7.3 partial partial
  • [0.91 beta] Only border-collapse="separate" is supported and there's no support for automatic column widths.
table-column Basic §6.7.4 partial yes
  • [0.20.5] You must explicitly specify column widths.
table-caption Extended §6.7.5 no no  
table-header Basic §6.7.6 yes yes  
table-footer Extended §6.7.7 yes yes  
table-body Basic §6.7.8 yes yes  
table-row Basic §6.7.9 yes yes  
table-cell Basic §6.7.10 partial yes
  • [0.20.5] must contain block-level FOs (cannot contain straight character data)
List Formatting Objects (§6.8)
list-block Basic §6.8.2 yes yes  
list-item Basic §6.8.3 yes yes  
list-item-body Basic §6.8.4 yes yes  
list-item-label Extended §6.8.5 yes yes  
Link and Multi Formatting Objects (§6.9)
basic-link Extended §6.9.2 yes yes
  • both internal and external supported
multi-switch Extended §6.9.3 no no  
multi-case Basic §6.9.4 no no  
multi-toggle Extended §6.9.5 no no  
multi-properties Extended §6.9.6 no no  
multi-property-set Extended §6.9.7 no no  
Formatting Objects for Bookmarks (§6.11 in XSL 1.1 WD)
bookmark-tree (since XSL 1.1) Extended §6.11.1 in XSL 1.1 WD no yes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark (since XSL 1.1) Extended §6.11.2 in XSL 1.1 WD no yes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark-title (since XSL 1.1) Extended §6.11.3 in XSL 1.1 WD no yes
  • [0.20.5] Uses the proprietary fox:outline extension.
Out-of-line Formatting Objects (§6.10)
float Extended §6.10.2 no no  
footnote Extended §6.10.3 yes partial
  • [0.91 beta] Restrictions with multi-column documents.
footnote-body Extended §6.10.4 yes yes  
Other Formatting Objects (§6.11)
wrapper Basic §6.11.2 yes yes  
marker Extended §6.11.3 yes yes  
retrieve-marker Extended §6.11.4 yes yes  

XSL-FO Property Support Table (§7)

The following is a summary of FOP's current support for the standard XSL-FO properties.

Property Name XSL-FO Conformance Level Citation Support in FOP Comments
0.20.5 (current stable) 0.91 beta (unstable)
Common Accessibility Properties (§7.4)
source-document Basic §7.4.1 na na  
role Basic §7.4.2 na na  
Common Absolute Position Properties (§7.5)
absolute-position Complete §7.5.1 no yes
  • [0.20.5] Use shorthand position="absolute" as a workaround.
  • [0.91 beta] No restrictions. The 0.20.5 work-around is not supported.
top Extended §7.5.2 yes yes  
right Extended §7.5.3 yes yes  
bottom Extended §7.5.4 yes yes  
left Extended §7.5.5 yes yes  
Common Aural Properties (§7.6)
azimuth Basic §7.6.1 na na  
cue-after Basic §7.6.2 na na  
cue-before Basic §7.6.3 na na  
elevation Basic §7.6.4 na na  
pause-after Basic §7.6.5 na na  
pause-before Basic §7.6.6 na na  
pitch Basic §7.6.7 na na  
pitch-range Basic §7.6.8 na na  
play-during Basic §7.6.9 na na  
richness Basic §7.6.10 na na  
speak Basic §7.6.11 na na  
speak-header Basic §7.6.12 na na  
speak-numeral Basic §7.6.13 na na  
speak-punctuation Basic §7.6.14 na na  
speech-rate Basic §7.6.15 na na  
stress Basic §7.6.16 na na  
voice-family Basic §7.6.17 na na  
volume Basic §7.6.18 na na  
Common Border, Padding, and Background Properties (§7.7)
background-attachment Extended §7.7.1 no no  
background-color Basic §7.7.2 yes partial
  • [0.91 beta] not yet implemented on table-body, table-header and table-footer.
background-image Extended §7.7.3 yes yes
  • [0.91 beta] not yet implemented on table-body, table-header and table-footer.
background-repeat Extended §7.7.4 no yes  
background-position-horizontal Extended §7.7.5 no yes  
background-position-vertical Extended §7.7.6 no yes  
border-before-color Basic §7.7.7 yes yes  
border-before-style Basic §7.7.8 partial yes
  • [0.20.5] only "solid" works
border-before-width Basic §7.7.9 yes yes  
border-after-color Basic §7.7.10 yes yes  
border-after-style Basic §7.7.11 partial yes
  • [0.20.5] only "solid" works
border-after-width Basic §7.7.12 yes yes  
border-start-color Basic §7.7.13 yes yes  
border-start-style Basic §7.7.14 partial yes
  • [0.20.5] only "solid" works
border-start-width Basic §7.7.15 yes yes  
border-end-color Basic §7.7.16 yes yes  
border-end-style Basic §7.7.17 partial yes
  • [0.20.5] only "solid" works
border-end-width Basic §7.7.18 yes yes  
border-top-color Basic §7.7.19 yes yes  
border-top-style Basic §7.7.20 partial yes
  • [0.20.5] only "solid" works
border-top-width Basic §7.7.21 yes yes  
border-bottom-color Basic §7.7.22 yes yes  
border-bottom-style Basic §7.7.23 partial yes
  • [0.20.5] only "solid" works
border-bottom-width Basic §7.7.24 yes yes  
border-left-color Basic §7.7.25 yes yes  
border-left-style Basic §7.7.26 partial yes
  • [0.20.5] only "solid" works
border-left-width Basic §7.7.27 yes yes  
border-right-color Basic §7.7.28 yes yes  
border-right-style Basic §7.7.29 partial yes
  • [0.20.5] only "solid" works
border-right-width Basic §7.7.30 yes yes  
padding-before Basic §7.7.31 partial yes
  • [0.20.5] only one value allowed
  • [0.20.5] only implemented for blocks
  • [0.20.5] can't be used to make extra space (use indents + spaces instead)
  • [0.20.5] can be used to control how much the background-color extends beyond the content rectangle
padding-after Basic §7.7.32 partial yes
  • [0.20.5] same limitations as padding-before
padding-start Basic §7.7.33 partial yes
  • [0.20.5] same limitations as padding-before
padding-end Basic §7.7.34 partial yes
  • [0.20.5] same limitations as padding-before
padding-top Basic §7.7.35 partial yes
  • [0.20.5] same limitations as padding-before
padding-bottom Basic §7.7.36 partial yes
  • [0.20.5] same limitations as padding-before
padding-left Basic §7.7.37 partial yes
  • [0.20.5] same limitations as padding-before
padding-right Basic §7.7.38 partial yes
  • [0.20.5] same limitations as padding-before
Common Font Properties (§7.8)
font-family Basic §7.8.2 partial partial
  • font-family lists are not supported, use a single font-family name
font-selection-strategy Complete §7.8.3 no no  
font-size Basic §7.8.4 partial yes
  • [0.20.5] "smaller" and "larger" not implemented
font-stretch Extended §7.8.5 no no  
font-size-adjust Extended §7.8.6 no no  
font-style Basic §7.8.7 partial yes
  • [0.20.5] "normal" is not supported
font-variant Basic §7.8.8 yes no  
font-weight Basic §7.8.9 partial partial
  • [0.20.5] "normal", "bolder" and "lighter" are not supported
  • [0.91 beta] TODO <relative> font weights
Common Hyphenation Properties (§7.9)
country Extended §7.9.1 yes yes  
language Extended §7.9.2 yes yes  
script Extended §7.9.3 no no  
hyphenate Extended §7.9.4 yes yes  
hyphenation-character Extended §7.9.5 yes yes  
hyphenation-push-character-count Extended §7.9.6 yes yes  
hyphenation-remain-character-count Extended §7.9.7 yes yes  
Common Margin Properties - Block (§7.10)
margin-top Basic §7.10.1 partial yes
  • [0.20.5] only on pages and regions
margin-bottom Basic §7.10.2 partial yes
  • [0.20.5] only on pages and regions
margin-left Basic §7.10.3 partial yes
  • [0.20.5] only on pages and regions
margin-right Basic §7.10.4 partial yes
  • [0.20.5] only on pages and regions
space-before Basic §7.10.5 partial partial
  • [0.20.5] space-before.optimum supported
  • [0.91 beta] Space adjustment may not fully work everywhere, yet.
space-after Basic §7.10.6 partial partial
  • [0.20.5] space-after.optimum supported
  • [0.91 beta] Space adjustment may not fully work everywhere, yet.
start-indent Basic §7.10.7 yes yes  
end-indent Basic §7.10.8 yes yes  
Common Margin Properties - Inline (§7.11)
space-end Basic §7.11.1 no no  
space-start Basic §7.11.2 no no  
Common Relative Position Properties (§7.12)
relative-position Extended §7.12.1 no no  
Area Alignment Properties (§7.13)
alignment-adjust Basic §7.13.1 no yes  
alignment-baseline Basic §7.13.2 no yes  
baseline-shift Basic §7.13.3 partial yes
  • [0.20.5] Only values "super" and "sub" have been implemented.
display-align Extended §7.13.4 partial partial
  • [0.20.5] Implemented only for table-cell and block-container.
  • [0.20.5] For table-cell, the "height" attribute must be set for the parent table-row; setting the height of the table or the table-cell results in vertical centering having no effect.
  • [0.91 beta] TODO Check e-g, i-f-o.
dominant-baseline Basic §7.13.5 no yes  
relative-align Extended §7.13.6 no no  
Area Dimension Properties (§7.14)
block-progression-dimension Basic §7.14.1 no yes  
content-height Extended §7.14.2 no yes  
content-width Extended §7.14.3 no yes  
height Basic §7.14.4 yes yes  
inline-progression-dimension Basic §7.14.5 no yes  
max-height Complete §7.14.6 no no  
max-width Complete §7.14.7 no no  
min-height Complete §7.14.8 no no  
min-width Complete §7.14.9 no no  
scaling Extended §7.14.10 no yes  
scaling-method Extended §7.14.11 no no  
width Basic §7.14.12 yes yes  
Block and Line-related Properties (§7.15)
hyphenation-keep Extended §7.15.1 no no  
hyphenation-ladder-count Extended §7.15.2 no no  
last-line-end-indent Extended §7.15.3 no no  
line-height Basic §7.15.4 yes yes  
line-height-shift-adjustment Extended §7.15.5 no no  
line-stacking-strategy Basic §7.15.6 no partial
  • [0.91 beta] value "line-height" not supported
linefeed-treatment Extended §7.15.7 no partial
  • [0.91 beta] Value "treat-as-zero-width-space" not supported
white-space-treatment Extended §7.15.8 no partial
  • [0.91 beta] Only the values "ignore" and "ignore-if-surrounding-linefeed" work reliably
text-align Basic §7.15.9 partial partial
  • Only start, end, center and justify are supported
text-align-last Extended §7.15.10 partial partial
  • Only start, end, center and justify are supported
text-indent Basic §7.15.11 yes yes  
white-space-collapse Extended §7.15.12 yes yes  
wrap-option Basic §7.15.13 yes partial
  • [0.91 beta] Only supported on fo:block.
Character Properties (§7.16)
character Basic §7.16.1 yes yes  
letter-spacing Extended §7.16.2 yes yes  
suppress-at-line-break Extended §7.16.3 no no  
text-decoration Extended §7.16.4 yes yes  
text-shadow Extended §7.16.5 no no  
text-transform Extended §7.16.6 no yes  
treat-as-word-space Extended §7.16.7 no no  
word-spacing Extended §7.16.8 no yes  
Color-related Properties (§7.17)
color Basic §7.17.1 yes yes  
color-profile-name Extended §7.17.2 no no  
rendering-intent Extended §7.17.3 no no  
Float-related Properties (§7.18)
clear Extended §7.18.1 no no  
float Extended §7.18.2 no no  
intrusion-displace Extended §7.18.3 no no  
Keeps and Breaks Properties (§7.19)
break-after Basic §7.19.1 yes yes  
break-before Basic §7.19.2 yes yes  
keep-together Extended §7.19.3 partial partial
  • [0.20.5] works only in table rows
  • [0.91 beta] works on all implemented FOs.
  • [0.91 beta] <integer> values are not supported.
keep-with-next Basic §7.19.4 partial partial
  • [0.20.5] works only in table rows
  • [0.91 beta] works on all implemented FOs.
  • [0.91 beta] <integer> values are not supported.
keep-with-previous Basic §7.19.5 partial partial
  • [0.20.5] works only in table rows
  • [0.91 beta] works on all implemented FOs, except list- and table-related FOs.
  • [0.91 beta] <integer> values are not supported.
orphans Basic §7.19.6 no yes  
widows Basic §7.19.7 no yes  
Layout-related Properties (§7.20)
clip Extended §7.20.1 no no  
overflow Basic §7.20.2 no yes  
reference-orientation Extended §7.20.3 no yes
  • [0.20.5] Workaround for page-orientation (portrait vs. landscape) is to swap the page-width and page-height properties.
  • [0.20.5] Workaround for block-container is to use SVG.
span Extended §7.20.4 yes yes  
Leader and Rule Properties (§7.21)
leader-alignment Extended §7.21.1 partial no
  • [0.20.5] not value "page"
  • [0.91 beta] Not uspported
leader-pattern Basic §7.21.2 partial yes
  • [0.20.5] not value "use-content"
  • [0.91 beta] Value "use-content" does not work in all circumstances.
leader-pattern-width Extended §7.21.3 yes yes  
leader-length Basic §7.21.4 partial yes
  • [0.20.5] leader-length.minimum is not used at all
rule-style Basic §7.21.5 yes yes  
rule-thickness Basic §7.21.6 yes yes  
Properties for Dynamic Effects Formatting Objects (§7.22)
active-state Extended §7.22.1 no no  
auto-restore Extended §7.22.2 no no  
case-name Extended §7.22.3 no no  
case-title Extended §7.22.4 no no  
destination-placement-offset Extended §7.22.5 no no  
external-destination Basic §7.22.6 yes yes  
indicate-destination Extended §7.22.7 no no  
internal-destination Extended §7.22.8 yes yes  
show-destination Extended §7.22.9 no no  
starting-state Extended §7.22.10 no no  
switch-to Extended §7.22.11 no no  
target-presentation-context Extended §7.22.12 no no  
target-processing-context Extended §7.22.13 no no  
target-stylesheet Extended §7.22.14 no no  
Properties for Markers (§7.23)
marker-class-name Extended §7.23.1 no yes  
retrieve-class-name Extended §7.23.2 no yes  
retrieve-position Extended §7.23.3 no yes  
retrieve-boundary Extended §7.23.4 no yes  
Properties for Number to String Conversion (§7.24)
format Basic §7.24.1 no yes  
grouping-separator Extended §7.24.2 no no  
grouping-size Extended §7.24.3 no no  
letter-value Basic §7.24.4 no no  
Pagination and Layout Properties (§7.25)
blank-or-not-blank Extended §7.25.1 yes yes  
column-count Extended §7.25.2 yes yes  
column-gap Extended §7.25.3 yes yes  
extent Extended §7.25.4 yes yes  
flow-name Basic §7.25.5 yes yes  
force-page-count Extended §7.25.6 no no  
initial-page-number Basic §7.25.7 yes yes  
master-name Basic §7.25.8 yes yes  
master-reference Basic §7.25.9 yes yes  
maximum-repeats Extended §7.25.10 yes yes  
media-usage Extended §7.25.11 no no  
odd-or-even Extended §7.25.12 yes yes  
page-height Basic §7.25.13 yes yes  
page-position Extended §7.25.14 partial partial
  • "last" isn't implemented!
page-width Basic §7.25.15 yes yes  
precedence Extended §7.25.16 no yes  
region-name Basic §7.25.17 yes yes  
Table Properties (§7.26)
border-after-precedence Basic §7.26.1 no no  
border-before-precedence Basic §7.26.2 no no  
border-collapse Extended §7.26.3 partial partial
  • Implementation of collapsed table model not complete.
border-end-precedence Basic §7.26.4 no no  
border-separation Extended §7.26.5 no yes  
border-start-precedence Basic §7.26.6 no no  
caption-side Complete §7.26.7 no no  
column-number Basic §7.26.8 no yes  
column-width Basic §7.26.9 partial yes
  • [0.20.5] "percentage" not implemented. Workaround is to use the XSL-FO "proportional-column-width" function.
empty-cells Extended §7.26.10 no yes  
ends-row Extended §7.26.11 no yes  
number-columns-repeated Basic §7.26.12 no yes  
number-columns-spanned Basic §7.26.13 yes yes  
number-rows-spanned Basic §7.26.14 yes yes  
starts-row Extended §7.26.15 no yes  
table-layout Extended §7.26.16 no no  
table-omit-footer-at-break Extended §7.26.17 yes yes  
table-omit-header-at-break Extended §7.26.18 yes yes  
Writing-mode-related Properties (§7.27)
direction Basic §7.27.1 no no  
glyph-orientation-horizontal Extended §7.27.2 no no  
glyph-orientation-vertical Extended §7.27.3 no no  
text-altitude Extended §7.27.4 no no  
text-depth Extended §7.27.5 no no  
unicode-bidi Extended §7.27.6 no no  
writing-mode Basic §7.27.7 no no  
Miscellaneous Properties (§7.28)
content-type Extended §7.28.1 no no  
id Basic §7.28.2 yes partial
  • [0.91 beta] IDs on table-header, table-footer, table-body, table-row, table-and-caption, table-caption, inline-container and bidi-override are not available, yet.
provisional-label-separation Basic §7.28.3 yes yes  
provisional-distance-between-starts Basic §7.28.4 yes yes  
ref-id Extended §7.28.5 yes yes  
score-spaces Extended §7.28.6 no no  
src Basic §7.28.7 yes yes  
visibility Extended §7.28.8 no no  
z-index Extended §7.28.9 no no  
Shorthand Properties (§7.29)
background Complete §7.29.1 no no  
background-position Complete §7.29.2 no no  
border Complete §7.29.3 no yes  
border-bottom Complete §7.29.4 yes yes  
border-color Complete §7.29.5 partial yes
  • [0.20.5] only one value allowed
border-left Complete §7.29.6 yes yes  
border-right Complete §7.29.7 yes yes  
border-style Complete §7.29.8 partial yes
  • [0.20.5] only "solid" works
border-spacing Complete §7.29.9 no yes  
border-top Complete §7.29.10 yes yes  
border-width Complete §7.29.11 yes yes  
cue Complete §7.29.12 na na  
font Complete §7.29.13 no no  
margin Complete §7.29.14 partial yes
  • [0.20.5] only on pages and regions
padding Complete §7.29.15 partial yes
  • [0.20.5] only one value allowed
  • [0.20.5] only implemented for blocks
  • [0.20.5] can't be used to make extra space (use indents + spaces instead)
  • [0.20.5] can be used to control how much the background-color extends beyond the content rectangle
page-break-after Complete §7.29.16 no no  
page-break-before Complete §7.29.17 no no  
page-break-inside Complete §7.29.18 no no  
pause Complete §7.29.19 na na  
position Complete §7.29.20 partial yes
  • [0.20.5] "inherit" not handled
size Complete §7.29.21 no no  
vertical-align Complete §7.29.22 partial yes
  • [0.20.5] Only works as a shorthand for baseline-shift property.
white-space Complete §7.29.23 no no  
xml:lang Complete §7.29.24 no no