Implementation Plan

xmlroff releases happen on or about the first of each month.

The "first" of the month drifts a bit, and some months are longer than others, since xmlroff progresses from contributions made voluntarily by people working in their spare time.

If you want timely releases of new FOs and properties, the best way to get them is to contribute to xmlroff yourself. You might not be able to contribute C code, there's still many other ways you can contribute. Every contributor is acknowledged, since it will take more than just code slingers to make xmlroff a success.

Big Itches of xmlroff Development

The main technical challenge for the xmlroff project is to implement the XSL Recommendation. We still have a way to go. Other factors such as usability, speed, reliability, etc. are also real challenges.

Since your contributions to xmlroff (and everyone else's) are voluntary, you are free to scratch your particular itch and contribute as you see fit. However, if we all scratch different itches, we risk never completely finishing the big jobs.

Accordingly, we maintain a list of "big itches" that we most want to scratch. By focusing on a few areas, we can make tangible progress in a single release.

  • Test against DocBook test suite

  • region-before and region-after

  • Cairo backend

  • Whitespace handling

  • Page number cross-references

  • Developer documentation

Proposed Implementation Sequence

To the extent that we can plan the implementation when progress:

  • Is by voluntary contribution

  • Often occurs in response to bug reports or stated needs

  • Covers more areas than implementing FOs and properties

there is a proposed implementation sequence.

Implementation is proposed to happen in several phases, each of which covers multiple stages. The last step in any phase is reassessment of which stages to implement in the following phase.

PhaseDescriptionStagesDetails
FromTo
1Minimal14Minimal formatting. Mimimal implementation of simple page master, blocks with border and padding, font properties, and bidirectional text.
2Lists and tables57Lists and tables.
3Complex pages811Page regions, footnotes, multiple columns.
4Additional objects1216Leader, external graphic, etc.
5Alternate pages1719

Repeating and conditional page masters, floats.

This is the minimum necessary for "real" formatting.

6The rest2042Other extended formatting objects as well as additional properties required for extended and complete conformance with the XSL CR.

Many formatting objects and, especially, many properties need to be implemented in some minimal fashion well before their full implementation is scheduled for completion. In addition, this implementation sequence assumes that once a property is implemented for the named formatting object, the property is also, as part of implementing those other formatting objects, implemented at the same or subsequent stages for other formatting objects with that property.

Some formatting objects are implemented over multiple stages, with additional properties being added each time. If so, the second and subsequent occurrences of the formatting objects in successive stages are shown as emphasised text.

The XSL Recommendation defines three conformance levels:

LevelDescription
BasicIncludes the set of formatting objects and properties needed to support a minimum level of pagination or aural rendering.
ExtendedIncludes everything else, except for shorthands. It is intended for applications whose goal is to provide sophisticated pagination.
CompleteIncludes everything.

The implementation stages are shown in the following table. The background colour of a formatting object or property indicates its conformance level.

Properties and formatting objects with "Yes" in the "Implemented" column have been implemented.

StageFormatting ObjectNew Property/TraitImplementedCapability
1rootYesBasic pages containing blocks of text. No font property support.
layout-master-setYes
simple-page-mastermaster-nameYes
page-heightYes
page-widthYes
margin-topYes
margin-bottomYes
margin-leftYes
margin-rightYes
space-beforeYes
space-afterYes
start-indentYes
end-indentYes
region-bodyYes
declarationsYes
page-sequenceformatYes
grouping-separatorYes
grouping-sizeYes
letter-valueYes
flowflow-nameYes
blockidYes
roleYes
source-documentYes
wrapperYes
2blockbackground-colorYesAdditional formatting of blocks of text. Still no font property support.
border-after-colorYes
border-after-styleYes
border-after-widthYes
border-before-colorYes
border-before-styleYes
border-before-widthYes
border-bottom-colorYes
border-bottom-styleYes
border-bottom-widthYes
border-end-colorYes
border-end-styleYes
border-end-widthYes
border-left-colorYes
border-left-styleYes
border-left-widthYes
border-right-colorYes
border-right-styleYes
border-right-widthYes
border-start-colorYes
border-start-styleYes
border-start-widthYes
border-top-colorYes
border-top-styleYes
border-top-widthYes
break-afterYes
break-beforeYes
colorYes
keep-together.within-columnYes
keep-together.within-pageYes
keep-with-next.within-columnYes
keep-with-next.within-pageYes
keep-with-previous.within-columnYes
keep-with-previous.within-pageYes
orphansYes
padding-afterYes
padding-beforeYes
padding-bottomYes
padding-endYes
padding-leftYes
padding-rightYes
padding-startYes
padding-topYes
text-alignYes
text-indentYes
widowsYes
3blockfont-familyYesBasic font properties
font-sizeYes
font-stretchYes
font-styleYes
font-variantYes
font-weightYes
4charactercharacterYesUnicode bidirectional algorithm support and correct baseline munging
bidi-overridedirectionYes
unicode-bidiYes
inlinebaseline-shiftYes
simple-page-masterwriting-modeYes
5inlinealignment-adjustInline spacing, alignment, and wrapping
alignment-baseline
dominant-baseline
keep-together.within-line
keep-with-next.within-line
keep-with-previous.within-line
line-height
space-start
space-end
blockline-stacking-strategyYes
wrap-mode
6list-blockprovisional-distance-between-startsYesLists
provisional-label-separationYes
list-itemYes
list-item-bodyYes
7tableblock-progression-dimensionBasic table formatting. Only "fixed" table layout is supported.
border-after-precedence
border-before-precedence
border-end-precedence
border-start-precedence
inline-progression-dimensionYes
widthYes
table-columncolumn-numberYes
column-widthYes
number-columns-repeatedYes
number-columns-spannedYes
table-headerYes
table-bodyYes
table-rowheight
table-cellnumber-rows-spannedYes
display-align
relative-align
8region-beforeclipMore complex pages
extent
overflow
precedence
reference-orientation
region-nameYes
region-after
region-start
region-end
9page-sequenceinitial-page-numberExtended formatting required for realistic documents
static-content
page-number
page-number-citationref-id
markermarker-class-name
retrieve-markerretrieve-boundary
retrieve-class-name
retrieve-position
10footnoteFootnotes
footnote-body
11region-bodycolumn-countMulti-column regions
column-gap
12leaderleader-lengthLeader
leader-pattern
rule-style
rule-thickness
13external-graphiccontent-typeExternal graphic
src
14blockcountryHyphenation and improved line breaking
hyphenate
hyphenation-character
hyphenation-keep
hyphenation-ladder-count
hyphenation-push-character-count
hyphenation-remain-character-count
language
script
xml:lang
charactersuppress-at-line-break
15basic-linkdestination-placement-offsetNot-all-that-basic basic linking
external-destination
indicate-destination
internal-destination
show-destination
target-presentation-context
target-processing-context
target-stylesheet
16blockvisibilityZ-index and visibility
z-index
17page-sequenceforce-page-countMore complex page sequences
page-sequence-master
repeatable-page-master-reference
simple-page-master-reference
18repeatable-page-master-referencemaximum-repeatsExtended page sequence control
repeatable-page-master-alternatives
conditional-page-master-referenceblank-or-not-blank
odd-or-even
page-position
19floatclearFloats
float
20blocklast-line-end-indentFurther white space, line height, and line end control
linefeed-treatment
line-height-shift-adjustment
white-space-treatment
text-align-last
white-space-collapse
21block-containerabsolute-positionBlock container and absolute positioning
bottom
left
right
span
top
22inline-containerInline container
23initial-property-setSet initial properties
24list-item-labelFancy list item labels
25table-captionFancy table captions
table-and-captioncaption-side
26instream-foreign-objectForeign objects
27titleDocument title
28color-profilecolor-profile-nameColour profiles
rendering-intent
29blockbackground-attachmentExtended background properties
background-image
background-position
background-position-horizontal
background-position-vertical
background-repeat
30tabletable-omit-header-at-breakControl of table header repetition
31tableborder-collapseExtended table properties
border-separation
border-spacing
32table-cellempty-cellsExtended table cell properties
ends-row
starts-row
33tabletable-layoutChoice of table layout algorithms
34table-footerTable footers
tabletable-omit-footer-at-break
35blockletter-spacingText decoration and other extended properties
score-spaces
text-altitude
text-decoration
text-depth
text-shadow
text-transform
word-spacing
charactertreat-as-word-space
36blockfontFont shorthands and additional font properties
font-selection-strategy
font-size-adjust
37leaderleader-alignmentAdditional leader properties
leader-pattern-width
38characterglyph-orientation-horizontalGlyph orientation
glyph-orientation-vertical
39external-graphiccontent-heightAdditional external graphic properties
content-width
scaling
scaling-method
40rootmedia-usageMedia usage
41blockbackgroundComplete properties
borderYes
border-bottomYes
border-colorYes
border-leftYes
border-rightYes
border-styleYes
border-topYes
border-widthYes
margin
max-height
max-width
min-height
min-width
paddingYes
page-break-after
page-break-before
page-break-inside
position
size
vertical-align
white-space
42multi-switchauto-restoreInteractive media formatting objects
multi-casestarting-state
case-name
case-title
multi-toggleswitch-to
multi-properties
multi-property-setactive-state

Unimplemented Aural Properties

xmlroff implements visual presentation, not aural presentation, so the aural properties are unimplemented by xmlroff.

  • azimuth

  • cue (C)

  • cue-after

  • cue-before

  • elevation

  • pause (C)

  • pause-after

  • pause-before

  • pitch

  • pitch-range

  • play-during

  • richness

  • speak

  • speak-header

  • speak-numeral

  • speak-punctuation

  • speech-rate

  • stress

  • voice-family

  • volume


DocBookLibxslt SourceForge