天天看點

About the String Functions of XSLT

《  這部分出自:http://www.mobansheji.com/

任何的程式設計語言或者是SQL語句都有内置的函數或方法,而強大靈活的xslt技術也是如此。熟練掌握XSLT的常用函數的用法,XSLT的應用将變得如此輕松,你會發現XSLT比想象中還要牛!以下是xslt數值的函數與xslt字元串函數的說明與參考示例。

1、xslt數值的函數:

(1)fn:number(arg)   傳回參數的數值。參數可以是布爾值、字元串或節點集。

     示例:<xsl:value-of select="number('100')"/>  傳回 100

(2)fn:abs(num) 傳回參數的絕對值。

     示例:<xsl:value-of select="number(-3.14)"/>  傳回 3.14

(3)fn:ceiling(num) 傳回大于 num 參數的最小整數。(注:這裡有些文章是寫錯了的,将大于寫成了小于)

     示例:<xsl:value-of select="ceiling(3.14)"/>  傳回 4

(4)fn:floor(num) 傳回小于等于 num 參數的最大整數。

     示例:<xsl:value-of select="floor(3.14)"/>  傳回 3

(5)fn:round(num) 把 num 參數舍入為最接近的整數。

     示例:<xsl:value-of select="round(3.14)"/>  傳回 3

(6)round-half-to-even(num)

     示例:<xsl:value-of select="round-half-to-even(0.5)"/>  傳回 0

     示例:<xsl:value-of select="round-half-to-even(1.5)"/>  傳回 2

     示例:<xsl:value-of select="round-half-to-even(2.5)"/>  傳回 2

2、xslt字元串函數

(1)fn:string(arg) 傳回參數的字元串值。參數可以是數字、邏輯值或節點集。

     示例:<xsl:value-of select="string(314)"/>  傳回 "314"

(2)fn:codepoints-to-string(int,int,...) 根據代碼點序列傳回字元串。

     示例:<xsl:value-of select="codepoints-to-string(84, 104, 233, 114, 232, 115, 101)"/>  傳回 'Thérèse'

(3)fn:string-to-codepoints(string) 根據字元串傳回代碼點序列。

     示例:<xsl:value-of select="string-to-codepoints("Thérèse")"/>  傳回 84, 104, 233, 114, 232, 115, 101

(4)fn:codepoint-equal(comp1,comp2) 根據 Unicode 代碼點對照,如果 comp1 的值等于 comp2 的值,則傳回 true。(http://www.w3.org/2005/02/xpath-functions/collation/codepoint),否則返 回 false。

     示例:<xsl:value-of select="compare('ghi', 'ghi')"/>  傳回 true

     fn:compare(comp1,comp2)

     fn:compare(comp1,comp2,collation)  如果 comp1 小于 comp2,則傳回 -1。如果 comp1 等于 comp2,則傳回 0。如果 comp1 大于 comp2,則傳回 1。(根據所用的對照規則)。

     示例:<xsl:value-of select="compare('ghi', 'ghi')"/>  傳回 0

(5)fn:concat(string,string,...) 傳回字元串的拼接。

     示例:<xsl:value-of select="concat('XPath ','is ','FUN!')"/>  傳回 'XPath is FUN!'

(6)fn:string-join((string,string,...),sep) 使用 sep 參數作為分隔符,來傳回 string 參數拼接後的字元串。

     示例:<xsl:value-of select="string-join(('Www.', 'mobansheji', '.', 'com'), ' ')"/>  傳回 'www.mobansheji.com'

(7)fn:substring(string,start,len)

     fn:substring(string,start) 傳回從start位置開始的指定長度的子字元串。第一個字元的下标是 1。如果省略 len 參數,則傳回從位置 start 到字元串末尾的子字元串。

     示例:<xsl:value-of select="substring('www.mobansheji.com',1,4)"/>  傳回 'www.'

           <xsl:value-of select="substring('www.mobansheji.com',4)"/>  傳回 'mobansheji.com'

(8)fn:string-length(string) fn:string-length() 傳回指定字元串的長度。如果沒有 string 參數,則傳回目前節點的字元串值的長度。

     示例:<xsl:value-of select="substring('www.mobansheji.com')"/>  傳回 18

(9)fn:normalize-space(string) fn:normalize-space() 删除指定字元串的開頭和結尾的空白,并把内部的所有空白序列替換為一個,然後傳回結果。如果沒有 string 參數,則處理目前節點。。

     示例:<xsl:value-of select="normalize-space(' www.    mobansheji .  com  ')"/>  傳回 'www.mobansheji.com'

(10)fn:upper-case(string) 把 string 參數轉換為大寫。

     示例:<xsl:value-of select="upper-case('The Xpath')"/>  傳回 'THE XPATH'

(11)fn:lower-case(string) 把 string 參數轉換為小寫。

     示例:<xsl:value-of select="lower-case('The XML')"/>  傳回 'the xml'

(12)fn:translate(string1,string2,string3) 把 string1 中的 string2 替換為 string3。

     示例:<xsl:value-of select="translate('Do you know xml and xpath?','xml','xslt')"/>  傳回 'Do you know xslt and xpath?'

     示例:<xsl:value-of select="translate('12:30','03','54')"/>  傳回 '12:45'

(13)fn:escape-uri(stringURI,esc-res)

     示例:<xsl:value-of select="escape-uri("http://example.com/test#car", true())"/>  傳回 "http%3A%2F%2Fexample.com%2Ftest#car"

     示例:<xsl:value-of select="escape-uri("http://example.com/test#car", false())"/>  傳回 "http://example.com/test#car"

(14)fn:contains(string1,string2) 如果 string1 包含 string2,則傳回 true,否則傳回 false。

     示例:<xsl:value-of select="contains('XML','XM')"/>  傳回 true

(15)fn:starts-with(string1,string2) 如果 string1 以 string2 開始,則傳回 true,否則傳回 false。

     示例:<xsl:value-of select="starts-with('XML','X')"/>  傳回 true

(16)fn:ends-with(string1,string2) 如果 string1 以 string2 結尾,則傳回 true,否則傳回 false。

     示例:<xsl:value-of select="ends-with('XML','X')"/>  傳回 false

(17)fn:substring-before(string1,string2) 傳回 string2 在 string1 中出現之前的子字元串。

     示例:<xsl:value-of select="substring-before('www.mobansheji.com','.')"/>  傳回 'www'

(18)fn:substring-after(string1,string2) 傳回 string2 在 string1 中出現之後的子字元串。

     示例:<xsl:value-of select="substring-before('www.mobansheji.com','.')"/>  傳回 'mobansheji.com'

(19)fn:matches(string,pattern) 如果 string 參數比對指定的模式,則傳回 true,否則傳回 false。

     示例:<xsl:value-of select="matches("Merano", "ran")"/>  傳回 true

(20)fn:replace(string,pattern,replace) 把指定的模式替換為 replace 參數,并傳回結果。

     示例:<xsl:value-of select="replace("The password is admin888", "8", "*")"/>  傳回 'The password is admin***'

(21)fn:tokenize(string,pattern)

     示例:<xsl:value-of select="tokenize("XPath is fun", "/s+")"/>  傳回 ("XPath", "is", "fun") 》

 這裡我舉一個例子,我的使用情況:

<xsl:variable name="responseHeader" select="/testResults/*[position()=1]/responseHeader" />

            <xsl:variable name="afterDateString" select="substring-after($responseHeader,'Date:')" />

            <xsl:variable name="dateTimeF" select="substring-before($afterDateString,'Connection:')" />

            <xsl:variable name="dateTime" select="normalize-space($dateTimeF)" />