DOMDocument 與 FreeThreadedDOMDocument 的使用方法

DOMDocument 與 FreeThreadedDOMDocument 有什麼不同?分別在什麼條件下適用?
服務器端操作本地文件應該使用哪個?

一般使用Msxml2.Document組件來加載xml文檔的,但當動態使用xsl解析xml文檔時,必須使用Msxml2.FreeThreadedDOMDocument這種自由線程的組件,同時使用MSXML2.XSLTemplate模板組件來加載xml,xsl數據,通過MSXML2.XSLTemplate的transform方法,就可以動態的用xsl來解析xml數據了,另外,IE5開始,系統默認的xml組件是msxml2,如果需要使用更新的msxml組件需要安裝更新的msxml組件包,並指定新的名稱,例如Msxml2.FreeThreadedDOMDocument.4.0

意思是說,用transform轉換xml的時候,必須用FreeThreadedDOMDocument加載文檔,用XSLTemplate去解析嗎?

我現在用的是DOMDocument加載xml和xsl並transform,暫時沒有發現問題

我用JScript說明一下:
如果將XSLT作爲一個DOMDocument加載: 
var xsl=new ActiveXObject("MSXML2.DOMDocument.5.0");
xsl.load(路徑);
// 然後使用XML文檔的:
doc.transformNode(xsl);

這是沒有問題的。

使用FreeThreaded的DOM主要是在用XSLTemplate來轉換XML文檔的時候:
var xsl=new ActiveXObject("MSXML2.FreeThreadedDOMDocument.5.0");
xsl.load(路徑);
var xslt=new ActiveXObject("MSXML2.XSLTemplate.5.0"); //創建一個XSL模板
xslt.stylesheet=xsl; //模板的樣式表源設爲xsl
var proc=xslt.createProcessor(); //使用樣式表創建一個XML處理器
proc.input=doc; //將XML文檔連接到處理器
proc.transform(); //使用樣式錶轉換文檔
var xmlout=proc.output; //得到輸出 注意取走輸出一次後輸出變爲空

這是因爲XSLProcessor必須異步地處理XML文檔的轉換 因此你的XSL文檔必須是自由線程模式的
如果你的XSL文檔是普通的DOMDocument 會得到提示: 需要自由線程模式

DOMDocument比較常用 而FreeThreaded的文檔雖然用法基本一樣
但機制複雜一些
可以參考MSDN Library

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章