xsl:function

Allows the creation of user-defined stylesheet function that can be called from any XPath expression within the stylesheet in which the function is defined. This instruction is supported in XSLT 2.0 only.

Format

<xsl:function name="Qname" as="sequence type" [override="yes" | "no"]>
               
function_body
               
</xsl:function>
               

            

Description

The value of the name attribute, Qname, is a qualified name and takes the form prefix :name. The prefix is required in order to avoid possible conflicts with any functions in the default function namespace. The prefix cannot refer to a reserved namespace.

The function_body contains zero or more <hyperlink>xsl:param elements that specify the formal arguments of the function. These xsl:param elements are followed by a sequence constructor that defnes the value to be returned by the function. The xsl:param elements within an xsl:function element must be empty; they cannot have a select attribute because they must be specified.

An xsl:function declaration can only appear as a top-level element in a stylesheet.

Example

Here is an example from the W3C XSLT Working Draft of a simple function that reverses the order of the words in a sentence.

<xsl:transform 
               
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
               
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
               
  xmlns:str="http://example.com/namespace"
               
  version="2.0"
               
  exclude-result-prefixes="str">
               
 
               
<xsl:function name="str:reverse" as="xs:string">
               
  <xsl:param name="sentence" as="xs:string"/>
               
  <xsl:sequence  
               
     select="if (contains($sentence, ' '))
               
             then concat(str:reverse(substring-after($sentence, ' ')),
               
                         ' ',
               
                         substring-before($sentence, ' '))
               
             else $sentence"/>
               
</xsl:function>
               
 
               
<xsl:template match="/">
               
<output>
               
  <xsl:value-of select="str:reverse('DOG BITES MAN')"/>
               
</output>
               
</xsl:template>
               
 
               
</xsl:transform>
               

            

Retail Companies That Use Stylus Studio

Stores and XML data can get very crowded. That's why retail companies use Stylus Studio to simplify their data. With the power of Stylus Studio these top retail companies are at the front of the line when it comes to XML!

Food & Beverage Services

"I'll have a burger and a side of Stylus Studio", says these top food & beverage services that use Stylus Studio in everyday operations. Come see which food & beverage services eat up the idea of having the most powerful XML IDE at their finger tips!

XML Well-Formedness Checker & XML Indenter

Tidy up your XML documents with powerful integrated XML editing utilities including a single-click XML formatter, pretty printer, XML indenter and XML well formedness checker.

Translating X12 Documents to XML

The X12 to XML Converter is a built-in function of the adapter library. The XML that is generated is well commented and indented, and can be used anywhere XML is normally used — with XML Schemas, XSLT, XQuery, etc.

Stylus Most Wanted

 
Free Stylus Studio XML Training:
W3C Member