网络编程 
首页 > 网络编程 > 浏览文章

MSXML4.0 版中的新增功能

(编辑:jimmy 日期: 2024/11/8 浏览:3 次 )
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 技术预览中的新功能,请参阅 What's 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 文件。
上一篇:关于ASP生成伪参数技巧
下一篇:msxml3.dll 错误 800c0005 解决方案