
Extensible Stylesheet Language (XSL)
Specifications and Working Drafts - Learning XSL - Software - FAQ - History
XSL is a language for expressing stylesheets. It consists of two
parts:
- XSL Transformations (XSLT): a
language for transforming XML documents
- 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. For background information on style
sheets, see the Web style sheets resource page. XSL is
developed by the W3C XSL Working Group (members only)
whose charter is to develop the next
version of XSL.
News
- 001012 Sablotron is now available as an extension to PHP4. It claims to
be a very fast server-side XSLT processor for Win32.
- 001011 Xalan-C++ v1.0 XSLT processor
released.
- 001010 Chapter
15 of the XML Bible, XSL Formatting Objects, is available online.
- 001010 French translation of the XSLT1.0
Recommendation available. See also our translations page.
- 001010 Kevin Jones has set up an XSLT benchmark
page.
- 001010 The new release of Unicorn XSLT
Processor, Professional Edition version 1.02.16 is available (runs on
Windows NT 4.0).
- 001005 XPath 1.0
Errata list updated.
- 001005 The Mozilla XSLT project (aka
Transformiix) now has its own project page.
- 001004 PassiveTeX version 1.1
released.
- 000930 Microsoft release a September MSXML Beta. It claims
to be a "complete implementation" of XSLT and XPath.
- 000914 PassiveTeX version
1.0, 2000/09/14 released.
- 000914 New release of xslide: XSL mode for
emacs (Revision 0.2 Beta 1).
- 000825 XSL
Transformations Requirements Version 1.1 is posted on W3C site.
- 000724 Announcement of XSLTC, an XSLT compiler.
It takes as input an XSLT stylesheet, and generates C++ code that is
expected to have the same behaviour as the source stylesheet.
- 000703 The W3C XSL Working Group is
rechartered with a new
charter.
- 000630 Ginger Alliance announce release 0.4 of
Sablotron,
which is now available under MPL/GPL license.
- 000626 Sun Microsystems announce
a free XSLT compiler
- 000529 Sebastian Rahtz announces a new
release of PassiveTeX, an
implementation of the March 2000 draft.
- 000327 XSL enters Last Call with a new Working Draft
- 000323 LotusXSL
1.0.0 is available from alphaWorks
- 000321 Xalan-J 1.0.0 Gold
Release posted to xml.apache.org/dist
- 000315 MSXML
Parser V3.0 released
- 000301 New XSL working
draft published
- 000126 Microsoft releases XSL
to XSLT Converter 1.0. The xsl-xslt-converter.xslt style sheet updates
Microsoft Internet Explorer 5 XSL style sheets to XSLT-compliant style
sheets
- 000112 New XSL working
draft published
Older News.
The latest versions of the XSL specification are:
Some of them have been translated from English and are available in other languages.
XSL Frequently
Asked Questions maintained by Dave Pawson. Not a tutorial, but a very good
source for learning XSL.
XSL Concepts and
Practical Use by P. Grosso and N. Walsh was presented at the XML Europe
2000 Conference in Paris, France.
A short XSL tutorial is provided
by XML101.
XSLT
Programmer's Reference by Mike Kay is probably the first book dedicated to
XSLT and XPath.
Training material is available for sale from Crane Softwrights Ltd: Practical Transformation
Using XSLT and XPath. It covers the transformation part of XSL (XSLT),
including XPath.
Chapter
14 of the XML Bible
is dedicated to XSLT, Chapter 15
is dedicated to XSL-FO. Both are available online.
Miloslav Nic has provided code samples demonstrating basic and advanced
concepts in his online
resource. He has also published a complete XSLT
Reference.
A nice introduction to XSLT, the transformation part of XSL, can be found
in the Microsoft XSL
document.
A good way to learn is by example, so have a look at the XSL
Slidemaker from the Koala Group
at INRIA/Sophia, which takes an XML file of slides and processes them with
XSL.
Other XSL Resources include
XSLT Processors
- Unicorn XSLT
transformation engine, freely available for Windows.
- Sun's XSLT
Compiler creates a Java program that performs the transformation
instructions described by a XSLT file.
- XSLTC is an XSLT
compiler. It takes as input an XSLT stylesheet, and generates C++ code
that is expected to have the same behaviour as the source stylesheet.
- 4XSLT is an XML
transformation processor written in Python that implements the XSLT
transform language.
- The InDelv browser implements XSL
stylesheets, including the FO part for direct display. It also implements
XLink.
- XSL is integrated into the Microsoft XML processor which is part of Internet Explorer
5. It transforms XML into HTML, which is then displayed using CSS; it
does not implement FOs. See conformance
notes.
- iXSLT
from Infoteria is a
XSLT processor written in C++
- LotusXSL is a
complete implementation of the W3C Recommendations for XSL Transformations
(XSLT) and the XML Path Language (XPath)
- Transformiix is an
standalone XSLT processor in C++, and can also be used within Mozilla.
- Resin is a
servlet/JSP engine with integrated XPath and XSLT support.
- Sablotron
is an attempt to develop a fast, compact and portable XSLT processor
written in C++
- Sablot XSLT is an
extension of Sablotron for PHP4/Win
32.
- Saxon is a
collection of tools for processing XML documents. It includes a complete
implementation of the XSLT 1.0 and XPath 1.0 Recommendations, as well as a
Jave library.
- Xalan-Java and
Xalan-C++ are a
implementations of the W3C recommendations XSLT and XPath. They are
provided by the Apache XML
Project.
- The XML Parser for Java
v2 from Oracle incorporates support for XSL Transformations
(XSLT)
- XMLwriter is an XML editor
that supports XSL, so you can transform the content and style of your XML
documents.
- XT from James Clark is a
free Java-based implementation of XSLT.
XSL-FO processors
- Unicorn Formatting
Objects (UFO) is freely available and runs on Windows NT 4.0 and Windows
95. It implements the substantial subset of the Extensible Stylesheet
Language (XSL) Version 1.0 specification (W3C Working Draft 27 March
2000)
- FOP is a XSL FO to PDF
converter developed by James Tauber at the Apache Software FoundationXE
- Passive TeX is a
library of TeX macros which provides a rapid development environment for
experimenting with XSL FO.
- REXP is an early
implementation of a Formatting Objects engine based on FOP. It generates
PDF files. It's an open source.
- XEP (formerly known as
FOP2PDF) from RenderX is a program
for converting XSL FO documents to PDF.
- xslide: an emacs
mode for XSL stylesheets.
- eXcelon
Stylus combines tools to create XSL stylesheets in a visual editing
environment.
- The IBM XSL
Editor application allows a user to import, create, and save XSL style
sheets and XML source documents
Older Implementations
- How is XSL different from CSS?
- XSL uses a XML notation, CSS uses its own. In CSS, the formatting
object tree is almost the same as the source tree, and inheritance of
formatting properties is on the source tree. In XSL, the formatting
object tree can be radically different from the source tree, and
inheritance of formatting properties is on the formatting object tree.
Aside from these technical differences, mature implementations of
CSS1 and (parts of) CSS2 are available, whilst XSL is currently too new
to have mature browser and content-authoring support.
- Will XSL replace CSS?
- No. They are likely to co-exist since they meet different needs. XSL
is intended for complex formatting where the content of the document
might be displayed in multiple places; for example the text of a heading
might also appear in a dynamically generated table of contents. CSS is
intended for dynamic formatting of online documents for multiple media;
its strictly declarative nature limits its capabilities but also makes
it efficient and easy to generate and modify in the content-generation
workflow. So they are two different tools; for some tasks, CSS is the
appropriate choice and for some tasks, XSL. They can also be used
together - use XSL on the server to condense or customize some XML data
into a simpler XML document, then use CSS to style it on the
client.
- How is XSL different from DSSSL? From DSSSL-O?
- DSSSL is an International Standard style sheet language. It is
particularly used for formatting of print documents. DSSSL-O is a
profile of DSSSL which removes some functionality and adds capabilities
to make it more suited for online documentation. XSL draws on DSSSL and
the DSSSL-O work and continues the trend towards a Web-oriented style
sheet language by integrating experience with CSS.
- Will XSL replace DSSSL?
- DSSSL has capabilities that XSL does not, and continues in use in the
print publishing industry. Experience with XSL might be used in a future
revision of DSSSL, but it is too early to say.
- So, CSS is for HTML and XSL is for XML?
- No, CSS can be used with HTML and also with XML, provided that the XML
document has a reasonably linear structure that can be displayed without
extensive manipulation. See the CSS2
Recommendation for details.
XSL is targeted at XML, in particular highly-structured, data-rich
documents that require extensive formatting.
- Should I render all my XML documents to HTML on the server?
- Unless you are very careful to retain semantics, no. XSL can be used
server-side and client-side. The XSL Submission has two classes of
output: DSSSL-style flow objects and HTML tags. Unfortunately, the
combination of server-side processing and HTML tag output can result in
completely inaccessible, hard to search, hard to index presentational
HTML (the sort that is a mass of FONT and BR tags, spacer gifs - you
know, the sort of single-shot presentational mess that style sheets were designed to avoid).
The trouble is that by "rendering" to HTML, all that remains of your
carefully crafted XML semantics are the presentational aspects - block
element, this font, that weight - which makes it hard to generate decent
HTML.
- Technical: how do I do X, Y or Z in XSL?
- First, have a look at D. Pawson's excellent XSL FAQ.
If you don't find an answer, check the XSL mailing list at
mulberrytech.com.
Max Froumentin <mf@w3.org>
W3C Staff contact, XSL
Last modified: $Date: 2000/10/15 14:21:30 $
