  | |  | Xalan extension functions | Xalan extension functions 2007-05-02 - By Santiago Pericas-Geertsen
John,
Like in Java, you can't invoke a constructor directly. See [1] for how to create Java objects using 'new'. I believe the syntax you're using would work for static methods, though.
-- Santiago
[1] http://xml.apache.org/xalan-j/extensions.html#ext-func-calls
On May 2, 2007, at 9:49 AM, Wade, John F. (MSFC-NAS902099)[TBE] wrote:
> 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? > >
<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line -break: after-white-space; ">John,<DIV><BR class="khtml-block-placeholder"></DIV ><DIV> Like in Java, you can't invoke a constructor directly. See [1] for how to create Java objects using 'new'. I believe the syntax you're using would work for static methods, though.</DIV><DIV><BR class="khtml-block-placeholder"></DIV ><DIV>-- Santiago</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>[1] <A href="http://xml.apache.org/xalan-j/extensions.html#ext-func-calls">http:/ /xml.apache.org/xalan-j/extensions.html#ext-func-calls</A></DIV><DIV><BR><DIV> <DIV>On May 2, 2007, at 9:49 AM, Wade, John F. (MSFC-NAS902099)[TBE] wrote:</DIV ><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"> <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><DIV><BR class="khtml-block-placeholder">< /DIV><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"> </FONT><P> <FONT color="#0000ff" size="2"><?</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"></FONT></P><FONT color=" #0000ff" size="2"> </FONT><P><FONT color="#0000ff" size="2"><</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">></FONT></P><FONT color="#0000ff" size="2"></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"> </FONT><P><FONT color="#0000ff" size="2"><</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()"/></FONT></P><FONT color="#0000ff" size="2"></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"><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] [<A href="mailto:John.F.Wade@(protected)">mailto:John.F.Wade@(protected) .gov</A>]<BR><B>Sent:</B> Fri 4/27/2007 3:29 PM<BR><B>To:</B> Kevin Cormier<BR> <B>Cc:</B> <A href="mailto:xalan-j-users@(protected)">xalan-j-users@(protected) .apache.org</A><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 [<A href="mailto:kcormier@(protected)">mailto:kcormier@(protected)< /A>]<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> <A href="mailto:xalan-j-users@(protected)" >xalan-j-users@(protected)</A><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></BLOCKQUOTE></DIV><BR></DIV></BODY></HTML>
|
|
 |