Actually those program ids can be confusing, if you have an application using the program id "MSXML2.XSLTemplate40" then that application uses MSXML version 4. The prefix "MSXML2 is common to all supported MSXML versions i.e. MSXML version 3 has program
ids like "MSXML2.DOMDocument.3.0", MSXML version 6 program ids like "MSXML2.DOMDocument.6.0". See http://msdn.microsoft.com/en-us/library/ms766426%28v=vs.85%29.aspx and http://msdn.microsoft.com/en-us/library/ms754671%28v=vs.85%29.aspx and http://msdn.microsoft.com/en-us/library/ms764622%28v=vs.85%29.aspx
for details on the program ids.