MSXML4.0 版中的新增功能

2018-09-06 10:41

阅读:801

  MSXML4.0版中的新增功能

2001年9月发行的MicrosoftXMLCoreServices(MSXML)4.0版中的新增功能
MicrosoftCorporation
2001年10月

下载MSXML4.0,网址为MSDNDownloads(英文)。

摘要:本文重点介绍了与版本3.0相比,2001年9月发行的MicrosoftXMLCoreServices(MSXML)4.0版中的新功能和重要变更。

目录

简介
新功能
并行功能和删除替代模式
重要说明

简介
大家将注意到的第一个变化是MSXML的正式新全名。一开始,MSXML是提供XML分析的组件,因此其全名为Microsoft®XMLParser。随着时间的迁移,XML和MSXML在不断发展。现在MSXML提供的功能已远远超出了分析。自版本3.0发布以来,名称一直在变化,现在可以说是大功告成了。新名称,即Microsoft®XMLCoreServices,充分说明了该组件所提供的新功能。请注意名称的缩写仍和以前相同:MSXML。

2001年9月发行的MicrosoftXMLCoreServices(MSXML)4.0版是MSXML4.0的正式发行。该版本提供许多重要的新功能,也有一些重要的变化,尤其是并行功能。MSXML4.0也提供了对已知问题的解决方案;在性能、一致性和文档方面都有所改进并提供附加示例。

与版本3.0相比,MSXML4.0提供的改进和附加功能主要包括以下三个方面:

对最终的WorldWideWebConsortium(W3C)XMLSchema(XSD)Recommendation的扩展支持。
性能上有极大改进。
基于实际标准SimpleAPIforXML(SAX2),对连续XML处理结构的扩展支持。
另一个重大变化是删除了替代模式。MSXML版本4.0和其后的版本将严格地以并行模式进行安装。这意味着版本独立的ProgIDs将不再受支持,而且现有的Microsoft®InternetExplorer版本将不能自动使用MSXML4.0(如果没有脚本)。进行此变更的原因在于,根据客户的反馈,独立版本的ProgIDs在使用MSXML版本2.6和其后的版本维护应用程序时会产生许多问题。

MSXML3.0中推出的ServerXMLHTTPRequest对象,提供了可靠的服务器端HTTP访问(独立于WinInet)。该服务器端HTTP堆栈功能现在已包含新的WinHTTP5.0组件(随MSXML4.0安装一并推出)。ServerXMLHTTPRequest仅为该组件提供前端。

有关2001年7月发行的MicrosoftXMLParser(MSXML)4.0技术预览中的新功能,请参阅WhatsNewintheJuly2001MicrosoftXMLParser4.0B2TechnologyPreview(英文)。有关MSXML4.0所有功能的详细信息,请参阅该组件随附的文档。

新功能
XML架构支持
此版本中的许多功能都提供XML架构支持。您可以使用外部架构缓存或xsi:schemaLocation/xsi:noNamespaceSchemaLocation属性,在SAX和DOM中针对XML架构验证XML。尽管没有XPath2.0,但MSXML4.0可以提供扩展功能(符合标准)以支持处理XPath和XSLT中的XSD类型。

MSXML4.0也使您可以使用SAX中的类型发现与DOM中的“架构对象模型”(SOM)来获得已验证的文档中的架构信息。除了对最终XML架构推荐的支持外,MSXML继续支持XML-DataReduced(XDR)及文档类型定义验证。

性能改进
此外,MSXML4.0也提供新的、更快的XML分析程序以及经重大改进的XSLT引擎。通过将NewParser属性设置为“真”,DOM和新分析程序可以一起使用。

新分析程序不能支持异步DOM载入或DTD验证。除此之外,所有其他功能与旧分析程序相同,只是速度更快。在测试中,如果只进行分析,MSXML的性能高出2倍;如果进行XSLT转换,性能则会高出4倍。

对连续XML处理的扩展支持
MSXML4.0对基于SAX2API的连续XML处理结构提供扩展支持。包括以下方面:

