第5章__XSLT.ppt_第1頁(yè)
第5章__XSLT.ppt_第2頁(yè)
第5章__XSLT.ppt_第3頁(yè)
第5章__XSLT.ppt_第4頁(yè)
第5章__XSLT.ppt_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章 XSLT,樣式表簡(jiǎn)介,為什么需要樣式表 XML數(shù)據(jù)本身并不包含數(shù)據(jù)顯示的信息 什么是樣式表 描述結(jié)構(gòu)文檔表現(xiàn)方式的文檔 使用樣式表的意義 數(shù)據(jù)或內(nèi)容與表示層分開(kāi) W3C推薦的樣式表標(biāo)準(zhǔn): CSS級(jí)聯(lián)樣式表 XSL可擴(kuò)展樣式表,樣式表,定義:包含一個(gè)或多個(gè)XML文檔的格式化規(guī)則的文檔。包含指示W(wǎng)EB瀏覽器如何將原文檔的結(jié)構(gòu)翻譯為一個(gè)能夠顯示的結(jié)構(gòu)的代碼。 任務(wù): 將XML文檔轉(zhuǎn)換為另一種結(jié)構(gòu) 描述如何表達(dá)被轉(zhuǎn)換的信息,5.1 級(jí)聯(lián)樣式表CSSCascading Style Sheets,是一個(gè)文本,包含特殊元素格式特征的一個(gè)或者更多的規(guī)則和定義。它控制XML文檔和HTML文檔中的標(biāo)簽如何

2、被格式化。,Css的作用?,1. 能把XML文檔翻譯成特定的目標(biāo),將XML文檔轉(zhuǎn)換成另一種結(jié)構(gòu)。包括: 創(chuàng)建一個(gè)不變的文本(比如標(biāo)簽和標(biāo)題) 指定提取所需數(shù)據(jù)的過(guò)濾器 改變?cè)睾蛯傩缘捻樞?排列內(nèi)容 完成復(fù)雜的轉(zhuǎn)換,根據(jù)存在的內(nèi)容計(jì)算值 2. 描述如何表達(dá)被轉(zhuǎn)換的信息。包括: 屏幕或頁(yè)面的布局 將轉(zhuǎn)換的內(nèi)容分配成列表和段落 屬性的規(guī)范(例如間距、頁(yè)邊框、對(duì)齊和字體),XSL 指擴(kuò)展樣式表語(yǔ)言(EXtensible Stylesheet Language)。 CSS = HTML 樣式表,XSL = XML 樣式表 XSL 包括三部分: XSLT 一種用于轉(zhuǎn)換 XML 文檔的語(yǔ)言。 XPath

3、一種用于在 XML 文檔中導(dǎo)航的語(yǔ)言。 XSLF 一種用于格式化 XML 文檔的語(yǔ)言,作用類似于CSS在HTML中的作用。,5.2 可擴(kuò)展樣式表XSL,XSLT (eXtensible Stylesheet Language Transformations),XSLT 中的字母“T”表示“轉(zhuǎn)換”,它是 XSL規(guī)范中的一部分。可以根據(jù)指定的轉(zhuǎn)換規(guī)則將一個(gè) XML 文檔樹(shù)或者其中的部分內(nèi)容轉(zhuǎn)換為另一種文檔樹(shù)形式。 XSLT 可以將 XML 文檔轉(zhuǎn)換為任何形式,包括 XML、HTML 和普通文本,以致于很多人使用 XSL 作為一種在瀏覽器中顯示 XML 數(shù)據(jù)的工具,也就是利用這種轉(zhuǎn)換功能,將 XML

