Hàm trong XPath, XQuery và XSLT

hàm truy cập

Tên Giải thích
fn:node-name(node) trả về tên node của node tham số.
fn:nilled(node) trả về giá trị boolean cho biết có từ chối node tham số hay không.
fn:data(item.item,...) nhận chuỗi phần tử và trả về chuỗi giá trị nguyên tử.
  • fn:base-uri()
  • fn:base-uri(node)
trả về giá trị thuộc tính base-uri của node hiện tại hoặc node được chỉ định.
fn:document-uri(node) trả về giá trị thuộc tính document-uri của node được chỉ định.

hàm số lỗi và theo dõi

Tên Giải thích
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

ví dụ: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Lỗi: Giá quá cao')

kết quả: trả về môi trường xử lý bên ngoài http://example.com/test#toohigh và chuỗi "Lỗi: Giá quá cao".

fn:trace(value,label) dùng để debug truy vấn.

hàm số về số liệu

Tên Giải thích
fn:number(arg)

trả về giá trị số của tham số. Tham số có thể là giá trị boolean, chuỗi hoặc tập hợp node.

ví dụ: number('100')

kết quả: 100

fn:abs(num)

trả về giá trị tuyệt đối của tham số.

ví dụ: abs(3.14)

kết quả: 3.14

ví dụ: abs(-3.14)

kết quả: 3.14

fn:ceiling(num)

trả về số nguyên nhỏ nhất lớn hơn tham số num.

ví dụ: ceiling(3.14)

Kết quả: 4

fn:floor(num)

Trả về số nguyên lớn nhất không lớn hơn tham số num.

Ví dụ: floor(3.14)

Kết quả: 3

fn:round(num)

Làm tròn tham số num thành số nguyên gần nhất.

Ví dụ: round(3.14)

Kết quả: 3

fn:round-half-to-even()

Ví dụ: round-half-to-even(0.5)

Kết quả: 0

Ví dụ: round-half-to-even(1.5)

Kết quả: 2

Ví dụ: round-half-to-even(2.5)

Kết quả: 2

Các hàm về chuỗi

Tên Giải thích
fn:string(tham-số)

Trả về giá trị chuỗi của tham số. Tham số có thể là số, giá trị luận lý hoặc tập hợp nút.

Ví dụ: string(314)

Kết quả: "314"

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

Trả về chuỗi từ dãy mã điểm.

Ví dụ: codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

Kết quả: 'Thérèse'

fn:string-to-codepoints(ký-tự)

Trả về dãy mã điểm từ chuỗi.

Ví dụ: string-to-codepoints("Thérèse")

Kết quả: 84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) Dựa trên mã điểm Unicode, nếu giá trị của comp1 bằng giá trị của comp2, thì trả về true. (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), nếu không thì trả về false.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

Nếu comp1 nhỏ hơn comp2, thì trả về -1. Nếu comp1 bằng comp2, thì trả về 0. Nếu comp1 lớn hơn comp2, thì trả về 1. (Dựa trên quy tắc so sánh được sử dụng).

Ví dụ: compare('ghi', 'ghi')

Kết quả: 0

fn:concat(ký-tự-thuộc-tính,ký-tự-thuộc-tính,...)

Trả về việc ghép chuỗi các ký tự.

Ví dụ: concat('XPath ','là ','FUN!')

Kết quả: 'XPath là FUN!'

fn:tham-số-giá-trị-đoạn-kết((tham-số-thuộc-tính-tham-số,...),tham-số-kết-hợp)

Sử dụng tham số sep làm dấu phân隔 để trả về chuỗi kết hợp từ tham số string.

Ví dụ: string-join(('We', 'are', 'having', 'fun!'), ' ')

Kết quả: ' We are having fun! '

Ví dụ: string-join(('We', 'are', 'having', 'fun!'))

Kết quả: 'Wearehavingfun!'

Ví dụ: string-join((), 'sep')

Kết quả: ''

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

Trả về chuỗi con từ vị trí start bắt đầu với độ dài được chỉ định. Vị trí đầu tiên là 1. Nếu bỏ qua tham số len, thì trả về chuỗi con từ vị trí start đến cuối chuỗi.

