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 "Perez Carmona, David" <DP...@fcc.es> on 2004/08/31 09:38:55 UTC
XSLTC and external functions
Hi all,
I have this Java class
public class Tbl {
public static Number getAncho(Number anchoCols, Number numCols);
....
}
and this stylesheet:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tbl="xalan://fcc.ima.pdf.Tbl">
<xsl:template match="a">
<xsl:variable name="v-anchos">
<xsl:for-each select="vista">
<ancho><xsl:value-of select="tbl:getAncho(sum(columnado/columna/@ancho), count(columnado/columna))"/></ancho>
</xsl:for-each>
</xsl:variable>
.....
</xsl:template>
</xsl:stylesheet>
Under the interpretative Xalan, I can call this extension function ok, but under XSLTC it fails, this is the message I get:
javax.xml.transform.TransformerException: Cannot conver the argument/return value in the method call 'fcc.ima.pdf.Tbl.getAncho(real, int)'
Is this a bug? Is XSTLC incompatible with Xalan-Java Interpretive processor?. I've read the doc and this can be done with both.
I'm using Xalan 2.6.0, Java 1.4.2 and used the endorsed mechanism.
Any hint will be greatly appreciated.
Regards,
David
*************************************************************
Este correo ha sido procesado por el Antivirus del Grupo FCC
*************************************************************
Re: XSLTC and external functions
Posted by Santiago Pericas-Geertsen <Sa...@Sun.COM>.
David,
I believe the documentation needs to be updated to describe the legal
type conversions between internal types and Java types (and
vice-versa). The rules are not the same for Xalan and XSLTC. In
particular, XSLTC does not convert to or from Number, and in general it
prefers primitive over "boxed" types. Try replacing Number by the
primitive type double. If you have the sources, you can check the table
of allowed conversions in org.apache.xalan.xsltc.compiler.FunctionCall
in the static block defined near line 160.
Hope this helps.
-- Santiago
On Aug 31, 2004, at 3:38 AM, Perez Carmona, David wrote:
>
> Hi all,
>
> I have this Java class
>
> public class Tbl {
> public static Number getAncho(Number anchoCols, Number numCols);
> ....
> }
>
> and this stylesheet:
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:tbl="xalan://fcc.ima.pdf.Tbl">
>
> <xsl:template match="a">
> <xsl:variable name="v-anchos">
> <xsl:for-each select="vista">
> <ancho><xsl:value-of
> select="tbl:getAncho(sum(columnado/columna/@ancho),
> count(columnado/columna))"/></ancho>
> </xsl:for-each>
> </xsl:variable>
> .....
> </xsl:template>
>
> </xsl:stylesheet>
>
> Under the interpretative Xalan, I can call this extension function ok,
> but under XSLTC it fails, this is the message I get:
>
> javax.xml.transform.TransformerException: Cannot conver the
> argument/return value in the method call
> 'fcc.ima.pdf.Tbl.getAncho(real, int)'
>
> Is this a bug? Is XSTLC incompatible with Xalan-Java Interpretive
> processor?. I've read the doc and this can be done with both.
>
> I'm using Xalan 2.6.0, Java 1.4.2 and used the endorsed mechanism.
>
> Any hint will be greatly appreciated.
>
> Regards,
> David
>
> *************************************************************
> Este correo ha sido procesado por el Antivirus del Grupo FCC
> *************************************************************