apache.org > XML Federation > xmlgraphics.apache.org
Font size:      

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 (ancient)0.94 (stable)0.95 (beta)develop- ment
Declarations and Pagination and Layout Formatting Objects (§6.4)
rootBasic§6.4.2yesyesyesyes 
declarationsBasic§6.4.3nononono 
color-profileExtended§6.4.4nononono 
page-sequenceBasic§6.4.5yesyesyesyes 
layout-master-setBasic§6.4.6yesyesyesyes 
page-sequence-masterBasic§6.4.7yesyesyesyes 
single-page-master-referenceBasic§6.4.8yesyesyesyes 
repeatable-page-master-referenceBasic§6.4.9yesyesyesyes 
repeatable-page-master-alternativesExtended§6.4.10yesyesyesyes 
conditional-page-master-referenceExtended§6.4.11yesyesyesyes 
simple-page-masterBasic§6.4.12yespartialpartialpartial
  • [0.94 and later] The page width may not change among pages of the same page-sequence unless a forced break is inserted.
region-bodyBasic§6.4.13yesyesyesyes
region-beforeExtended§6.4.14yesyesyesyes 
region-afterExtended§6.4.15yesyesyesyes 
region-startExtended§6.4.16yesyesyesyes 
region-endExtended§6.4.17yesyesyesyes 
flowBasic§6.4.18yesyesyesyes 
static-contentExtended§6.4.19yesyesyesyes 
titleExtended§6.4.20nononono 
Block Formatting Objects (§6.5)
blockBasic§6.5.2yesyesyesyes 
block-containerExtended§6.5.3partialpartialpartialpartial
  • [0.20.5] 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.94 and later] No known restrictions.
Inline Formatting Objects (§6.6)
bidi-overrideExtended§6.6.2nononono 
characterBasic§6.6.3yesyesyesyes 
initial-property-setExtended§6.6.4nononono 
external-graphicBasic§6.6.5yesyesyesyes 
instream-foreign-objectExtended§6.6.6yesyesyesyes
  • Built-in support for SVG only, additional namespaces through optional extensions.
inlineBasic§6.6.7yesyesyesyes 
inline-containerExtended§6.6.8nononono 
leaderBasic§6.6.9partialyesyesyes 
page-numberBasic§6.6.10yesyesyesyes 
page-number-citationExtended§6.6.11partialpartialpartialpartial
  • [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.94 and later] 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-captionBasic§6.7.2nononono 
tableBasic§6.7.3partialpartialpartialpartial
  • [0.20.5] Only border-collapse="separate"
  • [All] No support for auto layout yet
table-columnBasic§6.7.4partialyesyesyes
  • [0.20.5] You must explicitly specify column widths.
table-captionExtended§6.7.5nononono 
table-headerBasic§6.7.6yesyesyesyes 
table-footerExtended§6.7.7yesyesyesyes 
table-bodyBasic§6.7.8yesyesyesyes 
table-rowBasic§6.7.9yesyesyesyes 
table-cellBasic§6.7.10partialyesyesyes 
List Formatting Objects (§6.8)
list-blockBasic§6.8.2yesyesyesyes 
list-itemBasic§6.8.3yesyesyesyes 
list-item-bodyBasic§6.8.4yesyesyesyes 
list-item-labelExtended§6.8.5yesyesyesyes 
Link and Multi Formatting Objects (§6.9)
basic-linkExtended§6.9.2yesyesyesyes
  • both internal and external supported
multi-switchExtended§6.9.3nononono 
multi-caseBasic§6.9.4nononono 
multi-toggleExtended§6.9.5nononono 
multi-propertiesExtended§6.9.6nononono 
multi-property-setExtended§6.9.7nononono 
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 WDnoyesyesyes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark (since XSL 1.1)Extended§6.11.2 in XSL 1.1 WDnoyesyesyes
  • [0.20.5] Uses the proprietary fox:outline extension.
bookmark-title (since XSL 1.1)Extended§6.11.3 in XSL 1.1 WDnopartialpartialpartial
  • [0.20.5] Uses the proprietary fox:outline extension.
  • [0.94 and later] color, font-style and font-weight are not supported, yet.
