Seems like this would be a common question, though I could not find it on SO.
Which version of MSXML should I use in my applications, and more importantly, how should I decide?
There is MSXML3, 4, 5 and 6.
I recently posted some code in calling-wcf-service-by-vbscript that used MSXML v4. AnthonyWJones posted that I shouldn't use 4, but instead 3 or 6, but probably 3. Certainly not v5!
Why? I'd like to know more about the criteria for selecting the version of MSXML to use in my apps.
Bonus question: Does anyone have a summary of the differences between the various versions of MSXML over time?
Summary so far:
MSXML6
Should be first choice. was released in 2006, and includes perf and compliance fixes. Use this if you can. It's good. There are no merge modules; to bundle the MSXML6 runtime with your app, MS suggests packaging the MSXML6 msi file. MSXML6 is an upgrade from MSXML3/4 but does not replace them, because it discontinues some features. You can get the MSI here.
MSXML3
Second choice. Most widely deployed version. Originally shipped in March 2000. Actively maintained, no new features. Currently supported, if you are on SP5 (shipped in 2005) or later. SP7 is current (also from 2005).
MSXML5
was released only as part of MS-Office. Currently supported by Microsoft, but only as part of Office, not for building apps. Don't build apps that depend on MSXML5: Verboten.
MSXML4
originally shipped? Currently in "maintenance mode". Microsoft is encouraging people to move off MSXML4 to MSXML6. Currently supported if you are on MSXML4SP2 or later, which shipped in 2003. download MSXML4SP2 here. Can be redisributed.
Using the right version of MSXML in Internet Explorer is a good entry on the blog from Microsoft's xmlteam.