W3C

Extensible Stylesheet Language (XSL)
Version 1.0

W3C Proposed Recommendation 28 August 2001

This version:
http://www.w3.org/TR/2001/PR-xsl-20010828/
( PDF by RenderX, XML file, HTML (one large file), ZIP file )
Latest version:
http://www.w3.org/TR/xsl/
Previous version:
http://www.w3.org/TR/2000/CR-xsl-20001121/
Authors and Contributors:
Sharon Adler (IBM) <sca@us.ibm.com>
Anders Berglund (IBM) <alrb@us.ibm.com>
Jeff Caruso (Pageflex) <jcaruso@pageflexinc.com>
Stephen Deach (Adobe) <sdeach@adobe.com>
Paul Grosso (Arbortext) <paul@arbortext.com>
Eduardo Gutentag (Sun) <eduardo.gutentag@eng.sun.com>
Alex Milowski <alex@milowski.com>
Scott Parnell (Xerox) <Scott.Parnell@usa.xerox.com>
Jeremy Richman <JeremyRichman@compuserve.com>
Steve Zilles (Adobe) <szilles@adobe.com>

Abstract

This specification defines the features and syntax for the Extensible Stylesheet Language (XSL), a language for expressing stylesheets. It consists of two parts:

  1. a language for transforming XML documents, and

  2. an XML vocabulary for specifying formatting semantics.

An XSL stylesheet specifies the presentation of a class of XML documents by describing how an instance of the class is transformed into an XML document that uses the formatting vocabulary.

Status of this document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this series of documents is maintained at the W3C.

This document is a W3C Proposed Recommendation. This means that the specification is stable and that implementation experience has been gathered showing that the features of the specification can be implemented.

On 28 August 2001, this document enters a Proposed Recommendation review period. From that date until 25 September 2001, W3C Advisory Committee representatives are encouraged to review this specification and return comments to w3t-xsl-review@w3.org.

After the review, the Director will announce the document's disposition: it may become a W3C Recommendation (possibly with minor changes), or it may revert to Working Draft status. This announcement should not be expected sooner than 14 days after the end of the review.

Publication as a Proposed Recommendation does not imply endorsement by the W3C membership. This is still a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite W3C Proposed Recommendations as other than "work in progress". A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/.

This document has been produced as part of the W3C Style Activity by the XSL Working Group (members only).

Please report errors in this document to xsl-editors@w3.org before the end of the PR review period. Archives of the comments are available. More general public discussion of XSL takes place on the XSL-List mailing list.

Table of contents

1 Introduction and Overview
    1.1 Processing a Stylesheet
        1.1.1 Tree Transformations
        1.1.2 Formatting
    1.2 Benefits of XSL
        1.2.1 Paging and Scrolling
        1.2.2 Selectors and Tree Construction
        1.2.3 An Extended Page Layout Model
        1.2.4 A Comprehensive Area Model
        1.2.5 Internationalization and Writing-Modes
        1.2.6 Linking
2 XSL Transformation
    2.1 Tree Construction
    2.2 XSL Namespace
3 Introduction to Formatting
    3.1 Conceptual Procedure
4 Area Model
    4.1 Introduction
    4.2 Rectangular Areas
        4.2.1 Area Types
        4.2.2 Common Traits
        4.2.3 Geometric Definitions
        4.2.4 Tree Ordering
        4.2.5 Stacking Constraints
        4.2.6 Font Baseline Tables
    4.3 Spaces and Conditionality
        4.3.1 Space-resolution Rules
        4.3.2 Overconstrained space-specifiers
    4.4 Block-areas
        4.4.1 Stacked Block-areas
        4.4.2 Intrusion Adjustments
    4.5 Line-areas
    4.6 Inline-areas
        4.6.1 Stacked Inline-areas
        4.6.2 Glyph-areas
    4.7 Ordering Constraints
        4.7.1 General Ordering Constraints
        4.7.2 Line-building
        4.7.3 Inline-building
    4.8 Keeps and Breaks
    4.9 Rendering Model
        4.9.1 Geometry
        4.9.2 Viewport Geometry
        4.9.3 Visibility
        4.9.4 Border, Padding, and Background
        4.9.5 Intrinsic Marks
        4.9.6 Layering and Conflict of Marks
    4.10 Sample Area Tree
