XPath 教程login
XPath 教程
作者:php.cn  更新時間:2022-04-20 14:10:21

XPath、XQuery 以及 XSLT 函數


XPath、XQuery 以及XSLT 函數函數參考手冊


下面的參考手冊定義了XPath 2.0,XQuery 1.0和XSLT 2.0中的函數。


函數參考手冊

  • ##錯誤與追蹤

  • 數值

  • 字串

  • #字串
  • AnyURI
  • 邏輯
    #持續時間/日期/時間
  • ##QName
  • 節點

lamp.gif#Context

lamp.gif

函數命名空間的預設前綴為fn:#存取函數名稱說明fn:node-name(node)#傳回參數節點的節點名稱。 fn:nilled(node)傳回是否拒絕參數節點的布林值。 傳回目前節點或指定節點的base-uri 屬性的值。
 函數命名空間的URI為: http://www.w3.org/2005/xpath-functions
  • fn:data(item.item,...)

  • 接受項目序列,並傳回原子值序列。
fn:base-uri()
#fn:base-uri(node)

fn:document-uri(node)

傳回指定節點的 document-uri 屬性的值。 錯誤與追蹤函數fn:error(error,description,error-object)
  • #name

    ##說明
  • 說明
fn:error()

#fn:error(error)
fn:error(error,description)
######## ####範例:error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')######結果:向外部處理環境返回http://example.com/test#toohigh 以及字串"Error: Price is too high"。 ###############fn:trace(value,label)#######用於對查詢進行 debug。 ############

有關數值的函數

#fn:round-half-to-even()

關於字串的函數

名稱說明
fn: number(arg)

傳回參數的數值。參數可以是布林值、字串或節點集。

範例:number('100')

結果:100

fn:abs(num)

傳回參數的絕對值。

範例:abs(3.14)

結果:3.14

範例:abs(-3.14)

結果:3.14

fn:ceiling(num)

傳回大於num 參數的最小整數。

範例:ceiling(3.14)

結果:4

#fn:floor(num)

傳回不大於num 參數的最大整數。

範例:floor(3.14)

結果:3

fn:round(num)# #把num 參數捨去為最接近的整數。

範例:round(3.14)

結果:3

範例:round-half-to-even(0.5)

結果:0

範例:round-half-to-even(1.5)

#結果:2

範例:round-half-to-even(2.5)

#結果:2

##fn:lower-case( string)fn:translate(string1, string2,string3)fn:escape-uri(stringURI,esc-res)fn:contains(string1,string2)##fn:starts-with(string1, string2)如果string1 以string2 開始,則傳回true,否則傳回false。 ##fn:ends-with( string1,string2)fn:substring-before( string1,string2)傳回string2 在string1 中出現之後的子字串。 範例:substring-after('12/10','/')如果string 參數符合指定的模式,則傳回true,否則傳回false。

結果:true

名稱#說明
fn :string(arg)

傳回參數的字串值。參數可以是數字、邏輯值或節點集。

範例:string(314)

結果:"314"

fn:codepoints-to-string(int,int, ...)

根據程式碼點序列傳回字串。

範例:codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

結果:'Thérèse'

#fn:string-to-codepoints(string)

根據字串傳回碼點序列。

範例:string-to-codepoints("Thérèse")

#結果:84, 104, 233, 114, 232, 115, 101

#fn:codepoint-equal(comp1,comp2)根據Unicode 碼點對照,如果comp1 的值等於comp2 的值,則傳回true。 (http://www.w3.org/2005/02/xpath-functions/collat​​ion/codepoint),否則回傳 false。
  • fn:compare(comp1,comp2)

  • fn:compare(comp1,comp2,collat​​ion )

如果comp1 小於comp2,則傳回-1。如果 comp1 等於 comp2,則傳回 0。如果 comp1 大於 comp2,則傳回 1。 (根據所使用的對照規則)。

範例:compare('ghi', 'ghi')

結果:0

fn:concat(string,string, ...)

傳回字串的拼接。

範例:concat('XPath ','is ','FUN!')

#結果:'XPath is FUN!'

fn:string-join((string,string,...),sep)

#使用sep 參數作為分隔符,來傳回string 參數拼接後的字串。

範例:string-join(('We', 'are', 'having', 'fun!'), ' ')

結果:' We are having fun! '

範例:string-join(('We', 'are', 'having', 'fun!'))

#結果:'Wearehavingfun!'

範例: string-join((), 'sep')

結果:''

  • fn:substring(string ,start,len)

  • fn:substring(string,start)

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

範例:substring('Beatles',1,4)

結果:'Beat'

範例:substring('Beatles',2)

#結果:'eatles'

  • #fn:string-length(string)

  • fn:string-length()

傳回指定字串的長度。如果沒有 string 參數,則傳回目前節點的字串值的長度。

範例:string-length('Beatles')

結果:7

  • fn:normalize-space(string)

  • fn:normalize-space()

刪除指定字串的開頭和結尾的空白,並將內部的所有空白序列替換為一個,然後傳回結果。如果沒有 string 參數,則處理目前節點。

