Specifications and
Working Drafts
See Also
Get Involved
|
News
Learning XSL
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
|