You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Yuriy Zilbergleyt <yz...@mgbltd.com> on 2003/12/12 16:53:34 UTC

translets refuse to work with the evaluate() extension, both Xalan and exslt versions

Hi,
 
I'm trying to use xalan-j-2-5-2 to transform with an XSLT that uses the
evaluate() extension.  This works with the default transformer, but not
with translets.  Whenever I try to use a translet I get the error:
'Cannot find external method 'org.apache.xalan.lib.Extensions.evaluate'
(must be public).'  for xalan:evaluate(), and the error: 'The first
argument to the non-static Java function 'evaluate' is not a valid
object reference.' for dyn:evaluate().
 
Here are the XML and XSL files I wrote to test this:
 
<?xml version='1.0' encoding='UTF-8'?>
<TestElement>
            <data someAttribute="5"/>
            <data someAttribute="10"/>
</TestElement>
 
 
 
<xsl:stylesheet version = '1.0'
                        xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
                        xmlns:xalan='http://xml.apache.org/xalan'
                        xmlns:dyn="http://exslt.org/dynamic">    
                        
                        <xsl:template match="/">
                                    <xsl:value-of
select="xalan:evaluate('//TestElement/data[1]/@someAttribute')"/>

                                    <xsl:value-of
select="dyn:evaluate('//TestElement/data[1]/@someAttribute')"/>

                        </xsl:template>
</xsl:stylesheet>
 
For transforming without tranlets I used the SimpleTransform sample
program that comes with xalan-j, and for tranlets I used
JAXPTranletOneTransformation.  I'm using J2SE 1.4.2 and J2EE 1.4 final,
with the endorsed xalan jars.  SimpleTransform works,
JAXPTranletOneTransformation  doesn't, though it works if the evaluate()
extension calls are taken out.  Following is the result of running java
org.apache.xalan.xslt.EnvironmentCheck:
 
#---- BEGIN writeEnvironmentReport($Revision: 1.23 $): Useful stuff
found: ----
version.DOM.draftlevel=2.0fd
java.class.path=.\;C:\j2eesdk1.4\lib\j2ee.jar;C:\Program Files\Apache
Group\Tomc
at 4.1\webapps\Yuriy\WEB-INF\classes\;C:\Documents and
Settings\yzilbergleyt\My
Documents\MyJSP\Classes\;C:\Program Files\Apache Group\Tomcat
4.1\common\lib\ser
vlet.jar;C:\Documents and Settings\yzilbergleyt\My
Documents\JavaClasses\;c:\tc;
 
C:\Blazix\Blazix.jar;C:\xalan-j\xalan-j_2_5_2\bin\bsf.jar;C:\xalan-j\xal
an-j_2_
5_2\bin\xalan.jar;C:\xalan-j\xalan-j_2_5_2\bin\xalansamples.jar;C:\xalan
-j\xalan
-j_2_5_2\bin\xercesImpl.jar;C:\xalan-j\xalan-j_2_5_2\bin\xml-apis.jar;
version.JAXP=1.1 or higher
java.ext.dirs=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\ext
#---- BEGIN Listing XML-related jars in:
foundclasses.sun.boot.class.path ----
xalan.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xalan.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4
xercesImpl.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xercesImpl.j
ar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xml-apis.jar
#----- END Listing XML-related jars in: foundclasses.sun.boot.class.path
-----
version.xerces2=Xerces-J 2.4.0
version.xerces1=not-present
version.xalan2_2=Xalan Java 2.5.2
version.xalan1=not-present
version.ant=not-present
java.version=1.4.2
version.DOM=2.0
version.crimson=present-unknown-version
sun.boot.class.path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xalan.jar;C:
\j2sdk_n
b\j2sdk1.4.2\jre\lib\endorsed\xercesImpl.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\
lib\endo
rsed\xml-apis.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\lib\rt.jar;C:\j2sdk_nb\j2sd
k1.4.2\j
re\lib\i18n.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\lib\sunrsasign.jar;C:\j2sdk_n
b\j2sdk1
.4.2\jre\lib\jsse.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\lib\jce.jar;C:\j2sdk_nb
\j2sdk1.
4.2\jre\lib\charsets.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\classes
#---- BEGIN Listing XML-related jars in: foundclasses.java.class.path
----
xalan.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xalan.jar
xalansamples.jar-apparent.version=xalansamples.jar
present-unknown-version
xalansamples.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xalansamples.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4
xercesImpl.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xercesImpl.jar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xml-apis.jar
#----- END Listing XML-related jars in: foundclasses.java.class.path
-----
version.SAX=2.0
version.xalan2x=Xalan Java 2.5.2
#----- END writeEnvironmentReport: Useful properties found: -----
# YAHOO! Your environment seems to be OK.
 
 
Please let me know if this is a bug, or if I'm doing something wrong.
 
Thanks in advance!
Yuriy Zilbergleyt

Re: translets refuse to work with the evaluate() extension, both Xalan and exslt versions

Posted by Morris Kwan <mk...@ca.ibm.com>.



The EXSLT dynamic extensions (e.g. evaluate) are not supported in XSLTC.
Please see the following link for details:

http://xml.apache.org/xalan-j/extensions_xsltc.html#exslt_ext

Morris Kwan
XSLT Development
IBM Toronto Lab
Tel: (905)413-3729
Email: mkwan@ca.ibm.com



                                                                           
             "Yuriy                                                        
             Zilbergleyt"                                                  
             <yzilbergleyt@mgb                                          To 
             ltd.com>                  <xa...@xml.apache.org>      
                                                                        cc 
             12/12/2003 10:53                                              
             AM                                                    Subject 
                                       translets refuse to work with the   
                                       evaluate() extension, both Xalan    
                                       and exslt versions                  
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Hi,





