Users' Guide

xmlroff — XSL formatter
Conformance
Conformance Levels
Stated Conformance
Formatting Objects
Properties

Conformance

Abstract

xmlroff Conformance to XSL 1.0 Recommendation

The XSL Recommendation defines the behaviors of two classes of formatters based on their media type: visual and aural. It further divides the class of visual formatters into interactive media and non-interactive media formatters.

xmlroff is a visual formatter for non-interactive media.

xmlroff implements a range of formatting objects and properties from the Basic, Extended, and Complete conformance levels.

xmlroff does not claim Basic conformance to the XSL Recommendation since it does not yet implement all of the Basic level formatting objects and properties.

xmlroff supports both "lr-tb" and "rl-tb" values of the writing-mode property (and the "lr" and "rl" shorthands).

Conformance Levels

From Section 8, Conformance, of the XSL Recommendation:

This specification defines three levels of conformance, in order of completeness:

Level Description
Basic Includes the set of formatting objects and properties needed to support a minimum level of pagination or aural rendering.
Extended Includes everything else, except for shorthands. It is intended for applications whose goal is to provide sophisticated pagination.
Complete Includes everything.

Conformance to this specification is expressed in terms of conformance to any of the above levels.

An application that claims conformance to a given level of this specification must implement all the formatting objects and properties that apply to it for a given medium.

Conformance for visual and aural XSL formatters is defined separately for each formatting object. For example, implementing fo:page-number is necessary for Basic level conformance for a visual formatter, but only necessary for Extended level conformance for an aural formatter.

In contrast, formatting object properties only have one defined conformance level, but there are also some properties that apply to only one class of formatter. For example, page-height and voice-family are both in the set of properties for Basic level conformance, but page-height applies only to visual media and voice-family applies only to aural media.

Appendix B and Section C.3 of the XSL Recommendation list a proposed fallback treatment for each Extended level formatting object and property. The fallbacks are defined "[i]n order to ensure interoperability." Also, "[c]orrect processing of fallbacks does not constitute conformance."

All formatting objects are assigned to either Basic or Extended level conformance. There are no Complete level formatting objects.

Some formatting objects are specific to Extended level conformant interactive media formatters. Non-interactive media formatters such as xmlroff, however, must, for Extended level conformance, implement the proposed fallback treatment of the Extended level interactive media formatting objects.

Stated Conformance

The stated conformance also has three levels:

Level Description
Yes xmlroff implements the formatting object, property, or fallback behaviour, possibly with some caveats.
No xmlroff does not implement the formatting object, property, or fallback behaviour, but a workaround may also be suggested.
N/A xmlroff does not need to formatting object, property, or fallback behaviour. For example, xmlroff does not implement properties for aural or interactive presentation, and it does not implement fallback behaviour for implemented formatting objects.

Formatting Objects

All the formatting object specified by the XSL 1.0 Recommendation are accepted. Not all are supported, however.

The following tables are based on the tables in Appendix B of the XSL Recommendation. The conformance level and proposed fallback treatment for visual processors are shown along with an indication of whether xmlroff implements the formatting object or the fallback treatment. Conformance level and fallbacks for aural processors are not shown.

Declaration and Pagination and Layout Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:root Basic Yes - N/A
fo:page-sequence Basic Yes - N/A
fo:page-sequence-master Basic Yes - N/A
fo:single-page-master-reference Basic No - N/A
fo:repeatable-page-master-reference Basic No - N/A
fo:repeatable-page-master-alternatives Extended No Use the page-master referenced in the first fo:conditional-page-master-reference child No
fo:conditional-page-master-reference Extended No Use the page-master referenced in the first fo:conditional-page-master-reference child No
fo:layout-master-set Basic Yes - N/A
fo:simple-page-master Basic Yes - N/A
fo:region-body Basic Yes - N/A
fo:region-before Extended No Include after content of body region is placed No
fo:region-after Extended No Include after content of body region is placed. No
fo:region-start Extended No Include after content of body region is placed No
fo:region-end Extended No Include after content of body region is placed No
fo:declarations Basic Yes - N/A
fo:color-profile Extended No Ignore, use the sRGB fallback of the rgb-icc function No
fo:flow Basic Yes - N/A
fo:static-content Extended No Include after content of body region is placed No
fo:title Extended No Include before content of body region is placed No

Block Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:block Basic Yes - N/A
fo:block-container Extended No Display indication that content cannot be correctly rendered No