Ví dụ: substring('Beatles',1,4)

Kết quả: 'Beat'

Ví dụ: substring('Beatles',2)

Kết quả: 'eatles'

  • fn:string-length(string)
  • fn:string-length()

Trả về độ dài của chuỗi được chỉ định. Nếu không có tham số string, thì trả về độ dài của giá trị chuỗi hiện tại.

Ví dụ: string-length('Beatles')

Kết quả: 7

  • fn:normalize-space(string)
  • fn:normalize-space()

Xóa khoảng trắng ở đầu và cuối của chuỗi được chỉ định, và thay thế tất cả các chuỗi khoảng trắng trong nội bộ bằng một khoảng trắng, sau đó trả về kết quả. Nếu không có tham số string, thì xử lý điểm hiện tại.

Ví dụ: normalize-space(' The   XML ')

Kết quả: 'The XML'

fn:normalize-unicode() Thực hiện quy định Unicode.
fn:upper-case(string)

Chuyển đổi tham số string thành chữ hoa.

Ví dụ: upper-case('The XML')

Kết quả: 'THE XML'

fn:lower-case(string)

Chuyển đổi tham số string thành chữ thường.

Ví dụ: lower-case('The XML')

Kết quả: 'the xml'

fn:translate(string1,string2,string3)

Thay thế string2 trong string1 bằng string3.

Ví dụ: translate('12:30','30','45')

Kết quả: '12:45'

Ví dụ: translate('12:30','03','54')

Kết quả: '12:45'

Ví dụ: translate('12:30','0123','abcd')

Kết quả: 'bc:da'

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

Ví dụ: escape-uri("http://example.com/test#car", true())

Kết quả: "http%3A%2F%2Fexample.com%2Ftest#car"

Ví dụ: escape-uri("http://example.com/test#car", false())

Kết quả: "http://example.com/test#car"

Ví dụ: escape-uri ("http://example.com/~bébé", false())

Kết quả: "http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2)

Nếu string1 chứa string2, thì trả về true, ngược lại trả về false.

Ví dụ: contains('XML','XM')

Kết quả: true

fn:starts-with(string1,string2)

Nếu string1 bắt đầu bằng string2, thì trả về true, ngược lại trả về false.

Ví dụ: starts-with('XML','X')

Kết quả: true

fn:ends-with(string1,string2)

Nếu string1 kết thúc bằng string2, thì trả về true, ngược lại trả về false.

Ví dụ: ends-with('XML','X')

Kết quả: false

fn:substring-before(string1,string2)

Trả về chuỗi con của string2 xuất hiện trước string2 trong string1.

Ví dụ: substring-before('12/10','/')

Kết quả: '12'

fn:substring-after(string1,string2)

Trả về chuỗi con của string2 xuất hiện sau string1 trong string1.

Ví dụ: substring-after('12/10','/')

Kết quả: '10'

fn:matches(string,pattern)

Nếu tham số string khớp với mẫu đã chỉ định, thì trả về true, ngược lại trả về false.

Ví dụ: matches("Merano", "ran")

Kết quả: true

fn:replace(string,pattern,replace)

Thay thế mẫu đã chỉ định bằng tham số replace và trả về kết quả.

Ví dụ: replace("Bella Italia", "l", "*")

Kết quả: 'Be**a Ita*ia'

Ví dụ: replace("Bella Italia", "l", "")

Kết quả: 'Bea Itaia'

fn:tokenize(string,pattern)

Ví dụ: tokenize("XPath is fun", "\s+")

Kết quả: ("XPath", "is", "fun")

Các hàm về anyURI.

Tên Giải thích
fn:resolve-uri(relative,base)  

Các hàm về giá trị boolean.

Tên Giải thích
fn:boolean(arg) Trả về giá trị boolean của số, chuỗi hoặc tập hợp nút.
fn:not(arg)

Đầu tiên, sử dụng hàm boolean() để chuyển đổi tham số thành một giá trị boolean. Nếu giá trị boolean là false, thì trả về true, ngược lại trả về true.

