# MSXML

Microsoft XML Core Services (MSXML) are set of services that allow applications written in JScript, VBScript, and Microsoft development tools to build Windows-native XML-based applications. It supports XML 1.0, DOM, SAX, an XSLT 1.0 processor, XML schema support including XSD and XDR, as well as other XML-related technologies.

## Overview

All MSXML products are similar in that they are exposed programmatically as OLE Automation (a subset of COM) components. Developers can program against MSXML components from C, C++ or from Active Scripting languages such as JScript and VBScript. Managed .NET Interop with MSXML COM components is not supported nor recommended.
As with all COM components, an MSXML object is programmatically instantiated by CLSID or ProgID. Each version of MSXML exposes its own set of CLSID's and ProgIDs. For example, to create an MSXML 6.0 DOMDocument object, which exposes the IXmlDomDocument, IXmlDomDocument2, and IXmlDomDocument3 COM interfaces, the ProgID "MSXML2.DOMDocument.6.0" must be used.
MSXML also supports version-independent ProgIDs. Version-independent ProgIDs do not have a version number associated with them. For example, "Microsoft.XMLHTTP". These ProgIDs were first introduced in MSXML 1.0, however are currently mapped to MSXML 3.0 objects and the msxml3.dll.
Different versions of MSXML support slightly different sets of functionality. For example, while MSXML 3.0 supports only XDR schemas, it does not support XSD schemas. MSXML 4.0, MSXML 5.0, and MSXML 6.0 support XSD schemas. However, MSXML 6.0 does not support XDR schemas. Support for XML Digital Signatures is provided only by MSXML 5.0. For new XML-related software development, Microsoft recommends using MSXML 6.0 or its lightweight cousin, XmlLite, for native code-only projects.

## Versions

MSXML is a collection of distinct products, released and supported by Microsoft. The product versions can be enumerated as follows:

### Current

* MSXML 6.0 MSXML6 is the latest MSXML product from Microsoft, and (along with MSXML3) is shipped with Microsoft SQL Server 2005, Visual Studio 2005, .NET Framework 3.0, as well as Windows XP Service Pack 3, Windows Vista and every subsequent versions of Windows up to Windows 11. It also has support for native 64-bit environments. It is an upgrade but not replacement for versions 3 and 4 as they still provide legacy features not supported in version 6. Version 6, 4, and 3 may all be installed and running concurrently. MSXML 6 is not supported on Windows 9x. Windows XP SP3 includes MSXML 6.0 SP2.
* MSXML 3.0 MSXML3 is a current MSXML product, represented by msxml3.dll. MSXML 3.0 SP2 first shipped with Windows XP, Internet Explorer 6.0 and MDAC 2.7. Windows XP SP2 includes MSXML 3.0 SP5 as part of MDAC 2.81. Windows 2000 SP4 also ships with MSXML 3.0. By default, Internet Explorer version 6.0, 7.0 and 8.0 use MSXML 3 to parse XML documents loaded in a window. MSXML 3.0 SP7 is the last supported version for Windows 95. Windows XP SP3 includes MSXML 3.0 SP9. Windows Vista also includes MSXML 3.0 (SP10).

### Obsolete

* MSXML 5.0 MSXML5 was a binary developed specifically for Microsoft Office. It originally shipped with Office 2003 and also ships with Office 2007. Microsoft has not released documentation for this version because Microsoft considers MSXML 5 an internal/integrated component of Office 2003. MSXML 5 is not included in Office 2010.
* MSXML 4.0 MSXML4 was shipped as an independent, downloadable SDK targeted at independent software vendors and third parties. It is an upgrade for, but not a replacement to MSXML3 as version 3 still provides legacy features. There is no 64-bit version offered, although the 32-bit version was supported for 32-bit processes on 64-bit operating systems. Versions 4 and 3 may be run concurrently. MSXML 4.0 SP3 is the most recent version released in March 2009, SP2 support expired in April 2010, and MSXML 4.0 SP3 expired in April 2014.
* MSXML 2.6 This is an early version of MSXML, and is represented by msxml2.dll. This product is no longer supported by Microsoft, and the CLSIDs and ProgIDs it exposes have been subsumed by MSXML 3.0. MSXML 2.6 shipped with Microsoft SQL Server 2000 and MDAC 2.6. The last version for all platforms was released as KB887606.
* MSXML 2.5 This is an early version of MSXML, and is represented by msxml.dll. This version is also no longer supported by Microsoft, and the CLSIDs and ProgIDs it exposes have been subsumed by MSXML 3.0. MSXML 2.5 shipped with Windows 2000 as part of Internet Explorer 5.01 and MDAC 2.5.
* MSXML 2.0a This version shipped with Internet Explorer 5.0. No longer supported.
* MSXML 1.0 This version shipped with Internet Explorer 4.0. No longer supported.