MSXML 處理 xml 文檔時外部DTD定義的問題(ASP)
項目中碰到這個問題,所以也貼了出來
xmlfile = "http://myserver/catalog.xml"
xslfile = "catalog.xsl"
' 創(chuàng)建相關(guān)對象
Set xslDoc = server.CreateObject("MSXML2.FreeThreadedDOMDocument")
Set xmlDoc = server.CreateObject("MSXML2.DOMDocument")
' 讀取xsl文件
xsldoc.async = False
xsldoc.resolveExternals = True
xsldoc.load server.MapPath(xslfile)
' 讀取xml文件
xmldoc.setProperty "ServerHTTPRequest",True ' 設(shè)置ServerHTTPRequest 屬性為 True 為了通過http協(xié)議載入xml文檔
xmldoc.async = False ' 設(shè)置 async屬性為 False 關(guān)閉異步調(diào)用
xmldoc.resolveExternals = True ' 設(shè)置 resolveExternals 為 True 打開外部DTD分析
xmldoc.validateOnParse = False ' 設(shè)置 validateOnParse 為 False 允許文檔驗證
xmldoc.load xmlfile ' 讀取xml文檔
Do While (xmldoc.ReadyState < 4) ' 檢查ReadyState狀態(tài)值是否為4 ' 具體數(shù)值定義參見msxml sdk document
xmldoc.waitForResponse 10 ' 通過waitForResponse方法等待文檔完全讀取完畢 ' 如果為讀取完成,系統(tǒng)暫停10毫秒
Loop
' 轉(zhuǎn)換xml -> html 并輸出文檔
xmldoc.transformNodeToObject xsldoc,Response
' 清空對象
Set xslt = Nothing
Set xsldoc = Nothing
Set xmldoc = Nothing