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>
               

            

Business Solutions & Outsourcing

Business Solutions & Outsourcing companies know the best solutions. That's why they choose Stylus Studio to enhance their business productivity. See which companies are already using Stylus Studio 2006 to take care of their own business!

SQL Server Tools

Integrated SQL Server Tools in Stylus Studio enable you to access relational data stored in SQL Server 2000 or SQL Server 2005 as XML using XQuery, SQL/XML or ADO - learn how to export relational data as XML today!

Manufacturing

Manufacturing

Scientific, Photo & Control Equipment

Scientific, photo & control equipment companies hear clicks and beeps all day. But, when it comes to data integration it needs to be done in a flash, that's why they use Stylus Studio. Come see which top companies are seeing XML in a brand new light!

Stylus Most Wanted

 
Free Stylus Studio XML Training:
W3C Member