《XML與WEB服務(wù) CH04》由會(huì)員分享,可在線閱讀,更多相關(guān)《XML與WEB服務(wù) CH04(66頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第4章 XML的樣式單XSLT,*,第,4,章,XML,的樣式單,XSLT,10/12/2024,1,第4章 XML的樣式單XSLT,本章從,XSLT,樣式單的創(chuàng)建開(kāi)始,介紹,XML,節(jié)點(diǎn)的輸出、樣式模板的創(chuàng)建和應(yīng)用規(guī)則、樣式單中的批處理方法以及各節(jié)點(diǎn)的條件處理等內(nèi)容,詳細(xì)討論如何運(yùn)用,可擴(kuò)展樣式表語(yǔ)言,編寫各種,XML,樣式單,使,XML,文檔全部或部分地以希望的樣式顯示在,Web,瀏覽器中。,10/12/2024,2,第4章 XML的樣式單XSLT,4.1 XSLT,概述,本章學(xué)習(xí)怎樣將,XML,文檔顯
2、示在,Web,瀏覽器中。,XML,文檔的最終目標(biāo)是作為一個(gè)信息的基類型來(lái)存儲(chǔ)信息,再轉(zhuǎn)換成不同的格式用于各種應(yīng)用。,W3C,提出了,可擴(kuò)展樣式表語(yǔ)言,規(guī)范來(lái)實(shí)現(xiàn)上述目的。,XSL,(,eXtensible,Stylesheet,Language,)分為兩個(gè)部分:,XSLT,(,XSL,轉(zhuǎn)換)和,XSL-FO,(,XSL,格式對(duì)象)。本章只對(duì),XSLT,進(jìn)行學(xué)習(xí)。,XSL,是用于,XML,文本的轉(zhuǎn)換和格式化的標(biāo)準(zhǔn)語(yǔ)言。,10/12/2024,3,第4章 XML的樣式單XSLT,XSLT,的工作原理是,:,(,1,)首先必須要有一個(gè),XSLT,處理器來(lái)掃描整個(gè),XML,文檔,將其轉(zhuǎn)化成一個(gè)節(jié)點(diǎn)樹。
3、,(,2,)在將,XML,文檔映射到節(jié)點(diǎn)樹后,,XSLT,處理器使用,XSLT,樣式表處理各個(gè)節(jié)點(diǎn)。在,XSLT,樣式表中,,templates,(模板)規(guī)定了如何轉(zhuǎn)換,XML,文檔。它有兩部分組成:,節(jié)點(diǎn)標(biāo)簽,和,指令,。前者表示將模板應(yīng)用到,XML,文檔的哪一個(gè)(哪一些)節(jié)點(diǎn)上,后者規(guī)定如何對(duì),XML,文檔進(jìn)行轉(zhuǎn)換。,(,3,)最后,利用,Web,瀏覽器進(jìn)行處理,可以把,XML,轉(zhuǎn)換成,HTML/XHTML,,按照所需的樣式顯示出,XML,文檔的內(nèi)容。,10/12/2024,4,第4章 XML的樣式單XSLT,補(bǔ)充內(nèi)容:,XPath,在使用,XSLT,對(duì),XML,文檔進(jìn)行處理的過(guò)程中,需要
4、使用,XPath,來(lái)進(jìn)行導(dǎo)航。,XPath,使用路徑表達(dá)式來(lái)選取,XML,文檔中的節(jié)點(diǎn)或者節(jié)點(diǎn)集。這些路徑表達(dá)式和我們?cè)诔R?guī)的計(jì)算機(jī)文件系統(tǒng)中看到的路徑表達(dá)式非常相似。,概念,1,:,節(jié)點(diǎn)(,node,),在,XPath,中,有七種類型的節(jié)點(diǎn):元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點(diǎn)。,XML,文檔是被作為節(jié)點(diǎn)樹來(lái)對(duì)待的。樹的根被稱為文檔節(jié)點(diǎn)或者根節(jié)點(diǎn)。,10/12/2024,5,第4章 XML的樣式單XSLT,請(qǐng)看下面這個(gè),XML,文檔:,Harry Potter,J K.Rowling,2005,29.99,上面的,XML,文檔中的節(jié)點(diǎn)例子:,J K.Rowling,(
5、,元素節(jié)點(diǎn),),lang,=en,(,屬性節(jié)點(diǎn),),10/12/2024,6,第4章 XML的樣式單XSLT,概念,2,:,基本值(或稱原子值,,Atomic value,),Atomic values are nodes with no children or parent.,基本值是無(wú)父或無(wú)子的節(jié)點(diǎn)。,基本值的例子:,J K.Rowling en,概念,3,:,項(xiàng)目(,Items,),Items are atomic values or nodes.,項(xiàng)目是指基本值或節(jié)點(diǎn)。,10/12/2024,7,第4章 XML的樣式單XSLT,Relationship of Nodes,節(jié)點(diǎn)之間的關(guān)系
6、,Parent/,父,Children/,子,Each element and attribute has one parent.Element nodes may have zero,one or more children.,每個(gè)元素和屬性都有一個(gè)父親。元素節(jié)點(diǎn)可以有,0,個(gè)、,1,個(gè)或多個(gè)子節(jié)點(diǎn)。,Harry Potter J K.Rowling 2005 29.99,10/12/2024,8,第4章 XML的樣式單XSLT,Siblings/,兄弟,Nodes that have the same parent.,擁有相同的父節(jié)點(diǎn)的節(jié)點(diǎn)稱之為兄弟。,在前面的例子里,,title,、,a
7、uthor,、,year,和,price,都是兄弟。,Ancestors/,祖先,A nodes parent,parents parent,etc.,一個(gè)節(jié)點(diǎn)的父親,父親的父親及更多稱為該節(jié)點(diǎn)的祖先。,10/12/2024,9,第4章 XML的樣式單XSLT,Harry Potter J K.Rowling 2005 29.99 ,title,的“祖先,”,是,book,和,bookstore,。,10/12/2024,10,第4章 XML的樣式單XSLT,Descendants/,后代,A nodes children,childrens children,etc.,節(jié)點(diǎn)的子節(jié)點(diǎn),子節(jié)點(diǎn)的
8、子節(jié)點(diǎn)及更多節(jié)點(diǎn)稱為后代。,在下面的例子里,,bookstore,的后代是,book,title,author,year,和,price,元素:,Harry Potter J K.Rowling 2005 29.99 ,10/12/2024,11,第4章 XML的樣式單XSLT,XPath,的語(yǔ)法,XPath,使用,路徑表達(dá)式,來(lái)選取,XML,文檔中的節(jié)點(diǎn)或節(jié)點(diǎn)集。節(jié)點(diǎn)是通過(guò)沿著某條路徑,(path),來(lái)選取的。,首先看一個(gè)例子:,Harry Potter 29.99 ,Learning XML 39.95 ,10/12/2024,12,第4章 XML的樣式單XSLT,(1)Selecting
9、 Nodes/,選取節(jié)點(diǎn),下面列出了最常使用的路徑表達(dá)式情況:,10/12/2024,13,第4章 XML的樣式單XSLT,結(jié)合前面的例子,在下面的表格中,我們列出了一些路徑表達(dá)式及其運(yùn)行的結(jié)果:,10/12/2024,14,第4章 XML的樣式單XSLT,(2)Predicates/,限定條件 判斷詞 判斷式,Predicates are used to find a specific node or a node that contains a specific value.,它指定了選取節(jié)點(diǎn)的范圍。,Predicates are always embedded in square bra
10、ckets.,總是使用方括號(hào),來(lái)指定限定條件。,10/12/2024,15,第4章 XML的樣式單XSLT,10/12/2024,16,第4章 XML的樣式單XSLT,(3),Selecting Unknown Nodes/,選取未知節(jié)點(diǎn),XPath,wildcards can be used to select unknown XML elements.,可以通過(guò),XPath,通配符選取未知的,XML,元素。,10/12/2024,17,第4章 XML的樣式單XSLT,在下面的表格中我們列出了一些表達(dá)式及其運(yùn)行結(jié)果:,10/12/2024,18,第4章 XML的樣式單XSLT,(4)Sele
11、cting Several Paths/,選取多個(gè)路徑,By using the|operator in an,XPath,expression you can select several paths.,可以通過(guò)在表達(dá)式中添加,|,來(lái)選取多個(gè)路徑。,10/12/2024,19,第4章 XML的樣式單XSLT,XPath,Axes(,軸,),我們通過(guò)下面的例子講解本部分:,Harry Potter 29.99 ,Learning XML 39.95 ,10/12/2024,20,第4章 XML的樣式單XSLT,(1),XPath,Axes,An axis defines a node-set
12、relative to the current node.,軸用于定義與當(dāng)前節(jié)點(diǎn)相關(guān)的節(jié)點(diǎn)集。,10/12/2024,21,第4章 XML的樣式單XSLT,10/12/2024,22,第4章 XML的樣式單XSLT,(2)Location Path Expression/,位置路徑表達(dá)式,A location path can be absolute or relative.,路徑表達(dá)式可以使用絕對(duì)路徑也可以是相對(duì)路徑。,An absolute location path starts with a slash(/)and a relative location path does not.I
13、n both cases the location path consists of one or more steps,each separated by a slash:,絕對(duì)路徑表達(dá)式以(,/,)開(kāi)始,兩種路徑表達(dá)式都包含一個(gè)或多個(gè),Location step,,用,/,分隔。,絕對(duì)路徑,:,/step/step/.,相對(duì)路徑,:,step/step/.,10/12/2024,23,第4章 XML的樣式單XSLT,Location Step,包括,:,An axis(defines the tree-relationship between the selected nodes and
14、the current node),軸(定義了選擇的目標(biāo)節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)間的關(guān)系),A node-test(identifies a node within an axis),節(jié)點(diǎn)測(cè)試(確定軸內(nèi)的一個(gè)結(jié)點(diǎn)),zero or more predicates(to further refine the selected node-set),0,個(gè)或多個(gè)限定條件(進(jìn)一步限定被選擇的節(jié)點(diǎn)集),10/12/2024,24,第4章 XML的樣式單XSLT,Location Step,的語(yǔ)法為:,axisname:nodetestpredicate,10/12/2024,25,第4章 XML的樣式單XSLT,
15、XPath,操作符,An,XPath,expression returns either a node-set,a string,a Boolean,or a number.,XPath,表達(dá)式返回值可以是:節(jié)點(diǎn)集,字符串,邏輯值,數(shù)字。,下面給出了,XPath,表達(dá)式所支持的所有操作符。,10/12/2024,26,第4章 XML的樣式單XSLT,10/12/2024,27,第4章 XML的樣式單XSLT,10/12/2024,28,第4章 XML的樣式單XSLT,XPath,學(xué)習(xí)資源:,http:/ XML的樣式單XSLT,4.2 XSLT,樣式表的創(chuàng)建和輸出,首先看一下,XSLT,樣式表
16、的基本格式:,從以上格式不難看出,,XSLT,樣式表本身也是一個(gè),XML,文檔,10/12/2024,30,第4章 XML的樣式單XSLT,例,4.2,是瀕危動(dòng)物案例的,XML,文檔,例,4.3,是一個(gè),XSLT,樣式表,從,4.2,的文檔中提取出部分?jǐn)?shù)據(jù)進(jìn)行顯示。,例,4.3,中斜體部分用來(lái)提取元素,endangered_species,里第一個(gè),animal,元素中,屬性,language,為,English,的元素,name,的值,即為,Tiger,。其中,元素,表示選取的是指定節(jié)點(diǎn)的值,屬性,select,用來(lái)選取指定的節(jié)點(diǎn)。,10/12/2024,31,第4章 XML的樣式單XSLT,4.3,模板的創(chuàng)建與應(yīng)用,在用,XSLT,樣式表對(duì),XML,文檔進(jìn)行轉(zhuǎn)換時(shí),,XSLT,處理器首先去尋找與,XML,文檔根節(jié)點(diǎn)相匹配的模板。在每一個(gè),XSLT,樣式表中都會(huì)有一個(gè)應(yīng)用到根節(jié)點(diǎn)(,指,XML,文檔根,不是指根元素,)的模板。如例,4.4,:,10/12/2024,32,第4章 XML的樣式單XSLT,例子中的,元素是用于,創(chuàng)建模板,的,,match,屬性的作用是使模板和某個(gè),XML