Microsoft XML Parser 3.0 版本中的新内容
Microsoft Corporation
Microsoft® XML Parser (MSXML) 3.0 版本是用户期待已久的 MSXML 产品版本。它远远超越了 Microsoft Windows® 2000 附带的 MSXML 2.5 版本。此版本:
完整实现了 W3C (World Wide Web Consortium) 的可扩展样式表语言转换 (XSLT) 和 XML 路径语言 (XPath) 标准。
使用大量的帮助器对象完成 COM/Microsoft ActiveX® Simple API for XML (SAX2) 实现。在 C++、Microsoft Visual Basic® 和脚本环境中可以访问这些帮助器对象。请参阅使用 C++ 创建 SAX2 应用程序的起点(英文)和 使用 Visual Basic 创建 SAX2 应用程序的起点(英文)文章以了解其他信息。
用于在服务器端应用程序的服务器安全 HTTP 访问。
进一步加强对文档对象模型 (DOM) 和名称空间的支持。
与 W3C XML 1.0、Namespaces 1.0 标准和高级结构化信息标准 (OASIS) XML 1.0 测试套件高度一致。
修正了若干错误,一般性能也得到改善。
自 2000 年 9 月 MSXML 3.0 Beta 版本发行以来,此 MSXML 3.0 版本仅做出了很小更改(主要是性能改善),其中也包括对 SAX2 API 实现的细微更改。
本文概述了自 2000 年 9 月 MSXML 3.0 Beta 版本以来的新特性。有关进一步的详细信息,请参阅语法分析程序附带的 MSXML 参考文档。
要了解 MSXML Beta 版本以前的版本中包括的新特性,请参阅 2000 年 9 月 Microsoft XML Parser Beta 发行版的新内容。请注意,这一产品版本支持以前版本中的所有新特性。
并排功能
MSXML 3.0 版本与 2000 年 9 月 MSXML Beta 版本具有相同的 ProgID 和 ClassID。请注意此版本中的实际文件名称(msxml3.dll、msxml3a.dll 和 msxml3r.dll)没有更改。
MSXML 3.0 版本以并排模式安装语法分析程序 (msxml3.dll),这意味着安装此版本的语法分析程序不会替代以前安装的 MSXML 版本。新、旧语法分析程序将“并排”驻留在计算机内。如果您不想以并排模式运行语法分析程序,可以使用称为 xmlinst.exe 的工具以替代模式运行 MSXML 3.0。此选项会将指向以前 MSXL 版本的应用程序引用重新映射到 MSXL 3.0。MSXML 3.0 的以前版本将自动安装 xmlinst.exe,并将分析程序作为安装过程的一部分。不过,在此产品版本和 9 月份的 Beta 版本中,xmlinst.exe 工具是以下载方式提供的。
注意: 运行 xmlinst.exe 将导致计算机处于不稳定状态。有关使用 xmlinst.exe 的详细信息,请参阅知识库中的文章在产品服务器上运行 Xmlinst.exe 后出现的应用程序错误(英文)。
服务器安全 HTTP
尽管 2000 年 9 月的 MSXML Beta 版本中已经包括了服务器安全 HTTP 实现,这里仍然有必要再次提及。使用此特性,MSXML 在服务器安全环境中通过网络访问 XML 不再需要附加组件。
服务器安全 HTTP 的功能与 XMLHTTP 对象相似,但采用了服务器安全的方式。要利用服务器安全 HTTP,可以使用 XMLDOMDocument2 的 setProperty 方法或者 SAXXMLReader的 setFeature 方法。或者,您可以将这个新对象作为一般服务器端 HTTP 访问组件来独立使用。
对于在 intranet 上运行的服务器,需要运行 proxycfg.exe 工具以配置 WinHTTP,使它能够通过代理服务器访问 HTTP 和 HTTPS 服务器。例如,您可以将 proxycfg.exe 工具作为应用程序部署和安装过程中的一部分(此应用程序使用 ServerXMLHTTP 组件访问 WinHTTP)。
SAX2 实现的变化
与 2000 年 9 月的 MSXML Beta 版本相比较,此 MSXML 3.0 版的 ErrorHandler 接口有以下 API 变化:
对于 Visual C++ 中 ISAXErrorHandler 接口的所有三种方法,将使用错误消息字符串而不是 IErrorInfo 对象。
为防止自动化环境中的冲突,用于 Visual C++ 和 Visual Basic 接口(ISAXErrorHandler 和 IVBSAXErrorHandler)的 warning 方法现在改为 ignorableWarning 方法。