Ví dụ: not(true())

Kết quả: false

fn:true()

Trả về giá trị boolean là true.

Ví dụ: true()

Kết quả: true

fn:false()

Trả về giá trị boolean là false.

Ví dụ: false()

Kết quả: false

Các hàm về thời gian, ngày và giờ.

Hàm trích xuất các thành phần ngày, giờ và thời gian.

Tên Giải thích
fn:dateTime(date,time) Chuyển đổi tham số thành ngày và giờ.
fn:years-from-duration(datetimedur) Trả về giá trị năm của tham số là số nguyên, được biểu diễn bằng từ ngữ tiêu chuẩn.
fn:months-from-duration(datetimedur) Trả về giá trị tháng của tham số là số nguyên, được biểu diễn bằng từ ngữ tiêu chuẩn.
fn:days-from-duration(datetimedur) Trả về giá trị ngày của tham số là số nguyên, được biểu diễn bằng từ ngữ tiêu chuẩn.
fn:hours-from-duration(datetimedur) Trả về giá trị số nguyên của phần giờ trong giá trị, biểu diễn bằng cách sử dụng từ ngữ tiêu chuẩn.
fn:minutes-from-duration(datetimedur) Trả về giá trị số nguyên của phần phút trong giá trị, biểu diễn bằng cách sử dụng từ ngữ tiêu chuẩn.
fn:seconds-from-duration(datetimedur) Trả về giá trị số nguyên của phần phút trong giá trị, biểu diễn bằng cách sử dụng từ ngữ tiêu chuẩn.
fn:year-from-dateTime(datetime)

Trả về giá trị số nguyên của phần năm trong giá trị cục bộ của tham số.

Ví dụ: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Kết quả: 2005

fn:month-from-dateTime(datetime)

Trả về giá trị số nguyên của phần tháng trong giá trị cục bộ của tham số.

Ví dụ: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Kết quả: 01

fn:day-from-dateTime(datetime)

Trả về giá trị số nguyên của phần ngày trong giá trị cục bộ của tham số.

Ví dụ: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Kết quả: 10

fn:hours-from-dateTime(datetime)

Trả về giá trị số nguyên của phần giờ trong giá trị cục bộ của tham số.

Ví dụ: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Kết quả: 12

fn:minutes-from-dateTime(datetime)

Trả về giá trị số nguyên của phần phút trong giá trị cục bộ của tham số.

Ví dụ: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Kết quả: 30

fn:seconds-from-dateTime(datetime)

Trả về giá trị số nguyên của phần giây trong giá trị cục bộ của tham số.

Ví dụ: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

Kết quả: 0

fn:timezone-from-dateTime(datetime) Trả về phần timezone của tham số, nếu có.
fn:year-from-date(date)

Trả về giá trị số nguyên của năm trong giá trị cục bộ của tham số.

Ví dụ: year-from-date(xs:date("2005-04-23"))

Kết quả: 2005

fn:month-from-date(date)

Trả về giá trị nguyên của phần tháng trong giá trị địa phương của tham số.

Ví dụ: month-from-date(xs:date("2005-04-23"))

Kết quả: 4

fn:day-from-date(date)

Trả về giá trị nguyên của phần ngày trong giá trị địa phương của tham số.

Ví dụ: day-from-date(xs:date("2005-04-23"))

Kết quả: 23

fn:timezone-from-date(date) Trả về phần timezone của tham số, nếu có.
fn:hours-from-time(time)

Trả về giá trị nguyên của phần giờ trong giá trị địa phương của tham số.

Ví dụ: hours-from-time(xs:time("10:22:00"))

Kết quả: 10

fn:minutes-from-time(time)

Trả về giá trị nguyên của phần phút trong giá trị địa phương của tham số.

Ví dụ: minutes-from-time(xs:time("10:22:00"))

Kết quả: 22

fn:seconds-from-time(time)

Trả về giá trị nguyên của phần giây trong giá trị địa phương của tham số.

Ví dụ: seconds-from-time(xs:time("10:22:00"))

Kết quả: 0

