MSXML4.0 版中的新增功能 |
本文标签:MSXML4.0,版中的新增功能 MSXML4.0 版中的新增功能 2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新增功能 Microsoft Corporation 2001年10月 下载 MSXML 4.0,网址为 MSDN Downloads(英文) 。 摘要: 本文重点介绍了与版本 3.0 相比,2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版中的新功能和重要变更 。 目录 简介 新功能 并行功能和删除替代模式 重要说明 简介 大家将注意到的第一个变化是 MSXML 的正式新全名 。一开始,MSXML 是提供 XML 分析的组件,因此其全名为 Microsoft® XML Parser 。随着时间的迁移,XML 和 MSXML 在不断发展 。现在 MSXML 提供的功能已远远超出了分析 。自版本 3.0 发布以来,名称一直在变化,现在可以说是大功告成了 。新名称,即 Microsoft® XML Core Services,充分说明了该组件所提供的新功能 。请注意名称的缩写仍和以前相同:MSXML 。 2001 年 9 月发行的 Microsoft XML Core Services (MSXML) 4.0 版是 MSXML 4.0 的正式发行 。该版本提供许多重要的新功能,也有一些重要的变化,尤其是并行功能 。MSXML 4.0 也提供了对已知问题的解决方案;在性能、一致性和文档方面都有所改进并提供附加示例 。 与版本 3.0 相比,MSXML 4.0 提供的改进和附加功能主要包括以下三个方面: 对最终的 World Wide Web Consortium (W3C) XML Schema (XSD) Recommendation 的扩展支持 。 性能上有极大改进 。 基于实际标准 Simple API for XML (SAX2),对连续 XML 处理结构的扩展支持 。 另一个重大变化是删除了替代模式 。MSXML 版本 4.0 和其后的版本将严格地以并行模式进行安装 。这意味着版本独立的 ProgIDs 将不再受支持,而且现有的 Microsoft® Internet Explorer 版本将不能自动使用 MSXML 4.0(如果没有脚本) 。进行此变更的原因在于,根据客户的反馈,独立版本的 ProgIDs 在使用 MSXML 版本 2.6 和其后的版本维护应用程序时会产生许多问题 。 MSXML 3.0 中推出的 ServerXMLHTTPRequest 对象,提供了可靠的服务器端 HTTP 访问(独立于 WinInet) 。该服务器端 HTTP 堆栈功能现在已包含新的 WinHTTP 5.0 组件(随 MSXML 4.0 安装一并推出) 。ServerXMLHTTPRequest 仅为该组件提供前端 。 有关 2001 年 7 月发行的 Microsoft XML Parser (MSXML) 4.0 技术预览中的新功能,请参阅 Whats New in the July 2001 Microsoft XML Parser 4.0 B2 Technology Preview(英文) 。有关 MSXML 4.0 所有功能的详细信息,请参阅该组件随附的文档 。 新功能 XML 架构支持 此版本中的许多功能都提供 XML 架构支持 。您可以使用外部架构缓存或 xsi:schemaLocation/xsi:noNamespaceSchemaLocation 属性,在 SAX 和 DOM 中针对 XML 架构验证 XML 。尽管没有 XPath 2.0,但 MSXML 4.0 可以提供扩展功能(符合标准)以支持处理 XPath 和 XSLT 中的 XSD 类型 。 MSXML 4.0 也使您可以使用 SAX 中的类型发现与 DOM 中的“架构对象模型”(SOM) 来获得已验证的文档中的架构信息 。除了对最终 XML 架构推荐的支持外,MSXML 继续支持 XML-Data Reduced (XDR) 及文档类型定义验证 。 性能改进 此外,MSXML 4.0 也提供新的、更快的 XML 分析程序以及经重大改进的 XSLT 引擎 。通过将 NewParser 属性设置为 “真”,DOM 和新分析程序可以一起使用 。 新分析程序不能支持异步 DOM 载入或 DTD 验证 。除此之外,所有其他功能与旧分析程序相同,只是速度更快 。在测试中,如果只进行分析,MSXML 的性能高出 2 倍;如果进行 XSLT 转换,性能则会高出 4 倍 。 对连续 XML 处理的扩展支持 MSXML 4.0 对基于 SAX2 API 的连续 XML 处理结构提供扩展支持 。包括以下方面: DOM 与 SAX 分析模型的集成 能够生成 HTML 输出 能够将 SAX 内容处理程序插入 XSLT 处理器的输出 跟踪名称空间声明 您现在可以使用 MXXMLWriter 对象从 DOM 树中生成 SAX 事件 。同样,您也可以从 SAX 事件中建立 DOM 树 。该功能使您可以将 DOM 和 SAX 紧密集成到应用程序中 。 MXHTMLWriter,这个新对象使您可以用 SAX 事件输出 HTML,方式与 <xsl:output>XSLT 中的元素从结果树中生成 HTML 的方式一样 。新 MXHTMLWriter 对象为性能卓越的 Active Server Pages (ASP) 提供必要的支持,ASP 可用 SAX 阅读器阅读 XML 文档,将这些文档放入自定义 SAX 筛选器并以 HTML 页的形式将数据输出给用户 。MXHTMLWriter 对象也可用于许多其他应用程序,如手动生成 HTML 页 。 XSLT 处理器现在接受作为输出的 SAX 内容处理程序 。这意味着 SAX 筛选器链可直接处理已转换的 XML 。例如,您可以使用此功能删除 XML 再生成和再分析,从而当传入的 XML 文档需要译入同一本词典时,XML 文档可立即由一个应用程序消耗掉 。 新 MXNamespaceManager 对象使您可以手动跟踪名称空间声明并在当前的上下文或某一 DOM 节点的上下文中加以解析 。虽然 MSXML 支持名称空间,并能自动解析元素和属性的名称,但许多情形下,属性值或元素内容都使用合格的名称 。新 MXNamespaceManager 对象能够跟踪并解析这些合格的名称 。 并行功能和删除替代模式 删除替代模式 直到 MSXML 3.0 版,您才可以使用替代模式使最新的 MSXML 组件模拟 MSXML 2.0(Internet Explorer 5.0 及 5.5 浏览时用它来演示 XML) 。之所以可以这样做,是因为有一个特殊的实用程序,xmlinst.exe,操纵 Microsoft Windows® 注册 。虽然替代模式不是推荐的方法,许多用户仍尝试使用它,结果根据 Microsoft 客户支持的调查,发现在维护应用程序方面有许多问题 。此外,需要维护旧有的功能也使 MSXML 组件超出了原有的分量 。 现在替代模式已从 MSXML 4.0 中完全删除,而且不能使用替代模式用 MSXML 2.0 代替 Internet Explorer 。这意味着如果您用 Internet Explorer 作为默认程序打开 XML 文件,双击 XML 文档后,Internet Explorer 将不会使用 MSXML 4.0 来显示该文档 。仍可以传统方式使用 MSXML 4.0,使用脚本在 HTML 页中操纵 XML 。 删除版本独立的 ProgIDs 由于同样的原因,版本独立的 ProgIDs 已被删除 。该删除是为了提供真正的并行安装,而以前的版本中,在安装 MSXML 新版本时仅某些 ProgIDs 随之升级 。现在 CreateObject("MSXML2.DOMDocument") 实例化的不是 MSXML 4.0 DOM,而是前一版本 。如果您要使用 MSXML 4.0,必须创建如下对象:CreateObject("MSXML2.DOMDocument.4.0") 。因此,对于 C++ 和 Microsoft Visual Basic® 应创建 "MSXML2.DOMDocument40" 。如果要使用 MSXML 4.0 版,所有其他的 MSXML 对象也要做类似的改变 。 这是因为要改进代码的可维护性;而以前的设计,只要环境出现意外变化,很容易发生错误 。简而言之,版本独立的 ProgIDs 对于测试性的 MSXML 非常方便,但是在生产环境中,风险极高 。例如,用户使用版本独立的 ProgIDs 开发了代码,并假设 MSXML 3.0 确实存在 。如果该用户稍后安装或重新安装 Microsoft SQL Server™,可能会意外发现他们正在使用 MSXML 2.6 而非 MSXML 3.0 。将版本独立的 ProgIDs 从 MSXML 4.0 中删除可消除这种不稳定性,并可改进 MSXML 使之成为服务器端的企业级组件 。 删除旧代码 此版本丢弃了许多旧功能 。由于使用了替代模式,大部分功能都不再需要了 。已清除的功能包括: 旧式、非一致性的 XSL,目前已完全由 W3 标准的 XSLT 1.0 取代 。自 MSXML 3.0 后,完整的 XSLT 1.0 即可使用 。 旧式、非一致性的 XSLPattern 语言,目前已完全由 W3 标准的 XPaht 1.0 取代 。自 MSXML 3.0 后,完整的 XPath 1.0 即可使用 。 旧式、非一致性的 XDR 初级 uuid: namespaces 。旧 XDR 支持的正确命名空间现在是基于 HTTP 的名称空间:urn:schemas-microsoft-com:xml-data 及 urn:schemas-microsoft-com:datatype 。 旧的、非标准的 NodeFactory 界面,在 MSXML 3.0 中被降级 。此界面用于 XML 连续分析 。它已完全由 SAX2 分析程序取代 。自 MSXML 3.0 后,SAX2 分析程序即可使用 。 normalize-line-break 功能现在对 SAX 分析程序没有任何影响 。按 XML 规范,断行已完全正常化 。 并行功能 MSXML 4.0 的最终版本在推出时,其 DLL 名称(msxml4.dll、msxml4r.dll 及 msxml4a.dll)与预览版完全相同 。由于删除了版本独立的 ProgIDs,保证了 MSXML 4.0 不会干扰以前安装的 MSXML(2.0、2.6 或 3.0) 。Windows XP 并行安装为 Windows XP 用户做得更彻底 。也就是说,Windows XP 可以采用特殊的并行功能以管理您的应用程序使用 MSXML 的方式及所使用的版本(从 4.0 往后的版本) 。要做到这一点,必须创建一个特殊的应用程序声明,以将应用程序链接到 MSXML 4.0 的特定版本 。有关详细信息,请参阅 Microsoft XML Parser 4.0 B2 and Windows XP(英文) 。如果要用过去使用过的相同方法使用 MSXML,您不必做任何事情;MSXML 会同时以全局(和以前一样)及并行(新)模式安装于 Windows XP 上 。 独立的 WinHTTP 版本 5.0 组件 ServerHTTPRequest 组件的功能现在由独立的 WinHTTP 组件提供 。这是一个新服务器端组件,提供可靠的 HTTP 堆栈功能 。没有 WinHTTP 组件,使用服务器端模式的 ServerHTTPRequest 及 DOM/SAX 将无法访问基于 HTTP 的数据 。如果在运行 Windows NT®/2000/XP OS 的计算机上安装 MSXML 4.0,系统会自动安装 WinHTTP 组件 。然而,对于 Windows 98/Me 情况则不同,WinHTTP 无法在此类系统上运行 。您仍可以在 Windows 98 或 Windows Me 上安装 MSXML,但必须使用默认的 DOM/SAX 模式,或使用 WinInet 组件的 XMLHTTPRequest 对象来提供 HTTP 功能 。WinInet 组件已随 Internet Explorer 预安装在这些 Windows 版本上 。 此版本提供更轻便、更迅速、更一致的 XML 处理组件,用户可安全地在企业级系统的服务器环境中加以使用 。只要可确保客户端计算机上安装了所需的组件,MSXML 4.0 仍可成功地用于环境控制适宜的客户端(与非瘦客户机情况相同) 。 重要说明 如果安装了 MSXML 4.0 Previews (四月或七月的 MSXML 4.0 技术预览版本) 仍可以支持从技术预览直接升级到 RTM 。必须先卸载预览版,再安装 RTM 。您可能需要手动撤消注册并从 system32 目录删除 msxml4*.dll 文件 。要撤消注册 MSXML 4.0 预览版,请运行: regsvr32 /u msxml4.dll 如果已安装了 MSXML 4.0 四月发行的 MSXML 4.0 技术预览版本 请注意版本独立的 ProgIDs 已从 MSXML 4.0 中删除(尽管在四月发行的版本中还存在),所以安装此版本会使它们无法运作 。这也可能严重影响许多使用 MSXML 3.0 的应用程序(如 Microsoft Visual Studio® .NET 安装程序) 。要避免此问题,请从命令行运行以下两个命令并从 system32 目录删除 msxml4*.dll 文件,然后再安装此版本 。 regsvr32 /u msxml4.dll regsvr32 msxml3.dll 这将确保版本独立的 ProgIDs 指向 MSXML 3.0 。请务必在安装此版本前完成上述操作 。如果在您的计算机上没有 regsvr32.exe,则可以从此处下载(英文) 。如果已安装了四月以后发行的版本,请向新闻组寻求帮助 。再次提醒您,可能需手动从 system32 目录删除 msxml4*.dll 文件 。 |