XSLT (Extensible Stylesheet Language Transformations) defines many elements to describe the transformations that should be applied to a document. This article lists some of these elements. For an introduction to XSLT, see the main article.
XSLT logic elements
Node
Description/ attributes
Container/ children
Example
xsl:apply-templates
Specifies that other matches may exist within that node; if this is not specified any matches will be ignored. If select is specified, only the templates that specify a “match” that fits the selected node or attribute type will be applied. I.e. the matching elements by select attribute in xsl:apply-templates correspond to the template that match the same elements. If mode is specified, only the templates that have the same “mode” and have an appropriate “match” will be applied.
Any parent. Can contain any number of xsl:sort and xsl:with-param children.
<xsl:apply-templates/>
xsl:choose
Multiple choices. No attributes.
Any parent. Contains xsl:when blocks and up to one xsl:otherwise block.
<xsl:choose>
…
</xsl:choose>
xsl:for-each
Creates a loop which repeats for every match. select designates the match criteria.
Yes or out No conditions. test specifies criteria for entering the if.
Any parent. Can contain any XML.
<xsl:iftest="$type='text' or $type='password'">
…
</xsl:if>
xsl:otherwise
The default choice if none of the xsl:when criteria are met.
xsl:choose. Can contain any XML.
<xsl:otherwise>
…
</xsl:otherwise>
xsl:stylesheet
Top-level element. Occurs only once in a stylesheet document. version specifies which XSLT version is being used. xmlns:xsl specifies the URL of that standard.
Top-level element. Contains all XML.
<xsl:stylesheet>
…
</xsl:stylesheet>
xsl:template
Specifies processing templates. match is when the template should be used. name gives the template a name which xsl:call-template can use to call this template.
xsl:stylesheet. Can contain any XML.
<xsl:templatematch="//input">
…
</xsl:template>
xsl:variable
Allows a variable to be declared. name is the variable name. It can be referred to later with $name. select is the value of the variable.
Any parent. no children.
<xsl:variablename="type"select="@type"/>
xsl:when
Yes or No conditions. test specifies criteria for entering the if.
xsl:choose. Can contain any XML.
<xsl:whentest="$type='radio'">
…
</xsl:when>
Example XSLT stylesheet using logic elements
<xsl:stylesheet><xsl:templatematch="//input"><xsl:variablename="type"select="@type"/><xsl:variablename="name"select="@name"/><xsl:iftest="$type='text' or $type='password' or $type='radio' or $type='checkbox'"><xsl:choose><xsl:whentest="$type='radio'"><xsl:iftest="not(preceding-sibling::input[@type='radio'])"><selectname="{@name}"><xsl:for-eachselect="../input[@name=$name]"><optionvalue="{@value}"><xsl:apply-templates/></option></xsl:for-each></select></xsl:if></xsl:when><xsl:whentest="$type='text'"><inputname="{@name}"type="{@type}"><xsl:apply-templates/></input></xsl:when><xsl:whentest="$type='password'"><inputname="{@name}"type="{@type}"><xsl:apply-templates/></input></xsl:when></xsl:choose></xsl:if></xsl:template></xsl:stylesheet>
XSLT file I/O elements
Node
Description/ attributes
Container/ children
Example
xsl:call-template
Calls the template whose name is specified. name matches the name in xsl:template.
Any parent. children are xsl:with-param.
<xsl:call-templatename="lib:make-elem">
xsl:import
Retrieves another XSLT file. href is the URI of the file.
xsl:stylesheet. No children.
<xsl:importhref="..\Library\FuncLib.xslt"/>
xsl:output
Describes how data will be returned. method designates what kind of data is returned. omit-xml-declaration indicates if the initial xml tag should be included. encoding designates how the data is returned.
Designates a parameter which may be passed into the template with xsl:call-template.
xsl:template. No children.
<xsl:paramname="elem-name"/>
xsl:text
Outputs the tag content.
Any parent. No children.
<xsl:text>ClaimNumberClaimSeqNumber</xsl:text>
xsl:value-of
Outputs a variable. select specifies the variable.
Any parent. No children.
<xsl:value-ofselect="$s"/>
xsl:with-param
Designates a parameter passed to xsl:call-template. It must be matched by an xsl:param in the template. name specifies the parameter name. select specifies the parameter value.
Returns true if the first string contains the second string, otherwise returns false.
contains('string to search','find')
count
The count function counts and returns the number of nodes in a node-set.
count(elements)
floor
The floor function returns the largest integer that is equal to or is smaller than the numeric value of the number argument.
floor(3.57)
normalize-space
Removes white-space from the beginning and end of the string
normalize-space($fname)
position
The position function returns the one-based[3] index of the current node being processed by an xsl:for-each or xsl:apply-templates element node-list. There are no arguments.
position()
round
The round function rounds a number to its closest integer.
round(3.57)
string
The string function converts the value argument to a string.
string()
string-length
The string-length function returns the number of characters in a string. The string argument is optional. If omitted, the default is to use the string value of the context node.
string-length('hello')
substring
A segment within a variable value. Substring takes three parameters: the input variable, the first character to be selected, and the length of the resulting string
substring($dob,4,2)
substring-after
The substring-after function returns a portion out of the string specified in the string argument that occurs after the substring specified in the substring argument.
substring-after('In 1814 we took a little trip','we')
substring-before
The substring-before function returns a portion out of the string specified in the string argument that occurs before the substring specified in the substring argument.
substring-before('In 1814 we took a little trip','we')
sum
The sum function adds and returns the total value of a set of numeric values in a node-set or list of values.
sum(1,3,7,12)
translate
Takes the string in the value argument, replaces all occurrences of characters in the string1 argument with substitute characters at the same location in the string2 argument and returns the modified string.