The XSL Specification went into the Candidate Recommendation period at the end of November 2000. The original planned date for exiting CR was 28 February 2000; however, the work as described below continued to date.
During the CR period, the Working Group continued to be active. Among the topics we handled during this period were:
The WG established the following exit criteria in the Request for CR (members only)
All exit criteria were met during the period from December 2000 until July 2001. Test cases were gathered from the XSL WG (two Integration tests), several of the implementors, (IBM, Antenna House, RenderX, and FOP), and the US National Institute of Standards and Technology who converted 615 CSS tests to XSL and wrote an additional several hundreds, hereafter called "unit tests" (see Coverage Report in Appendix A).
Test results were provided in PDF by the implementors: Antenna House, Arbortext, FOP, IBM, PassiveTeX, and RenderX. A manual visual inspection was performed reviewing both the unit tests and the integration tests. In addition, most implementors submitted a Report on their results and interpretation of the test results. A summary of their results is as follows (reproduced as of 2001 July 17 from the Test Result Files table of the full results report):
| Profile | File | Test Results | |||||
|---|---|---|---|---|---|---|---|
| Full | Future | Differ | Test | Spec | Total | ||
| Test Results From Anonymous Implementation #1 | 1/testresults.xml [HTML] | 199 | 194 | 0 | 19 | 0 | 412 |
| Test Results for XEP (version 2.21) | 2/testresults.xml [HTML] | 547 | 1 | 67 | 2 | 0 | 617 |
| Test Results from Arbortext | 3/testresults.xml [HTML] | 2 | 0 | 0 | 0 | 0 | 2 |
| Test Results for XSL Formatter v1.2 alpha (Antenna House) | 4/testresults.xml [HTML] | 755 | 4 | 30 | 105 | 0 | 894 |
| Test Results From PassiveTeX | 5/testresults.xml [HTML] | 0 | 0 | 2 | 0 | 0 | 2 |
| Test Results from FOP (v0.19) | 6/testresults.xml [HTML] | 269 | 1 | 349 | 0 | 0 | 619 |
| Total | 1772 | 200 | 448 | 126 | 0 | 2546 | |
In the above table, the meanings of the columns are as follows: "full" means complete agreement with the test and expected results; "future" means support is expected in an upcoming release; "differ" means the current support does not produce the correct results at this time, but there was no disagreement with what the correct result should have been; "test" means the implementor felt there was some problem with the test case itself or disagreed with the suggested correct result (in all these cases, the correct result was determined by examining the spec and the tests were corrected); "spec" means there was an ambiguity in the spec that allowed for incorrect or multiple interpretations for this test case. See also XSL CR Test Suite -- Test Coverage Page for the complete set of CR test results.
Of all the tests performed, only 2 items were identified as requiring clarification or modification of the text of the specification, and these two changes were made. The Integration Tests are detailed in Appendix B: Integration test analysis and include the PDF of the results from all implementations.
All comments were accepted by commentators; there were no minority opinions generated.
Appendix C shows a table summarising implementation status of each Formatting Object. As far as we are aware, all FOs belonging to the 'basic' conformance level have been implemented, as well as most 'extended' FOs, except:
Other mechanisms not reflected in particular FOs and not implemented to our knowledge are
The XSL WG believes, based on implementation experience and test results, that XSL is ready to be forwarded to PR. The results were basically as expected; fallback specified on all FOs and properties was demonstrated to be very successful in that the results made it clear when a particular FO or property was not implemented in one or more of the implementations. The integration tests demonstrated clearly how fallback worked. The reports indicate that many of the implementors expect to continue implementing much of the functionality that was not able to be implemented in the CR time-frame. The WG expects these tests to form the basis for conformance testing once the specification becomes a Recommendation.
Below is a summary of the coverage level of tests supplied by the vendors. This does not include the NIST test suite. For complete details see also XSL CR Test Suite -- Test Coverage Page for the complete list of tests and results.
FOP coverage info
=====================
Formatting object and number of tests:
-------------------------------------
external-graphic 2
static-content 31
table-footer 2
page-sequence-master 16
repeatable-page-master-reference 5
page-sequence 43
conditional-page-master-reference 11
list-item-label 6
page-number 22
table-cell 12
list-block 6
repeatable-page-master-alternatives 11
block-container 1
region-body 43
basic-link 5
page-number-citation 2
inline 18
instream-foreign-object 2
layout-master-set 43
flow 43
simple-page-master 43
leader 6
list-item-body 6
list-item 6
table-row 12
block 43
table-body 12
region-after 39
single-page-master-reference 4
character 1
root 43
table-header 2
table-column 12
table 12
region-before 38
Property and number of tests:
----------------------------
keep-together.within-page 1
language 2
width 3
border-after-width 1
font-size 41
hyphenation-remain-character-count 1
line-height 40
margin-left 43
widows 1
hyphenation-push-character-count 1
src 2
ref-id 2
border-bottom-color 2
space-after.optimum 40
space-before.optimum 34
padding-after 1
border-right-width 4
margin-right 43
break-after 4
keep-with-next 3
padding-top 20
top 1
margin-bottom 43
border-before-width 1
border-left-width 3
padding-start.length 1
padding-end 1
extent 39
external-destination 5
text-align 41
white-space-collapse 2
odd-or-even 3
rule-thickness 6
flow-name 43
maximum-repeats 5
country 1
background-color 25
font-style 13
page-height 40
margin-top 43
column-gap 6
border-style 7
leader-length 5
font-variant 1
keep-with-next.within-page 1
color 25
keep-together 1
border-after-color 1
character 1
end-indent 8
number-columns-spanned 1
span 6
height 3
position 1
border-right-color 1
vertical-align 2
border-width 13
border-left-color 1
border-before-color 1
border-top-width 2
text-align-last 1
table-omit-footer-at-break 1
left 1
orphans 1
leader-alignment 1
hyphenate 2
column-width 12
master-name 43
padding-right 2
padding-left 2
space-before 2
space-before.minimum 2
initial-page-number 8
column-count 7
text-decoration 2
space-before.maximum 2
start-indent 12
keep-with-previous 1
space-after 2
wrap-option 2
id 3
provisional-label-separation 2
border-bottom-width 2
border-end-width 1
border-start-width 1
page-width 40
break-before 12
table-omit-header-at-break 1
padding-end.length 1
internal-destination 2
padding-bottom 1
padding 1
border-color 12
border-top-color 2
padding-before 1
font-weight 11
leader-pattern 6
leader-pattern-width 1
page-position 10
rule-style 1
provisional-distance-between-starts 5
number-rows-spanned 1
font-family 35
RenderX coverage info
=====================
A. Pagination:
A.1. Basic test for named regions.
Objects:
- fo:simple-page-master and its descendants;
- fo:static-content and fo:flow
Properties:
- region-name, flow-name
A.2. Page sequence masters and named regions.
Objects:
- fo:simple-page-master and its descendants;
- fo:page-sequence-master and its descendants;
- fo:static-content and fo:flow
Properties:
- region-name, flow-name;
- page-position, odd-or-even;
- reference-orientation on side regions;
- display-align on side regions
A.3. Maximum-repeats property
Objects:
- fo:repeatable-page-master-reference;
- fo:repeatable-page-master-alternatives
Properties:
- maximum-repeats
A.4. Force-page-count property and page number formatting
Objects:
- fo:page-sequence;
- fo:conditional-page-master-reference;
- fo:page-number;
Properties:
- force-page-count;
- blank-or-not-blank;
- initial-page-number;
- format
B. Page layout:
B.1. Multi-column layout.
Objects:
- fo:region-body;
- fo:static-content (for footnote separators)
- fo:footnote/fo:footnote-body
Properties:
- column-count;
- column-gap;
- flow-name (value of "xsl-footnote-separator")
- reference-orientation
B.2. Regions.
Objects:
- fo:simple-page-master;
- fo:region-*;
Properties:
- reference-orientation;
- display-align;
- precedence;
- background-related properties
B.3. Span.
Objects:
- fo:block;
Properties:
- span;
B.4. Footnotes.
Objects:
- fo:footnote/fo:footnote-body
Properties: none
B.5. Top floats.
Objects:
- fo:float
Properties:
- float
C. Block-level formatting:
C.1. Text alignment
Objects:
- fo:block
Properties:
- text-align;
- text-align-last
C.2. Text indents
Objects:
- fo:block
Properties:
- text-align;
- text-align-last;
- text-indent;
- last-line-end-indent;
- start-indent;
- end-indent
C.3. Borders and Background
Objects:
- fo:block
Properties:
- background-color;
- border-{side}-{trait} family;
- border-style;
- border-width;
- border-color
C.4. Padding
Objects:
- fo:block
Properties:
- padding-{side};
- padding;
C.5. Background image
Objects:
- fo:block
Properties:
- background-color;
- background-image;
- background-position-horizontal;
- background-position-vertical;
- background-position;
- background-repeat
C.6. Background image - shorthand notation
Objects:
- fo:block
Properties:
- background
C.7. First-line formatting
Objects:
- fo:initial-property-set
Properties: none
C.8. Line height
Objects:
- fo:block
Properties:
- line-height
C.9. Line stacking strategy
Objects:
- fo:block
Properties:
- line-stacking-strategy;
- line-height;
- line-height-shift-adjustment
C.10. Keeps - block-level.
Objects:
- fo:block
Properties:
- keep-together.within-page
D. Inline-level formatting - font and character properties
D.1. Font family
Objects:
- fo:wrapper
Properties:
- font-family
D.2. Font weight
Objects:
- fo:wrapper
Properties:
- font-weight
D.3. Font slant
Objects:
- fo:wrapper
Properties:
- font-style
D.4. Font stretch
Objects:
- fo:wrapper
Properties:
- font-stretch
D.5. Smallcaps
Objects:
- fo:wrapper
Properties:
- font-variant
D.6. Capitalization
Objects:
- fo:wrapper
Properties:
- text-transform
D.7. Text decoration
Objects:
- fo:inline
Properties:
- text-decoration
D.8. Shadowed text
Objects:
- fo:wrapper
Properties:
- text-shadow
D.9. Font size
Objects:
- fo:wrapper
Properties:
- font-size
D.10. Font aspect ratio adjustment
Objects:
- fo:wrapper
Properties:
- font-size-adjust
D.11. Font shorthand
Objects:
- fo:wrapper
Properties:
- font
D.12. Letter and word spacing
Objects:
- fo:wrapper
Properties:
- letter-spacing
- word-spacing
E. Inline-level formatting - inline areas
E.1. Borders around inlines
Objects:
- fo:inline
Properties:
- Border, Padding, and Background properties
E.2. Baseline shift
Objects:
- fo:inline
Properties:
- Border, Padding, and Background properties
- baseline-shift
E.3. Vertical alignment properties for inlines
Objects:
- fo:inline
Properties:
- alignment-baseline
- alignment-adjust
- baseline-shift
E.4. Keeps - inline-level.
Objects:
- fo:inline
Properties:
- keep-together.within-line
F. Tables
F.1. Basic table
Objects:
- fo:table;
- fo:table-column;
- fo:table-body;
- fo:table-row;
- fo:table-cell;
Properties:
- starts-row;
- ends-row;
F.2. Column specifiers
Objects:
- fo:table-column;
Properties:
- number-columns-repeated;
- number-columns-spanned;
- column-number;
F.3. Table headers and footers
Objects:
- fo:table-body;
- fo:table-header;
- fo:table-footer;
Properties: none
F.4. Spanned cells
Objects:
- fo:table-cell;
Properties:
- number-columns-repeated;
- number-columns-spanned;
- number-rows-spanned;
- column-number;
F.5. Long table:
Objects:
- fo:table-header;
- fo:table-footer;
Properties:
- table-omit-header-at-break
- table-omit-footer-at-break
F.6. Comprehensive table test, nested tables
Objects:
- all table-related objects
Properties:
- display-align on table cells.
G. Miscellaneous objects
G.1. Lists
Objects:
- fo:list-block
- fo:list-item
- fo:list-item-label
- fo:list-item-body
Properties:
- provisional-label-separation;
- provisional-distance-between-starts;
Functions:
- body-start();
- label-end();
G.2. Leaders
Objects:
- fo:leader
Properties:
- leader-pattern;
- leader-length;
- rule-style;
- rule-thickness;
G.3. Markers
Objects:
- fo:marker
- fo:retrieve-marker
Properties:
- marker-class-name;
- retrieve-class-name;
- retrieve-position
G.4. Graphics
Objects:
- fo:external-graphic
Properties:
- src;
- content-width;
- content-height;
- scaling
H. Unicode Support
H.1. Adobe standard charset
Tests Unicode values of all characters from the Adobe Roman-Extended charset.
H.2. Symbol
Tests Unicode values of all characters from the Adobe Symbol font (Greek
letters
and mathematical operators).
H.3. ZapfDingbats
Tests Unicode values of characters from ZapfDingbats font.
Total: 45 tests
See also http://www.renderx.com/testcases.html
for the web page of RenderX tests in a nice organization.
IBM
===
Formatting objects:
------------------
single-page-master-reference, repeatable-page-master-reference,
repeatable-page-master-alternatives, conditional-page-master-reference,
simple-page-master, region-body, region-before, region-after, region-start,
region-end, block, block-container, character, external-graphic, inline,
inline-container, leader, page-number, multi-switch, multi-case, multi-toggle,
multi-properties, multi-property-set
Properties:
-----------
absolute-position, top,
right, bottom, left, background-attachment, background-color, background-image,
background-repeat, , background-position-vertical, border-before-color,
border-before-style, border-before-width, border-start-width, border-end-color,
border-end-style, border-end-width, border-top-color, border-right-width,
padding-before, padding-after, padding-start, padding-end,
margin-right, space-before, space-after, line-height, line-stacking-strategy,
linefeed-treatment, space-treatment, text-align, white-space-collapse,
character, leader-pattern, leader-pattern-width, leader-length, rule-style,
rule-thickness, extent, flow-name, master-name, maximum-repeats, precedence,
region-name, writing-mode, auto-restore, starting-state, case-name, case-title,
switch-to, active-state
Antenna House
=============
- 2 on fo:root
- 15 on page layout/page master reference combinations
- 12 on page dimensions, margins, and regions, etc.
- 2 on fo:block with lots of properties
- 2 on fo:block-container including various writing directions
- 3 on fo:inline or fo:inline-container including various writing directions
- 1 on fo:bidi-override
- 4 on fo:leader
- 11 on tables
- 6 on lists
The following summary tabulates results received as of 2001 July 12. It should be noted that results were requested and received for test 1 in March, and many implementations have been improved since then. Where the XSL WG is aware of it, due to subsequent test results or email discussions, we have attempted to indicate "now fixed" next to problems that have been resolved in the vendor's most recent code. The accompanying PDFs may be from an older version and may not reflect these latest fixes.
Copies of the output of these integration tests are expected to be attached as hard copy. In the following summaries, the links from the company name for each test link to the PDF available on the test site.
Integration test 1 consists of an approximately 8 page one-column document. The following basic formatting structures are included:
In general, the results show a high degree of interoperability in all areas. Exceptions are noted below.
Integration test 2 consists of an approximately 12 page two-column document. This test case includes some extended XSL FO features that are not necessarily part of the basic level of conformance.
The following formatting structures are included:
In general, the results show a high degree of interoperability in most areas with exceptions as noted below.
| Formatting Object | Conformance Level | Implemented | Notes |
6.4.2 fo:root |
basic | Yes | |
| 6.4.3 fo:declarations | basic | Yes | |
| 6.4.4 fo:color-profile | extended | No | Fallback not implemented |
| 6.4.5 fo:page-sequence | basic | Yes | |
| 6.4.6 fo:layout-master-set | basic | Yes | |
| 6.4.7 fo:page-sequence-master | basic | Yes | |
| 6.4.8 fo:single-page-master-reference | basic | Yes | |
| 6.4.9 fo:repeatable-page-master-reference | basic | Yes | |
| 6.4.10 fo:repeatable-page-master-alternatives | extended | Yes | |
| 6.4.11 fo:conditional-page-master-reference | extended | Yes | |
| 6.4.12 fo:simple-page-master | basic | Yes | |
| 6.4.13 fo:region-body | basic | Yes | |
| 6.4.14 fo:region-before | extended | Yes | |
| 6.4.15 fo:region-after | extended | Yes | |
| 6.4.16 fo:region-start | extended | Yes | |
| 6.4.17 fo:region-end | extended | Yes | |
| 6.4.18 fo:flow | basic | Yes | |
| 6.4.19 fo:static-content | extended | Yes | |
| 6.4.20 fo:title | extended | Yes | |
| 6.5.2 fo:block | basic | Yes | |
| 6.5.3 fo:block-container | extended | Yes | |
| 6.6.2 fo:bidi-override | extended | Yes | |
| 6.6.3 fo:character | basic | Yes | |
| 6.6.4 fo:initial-property-set | extended | Yes | |
| 6.6.5 fo:external-graphic | basic | Yes | |
| 6.6.6 fo:instream-foreign-object | extended | Yes | |
| 6.6.7 fo:inline | basic | Yes | |
| 6.6.8 fo:inline-container | extended | Yes | |
| 6.6.9 fo:leader | basic | Yes | |
| 6.6.10 fo:page-number | basic | Yes | |
| 6.6.11 fo:page-number-citation | extended | Yes | |
| 6.7.2 fo:table-and-caption | basic | Yes | |
| 6.7.3 fo:table | basic | Yes | |
| 6.7.4 fo:table-column | basic | Yes | |
| 6.7.5 fo:table-caption | extended | Yes | |
| 6.7.6 fo:table-header | basic | Yes | |
| 6.7.7 fo:table-footer | extended | Yes | |
| 6.7.8 fo:table-body | basic | Yes | |
| 6.7.9 fo:table-row | basic | Yes | |
| 6.7.10 fo:table-cell | basic | Yes | |
| 6.8.2 fo:list-block | basic | Yes | |
| 6.8.3 fo:list-item | basic | Yes | |
| 6.8.4 fo:list-item-body | basic | Yes | |
| 6.8.5 fo:list-item-label | extended | Yes | |
| 6.9.2 fo:basic-link | extended | Yes | |
| 6.9.3 fo:multi-switch | extended | Yes | |
| 6.9.4 fo:multi-case | basic | Yes | |
| 6.9.5 fo:multi-toggle | extended | Yes | |
| 6.9.6 fo:multi-properties | extended | Yes | |
| 6.9.7 fo:multi-property-set | extended | Yes | |
| 6.10.2 fo:float | extended | Yes | |
| 6.10.3 fo:footnote | extended | Yes | |
| 6.10.4 fo:footnote-body | extended | Yes | |
| 6.11.2 fo:wrapper | basic | Yes | |
| 6.11.3 fo:marker | extended | Yes | |
| 6.11.4 fo:retrieve-marker | extended | Yes |