Re: roblem with XSLT Trasformations - was problem generating PDF using FOP
Re: roblem with XSLT Trasformations - was problem generating PDF using FOP
- Subject: Re: roblem with XSLT Trasformations - was problem generating PDF using FOP
- From: Amedeo Mantica <email@hidden>
- Date: Wed, 11 Oct 2006 21:50:31 +0200
Hello,
Yes, I need to go into pdf (I'm "trying" to use apache fop 0.92 at
the moment)
"trying" because of accent proiblems
my generatePDF method works well, but because to wrong XML source
encoding PDF is also bad
Also tried FOP command line, … that return bad results.
see:
http://downloads.insigno.net/file-process.zip
(all file steps inside...)
Regards
Amedeo
On 11/ott/06, at 19:52, Travis Cripps wrote:
Amadeo,
Hi. What version of pico are you using? OS X uses GNU nano (1.2.4
on OS X 10.4) in place of pico. The FAQ for nano says:
"In version 1.3.12 or later, Unicode should be usable...."
Your file might actually be in UTF-8 format. There's nothing in an
XML file to tell an editor that the file is UTF-8 encoded except
the encoding statement.
From a quote online: (http://www.mail-archive.com/
email@hidden/msg01693.html)
TextPad (like Notepad) I think looks at the first bytes in the file
and if it sees something like FF FE decides that the encoding is
unicode. But your file being XML, it relies on the encoding="UTF-8"
part to set the encoding to UTF-8 and doesn't use the bytes, which
TextPad doesn't pick up. So in other words, I think you're fine.
The main idea in this story is that there is no "standard"
mechanism to decide if a set of bytes are text in UTF-8 encoding or
in ASCII encoding or a JPEG image (that's why XML needed an
"encoding" attribute by the way). So as long as you have rules and
mechanisms to ensure that the same encoding is used throughout your
system, you are ok .
What are you trying to acheive in the end? Are you trying to
serialize an EO to XML and use XSL to convert to pdf? I might be
able to help with that.
Travis
On Oct 11, 2006, at 9:52 AM, Amedeo Mantica wrote:
Hello all who are helping me in this trouble.
Thank you for all support
We are in right direction but there is still encoding problems,
I'm trying everything.
Now I'm trying STEP STEP bug finding, starting with outputting fo
a file the serialized EORecord
public pdfScheda xmlpdf() throws Exception
{
pdfScheda nextPage = (pdfScheda)pageWithName("pdfScheda");
String myXml = XMLSerializer.serializeProduct(theProduct);
System.out.println("JUST SERIALIZED: "+myXml);
FileOutputStream out = new FileOutputStream("/tmp/mainXml.xml");
out.write(myXml.getBytes("UTF-8"));
out.flush();
out.close();
return nextPage;
}
file is written to hd, but is NOT utf-8
If you open it with BBedit it renders ok because of UTF-8 xml
declaration, but is bad opeding with pico
public static String serializeProduct(product aProduct) throws
UnsupportedEncodingException, Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
// Create a stream to the output file.
BufferedOutputStream byte_output_stream = new
BufferedOutputStream(out);
NSXMLOutputStream stream = new NSXMLOutputStream
(byte_output_stream);
// Set the format of the output document (XML).
NSXMLOutputFormat format = new NSXMLOutputFormat(true);
format.setEncoding("UTF-8");
// turn indentation on
stream.setOutputFormat(format); // app
// Serialize data to object output stream.
stream.writeObject(aProduct);
stream.flush();
stream.close();
byte_output_stream.close();
} catch (IOException e) {
e.printStackTrace();
}
return out.toString("UTF-8");
XMLSerializer.serialize methid here:
public static String serializeProduct(product aProduct) throws
UnsupportedEncodingException, Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
// Create a stream to the output file.
BufferedOutputStream byte_output_stream = new
BufferedOutputStream(out);
NSXMLOutputStream stream = new NSXMLOutputStream
(byte_output_stream);
// Set the format of the output document (XML).
NSXMLOutputFormat format = new NSXMLOutputFormat(true);
format.setEncoding("UTF-8");
// turn indentation on
stream.setOutputFormat(format); // app
// Serialize data to object output stream.
stream.writeObject(aProduct);
stream.flush();
stream.close();
byte_output_stream.close();
} catch (IOException e) {
e.printStackTrace();
}
FileOutputStream justSerializedXml = new FileOutputStream("/tmp/
justSerializedXml.xml");
justSerializedXml.write(out.toByteArray());
justSerializedXml.close();
return out.toString("UTF-8");
}
also file /tmp/justSerializedXml.xml is lookong bad.
Regards
Amedeo
On 11/ott/06, at 00:42, Travis Cripps wrote:
Amadeo,
Hi. I created a sample project from your files, and was
initially getting the same result, with the characters in the
file resulting from your transform being messed up.
I changed all instances of String -> byte[] and byte[] -> String
conversions to specify the character encoding and the resulting
xml was perfect.
The basic changes were to read the xml and xsl into Strings like
this:
String sourceXML = null;
byte[] bytes = WOApplication.application().resourceManager
().bytesForResourceNamed("sourceXML.xml", null, null);
try {
sourceXML = new String(bytes, "UTF-8");
} catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
}
and to get the result of the transformation like this:
try {
result = ((ByteArrayOutputStream)((StreamResult)
output).getOutputStream()).toString("UTF-8");
} catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
}
I've posted the simple project to http://apparentmotion.com/
downloadables/XSLTest.zip. (47 KB)
Have a great day.
Travis
On Oct 10, 2006, at 3:36 AM, Amedeo Mantica wrote:
Thank you for reply and collaboration
here the link for dile downloads
http://downloads.insigno.net/fileswo.zip
the sourceXML is the XML data grabbed from database (using
WebObjects's NSXMLOutputStream)
the file is perfect. (some /u000d for CR/LF, but I think is ok)
the SimpleTrasformation.xls is an Apple provided XLST file for
removing unuseful data and simplyfing the XML file.
the destinationXML file is the result of sourceXML trasformed
using SimpleTrasformation.xml
myTrasformer.java is the routine that do the XSLT trasformation.
see the accented letters in destinationXML file...
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden