apache.org > XML Federation > xmlgraphics.apache.org

Apache FOP Compliance Page

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 Core Function Library Support

XSL-FO Object Support Table (§6)

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

Object NameXSL-FO Conformance LevelCitationSupport in FOPComments
0.20.5 (previous)0.93 (stable)
Declarations and Pagination and Layout Formatting Objects (§6.4)
root Basic§6.4.2 yesyes 
declarations Basic§6.4.3 nono 
color-profile Extended§6.4.4 nono 
page-sequence Basic§6.4.5 yesyes 
layout-master-set Basic§6.4.6 yesyes 
page-sequence-master Basic§6.4.7 yesyes 
single-page-master-reference Basic§6.4.8 yesyes 
repeatable-page-master-reference Basic§6.4.9 yesyes 
repeatable-page-master-alternatives Extended§6.4.10 yesyes 
conditional-page-master-reference Extended§6.4.11 yesyes 
simple-page-master Basic§6.4.12 yespartial
  • [0.93] The page width may not change among pages of the same page-sequence unless a forced break is inserted.
region-body Basic§6.4.13 yesyes
region-before Extended§6.4.14 yesyes 
region-after Extended§6.4.15 yesyes 
region-start Extended§6.4.16 yesyes 
region-end Extended§6.4.17 yesyes 
flow Basic§6.4.18 yesyes 
static-content Extended§6.4.19 yesyes 
title Extended§6.4.20 nono 
Block Formatting Objects (§6.5)
block Basic§6.5.2 yesyes 
block-container Extended§6.5.3 partialpartial
  • [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.93] No known restrictions.
Inline Formatting Objects (§6.6)
bidi-override Extended§6.6.2 nono 
character Basic§6.6.3 yesyes 
initial-property-set Extended§6.6.4 nono 
external-graphic Basic§6.6.5 yesyes 
instream-foreign-object Extended§6.6.6 yesyes
  • Built-in support for SVG only, additional namespaces through optional extensions.
inline Basic§6.6.7 yesyes 
inline-container Extended§6.6.8 nono 
leader Basic§6.6.9 partialyes 
page-number Basic§6.6.10 yesyes 
page-number-citation Extended§6.6.11 partialpartial
  • [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.93] 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 nono 
table Basic§6.7.3 partialpartial
  • [0.93] Only border-collapse="separate" is supported and there's no support for automatic column widths.
table-column Basic§6.7.4 partialyes
  • [0.20.5] You must explicitly specify column widths.
table-caption Extended§6.7.5 nono 
table-header Basic§6.7.6 yesyes 
Extended§6.7.7 yesyes 
table-body Basic§6.7.8 yesyes 
table-row Basic§6.7.9 yesyes 
table-cell Basic§6.7.10 partialyes
  • [0.20.5] must contain block-level FOs (cannot contain straight character data)
List Formatting Objects (§6.8)
list-block Basic§6.8.2 yesyes 
list-item Basic§6.8.3 yesyes 
list-item-body Basic§6.8.4 yesyes 
list-item-label Extended§6.8.5 yesyes 
Extended§6.9.2 yesyes
  • both internal and external supported
multi-switch Extended§6.9.3 nono 
multi-case Basic§6.9.4 nono 
multi-toggle Extended§6.9.5 nono 
multi-properties Extended§6.9.6 nono 
multi-property-set Extended§6.9.7 nono 
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 noyes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark (since XSL 1.1)Extended§6.11.2 in XSL 1.1 WD noyes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark-title (since XSL 1.1)Extended§6.11.3 in XSL 1.1 WD noyes
  • [0.20.5] Uses the proprietary fox:outline extension.
Out-of-line Formatting Objects (§6.10)
float Extended§6.10.2 nono 
footnote Extended§6.10.3 yespartial
  • [0.93] Restrictions with multi-column documents.
footnote-body Extended§6.10.4 yesyes 
Other Formatting Objects (§6.11)
wrapper Basic§6.11.2 yespartial
  • [0.93] Only works as expected with inline-level content.
marker Extended§6.11.3 yesyes 
retrieve-marker Extended§6.11.4 yesyes 

XSL-FO Property Support Table (§7)

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

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

XSL-FO Core Function Library Support Table (§5.10)

The following is a summary of FOP's current support for the XSL-FO Core Function Library.

Function NameXSL-FO Conformance LevelCitationSupport in FOPComments
0.20.5 (previous)0.93 (stable)
Number Functions (§5.10.1)
floor Basic§5.10.1 yesyes 
ceiling Basic§5.10.1 yesyes 
round Basic§5.10.1 yesyes 
min Basic§5.10.1 yesyes 
max Basic§5.10.1 yesyes 
abs Basic§5.10.1 yesyes 
Color Functions (§5.10.2)
rgb Basic§5.10.2 yesyes 
rgb-icc Basic§5.10.2 nono 
system-color Basic§5.10.2 noyes 
Font Functions (§5.10.3)
system-font Basic§5.10.3 nono 
Property Value Functions (§5.10.4)
inherited-property-value Basic§5.10.4 yesyes 
label-end Basic§5.10.4 yesyes 
body-start Basic§5.10.4 yesyes 
from-parent Basic§5.10.4 yesyes 
from-nearest-specified-value Basic§5.10.4 yesyes 
from-table-column Basic§5.10.4 noyes 
proportional-column-width Basic§5.10.4 yesyes 
merge-property-values Basic§5.10.4 nono