对MSXML4.0 SP2 的支持将在2010年4月结束

友情提示–对MSXML4.0 SP2 的支持将在2010年4月13日结束。如果您的应用程序还在使用MSXML4.0 SP2,您应当将程序升级到MSXML6.0或MSXML 4.0 SP3。有关微软软件生命周期策略的详细信息,请访问微软产品技术支持生命周期网站。 您可能会问为什么我要在这里提起MSXML6.0,它和MSXML4.0之间究竟有些什么关系?详情请阅读下面的历史背景: MSXML4.0发布于2001年4月。和更早期的MSXML版本相比,MSXML4.0不仅提供许多新的功能(如e.g. XSD, SOM, Side-by-Side Functionality),同时性能也有很大的改进(如XSLT的性能)。最新的MSXML4.0 SP3发布于2009年3月,可以完全取代以前的MSXML4.0、MSXML4.0 SP1和MSXML4.0 SP2。一旦MSXML4.0 SP2的支持在2010年4月13日到期,MSXML 4.0 SP3将成为唯一支持的MSXML4.0版本。另外,我们对MSXML4.0 SP3的支持将仅限于安全补丁,目前没有发布更高版本的MSXML4.0 的计划。 MSXML 6.0发布于2006年7月,目的是取代之前的MSXML版本。MSXML 6.0是COM /脚本环境下XML微软本地代码栈的核心,MSXML6.0拥有许多新功能,在性能以及安全性上也更胜一筹。此外,MSXML6.0更接近W3C规范,与System.XML的兼容性也更好。和MSXML4.0相比,大多数Windows操作系统中已经包含了MSXML6.0,从而减轻了手工安装软件包的烦恼–只要您的客户端运行的是Windows XP SP3, Vista RTM/SP1/SP2 或Windows 7,就没有必要安装MSXML6.0了。对于那些运行Windows 2003的系统,请从Microsoft软件中心下载安装MSXML6.0。 我们强烈建议所有MSXML客户尽快升级到MSXML 6.0。如果您要构建新的应用程序,请使用MSXML 6.0。最后,我们十分渴望了解如何能够为客户提供最佳的升级途径。如果您有任何意见请张贴在MSXML的论坛上, 我们非常乐意听到您的声音! 微软MSXML团队


MSXML XHTML DTDs——使互联网更美好

微软刚刚发布了一个新的Windows升级包以改善MSXML组件解析XHTML时对W3C服务器的访问。Windows Update自动更新服务应该已经向你推送了这个升级包,不过你也可以通过以下网页手动下载适合你的版本: http://support.microsoft.com/?kbid=973688(MSXML4 SP2……如果你还没升级到SP3的话!) http://support.microsoft.com/?kbid=973685(MSXML4 SP3) http://support.microsoft.com/?kbid=973686(适用于WinXP SP2和Win2K3的MSXML6独立安装版本) http://support.microsoft.com/?kbid=973687(适用于所有随Windows发布的MSXML3和MSXML6) 这个升级包究竟是干什么的呢?让我们来看看这么一个场景:网页通过AJAX访问远程主机上的XHTML资源,把内容读入XML文档,然后获取部分信息或者把信息追加到当前网页中。很常见的场景,对不对? 问题是,当你通过MSXML读取XHTML的时候,如果没有关闭DTD处理,那么XHTML中的DOCTYPE声明会指引MSXML读取XHTML DTD以便使用&nbsp;之类的实体。可以想象,当许多人访问那些使用AJAX的热门网站时,会对DTD服务器产生多少的访问量。一旦DTD服务器过载而不再响应服务的时候,便会发生各种各样的问题,比如:网站由于无法访问资源而导致服务中断、W3C承担更多的维护工作、用户由于诡异的脚本错误而无法正常访问网站,等等。 这个升级包就是为了解决这个问题而发布的。升级以后的MSXML组件将那些XHTML DTD保存起来,当需要的时候直接返回保存起来的版本,以避免对W3C服务器的访问。这些被保存起来的XHTML DTD已经稳定发布好多年了,新的实体将会在其他的URL中发布,所以你不必担心DTD的使用会受到影响。 尝试着运行以下脚本: function pullXHtml() {     var xml = new ActiveXObject(“Msxml2.DOMDocument.3.0”);     xml.async = false;     xml.loadXML(     “<!DOCTYPE html PUBLIC \”-//W3C//DTD XHTML 1.0 Transitional//EN\” \”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\”>” +     “<html xmlns=’http://www.w3.org/1999/xhtml’ xml:lang=’en’ lang=’en’><head><title>simple document</title></head>” +     “<body><p>a simple&nbsp;paragraph</p></body></html>”);     if (xml.parseError.errorCode !=…


超轻量级MSXML多功能测试程序

