[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Problem in calling external java function

Subject: RE: Problem in calling external java function
From: Manpreet Singh <singhm@xxxxxxxxxxx>
Date: Mon, 20 Sep 2004 17:50:43 +0530
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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.