Using an Extension Function in Stylus Studio

The process of using an extension function in Stylus Studio involves three main steps:

1. First, you need to write a Java class that can be used from within a stylesheet. In this example, the SystemDate() method returns the system date and time as a string:
import java.util.Date;  
public class SystemUtils  
{  
   public Object SystemDate()  
   {  
     Date d = new Date();  
     String s = d.toString();  
     return s;  
   }  
} 
2. Second, compile your class and register it on the Stylus Studio host by copying the .class file to a location defined in the host's CLASSPATH environment variable.
3. Finally, specify information in the stylesheet so that Stylus Studo can use your class. You do this with a namespace reference in the xsl:stylesheet tag. For example, define a namespace as xmlns:Ext where Ext is the prefix to use when calling the class methods. (Ext is not a predefined keyword; it can be replaced by any other legal string.) The namespace reference then takes the class name as a value. In this example, the whole reference looks like the following:
xmlns:Ext="SystemUtils"  

The class is now available from within the stylesheet and can be used in a template such as the following:

<xsl:template match="NODE">  
   <p><xsl:value-of select="Ext:SystemDate()"/></p>  
</xsl:template> 

The XSLT stylesheet might look like the following:

<?xml version="1.0" encoding="ISO-10646-UCS-2"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform"  
xmlns:Ext="SystemUtils">  
   <xsl:param name="param">test</xsl:param>  
   <xsl:template match="*|/"> 
      <xsl:apply-templates/> 
   </xsl:template>  
   <xsl:template match="text()|@*"> 
     <xsl:value-of select="."/> 
   </xsl:template>  
   <xsl:template match="NODE">  
     <p><xsl:value-of select="Ext:SystemDate()"/></p>  
   </xsl:template>  
</xsl:stylesheet> 

 
Free Stylus Studio XML Training:
W3C Member