Subject: Re: [xsl] <xsl:message terminate="yes"> results in zero byte file getting written From: "Grant Slade" <grant.slade@xxxxxxxxx> Date: Thu, 29 Mar 2007 09:30:59 -0600 |
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.
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; }
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, Michael Kay | Thread | Re: [xsl] <xsl:message terminate="y, Senthilkumaravelan K |
RE: [xsl] Convert to RFC822 via XSL, Austin, Darrel | Date | RE: [xsl] Convert to RFC822 via XSL, Austin, Darrel |
Month |