版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、關(guān)于xslt的應(yīng)用研究說 明本表需在指導(dǎo)教師和有關(guān)領(lǐng)導(dǎo)審查批準(zhǔn)的情況下,要求學(xué)生認(rèn)真填寫。說明課題的來源(自擬題目或指導(dǎo)教師承擔(dān)的科研任務(wù))、課題研究的目的和意義、課題在國內(nèi)外研究現(xiàn)狀和發(fā)展趨勢。若課題因故變動時,應(yīng)向指導(dǎo)教師提出申請,提交題目變動論證報告。課題來源:哈爾濱師范大學(xué)計算機科學(xué)系教研組,指導(dǎo)教師李晶關(guān)于xslt的應(yīng)用研究,技術(shù)路線是xslt(xml轉(zhuǎn)換語言)的結(jié)構(gòu)及使用。課題研究的目的和意義:extensible stylesheet language transformations(xslt,可擴展樣式單語言轉(zhuǎn)換)是一種用來轉(zhuǎn)換extensible markup languag
2、e(xml,可擴展標(biāo)記語言)文檔結(jié)構(gòu)的語言。xml是一種電腦程序間交換原始數(shù)據(jù)的簡單而標(biāo)準(zhǔn)的方法,從根本上解決了應(yīng)用系統(tǒng)間的信息交換。為了使數(shù)據(jù)適合不同的應(yīng)用程序,我們必須有能夠?qū)⒁环N數(shù)據(jù)格式轉(zhuǎn)換為另一種數(shù)據(jù)格式。而xslt就是我們用來實現(xiàn)這種轉(zhuǎn)換功能的語言。將xml轉(zhuǎn)換為html,是目前xslt最主要的功能。xslt的主要用途就是數(shù)據(jù)轉(zhuǎn)換應(yīng)用。由于以xml為基礎(chǔ)的電子商務(wù)廣泛普及,xslt作為數(shù)據(jù)轉(zhuǎn)換的角色也越來越重要。例如直接將電視新聞的數(shù)據(jù)格式轉(zhuǎn)換成報紙新聞需要的數(shù)據(jù)格式;將股票數(shù)據(jù)直接轉(zhuǎn)換成圖片顯示在網(wǎng)頁上;對edi(電子數(shù)據(jù)交換)數(shù)據(jù)進行統(tǒng)計,排序等等。xslt是處理類似工作的理想工
3、具。xml解析器都很小,性能也很好,在每種平臺上都可以找到。一旦我們接收到xml數(shù)據(jù)并把它解析成上面的樣式后,我們就可以通過xslt把他們轉(zhuǎn)換成不同的表現(xiàn)形式。利用xml的數(shù)據(jù)格式進行數(shù)據(jù)傳輸,將會使我們編寫應(yīng)用程序代碼的工作更簡單輕松,而且具有良好的可伸縮性。國內(nèi)外同類課題研究現(xiàn)狀及發(fā)展趨勢:像很多其他xml家族成員一樣,xslt是由w3c起草和制定的。它的主要發(fā)展歷程如下: .1995年由james clark提議; .1997年8月正式提案為xsl; .1998年5月由norman walsh完成需求概要; .1998年8月18日xsl草案發(fā)布; .1999年11月16日正式發(fā)布xsl
4、1.0推薦版本。xslt 2.0 是一個 xslt 1.0 的被校訂的版本推薦 xslt 1.0 ,在 1999 年十一月 16 日出版。xslt 的公眾討論在可擴展類型語言-目錄的論壇上進行,這一份文件在 2004 年2月5日w3 c 專利權(quán)政策之下操作的一個小組生產(chǎn)了。少數(shù)的編輯訂正,在 2006 年11月 21 日當(dāng)做被提議的推薦出版文件。目前,xslt仍然在快速的發(fā)展中。 課題研究的主要內(nèi)容和方法,研究過程中的主要問題和解決辦法:一主要研究的基本理論、結(jié)構(gòu)xslt的概念,初步介紹,以及如何使用xslt還有 xslt創(chuàng)建html頁面的技術(shù)和xslt 的工作原理。xslt是幫助xml文檔(
5、document)轉(zhuǎn)換為其它文檔。xslt不僅僅用于將xml轉(zhuǎn)換為html或其它文本格式,具體的說,xslt是一種用來轉(zhuǎn)換xml文檔結(jié)構(gòu)的語言。xslt轉(zhuǎn)換xml,是將xml原文檔輸入,用xsl作為模板,通過轉(zhuǎn)換引擎,最終輸出需要的html文檔。二主要問題和解決辦法近年來,對xslt的結(jié)構(gòu)及其應(yīng)用的研究已成為時下較為熱門的課題。xslt 作為一種操縱xml 文檔的轉(zhuǎn)換語言有著豐富的命令和函數(shù), 利用xslt 技術(shù)可以方便地完成對xml 文檔內(nèi)容的分析、處理, 同時可以將源xml 文檔轉(zhuǎn)換為多種不同的格式。在對數(shù)據(jù)庫的操作中, 應(yīng)當(dāng)時刻考慮數(shù)據(jù)是否有效的問題,數(shù)據(jù)有效性監(jiān)測應(yīng)貫穿于數(shù)據(jù)庫操作的整
6、個過程, 從而使數(shù)據(jù)輸入規(guī)范化、智能化、人性化, 提高數(shù)據(jù)的可靠性。雖然xslt功能限定于對xml文檔進行轉(zhuǎn)換的部分,但xslt中,模板功能十分強大,因此廣泛應(yīng)用于跨平臺的數(shù)據(jù)交換領(lǐng)域。另外xslt中支持原義元素的使用,可以方便地從xml文檔創(chuàng)建html文檔,用于數(shù)據(jù)的web發(fā)表。而xslt簡單高效、功能強大、調(diào)試方便,因此它仍然是最好的文檔轉(zhuǎn)換技術(shù),即使在dom中,也提供了一個接口,可以使用外部的xslt文檔進行xml文檔轉(zhuǎn)換。課題研究起止時間和進度安排:起止時間2007年1月2007年5月進度安排2008-1-202008-3-1 確定論文題目,填寫開題報告2008-3-1 2008-3-
7、16 查閱和收集畢業(yè)設(shè)計相關(guān)資料2008-3-162008-3-23 學(xué)習(xí)掌握關(guān)于xslt的應(yīng)用研究相關(guān)基礎(chǔ)知識2008-3-232008-4-8 關(guān)于xslt的應(yīng)用研究2008-4-9 2008-4-15 完善設(shè)計及撰寫論文2008-5 定稿準(zhǔn)備答辯課題研究所需主要設(shè)備、儀器及藥品:計算機一臺要求主機配置 奔四cpu處理器 內(nèi)存256m以上 具有網(wǎng)卡可以上網(wǎng)顯示器 純平 軟件 系統(tǒng)軟件及其自帶軟件 常用辦公軟件 程序編譯軟件 翻譯軟件外出調(diào)研主要單位,訪問學(xué)者姓名:哈爾濱師范大學(xué)計算機科學(xué)系教研組指導(dǎo)教師李晶指導(dǎo)教師審查意見:指導(dǎo)教師 (簽字) 2008年3 月 教研室(研究室)評審意見:_
8、教研室(研究室)主任 (簽字) 2008年3 月系(部)主任審查意見:_系(部)主任 (簽字) 2008年3 月摘要:xml 因為它在可擴展性和靈活性上的優(yōu)點以及w3c 不遺余力的為它制定各種標(biāo)準(zhǔn), 已經(jīng)成為internet 上的主要語言。如何對xml 文檔進行轉(zhuǎn)換以滿足不同用戶的需要, 成為一個非常重要的問題, 利用xslt 可以很好的解決這個問題。本文詳細(xì)描述了基于xslt 轉(zhuǎn)換xml 文檔的方法, 深入討論其工作原理, 并結(jié)合一個具體應(yīng)用實例, 進一步闡明了基xslt 轉(zhuǎn)換xml 文檔的過程。文章基于xslt技術(shù),探討了一種使用xslt將xml文檔轉(zhuǎn)換為html頁的新技術(shù),使用圖形web
9、頁設(shè)計程序,如. net內(nèi)建的web頁設(shè)計程序或frontpage中的web頁設(shè)計程序,以圖形方式創(chuàng)建頁,然后查看html背后的代碼。之后可以將這些代碼結(jié)合到xslt轉(zhuǎn)換文件中。關(guān)鍵詞:xml; xslt; xml 轉(zhuǎn)換 目錄第一章 引言11.1研究背景11.2發(fā)展現(xiàn)狀11.2.1 什么是xpath11.2.2 xslt和css的比較21.2.3 xslt和ie521.3研究目標(biāo)與內(nèi)容2第二章 xslt初步介紹42.1測試示例42.2 xslt風(fēng)格表單52.3 xslt的實例52.3.1 xslt如何轉(zhuǎn)換xml52.3.2 一個實例62.3.3 過程解析72.3.4 xslt的用途 82.4.
10、xslt的元素語法82.4.1 xsl:template和xsl:apply-templates 82.4.2 xsl:value-of102.4.3 xsl:for-each 102.4.4 xsl:if 102.4.5 xsl:choose, xsl:when 和 xsl:otherwise 112.4.6 xsl:sort 112.5 xpath 表達式122.6 節(jié)點導(dǎo)航132.7 訪問數(shù)據(jù)132.8 高級方法132.9 執(zhí)行模版132.9.1 xsl:apply-templates132.9.2 xsl:call-template142.10 參數(shù)和變量142.10.1 xsl:pa
11、ram / xsl:with-param142.10.2 xsl:variable152.11 計算值162.11.1 xsl:value-of162.11.2 xsl:number162.11.3 xsl:for-each162.11.4 xsl:sort172.12 條件172.12.1 xsl:if172.12.2 xsl:choose / xsl:when / xsl:otherwise182.12.3 詳細(xì)的示例18第三章 xslt技術(shù)及模式203.1 使用開發(fā)xslt203.2 基本xslt之外203.3xslt處理模式203.3.1xslt處理模式213.3.2創(chuàng)建結(jié)果樹213.
12、3.3xslt應(yīng)用模式223.3.4數(shù)據(jù)顯示的例子22第四章 xslt 的工作原理244.1 案例說明244.2 xslt應(yīng)用編程254.2.1xml文檔的類型254.2.2以數(shù)據(jù)為中心的xml文檔轉(zhuǎn)換264.2.3xslt程序指令264.2.4組織循環(huán)264.2.5分支語句27第五章 運用xslt實現(xiàn)html頁面技術(shù)29第六章 結(jié)束語32參考文獻33applica ton programm ing of xslt34 35第一章 引言 1.1研究背景現(xiàn)在我將為大家介紹xml家族的另一種語言xslt,xslt類似html中的css,但是比css功能要強大的多。學(xué)習(xí)xslt的前提是您對xml已經(jīng)
13、有一些了解。xslt可以說更偏向是一種程序語言,但它沒有常見程序語言復(fù)雜,甚至比js等腳本語言還簡單,用平實易懂的語言,由淺入深的介紹xslt。我們首先來澄清一個概念,大家可能聽說過xsl(extensible stylesheet language),xsl和我們這里說的xslt從狹義上理解是一樣的,而按照w3c的標(biāo)準(zhǔn),xslt的說法更嚴(yán)格些,因此我們在文章中統(tǒng)一使用xslt的稱法。它們之間具體的關(guān)系我們會在下面講述。xslt的英文標(biāo)準(zhǔn)名稱為extensible stylesheet language transformation。根據(jù)w3c的規(guī)范說明書(/t
14、r/xslt),最早設(shè)計xslt的用意是幫助xml文檔(document)轉(zhuǎn)換為其它文檔。但是隨著發(fā)展,xslt已不僅僅用于將xml轉(zhuǎn)換為html或其它文本格式,更全面的定義應(yīng)該是:xslt是一種用來轉(zhuǎn)換xml文檔結(jié)構(gòu)的語言。我們已經(jīng)知道,xml是一種電腦程序間交換原始數(shù)據(jù)的簡單而標(biāo)準(zhǔn)的方法。它的成功并不在于它容易被人們書寫和閱讀,更重要的是,它從根本上解決了應(yīng)用系統(tǒng)間的信息交換。因為xml滿足了兩個基本的需求: (1).將數(shù)據(jù)和表達形式分離。就象天氣預(yù)報的信息可以顯示在不同的設(shè)備上,電視,手機或者其它。(2).在不同的應(yīng)用之間傳輸數(shù)據(jù)。電子商務(wù)數(shù)據(jù)交換的與日俱增使得這種需求越來越緊迫。為了使
15、數(shù)據(jù)便于人們的閱讀理解,我們需要將信息顯示出來或者打印出來,例如將數(shù)據(jù)變成一個html文件,一個pdf文件,甚至是一段聲音;同樣,為了使數(shù)據(jù)適合不同的應(yīng)用程序,我們必須有能夠?qū)⒁环N數(shù)據(jù)格式轉(zhuǎn)換為另一種數(shù)據(jù)格式,比如需求格式可能是一個文本文件,一個sql語句,一個http信息,一定順序的數(shù)據(jù)調(diào)用等。而xslt就是我們用來實現(xiàn)這種轉(zhuǎn)換功能的語言。將xml轉(zhuǎn)換為html,是目前xslt最主要的功能。1.2發(fā)展現(xiàn)狀 像很多其他xml家族成員一樣,xslt是由w3c起草和制定的。它的主要發(fā)展歷程如下: 1995年由james clark提議; 1997年8月正式提案為xsl; 1998年5月由norma
16、n walsh完成需求概要; 1998年8月18日xsl草案發(fā)布; 1999年11月16日正式發(fā)布xsl 1.0推薦版本。xslt 2.0 是一個 xslt 1.0 的被校訂的版本推薦 xslt 1.0 ,在 1999 年十一月 16 日出版。xslt 的公眾討論在可擴展類型語言-目錄的論壇上進行,這一份文件在 2004 年2月5日w3 c 專利權(quán)政策之下操作的一個小組生產(chǎn)了。少數(shù)的編輯訂正,在 2006 年11月 21 日當(dāng)做被提議的推薦出版文件。目前,xslt仍然在快速的發(fā)展中。 1.2.1 什么是xpath xpath是xslt的重要組成部分,我們將在第四章講解它的詳細(xì)語法。那么xpat
17、h是什么呢?我們首先來了解一下xsl系列的家族關(guān)系。如圖所示: sgml xml html xsl xslt xslfo(formatting objects)-css xslt xpath 圖1.1 xsl關(guān)系結(jié)構(gòu)xsl在轉(zhuǎn)換xml文檔時分為明顯的兩個過程,第一轉(zhuǎn)換文檔結(jié)構(gòu);其次將文檔格式化輸出。這兩步可以分離開來并單獨處理,因此xsl在發(fā)展過程中逐漸分裂為xslt(結(jié)構(gòu)轉(zhuǎn)換)和xsl-fo(formatting objects)(格式化輸出)兩種分支語言,其中xsl-fo的作用就類似css在html中的作用。而我們這里重點討論的是第一步的轉(zhuǎn)換過程,也就是xslt。另外,在學(xué)習(xí)xml時我們已
18、經(jīng)知道xml是一個完整的樹結(jié)構(gòu)文檔。在轉(zhuǎn)換xml文檔時可能需要處理其中的一部分(節(jié)點)數(shù)據(jù),那么如何查找和定位xml文檔中的信息呢,xpath就是一種專門用來在xml文檔中查找信息的語言。xpath隸屬xslt,因此我們通常會將xslt語法和xpath語法混在一起說。用一種比較好理解的解釋:如果將xml文檔看作一個數(shù)據(jù)庫,xpath就是sql查詢語言;如果將xml文檔看成dos目錄結(jié)構(gòu),xpath就是cd,dir等目錄操作命令的集合。1.2.2 xslt和css的比較 css同樣可以格式化xml文檔,那么有了css為什么還需要xslt呢?因為css雖然能夠很好的控制輸出的樣式,比如色彩,字體,
19、大小等,但是它有嚴(yán)重的局限性,就是:(1) css不能重新排序文檔中的元素;(2) css不能判斷和控制哪個元素被顯示,哪個不被顯示;(3) css不能統(tǒng)計計算元素中的數(shù)據(jù);換句話說,css只適合用于輸出比較固定的最終文檔。css的優(yōu)點是簡潔,消耗系統(tǒng)資源少;而xslt雖然功能強大,但因為要重新索引xml結(jié)構(gòu)樹,所以消耗內(nèi)存比較多。因此,我們常常將它們結(jié)合起來使用,比如在服務(wù)器端用xslt處理文檔,在客戶端用css來控制顯示??梢詼p少響應(yīng)時間。1.2.3 xslt和ie5 在xslt草案發(fā)布不久,微軟就在ie4中提供了支持xsl功能的預(yù)覽版本,到ie5.0發(fā)布時,正式全面支持xslt,可是由于
20、ie5發(fā)布的比xslt1.0標(biāo)準(zhǔn)時間早,因此在ie5.0中支持的xstl功能和xslt 1.0略有不同。xml推行的主要原因之一就是解決html過分依賴瀏覽器的問題,現(xiàn)在微軟又想標(biāo)新立異?好在微軟的ie5.5中執(zhí)行的標(biāo)準(zhǔn)已經(jīng)和w3c的xslt1.0基本相近。但令人頭疼的是ie5.0已經(jīng)發(fā)行了幾百萬套,您使用的xslt很可能不能被客戶的瀏覽器正確執(zhí)行。目前xslt 1.1仍在發(fā)展中,w3c及有關(guān)組織也在和微軟協(xié)商爭取獲得統(tǒng)一。1.3研究目標(biāo)與內(nèi)容主要研究內(nèi)容是xslt的概念,初步介紹,以及如何使用xslt還有 xslt創(chuàng)建html頁面的技術(shù)和xslt 的工作原理。xslt是幫助xml文檔(doc
21、ument)轉(zhuǎn)換為其它文檔。xslt不僅僅用于將xml轉(zhuǎn)換為html或其它文本格式,具體的說,xslt是一種用來轉(zhuǎn)換xml文檔結(jié)構(gòu)的語言。xslt轉(zhuǎn)換xml,是將xml原文檔輸入,用xsl作為模板,通過轉(zhuǎn)換引擎,最終輸出需要的html文檔。xml 因為它在可擴展性和靈活性上的優(yōu)點以及w3c 不遺余力的為它制定各種標(biāo)準(zhǔn), 已經(jīng)成為internet 上的主要語言。如何對xml 文檔進行轉(zhuǎn)換以滿足不同用戶的需要, 成為一個非常重要的問題, 利用xslt 可以很好的解決這個問題。本文詳細(xì)描述了基于xslt 轉(zhuǎn)換xml 文檔的方法, 深入討論其工作原理, 并結(jié)合一個具體應(yīng)用實例, 進一步闡明了基于xsl
22、t 轉(zhuǎn)換xml 文檔的過程?;趚slt技術(shù),探討了一種使用xslt將xml文檔轉(zhuǎn)換為html頁的新技術(shù),使用圖形web頁設(shè)計程序,如. net內(nèi)建的web頁設(shè)計程序或frontpage中的web頁設(shè)計程序,以圖形方式創(chuàng)建頁,然后查看html背后的代碼。之后可以將這些代碼結(jié)合到xslt轉(zhuǎn)換文件中。并用面向?qū)ο蟮母呒壋绦蛟O(shè)計語言visual basic 6. 0對上述算法的主要模型進行了實現(xiàn)。對xslt的功能進行了簡介,詳細(xì)討論了xslt的工作原理、處理模式及節(jié)點樹轉(zhuǎn)換等主要語法,并通過示例說明其具體使用方法。本文共分五章。第一章引言介紹研究背景和研究任務(wù),第二章詳細(xì)介紹xslt相關(guān)語法,重點描
23、述語言用法,第三章闡述xslt工作原理分析設(shè)計過程,第四章對xslt技術(shù)及模式作一個完整的介紹,第五章運用xslt實現(xiàn)html頁面的技術(shù)。 第二章 xslt初步介紹xsl也就是所謂的擴展風(fēng)格表單語言(extensible stylesheet language)由3種語言組成。這三種語言負(fù)責(zé)把xml文檔轉(zhuǎn)換為其他格式。xml fo (xsl格式化對象:xsl formatting objects)說明可視的文檔格式化,而xpath則訪問xml文檔的特定部分。但是xslt(xsl transformations)才是把某一xml文檔轉(zhuǎn)換為其他格式的實際語言。最簡單的應(yīng)用情況首先涉及到兩個文檔:包
24、含原始數(shù)據(jù)的xml文檔和用來轉(zhuǎn)換該文檔的xslt風(fēng)格表單。xslt處理器把xslt風(fēng)格表單的規(guī)則應(yīng)用到xml文檔從而新建出xhtml、wml、svg或者幾乎其他任何xml格式的第3個文檔。多個xslt風(fēng)格表單可以采用多種格式來表達某一文檔。單一的風(fēng)格表單還可以把某一數(shù)據(jù)類型的多種實例轉(zhuǎn)換為標(biāo)準(zhǔn)的報告格式,你只需要修改風(fēng)格表單就可以改變這些報告模式。而xslt則可以把數(shù)據(jù)的多種實例轉(zhuǎn)換為多種格式而不僅僅局限于報告格式:由此可見,xslt是一種把某一系統(tǒng)的數(shù)據(jù)格式轉(zhuǎn)換為另一系統(tǒng)(比如b2b交易)數(shù)據(jù)格式的強大工具。 一開始得需要一個xslt處理器。隨著各類技術(shù)的迅猛發(fā)展,所采用的技術(shù)工具可能會讓你
25、所進行的項目要么成功要么毀滅。目前桌面xslt原型工具并不多,因為這類工具大多數(shù)都針對全規(guī)模的產(chǎn)品系統(tǒng)。必須仔細(xì)考慮使用的工具如何支持xslt規(guī)范。最近推出的瀏覽器,比如internet explorer 5.5、netscape 6.1和mozilla等,它們都支持xslt處理功能。它們也許就是這方面最簡單的使用工具了,可是,在其支持規(guī)范方面卻相當(dāng)欠缺。還有,瀏覽器并沒有支持真正的開發(fā)工具,所以在調(diào)試代碼的時候毫無用處。xslt格式轉(zhuǎn)化通常在服務(wù)器上完成,所以瀏覽器只能對那些包含了指向風(fēng)格表單鏈接的xml文件才有效。instant saxon 是一款用于windows系統(tǒng)的命令行式的、服務(wù)器
26、風(fēng)格的xslt簡單處理器。它實現(xiàn)了基本的文件輸出和錯誤信息。相比瀏覽器能提供更穩(wěn)固的xslt 支持。雖然這一工具還不是完全意義上的開發(fā)環(huán)境,但instant saxon作為實驗用工具還是綽綽有余了。xml spy是一套完整的xml ide,它采用了instant saxon作為其xslt處理器。這一產(chǎn)品非常適合那些在應(yīng)用環(huán)境下開發(fā)xml的工程人員,不過要掌握這套工具還真得需要點時間。2.1測試示例下面的例子假設(shè)xsl處理工具和xml、xsl文件都在一個目錄下。在這個例子中,我們用一個xml文檔表示快餐定貨單,下面我們需要把這個文檔轉(zhuǎn)換為可讀的html格式?,F(xiàn)在請把該xml文檔拷貝并且粘貼到某個
27、文本編輯器內(nèi),然后把它另存為order.xml文件。同樣的,把相應(yīng)的xsl 文檔拷貝為名為order.xsl的文件。這個 xml 文件鏈接到該 xsl風(fēng)格表單,這樣你就可以在合適的瀏覽器中查看該xml 文件,或者用xml spy 對其進行xsl transform 處理。接著用instant saxon打開一個ms-dos命令行窗口,進到文件所在目錄,鍵入saxon.exe order.xml order.xsl order.html命令。以上命令將把轉(zhuǎn)換后的html 結(jié)果輸出為一個名為 order.html的文件,這樣你就可以通過自己的瀏覽器查看該文件了。以上例子的結(jié)果如下:html頁面的標(biāo)
28、題顯示mike的定單(定單號734),內(nèi)容是他訂購食品的列表,包括價格等。 xslt 處理器處理了包含數(shù)據(jù)的 xml文件并把它轉(zhuǎn)換為html輸出結(jié)果。xslt風(fēng)格表單則定義了描述xml數(shù)據(jù)的 html標(biāo)簽定位,方法是采用組成xslt語言的處理指令。雖然 xslt 處理器通常接受命令采用相應(yīng)的風(fēng)格表單處理,不過,xml文檔可以指示自己默認(rèn)的xslt風(fēng)格表單,方法是在文檔中包含以下行:其中my.xsl是指向風(fēng)格表單的url。以上的代碼對基于瀏覽器的格式轉(zhuǎn)換是基本的要求。2.2 xslt風(fēng)格表單為了深入理解xslt 編程,必須首先理解 xml,因為 xslt不只是負(fù)責(zé)轉(zhuǎn)換 xml 而且自身還是一種完
29、全意義上的xml標(biāo)準(zhǔn)語言。在理論上,完全可以編寫負(fù)責(zé)自身格式轉(zhuǎn)換的xslt風(fēng)格表單.xml 并不是一種通常意義上的語言,xml是一種元語言(metalanguage),也就是建立xml規(guī)范語言的結(jié)構(gòu)(比如xsl和 xhtml就是xml規(guī)范語言)。html看起來很象xml,但實際上違反了好些 xml規(guī)則。xml 語言定義了一套用來把數(shù)據(jù)標(biāo)記為元素(或者可以說節(jié)點)的標(biāo)簽。比方說,就xhtml語法而言,標(biāo)簽就等于開始標(biāo)記某個特定的xml節(jié)點。xml節(jié)點可以包含屬性和內(nèi)容體。屬性是由字符串組成的名字/值對。內(nèi)容體可以是字符串和/或更多的 xml節(jié)點。這就意味著,xml是一種層次化的結(jié)構(gòu),可以表示很復(fù)
30、雜的數(shù)據(jù)格式。我們不妨考慮以下的一個xhtml片段:hello world! 在以上的代碼段中,每個節(jié)點都有自己的開-閉標(biāo)簽,兩個標(biāo)簽之間是更多的節(jié)點和文本字符串。img 節(jié)點有一個src屬性而沒有內(nèi)容,緊挨著開標(biāo)簽的是一個終止斜線。這個終止斜線和文本都在節(jié)點內(nèi)嵌套,而后者又在節(jié)點內(nèi)嵌套,顯然節(jié)點則在內(nèi)嵌套。xslt 的核心思想是建立上下文環(huán)境(context),也就是在xml文檔內(nèi)的特定節(jié)點或者整套節(jié)點同時輸出為存在于這個環(huán)境內(nèi)的格式化數(shù)據(jù)版本。為此, xslt風(fēng)格表單被分解為離散的模版,每個模版負(fù)責(zé)處理xml文檔內(nèi)某類型的標(biāo)簽。在這些模版內(nèi),xslt要用到標(biāo)量、傳遞參數(shù)、循環(huán)條件以及其他轉(zhuǎn)
31、換xml的元件。元素是任何xslt風(fēng)格表單的最外層元素,你要為其指定版本和一個或者多個名稱空間(namespace):.你可以設(shè)置其他屬性,但是,對幾乎所有的基本風(fēng)格表單來說,可以原樣使用這些標(biāo)簽。其中就可以嵌套模版元素了。2.3 xslt的實例 2.3.1 xslt如何轉(zhuǎn)換xml 我們打個有趣的比方,你玩過橡皮泥吧,用不同的模子按上去,就可以做出需要的形狀。如果我們假設(shè)xml數(shù)據(jù)文檔是一塊大橡皮泥,xslt就象是一個模子,用力一按,就做出需要的形狀來-符合不同需要的html文檔具體看下面的過程示意如圖所示:xsl xml 轉(zhuǎn)換引擎(xml processor) html文檔(或者其他xml文
32、檔) 圖1.2 xslt如何轉(zhuǎn)換xml我們將xml原文檔輸入,用xsl作為模板,通過轉(zhuǎn)換引擎,最終輸出需要的html文檔。其中的轉(zhuǎn)換引擎就是比喻中用力一按的過程。在具體應(yīng)用中,有專門的軟件來實現(xiàn)這個轉(zhuǎn)換過程,名為xml processor。目前已經(jīng)有很多 processor 軟件(下面將詳細(xì)提到),在ie5.5中也已經(jīng)內(nèi)嵌了xml processor。2.3.2 一個實例 現(xiàn)在我們來看一個簡單的xslt實際應(yīng)用例子,獲得一些感官上的認(rèn)識。很多網(wǎng)頁設(shè)計師看到類似html的代碼才會放心,代碼是那樣的親切和熟悉。例子1: hello, world! hello world作為第一個教程已經(jīng)是程序語言
33、中的慣例了。我們也遵守這個慣例,看看如何利用xslt來 顯示hello world。雖然這個例子沒有什么實際用途,但是請大家不要急,后面還有更詳細(xì)的例子。第一步:建立要輸入xml文檔hello.xml。hello, world!這是一個很簡單xml文檔,只包含一個節(jié)點的xml結(jié)構(gòu)樹。第二步:建立xslt文檔hello.xsl。提示:默認(rèn)的xslt文件的后綴名為.xsl。first xslt example你現(xiàn)在可以用ie5.0以上版本瀏覽器打開這個hello.xsl文件,看到xsl的結(jié)構(gòu)樹。第三步:在xml中調(diào)用這個xsl文件。修改hello.xml的代碼為:hello, world! ok,
34、到這一步原理上已經(jīng)完成了所有的代碼,接下來只要用一個xslt的處理器(xml processor)來執(zhí)行hello.xml就可以看到hello world的顯示結(jié)果了。流行的處理器軟件有以下幾種:(1).james clark的xt。下載網(wǎng)址:(2).ibm的xml for java軟件包,名為lotusxsl。(3).saxon。下載網(wǎng)址:(4).微軟的msxml3。下載網(wǎng)址: 我想在瀏覽器中看到hello world的效果應(yīng)該怎么做?在微軟的ie5.5內(nèi)嵌了msxml3解釋器,你可以用ie5.5打開hello.xml文件,就可以看到結(jié)果。如果只看到xml結(jié)構(gòu)樹,不是單獨的hello wor
35、ld字樣,說明你的瀏覽器沒有安裝msxml3版本。如果沒有安裝又想看效果怎么辦?那還是用我們在xml中的老辦法,采用js實現(xiàn)。下面是一種實現(xiàn)的代碼,可以保存為hello.htm,和上面的hello.xml,hello.xsl放在同一目錄下面。最后用ie5.0以上版本打開hello.htm就可以看到效果了。var xmldoc = new activexobject(microsoft.xmldom);xmldoc.async=false;xmldoc.load(hello.xml);nodes = xmldoc.documentelement.childnodes;greeting.inner
36、text = nodes.item(0).text;first xslt example2.3.3 過程解析 如果你成功的看到效果,你也許想知道這些代碼的具體含義,我們來詳細(xì)解說:看hello.xsl文件 這是標(biāo)準(zhǔn)的xml文檔的首行代碼,因為xslt本身也是xml文檔。encoding屬性用來定義文檔使用的編碼形式,iso-8859-1主要支持西歐和北美的語言編碼。如果你想使用簡體中文,那么就應(yīng)該寫成:接下去的代碼是: 這是標(biāo)準(zhǔn)的xslt文件首行代碼。xsl:stylesheet代碼的意思是將文檔作為一個樣式表來(stylesheet)處理。xmlns:xsl屬性是一個名字空間聲明,和xml中
37、的名字空間使用方法一樣,用來防止元素名稱重復(fù)和混亂。其中前綴xsl的意思是文檔中使用的元素遵守w3c的xslt規(guī)范。最后的version屬性說明樣式表只采用xslt 1.0的標(biāo)準(zhǔn)功能,這也是目前僅有的標(biāo)準(zhǔn)。 一個元素定義一個模板規(guī)則。屬性match=/說明xml源文檔中,這個模板規(guī)則作用的起點。/是一種xpath語法,我們在后面將詳細(xì)講述,這里的/代表xml結(jié)構(gòu)樹的根(root)。接下去的代碼是:first xslt example說明:當(dāng)模板規(guī)則被觸發(fā),模板的內(nèi)容就會控制輸出的結(jié)果。例子中,模板大部分內(nèi)容由html元素和文本構(gòu)成。只有元素是xslt語法,這里的作用是拷貝原文檔中的一個節(jié)點的值
38、到輸出文檔。而select屬性則詳細(xì)指定要處理的節(jié)點名稱。這是xpath語法,greeting的意思就是尋找根節(jié)點名為greeting的元素,并用模板來處理這個節(jié)點。具體的就是找到元素,然后將元素的值hello world按模板樣式拷貝到輸出文件。提示:由于xml文檔是嚴(yán)格的層級結(jié)構(gòu)(用ie5查看xml文件,會看見xml文檔類似多級關(guān)聯(lián)菜單),所以我們形象的稱xml文檔為文檔樹,其中每一對元素稱作樹的一個節(jié)點。根元素就是根節(jié)點。最后關(guān)閉所有元素: 你是否想過為什么要用這么復(fù)雜的方法來顯示hello world呢?關(guān)鍵不在表面,而在于實質(zhì):用這種方法,hello world可以從xml文檔中被提
39、取出來,并用各種不同的xslt模板處理,來輸出不同需求的文檔。我們來看看xslt的主要用途:2.3.4 xslt的用途 xslt的主要用途就是數(shù)據(jù)轉(zhuǎn)換應(yīng)用。由于以xml為基礎(chǔ)的電子商務(wù)廣泛普及,xslt作為數(shù)據(jù)轉(zhuǎn)換的角色也越來越重要。例如直接將電視新聞的數(shù)據(jù)格式轉(zhuǎn)換成報紙新聞需要的數(shù)據(jù)格式;將股票數(shù)據(jù)直接轉(zhuǎn)換成圖片顯示在網(wǎng)頁上;對edi(電子數(shù)據(jù)交換)數(shù)據(jù)進行統(tǒng)計,排序等等。xslt是處理類似工作的理想工具。 2.4.xslt的元素語法通過前面的介紹,我們已經(jīng)對xslt的基本概念和它的轉(zhuǎn)換過程有了一些了解。下面我們一起來看下xslt的具體語法。2.4.1 xsl:template和xsl:ap
40、ply-templates模板(template)是xslt中最重要的概念之一。xslt文件就是由一個一個的模板組成,任何一個xslt文件至少包含一個模板。模板的概念就象是搭積木;你如果是程序員,也可以將模板看作一個方法,一個類,或者一個模塊。它們可以被拼裝組合,也可以單獨成塊,不同的模板控制不同的輸出格式。 模板(template)由兩部分組成:匹配模式(match pattern)和執(zhí)行。簡單的講模式定義xml源文檔中哪一個節(jié)點將被模板處理,執(zhí)行則定義輸出的是什么格式。兩部分對應(yīng)的語法為xsl:template和xsl:apply-templates。xsl:template的語法是: x
41、sl:template的作用是定義一個新模板。屬性中name,priority,和mode用來區(qū)別匹配同一節(jié)點的不同模板。它們不是常用的屬性。match屬性則控制模板的匹配模式(pattern),匹配模式是用來定位xml源文檔中哪一個節(jié)點被模板處理。一個模板匹配一個節(jié)點。我們用一個例子來幫助理解: 假設(shè)我們要處理一個包含章節(jié)和段落文檔。我們用para元素定義段落,用chapter元素定義章節(jié)。我們來看看match屬性可能的值。下面的語句寫法說明模板匹配所有的para元素下面的語句寫法說明模板匹配所有的para元素和所有的chapter元素:下面的語句寫法說明模板匹配所有的父節(jié)點為chapter
42、元素的para元素:下面的語句寫法說明模板匹配根節(jié)點:我們再來看apply-templates語法: xsl:apply-templates用來執(zhí)行那一個節(jié)點被模板具體處理。你可以將它理解為程序中調(diào)用子函數(shù)。select屬性用來定義確切的節(jié)點名稱。xsl:apply-templates總是包含在xsl:template元素中,象這樣:這段代碼說明摸板匹配整個文檔(根節(jié)點),具體執(zhí)行時處理根節(jié)點下所有para元素。而這一段代碼則表示摸板匹配para節(jié)點,所有para下的子元素都將被處理。2.4.2 xsl:value-ofxsl:value-of用來將源文檔中元素的文本值寫到輸出文檔中。例如:有
43、一個個人資料的xml文檔:ajie28 我如果想在輸出文檔中顯示上面這個xml源文檔中的name元素的值,可以這樣寫xslt代碼: 執(zhí)行后,你會看到ajie被單獨顯示出來。其中match=person定義摸板匹配person節(jié)點,xsl:value-of 語法說明需要輸出一個節(jié)點的值,而select=name則定義需要被輸出的元素為name??催@個過程是不是和數(shù)據(jù)庫里查詢一個人的名字很象?當(dāng)然,xsl:value-of查詢還有更多,更復(fù)雜的語法,因為是涉及尋找和定位的功能,我們會放在后面的xpath語法中在仔細(xì)講解。同樣功能的還有xsl:copy-of,用法一樣,就不重復(fù)解釋了。2.4.3 x
44、sl:for-eachxsl:for-each語法允許你循環(huán)處理被選擇的節(jié)點。例如:有一個含多個個人資料的xml文檔:ajie28tom24miake30我需要顯示所有人的姓名,則可以將xslt代碼寫成:2.4.4 xsl:ifxsl:if類似普通程序語言的if條件語句,允許設(shè)定節(jié)點滿足某個條件時,被模板處理。xsl:if的語法格式為:template body例如: 這段代碼的意思是檢測people節(jié)點下所有的元素,如果發(fā)現(xiàn)有元素,則將元素的值輸出。其中符號是統(tǒng)配符,表示節(jié)點下所有的元素。2.4.5 xsl:choose, xsl:when 和 xsl:otherwisexsl:if語法沒有else的屬性。如果我們要進行多項選擇,那么就要使用xsl:choose / xsl:when / xsl:otherwise系列流程控制語法了。具體的使用請看下面的xsl文件例子:no name available 說明:首先在people節(jié)點下尋找屬性值為ajie的元素,如果找到,將ajie用粗體輸出;如果沒有發(fā)現(xiàn)值為ajie的元素,則將所有的元素的值都用斜體輸出;如果沒有發(fā)現(xiàn)任何元素,則顯示n
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版學(xué)生交通安全責(zé)任與保障協(xié)議匯編3篇
- 2025至2031年中國微型車制動器總成行業(yè)投資前景及策略咨詢研究報告
- 事業(yè)單位協(xié)議管理操作指南:2024版解決方案探析
- 2025至2030年中國高效低噪聲混流風(fēng)機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國紅外光譜治療儀數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國寵物電熱墊寵物電熱墊數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國人造向日葵花枝數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國CD掛架數(shù)據(jù)監(jiān)測研究報告
- 2025年中國咖喱餡市場調(diào)查研究報告
- 2025年中國信息采集數(shù)字化設(shè)備市場調(diào)查研究報告
- 2024年四川省成都市樹德實驗中學(xué)物理八年級下冊期末質(zhì)量檢測試題含解析
- 九型人格與領(lǐng)導(dǎo)力講義
- 廉潔應(yīng)征承諾書
- 2023年四川省成都市中考物理試卷真題(含答案)
- 泵車述職報告
- 2024年山西文旅集團招聘筆試參考題庫含答案解析
- 恢復(fù)中華人民共和國國籍申請表
- 管理期貨的趨勢跟蹤策略 尋找危機阿爾法
- 瀝青化學(xué)分析試驗作業(yè)指導(dǎo)書
- 腦出血的護理課件腦出血護理查房PPT
- 南京大學(xué)-大學(xué)計算機信息技術(shù)教程-指導(dǎo)書
評論
0/150
提交評論