xsl-list
[Top] [All Lists]

RE: IXSLProcessor - input in UTF-8?

2005-09-13 08:32:08
I get the XML from a COM-object that I use in an ASP page:

<% @LANGUAGE="VBSCRIPT" %>

<%
option explicit
Response.Expires=-1
'Response.ContentType = "text/html"

' setup XML-server
------------------------------------------------------------------
dim o
set o = Server.CreateObject("MwebbCOM.MwebbCOM.1")
o.httpRemoteUser = Request.ServerVariables("REMOTE_USER")
o.httpRemoteAddr = Request.ServerVariables("REMOTE_ADDR")
o.httpQueryString = Request.QueryString
o.BeginTransaction


' --------------------------------------------------------------------
' setup ADODB Stream -------------------------------------------------
dim oStream
set oStream = createobject("Adodb.Stream")
oStream.Type = 2
oStream.Charset = "UTF-8"
oStream.open

oStream.writeText o.document
oStream.position = 0

' load XML and XSL ---------------------------------------------------
dim domXML, domXSL, processor, template
set domXSL = Server.createObject("MSXML2.FreeThreadedDOMDocument.5.0")
set domXML = Server.createObject("MSXML2.DOMDocument.5.0")

domXSL.load(Server.MapPath("XSL/PC/PC-templates.xsl"))

domXML.load(oStream)

' output with IXSLProcessor ------------------------------------------
Set template = Server.CreateObject("MSXML2.XSLTemplate.5.0")
template.stylesheet = domXSL
set processor = template.createProcessor()

processor.input = domXML
processor.output = Response
processor.transform()
%>

As you can see I put the XML in a stream and then load it into a DOM XML
object. This serves as input to IXSLProcessor.

The xml has the declaration <?xml version="1.0" encoding="UTF-8"?>

What could be non XML aware in my code?

-----Ursprungligt meddelande-----
Från: andrew welch [mailto:andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com]
Skickat: den 13 september 2005 17:18
Till: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Ämne: Re: [xsl] IXSLProcessor - input in UTF-8?

On 9/13/05, Gabriel <gabriel(_dot_)klappenbach(_at_)gmail(_dot_)com> wrote:
The input XML of course defines the encoding as UTF-8, and really is
encoded
in UTF-8, but IXSLProcessor still reads it as ISO-8859-1. So it ignores
the
declaration in the XML file.

The transform is taking place server side.

So are you saying the IXSProcessor is supposed to be able to read the
encoding specified in the XML file?

Yes - If the encoding is specified in the xml prologue in the file
then the xml parser has to read the file in that encoding - if it
doesn't then its non-conforming.

You may be doing by accident what I was trying to achieve the other
day - parse the file in a particular encoding ignoring the encoding
given in the prolog.  How are you reading the XML into the transform?
If it's in a non-xml aware way then you are likely reading the bytes
in the platform encoding and then the characters as XML.

In Java this is a FileInputStream -> InputStreamReader.  The
FileInputStream doesn't know about XML and so reads the file in
whatever encoding you tell it to.

If you post some code someone might know the equivalent in .Net

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--