Hàm XSLT, XPath và XQuery

XSLT 2.0, XPath 2.0 và XQuery 1.0 chia sẻ cùng một thư viện hàm.

Sách tham khảo hàm.

Tiền tố mặc định của không gian tên hàm là:fn:

URI của không gian tên hàm là:http://www.w3.org/2005/xpath-functions

Lưu ý:thường được sử dụng fn: tiền tố để gọi hàm, ví dụ fn:string()Tuy nhiên, do fn: Là tiền tố mặc định của không gian tên, vì vậy không cần thêm tiền tố vào tên hàm khi gọi.

Các hàm truy cập.

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

Top

Các hàm 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'), 'Error: Price is too high')

Kết quả: Trả về http://example.com/test#toohigh và chuỗi "Error: Price is too high" cho môi trường xử lý bên ngoài.

fn:trace(value,label) Dùng để gỡ lỗi truy vấn.

Top

Các hàm liên quan đến giá trị.

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

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

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 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 số num.

Ví dụ: floor(3.14)

Kết quả: 3

fn:round(num)

Chỉnh số num về 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

Top

Các hàm về chuỗi

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

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,...)

Dựa trên chuỗi mã điểm trả về chuỗi.

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

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

fn:string-to-codepoints(string)

Dựa trên chuỗi trả về chuỗi mã điểm.

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 quy tắc so sánh 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), ngược lại 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 (theo quy tắc so sánh được sử dụng).

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

Kết quả: 0

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

Trả về việc nối chuỗi.

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

Kết quả: 'XPath is FUN!'

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

Sử dụng tham số sep làm dấu phân cách để trả về chuỗi được nối lại 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 có độ dài được chỉ định bắt đầu từ vị trí start. Ký tự đầu tiên có chỉ số 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 của nút.

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

Kết quả: 7

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

Xóa các 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ý nút 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ế chuỗi 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, nếu không thì 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, nếu không thì 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, nếu không thì trả về false.

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

Kết quả: false

fn:substring-before(string1,string2)

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

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

Kết quả: '12'

fn:substring-after(string1,string2)

Trả về chuỗi con sau khi chuỗi 2 xuất hiện trong chuỗi 1.

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")

Top

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

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

Top

Các hàm liên quan đến 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)

Trước tiên, sử dụng hàm boolean() để chuyển đổi tham số thành 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 true.

Ví dụ: true()

Kết quả: true

fn:false()

Trả về giá trị boolean false.

Ví dụ: false()

Kết quả: false

Top

Các hàm liên quan đến thời gian, ngày và giờ.

Hàm lấy các thành phần của 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ề phần số năm của giá trị tham số dưới dạng số nguyên, được biểu diễn bằng phương pháp từ vựng tiêu chuẩn.
fn:months-from-duration(datetimedur) Trả về phần số tháng của giá trị tham số dưới dạng số nguyên, được biểu diễn bằng phương pháp từ vựng tiêu chuẩn.
fn:days-from-duration(datetimedur) Trả về giá trị phần ngày của giá trị, biểu diễn bằng số nguyên theo cách biểu diễn từ điển tiêu chuẩn.
fn:hours-from-duration(datetimedur) Trả về giá trị phần giờ của giá trị, biểu diễn bằng số nguyên theo cách biểu diễn từ điển tiêu chuẩn.
fn:minutes-from-duration(datetimedur) Trả về giá trị phần phút của giá trị, biểu diễn bằng số nguyên theo cách biểu diễn từ điển tiêu chuẩn.
fn:seconds-from-duration(datetimedur) Trả về giá trị phần phút của giá trị, biểu diễn bằng số thập phân theo cách biểu diễn từ điển tiêu chuẩn.
fn:year-from-dateTime(datetime)