5 Property Refinement / Resolution
    5.1 Specified, Computed, and Actual Values, and Inheritance
        5.1.1 Specified Values
        5.1.2 Computed Values
        5.1.3 Actual Values
        5.1.4 Inheritance
    5.2 Shorthand Expansion
    5.3 Computing the Values of Corresponding Properties
        5.3.1 Border and Padding Properties
        5.3.2 Margin, Space, and Indent Properties
        5.3.3 Height, and Width Properties
        5.3.4 Overconstrained Geometry
    5.4 Simple Property to Trait Mapping
        5.4.1 Background-position-horizontal and background-position-vertical Properties
        5.4.2 Column-number Property
        5.4.3 Text-align Property
        5.4.4 Text-align-last Property
        5.4.5 z-index Property
    5.5 Complex Property to Trait Mapping
        5.5.1 Word spacing and Letter spacing Properties
        5.5.2 Reference-orientation Property
        5.5.3 Writing-mode and Direction Properties
        5.5.4 Absolute-position Property
        5.5.5 Relative-position Property
        5.5.6 Text-decoration Property
        5.5.7 Font Properties
    5.6 Non-property Based Trait Generation
    5.7 Property Based Transformations
        5.7.1 Text-transform Property
    5.8 Unicode BIDI Processing
    5.9 Expressions
        5.9.1 Property Context
        5.9.2 Evaluation Order
        5.9.3 Basics
        5.9.4 Function Calls
        5.9.5 Numerics
        5.9.6 Absolute Numerics
        5.9.7 Relative Numerics
        5.9.8 Strings
        5.9.9 Colors
        5.9.10 Keywords
        5.9.11 Lexical Structure
        5.9.12 Expression Value Conversions
        5.9.13 Definitions of Units of Measure
    5.10 Core Function Library
        5.10.1 Number Functions
        5.10.2 Color Functions
        5.10.3 Font Functions
        5.10.4 Property Value Functions
    5.11 Property Datatypes
6 Formatting Objects
    6.1 Introduction to Formatting Objects
        6.1.1 Definitions Common to Many Formatting Objects
    6.2 Formatting Object Content
    6.3 Formatting Objects Summary
    6.4 Declarations and Pagination and Layout Formatting Objects
        6.4.1 Introduction
        6.4.2 fo:root
        6.4.3 fo:declarations
        6.4.4 fo:color-profile
        6.4.5 fo:page-sequence
        6.4.6 fo:layout-master-set
        6.4.7 fo:page-sequence-master
        6.4.8 fo:single-page-master-reference
        6.4.9 fo:repeatable-page-master-reference
        6.4.10 fo:repeatable-page-master-alternatives
        6.4.11 fo:conditional-page-master-reference
        6.4.12 fo:simple-page-master
        6.4.13 fo:region-body
        6.4.14 fo:region-before
        6.4.15 fo:region-after
        6.4.16 fo:region-start
        6.4.17 fo:region-end
        6.4.18 fo:flow
        6.4.19 fo:static-content
        6.4.20 fo:title
    6.5 Block-level Formatting Objects
        6.5.1 Introduction
        6.5.2 fo:block
        6.5.3 fo:block-container
    6.6 Inline-level Formatting Objects
        6.6.1 Introduction
        6.6.2 fo:bidi-override
        6.6.3 fo:character
        6.6.4 fo:initial-property-set
        6.6.5 fo:external-graphic
        6.6.6 fo:instream-foreign-object
        6.6.7 fo:inline
        6.6.8 fo:inline-container
        6.6.9 fo:leader
        6.6.10 fo:page-number
        6.6.11 fo:page-number-citation
    6.7 Formatting Objects for Tables
        6.7.1 Introduction
        6.7.2 fo:table-and-caption
        6.7.3 fo:table
        6.7.4 fo:table-column
        6.7.5 fo:table-caption
        6.7.6 fo:table-header
        6.7.7 fo:table-footer
        6.7.8 fo:table-body
        6.7.9 fo:table-row
        6.7.10 fo:table-cell
    6.8 Formatting Objects for Lists
        6.8.1 Introduction
        6.8.2 fo:list-block
        6.8.3 fo:list-item
        6.8.4 fo:list-item-body
        6.8.5 fo:list-item-label
    6.9 Dynamic Effects: Link and Multi Formatting Objects
        6.9.1 Introduction
        6.9.2 fo:basic-link
        6.9.3 fo:multi-switch
        6.9.4 fo:multi-case
        6.9.5 fo:multi-toggle
        6.9.6 fo:multi-properties
        6.9.7 fo:multi-property-set
    6.10 Out-of-Line Formatting Objects
        6.10.1 Introduction
        6.10.2 fo:float
        6.10.3 fo:footnote
        6.10.4 fo:footnote-body
    6.11 Other Formatting Objects
        6.11.1 Introduction
        6.11.2 fo:wrapper
        6.11.3 fo:marker
        6.11.4 fo:retrieve-marker