4、 文檔轉(zhuǎn)換為 HTML(通常需要增加一些 HTML 中的有關(guān)顯示的標(biāo)記),然后在瀏覽器中進(jìn)行顯示。,XSLT 簡(jiǎn)介,XSLT 語(yǔ)言是一種聲明性(Declarative)的語(yǔ)言,即 XSLT 程序本身只是包含了一些轉(zhuǎn)換規(guī)則的 XML 文檔。而這些規(guī)則可以被遞歸地應(yīng)用到轉(zhuǎn)換過(guò)程中。 XSLT 處理程序(或稱之為執(zhí)行引擎)將首先確定 XSLT 規(guī)則,然后根據(jù)規(guī)則的匹配條件(通過(guò) XPath 表達(dá)式指定)、以及優(yōu)先順序完成相應(yīng)的轉(zhuǎn)換操作。 XSLT本身也是一個(gè) XML 文檔,所以它也必須嚴(yán)格遵守 XML 規(guī)范。其根元素的命名空間為:/1999/XSL/ Transfor

5、m。,XSLT 的工作原理,在進(jìn)行 XSLT 的轉(zhuǎn)換任務(wù)時(shí),通常需要兩個(gè)輸入文檔,一個(gè)是包含源數(shù)據(jù)的 XML 文檔,一個(gè)是包含轉(zhuǎn)換任務(wù)規(guī)則的 XSLT 文檔; 由 XML 解析器對(duì)這兩個(gè)文檔進(jìn)行解析,將包含源數(shù)據(jù)的 XML 文檔轉(zhuǎn)換為所對(duì)應(yīng)的文檔樹(shù)結(jié)構(gòu),將 xslt (xsl) 文檔中定義的處理模塊看作是一系列的轉(zhuǎn)換規(guī)則。 由 XSLT 引擎調(diào)用這些規(guī)則,對(duì)文檔樹(shù)進(jìn)行遍歷,分別處理其中指定的數(shù)據(jù)節(jié)點(diǎn),將其轉(zhuǎn)換為所需的結(jié)果集,并序列化為結(jié)果文檔。,XSLT處理器的工作過(guò)程,XSLT樣式表,XML文檔,MSXML解析器,XSLT樹(shù),源樹(shù),XSLT處理器,結(jié)果樹(shù),XSLT和CSS,樣式表聲明,把文檔

6、聲明為 XSL 樣式表的根元素是 或 。 注釋: 和 是完全同義的,均可被使用! 根據(jù) W3C 的 XSLT 標(biāo)準(zhǔn),聲明 XSL 樣式表的正確方法是: 或者: ,一個(gè)簡(jiǎn)單 XSLT例子,對(duì)一個(gè)XML文件進(jìn)行轉(zhuǎn)換 現(xiàn)在要把下面這個(gè) XML 文檔(cdcatalog.xml)轉(zhuǎn)換為 XHTML: 創(chuàng)建 XSL 樣式表 然后創(chuàng)建一個(gè)帶有轉(zhuǎn)換模板的 XSL 樣式表(cdcatalog.xsl):,把 XSL 樣式表鏈接到 XML 文檔,向 XML 文檔(cdcatalog.xml)添加 XSL 樣式表引用: 如果您使用的瀏覽器兼容 XSLT,它會(huì)很順利地把您的 XML 轉(zhuǎn)換為 XHTML。 Empir

7、e Burlesque Bob Dylan USA Columbia 10.90 1985 , 元素, 元素定義輸出文檔的格式。 注釋: 是頂層元素(top-level element),必須是 或 的子節(jié)點(diǎn)。 屬性method 可選。定義輸出的格式,xml、html、text 。 屬性version string 可選。設(shè)置輸出格式的 W3C 版本號(hào)。(僅在 method=html or method=xml 時(shí)使用)。 屬性encoding string 可選。設(shè)置輸出中編碼屬性的值。 屬性indent 可選。在輸出結(jié)果樹(shù)時(shí)是否要增加空白;該值必須為 yes 或 no。, 元素,例子 1,

