XSLT Marc21 Mini guide

XSL stands for EXtensible Stylesheet Language, and is a style sheet language for XML documents.

XSLT = XSL Transformations

XSLT is the most important part of XSL.

XSLT is used to transform an XML document into another XML document, or another type of document that is recognized by a browser, like HTML and XHTML. Normally XSLT does this by transforming each XML element into an (X)HTML element.

XSLT Uses XPath

XSLT uses XPath to find information in an XML document. XPath is used to navigate through elements and attributes in XML documents.

Correct Style Sheet Declaration

The root element that declares the document to be an XSL style sheet is <xsl:stylesheet> or <xsl:transform>.

Note: <xsl:stylesheet> and <xsl:transform> are completely synonymous and either can be used!

The correct way to declare an XSL style sheet according to the W3C XSLT Recommendation is:

<xsl:stylesheet version=”1.0″


<xsl:transform version=”1.0″

To get access to the XSLT elements, attributes and features we must declare the XSLT namespace at the top of the document.

Link the XSL Style Sheet to the XML Document


Add the XSL style sheet reference to your XML document (“cdcatalog.xml”):

<?xml version=”1.0″ encoding=”UTF-8″?>
<?xml-stylesheet type=”text/xsl” href=”cdcatalog.xsl”?>
<catalog> …

Some Screen XSLT samples about tables and textual formatting :






xslt6Again, We must declare the XSLT namespace at the top of the document like marc norms (prefix marc instead xsl) below :




Useful information about each specific XSL  element.

apply-imports :    Applies a template rule from an imported style sheet
apply-templates :    Applies a template rule to the current element or to the current element’s child nodes
attribute :    Adds an attribute
attribute-set :    Defines a named set of attributes
call-template   :  Calls a named template
choose :    Used in conjunction with <when> and <otherwise> to express multiple conditional tests
comment :    Creates a comment node in the result tree
copy  :   Creates a copy of the current node (without child nodes and attributes)
copy-of  :   Creates a copy of the current node (with child nodes and attributes)
decimal-format  :   Defines the characters and symbols to be used when converting numbers into strings, with the format-number() function
element :    Creates an element node in the output document
fallback   :  Specifies an alternate code to run if the processor does not support an XSLT element
for-each  :   Loops through each node in a specified node set
if  :   Contains a template that will be applied only if a specified condition is true
import   :  Imports the contents of one style sheet into another. Note: An imported style sheet has lower precedence than the importing style sheet
include   :  Includes the contents of one style sheet into another. Note: An included style sheet has the same precedence as the including style sheet
key   :  Declares a named key that can be used in the style sheet with the key() function
message     Writes a message to the output (used to report errors)
namespace-alias     Replaces a namespace in the style sheet to a different namespace in the output
number     Determines the integer position of the current node and formats a number
otherwise     Specifies a default action for the <choose> element
output     Defines the format of the output document
param     Declares a local or global parameter
preserve-space     Defines the elements for which white space should be preserved
processing-instruction     Writes a processing instruction to the output
sort     Sorts the output
strip-space     Defines the elements for which white space should be removed
stylesheet     Defines the root element of a style sheet
template     Rules to apply when a specified node is matched
text     Writes literal text to the output
transform     Defines the root element of a style sheet
value-of     Extracts the value of a selected node
variable     Declares a local or global variable
when     Specifies an action for the <choose> element
with-param     Defines the value of a parameter to be passed into a template

In addition, there are the following built-in XSLT functions:

current()     Returns the current node
document()     Used to access the nodes in an external XML document
element-available()     Tests whether the element specified is supported by the XSLT processor
format-number()     Converts a number into a string
function-available()     Tests whether the function specified is supported by the XSLT processor
generate-id()     Returns a string value that uniquely identifies a specified node
key()     Returns a node-set using the index specified by an <xsl:key> element
system-property()     Returns the value of the system properties
unparsed-entity-uri()     Returns the URI of an unparsed entity


Since 30 years I work on Database Architecture and data migration protocols. I am also a consultant in Web content management solutions and medias protecting solutions. I am experienced web-developer with over 10 years developing PHP/MySQL, C#, VB.Net applications ranging from simple web sites to extensive web-based business applications. Besides my work, I like to work freelance only on some wordpress projects because it is relaxing and delightful CMS for me. When not working, I like to dance salsa and swing and to have fun with my little family.

You may also like...