Out-of-line Formatting Objects (§6.10)
floatExtended§6.10.2nononono 
footnoteExtended§6.10.3yespartialpartialpartial
  • [0.20.5] Footnotes sometimes overlap with the main content
  • [0.94 and later] Restrictions with multi-column documents.
footnote-bodyExtended§6.10.4yesyesyesyes 
Other Formatting Objects (§6.11)
wrapperBasic§6.11.2yespartialpartialpartial
  • [0.94 and later] Only works as expected with inline-level content.
markerExtended§6.11.3yesyesyesyes 
retrieve-markerExtended§6.11.4yesyesyesyes 

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 (ancient)0.94 (stable)0.95 (beta)develop- ment
Common Accessibility Properties (§7.4)
source-documentBasic§7.4.1nananana 
roleBasic§7.4.2nananana 
Common Absolute Position Properties (§7.5)
absolute-positionComplete§7.5.1noyesyesyes
  • [0.20.5] Use shorthand position="absolute" as a workaround.
  • [0.94 and later] No restrictions. The 0.20.5 work-around is not supported.
topExtended§7.5.2yesyesyesyes 
rightExtended§7.5.3yesyesyesyes 
bottomExtended§7.5.4yesyesyesyes 
leftExtended§7.5.5yesyesyesyes 
Common Aural Properties (§7.6)
azimuthBasic§7.6.1nananana 
cue-afterBasic§7.6.2nananana 
cue-beforeBasic§7.6.3nananana 
elevationBasic§7.6.4nananana 
pause-afterBasic§7.6.5nananana 
pause-beforeBasic§7.6.6nananana 
pitchBasic§7.6.7nananana 
pitch-rangeBasic§7.6.8nananana 
play-duringBasic§7.6.9nananana 
richnessBasic§7.6.10nananana 
speakBasic§7.6.11nananana 
speak-headerBasic§7.6.12nananana 
speak-numeralBasic§7.6.13nananana 
speak-punctuationBasic§7.6.14nananana 
speech-rateBasic§7.6.15nananana 
stressBasic§7.6.16nananana 
voice-familyBasic§7.6.17nananana 
volumeBasic§7.6.18nananana 
Common Border, Padding, and Background Properties (§7.7)
background-attachmentExtended§7.7.1nononono 
background-colorBasic§7.7.2yespartialyesyes
  • [0.94] not yet implemented for table-column, table-body, table-header and table-footer.
background-imageExtended§7.7.3yespartialyesyes
  • [0.94] not yet implemented for table-column, table-body, table-header and table-footer.
background-repeatExtended§7.7.4noyesyesyes 
background-position-horizontalExtended§7.7.5nopartialpartialpartial[0.94 and later] Ignored when background-repeat set to "repeat" or "repeat-x"
background-position-verticalExtended§7.7.6nopartialpartialpartial[0.94 and later] Ignored when background-repeat set to "repeat" or "repeat-y"
border-before-colorBasic§7.7.7yesyesyesyes 
border-before-styleBasic§7.7.8partialyesyesyes
  • [0.20.5] only "solid" works
border-before-widthBasic§7.7.9yespartialyesyes
  • [0.94] .conditionality not supported on fo:table-cell
border-after-colorBasic§7.7.10yesyesyesyes 
border-after-styleBasic§7.7.11partialyesyesyes
  • [0.20.5] only "solid" works
border-after-widthBasic§7.7.12yespartialyesyes
  • [0.94] .conditionality not supported on fo:table-cell
border-start-colorBasic§7.7.13yesyesyesyes 
border-start-styleBasic§7.7.14partialyesyesyes
  • [0.20.5] only "solid" works
border-start-widthBasic§7.7.15yesyesyesyes 
border-end-colorBasic§7.7.16yesyesyesyes 
border-end-styleBasic§7.7.17partialyesyesyes
  • [0.20.5] only "solid" works
border-end-widthBasic§7.7.18yesyesyesyes 
border-top-colorBasic§7.7.19yesyesyesyes 
border-top-styleBasic§7.7.20partialyesyesyes
  • [0.20.5] only "solid" works
border-top-widthBasic§7.7.21yesyesyesyes 
border-bottom-colorBasic§7.7.22yesyesyesyes 
border-bottom-styleBasic§7.7.23partialyesyesyes
  • [0.20.5] only "solid" works