Trả về giá trị phần năm của giá trị địa điểm bản địa.

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ị phần tháng của giá trị địa điểm bản địa.

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ị phần ngày của giá trị địa điểm bản địa.

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ị phần giờ của giá trị địa điểm bản địa.

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ị phần phút của giá trị địa điểm bản địa.

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ị phần giây của giá trị địa điểm bản địa.

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 time zone của tham số, nếu có.
fn:year-from-date(date)

Trả về giá trị số nguyên của phần năm trong giá trị địa phương 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ị số 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ị số 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 time zone của tham số, nếu có.
fn:hours-from-time(time)

Trả về giá trị số 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ị số 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ị số 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 time zone của tham số, nếu có.
fn:adjust-dateTime-to-timezone(datetime,timezone)

Nếu tham số timezone trống, sẽ trả về dateTime không có time zone.

Ngược lại, sẽ trả về dateTime có time zone.

fn:adjust-date-to-timezone(date,timezone)

Nếu tham số timezone trống, sẽ trả về date không có time zone.

Ngược lại, sẽ trả về date có time zone.

fn:adjust-time-to-timezone(time,timezone)

Nếu tham số timezone trống, sẽ trả về time không có time zone.

Ngoài ra, trả về thời gian với múi giờ.

Top

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()  

Top

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 đầ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 đầ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.

Top

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

Hàm thông thường

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ị của 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ị khác nhau.

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 và thêm 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 phần tử đượ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 phần tử bắt đầu từ tham số start và dài bằng tham số len.

Vị trí của phần tử đầu tiên là 1.

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

Kết quả: ($mục3, ...)

Ví dụ: subsequence(($mục1, $mục2, $mục3, ...), 2, 2)

Kết quả: ($mục2, $mục3)

fn:unordered((mục mục,...)) Trả về các mục theo thứ tự được quyết định bởi việc triển khai.

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

Tên Giải thích
fn:zero-or-one(mục mục,...) Nếu tham số chứa không 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.

Equals, Union, Intersection và Except

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 của các nút.
fn:avg((đầu vào,đầu vào,...))

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((đầu vào,đầu vào,...))

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((đầu vào,đầu vào,...))

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(đầu vào,đầu vào,...) Trả về tổng số giá trị số của từng nút trong tập nút được chỉ định.

Hàm tạo chuỗi

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

Top

Hàm ngữ cảnh

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

Quay lại vị trí index của điểm đang được xử lý.

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

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

fn:last()

Quay lại số lượng mục trong danh sách điểm đang được xử lý.

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

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

fn:current-dateTime() Quay lại dateTime hiện tại (kèm múi giờ).
fn:current-date() Quay lại ngày hiện tại (kèm múi giờ).
fn:current-time() Quay lại thời gian hiện tại (kèm múi giờ).
fn:implicit-timezone() Quay lại giá trị của múi giờ ẩn.
fn:default-collation() Quay lại giá trị của bộ sắp xếp mặc định.
fn:static-base-uri() Quay lại giá trị của base-uri.

Top

Hàm XSLT

Ngoài ra, còn có các hàm XSLT tích hợp sau:

Tên Mô tả
current() Quay lại tập điểm chứa điểm hiện tại là thành viên duy nhất.
document() Dùng để truy cập các điểm trong tài liệu XML bên ngoài.
element-available() Kiểm tra bộ xử lý XSLT có hỗ trợ phần tử cụ thể hay không.
format-number() Chuyển đổi số thành chuỗi.
function-available() Kiểm tra bộ xử lý XSLT có hỗ trợ hàm cụ thể hay không.
generate-id() Quay lại giá trị chuỗi duy nhất xác định điểm.
key() Lấy lại các phần tử được đánh dấu bằng câu lệnh <xsl:key> trước đó.
node-set Chuyển đổi cây thành tập điểm. Tập điểm được tạo ra luôn chứa một điểm và là điểm gốc của cây.
system-property() Quay lại giá trị của thuộc tính hệ thống.
unparsed-entity-uri() Quay lại URI của thực thể chưa được phân tích.

Top