版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、2020/12/6,1,XML實用教程 第5章,配合例子源代碼一起使用,Power point 制作:耿祥義 張躍平,XML與XSL,2020/12/6,2,本章主要內(nèi)容 XSL樣式表文件與XSL變換 XSL樣式表文件中的模板 標記與模板匹配 模板調(diào)用 常用XSL標記 難點 模板調(diào)用,第5章 導讀,2020/12/6,3,概述,XML關心的是數(shù)據(jù)的結構,并能很好、方便地描述數(shù)據(jù)。但是,數(shù)據(jù)的顯示外觀也是很重要的一個方面,XML能有效地分離數(shù)據(jù)結構和數(shù)據(jù)顯示,W3C為XML數(shù)據(jù)顯示發(fā)布了兩個建議規(guī)范CSS(層迭樣式表)和XSL(可擴展樣式語言),上章重點講述怎樣用CSS顯示XML標記中的文本內(nèi)容
2、,本章講述XSL。XSL提供了比CSS更強大的顯示數(shù)據(jù)的能力,利用XSL可以為XML提供像HTML那樣美觀的數(shù)據(jù)顯示。,2020/12/6,4,5.1.1 初識XSL樣式表文件,5.1 XSL樣式表文件與XSL變換,為了使用XSL語言為XML提供顯示數(shù)據(jù)的外觀,其關鍵點是編寫一個稱作XSL樣式表的文件,簡稱XSL文件。 XSL樣式表文件是由一些特殊的標記構成的文本文件,瀏覽器通過處理這些特殊的標記來顯示XML文件中數(shù)據(jù)。,2020/12/6,5,5.1.2 XML關聯(lián)XSL文件,XML文件需使用使用操作指令: 將XML文件和XSL樣式表關聯(lián)。 例題5-1 p85,2020/12/6,6,5.1
3、.3 XSL變換與HTML,XSL處理器把XSL樣式表文件轉化為HTML文件的過程稱做XSL變換(XSL Tranformation,XSLT)。 IE5.5(以上版本)帶有XSL處理器。 通過關聯(lián)XSL樣式表,XML有效地分離了數(shù)據(jù)的結構和數(shù)據(jù)的顯示 ,步驟如下: 1.首先針對XML文件編寫XSL樣式表文件。 2.將XML文件和XSL樣式表關聯(lián)。 3.將XSL樣式表轉化為HTML文件(瀏覽器內(nèi)置的XSL轉化器負責)。,2020/12/6,7,5.2 XSL樣式表文件中的模板,XSL樣式表是擴展名為“.xsl”的文本文件,和XML文件類似,XSL文件的內(nèi)容也是由標記及其內(nèi)容組成,只不過按著W3
4、C規(guī)范,這些標記都有著特殊的意義 . XSL樣式表的目的是為和其關聯(lián)的XML文件提供數(shù)據(jù)顯示的外觀,為了不引起混淆,我們將XSL樣式表中的標記稱做XSL標記、將XML文件中的標記稱做XML標記 。 XSL樣式表文件也必須有XML聲明,且與其關聯(lián)的XML文件有著同樣的編碼,例如: XSL樣式表文件的根標記的名稱必須是stylesheet,如果準備讓瀏覽器的XSL處理器來實現(xiàn)XSL變換,根標記必須有名稱空間,例如: 根標記的內(nèi)容. ,2020/12/6,8,5.2.1 模板,樣式表的基本結構就是由標若干個稱做“模板”的XSL標記組成,簡稱模板。模板都是根標記的子標記,模板標記的名稱都是“templ
5、ate”,例如: 模板內(nèi)容 一個模板的“模板內(nèi)容”是由HTML標記和嵌入其中的XSL標記組成。 模板必須有屬性match,該屬性的值是一個特殊的字符串,稱做模板的“標記匹配模式”。 如果XML文件中的一個XML標記匹配于XSL樣式表文件中的某個模板的“標記匹配模式”,就稱該模板是XML標記匹配的模板或稱XML標記與該模板相匹配。,2020/12/6,9,5.2.2 主模板與XSL處理器_1,1.主模板:在模板中有一個稱作“主模板”的特殊模板,該模板中的match屬性的值是“/”,如下所示: 主模板的內(nèi)容 一個XSL樣式表文件有且僅有 一個主模板,所謂主模板就是與 XML文件中根標記匹配的模板。
6、 例題5-2 p88,2020/12/6,10,5.2.2 主模板與XSL處理器_2,2.XSL處理器:XSL處理器 總是從主模板開始實施 XSL變換。主模板的內(nèi) 容中可以包括調(diào)用其它 模板的“模板調(diào)用”標記。,2020/12/6,11,5.3 標記與模板匹配,XSL樣式表文件中的模板的格式中涉及到“標記匹配模式”,如下所示: 模板內(nèi)容 “標記匹配模式”就是滿足一定條件的一族XML標記,其中的每個XML標記都稱做與“標記匹配模式”相匹配的XML標記。如果XML文件中的一個XML標記是模板的“標記匹配模式”的一個實例,就稱該標記是與模板相匹配的XML標記,或稱模板匹配于該XML標記。 XSL處理
7、器在工作中經(jīng)常要處理“標記匹配模式” 。,2020/12/6,12,5.3.1 XML子標記匹配的模板,XSL樣式表為XML文件中根標記的子標記提供輸出數(shù)據(jù)的模板,這類模板中的“標記匹配模式”可以是子標記的名字或根標記的名字和子標記的名字用“/”分割。 假如XML文件的根標記的名字是student,它有name,sex和birthday三個子標記,那么下列三個模板分別是這三個子標記相匹配的模板: (1) (2) 模板的內(nèi) 容模板的內(nèi)容 (3) 模板的內(nèi)容 而下列模板是與三個子標記:name,sex和birthday都相匹配的模板: 模板的內(nèi)容 ,2020/12/6,13,5.3.2 任意級別X
8、ML子標記匹配的模板,通過使用統(tǒng)配符“*”可以建立匹配于任何標記的模板,無論該標記是根標記的第幾級子標記。下列模板: 模板的內(nèi)容 是與根標記student的所有2級子標記(孫標記)相匹配的模板。 更多的與各級標記相匹配的模板舉例如91頁。 XML文件的標記是樹型結構,使用“/”分割符必須從根標記出發(fā)才能確定出一類標記。 例題5-3 p92,2020/12/6,14,5.3.3 具有指定屬性的XML子標記匹配的模板,通過使用“標記屬性”或“標記屬性=屬性值”可以建立與具有指定屬性的標記相匹配模板,這樣,我們就讓名字相同但屬性不同的標記匹配于不同的模板。 下列模板: 模板的內(nèi)容 是與名字為name
9、且具有屬性ID的標記相匹配的模板,無論name標記是根標記的哪一級子標記。 例題5-4 p94,2020/12/6,15,5.3.4 使用“”和“|”給出XML標記匹配的模板,可以使用“ ”來給出一個標記需滿足的條件,例如: 模板的內(nèi)容 是與名字為book且具有子標記price的標記相匹配的模板,無論book標記是根標記的哪一級子標記。 可以使用“|”給出幾個可以選擇的標記,例如: 模板的內(nèi)容 是與標記名字為“單價”、“庫存量”或“生產(chǎn)日期”等標記相匹配的模板,無論這些標記是根標記的哪一級子標記。,2020/12/6,16,5.4.1 模板調(diào)用標記,5.4 模板調(diào)用,1.帶select屬性的模
10、板調(diào)用標記。 稱 是有條件的XSL模板調(diào)用標記。例如: 2不帶select屬性的模板調(diào)用標記 稱 是不帶select屬性的模板調(diào)用標記。由于該模板調(diào)用標記中沒有“標記匹配模式”,所以不帶參數(shù)select的模板調(diào)用標記需要作為“xsl:for-each”標記的子標記來使用,例如: ,2020/12/6,17,5.4.2 模板調(diào)用標記的執(zhí)行過程_1,1.對于帶select屬性的模板調(diào)用標記,XSL處理器首先根據(jù) 中的“標記匹配模式”到XML文件中尋找所有和“標記匹配模式”匹配的標記,然后,逐個地為這些標記到XSL樣式表中尋找匹配的模板,一旦找到匹配的模板,就對該模板的內(nèi)容實施XSL變換,并將變換后
11、的文本嵌入到HTML文件中.,2020/12/6,18,5.4.2 模板調(diào)用標記的執(zhí)行過程_2,2.對于不帶select屬性的模板調(diào)用標記,應當作為“xsl:for-each”標記中的子標記來使用: 其它內(nèi)容 其它內(nèi)容 XSL處理器首先根據(jù)“模板調(diào)用標記,就將該模板標記按著下列帶select屬性的來處理: 然后,再尋找下一個和“標記匹配模式”匹配的標記,直到?jīng)]有匹配的標記為止。XSL處理器將依次將“xsl:for-each”標記變換后的內(nèi)容嵌入到HTML文件中。 例題5-5 p96,2020/12/6,19,5.5 常用的XSL標記,樣式表的基本結構就是模板,模板也是一種標記,模板中有一個重要
12、的參數(shù)就是“match”,該參數(shù)的值決定了哪些XML標記和該模板相匹配,關于“match”的取值和作用我們在5.3做了詳細的介紹。 例題5-6 p98,2020/12/6,20,5.6 xsl:for-each的用法,“xsl:for-each”XSL標記的格式如下: 內(nèi)容 該XSL標記必須在模板中使用。XSL處理器根據(jù)“xsl:for-each”標記中的中的“標記匹配模式”到XML文件中尋找第一個與“標記匹配模式”匹配的XML標記,一旦找到這樣的XML標記就對“xsl:for-each”標記中的“內(nèi)容”實施變換,并將變換后的內(nèi)容嵌入到HTML文件中。然后,再尋找下一個和“標記匹配模式”匹配的
13、XML標記,直到?jīng)]有匹配的標記為止。 例題5-7 p99,2020/12/6,21,5.7 xsl:value-of的用法,“xsl:value-of”XSL標記的格式為 該XSL標記必須在模板中使用,即作為模板的子孫標記。當“標記匹配模式”是特殊的“.”時,可以將 簡寫為 XSL處理器將“xsl:value-of”標記變換為和“標記匹配模式”相匹配的XML標記及其子孫標記的文本內(nèi)容。 對于下列模板: 其中的將被變換為“張三”標記及其子標記的文本內(nèi)容,張三一定是“大學生”的子標記。 將被變換為“大學生”標記及其子標記的文本內(nèi)容。 例題5-8 p101 ,例題5-9 p102,2020/12/6
14、,22,5.8 xsl:copy的用法,“xsl:copy” XSL標記的格式為或 文本內(nèi)容 該XSL標記必須在模板中使用,即作為模板的子孫標記 。 “xsl: copy”的作用是獲取和它的父標記中“標記匹配模式”匹配的XML標記的名稱及標記符號。也就是說,如果一個XSL標記中有“標記匹配模式”,那么我們可以將“xsl: copy”做為子標記,以便獲得和“標記匹配模式”匹配的XML標記的名稱與符號。 例題5-10 p104,2020/12/6,23,5.9 xsl:if的用法,“xsl:if” XSL標記的格式如下: 標記內(nèi)容 該XSL標記必須在模板中使用,即作為模板的子孫標記。,2020/1
15、2/6,24,5.9.1 屬性條件,如果想判斷和“.”匹配XML標記是否有某個屬性(不管屬性值如何),就可以使用“xsl:if”標記的下列格式: 內(nèi)容 ,2020/12/6,25,5.9.2 屬性值條件,如果想判斷和“.”匹配XML標記是否有某個屬性,并判斷該屬性值和某個特定屬性值進行“關系比較”后的結果是否為真,就可以使用“xsl:if”標記的下列兩種格式。 格式1 內(nèi)容 格式2 內(nèi)容 ,2020/12/6,26,5.9.3 子標記條件,如果想判斷和“.”匹配XML標記是否有某個子標記,就可以使用“xsl:if”標記的下列格式: 內(nèi)容 ,2020/12/6,27,5.9.4 子標記及屬性條件
16、,如果想判斷和“.”匹配XML標記是否有特定屬性的子標記,就可以使用“xsl:if”標記的下列格式: 內(nèi)容 ,2020/12/6,28,5.9.5 子標記及屬性、屬性值條件,如果想判斷和“.”匹配XML標記是否有特定屬性的子標記、并且需要判斷子標記的屬性值和某個特定屬性值進行“關系比較”的結果是否為真,就可以使用“xsl:if”標記的下列2種格式: 格式1 內(nèi)容 格式2 內(nèi)容 例題5-11 p107,2020/12/6,29,5.10 xsl:choose的用法,“xsl:choose”標記必須在模板中使用,相對“xsl:if ”標記,“xsl:choose”標記可以給出多個判斷條件?!皒sl:choose”標記必須配合“xsl:when”和“xsl:otherwise”標記使用,將二者作為“xsl:choose”標記的子標記。 “xsl:choose”標記的格式如下: 內(nèi)容 內(nèi)容 內(nèi)容 例題5-12 p109,202
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版選修5歷史下冊月考試卷含答案
- 2025年滬教新版高二地理下冊月考試卷含答案
- 2025年華師大版必修1歷史上冊階段測試試卷
- 2025年滬科版選擇性必修1歷史上冊階段測試試卷
- 2025年華師大新版選擇性必修1語文上冊階段測試試卷含答案
- 2025版南寧租賃市場住宅租賃合同模板(含違約責任)4篇
- 房座買賣合同(2篇)
- 2025年度醫(yī)療機構消毒供應中心運營承包合同書4篇
- 二零二五年度水利樞紐泥水工程勞務分包合同8篇
- 2025年度體育場館退休人員聘用合同
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計算機組成原理-電子科技大學 中國大學慕課MOOC答案
- 2024年上海健康醫(yī)學院單招職業(yè)適應性測試題庫及答案解析
- 2024年湖北省武漢市中考語文適應性試卷
- 非新生兒破傷風診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 上海市華東師大二附中2025屆高二數(shù)學第一學期期末統(tǒng)考試題含解析
- IP授權合作合同模板
- 2024中華人民共和國農(nóng)村集體經(jīng)濟組織法詳細解讀課件
評論
0/150
提交評論