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