As I’ve mentioned in the previous post, MSXML functions called from ASP believe they work in UTF-16 environment. The transformNode function might insert this information in the output string based on several parameters, one of them being the version of the MSXML ActiveX control. To test behavior of various versions of MSXML, we’ll use the following test program:
<% Const DOMClass = "MSXML2.DOMDocument" Set XSLT = Server.CreateObject(DOMClass) Set XDoc = Server.CreateObject(DOMClass) XDoc.loadXML("<root greek='β' ee='č' />") XSLT.load(Server.MapPath("SampleXSLT.xsl")) Response.Clear Response.Charset = "utf-8" Response.Codepage = 65001 Response.Write XDoc.transformNode(XSLT) %>
And a stylesheet similar to this one:
<?xml version="1.0" encoding="utf-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="utf-8" /> <xsl:template match="root"> <output> <node type="test"> Greek letter: <xsl:value-of select="@greek" /> EE: <xsl:value-of select="@ee" /> </node> </output> </xsl:template> </xsl:stylesheet>
We’ll test two MSXML versions: MSXML3 (default with Windows XP) and MSXML6 (default with Vista, also available on Windows XP). MSXML3 should be available on almost all web servers, you might not get MSXML6 everywhere (my hosting provider did not offer it when it mattered most to me).
The test results will be published in the next few posts.
No comments:
Post a Comment