[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Problem in calling external java function
Hi, Well , i have figured out the problem. The command : java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -out out.xml first searches for the java class along with package name ( tester.xyz ) in the same directory where the xsl and xml are. If class is not found in the relative path it looks in the classpath specified in the command for example: java -cp "C:" org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -out out.xml and if still not found it looks in the system classpath (Environment variable if any). In my case wrong file was being picked ( i had a class xyz placed in the directory tester in the same directory as my xml and xsl ), While i was updating any changes to class xyz in some other location. Well I know it has been a goof-up, but this can act as a lesson to all of us. RIGHT? Thanx for your answers and cooperation. Regards Manpreet -----Original Message----- From: Manpreet Singh [mailto:singhm@xxxxxxxxxxx] Sent: Monday, September 20, 2004 4:24 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Problem in calling external java function Importance: High Hi, The following is the xslt code calling a java class: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:test="C://tester" exclude-result-prefixes="test"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="b"> <xsl:variable name="test1" select="test:xyz.new('A;B;C',';')"/> <abc> <xsl:value-of select="test:getNextToken($test1)"/> </abc> </xsl:template> </xsl:stylesheet> The following is the code for the class being called: import java.util.StringTokenizer; public class xyz { private StringTokenizer tokenizer; public CreateMultipleTargetInstance( String specimen, String token ) { tokenizer = new StringTokenizer ( specimen, token ); } public String getNextToken() { if ( tokenizer.hasMoreTokens() ) { return tokenizer.nextToken(); } else { return ""; } } } When i call this class using the above xslt Through command prompt using the following command: java org.apache.xalan.xslt.Process -in test.xml -xsl test.xsl -out out.xml i get the following error: file:/C:abc.xsl; Line #9; Column #-1; XSLT Error (javax.xml.transform.TransformerException): java.lang.NoSuchMethodException: For extension function, could not find constructor tester.CreateMultipleTargetInstance([ExpressionContext,] #STRING, #STRING). The xslt is supposed to return me the first string before ";" i.e A. ...........ANYONE? Regards Manpreet
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|