XSL函式一 (轉)
一
本期學習XSL樣式方法,即可用於XSL元素< xsl:for-each >、< xsl:value-of >、< xsl:template >的屬性、< xsl:apply-templates >的match屬性、< xsl:if >、< xsl:when >的test屬性中,對元素的範圍進行篩選,從而提供更大的靈活性。
與(動態HTML)一樣,這些節點都是一個個,而且這些物件都是有層次的,從根節點開始構成一顆層次清淅的樹狀結構,這就形成了文件物件模型,透過物件的屬性、方法來達到訪問控制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$ to:*/@*="ABC'>*/@*="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中使用指令碼。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-977261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跟我學XSL(9)XSL函式二(轉)函式
- XSL函式介紹(2)(轉)函式
- XSL函式介紹(3)(轉)函式
- XSL函式二----DOM中物件的方法 (轉)函式物件
- XSL簡明教程(2)XSL轉換(轉)
- XSL簡明教程(5)XSL的索引(轉)索引
- XSL簡明教程(1)XSL入門(轉)
- XSL簡明教程(7)XSL 的控制語句(轉)
- XML + XSL + JS 構建小型Web App (一) (轉)XMLJSWebAPP
- XSL簡明教程(6)XSL過濾和查詢(轉)
- numtoyminterval函式——數字轉換函式函式
- 一個四捨五入函式 (轉)函式
- 透過XSL轉換XML檔案 (轉)XML
- 轉化函式函式
- 轉換函式函式
- fseek函式(轉)函式
- RegQueryValue函式 (轉)函式
- JavaScript 函式(轉)JavaScript函式
- python函式每日一講 - float函式型別轉換詳解Python函式型別
- 跟我學XSL(8)指令碼與XSL的結合及應用(轉)指令碼
- 用於資料的 XML: XSL 樣式表:推還是拉? (轉)XML
- 函式式 Java 到函式式 Kotlin 的轉換函式JavaKotlin
- C++的函式和模板函式 (轉)C++函式
- 函式一函式
- 一組有用的操作Excel的函式 (轉)Excel函式
- Windows未公開函式揭密——之一 (轉)Windows函式
- Oracle分析函式參考手冊(轉)一Oracle函式
- oracle 分析函式(轉)Oracle函式
- Oracle分析函式{轉}Oracle函式
- oracle字串函式(轉)Oracle字串函式
- ORACLE函式大全(轉)Oracle函式
- Oracle字串函式--轉Oracle字串函式
- 6、ExportToGIF函式 (轉)Export函式
- 4、核心函式 (轉)函式
- 9、SetBackgroundEffect函式 (轉)函式
- 7、支援函式 (轉)函式
- asp常用函式 (轉)函式
- 分頁函式 (轉)函式