rohit31dec91
rohit31dec91

Reputation: 11

Call Java function in XSLT

I have case study of using java call method in xslt.

Below is my XSLT:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:test="java:com.package_name.com.Test">
  <xsl:output method="xml" omit-xml-declaration="yes"/>
  <xsl:template match="/" >
    <xsl:for-each select="info/data">
      <xsl:variable name="VALUE" select="number"/>
      <int>
         <xsl:value-of select="test:calculate($VALUE)"/>
      </int>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Java function:

public static String calculate(int n) {
    String message="The NUmber is Right";
    String error="Wrongggg";
    if (n == 5) 
       return (message);
    else
       return (error);
}

I am getting error message as follows:

Type:INTEGER:5
                                    Text:CHARACTER:Transformation failure when processing Stylesheet deployed:./Test.xsl
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: The XSL processor reported a possibly fatal error.
Message: java.lang.IllegalArgumentException: name
    at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1017)
    at com.ibm.xsl.exmlt.StylesheetCache.preprocessStylesheet(StylesheetCache.java:763)
    at com.ibm.xsl.exmlt.StylesheetCache.getPreprocessedStylesheet(StylesheetCache.java:686)
    at com.ibm.xsl.exmlt.StylesheetSelector.getTransformer(StylesheetSelector.java:372)
    at com.ibm.xsl.exmlt.StylesheetSelector.performSelection(StylesheetSelector.java:681)
    at com.ibm.xsl.exmlt.EnhancedXMLTransform.transformDocument(EnhancedXMLTransform.java:615)
    at com.ibm.xsl.mqsi.XMLTransformData.transformData(XMLTransformData.java:555)
    at com.ibm.xsl.mqsi.XMLTransformNode.evaluate(XMLTransformNode.java:965)
    at com.ibm.broker.plugin.MbNode.evaluate(MbNode.java:1480)
Caused by: javax.xml.transform.TransformerException: The XSL processor reported a possibly fatal error.
Message: java.lang.IllegalArgumentException: name
    at com.ibm.xsl.exmlt.StylesheetSelector.fatalError(StylesheetSelector.java:1725)
    at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:1009)

Can any one correct me how to call java function inside XSLT.

Upvotes: 0

Views: 2138

Answers (0)

Related Questions