Xalan-C++ (named after a rare musical instrument) implements the
W3C Recommendation 16 November 1999 XSL Transformations (XSLT) Version 1.0
XML Path Language (XPath) Version 1.0.
XSLT is the first part of the XSL stylesheet language for XML. It includes the XSL
Transformation vocabulary and XPath, a language for addressing parts of XML documents. For links to background materials,
discussion groups, frequently asked questions, and tutorials on XSLT, see
Getting up to speed with XSLT.
Note: XSL also includes a vocabulary for formatting documents, which is
not part of Xalan-C++. For more information, see
Extensible Stylesheet Language (XSL) Version 1.0 W3C Recommendation
and the Apache XML FOP (Formatting Objects Project).
You use the XSLT language to compose XSL stylesheets. An XSL stylesheet
contains instructions for transforming XML documents from one document
type to another document type (XML, HTML, or other). In structural
terms, an XSL stylesheet specifies the transformation of one tree of
nodes (the XML input) into another tree of nodes (the output or
Note: The XSL stylesheet may generate and refer to cascading style
sheets (CSS) as part of its output.
In the following example, the foo.xsl stylesheet is used to transform
foo.xml into foo.out:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
Getting to work with Xalan-C++
For instructions and some suggestions about how to get started using
Xalan-C++, see Building Xalan-C++ and
Getting up to speed with XSLT
If you are still working through the details of the XSLT spec (the W3C
1.0 Recommendation), you may want to consult one or more of the
- Crane Softwright’s
Free preview of Practical Transformation Using XSLT and XPath
- Doug Tidwell’s XSLT,
- Bob DuCharme’s XSLT Quickly,
Manning Publications, 2001
- John Robert Gardner and Zarella Rendon’s
XSLT and XPath: A Guide to Transformations,
- Elliotte Rusty Harold’s
Chapter 17 of the XML Bible: XSL Transformations
- The Mulberry
XSL-List – Open Forum on XSL
(of interest to XSL users at all levels)
- Objects by Design’s
Transforming XMI to HTML
(oriented towards XMI, “an XML-based, stream representation of a UML
model,” but also covers “generic” XML transformations) and their
XSLT by Example
- OASIS (the Organization for the Advancement of Structured Information Standards):
Extensible Stylesheet Language (XSL)
by Robin Cover
- Aaron Skonnard and Martin Gudgin’s
XML Quick Reference:
A Programmer’s Reference to XML, XPath, XSLT, XML Schema, SOAP and
More. This reference is published by Addison Wesley, 2003, ISBN/0201740958.
When you come across other useful introductory or background materials,
please email the Xalan Development Mailing List, so we can add them to
- XSLT Namespace
for XSLT. An XML namespace is a collection of element and
attribute names, identified by a Unique Resource Identifier
(URI), which often takes the form of a URL, but is really just a
unique string, not a pointer to a web page. The XSLT namespace
URI is `http://www.w3.org/1999/XSL/Transform`. In each XSLT
stylesheet, you must declare this namespace in the stylesheet
element tag and bind it to a local prefix. Like the XSLT
specification, we always use xsl as the XSLT namespace prefix in
our descriptions and examples, although you are free to bind any
prefix to this namespace.
- XSL Instruction
- Any tag associated with the XSLT namespace.
- An element, usually with child elements, that specifies a "rule"
or set of instructions to perform when a particular kind of
node is encountered in the source tree.
- XSL Template Instruction
- Any tag that occurs inside an xsl:template element and is associated
with the XSLT namespace.
- Source Tree
- The XML tree input to the XSL process.
- Result Tree
- The tree that is output by the XSL process.
- Match Pattern
- The part of a template that defines the kind(s) of nodes to which
the template applies.
For more definitions of XSLT terminology, see Dave Pawson’s
XSLT Terminology Clarification
and the Glossary in Michael Kay’s
XSLT Programmer’s Reference.