Next / Previous / Contents / Shipman's homepage


Describes the XSLT language for transforming XML documents.

This publication is available in Web form and also as a PDF document. Please forward any comments to

This work is licensed under a Creative Commons BY-NC Creative Commons Attribution-NonCommercial 3.0 Unported License.

Table of Contents

1. What is XSLT?
2. A brief example
3. Namespaces and XSLT
4. XPath reference
4.1. Data types in XPath
4.2. Node types
4.3. Node tests
4.4. Axis selection in XPath
4.5. XPath operators
4.6. XPath functions
4.7. Attribute value templates
5. Overall XSLT stylesheet structure
6. The root element xsl:stylesheet
6.1. xsl:stylesheet attributes
7. Top-level elements
7.1. xsl:output: Select output options
7.2. xsl:preserve-space: Preserving white space
7.3. xsl:strip-space: Removing non-significant white space
7.4. xsl:import: Use templates from another stylesheet
7.5. xsl:key: Create an index to optimize input document access
7.6. xsl:decimal-format: Define a numeric format
8. Basic template elements
8.1. xsl:template: Define a template
8.2. xsl:variable: Define a global or local variable
8.3. xsl:apply-templates: Process a node set with appropriate templates
8.4. xsl:include: Insert another stylesheet
8.5. xsl:param: Define an argument to be passed into a template
8.6. xsl:with-param: Pass an argument to a template
9. Output instructions
9.1. xsl:text: Output literal text
9.2. xsl:value-of: Output the value of an expresssion
9.3. xsl:element: Output an element
9.4. xsl:attribute: Output an attribute
9.5. xsl:number: Output an element number or formatted number
10. Branching elements
10.1. xsl:for-each: Iterate over a set of nodes
10.2. xsl:if: Conditional processing
10.3. xsl:choose: The multiple-case construct
10.4. xsl:call-template: Invoke another template
11. Advanced elements
11.1. xsl:apply-imports: Use an overridden template
11.2. xsl:attribute-set: Define a named attribute set
11.3. xsl:comment: Output a comment
11.4. xsl:copy: Shallow copying
11.5. xsl:copy-of: Deep copying
11.6. xsl:fallback: What to do if an extension is missing
11.7. xsl:message: Write a debugging message
11.8. xsl:namespace-alias: Assign a prefix to a namespace
11.9. xsl:processing-instruction: Output a processing instruction
11.10. xsl:sort: Process nodes in a given order
12. XSLT functions
12.1. current(): Return the current node
12.2. document(): Pull in content from other documents
12.3. format-number(): Convert a number to a string
12.4. generate-id(): Generate a unique identifier
12.5. key(): Refer to an index entry
12.6. system-property(): Return a system property value
13. Built-in templates
14. Extension elements
14.1. The exsl:document extension
15. Using the xsltproc processor