Inline Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:bidi-override Extended Yes Display indication that content cannot be correctly rendered. N/A
fo:character Basic Yes - N/A
fo:initial-property-set Extended No Ignore any properties specified on this object. Yes
fo:external-graphic Basic Yes. Supported formats determined by underlying graphics library. - N/A
fo:instream-foreign-object Extended No Display an indication that content cannot be correctly rendered. No
fo:inline Basic Yes - N/A
fo:inline-container Extended No Display indication that content cannot be correctly rendered. No
fo:leader Basic No - N/A
fo:page-number Basic No - N/A
fo:page-number-citation Extended No Display an indication that content cannot be correctly rendered. No

Table Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:table-and-caption Basic No - N/A
fo:table Basic Yes - N/A
fo:table-column Basic Yes - N/A
fo:table-caption Extended No
  • 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"

No
fo:table-header Basic No - N/A
fo:table-footer Extended No Place at end of table. Yes
fo:table-body Basic Yes - N/A
fo:table-row Basic Yes - N/A
fo:table-cell Basic Yes - N/A

List Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:list-block Basic Yes - N/A
fo:list-item Basic Yes - N/A
fo:list-item-body Basic Yes - N/A
fo:list-item-label Extended Yes Labels that break across multiple lines are treated as separate blocks before list-item-body. N/A

Link and Multi Formatting Objects

xmlroff is a non-interactive media formatter. Only the fallback treatment for the interactive media formatting objects will be implemented.

Formatting Object Level xmlroff Fallback xmlroff
fo:basic-link Extended No Promote content to parent formatting object. No
fo:multi-switch Extended. Need not be implemented for extended conformance for non-interactive media No For basic conformance and extended conformance for non-interactive media: utilize the contents of the first eligible multi-case formatting object. No
fo:multi-case Basic Needed as wrapper for fallback for multi-switch No - N/A
fo:multi-toggle Extended. Need not be implemented for extended conformance for non-interactive media No For basic conformance and extended conformance for non-interactive media: promote content to parent formatting object. No
fo:multi-properties Extended. Need not be implemented for extended conformance for non-interactive media No For basic conformance and extended conformance for non-interactive media: promote content to parent formatting object. No
fo:multi-property-set Extended. Need not be implemented for extended conformance for non-interactive media No For basic conformance and extended conformance for non-interactive media: ignore. No

Out-of-line Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:float Extended No Place inline. No
fo:footnote Extended No Place inline. No
fo:footnote-body Extended No Place inline. No

Other Formatting Objects

Formatting Object Level xmlroff Fallback xmlroff
fo:wrapper Basic Yes - N/A
fo:marker Extended No Ignore. Yes
fo:retrieve-marker Extended No Display indication that content cannot be correctly rendered. No

Properties

