XSLT elements
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: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. |
Any parent. Can contain any XML. |
<xsl:for-each select="input[@name=$name]">
…
</xsl:for-each>
|
xsl:if |
Yes or No conditions. test specifies criteria for entering the if. |
Any parent. Can contain any XML. |
<xsl:if test="$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:template match="//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:variable name="type" select="@type"/>
|
xsl:when |
Yes or No conditions. test specifies criteria for entering the if. |
xsl:choose. Can contain any XML. |
<xsl:when test="$type='radio'">
…
</xsl:when>
|
Example XSLT stylesheet using logic elements
<xsl:stylesheet>
<xsl:template match="//input">
<xsl:variable name="type" select="@type"/>
<xsl:variable name="name" select="@name"/>
<xsl:if test="$type='text' or $type='password' or $type='radio' or $type='checkbox'">
<xsl:choose>
<xsl:when test="$type='radio'">
<xsl:if test="not(preceding-sibling::input[@type='radio'])">
<select name="{@name}">
<xsl:for-each select="../input[@name=$name]">
<option value="{@value}">
<xsl:apply-templates/>
</option>
</xsl:for-each>
</select>
</xsl:if>
</xsl:when>
<xsl:when test="$type='text'">
<input name="{@name}" type="{@type}">
<xsl:apply-templates/>
</input>
</xsl:when>
<xsl:when test="$type='password'">
<input name="{@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-template name="lib:make-elem">
|
xsl:import |
Retrieves another XSLT file. href is the URI of the file. |
xsl:stylesheet. No children. |
<xsl:import href="..\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. |
xsl:stylesheet. No children. |
<xsl:output method="xml" omit-xml-declaration="yes" encoding="UTF-8"/>
|
xsl:param |
Designates a parameter which may be passed into the template with xsl:call-template. |
xsl:template. No children. |
<xsl:param name="elem-name"/>
|
xsl:text |
Outputs the tag content. |
Any parent. No children. |
<xsl:text>ClaimNumber ClaimSeqNumber</xsl:text>
|
xsl:value-of |
Outputs a variable. select specifies the variable. |
Any parent. No children. |
<xsl:value-of select="$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. |
xsl:call-template. No children. |
<xsl:with-param name="elem-name" select="'hma:ClaimNumber'"/>
|
Client-side XSLT can be implemented in a browser by adding a line like the following to the source XML file, right after the root XML tag.
<?xml-stylesheet type="text/xsl" href="family.xsl"?>
This is described on the page http://www.xml.com/pub/a/2000/10/25/msie/index.html
Other XSLT semantics
symbol |
meaning |
where used |
| |
union operator. used to group nodesets in XPath expressions. |
select attributes of elements such as xsl:when, xsl:if, xsl:for-each. |
& |
and |
any conditional or match criterion, for example xsl:if.test, xsl:when.test, xsl:template.select and xsl:for-each.select. |
<!-- |
begin comment. |
anywhere not in a tag. |
--> |
end comment. |
anywhere not in a tag. |
$ |
start of a variable name. |
anywhere in a tag, for example xsl:value-of.select and xsl:variable.name. |
name() |
the name of the tag being processed. Useful if the matching criteria contains | s (pipe symbols). |
any conditional or match criterion, for example xsl:if.test, xsl:when.test, xsl:template.select and xsl:for-each.select. |
@ |
an attribute within the XML. |
any conditional or match criterion, for example xsl:if.test, xsl:when.test, xsl:template.select and xsl:for-each.select. |
[1]
Functions defined by XSLT
The following functions can occur in many XSLT attributes, such as xsl:value-of.select and xsl:for-each.select.
Function |
Description/ Syntax |
Example |
ceiling |
The ceiling function returns the smallest integer that is equal to or is larger than the numeric value of the number argument. |
|
concat |
Concatenates two or more strings. |
concat($fname, ' ', $lname)
|
contains[2] |
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. |
|
floor |
The floor function returns the largest integer that is equal to or is smaller than the numeric value of the number argument. |
|
normalize-space |
Removes white-space from the beginning and end of the string |
|
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. |
|
round |
The round function rounds a number to its closest integer. |
|
string |
The string function converts the value argument to a 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. |
|
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-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. |
|
translate |
Takes the string in the value argument, replaces all occurrences of a string specified in the string1 argument with substitute characters specified in string2 argument and returns the modified string. |
translate(‘colored armor’, ‘or’, ‘our’)
|
External links
|
---|
| Products and standards | |
---|
| Organizations | |
---|
| Software | |
---|
| Conferences | |
---|
|
References