Search code examples
c++msxmlmsxml6msxml3

MSXML XSLT Parser Version


I have a C++ app that uses msxml6.dll to read XML files and apply XSLTs. I determined that MSXML v3.0 is being used for the XSLTs by including the following in one of my XSLT files:

<vendor><xsl:value-of select="system-property('xsl:vendor')"/></vendor>
<version><xsl:value-of select="system-property('ms:version')"/></version>

I don't understand why MSXML v3.0 is used instead of MSXML v6.0. What needs to change for the app to use MSXML v6.0?


Solution

  • When creating msxml object, specify the version explicitly. In vba it goes like this:

    set xml = CreateObject("MSXML2.DomDocument.6.0")
    

    Microsoft discourages using MSXML without specifying the version: Why Version-Independent GUIDs and ProgIDs Were Removed.