Property Values Level xmlroff
absolute-position auto | absolute | fixed | inherit Complete No
active-state link | visited | active | hover | focus Extended N/A
alignment-adjust auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length> | inherit Basic Yes
alignment-baseline auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit Basic Yes
auto-restore true | false Extended N/A
azimuth <angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit Basic N/A
background [<background-color> || <background-image> || <background-repeat> || <background-attachment> || <background-position> ]] | inherit Complete No
background-attachment scroll | fixed | inherit Extended No
background-color <color> | transparent | inherit Basic Yes
background-image <uri-specification> | none | inherit Extended No
background-position [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] | inherit Complete No
background-position-horizontal <percentage> | <length> | left | center | right | inherit Extended No
background-position-vertical <percentage> | <length> | top | center | bottom | inherit Extended No
background-repeat repeat | repeat-x | repeat-y | no-repeat | inherit Extended No
baseline-shift baseline | sub | super | <percentage> | <length> | inherit Basic Yes
blank-or-not-blank blank | not-blank | any | inherit Extended No
block-progression-dimension auto | <length> | <percentage> | <length-range> | inherit Basic Yes
border [ <border-width> || <border-style> || <color> ] | inherit Complete Yes
border-after-color <color> | inherit Basic Yes
border-after-precedence force | <integer> | inherit Basic No
border-after-style <border-style> | inherit Basic Yes
border-after-width <border-width> | <length-conditional> | inherit Basic Yes
border-before-color <color> | inherit Basic Yes
border-before-precedence force | <integer> | inherit Basic No
border-before-style <border-style> | inherit Basic Yes
border-before-width <border-width> | <length-conditional> | inherit Basic Yes
border-bottom [ <border-width> || <border-style> || <color> ] | inherit Complete Yes
border-bottom-color <color> | inherit Basic Yes
border-bottom-style <border-style> | inherit Basic Yes
border-bottom-width <border-width> | inherit Basic Yes
border-collapse collapse | collapse-with-precedence | separate | inherit Extended No
border-color [ <color> | transparent ]{1,4} | inherit Complete Yes
border-end-color <color> | inherit Basic Yes
border-end-precedence force | <integer> | inherit Basic No
border-end-style <border-style> | inherit Basic Yes
border-end-width <border-width> | <length-conditional> | inherit Basic Yes
border-left [ <border-width> || <border-style> || <color> ] | inherit Complete Yes
border-left-color <color> | inherit Basic Yes
border-left-style <border-style> | inherit Basic Yes
border-left-width <border-width> | inherit Basic Yes
border-right [ <border-width> || <border-style> || <color> ] | inherit Complete Yes
border-right-color <color> | inherit Basic Yes
border-right-style <border-style> | inherit Basic Yes
border-right-width <border-width> | inherit Basic Yes
border-separation <length-bp-ip-direction> | inherit Extended No
border-spacing <length> <length>? | inherit Complete No
border-start-color <color> | inherit Basic Yes
border-start-precedence force | <integer> | inherit Basic No
border-start-style <border-style> | inherit Basic Yes
border-start-width <border-width> | <length-conditional> | inherit Basic Yes
border-style <border-style>{1,4} | inherit Complete Yes
border-top [ <border-width> || <border-style> || <color> ] | inherit Complete Yes
border-top-color <color> | inherit Basic Yes
border-top-style <border-style> | inherit Basic Yes
border-top-width <border-width> | inherit Basic Yes
border-width <border-width>{1,4} | inherit Complete Yes
bottom <length> | <percentage> | auto | inherit Extended No. Use individual properties instead.
break-after auto | column | page | even-page | odd-page | inherit Basic Yes
break-before auto | column | page | even-page | odd-page | inherit Basic Yes
caption-side before | after | start | end | top | bottom | left | right | inherit Complete No
case-name <name> Extended N/A
case-title <string> Extended N/A
character <character> Basic Yes
clear start | end | left | right | both | none | inherit Extended No
clip <shape> | auto | inherit Extended No
color <color> | inherit Basic Yes
color-profile-name <name> | inherit Extended No
column-count <number> | inherit Extended No
column-gap <length> | <percentage> | inherit Extended No
column-number <number> Basic Yes
column-width <length> | <percentage> Basic Yes
content-height auto | scale-to-fit | <length> | <percentage> | inherit Extended No
content-type <string> | auto Extended No. Content type is detected automatically by the image library.
content-width auto | scale-to-fit | <length> | <percentage> | inherit Extended No
country none | <country> | inherit Extended No
cue <cue-before> || <cue-after> | inherit Complete N/A
cue-after <uri-specification> | none | inherit Basic N/A
cue-before <uri-specification> | none | inherit Basic N/A
destination-placement-offset <length> Extended No
direction ltr | rtl | inherit Basic Yes
display-align auto | before | center | after | inherit Extended fo:table-cell only
dominant-baseline auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit Basic Yes
elevation <angle> | below | level | above | higher | lower | inherit Basic N/A
empty-cells show | hide | inherit Extended No
end-indent <length> | <percentage> | inherit Basic Yes
ends-row true | false Extended No
extent <length> | <percentage> | inherit Extended No
external-destination <uri-specification> Extended No
float before | start | end | left | right | none | inherit Extended No
flow-name <name> Basic Yes
font [ [ <font-style> || <font-variant> || <font-weight> ]? <font-size> [ / <line-height>]? <font-family> ] | caption | icon | menu | message-box | small-caption | status-bar | inherit Complete No. Use individual properties instead.
font-family [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit Basic Yes
font-selection-strategy auto | character-by-character | inherit Complete No
font-size <absolute-size> | <relative-size> | <length> | <percentage> | inherit Basic Yes
font-size-adjust <number> | none | inherit Extended No
font-stretch normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit Extended Yes
font-style normal | italic | oblique | backslant | inherit Basic Yes
font-variant normal | small-caps | inherit Basic Yes
font-weight normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit Basic Yes
force-page-count auto | even | odd | end-on-even | end-on-odd | no-force | inherit Extended No
format <string> Basic Yes
glyph-orientation-horizontal <angle> | inherit Extended No
glyph-orientation-vertical auto | <angle> | inherit Extended No
grouping-separator <character> Extended Yes
grouping-size <number> Extended Yes
height <length> | <percentage> | auto | inherit Basic Yes
hyphenate false | true | inherit Extended No
hyphenation-character <character> | inherit Extended No
hyphenation-keep auto | column | page | inherit Extended No
hyphenation-ladder-count no-limit | <number> | inherit Extended No
hyphenation-push-character-count <number> | inherit Extended No
hyphenation-remain-character-count <number> | inherit Extended No
id <id> Basic Yes
indicate-destination true | false Extended No
initial-page-number auto | auto-odd | auto-even | <number> | inherit Basic Yes
inline-progression-dimension auto | <length> | <percentage> | <length-range> | inherit Basic Yes
internal-destination empty string | <idref> Extended No
intrusion-displace auto | none | line | indent | block | inherit Extended No
keep-together <keep> | inherit Extended Yes
keep-with-next <keep> | inherit Basic Yes
keep-with-previous <keep> | inherit Basic Yes
language none | <language> | inherit Extended No
last-line-end-indent <length> | <percentage> | inherit Extended No
leader-alignment none | reference-area | page | inherit Extended No
leader-length <length-range> | <percentage> | inherit Basic No
leader-pattern space | rule | dots | use-content | inherit Basic No
leader-pattern-width use-font-metrics | <length> | <percentage> | inherit Extended No
left <length> | <percentage> | auto | inherit Extended No
letter-spacing normal | <length> | <space> | inherit Extended No
letter-value auto | alphabetic | traditional Basic Yes
linefeed-treatment ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit Extended No
line-height normal | <length> | <number> | <percentage> | <space> | inherit Basic Yes
line-height-shift-adjustment consider-shifts | disregard-shifts | inherit Extended No
line-stacking-strategy line-height | font-height | max-height | inherit Basic Yes
margin <margin-width>{1,4} | inherit Complete No. Use individual properties instead.
margin-bottom <margin-width> | inherit Basic Yes
margin-left <margin-width> | inherit Basic Yes
margin-right <margin-width> | inherit Basic Yes
margin-top <margin-width> | inherit Basic Yes
marker-class-name <name> Extended No
master-name <name> Basic Yes
master-reference <name> Basic Yes
max-height <length> | <percentage> | none | inherit Complete No
maximum-repeats <number> | no-limit | inherit Extended No
max-width <length> | <percentage> | none | inherit Complete No
media-usage auto | paginate | bounded-in-one-dimension | unbounded Extended Yes
min-height <length> | <percentage> | inherit Complete No
min-width <length> | <percentage> | inherit Complete No
number-columns-repeated <number> Basic Yes
number-columns-spanned <number> Basic Yes
number-rows-spanned <number> Basic Yes
odd-or-even odd | even | any | inherit Extended No
orphans <integer> | inherit Basic Yes
overflow visible | hidden | scroll | error-if-overflow | auto | inherit Basic No
padding <padding-width>{1,4} | inherit Complete Yes
padding-after <padding-width> | <length-conditional> | inherit Basic Yes
padding-before <padding-width> | <length-conditional> | inherit Basic Yes
padding-bottom <padding-width> | inherit Basic Yes
padding-end <padding-width> | <length-conditional> | inherit Basic Yes
padding-left <padding-width> | inherit Basic Yes
padding-right <padding-width> | inherit Basic Yes
padding-start <padding-width> | <length-conditional> | inherit Basic Yes
padding-top <padding-width> | inherit Basic Yes
page-break-after auto | always | avoid | left | right | inherit Complete No
page-break-before auto | always | avoid | left | right | inherit Complete No
page-break-inside avoid | auto | inherit Complete No
page-height auto | indefinite | <length> | inherit Basic Yes
page-position first | last | rest | any | inherit Extended No
page-width auto | indefinite | <length> | inherit Basic Yes
pause [<time> | <percentage>]{1,2} | inherit Complete N/A
pause-after <time> | <percentage> | inherit Basic N/A
pause-before <time> | <percentage> | inherit Basic N/A
pitch <frequency> | x-low | low | medium | high | x-high | inherit Basic N/A
pitch-range <number> | inherit Basic N/A
play-during <uri-specification> mix? repeat? | auto | none | inherit Basic N/A
position static | relative | absolute | fixed | inherit Complete No
precedence true | false | inherit Extended No
provisional-distance-between-starts <length> | <percentage> | inherit Basic Yes
provisional-label-separation <length> | <percentage> | inherit Basic Yes
reference-orientation 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit Extended No
ref-id <idref> | inherit Extended No
region-name xsl-region-body | xsl-region-start | xsl-region-end | xsl-region-before | xsl-region-after | xsl-before-float-separator | xsl-footnote-separator | <name> Basic Yes
relative-align before | baseline | inherit Extended No
relative-position static | relative | inherit Extended No
rendering-intent auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit Extended No
retrieve-boundary page | page-sequence | document Extended No
retrieve-class-name <name> Extended No
retrieve-position first-starting-within-page | first-including-carryover | last-starting-within-page | last-ending-within-page Extended No
richness <number> | inherit Basic N/A
right <length> | <percentage> | auto | inherit Extended No
role <string> | <uri-specification> | none | inherit Basic Yes
rule-style none | dotted | dashed | solid | double | groove | ridge | inherit Basic No
rule-thickness <length> Basic No
scaling uniform | non-uniform | inherit Extended No
scaling-method auto | integer-pixels | resample-any-method | inherit Extended No
score-spaces true | false | inherit Extended No
script none | auto | <script> | inherit Extended No
show-destination replace | new Extended No
size <length>{1,2} | auto | landscape | portrait | inherit Complete No
source-document <uri-specification> [<uri-specification>]* | none | inherit Basic Yes
space-after <space> | inherit Basic Yes
space-before <space> | inherit Basic Yes
space-end <space> | <percentage> | inherit Basic Yes
space-start <space> | <percentage> | inherit Basic Yes
span none | all | inherit Extended No
speak normal | none | spell-out | inherit Basic N/A
speak-header once | always | inherit Basic N/A
speak-numeral digits | continuous | inherit Basic N/A
speak-punctuation code | none | inherit Basic N/A
speech-rate <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit Basic N/A
src <uri-specification> | inherit Basic Yes. Only local files are supported at present.
start-indent <length> | <percentage> | inherit Basic Yes
starting-state show | hide Extended No
starts-row true | false Extended No
stress <number> | inherit Basic N/A
suppress-at-line-break auto | suppress | retain | inherit Extended No
switch-to xsl-preceding | xsl-following | xsl-any | <name>[ <name>]* Extended No
table-layout auto | fixed | inherit Extended 'fixed' only
table-omit-footer-at-break true | false Extended No
table-omit-header-at-break true | false Extended No
target-presentation-context use-target-processing-context | <uri-specification> Extended No
target-processing-context document-root | <uri-specification> Extended No
target-stylesheet use-normal-stylesheet | <uri-specification> Extended No
text-align start | center | end | justify | inside | outside | left | right | <string> | inherit Basic Yes
text-align-last relative | start | center | end | justify | inside | outside | left | right | inherit Extended No
text-altitude use-font-metrics | <length> | <percentage> | inherit Extended No
text-decoration none | [ [ underline | no-underline] || [ overline | no-overline ] || [ line-through | no-line-through ] || [ blink | no-blink ] ] | inherit Extended No
text-depth use-font-metrics | <length> | <percentage> | inherit Extended No
text-indent <length> | <percentage> | inherit Basic Yes
text-shadow none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit Extended No
text-transform capitalize | uppercase | lowercase | none | inherit Extended No
top <length> | <percentage> | auto | inherit Extended No
treat-as-word-space auto | true | false | inherit Extended No
unicode-bidi normal | embed | bidi-override | inherit Extended Yes
vertical-align baseline | middle | sub | super | text-top | text-bottom | <percentage> | <length> | top | bottom | inherit Complete No
visibility visible | hidden | collapse | inherit Extended No
voice-family [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit Basic N/A
volume <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit Basic N/A
white-space normal | pre | nowrap | inherit Complete No
white-space-collapse false | true | inherit Extended No
white-space-treatment ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit Extended No
widows <integer> | inherit Basic Yes
width <length> | <percentage> | auto | inherit Basic No
word-spacing normal | <length> | <space> | inherit Extended No
wrap-option no-wrap | wrap | inherit Basic No
writing-mode lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit Basic Yes
xml:lang <country-language> | inherit Complete No
z-index auto | <integer> | inherit Extended No