While I’m sure many of you know that Microsoft has released version 4.0 of their XML parser, for those of you who don’t, well you do now… and this should serve as your wake up call!
What Microsoft Says
From Microsoft’s web site:
Microsoft XML Core Services 4.0 RTMThis is the RTM (supported, production quality) release of Microsoft® XML Core Services (MSXML) 4.0, formerly called the Microsoft XML Parser. This version has a number of improvements compared to MSXML 3.0:
- Support of the World Wide Web (W3) Consortium final recommendation for XML Schema, with both DOM and SAX.
- Substantially faster XSLT engine. Our tests show about x4, and for some scenarios x8, acceleration.
- New and substantially faster SAX parser, which is also available in DOM with the NewParser property [use dom.setProperty(“NewParser,” true)].
- Better support for sequential architectures and streamed XML processing based on SAX 2, including DOM-SAX integration and HTML generation.
- Improved standards conformance and scalability. Specifically, the following old, non-conformant technologies have been removed: old XSL with XSLPattern; uuid namespaces for XDR; the proprietary XmlParser object; and the normalize-line-breaks property in SAX. Corresponding standard technologies (XSLT 1.0, XPath 1.0, and http-based namespaces for XDR and SAX2) have been available since MSXML 3.0.
- True side-by-side functionality, which ensures that MSXML 4.0 can work without any collision with previous or future versions of MSXML. As a result, replace mode is removed completely. XmlInst.exe will not work with this release. Version-independent ProgIDs, such as DOMDocument, are also removed. You should use DOMDocument.4.0 to get MSXML 4.0 functionality.
- A number of bug fixes.
As usual, there’s a price to pay in order to get all the latest and greatest features and performance. This time around they’ve removed replace mode which means you can’t use MSXML 4.0 RTM to process things which expect earlier versions as you could in the MSXML 4.0 Tech Preview. For the most part this shouldn’t be a big deal since attempting to do this usually caused more problems then good anyway. Along the same lines, they’ve removed version-independent ProgIDs which should allow for true side-by-side installations of different versions without causing conflicts.
The other major change is the removal of “Legacy Code”. From Microsoft’s web site:
A number of legacy features have been dropped from this release. Most of these are features that are no longer necessary because of replace mode. The eliminated features include:
- Old, non-conformant XSL, which is now replaced completely with W3 standard XSLT 1.0. Complete XSLT 1.0 has been available since MSXML 3.0.
- Old, non-conformant XSLPattern language, which is now replaced completely with W3 standard XPath 1.0. Complete XPath 1.0 has been available since MSXML 3.0.
- Old, non-conformant XDR rudimentary uuid: namespaces. Correct namespace for old XDR support are now the HTTP-based namespaces: urn:schemas-microsoft-com:xml-data and urn:schemas-microsoft-com:datatypes.
- The old, non-standard NodeFactory interface, which was deprecated in MSXML 3.0. This interface was used for XML sequential parsing. It has been replaced completely with the SAX2 parser, which has been available since MSXML 3.0.
- The normalize-line-break feature now has no effect with the SAX parser. Line breaks are always normalized per XML specifications.
Again it shouldn’t be a big deal unless you were relying on one of the things that got changed or removed!