RE: [xsl] File:New generates error

Subject: RE: [xsl] File:New generates error
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 18 Mar 2009 10:13:00 -0000
The JAXP factory mechanism, which relies on searching the classpath for the
first XSLT processor it finds, is really best avoided. It's expensive and
unpredictable. If your code is written to only work with one particular
processor, then instantiate it directly (replace
TransformerFactory.newInstance() by new
net.sf.saxon.TransformerFactoryImpl()). Or set the Java system property
javax.xml.transform.TransformerFactory to the value
"net.sf.saxon.TransformerFactoryImpl".

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Cool The Breezer [mailto:techcool.kumar@xxxxxxxxx]
> Sent: 18 March 2009 09:29
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] File:New generates error
>
>
> Hi, We have this problem appeared again. We found that
> Saxon.jar file was present in the classpath. I understand
> that this might not be directly related to XSLT problem but
> it is something which is caused when java is not able to
> access saxon.jar or xalan.jar in classpath and accesses
> default processor from rt.jar. As this problem occurs
> randomly, it makes me very difficult to find the root cause
> of the problem. Any help/suggestion/input would be highly appreciated.
>
> - RB
>
> --- On Mon, 3/16/09, Cool The Breezer
> <techcool.kumar@xxxxxxxxx> wrote:
>
> > From: Cool The Breezer <techcool.kumar@xxxxxxxxx>
> > Subject: RE: [xsl] File:New generates error
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Date: Monday, March 16, 2009, 12:08 PM
> >
> > Thanks lot for pointing me in right direction. In the code
> base system
> > property for transformation factory is set to "null" that's why
> > processor uses sun's transformation
> > packages(XSLTC) instead of saxon which gives error. I realized that
> > com.sun.org.apache.xalan.internal.xsltc.compiler.Variable
> > present in rt.jar which is part of JDK. This does not occur always,
> > becos the part of code setting system property for transformation
> > factory to null is executed in *Some* conditions.
> >
> > -RB
> >
> > --- On Mon, 3/16/09, Michael Kay <mike@xxxxxxxxxxxx>
> > wrote:
> >
> > > From: Michael Kay <mike@xxxxxxxxxxxx>
> > > Subject: RE: [xsl] File:New generates error
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Date: Monday, March 16, 2009, 8:52 AM
> > >
> > > You're not using Saxon here, you're using the XSLTC
> processor (part
> > > of the Xalan product). I suspect that's related to the
> the problem,
> > > since calling conventions for extension functions depend on the
> > processor
> > > you are using.
> > >
> > > Since file:exists in Java returns a boolean, I would
> suggest taking
> > > out the " = 'true'" part of the test, since comparing a
> > boolean to
> > > a string is
> > > somewhat error-prone.
> > >
> > > Michael Kay
> > > http://www.saxonica.com/
> > >
> > > > -----Original Message-----
> > > > From: Cool The Breezer [mailto:techcool.kumar@xxxxxxxxx]
> > >
> > > > Sent: 16 March 2009 12:18
> > > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > > Subject: [xsl] File:New generates error
> > > >
> > > >
> > > > Hi,
> > > > We have strange error started coming recently
> > for
> > > using java
> > > > A= PI to check file existence. Recently we moved
> > to
> > > saxon and
> > > > earlier we were using Xalan but I dont think
> > this
> > > caused the
> > > > error. We were using this code since years or so
> > > without any
> > > > problem and this error =A0comes randomly. I am
> > not
> > > able to
> > > > replicate this in dev environment. I would
> > appreciate
> > > your
> > > > help on finding root cause of this problem.
> > > >
> > > > XSL Code:
> > > >
> > > > <xsl:template name="file-exists"
> > > xmlns:file="java.io.File">
> > > >
> > > >         <xsl:param
> > > name="filename"/>
> > > >        
> > > <xsl:choose>
> > > >        
> > >     <xsl:when
> > > > test="file:exists(file:new($filename)) =
> > > 'true'">true</xsl:when>
> > > >        
> > >    
> > > <xsl:otherwise>false</xsl:otherwise>
> > > >        
> > > </xsl:choose>
> > > >     </xsl:template>
> > > >
> > > > Error:
> > > > ERROR:  'Cannot convert argument/return type in
> > > call to
> > > > method 'java.io.File.new(reference)''
> > > >
> > > > FATAL ERROR:  'Could not compile stylesheet'
> > > >
> > > > 
> > > >
> > > > java.lang.ClassCastException:
> > > >
> > >
> > com.sun.org.apache.xalan.internal.xsltc.compiler.Variable
> > > > cannot be cast to
> > > >
> > >
> > com.sun.org.apache.xalan.internal.xsltc.compiler.Param
> > > >
> > > >       at
> > > >
> > >
> > com.sun.org.apache.xalan.internal.xsltc.compiler.SymbolTable.a
> > > > ddParam(Unknown Source)
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >       

Current Thread