範例:normalize-space(' The   XML ')

#結果:'The XML'

fn:normalize-unicode( )執行Unicode 規格化。
fn:upper-case(string)

把 string 參數轉換成大寫。

範例:upper-case('The XML')

結果:'THE XML'

把string 參數轉換成小寫。

範例:lower-case('The XML')

結果:'the xml'

把string1 中的string2 替換為string3。

範例:translate('12:30','30','45')

結果:'12:45'

範例:translate('12: 30','03','54')

結果:'12:45'

範例:translate('12:30','0123','abcd')

結果:'bc:da'

範例:escape -uri("http://example.com/test#car", true())

結果:"http%3A%2F%2Fexample.com%2Ftest#car"

#範例:escape-uri("http://example.com/test#car", false())

結果:"http://example.com/test#car"

範例:escape-uri ("http://example.com/~bébé", false())

結果:"http://example.com/~b%C3%A9b%C3% A9"

如果string1 包含string2,則傳回true,否則傳回false。

範例:contains('XML','XM')

結果:true

範例:starts-with('XML','X')

結果:true

如果string1 以string2 結尾,則傳回true,否則傳回false。 範例:ends-with('XML','X')

結果:false

傳回string2 在string1 中出現之前的子字串。 範例:substring-before('12/10','/')

結果:'12'

##fn: substring-after(string1,string2)

#結果:'10'

##fn: matches(string,pattern)

範例:matches("Merano", "ran")
fn:replace(string,pattern,replace)

把指定的模式替換為replace 參數,並返回結果。

範例:replace("Bella Italia", "l", "*")

#結果:'Be**a Ita*ia'

#範例:replace( "Bella Italia", "l", "")

結果:'Bea Itaia'

fn:tokenize(string,pattern)

範例:tokenize("XPath is fun", "\s+")

結果:("XPath", "is", "fun")

#針對anyURI 的函數

fn:resolve-uri(relative,base) #關於布林值的函數說明#fn:boolean(arg)先透過 boolean() 函數把參數還原成一個布林值。如果該布林值為 false,則傳回 true,否則傳回 true。 傳回布林值true。

名稱

傳回數字、字串或節點集的布林值。

fn:not(arg)

範例:not(true())結果:false

#fn:true()

範例:true()######結果:true################fn:false()#########返回布林值false。 ######範例:false()######結果:false################

有關持續時間、日期和時間的函數

名稱#fn:dateTime(date,time)fn:years-from-duration(datetimedur)fn:days-from-duration(datetimedur)fn:minutes-from-duration(datetimedur)fn:year-from-dateTime(datetime)傳回參數本地值的年部分的整數。 fn:month-from-dateTime(datetime)#傳回參數本地值的月部分的整數。 #fn:day-from-dateTime(datetime) 傳回參數本地值的天部分的整數。 #fn:hours-from-dateTime(datetime)#傳回參數本地值的小時部分的整數。 範例:hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))#結果:12範例:minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))#結果:30fn:seconds-from-time(time)傳回參數本地值中表示秒部分的整數。 範例:seconds-from-time(xs:time("10:22:00"))#結果:0 #fn:timezone-from-time(time)fn:adjust-dateTime-to-timezone(datetime,timezone)
說明
把參數轉換成日期和時間。
傳回參數值的年份部分的整數,以標準詞彙表示法來表示。

fn:months-from-duration(datetimedur)

傳回參數值的月份部分的整數,以標準詞彙表示法來表示。

傳回參數值的天部分的整數,以標準詞彙表示法來表示。

fn:hours-from-duration(datetimedur)

傳回參數值的小時部分的整數,以標準詞彙表示法來表示。

傳回參數值的分鐘部分的整數,以標準詞彙表示法來表示。

fn:seconds-from-duration(datetimedur)

傳回參數值的分鐘部分的十進制數,以標準詞彙表示法來表示。

範例:year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

#結果:2005

範例:month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

#結果:01

範例:day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:10

#fn:minutes-from-dateTime(datetime)

#傳回參數本地值的分鐘部分的整數。

#fn:seconds-from-dateTime(datetime)##########傳回參數本地值的秒部分的十進制數。 ######範例:seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))######結果:0####### #########fn:timezone-from-dateTime(datetime)#######傳回參數的時區部分,如果存在。 ############fn:year-from-date(date)##########傳回參數本機值中表示年的整數。 ######範例:year-from-date(xs:date("2005-04-23"))######結果:2005############### #fn:month-from-date(date)######### 傳回參數本地值中表示月的整數。 ###

範例:month-from-date(xs:date("2005-04-23"))

結果:4

fn: day-from-date(date)

傳回參數本地值中表示天的整數。

範例:day-from-date(xs:date("2005-04-23"))

結果:23

fn:timezone-from-date(date)傳回參數的時區部分,如果存在。
fn:hours-from-time(time)

#傳回參數本地值中表示小時部分的整數。

範例:hours-from-time(xs:time("10:22:00"))

結果:10