8、輸出是 XML 文檔,版本為 1.0。字符編碼方式被設(shè)置為 “ISO-8859-1”,對(duì)輸出進(jìn)行縮進(jìn),以增進(jìn)可讀性: . , 元素,例子 2,輸出 HTML 文檔,版本是 4.0。字符編碼方式設(shè)置為 “ISO-8859-1”,對(duì)輸出進(jìn)行縮進(jìn),以增進(jìn)可讀性: . . , 元素, 元素用于構(gòu)建模板。 模板在很多方面都與函數(shù)非常類似。在使用上,必須首先聲明(可以指定模板的名稱、參數(shù)、返回類型等等),然后在合適的地方顯式地調(diào)用該模板(在遍歷文檔樹(shù)節(jié)點(diǎn)的過(guò)程中、或者直接調(diào)用),才能夠執(zhí)行相應(yīng)的轉(zhuǎn)換規(guī)則。,模板的聲明,完整的模板聲明語(yǔ)法 :, . , 和 之間的內(nèi)容相當(dāng)于一個(gè)函數(shù)的函數(shù)體,表示在調(diào)用該模板

9、時(shí)應(yīng)該執(zhí)行的具體操作。 xsl:template 元素開(kāi)始標(biāo)記中的屬性 match、name、mode 和 priority 則用于描述該模板的相關(guān)信息。,模板的屬性,match 屬性用于關(guān)聯(lián) XML 元素和模板。match 屬性也可用來(lái)為整個(gè)文檔定義模板。 match=/ 屬性則把此模板與 XML 源文檔的根相聯(lián)系。 match 屬性的值是 XPath 表達(dá)式。 元素內(nèi)部的內(nèi)容定義了寫到輸出結(jié)果的 HTML 代碼。 name屬性用于定義模板的名稱。,模板調(diào)用的方式,在 XSLT 中,模板的調(diào)用分為兩種方式:,根據(jù)模板的匹配路徑(在遍歷的過(guò)程中)進(jìn)行調(diào)用,具體有兩種情況: 對(duì)于模板 xsl:t

10、emplate match=/,XSLT 處理器將在碰到 XML 文檔的文檔節(jié)點(diǎn)時(shí)自動(dòng)調(diào)用該模板;就好像作為程序執(zhí)行的入口,Java 虛擬機(jī)自動(dòng)調(diào)用主類的 main(.) 方法。 對(duì)于其他的模板 match=other-pattern,將在模板 xsl:template match=/ 的轉(zhuǎn)換規(guī)則(函數(shù)體)中通過(guò)指出匹配路徑的方式(使用 xsl:apply-templates)進(jìn)行隱式地、或者顯式地調(diào)用; 根據(jù)模板名稱屬性(name)進(jìn)行調(diào)用,使用 xsl:call-template name=template-name 進(jìn)行調(diào)用。,模板調(diào)用的示例,也可以使用 name 屬性為模板指定一個(gè)名稱

11、,使其成為命名模板 。, 命名模板 one 命名模板 another Hello ,XSLT 處理器將調(diào)用命名模板 one(實(shí)際上名稱 one 沒(méi)有作用,因?yàn)槭亲詣?dòng)調(diào)用的),然后在模板 one 中使用 xsl:call-template 直接調(diào)用名為 another 的模板,在模板 another 執(zhí)行結(jié)束之后,繼續(xù)執(zhí)行模板 one 的后續(xù)指令,這個(gè)過(guò)程非常類似于函數(shù)的調(diào)用。, 元素, 元素用于提取某個(gè)選定節(jié)點(diǎn)的值,并把值添加到轉(zhuǎn)換的輸出流中 select 屬性的值是一個(gè) XPath 表達(dá)式。 對(duì)于文本節(jié)點(diǎn)和屬性節(jié)點(diǎn),xsl:value-of select=“.” 當(dāng)然提取的是文本節(jié)點(diǎn)的內(nèi)容和

12、屬性節(jié)點(diǎn)的取值 對(duì)元素節(jié)點(diǎn)使用 ,那么將得到元素節(jié)點(diǎn)的 String-Value(該元素及其子元素的文本節(jié)點(diǎn)內(nèi)容之和)。, 元素, 元素可用于選取指定的節(jié)點(diǎn)集中的每個(gè) XML 元素。 select 屬性的值是一個(gè) XPath 表達(dá)式。 xsl:for-each 的開(kāi)始標(biāo)記和結(jié)束標(biāo)記之間,是循環(huán)處理的過(guò)程體,相當(dāng)于 C# 中 foreach 循環(huán)。 xsl:for-each 循環(huán)體中的 XSLT 轉(zhuǎn)換指令將應(yīng)用于 select 屬性所選定的節(jié)點(diǎn),每個(gè)選定的節(jié)點(diǎn)將成為新的上下文。, 元素,結(jié)果過(guò)濾 通過(guò)在 元素中添加一個(gè)選擇屬性的判別式,我們也可以過(guò)濾從 XML 文件輸出的結(jié)果。 合法的過(guò)濾運(yùn)算符