fn:timezone-from-time(time) Trả về phần timezone của tham số, nếu có.
fn:adjust-dateTime-to-timezone(datetime,timezone) Nếu tham số timezone trống, thì trả về dateTime không có timezone. Ngược lại, trả về dateTime có timezone.
fn:adjust-date-to-timezone(date,timezone) Nếu tham số timezone trống, thì trả về date không có timezone. Ngược lại, trả về date có timezone.
fn:adjust-time-to-timezone(time,timezone) Nếu tham số timezone trống, thì trả về time không có timezone. Ngược lại, trả về time có timezone.

Các hàm liên quan đến QNames

Tên Giải thích
fn:QName()  
fn:local-name-from-QName()  
fn:namespace-uri-from-QName()  
fn:namespace-uri-for-prefix()  
fn:in-scope-prefixes()  
fn:resolve-QName()  

Về các hàm liên quan đến nút

Tên Giải thích
  • fn:name()
  • fn:name(nodeset)
Trả về tên của nút hiện tại hoặc nút đầu tiên trong tập hợp nút được chỉ định.
  • fn:local-name()
  • fn:local-name(nodeset)
Trả về tên của nút hiện tại hoặc nút đầu tiên trong tập hợp nút được chỉ định - không có tiền tố không gian tên.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
Trả về URI không gian tên của nút hiện tại hoặc tập hợp nút được chỉ định.
fn:lang(lang)

Nếu ngôn ngữ của nút hiện tại khớp với ngôn ngữ được chỉ định, thì trả về true。

Ví dụ: Lang("en") là true cho <p xml:lang="en">...</p>

Ví dụ: Lang("de") là false cho <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
Trả về nút gốc của cây nút hiện tại hoặc nút được chỉ định. Thường là nút tài liệu.

Hàm liên quan đến chuỗi

Hàm tổng quát

Tên Giải thích
fn:index-of((item,item,...),searchitem)

Trả về vị trí của phần tử trong chuỗi phần tử bằng với tham số searchitem.

Ví dụ: index-of ((15, 40, 25, 40, 10), 40)

Kết quả: (2, 4)

Ví dụ: index-of (("a", "dog", "and", "a", "duck"), "a")

Kết quả: (1, 4)

Ví dụ: index-of ((15, 40, 25, 40, 10), 18)

Kết quả: ()

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

Trả về một chuỗi mới được tạo từ tham số item - đồng thời xóa bỏ phần tử tại vị trí được chỉ định bởi tham số position。

Ví dụ: remove(("ab", "cd", "ef"), 0)

Kết quả: ("ab", "cd", "ef")

Ví dụ: remove(("ab", "cd", "ef"), 1)

Kết quả: ("cd", "ef")

Ví dụ: remove(("ab", "cd", "ef"), 4)

Kết quả: ("ab", "cd", "ef")

fn:empty(item,item,...)

Nếu giá trị tham số là chuỗi rỗng, thì trả về true, ngược lại trả về false。

Ví dụ: empty(remove(("ab", "cd"), 1))

Kết quả: false

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

Nếu giá trị của tham số không phải là chuỗi rỗng, thì trả về true, ngược lại trả về false.

Ví dụ: exists(remove(("ab"), 1))

Kết quả: false

fn:distinct-values((item,item,...),collation)

Trả về các giá trị duy nhất.

Ví dụ: distinct-values((1, 2, 3, 1, 2))

Kết quả: (1, 2, 3)

fn:insert-before((item,item,...),pos,inserts)

Trả về chuỗi mới được tạo từ tham số item, đồng thời chèn giá trị của tham số inserts vào vị trí được chỉ định bởi tham số pos.

Ví dụ: insert-before(("ab", "cd"), 0, "gh")

Kết quả: ("gh", "ab", "cd")

Ví dụ: insert-before(("ab", "cd"), 1, "gh")

Kết quả: ("gh", "ab", "cd")

Ví dụ: insert-before(("ab", "cd"), 2, "gh")

Kết quả: ("ab", "gh", "cd")

Ví dụ: insert-before(("ab", "cd"), 5, "gh")

