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 文件。