




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第10章 JavaScript中的XML編程 隨著隨著XML的流行,的流行,JavaScript開發(fā)人開發(fā)人員也迫切希望在客戶端員也迫切希望在客戶端Web開發(fā)中應(yīng)用開發(fā)中應(yīng)用XML。 目前的主流瀏覽器已經(jīng)提供了對目前的主流瀏覽器已經(jīng)提供了對XML的支持,本章將介紹如何在的支持,本章將介紹如何在JavaScript中使中使用瀏覽器提供的用瀏覽器提供的XML編程特性。編程特性。 本章將主要討論本章將主要討論Mozilla Firefox和和Internet Explorer這兩種瀏覽器中的這兩種瀏覽器中的XML編編程方法。程方法。 XML基礎(chǔ)10.1 瀏覽器中的XML DOM10.2 瀏覽器中的X
2、Path10.3 瀏覽器中的XSLT10.410.1 XML基礎(chǔ) XML即可擴(kuò)展標(biāo)記語言即可擴(kuò)展標(biāo)記語言Extensible Markup Language),是一種平臺無關(guān)的表示數(shù)據(jù)的方法。),是一種平臺無關(guān)的表示數(shù)據(jù)的方法。 使用使用XML創(chuàng)建的數(shù)據(jù)可以被任何應(yīng)用程序在創(chuàng)建的數(shù)據(jù)可以被任何應(yīng)用程序在任何平臺上讀取,甚至可以通過手動編碼來編輯任何平臺上讀取,甚至可以通過手動編碼來編輯和創(chuàng)建和創(chuàng)建XML文檔,因?yàn)槲臋n,因?yàn)閄ML與與HTML一樣,都一樣,都是基于文本的標(biāo)記語言。是基于文本的標(biāo)記語言。 XML在數(shù)據(jù)的表示方面具有很好的靈活性和在數(shù)據(jù)的表示方面具有很好的靈活性和可擴(kuò)展性,例可擴(kuò)展性
3、,例10-1是一個是一個XML的示例,它描述了的示例,它描述了員工的基本信息。員工的基本信息?!纠纠?0-1】 employees.xml Tom Black M 30 03 C+ Java Bill Gates M 40 01 VB 10.1.1 XPath簡介 XML可以處理多種數(shù)據(jù),因此必須有可以處理多種數(shù)據(jù),因此必須有一種在一種在XML文檔中定位數(shù)據(jù)的方式,這就文檔中定位數(shù)據(jù)的方式,這就是是XPath,它專門用于在,它專門用于在XML中進(jìn)行定位中進(jìn)行定位匹配。匹配。 本節(jié)將對本節(jié)將對XPath進(jìn)行簡要介紹,更深入進(jìn)行簡要介紹,更深入的討論請讀者參考相關(guān)文檔。的討論請讀者參考相關(guān)文檔。
4、 每個每個XPath表達(dá)式由兩部分組成:上下表達(dá)式由兩部分組成:上下文節(jié)點(diǎn)和節(jié)點(diǎn)模式。文節(jié)點(diǎn)和節(jié)點(diǎn)模式。 上下文節(jié)點(diǎn)提供了節(jié)點(diǎn)模式起始的位置。上下文節(jié)點(diǎn)提供了節(jié)點(diǎn)模式起始的位置。 節(jié)點(diǎn)模式是由一個或者多個節(jié)點(diǎn)選擇器節(jié)點(diǎn)模式是由一個或者多個節(jié)點(diǎn)選擇器組成的字符串。組成的字符串。 例如,考慮對例例如,考慮對例10-1中的中的XML文檔使文檔使用如下的用如下的XPath表達(dá)式:表達(dá)式: Employee/Name/FirstName 如果上下文節(jié)點(diǎn)是如果上下文節(jié)點(diǎn)是XML文檔的根節(jié)點(diǎn)文檔的根節(jié)點(diǎn),那么該,那么該XPath表達(dá)式匹配了表達(dá)式匹配了Tom和和Bill這兩個節(jié)點(diǎn)。這兩個節(jié)點(diǎn)。 其中其中Em
5、ployee、Name和和FirstName是是XML文檔中的元素名稱。文檔中的元素名稱。 我們可以在我們可以在XPath中增加方括號對選擇中增加方括號對選擇的節(jié)點(diǎn)進(jìn)行限制。的節(jié)點(diǎn)進(jìn)行限制。 例如需要選擇年齡大于例如需要選擇年齡大于35歲的雇員名字,可歲的雇員名字,可以修改以修改XPath表達(dá)式如下:表達(dá)式如下: EmployeeAge35/Name/FirstName 上 面 的上 面 的 X P a t h 表 達(dá) 式 匹 配 的 節(jié) 點(diǎn) 是表 達(dá) 式 匹 配 的 節(jié) 點(diǎn) 是Bill,僅包含了年齡大,僅包含了年齡大于于35歲的雇員名字。歲的雇員名字。 XPath還支持使用符號匹配還支持使用
6、符號匹配XML文檔中的屬文檔中的屬性,例如下面的性,例如下面的XPath匹配了匹配了id為為001的雇員名字。的雇員名字。 Employeeid=001/Name/FirstName XPath是一種非常強(qiáng)大的表達(dá)式,使用它可是一種非常強(qiáng)大的表達(dá)式,使用它可以很容易地在以很容易地在XML文檔中查找指定的節(jié)點(diǎn)。文檔中查找指定的節(jié)點(diǎn)。10.1.2 XSLT簡介 XSLT可擴(kuò)展樣式表語言轉(zhuǎn)換是可擴(kuò)展樣式表語言轉(zhuǎn)換是XML的的姊妹語言,它可以將姊妹語言,它可以將XML轉(zhuǎn)換為任何基于文本的轉(zhuǎn)換為任何基于文本的形式。形式。 很多應(yīng)用中使用它將很多應(yīng)用中使用它將XML轉(zhuǎn)換為轉(zhuǎn)換為HTML,當(dāng),當(dāng)然,這只是然
7、,這只是XSLT的一種用途。的一種用途。XSLT樣式表由一樣式表由一些模板組成,這些模板決定了輸出文本的格式。些模板組成,這些模板決定了輸出文本的格式。 仍然考慮例仍然考慮例10-1中的中的XML文檔,現(xiàn)在我們希文檔,現(xiàn)在我們希望將雇員的望將雇員的id和全名和全名FirstName+LastName在在HTML頁面中輸出。格式如例頁面中輸出。格式如例10-2所示。所示。 【例【例10-2】 Employees.html10.2 瀏覽器中的XML DOM 目前只有兩個瀏覽器支持客戶端的目前只有兩個瀏覽器支持客戶端的XML處理,它們是處理,它們是IE和和Mozilla瀏覽器。瀏覽器。 下面將分別介
8、紹在這兩種瀏覽器中進(jìn)下面將分別介紹在這兩種瀏覽器中進(jìn)行行XML DOM處理的方法。處理的方法。10.2.1 IE中的XML DOM 在為在為IE添加添加XML編程特性時,微軟選編程特性時,微軟選擇了基于擇了基于ActiveX技術(shù)的技術(shù)的MSXML庫。庫。 它是微軟開發(fā)的它是微軟開發(fā)的XML開發(fā)程序庫,可開發(fā)程序庫,可以在以在VB、C+等多種語言中使用。等多種語言中使用。 在在JavaScript中可以通過中可以通過ActiveXObject類創(chuàng)建類創(chuàng)建ActiveX對象。對象。 IE 4.0以及更低版本以及更低版本IE的客戶端必須單的客戶端必須單獨(dú)安裝獨(dú)安裝MSXML庫,才能使用庫,才能使用X
9、ML編程相編程相關(guān)的功能,關(guān)的功能,IE 5.0及更高版本的及更高版本的IE則集成了則集成了MSXML庫,并將其中的庫,并將其中的ActiveX控件設(shè)置控件設(shè)置為安全控件,使之不受瀏覽器安全性設(shè)置為安全控件,使之不受瀏覽器安全性設(shè)置的影響。的影響。 使用使用XML DOM進(jìn)行進(jìn)行XML解析時,必解析時,必須解決的問題包括:創(chuàng)建須解決的問題包括:創(chuàng)建DOM對象并加載對象并加載XML文檔、文檔、XML節(jié)點(diǎn)操作和異常的處理。節(jié)點(diǎn)操作和異常的處理。1創(chuàng)建XML文檔對象 MSXML庫存在多個版本,每個版本具有不庫存在多個版本,每個版本具有不同的對象注冊名,而我們不能確定用戶安裝的同的對象注冊名,而我們不
10、能確定用戶安裝的MSXML庫版本,在很多情況下客戶端還可能安庫版本,在很多情況下客戶端還可能安裝了多個版本的裝了多個版本的MSXML庫。庫。 通常的策略是盡可能地使用最新的版本,從通常的策略是盡可能地使用最新的版本,從而獲取更高的執(zhí)行效率和穩(wěn)定性。而獲取更高的執(zhí)行效率和穩(wěn)定性。 使用例使用例10-4所示的所示的createDocument函數(shù)函數(shù)可以滿足要求,它將依次嘗試創(chuàng)建以下版可以滿足要求,它將依次嘗試創(chuàng)建以下版本的本的ActiveX控件,直到創(chuàng)建成功為止,如控件,直到創(chuàng)建成功為止,如果果createDocument函數(shù)返回函數(shù)返回false,說明客,說明客戶端未安裝戶端未安裝MSXML或
11、者瀏覽器不是或者瀏覽器不是Windows平臺的平臺的IEMac平臺的平臺的IE不支持不支持ActiveX控件)??丶?。 以下列出了各種版本以下列出了各種版本MSXML庫的庫的DOM對象注對象注冊名。冊名。(1MSXML2.DOMDocument.6.0(2MSXML2.DOMDocument.5.0(3MSXML2.DOMDocument.4.0(4MSXML2.DOMDocument.3.0(5MSXML2.DOMDocument(6Microsoft.DOMDocument 【例【例10-4】 創(chuàng)建創(chuàng)建DOM對象對象2加載XML文檔 MSXML的的DOMDocument對象可以使對象可以
12、使用用load方法加載一個指定的方法加載一個指定的URL,也可以,也可以使用使用loadXML方法加載方法加載XML的文本內(nèi)容。的文本內(nèi)容。 當(dāng)使用當(dāng)使用load方法加載方法加載XML文檔時,有文檔時,有同步和異步兩種模式。同步和異步兩種模式。 在同步模式下需要將在同步模式下需要將DOMDocument對象的對象的async屬性設(shè)置為屬性設(shè)置為false,這樣通過該,這樣通過該對象的對象的load方法加載方法加載XML時,程序會一直時,程序會一直等待直到等待直到XML文檔加載完成。文檔加載完成。 / 創(chuàng)建創(chuàng)建DOMDocument對象對象 var doc = createDocument();
13、 / 設(shè)置為同步模式設(shè)置為同步模式 doc.async = false; / 加載加載XML doc.load(books.xml); 一般來說,由于網(wǎng)絡(luò)延時、應(yīng)用程序處一般來說,由于網(wǎng)絡(luò)延時、應(yīng)用程序處理等因素,加載理等因素,加載XML的過程必然會存在一的過程必然會存在一定的延時,使用同步模式往往導(dǎo)致瀏覽器定的延時,使用同步模式往往導(dǎo)致瀏覽器在等待在等待XML數(shù)據(jù)返回的過程中失去響應(yīng),數(shù)據(jù)返回的過程中失去響應(yīng), 因此在大多數(shù)情況下建議使用異步模式,因此在大多數(shù)情況下建議使用異步模式,這也是這也是DOMDocument對象默認(rèn)的文檔加載對象默認(rèn)的文檔加載方法。方法。 例例10-5所示是使用異步
14、模式加載所示是使用異步模式加載XML文檔的示例代碼。文檔的示例代碼。 【例【例10-5】 加載加載XML文檔文檔 【例【例10-6】 加載加載XML文檔文檔 3訪問XML節(jié)點(diǎn) DOMDocument對象對應(yīng)于對象對應(yīng)于DOM標(biāo)準(zhǔn)標(biāo)準(zhǔn)中的中的Document接口,因此接口,因此DOMDocument對象可以使用標(biāo)準(zhǔn)的對象可以使用標(biāo)準(zhǔn)的DOM方法進(jìn)行方法進(jìn)行XML節(jié)節(jié)點(diǎn)操作,點(diǎn)操作,DOMDocument對象的常用屬性如對象的常用屬性如表表10-1所示。所示。 其中其中text和和xml兩個屬性是微軟對兩個屬性是微軟對DOM標(biāo)準(zhǔn)的擴(kuò)展,分別用于返回節(jié)點(diǎn)的文本內(nèi)標(biāo)準(zhǔn)的擴(kuò)展,分別用于返回節(jié)點(diǎn)的文本內(nèi)容
15、和容和XML文本。文本。表10-1 DOMDocument對象常用屬性屬 性 名 稱含 義attributes所有屬性節(jié)點(diǎn)的列表childNodes所有的子節(jié)點(diǎn)firstChild第一個子節(jié)點(diǎn)屬 性 名 稱含 義lastChild最后一個子節(jié)點(diǎn)previousSibling上一個兄弟節(jié)點(diǎn)nextSibling下一個兄弟節(jié)點(diǎn)parentNode父節(jié)點(diǎn)documentElement文檔的根節(jié)點(diǎn)nodeName節(jié)點(diǎn)名稱nodeType節(jié)點(diǎn)類型nodeValue節(jié)點(diǎn)值ownerDocument節(jié)點(diǎn)所在的文檔對象text節(jié)點(diǎn)的文本內(nèi)容xml節(jié)點(diǎn)的XML文本 【例【例10-7】 books.xml 表10
16、-2 DOMDocument對象常用方法方 法 名 稱含 義appendChild將節(jié)點(diǎn)作為最后一個子節(jié)點(diǎn)附加到父節(jié)點(diǎn)中cloneNode創(chuàng)建節(jié)點(diǎn)的副本createAttribute創(chuàng)建屬性節(jié)點(diǎn)createCDATASection創(chuàng)建CDATA節(jié)點(diǎn)createComment創(chuàng)建注釋節(jié)點(diǎn)createDocumentFragment創(chuàng)建文檔片段createElement創(chuàng)建元素節(jié)點(diǎn)createEntityReference創(chuàng)建實(shí)體引用節(jié)點(diǎn)createNode根據(jù)指定的名稱、類型和命名空間創(chuàng)建節(jié)點(diǎn)createProcessingInstruction創(chuàng)建處理指令節(jié)點(diǎn)createTextNode創(chuàng)建文
17、本節(jié)點(diǎn)getElementsByTagName根據(jù)指定的節(jié)點(diǎn)名稱返回元素的集合hasChildNodes判斷節(jié)點(diǎn)是否具有子節(jié)點(diǎn)insertBefore將節(jié)點(diǎn)插入到指定的子節(jié)點(diǎn)之前nodeFromID根據(jù)ID返回指定的節(jié)點(diǎn)removeChild刪除指定的子節(jié)點(diǎn)replaceChild替換指定的子節(jié)點(diǎn)save將XML文檔保存到指定的位置4異常處理 在加載在加載XML文檔的過程中,無論使用文檔的過程中,無論使用load方法還是方法還是loadXML方法,都有可能發(fā)方法,都有可能發(fā)生生XML格式不正確的情況。格式不正確的情況。 表10-3parseError對象屬性屬 性 名 稱含 義errorCod
18、e錯誤碼,errorCode不等于零說明有異常發(fā)生filepos引發(fā)異常的代碼在文件中所處的絕對位置lineXML文檔中錯誤所在的行號lineposXML文檔中錯誤在行內(nèi)的位置reason導(dǎo)致異常的原因srcTextXML文檔中錯誤所在行的文本內(nèi)容urlXML文檔的URL 【例【例10-8】 XML DOM異常處理異常處理 10.2.2 Mozilla中的XML DOM 與與IE的做法不同,的做法不同,Mozilla瀏覽器將瀏覽器將XML DOM作為其作為其JavaScript實(shí)現(xiàn)的一部分,實(shí)現(xiàn)的一部分,因此因此Mozilla瀏覽器中的瀏覽器中的XML特性可以在各特性可以在各個平臺的個平臺的M
19、ozilla瀏覽器中使用,而且瀏覽器中使用,而且Mozilla的的XML DOM實(shí)現(xiàn)了對實(shí)現(xiàn)了對DOM Level 2的支持。的支持。1創(chuàng)建XML文檔對象 在在Mozilla瀏覽器中創(chuàng)建瀏覽器中創(chuàng)建XML文檔對象文檔對象的方法如下所示:的方法如下所示: document.implementation.createDocument(namespaceURI, rootname, doctype)2加載XML文檔 在在Mozilla中也可以使用中也可以使用load方法加載指定方法加載指定URL的的XML文檔,默認(rèn)情況下它采用異步加載模文檔,默認(rèn)情況下它采用異步加載模式。式。 如果需要采取同步的模式
20、加載如果需要采取同步的模式加載XML文檔,那文檔,那么必須將么必須將DOM對象的對象的async屬性設(shè)置為屬性設(shè)置為false。 Mozilla中的中的XML文檔對象在加載文檔對象在加載XML的過的過程中不存在程中不存在readyState屬性從屬性從1到到4的變化。的變化。 當(dāng)文檔加載完成之后,當(dāng)文檔加載完成之后,DOM對象將被觸發(fā)對象將被觸發(fā)load事件,通常在事件,通常在load事件的處理函數(shù)中進(jìn)行事件的處理函數(shù)中進(jìn)行XML文檔的處理,如例文檔的處理,如例10-9所示。所示。 【例【例10-9】 加載加載XML文檔文檔 【例【例10-10】 加載加載XML字符串字符串3訪問XML節(jié)點(diǎn) M
21、ozilla對對XML DOM的實(shí)現(xiàn)是完全符合的實(shí)現(xiàn)是完全符合DOM標(biāo)準(zhǔn)的,因此表標(biāo)準(zhǔn)的,因此表10-1和表和表10-2中列舉的絕大中列舉的絕大多數(shù)屬性和方法都可以在多數(shù)屬性和方法都可以在Mozilla瀏覽器中使用,瀏覽器中使用,調(diào)用方法也是相同的。調(diào)用方法也是相同的。 需要特別說明的是,需要特別說明的是,text和和xml這兩個屬性,這兩個屬性,它們是微軟對它們是微軟對DOM標(biāo)準(zhǔn)的擴(kuò)展,因此標(biāo)準(zhǔn)的擴(kuò)展,因此Mozilla瀏瀏覽器不支持它們。覽器不支持它們。 但是在但是在Mozilla中可以通過其他的方式實(shí)現(xiàn)類中可以通過其他的方式實(shí)現(xiàn)類似的功能。似的功能。 以下的以下的getText方法將會返
22、回節(jié)點(diǎn)中的方法將會返回節(jié)點(diǎn)中的文本內(nèi)容,該方法通過遞歸方式遍歷了節(jié)文本內(nèi)容,該方法通過遞歸方式遍歷了節(jié)點(diǎn)的所有葉子節(jié)點(diǎn)。點(diǎn)的所有葉子節(jié)點(diǎn)。 在在Mozilla中需要特別注意的問題是空中需要特別注意的問題是空白文本節(jié)點(diǎn)也會被遍歷,這里需要將白文本節(jié)點(diǎn)也會被遍歷,這里需要將nodeValue節(jié)點(diǎn)值使用節(jié)點(diǎn)值使用trim函數(shù)進(jìn)行處函數(shù)進(jìn)行處理,如例理,如例10-11所示。所示。 【例【例10-11】 序列化序列化XML節(jié)點(diǎn)普通文本)節(jié)點(diǎn)普通文本) 【例【例10-12】 序列化序列化XML節(jié)點(diǎn)節(jié)點(diǎn)XML格式)格式) 4異常處理 Mozilla中提供了相應(yīng)的機(jī)制對加載中提供了相應(yīng)的機(jī)制對加載XML時可能
23、發(fā)生的異常進(jìn)行處理,與時可能發(fā)生的異常進(jìn)行處理,與IE不不同,當(dāng)發(fā)生異常時同,當(dāng)發(fā)生異常時Mozilla會通過會通過XML文檔文檔對象加載一個包含錯誤信息的對象加載一個包含錯誤信息的XML文檔。文檔。 例如將例如將books.xml稍作修改,使其格式稍作修改,使其格式不正確,如例不正確,如例10-13所示。所示。10.3 瀏覽器中的XPath 10.3.1 IE中的XPath 在IE中使用XPath非常簡單,直接 使 用 s e l e c t N o d e s 或 者selectSingleNode方法即可進(jìn)行XPath查詢??紤]以下的XML文檔:10.3.2 Mozilla中的XPath
24、 Mozilla中中XPath的實(shí)現(xiàn)方式是符合的實(shí)現(xiàn)方式是符合DOM Level 3中關(guān)于中關(guān)于XPath的接口定義的,的接口定義的,盡管盡管IE的的selectNodes方法十分直觀,但方法十分直觀,但Mozilla的方式可以實(shí)現(xiàn)更加強(qiáng)大的功能。的方式可以實(shí)現(xiàn)更加強(qiáng)大的功能。 在在Mozilla中進(jìn)行中進(jìn)行XPath查詢需要使用查詢需要使用兩個關(guān)鍵的對象:兩個關(guān)鍵的對象:XPathEvaluator和和XpathResult。 它們分別用于執(zhí)行它們分別用于執(zhí)行XPath查詢和保存查查詢和保存查詢結(jié)果。詢結(jié)果。 【例【例10-14】 Mozilla瀏覽器中的瀏覽器中的XPath查查詢詢表10-
25、4XPath結(jié)果集類型定義常 數(shù)值含 義ANY_TYPE0結(jié)果集包含XPath查詢獲取的任何類型的節(jié)點(diǎn),注意當(dāng)結(jié)果集為DOM節(jié)點(diǎn)集合時,ANY_TYPE 相當(dāng)于UNORDERED_ NODE_ITERATOR_TYPE續(xù)表常 數(shù)值含 義NUMBER_TYPE1結(jié)果集為單個數(shù)字時使用該類型,例如使用count函數(shù)的XPath表達(dá)式STRING_TYPE2結(jié)果集為單個字符串時使用該類型BOOLEAN_TYPE3結(jié)果集為單個布爾值時使用該類型,例如使用not函數(shù)的XPath表達(dá)式UNORDERED_NODE_ITERATOR_TYPE4結(jié)果集為DOM節(jié)點(diǎn)集合,節(jié)點(diǎn)在結(jié)果集中出現(xiàn)的順序不一定和它們在X
26、ML文檔中的順序一致ORDERED_NODE_ITERATOR_TYPE5結(jié)果集為DOM節(jié)點(diǎn)集合,節(jié)點(diǎn)在結(jié)果集中出現(xiàn)的順序和它們在XML文檔中的順序一致UNORDERED_NODE_SNAPSHOT_TYPE6結(jié)果集為DOM節(jié)點(diǎn)集合的快照即在執(zhí)行evaluate方法之后該集合的內(nèi)容不會因XML文檔中節(jié)點(diǎn)的變化而變化),節(jié)點(diǎn)在結(jié)果集中出現(xiàn)的順序不一定和它們在XML文檔中的順序一致ORDERED_NODE_SNAPSHOT_TYPE7結(jié)果集為DOM節(jié)點(diǎn)集合的快照,節(jié)點(diǎn)在結(jié)果集中出現(xiàn)的順序和它們在XML文檔中的順序一致ANY_UNORDERED_NODE_TYPE8如果存在與XPath匹配的節(jié)點(diǎn),結(jié)
27、果集中僅包含一個DOM節(jié)點(diǎn),該節(jié)點(diǎn)不一定是第一個符合條件的節(jié)點(diǎn)FIRST_ORDERED_NODE_TYPE9如果存在與XPath匹配的節(jié)點(diǎn),結(jié)果集中僅包含一個DOM節(jié)點(diǎn),它是第一個符合條件的節(jié)點(diǎn) 【例【例10-15】 books_ns.xml 【例【例10-16】 命名空間解析函數(shù)命名空間解析函數(shù) 【例【例10-17】 Mozilla中的中的XPath查詢查詢 10.4 瀏覽器中的XSLT 顯然,顯然,IE和和Mozilla的的XSLT實(shí)現(xiàn)機(jī)制也是不實(shí)現(xiàn)機(jī)制也是不同的,同的,IE使用基于使用基于ActiveX對象的解決方案,而對象的解決方案,而Mozilla則使用其內(nèi)置的則使用其內(nèi)置的XSL
28、TProcessor對象。對象。 10.4.1 IE中的中的XSLT IE中提供了兩種不同的方式進(jìn)行中提供了兩種不同的方式進(jìn)行XSLT轉(zhuǎn)換:轉(zhuǎn)換:使用使用DOMDocument和和XSLTemplate對象。對象。 例例10-18和例和例10-19是本節(jié)將要使用的是本節(jié)將要使用的XML文文檔檔books.xml和和XSLT樣式表樣式表books.xsl)。)。 【例【例10-18】 books.xml 【例【例10-19】 books.xsl 1基于DOMDocument的XSLT轉(zhuǎn)換 如果如果XSLT轉(zhuǎn)換只需進(jìn)行一次,以后不會再使轉(zhuǎn)換只需進(jìn)行一次,以后不會再使用同一個用同一個XSLT樣式表,
29、那么使用樣式表,那么使用DOMDocument對象的對象的transformNode方法是最簡單直接的。方法是最簡單直接的。 具體步驟是首先分別加載具體步驟是首先分別加載XML文檔和文檔和XSLT樣式表,然后調(diào)用樣式表,然后調(diào)用DOMDocument對象的對象的transformNode方法,該方法的輸入?yún)?shù)是與方法,該方法的輸入?yún)?shù)是與XSLT樣式表對應(yīng)樣式表對應(yīng)DOMDocument對象,例對象,例10-20所示是具體的實(shí)現(xiàn)代碼。所示是具體的實(shí)現(xiàn)代碼。 【例【例10-20】 基于基于DOMDocument的的XSLT轉(zhuǎn)換轉(zhuǎn)換2基于XSLTemplate的XSLT轉(zhuǎn)換 MSXML還提供了另一
30、個對象用于還提供了另一個對象用于XSLT轉(zhuǎn)換,它就是轉(zhuǎn)換,它就是XSLTemplate,使用它,使用它進(jìn)行進(jìn)行XSLT轉(zhuǎn)換的步驟如下:轉(zhuǎn)換的步驟如下: (1創(chuàng)建創(chuàng)建DOM對象并且加載對象并且加載XML文檔;文檔; (2創(chuàng)建創(chuàng)建DOM對象并且加載對象并且加載XSLT樣式表,樣式表,需要特別注意的是,為了在需要特別注意的是,為了在XSLTemplate對對象中使用樣式表,必須創(chuàng)建線程安全的象中使用樣式表,必須創(chuàng)建線程安全的DOM對象,它對應(yīng)于對象,它對應(yīng)于MSXML庫中的另一庫中的另一個個ActiveX控件;控件; (3創(chuàng)建創(chuàng)建XSLTemplate對象,并且將其對象,并且將其stylesheet
31、屬性設(shè)置為屬性設(shè)置為XSLT樣式表的樣式表的DOM對象;對象; ( 4 通 過 通 過 X S LTe m p l a t e 對 象 創(chuàng) 建對 象 創(chuàng) 建XSLProcessor對象,并且將其對象,并且將其input屬性設(shè)屬性設(shè)置為置為XML文檔的文檔的DOM對象;對象; (5調(diào)用調(diào)用XSLProcessor對象的對象的transform方法執(zhí)行方法執(zhí)行XSLT轉(zhuǎn)換。轉(zhuǎn)換。 具體的實(shí)現(xiàn)代碼如例具體的實(shí)現(xiàn)代碼如例10-21所示。所示。 【例【例10-21】 基于基于XSLTemplate的的XSLT轉(zhuǎn)轉(zhuǎn)換換 【例【例10-22】 books.xsl 【例【例10-23】 books.xsl 10.4.2 Mozilla中的XSLT Mozilla中進(jìn)行中進(jìn)行XSLT轉(zhuǎn)換的核心對象是轉(zhuǎn)換的核心對象是XSLTProcessor,它類似于,它類似于IE中的中的XslProcessor對對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年勞務(wù)安全協(xié)議書:華區(qū)餐飲服務(wù)業(yè)員工勞動保護(hù)合同
- 2025年度企業(yè)內(nèi)部數(shù)據(jù)保密管理協(xié)議書模板
- 2025年度地質(zhì)勘查技術(shù)服務(wù)與數(shù)據(jù)共享合同
- 專賣店裝修保修合同模板
- 2024年佛山外向型骨干企業(yè)全球化發(fā)展白皮書-佛山市貿(mào)促會
- 2025年度商用復(fù)印機(jī)購銷合同附帶原裝耗材包
- 商務(wù)辦公區(qū)裝修合同
- Unit 3 Keep fit Section B 1a-1d 教學(xué)設(shè)計 2024-2025學(xué)年人教版英語七年級下冊
- 浮力(教學(xué)設(shè)計)2023-2024學(xué)年教科版五年級科學(xué)下冊
- 2023-2024學(xué)年天津市南開區(qū)高中學(xué)業(yè)水平合格性考試模擬考試生物試卷
- ASTM標(biāo)準(zhǔn)全部目錄(中文版)
- 《汽車電氣設(shè)備構(gòu)造與維修》 第4版 課件 第3、4章 電源系統(tǒng)、發(fā)動機(jī)電器
- 遼海版小學(xué)美術(shù)六年級下冊全冊教案
- 2023年南京市鼓樓區(qū)建寧路街道安監(jiān)辦招聘專職安全員考試真題及答案
- 2024陜西延長石油集團(tuán)礦業(yè)公司所屬單位招聘筆試參考題庫附帶答案詳解
- 鄉(xiāng)鎮(zhèn)精神衛(wèi)生工作總結(jié)
- 井工煤礦中長期防治水規(guī)劃編制細(xì)則
- 2024年湘中幼兒師范高等??茖W(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 設(shè)備使用手冊(范例模板)
- 上海房屋修繕工程培訓(xùn)課件
- 醫(yī)院電梯安全操作培訓(xùn)記錄
評論
0/150
提交評論