  | |  | Xalan extension functions | Xalan extension functions 2007-05-02 - By Sushy Behal
This works . Try this it would work too in your code if everything else is fine
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl= <http://www.w3.org/1999/XSL/Transform> http://www.w3.org/1999/XSL/Transform xmlns= <http://www.w3.org/1999/xhtml> http://www.w3.org/1999/xhtml xmlns:xalan= <http://xml.apache.org/xalan> http://xml.apache.org/xalan xmlns:mytest="MyTest" extension-element-prefixes="mytest" version="1.0">
<xalan:component prefix="mytest" functions="nodeLinkRef ">
<xalan:script lang="javaclass" src="MyTest"/>
</xalan:component>
<!-- Somewhere in code -->
<xsl:value-of select="mytest:nodeLinkRef(.)"/>
//Modify JAVA CODE
import java.util.*;
//import all other relevant packages
public class MyTest
{
public Node nodeLinkRef(Node node) { try{ // do anything yu want here and beand this will handle exceptions
} catch(Exception e) { e.printStackTrace(); } return node; }
}
Thanks Sushy
_____
From: Wade, John F. (MSFC-NAS902099)[TBE] [mailto:John.F.Wade@(protected)] Sent: Wednesday, May 02, 2007 6:50 AM To: Wade, John F. (MSFC-NAS902099)[TBE]; Kevin Cormier Cc: xalan-j-users@(protected) Subject: RE: Xalan extension functions
It's not Monday anymore. Oh well. Here's the test case java code. It does exactly nothing. Import java.util.*;
public class MyTest
{
public MyTest()
{}
}
The namespace and component definitions are: <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform xmlns=http://www.w3.org/1999/xhtml xmlns:doc=http://nwalsh.com/xsl/documentation/1.0 exclude-result-prefixes="doc" xmlns:xalan=http://xml.apache.org/xalan xmlns:mytest="MyTest" extension-element-prefixes="mytest" version="1.0">
<xalan:component prefix="mytest" functions="MyTest"> <xalan:script lang="javaclass" src="xalan://MyTest/"/> </xalan:component>
Down in one of the templates I've added a line that says: <xsl:value-of select="mytest:MyTest()"/>
And the error I get is:
(Location of error unknown)XSLT Error (javax.xml.transform.TransformerException): javax.xml.transform.TransformerException: Instance method call to method MyTest requires an Object instance as first argument
..which isn't the error I remember getting last time I tried this, but one thing at a time. Suggestions? ********************************* John F. Wade, PE MSFC EO20 - TBE
_____
From: Wade, John F. (MSFC-NAS902099)[TBE] [mailto:John.F.Wade@(protected)] Sent: Fri 4/27/2007 3:29 PM To: Kevin Cormier Cc: xalan-j-users@(protected) Subject: RE: Xalan extension functions
Classpath has been my thought, too. I'm a real beginner at this, and the environment I'm working with has two variants, so I'm not sure how to determine what the classpath is in each case. But, we'll start with the stylesheet and JAVA code on Monday and go from there. Thanks. JFW
_____
From: Kevin Cormier [mailto:kcormier@(protected)] Sent: Fri 4/27/2007 3:11 PM To: Wade, John F. (MSFC-NAS902099)[TBE] Cc: xalan-j-users@(protected) Subject: Re: Xalan extension functions
Hi John,
All I can think of with the information you've given is to check that your class is on the classpath.
Could you send your stylesheet and Java class, and also show how you invoked the transformation and what the full error message was?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML dir=ltr><HEAD><TITLE>Re: Xalan extension functions</TITLE> <META http-equiv=Content-Type content="text/html; charset=us-ascii"> <META content="MSHTML 6.00.2900.3059" name=GENERATOR></HEAD> <BODY> <DIV dir=ltr align=left><SPAN class=946293017-02052007><FONT face=Arial color=#0000ff><FONT face="Times New Roman" size=2> This works . Try this it would work too in your code if everything else is fine</FONT> <DIV dir=ltr> <P><FONT size=2><FONT face="Times New Roman"><?</FONT><FONT face="Times New Roman">xml version="1.0" encoding="UTF-8" </FONT></FONT><FONT face="Times New Roman" size=2>?><BR><xsl:stylesheet</FONT><FONT face="Times New Roman"><FONT size=2> <BR>xmlns:xsl=</FONT><A href="http://www.w3.org/1999/XSL/Transform"><FONT size=2>http://www.w3.org/1999/XSL/Transform</FONT></A></FONT><FONT face="Times New Roman"><FONT size=2> <BR>xmlns=</FONT><A href="http://www.w3.org/1999/xhtml"><FONT size=2>http://www.w3.org/1999/xhtml</FONT></A></FONT><FONT face="Times New Roman"><FONT size=2> <BR></FONT></FONT><FONT size=2><FONT face="Times New Roman">xmlns:xalan</FONT><FONT face="Times New Roman">=</FONT></FONT><A href="http://xml.apache.org/xalan"><FONT face="Times New Roman" size=2>http://xml.apache.org/xalan</FONT></A><BR><FONT face="Times New Roman" size=2>xmlns:mytest</FONT><FONT face="Times New Roman" size=2>="MyTest"<BR>extension-element-prefixes</FONT><FONT size=2><FONT face="Times New Roman">="mytest"<BR>version</FONT><FONT face="Times New Roman">="1.0"></FONT></FONT></P> <P><FONT size=2><FONT face="Times New Roman"><</FONT><FONT face="Times New Roman">xalan:component prefix="mytest" functions</FONT></FONT><FONT face="Times New Roman"><FONT size=2>="nodeLinkRef<SPAN class=946293017-02052007> </SPAN>"></FONT></FONT></P> <P><FONT><SPAN class=946293017-02052007></SPAN><FONT face="Times New Roman"><FONT size=2> <SPAN class=946293017-02052007><FONT face=Arial> </P> <P><xalan:script lang="javaclass" src="<FONT face="Times New Roman">MyTest</FONT>"/></P> <P></FONT></SPAN><FONT face=Arial></FONT><BR></FONT></FONT></FONT><FONT face="Times New Roman"> </P> <P><FONT size=2></xalan:component></FONT></P> <P><FONT face=Arial><FONT size=2><<SPAN class=946293017-02052007>!-- Somewhere in code --></SPAN></FONT></FONT></FONT></P> <P><<FONT color=#800000>xsl:value-of</FONT><FONT color=#ff00ff> </FONT><FONT color=#ff0000>select</FONT>="mytest:nodeLinkRef(<SPAN class=946293017-02052007>.</SPAN>)"/></P></DIV> <P><FONT size=2></FONT> </P> <P><SPAN class=946293017-02052007><FONT size=2>//Modify JAVA CODE</FONT></SPAN></P> <P><SPAN class=946293017-02052007><FONT size=2></FONT></SPAN> </P><SPAN class=946293017-02052007> <DIV dir=ltr> <P><FONT size=2><SPAN class=946293017-02052007>i</SPAN>mport java.util.*;</FONT></P> <P><SPAN class=946293017-02052007><FONT size=2>//import all other relevant packages</FONT></SPAN></P> <P><FONT size=2>public class MyTest </FONT></P> <P><FONT size=2>{</FONT></P> <P><FONT size=2></FONT> </P> <P><FONT size=2> public Node nodeLinkRef(Node <SPAN class=946293017-02052007>node</SPAN>)<BR> {<BR> <BR > <BR> try{<BR> <SPAN class=946293017-02052007> // do anything yu want here and beand this will handle exceptions </SPAN></FONT></P> <P><FONT size=2> }<BR> catch(Exception e)<BR> {<BR> e.printStackTrace();<BR> }<BR> return node;<BR> }</FONT></P> <P><FONT size=2></FONT></P> <P><FONT size=2>}</FONT></P></DIV></SPAN></FONT></SPAN></DIV> <DIV><SPAN class=946293017-02052007></SPAN><FONT face=Arial><FONT color=#0000ff><FONT size=2>Thanks</FONT></FONT></FONT></DIV> <DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2></FONT></FONT></FONT> </DIV> <DIV><FONT><FONT><FONT face=Arial><FONT color=#0000ff><FONT size=2>S<SPAN class=946293017-02052007>ushy</SPAN></FONT></FONT></FONT></FONT></FONT></DIV> <DIV><BR></DIV> <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left> <HR tabIndex=-1> <FONT face=Tahoma size=2><B>From:</B> Wade, John F. (MSFC-NAS902099)[TBE] [mailto:John.F.Wade@(protected)] <BR><B>Sent:</B> Wednesday, May 02, 2007 6:50 AM<BR><B>To:</B> Wade, John F. (MSFC-NAS902099)[TBE]; Kevin Cormier<BR><B>Cc:</B> xalan-j-users@(protected)<BR><B>Subject:</B> RE: Xalan extension functions<BR></FONT><BR></DIV> <DIV></DIV> <DIV id=idOWAReplyText60140 dir=ltr> <DIV dir=ltr><FONT face=Arial color=#000000 size=2>It's not Monday anymore. Oh well.</FONT></DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2>Here's the test case java code. It does exactly nothing.</FONT></DIV> <DIV dir=ltr><FONT size=2><FONT size=2> <P>Import java.util.*;</P> <P>public class MyTest </P> <P>{</P> <P>public MyTest() </P> <P>{}</P> <P></P> <P>}</P></FONT></FONT></DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2>The namespace and component definitions are:</FONT></DIV> <DIV dir=ltr><FONT size=2><FONT color=#0000ff size=2> <P><?</FONT><FONT color=#800000 size=2>xml</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>version</FONT><FONT color=#0000ff size=2>="1.0"</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>encoding</FONT><FONT color=#0000ff size=2>="UTF-8"</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#0000ff size=2>?><BR><</FONT><FONT color=#800000 size=2>xsl:stylesheet</FONT> <FONT color=#ff00ff size=2> <BR></FONT><FONT color=#800000 size=2>xmlns</FONT><FONT color=#ff00ff size=2>:</FONT><FONT color=#ff0000 size=2>xsl</FONT><FONT color=#0000ff size=2>=<A href="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL /Transform</A></FONT><FONT color=#ff00ff size=2> <BR></FONT><FONT color=#ff0000 size=2>xmlns</FONT><FONT color=#0000ff size=2>=<A href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</A></FONT> <FONT color=#ff00ff size=2> <BR></FONT><FONT color=#800000 size=2>xmlns</FONT><FONT color=#ff00ff size=2>:</FONT><FONT color=#ff0000 size=2>doc</FONT><FONT color=#0000ff size=2>=<A href="http://nwalsh.com/xsl/documentation/1.0">http://nwalsh.com/xsl /documentation/1.0</A></FONT><FONT color=#ff00ff size=2> <BR></FONT><FONT color=#ff0000 size=2>exclude-result-prefixes</FONT><FONT color=#0000ff size=2>="doc"</FONT><FONT color=#ff00ff size=2> <BR></FONT><FONT color=#800000 size=2>xmlns</FONT><FONT color=#ff00ff size=2>:</FONT><FONT color=#ff0000 size=2>xalan</FONT><FONT color=#0000ff size=2>=<A href="http://xml.apache.org/xalan">http://xml.apache.org/xalan</A><BR></FONT> <FONT color=#800000 size=2>xmlns</FONT><FONT color=#ff00ff size=2>:</FONT><FONT color=#ff0000 size=2>mytest</FONT><FONT color=#0000ff size=2>="MyTest"<BR></FONT><FONT color=#ff0000 size=2>extension-element-prefixes</FONT><FONT color=#0000ff size=2>="mytest"<BR></FONT><FONT color=#ff0000 size=2>version</FONT><FONT color=#0000ff size=2>="1.0"></P> <P><</FONT><FONT color=#800000 size=2>xalan:component</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>prefix</FONT><FONT color=#0000ff size=2>="mytest"</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>functions</FONT><FONT color=#0000ff size=2>="MyTest"><BR><</FONT><FONT color=#800000 size=2>xalan:script</FONT><FONT color=#ff00ff size=2> </FONT><FONT color= #ff0000 size=2>lang</FONT><FONT color=#0000ff size=2>="javaclass"</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>src</FONT><FONT color=#0000ff size=2>="xalan://MyTest/"/><BR></</FONT><FONT color=#800000 size=2>xalan:component</FONT><FONT color=#0000ff size=2>></P></FONT></FONT></DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2>Down in one of the templates I've added a line that says:</FONT></DIV> <DIV dir=ltr><FONT color=#0000ff size=2> <P><</FONT><FONT color=#800000 size=2>xsl:value-of</FONT><FONT color=#ff00ff size=2> </FONT><FONT color=#ff0000 size=2>select</FONT><FONT color=#0000ff size=2>="mytest:MyTest()"/></P></FONT></DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2>And the error I get is:</FONT></DIV> <DIV dir=ltr><FONT face=Arial color=#0000ff size=2></FONT><BR>(Location of error unknown)XSLT Error (javax.xml.transform.TransformerException): javax.xml.transform.TransformerException: Instance method call to method MyTest requires an Object instance as first argument<BR></DIV> <DIV dir=ltr><FONT size=2>...which isn't the error I remember getting last time I tried this, but one thing at a time.</FONT></DIV> <DIV dir=ltr><FONT size=2></FONT> </DIV> <DIV dir=ltr><FONT size=2>Suggestions?</FONT></DIV> <DIV dir=ltr><FONT face=Arial color=#000000 size=2></FONT> </DIV></DIV> <DIV id=idSignature82333 dir=ltr> <DIV><FONT face=Arial color=#000000 size=2>*********************************</FONT></DIV> <DIV><FONT face=Arial size=2>John F. Wade, PE</FONT></DIV> <DIV><FONT face=Arial size=2>MSFC EO20 - TBE</FONT></DIV> <DIV><FONT size=2></FONT> </DIV> <DIV> </DIV> <DIV> </DIV></DIV> <DIV dir=ltr><BR> <HR tabIndex=-1> <FONT face=Tahoma size=2><B>From:</B> Wade, John F. (MSFC-NAS902099)[TBE] [mailto:John.F.Wade@(protected)]<BR><B>Sent:</B> Fri 4/27/2007 3:29 PM<BR><B>To:</B> Kevin Cormier<BR><B>Cc:</B> xalan-j-users@(protected)<BR><B>Subject:</B> RE: Xalan extension functions<BR></FONT><BR></DIV> <DIV dir=ltr> <DIV id=idOWAReplyText42563 dir=ltr> <DIV dir=ltr><FONT face=Arial color=#000000 size=2>Classpath has been my thought, too. I'm a real beginner at this, and the environment I'm working with has two variants, so I'm not sure how to determine what the classpath is in each case. </FONT></DIV> <DIV dir=ltr><FONT face=Arial color=#000000 size=2>But, we'll start with the stylesheet and JAVA code on Monday and go from there.</FONT></DIV> <DIV dir=ltr><FONT face=Arial color=#000000 size=2></FONT> </DIV> <DIV dir=ltr><FONT face=Arial size=2>Thanks.</FONT></DIV> <DIV dir=ltr> </DIV></DIV> <DIV id=idSignature42534 dir=ltr> <DIV><FONT face=Arial color=#000000 size=2>JFW</FONT></DIV> <DIV> </DIV> <DIV> </DIV></DIV> <DIV dir=ltr><BR> <HR tabIndex=-1> <FONT face=Tahoma size=2><B>From:</B> Kevin Cormier [mailto:kcormier@(protected)]<BR><B>Sent:</B> Fri 4/27/2007 3:11 PM<BR><B>To:</B > Wade, John F. (MSFC-NAS902099)[TBE]<BR><B>Cc:</B> xalan-j-users@(protected)<BR><B>Subject:</B> Re: Xalan extension functions<BR></FONT><BR></DIV> <DIV> <P><FONT size=2>Hi John,<BR><BR>All I can think of with the information you've given is to check that your<BR>class is on the classpath.<BR><BR>Could you send your stylesheet and Java class, and also show how you<BR>invoked the transformation and what the full error message was?<BR><BR><BR></FONT></P></DIV></DIV></BODY></HTML>
|
|
 |