XML/XSLT in JavaScript

2019-07-02 00:16发布

问题:

I've been looking into examples of using XML and XSLT in JavaScript and I don't understand the differences between the different options in IE:

  • Msxml2.DOMDocument.6.0
  • Msxml2.DOMDocument.3.0
  • Microsoft.XMLHTTP
  • Microsoft.XMLDom

So when using the approach:

var xml = new ActiveXObject("Xxxxxxx");

With xxxxxx being one of the above variations.

Which should I use? What is the difference between them?

回答1:

Microsoft's COM based XML software package is called MSXML and exists in different versions that can co-exist on a Windows system. All currently supported Microsoft OS versions respectively latest supported service packs of Microsoft OS come with MSXML 3 and MSXML 6. The program ids you pass in to ActiveXObject in JScript are documented for MSXML 3 here: http://msdn.microsoft.com/en-us/library/ms766426%28v=vs.85%29 and for MSXML 6 here: http://msdn.microsoft.com/en-us/library/ms764622%28v=vs.85%29. As you can see, somehow confusingly the program ids start with 'MSXML2' and the MSXML version is appended at the end so an MSXML 3.0 DOM document has the program id MSXML2.DOMDocument.3.0 and an MSXML 6.0 DOM document the program id Msxml2.DOMDocument.6.0.

Program ids starting with Microsoft. are legacy program ids introduced with older MSXML versions, you shouldn't need them these days where MSXML 3 and MSXML 6 are part of the OS or latest service on any supported OS.

As for which version to choose of MSXML 3 or 6, that depends partly on what you want to do; the main difference between MSXML 3 and MSXML 6 is that MSXML 6 has a parser supporting validation against a schema or a schema set while MSXML 3 only supports DTD based validation. MSXML 6 by default also has some tighter security related settings you need to be aware of, see http://msdn.microsoft.com/en-us/library/ms754611%28v=vs.85%29.

As your post also mentions XSLT, both MSXML 3 and 6 support XSLT and XPath 1.0 so in terms of standard compliance you can choose either of them, in terms of performance you might find that MSXML 6 performs better.