MSXML是微软非托管代码栈中最为核心的XML服务集合,不但适合基于COM的开发应用,更是微软AJAX解决方案和客户端XSLT解决方案的核心组件。 上一次我们介绍了一个基于HTML和MSXML6的超轻量级XPATH测试程序。本次我们将推出一个更全面的MSXML测试程序。这个程序可以验证XPath、XSLT、Schema和XDR,并支持Namespace。 整个页面分为五个区域: 1、首先是功能和版本的选择区。版本支持MSXML  3.0、4.0和6.0。而可供选择的功能有XPath 1.0、XSLT 1.0、Schema 1.0 和XDR。其中XDR是MSXML 3.0中用于验证XML的规范,在MSXML 4.0和MSXML 6.0中已经被XML Schema取代。针对每一个功能,都内置了一个示例,用户可以直接点击各个功能查看效果。 2、右上方是Namespaces for XPath,这里定义的namespace可以在XPath查询中使用。每个namespace定义应该以xmlns:开头,每行一个定义。 3、左边是XML文件内容,这个文件内容是为所有功能使用的。 4、中间是XPath/XSL/Schema输入区域,这里的输入是为每个功能单独缓存的。也就是说,当你输入XPath后,切换到XSLT或其他功能,XPath的内容将被缓存并在下次切换回XPath时自动恢复在这个输入框中。 5、右边是结果显示区域。右下方是以HTML方式显示结果或错误信息。黑色代表正确,红色代表错误,灰色代表没有结果返回。 这个页面是基于19英寸显示器开发的,最佳分辨率为1280X1024或1440X900。 同上次一样,你可以把这个程序放在WEB服务器上用IE访问,或者放在自己的文件系统直接用IE打开(如果打开时碰到IE的安全提示,请选择允许)。 点击这里直接运行该程序。 宋伟 软件开发工程师 xmleval.htm


升级到MSXML 6.0

由于历史原因,MSXML有许多版本共存,比如3.0、4.0、5.0和6.0。让我们的客户把他们的应用程序移植到MSXML 6.0上去是我们的最终目标。 虽然我们希望今天每个人都在使用MSXML 6.0,但仍然清醒地意识到迁移需要相当的时间。所以我们将继续在MSXML 3.0上投入资源以支持现有的应用程序以及满足那些需要零发布需求。虽然MSXML 3.0并不具有MSXML6的新特性,不过MSXML 3.0仍然不失为一个稳定而强健的XML平台。MSXML 3.0已经随着Win2000 SP4以及以上的操作系统一起发布,对于应用程序而言可以说无需考虑发布的问题。 MSXML 4.0是MSXML 6.0的前身,不过并不曾随着操作系统发布。虽然我们刚刚发布了MSXML 4.0 SP3,但是就W3C标准以及与System.Xml的兼容性而言,MSXML 6.0是一个巨大的进步。此外,MSXML 6.0还提供64位版本。目前,我们主要在MSXML 6.0和MSXML 3.0上投入精力,所以我们希望用户尽可能迁移到MSXML 6.0,或者根据需要迁移到MSXML 3.0。 最后,如果不是针对Microsoft Office 2003或者Microsoft Office 2007编写程序却使用MSXML 5.0的开发者,应该立即迁移到MSXML 6.0。 摘要 MSXML 6.0是适用于COM和脚本语言环境中的微软XML产品线中的最新版本。本文主要涉及了MSXML 6.0 的安装和应用升级,所支持的操作系统以及其相对于MSXML3和MSXML4的变化。 本文所涉及到的MSXML 6.0的主要变化有以下方面: MSXML 6.0 引入一系列安全方面的改变,默认关闭了安全敏感的特性。 MSXML 6.0 改进了对W3C XSD 1.0 标准的支持,并且提高了与.Net Framework 2.0 中System.Xml的兼容性。 MSXML 6.0 抛弃了若干遗留在MSXML 3.0 和 MSXML 4.0中的特性。 MSXML 6.0…

1

使用HTML和MSXML6.0创建一个超轻量级XPATH测试程序

在开发和调试基于XML的应用的时候,程序员往往为找不到合适的快速桌面XPATH测试软件发愁。诚然,市面上有成套的XML编辑软件,但是它们往往要么太过于庞大,安装维护不是很方便,要么就是不免费,自己写一个吧,又觉得处理UI很烦。特别是在利用MSXML开发软件的程序员,很想使用MSXML直接测试自己写的XPATH对不对。笔者这里提供各位程序员一个基于HTML和MSXML6的超轻量级XPATH测试程序参考和使用: 你可以把这个程序放在WEB服务器上供其他同事共享,或者放在自己的文件系统直接用IE打开(对不起,这个程序只在IE上测试过)。打开后左面的窗口可以贴你的测试XML文本,右边可以随心所欲的敲入你的XPATH语句。在XPATH下方会随你的输入立刻输出可能的XPATH输出结果。红色代表错误,黑色代表正确,灰色代表XPATH的执行没有任何结果返回。 点击这里直接运行该程序。笔者真诚的希望这个小程序会对你的XML和MSXML开发工作有所帮助。 蒋欣 高级软件开发主管 XPathEvaluator.htm

