xsl函式一
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 >
或 二、index()
含義:返回該元素在集合中的位置,返回值是一整數,其中第乙個元素返回0
示例:返回前面三份簡歷
resume[index() $le$ 3]
< x >
< y/ >
< y/ >
< /x >
< x >
< y/ >
< y/ >
< /x >
返回所有< x >中的第乙個< y >
x/y[index()=0] 或x/y[0]
三、nodename()
含義:返回元素的名字,即標記名
示例:選擇任意元素,假如其名字(即標記名)等於「name」
*[nodename()='name'] 或 *[name]
四、number()
含義:將值轉換為數值形式,如果不是數值則返回空,要求引數
示例:年齡(age)小於30歲的人的簡歷(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中使用指令碼。
跟我學XSL(六)
今天我們學習xsl的各種運算子,滿足編寫更大靈活性的xsl樣式的要求。表 一 運算子與特殊字元 運算子描述選擇子元素,返回左側元素的直接子元素 如果 位於最左側表示選擇根結點的直接子元素 遞迴下降,不論深度,搜尋指定的元素 如果位於最左側表示從根結點出發遞迴下降搜尋指定元素 表示當前元素 萬用字元,...
跟我學XSL(三)
經過前幾日的學習,我們學習了xhtml文件的編寫和以及三個xsl元素,已能編寫相當靈活的xsl文件,今天將學習的是xsl模板的編寫。我們都知道,短的文件 程式十分好讀,但當規模增大後,其複雜性也以更快的速度增加。前面我們學了 xsl for each xsl value of 等,可以用它們對xml...
跟我學XSL(五)
上期我們學習了xsl元素 xsl if 已能通過測試xml資料的值來決定不同的輸出形式 不知你嘗試過沒有,實際上 xsl for each 也可部分實現 xsl if 的功能 但有時,我們希望對同一資料同時測試多個條件,根據不同條件輸出相應結果。當然,我們可以用if,假如我們只有if可用的話。幸好我...