DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XSL函數介紹(4)
XSL函數介紹(4)
編輯:XML詳解     
 本期學習XSL樣式方法,即可用於XSL元素< xsl:for-each >、< xsl:value-of >、< xsl:template >的select屬性、< xsl:apply-templates >的match屬性、< xsl:if >、< xsl:when >的test屬性中,對元素的范圍進行篩選,從而提供更大的靈活性。

  
  XML與DHtml(動態Html)一樣,這些節點都是一個個對象,而且這些對象都是有層次的,從根節點開始構成一顆層次清淅的樹狀結構,這就形成了文檔對象模型DOM,通過對象的屬性、方法來達到訪問控制XML節點的目的。

  
  我們這裡不打算就XML的DOM逐一詳細闡述,因為這完全可以寫成一個篇幅較多的教程,我們先就一些常見的方法作一些討論,以期對DOM的對象方法有一個大致的了解。

  注:從本期開始,所有示例不再提供完整源代碼,如有不明白之處,請仔細閱讀前面七期、並動手練手。

  一、end()

  含義:返回集合中最後一個元素。

  示例:輸出最後一份簡歷

  假定XML文件格式為:

  ……< resume >…< /resume >……< resume >…< /resume >……

  相應XSL文件內容為:

  < xsl:for-each select="resume[end()]" >……< /xsl:for-each >

  或

  < xsl:templates match="resume[end()]" >……< /xsl:templates >

  或

  < xsl:apply-template select="resume[end()]" >……< /xsl:apply-template >

 二、index()

  含義:返回該元素在集合中的位置,返回值是一整數,其中第一個元素返回0

  示例:返回前面三份簡歷

  resume[index() $le$ 3]

  注意:index()是與父元素相關的,請看下例:

  < x >

  < y/ >

  < y/ >

  < /x >

  < x >

  < y/ >

  < y/ >

  < /x >

  返回所有< x >中的第一個< y >

  x/y[index()=0] 或x/y[0]

  三、nodeName()

  含義:返回元素的名字,即標記名

  示例:選擇任意元素,假如其名字(即標記名)等於“name”

  *[nodeName()="name"] 或 *[name]

  
四、number()

  含義:將值轉換為數值形式,如果不是數值則返回空,要求參數

  示例:年齡(age) ?0歲的人的簡歷(resume)

  resume[number(age) $lt$ 30] 或resume[age $lt$ 30]

  五、nodeType()

  含義:返回結點類型,結果為是數值。以下是返回值列表:

  結點類型
結點類型值 結點的字符形式描述

  Element
1
"element"

  Element Attribute 
2
"attribute"

  Markup-Delimited Region of Text 
3
"text"

  Processing Instruction 
7
"processing_instruction"

  Comment
8
"comment"

Document Entity
9
"document"

  六、value()

  含義:返回元素或屬性的值

  示例:value()是元素或屬性的缺省方法,以下表示是等價

  name!value()="NAME"與name="NAME"

  @attr="attribute_value"與@attr="attribute_value"

  注:@是屬性前綴,@attr表示是屬性attr

  
七、attribute()

  含義:返回所有屬性結點的集合,等價於“@*”

  示例:尋找所有的resume元素,滿足條件至少有一個屬性的值為“ABC”

  resume[$any$ attribute()="ABC"]或resume[$any$ @*="ABC"]

  尋找所有的resume元素,滿足條件至少有一個子元素有一個屬性的值為“ABC”

  resume[$any$ */attribute()="ABC"]或resume[$any$ */@*="ABC"]

  
八、comment()

  含義:返回所有注釋結點

  示例:例如

  resume[$any$ comment()="禹希初的簡歷"]

  表示尋找含有注釋語句

  < !--禹希初的簡歷-- >

  的元素< resume >

  
九、cdata()

  含義:返回所有CDATA類型的結點的集合

  示例:例如 

  resume[$any$ cdata()="禹希初的簡歷"]

  表示尋找含有下述語句(必須是直接子結點)

  < ![CDATA[禹希初的簡歷]] >

  的元素< resume >

  
十、node()

  含義:返回當前上下文環境中除根結點和屬性結點以外的所有結點的集合,等價於

  “* | pi() | comment() | text()”

  示例:尋找所有元素resume,其最後一個結點的名字為"skill"

  resume[node()[end()]!nodeName()="skill"]

  尋找所有resume元素的第一個結點:resume/node()[0]

  
十一、textnode()

  含義:返回所有文本類型的結點的集合

  示例:尋找每一個p元素的第二個文本結點

  p/textnode(1)或p!textnode(1)

  十二、text()

  含義:返回所有表示文本字符串的結點的集合,等價於"cdata()|textnode()";

  本期的內容就介紹至此,另有一個函數date()在本人的機器上一試就發生錯誤使浏覽器自動關閉,還有一個函數pi()本人尚未找到適當的應用方法,就不介紹了,下期將講述如何XSL中使用腳本。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved