Subject: Re: [xsl] <xsl:message terminate="yes"> results in zero byte file getting written From: "Senthilkumaravelan K" <skumaravelan@xxxxxxxxxxxxxx> Date: Thu, 29 Mar 2007 09:37:07 -0700 |
Hi Grant , I am also facing similar kind of issue ,during transfor if I have xsl:message with terminate=yes and it is redirected to System.err and It does not fall as Exception, Could you please tell me ,How did you manage to get the text value of xsl:message in Java context. It would of real help ,if you share your approach on the same.
Thank, Senthil
Sorry, I should have probably posted this at the Saxon forum. I did try your solution Mike -
FileOutputStream fos = new FileOutputStream(myfile); transformer.transform(xmlStreamSource, new StreamResult(fos)); fos.close();
which still didn't work to delete the file Not sure what the issue is, maybe it's not something with Java.
However, I tried Pete's solution and it worked, the file doesn't get written:
ByteArrayOutputStream bos = new ByteArrayOutputStream(); StreamResult result = new StreamResult(bos);
transformer.transform(xmlStreamSource, result); if(bos.size() > 0) { bos.writeTo(new FileOutputStream("./JournaltoGoogleXMLFiles/google." + an + ".xml")); } else { return false; }
On 3/28/07, Michael Kay <mike@xxxxxxxxxxxx> wrote: > As far as the spec is concerned the state of filestore is undefined after a > transformation fails, so this is presumably intended as a Saxon-specific > question rather than an XSLT language question. I would imagine that in this > situation you have started serializing the output but the first buffer-full > hasn't yet been flushed to disk at the time of termination. I've certainly > seen this leave empty files on disk (if your transformation had got further > it might have left a non-empty but incomplete output file), but I haven't > seen problems in deleting such files; presumably the problem is that the > process still has a connection open to the file. In your call you've created > the FileOutputStream yourself, and Saxon takes the view that if you create > the stream, then you should close it after use (Saxon will only close the > stream when it has created it itself.) So it might be as simple a matter as > closing the stream before attempting the file delete. > > Michael Kay > http://www.saxonica.com/ > > > > -----Original Message----- > > From: Grant Slade [mailto:grant.slade@xxxxxxxxx] > > Sent: 28 March 2007 21:47 > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Subject: [xsl] <xsl:message terminate="yes"> results in zero > > byte file getting written > > > > When I use the following to transform a file: > > > > transformer.transform(xmlStreamSource, new StreamResult(new > > FileOutputStream("F:\\myfile.xml"))); > > > > If I have an <xsl:message terminate="yes"> in the xsl > > stylesheet "myfile.xml" gets written but as a zero byte file. > > > > If I try and use Java to delete the file through the File > > class, it won't delete it although it finds the file through > > the exists() method. > > > > My question is, is there a way to either not have the file > > get written in the first place, or is there a way to force a > > delete of that file?
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] <xsl:message terminate="y, Grant Slade | Thread | RE: [xsl] <xsl:message terminate="y, Michael Kay |
[xsl] Output multiple occurence int, Shaikh, Parvez | Date | Re: [xsl] Output multiple occurence, Abel Braaksma |
Month |