版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2020/12/6,1,XML實用教程 第5章,配合例子源代碼一起使用,Power point 制作:耿祥義 張躍平,XML與XSL,2020/12/6,2,本章主要內(nèi)容 XSL樣式表文件與XSL變換 XSL樣式表文件中的模板 標(biāo)記與模板匹配 模板調(diào)用 常用XSL標(biāo)記 難點 模板調(diào)用,第5章 導(dǎo)讀,2020/12/6,3,概述,XML關(guān)心的是數(shù)據(jù)的結(jié)構(gòu),并能很好、方便地描述數(shù)據(jù)。但是,數(shù)據(jù)的顯示外觀也是很重要的一個方面,XML能有效地分離數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)顯示,W3C為XML數(shù)據(jù)顯示發(fā)布了兩個建議規(guī)范CSS(層迭樣式表)和XSL(可擴(kuò)展樣式語言),上章重點講述怎樣用CSS顯示XML標(biāo)記中的文本內(nèi)容
2、,本章講述XSL。XSL提供了比CSS更強(qiáng)大的顯示數(shù)據(jù)的能力,利用XSL可以為XML提供像HTML那樣美觀的數(shù)據(jù)顯示。,2020/12/6,4,5.1.1 初識XSL樣式表文件,5.1 XSL樣式表文件與XSL變換,為了使用XSL語言為XML提供顯示數(shù)據(jù)的外觀,其關(guān)鍵點是編寫一個稱作XSL樣式表的文件,簡稱XSL文件。 XSL樣式表文件是由一些特殊的標(biāo)記構(gòu)成的文本文件,瀏覽器通過處理這些特殊的標(biāo)記來顯示XML文件中數(shù)據(jù)。,2020/12/6,5,5.1.2 XML關(guān)聯(lián)XSL文件,XML文件需使用使用操作指令: 將XML文件和XSL樣式表關(guān)聯(lián)。 例題5-1 p85,2020/12/6,6,5.1
3、.3 XSL變換與HTML,XSL處理器把XSL樣式表文件轉(zhuǎn)化為HTML文件的過程稱做XSL變換(XSL Tranformation,XSLT)。 IE5.5(以上版本)帶有XSL處理器。 通過關(guān)聯(lián)XSL樣式表,XML有效地分離了數(shù)據(jù)的結(jié)構(gòu)和數(shù)據(jù)的顯示 ,步驟如下: 1.首先針對XML文件編寫XSL樣式表文件。 2.將XML文件和XSL樣式表關(guān)聯(lián)。 3.將XSL樣式表轉(zhuǎn)化為HTML文件(瀏覽器內(nèi)置的XSL轉(zhuǎn)化器負(fù)責(zé))。,2020/12/6,7,5.2 XSL樣式表文件中的模板,XSL樣式表是擴(kuò)展名為“.xsl”的文本文件,和XML文件類似,XSL文件的內(nèi)容也是由標(biāo)記及其內(nèi)容組成,只不過按著W3
4、C規(guī)范,這些標(biāo)記都有著特殊的意義 . XSL樣式表的目的是為和其關(guān)聯(lián)的XML文件提供數(shù)據(jù)顯示的外觀,為了不引起混淆,我們將XSL樣式表中的標(biāo)記稱做XSL標(biāo)記、將XML文件中的標(biāo)記稱做XML標(biāo)記 。 XSL樣式表文件也必須有XML聲明,且與其關(guān)聯(lián)的XML文件有著同樣的編碼,例如: XSL樣式表文件的根標(biāo)記的名稱必須是stylesheet,如果準(zhǔn)備讓瀏覽器的XSL處理器來實現(xiàn)XSL變換,根標(biāo)記必須有名稱空間,例如: 根標(biāo)記的內(nèi)容. ,2020/12/6,8,5.2.1 模板,樣式表的基本結(jié)構(gòu)就是由標(biāo)若干個稱做“模板”的XSL標(biāo)記組成,簡稱模板。模板都是根標(biāo)記的子標(biāo)記,模板標(biāo)記的名稱都是“templ
5、ate”,例如: 模板內(nèi)容 一個模板的“模板內(nèi)容”是由HTML標(biāo)記和嵌入其中的XSL標(biāo)記組成。 模板必須有屬性match,該屬性的值是一個特殊的字符串,稱做模板的“標(biāo)記匹配模式”。 如果XML文件中的一個XML標(biāo)記匹配于XSL樣式表文件中的某個模板的“標(biāo)記匹配模式”,就稱該模板是XML標(biāo)記匹配的模板或稱XML標(biāo)記與該模板相匹配。,2020/12/6,9,5.2.2 主模板與XSL處理器_1,1.主模板:在模板中有一個稱作“主模板”的特殊模板,該模板中的match屬性的值是“/”,如下所示: 主模板的內(nèi)容 一個XSL樣式表文件有且僅有 一個主模板,所謂主模板就是與 XML文件中根標(biāo)記匹配的模板。
6、 例題5-2 p88,2020/12/6,10,5.2.2 主模板與XSL處理器_2,2.XSL處理器:XSL處理器 總是從主模板開始實施 XSL變換。主模板的內(nèi) 容中可以包括調(diào)用其它 模板的“模板調(diào)用”標(biāo)記。,2020/12/6,11,5.3 標(biāo)記與模板匹配,XSL樣式表文件中的模板的格式中涉及到“標(biāo)記匹配模式”,如下所示: 模板內(nèi)容 “標(biāo)記匹配模式”就是滿足一定條件的一族XML標(biāo)記,其中的每個XML標(biāo)記都稱做與“標(biāo)記匹配模式”相匹配的XML標(biāo)記。如果XML文件中的一個XML標(biāo)記是模板的“標(biāo)記匹配模式”的一個實例,就稱該標(biāo)記是與模板相匹配的XML標(biāo)記,或稱模板匹配于該XML標(biāo)記。 XSL處理
7、器在工作中經(jīng)常要處理“標(biāo)記匹配模式” 。,2020/12/6,12,5.3.1 XML子標(biāo)記匹配的模板,XSL樣式表為XML文件中根標(biāo)記的子標(biāo)記提供輸出數(shù)據(jù)的模板,這類模板中的“標(biāo)記匹配模式”可以是子標(biāo)記的名字或根標(biāo)記的名字和子標(biāo)記的名字用“/”分割。 假如XML文件的根標(biāo)記的名字是student,它有name,sex和birthday三個子標(biāo)記,那么下列三個模板分別是這三個子標(biāo)記相匹配的模板: (1) (2) 模板的內(nèi) 容模板的內(nèi)容 (3) 模板的內(nèi)容 而下列模板是與三個子標(biāo)記:name,sex和birthday都相匹配的模板: 模板的內(nèi)容 ,2020/12/6,13,5.3.2 任意級別X
8、ML子標(biāo)記匹配的模板,通過使用統(tǒng)配符“*”可以建立匹配于任何標(biāo)記的模板,無論該標(biāo)記是根標(biāo)記的第幾級子標(biāo)記。下列模板: 模板的內(nèi)容 是與根標(biāo)記student的所有2級子標(biāo)記(孫標(biāo)記)相匹配的模板。 更多的與各級標(biāo)記相匹配的模板舉例如91頁。 XML文件的標(biāo)記是樹型結(jié)構(gòu),使用“/”分割符必須從根標(biāo)記出發(fā)才能確定出一類標(biāo)記。 例題5-3 p92,2020/12/6,14,5.3.3 具有指定屬性的XML子標(biāo)記匹配的模板,通過使用“標(biāo)記屬性”或“標(biāo)記屬性=屬性值”可以建立與具有指定屬性的標(biāo)記相匹配模板,這樣,我們就讓名字相同但屬性不同的標(biāo)記匹配于不同的模板。 下列模板: 模板的內(nèi)容 是與名字為name
9、且具有屬性ID的標(biāo)記相匹配的模板,無論name標(biāo)記是根標(biāo)記的哪一級子標(biāo)記。 例題5-4 p94,2020/12/6,15,5.3.4 使用“”和“|”給出XML標(biāo)記匹配的模板,可以使用“ ”來給出一個標(biāo)記需滿足的條件,例如: 模板的內(nèi)容 是與名字為book且具有子標(biāo)記price的標(biāo)記相匹配的模板,無論book標(biāo)記是根標(biāo)記的哪一級子標(biāo)記。 可以使用“|”給出幾個可以選擇的標(biāo)記,例如: 模板的內(nèi)容 是與標(biāo)記名字為“單價”、“庫存量”或“生產(chǎn)日期”等標(biāo)記相匹配的模板,無論這些標(biāo)記是根標(biāo)記的哪一級子標(biāo)記。,2020/12/6,16,5.4.1 模板調(diào)用標(biāo)記,5.4 模板調(diào)用,1.帶select屬性的模
10、板調(diào)用標(biāo)記。 稱 是有條件的XSL模板調(diào)用標(biāo)記。例如: 2不帶select屬性的模板調(diào)用標(biāo)記 稱 是不帶select屬性的模板調(diào)用標(biāo)記。由于該模板調(diào)用標(biāo)記中沒有“標(biāo)記匹配模式”,所以不帶參數(shù)select的模板調(diào)用標(biāo)記需要作為“xsl:for-each”標(biāo)記的子標(biāo)記來使用,例如: ,2020/12/6,17,5.4.2 模板調(diào)用標(biāo)記的執(zhí)行過程_1,1.對于帶select屬性的模板調(diào)用標(biāo)記,XSL處理器首先根據(jù) 中的“標(biāo)記匹配模式”到XML文件中尋找所有和“標(biāo)記匹配模式”匹配的標(biāo)記,然后,逐個地為這些標(biāo)記到XSL樣式表中尋找匹配的模板,一旦找到匹配的模板,就對該模板的內(nèi)容實施XSL變換,并將變換后
11、的文本嵌入到HTML文件中.,2020/12/6,18,5.4.2 模板調(diào)用標(biāo)記的執(zhí)行過程_2,2.對于不帶select屬性的模板調(diào)用標(biāo)記,應(yīng)當(dāng)作為“xsl:for-each”標(biāo)記中的子標(biāo)記來使用: 其它內(nèi)容 其它內(nèi)容 XSL處理器首先根據(jù)“模板調(diào)用標(biāo)記,就將該模板標(biāo)記按著下列帶select屬性的來處理: 然后,再尋找下一個和“標(biāo)記匹配模式”匹配的標(biāo)記,直到?jīng)]有匹配的標(biāo)記為止。XSL處理器將依次將“xsl:for-each”標(biāo)記變換后的內(nèi)容嵌入到HTML文件中。 例題5-5 p96,2020/12/6,19,5.5 常用的XSL標(biāo)記,樣式表的基本結(jié)構(gòu)就是模板,模板也是一種標(biāo)記,模板中有一個重要
12、的參數(shù)就是“match”,該參數(shù)的值決定了哪些XML標(biāo)記和該模板相匹配,關(guān)于“match”的取值和作用我們在5.3做了詳細(xì)的介紹。 例題5-6 p98,2020/12/6,20,5.6 xsl:for-each的用法,“xsl:for-each”XSL標(biāo)記的格式如下: 內(nèi)容 該XSL標(biāo)記必須在模板中使用。XSL處理器根據(jù)“xsl:for-each”標(biāo)記中的中的“標(biāo)記匹配模式”到XML文件中尋找第一個與“標(biāo)記匹配模式”匹配的XML標(biāo)記,一旦找到這樣的XML標(biāo)記就對“xsl:for-each”標(biāo)記中的“內(nèi)容”實施變換,并將變換后的內(nèi)容嵌入到HTML文件中。然后,再尋找下一個和“標(biāo)記匹配模式”匹配的
13、XML標(biāo)記,直到?jīng)]有匹配的標(biāo)記為止。 例題5-7 p99,2020/12/6,21,5.7 xsl:value-of的用法,“xsl:value-of”XSL標(biāo)記的格式為 該XSL標(biāo)記必須在模板中使用,即作為模板的子孫標(biāo)記。當(dāng)“標(biāo)記匹配模式”是特殊的“.”時,可以將 簡寫為 XSL處理器將“xsl:value-of”標(biāo)記變換為和“標(biāo)記匹配模式”相匹配的XML標(biāo)記及其子孫標(biāo)記的文本內(nèi)容。 對于下列模板: 其中的將被變換為“張三”標(biāo)記及其子標(biāo)記的文本內(nèi)容,張三一定是“大學(xué)生”的子標(biāo)記。 將被變換為“大學(xué)生”標(biāo)記及其子標(biāo)記的文本內(nèi)容。 例題5-8 p101 ,例題5-9 p102,2020/12/6
14、,22,5.8 xsl:copy的用法,“xsl:copy” XSL標(biāo)記的格式為或 文本內(nèi)容 該XSL標(biāo)記必須在模板中使用,即作為模板的子孫標(biāo)記 。 “xsl: copy”的作用是獲取和它的父標(biāo)記中“標(biāo)記匹配模式”匹配的XML標(biāo)記的名稱及標(biāo)記符號。也就是說,如果一個XSL標(biāo)記中有“標(biāo)記匹配模式”,那么我們可以將“xsl: copy”做為子標(biāo)記,以便獲得和“標(biāo)記匹配模式”匹配的XML標(biāo)記的名稱與符號。 例題5-10 p104,2020/12/6,23,5.9 xsl:if的用法,“xsl:if” XSL標(biāo)記的格式如下: 標(biāo)記內(nèi)容 該XSL標(biāo)記必須在模板中使用,即作為模板的子孫標(biāo)記。,2020/1
15、2/6,24,5.9.1 屬性條件,如果想判斷和“.”匹配XML標(biāo)記是否有某個屬性(不管屬性值如何),就可以使用“xsl:if”標(biāo)記的下列格式: 內(nèi)容 ,2020/12/6,25,5.9.2 屬性值條件,如果想判斷和“.”匹配XML標(biāo)記是否有某個屬性,并判斷該屬性值和某個特定屬性值進(jìn)行“關(guān)系比較”后的結(jié)果是否為真,就可以使用“xsl:if”標(biāo)記的下列兩種格式。 格式1 內(nèi)容 格式2 內(nèi)容 ,2020/12/6,26,5.9.3 子標(biāo)記條件,如果想判斷和“.”匹配XML標(biāo)記是否有某個子標(biāo)記,就可以使用“xsl:if”標(biāo)記的下列格式: 內(nèi)容 ,2020/12/6,27,5.9.4 子標(biāo)記及屬性條件
16、,如果想判斷和“.”匹配XML標(biāo)記是否有特定屬性的子標(biāo)記,就可以使用“xsl:if”標(biāo)記的下列格式: 內(nèi)容 ,2020/12/6,28,5.9.5 子標(biāo)記及屬性、屬性值條件,如果想判斷和“.”匹配XML標(biāo)記是否有特定屬性的子標(biāo)記、并且需要判斷子標(biāo)記的屬性值和某個特定屬性值進(jìn)行“關(guān)系比較”的結(jié)果是否為真,就可以使用“xsl:if”標(biāo)記的下列2種格式: 格式1 內(nèi)容 格式2 內(nèi)容 例題5-11 p107,2020/12/6,29,5.10 xsl:choose的用法,“xsl:choose”標(biāo)記必須在模板中使用,相對“xsl:if ”標(biāo)記,“xsl:choose”標(biāo)記可以給出多個判斷條件?!皒sl:choose”標(biāo)記必須配合“xsl:when”和“xsl:otherwise”標(biāo)記使用,將二者作為“xsl:choose”標(biāo)記的子標(biāo)記。 “xsl:choose”標(biāo)記的格式如下: 內(nèi)容 內(nèi)容 內(nèi)容 例題5-12 p109,202
溫馨提示
- 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年湖北電力建設(shè)第一工程公司招聘筆試參考題庫含答案解析
- 2025年度個人信用擔(dān)保裝修借款合同范本3篇
- 2025年個人金融理財產(chǎn)品投資合同4篇
- 2025年度油氣輸送鋼管租賃合作合同2篇
- 2025年度個人農(nóng)田科技種植項目合作協(xié)議4篇
- 2025版二手房免稅托管與租賃一體化服務(wù)合同
- 2025版協(xié)議離婚全程法律服務(wù)及婚姻財產(chǎn)分割合同3篇
- 2025年度二零二五年度鋼廠廢鋼再生產(chǎn)品銷售合同2篇
- 2025版新能源電池生產(chǎn)承包經(jīng)營合同示范文本3篇
- 2025-2030全球叉車機(jī)器人行業(yè)調(diào)研及趨勢分析報告
- 春節(jié)拜年的由來習(xí)俗來歷故事
- 2023年河北省中考數(shù)學(xué)試卷(含解析)
- 通信電子線路(哈爾濱工程大學(xué))智慧樹知到課后章節(jié)答案2023年下哈爾濱工程大學(xué)
- 《公路勘測細(xì)則》(C10-2007 )【可編輯】
- 皮膚惡性黑色素瘤-疾病研究白皮書
- 從心理學(xué)看現(xiàn)代家庭教育課件
- C語言程序設(shè)計PPT(第7版)高職完整全套教學(xué)課件
- 頭頸外科臨床診療指南2021版
- 大國重器北斗系統(tǒng)
- 網(wǎng)球運動知識教育PPT模板
- 防火墻漏洞掃描基礎(chǔ)知識
評論
0/150
提交評論