最新的Web開發教程
 

XSLT XPath和XQuery函數


XSLT 2.0,XPath 2.0中,和XQuery 1.0,共享相同的函數的庫。


函數參考

為函數命名空間的默認前綴是FN:
函數命名空間的URI是:http://www.w3.org/2005/xpath-functions

Tip:函數經常與fn:前綴,如FN: string() 然而,由於FN:是命名空間的默認前綴,函數名稱不需要前綴調用時。

存取函數

名稱 描述
fn:node- name( node ) 返回參數節點的節點名
fn: nilled( node ) 返回一個布爾值,它指示參數節點是否nilled
fn: data( item.item,... ) 採取項目的序列,並返回原子值序列
fn:base- uri()
fn:base- uri( node )
返回電流或指定節點的基極 - uri屬性的值
fn:document- uri( node ) 返回文檔URI屬性的值指定節點

錯誤和跟踪功能

名稱 描述
fn: error()
fn: error( error )
fn: error( error,description )
fn: error( error,description,error-object )
例如: error(fn:QName('http://example.com/test', 'err:toohigh')錯誤:價格太高')

結果:返回http://example.com/test#toohigh和字符串"Error: Price is too high"的外部處理環境

fn: trace( value,label ) 用於調試查詢

在數字值的函數

名稱 描述
fn: number( arg ) 返回參數的數值。 該參數可以是一個布爾值,字符串或節點集

例如: number('100')
結果:100

fn: abs( num ) 返回參數的絕對值

例如: abs(3.14)
結果:3.14

例如: abs(-3.14)
結果:3.14

fn: ceiling( num ) 返回比數參數更大的最小整數

例如: ceiling(3.14)
結果:4

fn: floor( num ) 返回是不大於數字參數的最大整數

例如: floor(3.14)
結果:3

fn: round( num ) 舍入數字參數最接近的整數

例如: round(3.14)
結果:3

fn:round-half-to- even() 例如:圓半TO- even(0.5)
結果:0

例如:圓半TO- even(1.5)
結果:2

例如:圓半TO- even(2.5)
結果:2

在字符串的函數

名稱 描述
fn: string( arg ) 返回參數的字符串值。 的參數可以是一個數字,布爾值或節點集

例如: string(314)
結果: "314"

fn:codepoints-to- string(( int,int,... ) ) 創建從Unicode標準代碼點的序列串

例如:碼點-TO- string((84, 104, 233, 114, 232, 115, 101)
結果:“Thrse”

fn:string-to- codepoints( string ) 返回Unicode標準碼點的序列從一個字符串

實施例:字符串TO- codepoints("Th r se")
結果: (84, 104, 233, 114, 232, 115, 101)

fn:codepoint- equal( comp1,comp2 ) 如果COMP1的值等於COMP2的值,根據Unicode代碼點核對,則返回true (http://www.w3.org/2005/02/xpath-functions/collation/codepoint)否則返回假
fn: compare( comp1,comp2 )
fn: compare( comp1,comp2,collation )
返回-1,如果COMP1小於COMP2,0,如果COMP1等於COMP2,或1,如果COMP1大於COMP2更大(根據所使用的排序規則的規則)

實施例: compare('ghi', 'ghi')
結果:0

fn: concat( string,string,... ) 返回字符串的串聯

例如: concat('XPath ','is ','FUN!')
結果:“XPath是FUN!”

fn:string- join( (string,string,...) ,sep) 返回通過連接字符串參數,並使用參數九月作為分隔符創建一個字符串

例如:與字符串join(('We', 'are', 'having', 'fun!') ,'')
結果:“我們有樂趣! “

例如:與字符串join(('We', 'are', 'having', 'fun!')
結果:“Wearehavingfun!”

例如:與字符串join(()月”)
結果:''

fn: substring( string,start,len )
fn: substring( string,start )
返回從開始位置到指定長度的字符串。 第一個字符的索引是1,如果長度省略其返回從開始位置的子到端

例如: substring('Beatles',1,4)
結果:“垮掉”

例如: substring('Beatles',2)
結果:“eatles”

fn:string- length( string )
fn:string- length()
返回指定字符串的長度。 如果沒有字符串參數則返回當前節點的字符串值的長度

例如:與字符串length('Beatles')
結果:7

fn:normalize- space( string )
fn:normalize- space()
除去第一位和指定的字符串尾部空格,和取代的白色空間中的所有內部序列與一個並返回結果。 如果沒有字符串參數它在當前節點上相同

例如:正常化, space(' The XML ')
結果:“該XML”

fn:normalize- unicode()
fn:upper- case( string ) 字符串參數為大寫轉換

例如:大寫case('The XML')
結果:'THE XML“

fn:lower- case( string ) 字符串參數轉換為小寫

例如:較低case('The XML')
結果:“在xml”

fn: translate( string1,string2,string3 ) 通過包含字符串與STRING3字符替換字符轉換STRING1

例如: translate('12:30','30','45')
結果:'12:45'

例如: translate('12:30','03','54')
結果:'12:45'

例如: translate('12:30','0123','abcd')
結果:“BC:DA”

fn:escape- uri( stringURI,esc-res ) 例如:逃生uri("http://example.com/test#car", true()
結果: "http%3A%2F%2Fexample.com%2Ftest#car"

例如:逃生uri("http://example.com/test#car", false()
結果: "http://example.com/test#car"

例如:逃避-URI ("http://example.com/~b b ", false()
結果: "http://example.com/~b%C3%A9b%C3%A9"

fn: contains( string1,string2 ) 如果STRING1包含字符串2則返回true,否則返回false

實施例: contains('XML','XM')
結果:真

fn:starts- with( string1,string2 ) 如果字符串2以string2開始,則返回true,否則返回false

例如:starts- with('XML','X')
結果:真

fn:ends- with( string1,string2 ) 如果字符串2與字符串2結束,則返回true,否則返回false

例如:ends- with('XML','X')
結果:假

fn:substring- before( string1,string2 ) 在它發生之前字符串2返回字符串1的開始

例如:substring- before('12/10','/')
結果:'12'

fn:substring- after( string1,string2 ) 在它出現後字符串2返回字符串1的剩餘部分

例如:substring- after('12/10','/')
結果:“10”

fn: matches( string,pattern ) 如果字符串參數的模式匹配,返回true,否則,返回false

例如: matches("Merano", "ran")
結果:真

fn: replace( string,pattern,replace ) 返回由與替換參數替換給定模式創建一個字符串

例如: replace("Bella Italia", "l" , "*")
結果:“要**一個伊達* IA”

例如: replace("Bella Italia", "l" , "")
結果:“比亞Itaia”

fn: tokenize( string,pattern ) 例如: tokenize("XPath is fun", "\s+")
結果: ("XPath", "is" , "fun")

對於任何URI功能

名稱 描述
fn:resolve- uri( relative,base )

布爾值的函數

名稱 描述
fn: boolean( arg ) 返回一個布爾值的數字,字符串或節點集
fn: not( arg ) 該參數被首先通過將減少到一個布爾值boolean()函數。 返回true如果布爾值是假的,假如果布爾值是true

例如: not(true()
結果:假

fn: true() 返回布爾值true

例如: true()
結果:真

fn: false() 返回布爾值false

例如: false()
結果:假

開啟持續時間,日期和時間功能

開啟持續時間,日期和時間成分提取功能

名稱 描述
fn: dateTime( date,time ) 參數轉換為日期和時間
fn:years-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示的年分量的整數
fn:months-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示月的部件的整數
fn:days-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示的天部分的整數
fn:hours-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示小時分量的整數
fn:minutes-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示的分鐘部分的整數
fn:seconds-from- duration( datetimedur ) 返回表示參數的值的規範詞法表示秒分量的小數
fn:year-from- dateTime( datetime ) 返回表示在自變量的本地價值與去年部分的整數

例如:年從- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
結果:2005

fn:month-from- dateTime( datetime ) 返回表示在自變量的本地值的月份部分的整數

例如:每月-從- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
結果:01

fn:day-from- dateTime( datetime ) 返回表示在自變量的本地值的天部分的整數

例如:天從- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
結果:10

fn:hours-from- dateTime( datetime ) 返回表示在自變量的本地值的時間分量的整數

例如:小時從- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
結果:12

fn:minutes-from- dateTime( datetime ) 返回表示在自變量的本地值的分鐘部分的整數

例如:分鐘-從- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
結果:30

fn:seconds-from- dateTime( datetime ) 返回表示在自變量的本地值秒部分的十進制

實施例:秒-從- dateTime(xs:dateTime("2005-01-10T12:30:00-04:10")
結果:0

fn:timezone-from- dateTime( datetime ) 返回如果任何參數的時區組件
fn:year-from- date( date ) 返回表示在自變量的本地值的年份的整數

例如:今年從- date(xs:date("2005-04-23")
結果:2005

fn:month-from- date( date ) 返回表示在自變量的本地值當月的整數

例如:月從- date(xs:date("2005-04-23")
結果:4

fn:day-from- date( date ) 返回表示在自變量的本地值的天整數

例如:天從- date(xs:date("2005-04-23")
結果:23

fn:timezone-from- date( date ) 返回如果任何參數的時區組件
fn:hours-from- time( time ) 返回表示在自變量的本地值的時間分量的整數

例如:小時從- time(xs:time("10:22:00")
結果:10

fn:minutes-from- time( time ) 返回表示在自變量的本地值的分鐘部分的整數

例如:分鐘-從- time(xs:time("10:22:00")
結果:22

fn:seconds-from- time( time ) 返回表示在自變量的本地值秒部分的整數

實施例:秒-從- time(xs:time("10:22:00")
結果:0

fn:timezone-from- time( time ) 返回如果任何參數的時區組件
fn:adjust-dateTime-to- timezone( datetime,timezone ) 如果時區自變量是空的,它返回datetime沒有一個時區。 否則,它返回datetime與時區
fn:adjust-date-to- timezone( date ,timezone ) 如果時區自變量為空,則返回沒有時區的日期。 否則,它返回的日期與時區
fn:adjust-time-to- timezone( time ,timezone ) 如果時區自變量是空的,它返回一個時間沒有時區。 否則,它返回一個時間與時區

相關的QName功能

名稱 描述
fn: QName()
fn:local-name-from- QName()
fn:namespace-uri-from- QName()
fn:namespace-uri-for- prefix()
fn:in-scope- prefixes()
fn:resolve- QName()

上的節點功能

名稱 描述
fn: name()
fn: name( nodeset )
返回指定節點集中的當前節點或第一個節點的名稱
fn:local- name()
fn:local- name( nodeset )
返回當前節點或指定節點集中的第一個節點的名字 - 沒有命名空間前綴
fn:namespace- uri()
fn:namespace- uri( nodeset )
返回當前節點的命名空間URI或所述第一節點指定的節點組
fn: lang( lang ) 如果當前節點的語言指定語言的語言相匹配,則返回true

例如: Lang("en")是真
<P XML:LANG =“EN”> ... </ P>

例如: Lang("de")為假
<P XML:LANG =“EN”> ... </ P>

fn: root()
fn: root( node )
返回到其中當前節點或指定所屬的樹的根。 這通常是一個文檔節點

對序列功能

對序列的一般功能

名稱 描述
fn:index- of( (item,item,...) ,searchitem) 返回是等於searchitem論證項目的序列中的位置

例如:指數的((15, 40, 25, 40, 10) ,40)
結果: (2, 4)

例如:指數的(("a", "dog" , "and" , "a" , "duck")
結果(1, 4)

例如:指數的((15, 40, 25, 40, 10) ,18)
結果: ()

fn: remove( (item,item,...) ,position) 返回從的項目參數的值構造一個新的序列 - 與由除去位置參數指定的項

例如: remove(("ab", "cd" , "ef") ,0)
結果: ("ab", "cd" , "ef")

例如: remove(("ab", "cd" , "ef") ,1)
結果: ("cd", "ef")

例如: remove(("ab", "cd" , "ef") ,4)
結果: ("ab", "cd" , "ef")

fn: empty( item,item,... ) 如果參數的值是一個空序列,則返回true,否則返回false

例如: empty(remove(("ab", "cd") ,1))
結果:假

fn: exists( item,item,... ) 如果參數的值不是一個空序列,則返回true,否則返回false

例如: exists(remove(("ab") ,1))
結果:假

fn:distinct- values( (item,item,...) ,collation) 僅返回不同(different)

例如:distinct- values((1, 2, 3, 1, 2)
結果: (1, 2, 3)

fn:insert- before( (item,item,...) ,pos,inserts) 返回從的項目參數的值構造一個新的序列 - 由所述POS參數指定的插入位置插入件參數的值

例如:嵌件before(("ab", "cd") ,0,“GH”)
結果: ("gh", "ab" , "cd")

例如:嵌件before(("ab", "cd")如圖1所示,“GH”)
結果: ("gh", "ab" , "cd")

例如:嵌件before(("ab", "cd") ,2,“GH”)
結果: ("ab", "gh" , "cd")

例如:嵌件before(("ab", "cd")如圖5所示,“GH”)
結果: ("ab", "cd" , "gh")

fn: reverse( (item,item,...) ) 返回指定項目的順序顛倒

例如: reverse(("ab", "cd" , "ef")
結果: ("ef", "cd" , "ab")

例如: reverse(("ab")
結果: ("ab")

fn: subsequence( (item,item,...) ,start,len) 返回由開始論證,並繼續由len參數指定的項目數指定的位置項的順序。 第一項位於位置1

例如: subsequence(($item1, $item2, $item3,...) ,3)
結果: ($item3, ...)

例如: subsequence(($item1, $item2, $item3, ...) ,2,2)
結果: ($item2, $item3)

fn: unordered( (item,item,...) ) 返回依賴於實現的訂單項

這測試序列的基數作用

名稱 描述
fn:zero-or- one( item,item,... ) 返回參數,如果它包含零個或一個項目,否則會引發錯誤
fn:one-or- more( item,item,... ) 返回參數,如果它包含一個或多個項目,否則會引發錯誤
fn:exactly- one( item,item,... ) 返回參數,如果它正好包含一個項目,否則會引發錯誤

平等相待,並,交和除

名稱 描述
fn:deep- equal( param1,param2,collation ) 返回true如果參數1和參數是深彼此相等,否則返回false

聚合函數

名稱 描述
fn: count( (item,item,...) ) 返回節點的數量
fn: avg( (arg,arg,...) ) 返回參數值的平均值

例如: avg((1,2,3)
結果:2

fn: max( (arg,arg,...) ) 返回比別人更大的爭論

實施例: max((1,2,3)
結果:3

實施例: max(('a', 'k')
結果:'K'

fn: min( (arg,arg,...) ) 返回小於其他參數

例如: min((1,2,3)
結果:1

例如: min(('a', 'k')
結果:“A”

fn: sum( arg,arg,... ) 返回指定節點集的每個節點的數值的總和

生成序列功能

名稱 描述
fn: id( (string,string,...) ,node) 返回具有一個ID值等於在字符串參數指定的一個或多個值中的值元素的節點序列
fn: idref( (string,string,...) ,node) 返回具有IDREF值等於在字符串參數指定的一個或多個值中的值的元素或屬性的節點序列
fn: doc( URI )
fn:doc- available( URI ) 如果返回true doc()函數返回一個文檔節點,否則返回false
fn: collection()
fn: collection( string )

情景功能

名稱 描述
fn: position() 返回當前正在處理的節點的索引位置

示例://書[ position() <= 3]
結果:選擇前三個book元素

fn: last() 返回在處理節點列表中的項目數量

示例://書[ last() ]
結果:選擇最後一本書元素

fn:current- dateTime() 返回當前日期時間(with timezone)
fn:current- date() 返回當前日期(with timezone)
fn:current- time() 返回當前時間(with timezone)
fn:implicit- timezone() 返回隱時區的價值
fn:default- collation() 返回的默認排序規則的價值
fn:static-base- uri() 返回的值基本URI

XSLT的功能

此外,還有以下內置XSLT的功能:

名稱 描述
current() 返回當前節點
document() 用於訪問外部XML文檔中的節點
element- available() 測試指定的元件是否由XSLT處理器支持
format- number() 將數字轉換成字符串
function- available() 測試中指定的功能是否被XSLT處理器支持
generate- id() 返回唯一標識指定節點的字符串值
key() 返回使用由指定的索引的節點集<xsl:key>元素
system- property() 返回系統屬性值
unparsed-entity- uri() 返回一個解析實體的URI