Marc Portier wrote:

? sorry. I'm afraid I don't understand what you tested and what was the outcome
In my previous message I said that setting output encoding solves the problem. But it's not true.

my turn to be sorry, I've running out of clues here
maybe you can send over how your script looks like now

Here you are:


cocoon.load("resource://org/apache/cocoon/woody/flow/javascript/woody2.js");

function form2xml(form) {
var documentURI = cocoon.parameters["documentURI"];
var document = loadDocument(documentURI);
form.load(document);
form.showForm("form2-display-pipeline");
form.save(document);
saveDocument(document, makeTargetURI(documentURI));
cocoon.sendPage("form2-success-pipeline");
}


function makeTargetURI(path) {
// var sfx = ".xml";
var newSfx = "";
var newPath = path;
// if (path.match(/^.*\.xml$/)) {
// newPath = path.substring(0, path.length - ".xml".length);
// }
return newPath + newSfx;
}


function loadDocument(uri) {
var parser = null;
var source = null;
var resolver = null;
try {
parser = cocoon.getComponent(Packages.org.apache.excalibur.xml.dom.DOMParser.ROLE);
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.RO LE);
source = resolver.resolveURI(uri);
var is = new Packages.org.xml.sax.InputSource(source.getInputStream());
is.setSystemId(source.getURI());
return parser.parseDocument(is);
} finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(parser);
cocoon.releaseComponent(resolver);
}
}


function saveDocument(document, uri) {
var source = null;
var resolver = null;
var outputStream = null;
try {
resolver = cocoon.getComponent(Packages.org.apache.cocoon.environment.SourceResolver.RO LE);
source = resolver.resolveURI(uri);


var tf = Packages.javax.xml.transform.TransformerFactory.newInstance();

if (source instanceof Packages.org.apache.excalibur.source.ModifiableSource
&& tf.getFeature(Packages.javax.xml.transform.sax.SAXTransformerFactory.FEATURE )) {


outputStream = source.getOutputStream();
var transformerHandler = tf.newTransformerHandler();
var transformer = transformerHandler.getTransformer();
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.ENCODI NG, "UTF-8");
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.INDENT , "true");
transformer.setOutputProperty(Packages.javax.xml.transform.OutputKeys.METHOD , "xml");
transformerHandler.setResult(new Packages.javax.xml.transform.stream.StreamResult(outputStream));
var streamer = new Packages.org.apache.cocoon.xml.dom.DOMStreamer(transformerHandler);
streamer.stream(document);
} else {
throw new Packages.org.apache.cocoon.ProcessingException("Cannot write to source " + uri);
}
} finally {
if (source != null)
resolver.release(source);
cocoon.releaseComponent(resolver);
if (outputStream != null) {
try {
outputStream.flush();
outputStream.close();
} catch (error) {
cocoon.log.error("Could not flush/close outputstream: " + error);
}
}
}
}



Timur


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to