3

现在可以下载MSXML4.0 SP3了

今天,我们很荣幸地宣布MSXML4.0 Service Pack 3 (SP3)可以在微软下载中心下载了! MSXML4.0 SP3支持多种语言。MSXML4.0 SP3修复了许多安全缺陷并提高了软件的可靠性,可以完全取代以前的MSXML4.0、MSXML4.0 SP1和MSXML4.0 SP2。 MSXML4.0大约是九年前发布的,不过早已被MSXML6.0取代,MSXML4.0的存在仅仅是为了更安全地支持遗留系统。目前没有任何在MSXML4.0 SP3中添加新功能的计划。同时,对MSXML4.0 SP2的支持将会在2009年11月结束。 我们强烈建议MSXML4.0的用户尽早迁移到MSXML6.0平台上。MSXML6.0拥有许多新功能,在性能以及安全性上也更胜一筹。此外,MSXML6.0更接近W3C规范,与System.XML的兼容性也更好。请参考Upgrading to MSXML6.0以了解MSXML4.0 和MSXML6.0之间的差异以及迁移时需要注意的事项。 注意:如果你安装过MSXML4.0 SP3 BETA,请务必在安装MSXML4.0 SP3正式版之前先行卸载MSXML4.0 SP3 BETA。对于安装了MSXML4.0 SP3 BETA的Windows Vista和Windows Server 2008的用户,请阅读发行说明。

1

现在可以下载MSXML4 SP3 Beta了

MSXML 团队很高兴地向大家宣布:现在可以下载试用MSXML 4.0 Service Pack 3 (SP3) Beta了! MSXML4 SP3 可以完全替代以前的MSXML4 SP1和MSXML4 SP2。MSXML4 SP3包含以下改进: 修复了许多安全缺陷 提高了软件的可靠性 MSXML 4 SP3适用于下列操作系统: Windows 2000 SP4 Windows XP SP2 Windows XP SP3 Windows Server 2003 SP1 Windows Server 2003 SP2 Windows Vista RTM Windows Vista SP1 Windows Server 2008 您的意见和建议对我们而言非常宝贵,因此请您: 下载安装MSXML 4.0 Service Pack 3 (SP3) Beta并确保您的软件能像以前一样正常运行。 通过Microsoft Connect把您的意见或发现的问题反馈给项目团队。请确保您已经注册过Microsoft…

1

在Internet Explorer中正确使用MSXML

我参与了IE7的开发过程,看到了在IE浏览器中形形色色使用MSXML的方法。显然有一些东西困扰着开发者:MSXML“混乱”的版本以及如何创建“正确”的实例。下面是一段非常常见的代码:if (Web.Application.get_type() == Web.ApplicationType.InternetExplorer) {  var progIDs = [ ‘Msxml2.DOMDocument.6.0’, ‘Msxml2.DOMDocument.5.0’, ‘Msxml2.DOMDocument.4.0’, ‘Msxml2.DOMDocument.3.0’, ‘Msxml2.DOMDocument’ ];   // MSXML5.0、MSXML4.0以及Msxml2.DOMDocument都存在问题  for (var i = 0; i < progIDs.length; i++) {    try {      var xmlDOM = new ActiveXObject(progIDs[i]);      return xmlDOM;    } catch (ex) {    }  }  return null;} 以上代码遍历progIDs数组并且实例化客户端版本最高的MSXML DOM然后返回给调用者。这段代码暗含: 兼容性我们尽力保持各个版本MSXML直接的兼容性,不过,他们之间仍然有不少差别。MSXML 3和MSXML 4是在XML拓荒期时实现的,从中我们学习到了许多经验。MSXML 5是为微软Office产品量身定做的。有时候我们不得不在不同版本上修改某些设计与实现。依次遍历不同的MSXML版本将更容易遇到不期而遇的由于版本行为差异引起的问题。 健壮性由于资源有限,我们不可能修复每个版本中的每个缺陷,于是我们针对性地把资源集中于MSXML 6(最新版本)和MSXML 3(最广泛使用的版本)。 测试成本依赖越多的MSXML版本意味着发布你的应用程序之前需要越多的测试。 在这篇文章中我将简要给出MSXML的历史、生命周期以及版本,通过一个例子提供网络中使用MSXML的最佳实践的细节,以及一些需要注意的地方。…

1