13、: = (等于) != (不等于) (大于), 元素, 元素用于對(duì)結(jié)果進(jìn)行排序。 如需對(duì)結(jié)果進(jìn)行排序,只要簡(jiǎn)單地在 XSL 文件中的 元素內(nèi)部添加一個(gè) 元素 select 屬性指示需要排序的 XML 元素。 data-type 可選。規(guī)定被排序的數(shù)據(jù)的數(shù)據(jù)類型。默認(rèn)是 “text”。 Text,number,qname order 可選。規(guī)定排序順序。默認(rèn)是 ascending。 ascending,descending 查看此 XSL 文件, 元素, 元素用于放置針對(duì) XML 文件內(nèi)容的條件測(cè)試。 如需放置針對(duì) XML 文件內(nèi)容的條件測(cè)試,請(qǐng)向 XSL 文檔添加 元素。 語(yǔ)法 . .如果條件

14、成立則輸出. . , 元素,在何處放置 元素 如需添加有條件的測(cè)試,請(qǐng)?jiān)?XSL 文件中的 元素內(nèi)部添加 元素: 必選的 test 屬性的值包含了需要求值的表達(dá)式。 上面的代碼僅僅會(huì)輸出價(jià)格高于 10 的 CD 的 title 和 artist 元素。 例子,元素, 元素用于結(jié)合 和 來(lái)表達(dá)多重條件測(cè)試。 語(yǔ)法 . 輸出 . . 輸出 . ,xsl:choose條件分支選擇,xsl:choose、xsl:otherwise 和 xsl:when 可以進(jìn)行多個(gè)條件的測(cè)試,實(shí)際上就相當(dāng)于 Java 中的 swtich 和 case。,元素, 元素應(yīng)用實(shí)例 在 CD 的價(jià)格高于 10 時(shí)向 Arti

15、st 列添加粉色的背景顏色。 查看XSLT文件 在 CD 的價(jià)格高于 10 時(shí)向 Artist 列添加粉色的背景顏色,并在 CD 的價(jià)格高于 9 且低于等于 10 時(shí)向 Artist 列添加灰色的背景顏色。 另一個(gè)例子, 元素, 元素可把一個(gè)模板應(yīng)用于當(dāng)前的元素或者當(dāng)前元素的子節(jié)點(diǎn)。 select 屬性 包含一個(gè)XPath表達(dá)式,選定應(yīng)用模板的節(jié)點(diǎn)集,就僅僅處理與屬性值匹配的子元素。 當(dāng)沒(méi)有select屬性時(shí),表示選擇當(dāng)前節(jié)點(diǎn)的所有子節(jié)點(diǎn)。 另一例子,元素, 元素用于在輸出文檔中創(chuàng)建元素節(jié)點(diǎn)。 創(chuàng)建一個(gè)名為 singer 的元素,該元素包含每個(gè) artist 元素的值:, ,元素, 元素用于向元素添加屬性。 元素會(huì)替換名稱相同的已有屬性。 向 picture 元素添加 source 屬性: 向 picture 元素添加 source 屬性,并使用 images/name 中的值為其賦值: , 元素, 元素可創(chuàng)建當(dāng)前節(jié)點(diǎn)的一個(gè)副本(拷貝)。 注釋:當(dāng)前節(jié)點(diǎn)的 Namespace 節(jié)點(diǎn)會(huì)被自動(dòng)復(fù)制,但是當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)和屬性不會(huì)被自動(dòng)復(fù)制! XML源文件Persons.xml 重構(gòu)該XML文檔,使得Person元素有一個(gè)FirstName屬性和一個(gè)LastN

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論