[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hi Steve, William,
This is one way to do it. The source of the original problem was actually with the settings for the internal XML Writer, which defaults to UTF-16 (partially true, real UTF-16 is not supported by Microsoft, notably, MS does not support surrogate pairs) and if you "just" write the results of an XsltProcessor, it ends up being UTF-16.
By setting a custom writer with your properties, for the encoding you will effectively create the correct output stream in one go, without having to use Response.Write.Replace. I.e., in C# it looks a bit like this:
// instantiate an XmlWriter
XmlWriter xmlWriter = XmlWriter.Create("output.xml");
xmlWriter.Settings.Encoding = "UTF-8"; XslCompiledTransform xslt = new XslCompiledTransform(true);
// load stylesheet and transform to "output.xml" (but you can use any stream)
xslt.Load("Xslt/test.xslt", xsltSettings, null);
xmlWriter = XmlWriter.Create("output.xml");
xslt.Transform("Xslt/test.xslt", xsltArgs, xmlWriter);
xmlWriter.Close();
This is using the classes from ASP.NET 2.0 so you if you want to use this you may have to adjust it to your situation.
W Charlton wrote:
Re: [xsl] IE error | Switch from current encoding to specified encoding not supported.
Subject: Re: [xsl] IE error | Switch from current encoding to specified encoding not supported. From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Wed, 03 Oct 2007 19:34:18 +0200 |
Hi Steve, William,
This is one way to do it. The source of the original problem was actually with the settings for the internal XML Writer, which defaults to UTF-16 (partially true, real UTF-16 is not supported by Microsoft, notably, MS does not support surrogate pairs) and if you "just" write the results of an XsltProcessor, it ends up being UTF-16.
By setting a custom writer with your properties, for the encoding you will effectively create the correct output stream in one go, without having to use Response.Write.Replace. I.e., in C# it looks a bit like this:
// instantiate an XmlWriter
XmlWriter xmlWriter = XmlWriter.Create("output.xml");
xmlWriter.Settings.Encoding = "UTF-8"; XslCompiledTransform xslt = new XslCompiledTransform(true);
// enable document function and scripting XsltSettings xsltSettings = new XsltSettings(true, true);
// load stylesheet and transform to "output.xml" (but you can use any stream)
xslt.Load("Xslt/test.xslt", xsltSettings, null);
xmlWriter = XmlWriter.Create("output.xml");
xslt.Transform("Xslt/test.xslt", xsltArgs, xmlWriter);
xmlWriter.Close();
This is using the classes from ASP.NET 2.0 so you if you want to use this you may have to adjust it to your situation.
Cheers, -- Abel Braaksma
W Charlton wrote:
Steve,
If you are using ASP then you will need to add a replace function.
Below is a snip of some code we use.
Set XSLTemp = Server.CreateObject(MSXML2.XSLTemplate.3.0) Set XSLTemp.stylesheet = XSLDoc 'variable set higher up in page e.g. c:\myfiles\myxsl.xsl Set XSLProc = XSLTemp.createProcessor XSLProc.input = XMLDoc 'variable set higher up in page e.g. c:\myfiles\myxsl.xml XSLProc.addParameter "MyParam", "MyParamValue" XSLProc.transform Response.Charset = "ISO-8859-15"
Response.Write Replace(XSLProc.output, "UTF-16", "ISO-8859-15")
If you want UTF-8 replace ISO-8859-15 (Latin 1 extended) with UTF-8
William Charlton The yMonda team yMonda Limited w: www.ymonda.net
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] IE error | Switch from cu, Abel Braaksma | Thread | Re: [xsl] IE error | Switch from cu, Steve |
RE: [xsl] IE error | Switch from cu, W Charlton | Date | Re: [xsl] IE error | Switch from cu, Steve |
Month |