[转]MSXML版本历史
概要:
- 使用MSXML 6。它隨著Vista發(fā)布,也提供在Win2k、XP和2003的安裝包。它最安全、性能最好、可靠性最好、最符合W3C標(biāo)準(zhǔn)。
- MSXML 3是我們最推薦的替補(bǔ)——從Win2k SP4開(kāi)始,你幾乎可以在所有操作系統(tǒng)上找到它。你幾乎不用考慮軟件發(fā)布的問(wèn)題。而且它經(jīng)常隨著操作系統(tǒng)升級(jí)。
- MSXML 4是七年前發(fā)布的,不過(guò),現(xiàn)在已經(jīng)被MSXML 6取代,應(yīng)該僅僅用于支持舊版應(yīng)用程序(legacy applications)。
- MSXML 5是為微軟Office量身定做,并不是為普通的開(kāi)發(fā)而設(shè)計(jì)的。Internet Explorer 7在Internet Zone默認(rèn)不會(huì)直接運(yùn)行MSXML5——當(dāng)你嘗試實(shí)例化MSXML5時(shí)IE會(huì)跳出提示欄。此外,只有安裝了Office 2003及以上的系統(tǒng)會(huì)有MSXML5。總之,應(yīng)該盡量避免在網(wǎng)絡(luò)應(yīng)用中使用MSXML5。
- 事實(shí)上,MSXML5 組件是默認(rèn)關(guān)閉的。
MSXML生命周期和歷史
說(shuō)來(lái)話長(zhǎng),不如讓我們回顧不同版本的MSXML、發(fā)布背景以及定位。
讓我們的客戶把他們的應(yīng)用程序移植到MSXML6上去是我們的最終目標(biāo)。說(shuō)到發(fā)布,MSXML 6將隨著操作系統(tǒng)一起發(fā)布,這樣網(wǎng)頁(yè)作者以及軟件開(kāi)發(fā)人員都可以方便地使用這個(gè)部件而不用考慮發(fā)布的問(wèn)題。不過(guò),由于客戶需要在所有微軟支持的操作系統(tǒng)上使用同樣的XML API,我們?nèi)匀恍枰环N方法使得新的XML技術(shù)可以應(yīng)用到較低版本的操作系統(tǒng)(Win2k、Win XP和Win2k3)中。
MSXML 6已經(jīng)隨著Vista一起發(fā)布,不過(guò)對(duì)于以前的操作系統(tǒng),則需要單獨(dú)安裝發(fā)行包。我們希望MSXML6與較低版本的操作系統(tǒng)的下一個(gè)Service Pack一起發(fā)布,但是我們需要足夠的商業(yè)需求才可以這樣做。所以,我們的近期和中期計(jì)劃是仍然保持發(fā)布一個(gè)可以安裝在較低版本操作系統(tǒng)上的MSXML6 可再發(fā)行組件包(Redistributable Package)。在以后的博文中,我們會(huì)詳細(xì)講述遷移到MSXML6的好處。
雖然我們希望今天每個(gè)人都在使用MSXML6,但仍然清醒地意識(shí)到遷移需要相當(dāng)?shù)臅r(shí)間。所以我們將繼續(xù)在MSXML3上投入資源以支持現(xiàn)有的應(yīng)用程序以及滿足那些需要零發(fā)布需求。雖然MSXML3并不具有MSXML6的新特性,不過(guò)MSXML3仍然不失為一個(gè)穩(wěn)定而強(qiáng)健的XML平臺(tái)。MSXML3已經(jīng)隨著Win2000 SP4以及以上的操作系統(tǒng)一起發(fā)布,對(duì)于應(yīng)用程序而言可以說(shuō)無(wú)需考慮發(fā)布的問(wèn)題。以后,MSXML3的更新將會(huì)隨著每種操作系統(tǒng)的Service Pack一起發(fā)布。 MSXML3 SP7 是最后一個(gè)以可再發(fā)行組件包形式發(fā)布的MSXML3 Service Pack。以后,我們的合作伙伴和客戶將不會(huì)有使用MSXML3更新的可再發(fā)行組件包的需求。
MSXML4是MSXML6的前身,不過(guò)并不曾隨著操作系統(tǒng)發(fā)布。就穩(wěn)定性、安全性、W3C標(biāo)準(zhǔn)以及與System.Xml的兼容性而言,MSXML6是一個(gè)巨大的進(jìn)步。此外,MSXML6還提供64位版本。目前,我們主要在MSXML6和MSXML3上投入精力,所以我們希望用戶盡可能遷移到MSXML6,或者根據(jù)需要遷移到MSXML3。
最后,如果不是針對(duì)Microsoft Office 2003或者M(jìn)icrosoft Office 2007編寫(xiě)程序卻使用MSXML5的開(kāi)發(fā)者,應(yīng)該盡快遷移到MSXML6。
一些需要注意的事情
- MSXML6中對(duì)安全敏感的特性是默認(rèn)關(guān)閉(off-by-default)的
然而,為了向下兼容和避免一些問(wèn)題,MSXML3中一些對(duì)安全敏感的特性是默認(rèn)打開(kāi)(on-by-default)的。請(qǐng)查閱SDK以了解更詳細(xì)的信息。 - 使用XSD架構(gòu)語(yǔ)言
MSXML3并不支持Xml Schema(XSD 1.0)。所以依賴XSD的應(yīng)用程序應(yīng)該直接使用MSXML6。MSXML6在XSD的實(shí)現(xiàn)上和MSXML4以及MSXML5上有些不同。MSXML6更加符合W3C標(biāo)準(zhǔn),對(duì).Net2.0中的System.XML更加兼容。所以在有些應(yīng)用程序升級(jí)的時(shí)候可能有些工作要做。請(qǐng)查閱SDK以了解更詳細(xì)的信息。 - 默認(rèn)查詢語(yǔ)言
當(dāng)你使用DOM中的SelectNodes或SelectSingleNode進(jìn)行查詢的時(shí)候,在MSXML6中默認(rèn)的選擇語(yǔ)言是XPath,而在MSXML3中則是XSL模式。可以像這樣xmlDoc.setProperty("SelectionLanguage", "XPath");?通過(guò)設(shè)置DOM的二級(jí)屬性“選擇語(yǔ)言”把MSXML3的查詢語(yǔ)言設(shè)置成標(biāo)準(zhǔn)XPath 1.0。請(qǐng)查閱SDK以了解更詳細(xì)的信息。 - 不指定版本(version-independent)的ProgIDs
在MSXML中,有關(guān)于“不指定版本”的ProgID的問(wèn)題總是讓人產(chǎn)生混淆。不指定版本的ProgID總是綁定到MSXML3(與許多人認(rèn)為的綁定到系統(tǒng)中最高版本的MSXML不同)。這就意味著無(wú)論指定或不指定版本“3.0”,ProgID將返回同一個(gè)對(duì)象。比如,下面兩行代碼都會(huì)返回一個(gè)MSXML3 DOMDocument對(duì)象:
var?xmlDOM =?new?ActiveXObject('Msxml2.DOMDocument.3.0');
和
var?xmlDOM =?new?ActiveXObject('Msxml2.DOMDocument'); - 較老版本的ProgIDs
遠(yuǎn)離那些比3.0還低的ProgIDs的版本。在某些特定的操作系統(tǒng)中,仍然會(huì)帶有MSXML 2.6。然而在最近的MS06-061安全補(bǔ)丁中,這些較古老版本的已經(jīng)被禁用(kill-bitted)了。 - MSXML2 vs. Microsoft命名空間
我見(jiàn)到過(guò)許多代碼把ActiveX對(duì)象Microsoft.XMLHTTP實(shí)例化,而不是MSXML2.XMLHTTP.3.0或MSXML2.XMLHTTP.6.0(如果使用6.0)。Microsoft命名空間事實(shí)上已經(jīng)過(guò)時(shí)了,而且它是用MSXML3實(shí)現(xiàn)的,僅僅是為了支持舊版的應(yīng)用程序。不幸的是,我們對(duì)老版本支持使用了一個(gè)好聽(tīng)的名字(Microsoft)。但請(qǐng)?jiān)趯?shí)例化對(duì)象的時(shí)候堅(jiān)持使用MSXML2命名空間。
來(lái)源:http://blogs.msdn.com/b/sqlcrd/archive/2008/11/04/internet-explorer-msxml.aspx
轉(zhuǎn)載于:https://www.cnblogs.com/diguonianzhu/archive/2012/04/06/2434970.html
總結(jié)
以上是生活随笔為你收集整理的[转]MSXML版本历史的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDU 4162 Shape Numbe
- 下一篇: 用WPF开发Mapxtreme-- 在.