Thanks a ton. That way works! It seems that the crucial difference is putting the fully-qualified-classname (mypackage.MyClass) in the namespace rather than in the select attributes. For example this works just fine:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java_util_date="http://xml.apache.org/xalan/java/java.util.Date" version="1.0"> <xsl:output method="xml"/> <xsl:variable name="now" select="java_util_date:new()"/> <xsl:template match="/"> <foobar> <xsl:attribute name="square"> <xsl:value-of select="java_util_date:toString($now)"/> </xsl:attribute> </foobar> </xsl:template> </xsl:stylesheet> ...while this fails trying to find a static method: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dammit="http://xml.apache.org/xalan/java" version="1.0"> <xsl:output method="xml"/> <xsl:variable name="now" select="dammit:java.util.Date.new()"/> <xsl:template match="/"> <foobar> <xsl:attribute name="square"> <xsl:value-of select="dammit:java.util.Date.toString($now)"/> </xsl:attribute> </foobar> </xsl:template> </xsl:stylesheet> java.lang.NoSuchMethodException: For extension function, could not find method static java.util.Date.toString([ExpressionContext,] #UNKNOWN (java.util.Date)). I wonder if this is the intended behavior. I was originially thinking the only difference between calling a static method and an instance method was whether you pass in the instance as a parameter. I haven't tried all the permutations, but the http://xml.apache.org/xalan/java/ namespace seems to be optional. Anyway, huge thanks to John!! -----Original Message----- From: John Gentilin [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 19, 2005 6:18 PM To: Chris Bare Cc: [email protected] Subject: Re: Problem calling external java method Chris, I declare my extensions, in interpretive mode, a bit differently. I think the java namespace may have special meaning. The example below declares a class called CategoryPageMgr that exists in the custom package. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:catmgr="custom.CategoryPageMgr" exclude-result-prefixes="catmgr" extension-element-prefixes="catmgr"> <xsl:param name="CategoryMgr" select="catmgr:new()"/> <xsl:template match="foo"> <data> <xsl:value-of select="catmgr:getCategoryPage($CategoryMgr, $category, $localID, $pageData)" /> </data> </xsl:template> </xsl:stylesheet> Hope that helps John G Chris Bare wrote: >Help! > >...
