跟我學XSL 7 XSL函式一

2021-04-17 01:40:41 字數 2572 閱讀 8388

用於xsl元素<

xsl:for-each>、<

xsl:value-of>、<

xsl:template>的select屬性、<

xsl:if>、<

xsl:when>的test屬性中,對元素的範圍進行篩選,從而提供更大的靈活性。

xml與dhtml(動態html)一樣,這些節點都是乙個個物件,而且這些物件都是有層次的,從根節點開始構成一顆層次清淅的樹狀結構,這就形成了文件物件模型dom(document object model),通過物件的屬性、方法來達到訪問控制xml節點的目的。

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

一、end()

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

示例:輸出最後乙份簡歷

假定xml檔案格式為:

……………………

相應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[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()='禹希初的簡歷']

表示尋找含有注釋語句:的元素。

九、cdata()

含義:返回所有cdata型別的結點的集合。

示例:resume[$any$cdata()='禹希初的簡歷']

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

十、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 7 XSL函式一

用於xsl元素 xsl for each xsl value of xsl template 的select屬性 xsl if xsl when 的test屬性中,對元素的範圍進行篩選,從而提供更大的靈活性。xml與dhtml 動態html 一樣,這些節點都是乙個個物件,而且這些物件都是有層次的,從...

跟我學XSL 一

個人簡歷表示,方式有如下兩種 1 html表示 resume.html 姓名禹希初性別男生日1977.5 技能資料庫設計與維護 web開發 2 xml表示 resume.xml color red color 禹希初男 1977.5 資料庫設計與維護 web開發 樣式單用css resume.css...

跟我學XSL(六)

今天我們學習xsl的各種運算子,滿足編寫更大靈活性的xsl樣式的要求。表 一 運算子與特殊字元 運算子描述選擇子元素,返回左側元素的直接子元素 如果 位於最左側表示選擇根結點的直接子元素 遞迴下降,不論深度,搜尋指定的元素 如果位於最左側表示從根結點出發遞迴下降搜尋指定元素 表示當前元素 萬用字元,...