7 Formatting Properties
    7.1 Description of Property Groups
    7.2 XSL Areas and the CSS Box Model
    7.3 Reference Rectangle for Percentage Computations
    7.4 Common Accessibility Properties
        7.4.1 source-document
        7.4.2 role
    7.5 Common Absolute Position Properties
        7.5.1 absolute-position
        7.5.2 top
        7.5.3 right
        7.5.4 bottom
        7.5.5 left
    7.6 Common Aural Properties
        7.6.1 azimuth
        7.6.2 cue-after
        7.6.3 cue-before
        7.6.4 elevation
        7.6.5 pause-after
        7.6.6 pause-before
        7.6.7 pitch
        7.6.8 pitch-range
        7.6.9 play-during
        7.6.10 richness
        7.6.11 speak
        7.6.12 speak-header
        7.6.13 speak-numeral
        7.6.14 speak-punctuation
        7.6.15 speech-rate
        7.6.16 stress
        7.6.17 voice-family
        7.6.18 volume
    7.7 Common Border, Padding, and Background Properties
        7.7.1 background-attachment
        7.7.2 background-color
        7.7.3 background-image
        7.7.4 background-repeat
        7.7.5 background-position-horizontal
        7.7.6 background-position-vertical
        7.7.7 border-before-color
        7.7.8 border-before-style
        7.7.9 border-before-width
        7.7.10 border-after-color
        7.7.11 border-after-style
        7.7.12 border-after-width
        7.7.13 border-start-color
        7.7.14 border-start-style
        7.7.15 border-start-width
        7.7.16 border-end-color
        7.7.17 border-end-style
        7.7.18 border-end-width
        7.7.19 border-top-color
        7.7.20 border-top-style
        7.7.21 border-top-width
        7.7.22 border-bottom-color
        7.7.23 border-bottom-style
        7.7.24 border-bottom-width
        7.7.25 border-left-color
        7.7.26 border-left-style
        7.7.27 border-left-width
        7.7.28 border-right-color
        7.7.29 border-right-style
        7.7.30 border-right-width
        7.7.31 padding-before
        7.7.32 padding-after
        7.7.33 padding-start
        7.7.34 padding-end
        7.7.35 padding-top
        7.7.36 padding-bottom
        7.7.37 padding-left
        7.7.38 padding-right
    7.8 Common Font Properties
        7.8.1 Fonts and Font Data
        7.8.2 font-family
        7.8.3 font-selection-strategy
        7.8.4 font-size
        7.8.5 font-stretch
        7.8.6 font-size-adjust
        7.8.7 font-style
        7.8.8 font-variant
        7.8.9 font-weight
    7.9 Common Hyphenation Properties
        7.9.1 country
        7.9.2 language
        7.9.3 script
        7.9.4 hyphenate
        7.9.5 hyphenation-character
        7.9.6 hyphenation-push-character-count
        7.9.7 hyphenation-remain-character-count
    7.10 Common Margin Properties-Block
        7.10.1 margin-top
        7.10.2 margin-bottom
        7.10.3 margin-left
        7.10.4 margin-right
        7.10.5 space-before
        7.10.6 space-after
        7.10.7 start-indent
        7.10.8 end-indent
    7.11 Common Margin Properties-Inline
        7.11.1 space-end
        7.11.2 space-start
    7.12 Common Relative Position Properties
        7.12.1 relative-position
    7.13 Area Alignment Properties
        7.13.1 alignment-adjust
        7.13.2 alignment-baseline
        7.13.3 baseline-shift
        7.13.4 display-align
        7.13.5 dominant-baseline
        7.13.6 relative-align
    7.14 Area Dimension Properties
        7.14.1 block-progression-dimension
        7.14.2 content-height
        7.14.3 content-width
        7.14.4 height
        7.14.5 inline-progression-dimension
        7.14.6 max-height
        7.14.7 max-width
        7.14.8 min-height
        7.14.9 min-width
        7.14.10 scaling
        7.14.11 scaling-method
        7.14.12 width
    7.15 Block and Line-related Properties
        7.15.1 hyphenation-keep
        7.15.2 hyphenation-ladder-count
        7.15.3 last-line-end-indent
        7.15.4 line-height
        7.15.5 line-height-shift-adjustment
        7.15.6 line-stacking-strategy
        7.15.7 linefeed-treatment
        7.15.8 white-space-treatment
        7.15.9 text-align
        7.15.10 text-align-last
        7.15.11 text-indent
        7.15.12 white-space-collapse
        7.15.13 wrap-option
    7.16 Character Properties
        7.16.1 character
        7.16.2 letter-spacing
        7.16.3 suppress-at-line-break
        7.16.4 text-decoration
        7.16.5 text-shadow
        7.16.6 text-transform
        7.16.7 treat-as-word-space
        7.16.8 word-spacing
    7.17 Color-related Properties
        7.17.1 color
        7.17.2 color-profile-name
        7.17.3 rendering-intent
    7.18 Float-related Properties
        7.18.1 clear
        7.18.2 float
        7.18.3 intrusion-displace
    7.19 Keeps and Breaks Properties
        7.19.1 break-after
        7.19.2 break-before
        7.19.3 keep-together
        7.19.4 keep-with-next
        7.19.5 keep-with-previous
        7.19.6 orphans
        7.19.7 widows
    7.20 Layout-related Properties
        7.20.1 clip
        7.20.2 overflow
        7.20.3 reference-orientation
        7.20.4 span
    7.21 Leader and Rule Properties
        7.21.1 leader-alignment
        7.21.2 leader-pattern
        7.21.3 leader-pattern-width
        7.21.4 leader-length
        7.21.5 rule-style
        7.21.6 rule-thickness
    7.22 Properties for Dynamic Effects Formatting Objects
        7.22.1 active-state
        7.22.2 auto-restore
        7.22.3 case-name
        7.22.4 case-title
        7.22.5 destination-placement-offset
        7.22.6 external-destination
        7.22.7 indicate-destination
        7.22.8 internal-destination
        7.22.9 show-destination
        7.22.10 starting-state
        7.22.11 switch-to
        7.22.12 target-presentation-context
        7.22.13 target-processing-context
        7.22.14 target-stylesheet
    7.23 Properties for Markers
        7.23.1 marker-class-name
        7.23.2 retrieve-class-name
        7.23.3 retrieve-position
        7.23.4 retrieve-boundary
    7.24 Properties for Number to String Conversion
        7.24.1 format
        7.24.2 grouping-separator
        7.24.3 grouping-size
        7.24.4 letter-value
    7.25 Pagination and Layout Properties
        7.25.1 blank-or-not-blank
        7.25.2 column-count
        7.25.3 column-gap
        7.25.4 extent
        7.25.5 flow-name
        7.25.6 force-page-count
        7.25.7 initial-page-number
        7.25.8 master-name
        7.25.9 master-reference
        7.25.10 maximum-repeats
        7.25.11 media-usage
        7.25.12 odd-or-even
        7.25.13 page-height
        7.25.14 page-position
        7.25.15 page-width
        7.25.16 precedence
        7.25.17 region-name
    7.26 Table Properties
        7.26.1 border-after-precedence
        7.26.2 border-before-precedence
        7.26.3 border-collapse
        7.26.4 border-end-precedence
        7.26.5 border-separation
        7.26.6 border-start-precedence
        7.26.7 caption-side
        7.26.8 column-number
        7.26.9 column-width
        7.26.10 empty-cells
        7.26.11 ends-row
        7.26.12 number-columns-repeated
        7.26.13 number-columns-spanned
        7.26.14 number-rows-spanned
        7.26.15 starts-row
        7.26.16 table-layout
        7.26.17 table-omit-footer-at-break
        7.26.18 table-omit-header-at-break
    7.27 Writing-mode-related Properties
        7.27.1 direction
        7.27.2 glyph-orientation-horizontal
        7.27.3 glyph-orientation-vertical
        7.27.4 text-altitude
        7.27.5 text-depth
        7.27.6 unicode-bidi
        7.27.7 writing-mode
    7.28 Miscellaneous Properties
        7.28.1 content-type
        7.28.2 id
        7.28.3 provisional-label-separation
        7.28.4 provisional-distance-between-starts
        7.28.5 ref-id
        7.28.6 score-spaces
        7.28.7 src
        7.28.8 visibility
        7.28.9 z-index
    7.29 Shorthand Properties
        7.29.1 background
        7.29.2 background-position
        7.29.3 border
        7.29.4 border-bottom
        7.29.5 border-color
        7.29.6 border-left
        7.29.7 border-right
        7.29.8 border-style
        7.29.9 border-spacing
        7.29.10 border-top
        7.29.11 border-width
        7.29.12 cue
        7.29.13 font
        7.29.14 margin
        7.29.15 padding
        7.29.16 page-break-after
        7.29.17 page-break-before
        7.29.18 page-break-inside
        7.29.19 pause
        7.29.20 position
        7.29.21 size
        7.29.22 vertical-align
        7.29.23 white-space
        7.29.24 xml:lang
8 Conformance

Appendices

A Internationalization
    A.1 Additional writing-mode values
B Formatting Object Summary
    B.1 Declaration and Pagination and Layout Formatting Objects
    B.2 Block Formatting Objects
    B.3 Inline Formatting Objects
    B.4 Table Formatting Objects
    B.5 List Formatting Objects
    B.6 Link and Multi Formatting Objects
    B.7 Out-of-line Formatting Objects
    B.8 Other Formatting Objects
C Property Summary
    C.1 Explanation of Trait Mapping Values
    C.2 Property Table: Part I
    C.3 Property Table: Part II
D References
    D.1 Normative References
    D.2 Other References
E Property Index
F Changes since the Candidate Recommendation (Non-Normative)
G Acknowledgements (Non-Normative)