I?m trying to use xalan-j-2-5-2 to transform with an XSLT that uses the
evaluate() extension.  This works with the default transformer, but not
with translets.  Whenever I try to use a translet I get the error:  'Cannot
find external method 'org.apache.xalan.lib.Extensions.evaluate' (must be
public).'  for xalan:evaluate(), and the error: 'The first argument to the
non-static Java function 'evaluate' is not a valid object reference.' for
dyn:evaluate().





Here are the XML and XSL files I wrote to test this:





<?xml version='1.0' encoding='UTF-8'?>


<TestElement>


            <data someAttribute="5"/>


            <data someAttribute="10"/>


</TestElement>











<xsl:stylesheet version = '1.0'


                        xmlns:xsl='http://www.w3.org/1999/XSL/Transform'


                        xmlns:xalan='http://xml.apache.org/xalan'


                        xmlns:dyn="http://exslt.org/dynamic">





                        <xsl:template match="/">


                                    <xsl:value-of
select="xalan:evaluate('//TestElement/data[1]/@someAttribute')"/>


                                    <xsl:value-of
select="dyn:evaluate('//TestElement/data[1]/@someAttribute')"/>


                        </xsl:template>


</xsl:stylesheet>





For transforming without tranlets I used the SimpleTransform sample program
that comes with xalan-j, and for tranlets I used
JAXPTranletOneTransformation.  I?m using J2SE 1.4.2 and J2EE 1.4 final,
with the endorsed xalan jars.  SimpleTransform works,
JAXPTranletOneTransformation  doesn?t, though it works if the evaluate()
extension calls are taken out.  Following is the result of running java
org.apache.xalan.xslt.EnvironmentCheck:





#---- BEGIN writeEnvironmentReport($Revision: 1.23 $): Useful stuff found:
----


version.DOM.draftlevel=2.0fd


java.class.path=.\;C:\j2eesdk1.4\lib\j2ee.jar;C:\Program Files\Apache
Group\Tomc


at 4.1\webapps\Yuriy\WEB-INF\classes\;C:\Documents and
Settings\yzilbergleyt\My


Documents\MyJSP\Classes\;C:\Program Files\Apache Group\Tomcat 4.1
\common\lib\ser


vlet.jar;C:\Documents and Settings\yzilbergleyt\My
Documents\JavaClasses\;c:\tc;



C:\Blazix\Blazix.jar;C:\xalan-j\xalan-j_2_5_2\bin\bsf.jar;C:\xalan-j\xalan-j_2_


5_2\bin\xalan.jar;C:\xalan-j\xalan-j_2_5_2\bin\xalansamples.jar;C:\xalan-j\xalan


-j_2_5_2\bin\xercesImpl.jar;C:\xalan-j\xalan-j_2_5_2\bin\xml-apis.jar;


version.JAXP=1.1 or higher


java.ext.dirs=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\ext


#---- BEGIN Listing XML-related jars in: foundclasses.sun.boot.class.path
----


xalan.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xalan.jar


xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4


xercesImpl.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xercesImpl.jar


xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version


xml-apis.jar-path=C:\j2sdk_nb\j2sdk1.4.2\jre\lib\endorsed\xml-apis.jar


#----- END Listing XML-related jars in: foundclasses.sun.boot.class.path
-----


version.xerces2=Xerces-J 2.4.0


version.xerces1=not-present


version.xalan2_2=Xalan Java 2.5.2


version.xalan1=not-present


version.ant=not-present


java.version=1.4.2


version.DOM=2.0


version.crimson=present-unknown-version


sun.boot.class.path=C:\j2sdk_nb\j2sdk1.4.2
\jre\lib\endorsed\xalan.jar;C:\j2sdk_n


b\j2sdk1.4.2\jre\lib\endorsed\xercesImpl.jar;C:\j2sdk_nb\j2sdk1.4.2
\jre\lib\endo


rsed\xml-apis.jar;C:\j2sdk_nb\j2sdk1.4.2
\jre\lib\rt.jar;C:\j2sdk_nb\j2sdk1.4.2\j


re\lib\i18n.jar;C:\j2sdk_nb\j2sdk1.4.2
\jre\lib\sunrsasign.jar;C:\j2sdk_nb\j2sdk1


.4.2\jre\lib\jsse.jar;C:\j2sdk_nb\j2sdk1.4.2
\jre\lib\jce.jar;C:\j2sdk_nb\j2sdk1.


4.2\jre\lib\charsets.jar;C:\j2sdk_nb\j2sdk1.4.2\jre\classes


#---- BEGIN Listing XML-related jars in: foundclasses.java.class.path ----


xalan.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xalan.jar


xalansamples.jar-apparent.version=xalansamples.jar present-unknown-version


xalansamples.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xalansamples.jar


xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4


xercesImpl.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xercesImpl.jar


xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version


xml-apis.jar-path=C:\xalan-j\xalan-j_2_5_2\bin\xml-apis.jar


#----- END Listing XML-related jars in: foundclasses.java.class.path -----


version.SAX=2.0


version.xalan2x=Xalan Java 2.5.2


#----- END writeEnvironmentReport: Useful properties found: -----


# YAHOO! Your environment seems to be OK.








Please let me know if this is a bug, or if I'm doing something wrong.





Thanks in advance!


Yuriy Zilbergleyt