border-bottom-widthBasic§7.7.24yesyesyesyes 
border-left-colorBasic§7.7.25yesyesyesyes 
border-left-styleBasic§7.7.26partialyesyesyes
  • [0.20.5] only "solid" works
border-left-widthBasic§7.7.27yesyesyesyes 
border-right-colorBasic§7.7.28yesyesyesyes 
border-right-styleBasic§7.7.29partialyesyesyes
  • [0.20.5] only "solid" works
border-right-widthBasic§7.7.30yesyesyesyes 
padding-beforeBasic§7.7.31partialyesyesyes
  • [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-afterBasic§7.7.32partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-startBasic§7.7.33partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-endBasic§7.7.34partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-topBasic§7.7.35partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-bottomBasic§7.7.36partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-leftBasic§7.7.37partialyesyesyes
  • [0.20.5] same limitations as padding-before
padding-rightBasic§7.7.38partialyesyesyes
  • [0.20.5] same limitations as padding-before
Common Font Properties (§7.8)
font-familyBasic§7.8.2partialpartialpartialpartial
  • [0.20.5] font-family lists are not supported, use a single font-family name
  • [0.94 and later] font-family lists are allowed but glyph based font selection is not supported
font-selection-strategyComplete§7.8.3nononono 
font-sizeBasic§7.8.4partialyesyesyes
  • [0.20.5] "smaller" and "larger" not implemented
font-stretchExtended§7.8.5nononono 
font-size-adjustExtended§7.8.6nononono 
font-styleBasic§7.8.7partialyesyesyes
  • [0.20.5] "normal" is not supported
font-variantBasic§7.8.8yesnonono 
font-weightBasic§7.8.9partialpartialpartialpartial
  • [0.20.5] "normal", "bolder" and "lighter" are not supported
  • [0.94 and later] TODO <relative> font weights
Common Hyphenation Properties (§7.9)
countryExtended§7.9.1yesyesyesyes
  • [0.94 and earlier] Only used for controlling hyphenation.
  • [trunk] For PDF output: Only 2-letter codes from ISO 3166 are supported properly to identify the natural language!
languageExtended§7.9.2yesyesyesyes
  • [0.94 and earlier] Only used for controlling hyphenation.
  • [trunk] For PDF output: Only 2-letter codes from ISO 639 are supported properly to identify the natural language!
scriptExtended§7.9.3nononono 
hyphenateExtended§7.9.4yesyesyesyes 
hyphenation-characterExtended§7.9.5yesyesyesyes 
hyphenation-push-character-countExtended§7.9.6yesyesyesyes 
hyphenation-remain-character-countExtended§7.9.7yesyesyesyes 
Common Margin Properties - Block (§7.10)
margin-topBasic§7.10.1partialyesyesyes
  • [0.20.5] only on pages and regions
margin-bottomBasic§7.10.2partialyesyesyes
  • [0.20.5] only on pages and regions
margin-leftBasic§7.10.3partialyesyesyes
  • [0.20.5] only on pages and regions
margin-rightBasic§7.10.4partialyesyesyes
  • [0.20.5] only on pages and regions
space-beforeBasic§7.10.5partialpartialpartialpartial
  • [0.20.5] space-before.optimum supported
  • [0.94 and later] Space adjustment may not fully work everywhere, yet.
space-afterBasic§7.10.6partialpartialpartialpartial
  • [0.20.5] space-after.optimum supported
  • [0.94 and later] Space adjustment may not fully work everywhere, yet.
start-indentBasic§7.10.7yesyesyesyes 
end-indentBasic§7.10.8yesyesyesyes 
Common Margin Properties - Inline (§7.11)
space-endBasic§7.11.1nononono 
space-startBasic§7.11.2nononono 
Common Relative Position Properties (§7.12)
relative-positionExtended§7.12.1nononono 
Area Alignment Properties (§7.13)
alignment-adjustBasic§7.13.1noyesyesyes 
alignment-baselineBasic§7.13.2noyesyesyes 
baseline-shiftBasic§7.13.3partialyesyesyes
  • [0.20.5] Only values "super" and "sub" have been implemented.
display-alignExtended§7.13.4partialpartialpartialpartial
  • [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.94 and later] TODO Check e-g, i-f-o.
dominant-baselineBasic§7.13.5noyesyesyes 
relative-alignExtended§7.13.6nononono 
Area Dimension Properties (§7.14)
block-progression-dimensionBasic§7.14.1noyesyesyes 
content-heightExtended§7.14.2noyesyesyes 
content-widthExtended§7.14.3noyesyesyes 
heightBasic§7.14.4yesyesyesyes 
inline-progression-dimensionBasic§7.14.5noyesyesyes 
max-heightComplete§7.14.6nononoyes 
max-widthComplete§7.14.7nononoyes 
min-heightComplete§7.14.8nononoyes 
min-widthComplete§7.14.9nononoyes 
scalingExtended§7.14.10noyesyesyes 
scaling-methodExtended§7.14.11nononono 
widthBasic§7.14.12yesyesyesyes 
Block and Line-related Properties (§7.15)
hyphenation-keepExtended§7.15.1nononono 
hyphenation-ladder-countExtended§7.15.2noyesyesyes 
last-line-end-indentExtended§7.15.3noyesyesyes 
line-heightBasic§7.15.4yesyesyesyes 
line-height-shift-adjustmentExtended§7.15.5noyesyesyes 
line-stacking-strategyBasic§7.15.6nopartialpartialpartial
  • [0.94 and later] value "line-height" not supported
linefeed-treatmentExtended§7.15.7noyesyesyes 
white-space-treatmentExtended§7.15.8nopartialpartialpartial
  • [0.94 and later] inline elements may interfere with correct handling of this property in some cases
text-alignBasic§7.15.9partialpartialpartialpartial
  • Only start, end, center and justify are supported
text-align-lastExtended§7.15.10partialpartialpartialpartial
  • Only start, end, center and justify are supported
text-indentBasic§7.15.11yesyesyesyes 
white-space-collapseExtended§7.15.12yesyesyesyes 
wrap-optionBasic§7.15.13yespartialpartialpartial
  • [0.94 and later] Only supported on fo:block.
Character Properties (§7.16)
characterBasic§7.16.1yesyesyesyes 
letter-spacingExtended§7.16.2yesyesyesyes 
suppress-at-line-breakExtended§7.16.3nononono 
text-decorationExtended§7.16.4yesyesyesyes 
text-shadowExtended§7.16.5nononono 
text-transformExtended§7.16.6noyesyesyes 
treat-as-word-spaceExtended§7.16.7nononono 
word-spacingExtended§7.16.8noyesyesyes 
Color-related Properties (§7.17)
colorBasic§7.17.1yesyesyesyes 
color-profile-nameExtended§7.17.2nononono 
rendering-intentExtended§7.17.3nononono 
Float-related Properties (§7.18)
clearExtended§7.18.1nononono 
floatExtended§7.18.2nononono 
intrusion-displaceExtended§7.18.3nononono 
Keeps and Breaks Properties (§7.19)
break-afterBasic§7.19.1yespartialyesyes
  • [0.94] Doesn't work on the last row of a table
break-beforeBasic§7.19.2yespartialyesyes
  • [0.94] Doesn't work on the first row of a table
  • [0.94] When set on the first child of an fo:table-cell, the border-before is still painted on the previous page
keep-togetherExtended§7.19.3partialpartialpartialpartial
  • [0.20.5] works only in table rows
  • [0.95 and earlier] <integer> values are not supported.
  • [Trunk] minimal support for <integer> value.
keep-with-nextBasic§7.19.4partialpartialpartialpartial
  • [0.20.5] works only in table rows
  • [0.94 and later] works on all implemented block-level FOs, but not on inline-level FOs.
  • [0.95 and earlier] <integer> values are not supported.
  • [Trunk] minimal support for <integer> value.
keep-with-previousBasic§7.19.5partialpartialpartialpartial
  • [0.20.5] works only in table rows
  • [0.94] works on all implemented FOs, except list- and table-related and inline-level FOs.
  • [0.95] works on all implemented FOs, except list- and inline-level FOs.
  • [Trunk] does not work on inline-level FOs.
  • [0.95 and earlier] <integer> values are not supported.
  • [Trunk] minimal support for <integer> value.
orphansBasic§7.19.6noyesyesyes 
widowsBasic§7.19.7noyesyesyes 
Layout-related Properties (§7.20)
clipExtended§7.20.1nononono 
overflowBasic