[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] MSXML2 and encoding


Subject: RE: [xsl] MSXML2 and encoding
From: Américo Albuquerque <melinor@xxxxxxx>
Date: Tue, 19 Aug 2003 22:49:35 +0100

Hi

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Teresa Rippeon
> Sent: Tuesday, August 19, 2003 9:44 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] MSXML2 and encoding 
> 
> 
> 
> Whenever I tranform one XML file to another using MSXML2, I 

You are not using MSXML2 but MSXML3. the object name is MSXML2 but the
version is not
Besides MSXML2 doesn't support xslt


> get the XML processing instruction with an encoding value of 
> "UTF-16" ( <?xml version="1.0" encoding = "UTF-16">). Of 
> course, then when the file is launched in IE 6, I get the 
> error that it can't switch to the specified encoding. I 
> really just want either no encoding specified or encoding = 
> "UTF-8". I've even tried specifying an encoding of "UTF-8". 
> Any advice?
> 
> Here's the beginning of my stylesheet:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format">
> 
> <xsl:output indent="yes" media-type="xml" 
> encoding="UTF-8"></xsl:output>
> 
> 
> And here's the VB code for using MSXML2, if that helps...
> 
>       'Load the XML data
>       Set source_xml = New MSXML2.DOMDocument30

Here you define the version you are using. DOMDocument30 is MSXML3

>       source_xml.async = False
>       source_xml.Load (source_doc)
>       If (source_xml.parseError.errorCode <> 0) Then
>         GoTo Errorhandling
>       End If
>       
>       'Load the stylesheet
>       Set tranform_stylesheet = New MSXML2.DOMDocument30
>       tranform_stylesheet.async = False
>       tranform_stylesheet.Load (stylesheet_doc)
>       If (tranform_stylesheet.parseError.errorCode <> 0) Then
>         GoTo Errorhandling
>       End If
> 
>       new_xml_string = source_xml.transformNode(tranform_stylesheet)

Here lies your problem. You are setting the result of your transformation to
a string variable. In this way you always get encoding="utf-16", the
encoding used by strings in VB 

You need to use transformNodeToObject method and serialize the
transformation to a stream. If you are doing this on the server in an asp
page you can serialize directly to the response object like:
 source_xml.transformNodeToObject(transform_stylesheet, Response)

Regards,
Americo Albuquerque


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords