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
1root YesBasic pages containing blocks of text. No font property support.
layout-master-set Yes
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-body Yes
declarations Yes
page-sequenceformatYes
grouping-separatorYes
grouping-sizeYes
letter-valueYes
flowflow-nameYes
blockidYes
roleYes
source-documentYes
wrapper Yes
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-adjust Inline 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-item Yes
list-item-body Yes
7tableblock-progression-dimension Basic 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-header Yes
table-body Yes
table-rowheight 
table-cellnumber-rows-spannedYes
display-align 
relative-align 
8region-beforeclip More complex pages
extent 
overflow 
precedence 
reference-orientation 
region-nameYes
region-after  
region-start  
region-end  
9page-sequenceinitial-page-number Extended formatting required for realistic documents
static-content  
page-number  
page-number-citationref-id 
markermarker-class-name 
retrieve-markerretrieve-boundary 
retrieve-class-name 
retrieve-position 
10footnote  Footnotes
footnote-body  
11region-bodycolumn-count Multi-column regions
column-gap 
12leaderleader-length Leader
leader-pattern 
rule-style 
rule-thickness 
13external-graphiccontent-type External graphic
src 
14blockcountry Hyphenation 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-offset Not-all-that-basic basic linking
external-destination 
indicate-destination 
internal-destination 
show-destination 
target-presentation-context 
target-processing-context 
target-stylesheet 
16blockvisibility Z-index and visibility
z-index 
17page-sequenceforce-page-count More complex page sequences
page-sequence-master  
repeatable-page-master-reference  
simple-page-master-reference  
18repeatable-page-master-referencemaximum-repeats Extended page sequence control
repeatable-page-master-alternatives  
conditional-page-master-referenceblank-or-not-blank 
odd-or-even 
page-position 
19floatclear Floats
float 
20blocklast-line-end-indent Further 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-position Block container and absolute positioning
bottom 
left 
right 
span 
top 
22inline-container  Inline container
23initial-property-set  Set initial properties
24list-item-label  Fancy list item labels
25table-caption  Fancy table captions
table-and-captioncaption-side 
26instream-foreign-object  Foreign objects
27title  Document title
28color-profilecolor-profile-name Colour profiles
rendering-intent 
29blockbackground-attachment Extended background properties
background-image 
background-position 
background-position-horizontal 
background-position-vertical 
background-repeat 
30tabletable-omit-header-at-break Control of table header repetition
31tableborder-collapse Extended table properties
border-separation 
border-spacing 
32table-cellempty-cells Extended table cell properties
ends-row 
starts-row 
33tabletable-layout Choice of table layout algorithms
34table-footer  Table footers
tabletable-omit-footer-at-break 
35blockletter-spacing Text decoration and other extended properties
score-spaces 
text-altitude 
text-decoration 
text-depth 
text-shadow 
text-transform 
word-spacing 
charactertreat-as-word-space 
36blockfont Font shorthands and additional font properties
font-selection-strategy 
font-size-adjust 
37leaderleader-alignment Additional leader properties
leader-pattern-width 
38characterglyph-orientation-horizontal Glyph orientation
glyph-orientation-vertical 
39external-graphiccontent-height Additional external graphic properties
content-width 
scaling 
scaling-method 
40rootmedia-usage Media usage
41blockbackground Complete 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-restore Interactive 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


DocBook Libxslt SourceForge