fn:minutes-from-time(time)

傳回參數本地值中表示分鐘部分的整數。

範例:minutes-from-time(xs:time("10:22:00"))

#結果:22

傳回參數的時區部分,如果存在。
如果 timezone 參數為空,則傳回沒有時區的 dateTime。否則傳回帶有時區的 dateTime。

fn:adjust-date-to-timezone(date,timezone)如果 timezone 參數為空,則傳回沒有時區的 date。否則返回帶有時區的 date。 如果 timezone 參數為空,則傳回沒有時區的 time。否則返回帶有時區的 time。 與QNames 相關的函數名稱fn:QName()#fn:local-name-from-QName()fn:namespace-uri-from-QName()fn:namespace-uri-for- prefix()
fn:adjust-time-to-timezone(time,timezone)
說明
 
 ############fn:in-scope-prefixes()###### ############fn: resolve-QName()###### ############

關於節點的函數

##傳回目前節點的名稱或指定節點集中的第一個節點。 傳回目前節點的名稱或指定節點集中的第一個節點- 不帶有命名空間前綴。 傳回目前節點或指定節點集中第一個節點的命名空間URI。 fn:lang(lang)#傳回目前節點或指定的節點所屬的節點樹的根節點。通常是文檔節點。

有關序列的函數

一般性的函數

名稱說明
  • #fn:name()

  • fn:name(nodeset)

  • fn:local-name()

  • fn:local-name(nodeset)

  • fn:namespace-uri()

  • fn:namespace-uri(nodeset)

如果目前節點的語言符合指定的語言,則傳回 true。

範例:Lang("en") is true for <p xml:lang="en">...</p>

範例:Lang("de") is false for <p xml:lang="en">...</p>

  • fn:root()

  • fn:root(node)

##fn:distinct-values ((item,item,...),collat​​ion)#fn:insert-before((item,item,...),pos,inserts)fn:reverse((item,item,...))
#說明
fn:index-of((item,item,...),searchitem)

傳回項目序列中等於searchitem 參數的位置。

範例:index-of ((15, 40, 25, 40, 10), 40)

結果:(2, 4)

範例:index-of (("a", "dog", "and", "a", "duck"), "a")

Result (1, 4)

例子:index-of ((15, 40, 25, 40, 10), 18)

#結果:()

fn:remove((item,item,. ..),position)

傳回由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))

結果:false

fn :exists(item,item,...)

如果參數值不是空序列,則傳回true,否則傳回false。

範例:exists(remove(("ab"), 1))

#結果:false

會傳回唯一不同的值。

範例:distinct-values((1, 2, 3, 1, 2))

結果:(1, 2, 3)

傳回由item 參數建構的新序列- 同時在pos 參數指定位置插入inserts參數的值。

範例:insert-before(("ab", "cd"), 0, "gh")

結果:("gh", "ab", "cd")

範例:insert-before(("ab", "cd"), 1, "gh")

結果:("gh", "ab", "cd")

範例:insert-before(("ab", "cd"), 2, "gh")

結果:("ab", "gh", "cd")

範例:insert-before(("ab", "cd"), 5, "gh")

結果:("ab", "cd", "gh")

#傳回指定的項目的顛倒順序。

範例:reverse(("ab", "cd", "ef"))

#結果:("ef", "cd", "ab")

#範例:reverse(("ab"))

結果:("ab")

fn:subsequence((item,item,...),start,len)

傳回start 參數指定的位置傳回項目序列,序列的長度由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,...)如果參數包含一個項目,則傳回參數,否則產生錯誤。

Equals, Union, Intersection and Except

##說明fn:deep-equal(param1,param2,collat​​ion)如果param1 和param2 與彼此相等(deep-equal),則傳回true,否則傳回false。
名稱

合計函數

說明fn:count((item,item,...))傳回節點的數量。 fn:avg((arg,arg,...))傳回參數值的平均數。 例:avg((1,2,3)) 結果:2fn: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)Returns a sequence of element nodes that have an ID value equal to the value of one or more of the values specified in the string argument
fn:idref((string,string,...),node)Returns a sequence of element or attribute nodes that have an IDREF value equal to the value of one or more of the values specified in the string argument
fn:doc(URI) 
fn:doc- available(URI)如果doc() 函數傳回文檔節點,則傳回true,否則傳回false。
  • fn:collection()

  • fn:collection(string)

 

「上下文函數

##說明結果:選擇前三個book 元素結果:選擇最後一個book 元素##fn:current-dateTime( )傳回目前的dateTime(有時區)。 fn:current-date()傳回目前的日期(有時區)。 fn:current-time()傳回目前的時間(有時區)。 fn:implicit-timezone()傳回隱式時區的值。 fn:default-collat​​ion()傳回預設對照的值。 fn:static-base-uri()傳回 base-uri 的值。
fn:position()

#傳回目前正在處理的節點的index 位置。

範例://book[position()<=3]

fn :last()

傳回在已處理的節點清單中的項目數目。

範例://book[last()]

###

PHP中文網