Microsoft XML Core Services (MSXML) is a 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.
Versions
MSXML is a collection of distinct products, released and supported by Microsoft. The product versions can be enumerated as follows:
- MSXML 6.0 MSXML6 is the latest MSXML product from Microsoft, and (along with MSXML3) is shipped with SQL Server 2005, Visual Studio 2005, .NET Framework 3.0 and Windows Vista. It also has support for native 64-bit environments.
- MSXML 5.0 MSXML5 is a binary developed specifically for Microsoft Office. It originally shipped with Office 2003 and also ships with Office 2007.
- MSXML 4.0 MSXML4 was shipped as a separate, downloadable SDK targeted at Independent Software Vendors and third parties.
- 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 and 7.0 use MSXML 3 to parse XML documents loaded in a window.
- 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 SQL Server 2000 and MDAC 2.6.
- 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.
For complete MSXML version information, see the MSXML Version List at Microsoft.
Developing software with MSXML
For new XML-related software development in C++, Microsoft recommends using MSXML 6.0 or XmlLite. For guidance on which version of MSXML to use in the browser, refer to the XML Core Team Blog post, Using MSXML in the Browser at MSDN.
Different versions of MSXML support slightly different sets of functionality. While a complete list of differences is beyond the scope of this article, some examples are provided here.
- 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. Finally, MSXML 6.0 does not support XDR schemas.
- MSXML 5.0 contains an implementation of XML Digital Signatures.
All MSXML products are similar in that they are exposed programmatically as Component Object Model (COM) objects. Developers can program against MSXML objects from C++ or from scripts languages such as JScript and VBScript. Managed .NET Interop with MSXML COM components is not supported or 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 CLSIDs and ProgIDs. For example, to create an MSXML 6.0 DOMDocument object, which exposes the IXmlDomDocument, IXmlDomDocument2, and IXmlDomDocument3 COM interfaces, use the ProgID "MSXML2.DOMDocument.6.0".
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.