Kết quả: ("ab", "cd", "gh")

fn:reverse((item,item,...))

Trả về thứ tự ngược lại của mục được chỉ định.

Ví dụ: reverse(("ab", "cd", "ef"))

Kết quả: ("ef", "cd", "ab")

Ví dụ: reverse(("ab"))

Kết quả: ("ab")

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

Trả về chuỗi các mục tại vị trí được chỉ định bởi tham số start, độ dài của chuỗi được chỉ định bởi tham số len. Vị trí của mục đầu tiên là 1.

Ví dụ: subsequence(($item1, $item2, $item3,...), 3)

Kết quả: ($item3, ...)

Ví dụ: subsequence(($item1, $item2, $item3, ...), 2, 2)

Kết quả: ($item2, $item3)

fn:unordered((item,item,...)) Trả về các mục theo thứ tự quyết định bởi thực hiện.

Hàm kiểm tra dung lượng chuỗi

Tên Giải thích
fn:zero-or-one(item,item,...) Nếu tham số chứa không mục hoặc một mục, thì trả về tham số, nếu không thì tạo lỗi
fn:one-or-more(mục,mục,...) Nếu tham số chứa một hoặc nhiều mục, thì trả về tham số, nếu không thì tạo lỗi
fn:exactly-one(mục,mục,...) Nếu tham số chứa một mục, thì trả về tham số, nếu không thì tạo lỗi

Bằng, Hợp, Giảm trừ và Khác nhau

Tên Giải thích
fn:deep-equal(param1,param2,collation) Nếu param1 và param2 bằng nhau (deep-equal) thì trả về true, nếu không thì trả về false

Hàm tổng hợp

Tên Giải thích
fn:count((mục,mục,...)) Trả về số lượng nút
fn:avg((tham số,tham số,...))

Trả về giá trị trung bình của các tham số

Ví dụ: avg((1,2,3))

Kết quả: 2

fn:max((tham số,tham số,...))

Trả về tham số lớn hơn các tham số khác

Ví dụ: max((1,2,3))

Kết quả: 3

Ví dụ: max(('a', 'k'))

Kết quả: 'k'

fn:min((tham số,tham số,...))

Trả về tham số nhỏ hơn các tham số khác

Ví dụ: min((1,2,3))

Kết quả: 1

Ví dụ: min(('a', 'k'))

Kết quả: 'a'

fn:sum(arg,arg,...) Trả về tổng của giá trị của mỗi nút trong tập điểm

Hàm tạo chuỗi

Tên Giải thích
fn:id((chuỗi,chữ,chữ,...),nút) Trả về một chuỗi các nút phần tử có giá trị ID bằng giá trị của một hoặc nhiều giá trị được chỉ định trong chuỗi đối số
fn:idref((chuỗi,chữ,chữ,...),nút) Trả về một chuỗi các nút phần tử hoặc thuộc tính có giá trị IDREF bằng giá trị của một hoặc nhiều giá trị được chỉ định trong chuỗi đối số
fn:doc(URI)  
fn:doc-available(URI) Nếu hàm doc() trả về nút tài liệu, thì trả về true, ngược lại trả về false.
  • fn:collection()
  • fn:collection(string)
 

Hàm ngữ cảnh

Tên Giải thích
fn:position()

Trả về vị trí index của nút đang được xử lý.

Ví dụ: //book[position()<=3]

Kết quả: Chọn ba phần tử book đầu tiên

fn:last()

Trả về số lượng mục trong danh sách nút đang được xử lý.

Ví dụ: //book[last()]

Kết quả: Chọn phần tử book cuối cùng

fn:current-dateTime() Trả về dateTime hiện tại (kèm theo khu vực thời gian).
fn:current-date() Trả về ngày hiện tại (kèm theo khu vực thời gian).
fn:current-time() Trả về thời gian hiện tại (kèm theo khu vực thời gian).
fn:implicit-timezone() Trả về giá trị của khu vực thời gian ẩn.
fn:default-collation() Trả về giá trị của mặc định so sánh.
fn:static-base-uri() Trả về giá trị của base-uri.