[2.0] Creating New Functions with <xsl:function>
XSLT 2.0 adds the <xsl:function> element. This lets you
define your own functions in the stylesheet itself. This is the simplest
extension that we’ll examine in this chapter; the extension itself is in
the same file and same syntax as the stylesheet, and the standard is
very clear on how the function is defined and invoked. We’ll use a
simple stylesheet that creates a table in which the background color of
each cell cycles through four different colors. Given the position of
the current item, our function will return one of the four
values.
To define a function, there are several things we have to do:
define a (non-XSLT) namespace for the function, name the function, define what datatype
it returns, and define the name and datatype of any parameters the
function has. Defining a namespace is simple enough, although we need to
remember to put our namespace prefix in the exclude-result-prefixes attribute of <xsl:stylesheet>. We’ll call our
function getBackgroundColor, and it will return an
xs:string naming the background color
of each table cell. Finally, the input to our function is an xs:integer of the position of the current
item. The function looks like this:
<xsl:function name="sample:getBackgroundColor" as="xs:string"> <xsl:param name="pos" as="xs:integer"/> <xsl:value-of select="$colors[($pos mod count($colors)) + 1]"/> </xsl:function>
The function is in the sample namespace, it returns a string, and it takes an integer as its only ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access