DOM与SAX分析模型的集成
能够生成HTML输出
能够将SAX内容处理程序插入XSLT处理器的输出
跟踪名称空间声明
您现在可以使用MXXMLWriter对象从DOM树中生成SAX事件。同样,您也可以从SAX事件中建立DOM树。该功能使您可以将DOM和SAX紧密集成到应用程序中。

MXHTMLWriter,这个新对象使您可以用SAX事件输出HTML,方式与<xsl:output>XSLT中的元素从结果树中生成HTML的方式一样。新MXHTMLWriter对象为性能卓越的ActiveServerPages(ASP)提供必要的支持,ASP可用SAX阅读器阅读XML文档,将这些文档放入自定义SAX筛选器并以HTML页的形式将数据输出给用户。MXHTMLWriter对象也可用于许多其他应用程序,如手动生成HTML页。

XSLT处理器现在接受作为输出的SAX内容处理程序。这意味着SAX筛选器链可直接处理已转换的XML。例如,您可以使用此功能删除XML再生成和再分析,从而当传入的XML文档需要译入同一本词典时,XML文档可立即由一个应用程序消耗掉。

新MXNamespaceManager对象使您可以手动跟踪名称空间声明并在当前的上下文或某一DOM节点的上下文中加以解析。虽然MSXML支持名称空间,并能自动解析元素和属性的名称,但许多情形下,属性值或元素内容都使用合格的名称。新MXNamespaceManager对象能够跟踪并解析这些合格的名称。

并行功能和删除替代模式
删除替代模式
直到MSXML3.0版,您才可以使用替代模式使最新的MSXML组件模拟MSXML2.0(InternetExplorer5.0及5.5浏览时用它来演示XML)。之所以可以这样做,是因为有一个特殊的实用程序,xmlinst.exe,操纵MicrosoftWindows®注册。虽然替代模式不是推荐的方法,许多用户仍尝试使用它,结果根据Microsoft客户支持的调查,发现在维护应用程序方面有许多问题。此外,需要维护旧有的功能也使MSXML组件超出了原有的分量。

现在替代模式已从MSXML4.0中完全删除,而且不能使用替代模式用MSXML2.0代替InternetExplorer。这意味着如果您用InternetExplorer作为默认程序打开XML文件,双击XML文档后,InternetExplorer将不会使用MSXML4.0来显示该文档。仍可以传统方式使用MSXML4.0,使用脚本在HTML页中操纵XML。

删除版本独立的ProgIDs
由于同样的原因,版本独立的ProgIDs已被删除。该删除是为了提供真正的并行安装,而以前的版本中,在安装MSXML新版本时仅某些ProgIDs随之升级。现在CreateObject(MSXML2.DOMDocument)实例化的不是MSXML4.0DOM,而是前一版本。如果您要使用MSXML4.0,必须创建如下对象:CreateObject(MSXML2.DOMDocument.4.0)。因此,对于C++和MicrosoftVisualBasic®应创建MSXML2.DOMDocument40。如果要使用MSXML4.0版,所有其他的MSXML对象也要做类似的改变。

这是因为要改进代码的可维护性;而以前的设计,只要环境出现意外变化,很容易发生错误。简而言之,版本独立的ProgIDs对于测试性的MSXML非常方便,但是在生产环境中,风险极高。例如,用户使用版本独立的ProgIDs开发了代码,并假设MSXML3.0确实存在。如果该用户稍后安装或重新安装MicrosoftSQLServer™,可能会意外发现他们正在使用MSXML2.6而非MSXML3.0。将版本独立的ProgIDs从MSXML4.0中删除可消除这种不稳定性,并可改进MSXML使之成为服务器端的企业级组件。

删除旧代码
此版本丢弃了许多旧功能。由于使用了替代模式,大部分功能都不再需要了。已清除的功能包括:

旧式、非一致性的XSL,目前已完全由W3标准的XSLT1.0取代。自MSXML3.0后,完整的XSLT1.0即可使用。
旧式、非一致性的XSLPattern语言,目前已完全由W3标准的XPaht1.0取代。自MSXML3.0后,完整的XPath1.0即可使用。
旧式、非一致性的XDR初级uuid:namespaces。旧XDR支持的正确命名空间现在是基于HTTP的名称空间:urn:schemas-microsoft-com:xml-data及urn:schemas-microsoft-com:datatype。
旧的、非标准的NodeFactory界面,在MSXML3.0中被降级。此界面用于XML连续分析。它已完全由SAX2分析程序取代。自MSXML3.0后,SAX2分析程序即可使用。
normalize-line-break功能现在对SAX分析程序没有任何影响。按XML规范,断行已完全正常化。
并行功能
MSXML4.0的最终版本在推出时,其DLL名称(msxml4.dll、msxml4r.dll及msxml4a.dll)与预览版完全相同。由于删除了版本独立的ProgIDs,保证了MSXML4.0不会干扰以前安装的MSXML(2.0、2.6或3.0)。WindowsXP并行安装为WindowsXP用户做得更彻底。也就是说,WindowsXP可以采用特殊的并行功能以管理您的应用程序使用MSXML的方式及所使用的版本(从4.0往后的版本)。要做到这一点,必须创建一个特殊的应用程序声明,以将应用程序链接到MSXML4.0的特定版本。有关详细信息,请参阅MicrosoftXMLParser4.0B2andWindowsXP(英文)。如果要用过去使用过的相同方法使用MSXML,您不必做任何事情;MSXML会同时以全局(和以前一样)及并行(新)模式安装于WindowsXP上。

独立的WinHTTP版本5.0组件
ServerHTTPRequest组件的功能现在由独立的WinHTTP组件提供。这是一个新服务器端组件,提供可靠的HTTP堆栈功能。没有WinHTTP组件,使用服务器端模式的ServerHTTPRequest及DOM/SAX将无法访问基于HTTP的数据。如果在运行WindowsNT®/2000/XPOS的计算机上安装MSXML4.0,系统会自动安装WinHTTP组件。然而,对于Windows98/Me情况则不同,WinHTTP无法在此类系统上运行。您仍可以在Windows98或WindowsMe上安装MSXML,但必须使用默认的DOM/SAX模式,或使用WinInet组件的XMLHTTPRequest对象来提供HTTP功能。WinInet组件已随InternetExplorer预安装在这些Windows版本上。

此版本提供更轻便、更迅速、更一致的XML处理组件,用户可安全地在企业级系统的服务器环境中加以使用。只要可确保客户端计算机上安装了所需的组件,MSXML4.0仍可成功地用于环境控制适宜的客户端(与非瘦客户机情况相同)。

重要说明
如果安装了MSXML4.0Previews(四月或七月的MSXML4.0技术预览版本)
仍可以支持从技术预览直接升级到RTM。必须先卸载预览版,再安装RTM。您可能需要手动撤消注册并从system32目录删除msxml4*.dll文件。要撤消注册MSXML4.0预览版,请运行:

regsvr32/umsxml4.dll

如果已安装了MSXML4.0四月发行的MSXML4.0技术预览版本
请注意版本独立的ProgIDs已从MSXML4.0中删除(尽管在四月发行的版本中还存在),所以安装此版本会使它们无法运作。这也可能严重影响许多使用MSXML3.0的应用程序(如nbsp;安装程序)。要避免此问题,请从命令行运行以下两个命令并从system32目录删除msxml4*.dll文件,然后再安装此版本。

regsvr32/umsxml4.dll
regsvr32msxml3.dll

这将确保版本独立的ProgIDs指向MSXML3.0。请务必在安装此版本前完成上述操作。如果在您的计算机上没有regsvr32.exe,则可以从此处下载(英文)。如果已安装了四月以后发行的版本,请向新闻组寻求帮助。再次提醒您,可能需手动从system32目录删除msxml4*.dll文件。


评论


亲,登录后才可以留言!