XSLT、XPath 以及 XQuery 函数

XSLT 2.0, XPath 2.0 dan XQuery 1.0 berbagi l库 fungsi yang sama.

Panduan Referensi Fungsi

Prefix standar ruang nama fungsi adalah:fn:

URI ruang nama fungsi adalah:http://www.w3.org/2005/xpath-functions

Petunjuk:Biasanya digunakan fn: prefix untuk memanggil fungsi, seperti fn:string()Walau bagaimanapun, karena fn: Adalah prefix standar ruang nama, jadi prefix nama fungsi tidak perlu ditambahkan saat dipanggil.

Fungsi akses

Nama Keterangan
fn:node-name(node) Kembalikan nama node parameter.
fn:nilled(node) Kembalikan nilai boolean yang menentukan apakah node parameter ditolak.
fn:data(item.item,...) Menerima urutan item dan kembalikan urutan nilai atom.
  • fn:base-uri()
  • fn:base-uri(node)
Kembalikan nilai atribut base-uri untuk node saat ini atau node yang ditentukan.
fn:document-uri(node) Kembalikan nilai atribut document-uri untuk node yang ditentukan.

Atas

Fungsi kesalahan dan trace

Nama Keterangan
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

Contoh: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')

Hasil: Kembalikan ke lingkungan pengelolaan luaran http://example.com/test#toohigh serta string "Error: Price is too high".

fn:trace(value,label) Digunakan untuk debug query.

Atas

Fungsi tentang nilai

Nama Keterangan
fn:number(arg)

Kembalikan nilai parameter. Parameter boleh jadi nilai boolean, string atau sekumpulan node.

Contoh: number('100')

Hasil: 100

fn:abs(num)

Mengembalikan nilai absolut parameter.

Contoh: abs(3.14)

Hasil: 3.14

Contoh: abs(-3.14)

Hasil: 3.14

fn:ceiling(num)

Mengembalikan angka bulat terkecil yang lebih besar daripada parameter num.

Contoh: ceiling(3.14)

Hasil: 4

fn:floor(num)

Mengembalikan angka bulat terbesar yang tidak melebihi parameter num.

Contoh: floor(3.14)

结果:3

fn:round(num)

Mengurangkan parameter num untuk mendekati angka bulat terdekat.

Contoh: round(3.14)

结果:3

fn:round-half-to-even()

Contoh: round-half-to-even(0.5)

Hasil: 0

Contoh: round-half-to-even(1.5)

结果:2

Contoh: round-half-to-even(2.5)

结果:2

Atas

Fungsi-fungsi string

Nama Keterangan
fn:string(arg)

Mengembalikan nilai string parameter. Parameter dapat berupa nombor, nilai logis atau kumpulan node.

Contoh: string(314)

Hasil: "314"

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

Mengembalikan string berdasarkan susun kod pon.

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

Hasil: 'Thérèse'

fn:string-to-codepoints(string)

Mengembalikan susun kod pon berdasarkan string.

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

Hasil: 84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) Berdasarkan penghubung kod pon Unicode, jika nilai comp1 sama dengan nilai comp2, kembalikan true (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), jika tidak kembalikan false.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

Jika comp1 lebih kecil daripada comp2, kembalikan -1. Jika comp1 sama dengan comp2, kembalikan 0. Jika comp1 lebih besar daripada comp2, kembalikan 1 (berdasarkan aturan penghubung yang digunakan).

Contoh: compare('ghi', 'ghi')

Hasil: 0

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

Mengembalikan gabungan string.

Contoh: concat('XPath ','is ','FUN!')

Hasil: 'XPath is FUN!'

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

Menggunakan parameter sep sebagai pemisah untuk mengembalikan string yang disambungkan.

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

Hasil: ' We are having fun! '

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

Hasil: 'Wearehavingfun!'

Contoh: string-join((), 'sep')

Hasil: ''

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

Mengembalikan substring panjang yang ditentukan dari posisi start. Indeks karakter pertama adalah 1. Jika parameter len disingkirkan, maka mengembalikan substring dari posisi start hingga akhir string.

Contoh: substring('Beatles',1,4)

Hasil: 'Beat'

Contoh: substring('Beatles',2)

Hasil: 'eatles'

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

Mengembalikan panjang string yang ditentukan. Jika parameter string tidak disediakan, maka mengembalikan panjang nilai string node saat ini.

Contoh: string-length('Beatles')

Hasil: 7

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

Menghapus ruang kosong di awal dan akhir string yang ditentukan, dan mengganti semua rangkaian ruang internal dengan satu, lalu kembalikan hasil. Jika parameter string tidak disediakan, maka mengendalikan node saat ini.

Contoh: normalize-space(' The   XML ')

Hasil: 'The XML'

fn:normalize-unicode() Melaksanakan规范化 Unicode.
fn:upper-case(string)

Tukar parameter string kepada huruf besar.

Contoh: upper-case('The XML')

Hasil: 'THE XML'

fn:lower-case(string)

Buat parameter string menjadi kecil.

Contoh: lower-case('The XML')

Hasil: 'the xml'

fn:translate(string1,string2,string3)

Ganti string2 dalam string1 dengan string3.

Contoh: translate('12:30','30','45')

Hasil: '12:45'

Contoh: translate('12:30','03','54')

Hasil: '12:45'

Contoh: translate('12:30','0123','abcd')

Hasil: 'bc:da'

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

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

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

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

Hasil: "http://example.com/test#car"

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

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

fn:contains(string1,string2)

Jika string1 mengandung string2, kembalikan true, jika tidak kembalikan false.

Contoh: contains('XML','XM')

Hasil: true

fn:starts-with(string1,string2)

Jika string1 dimulai dengan string2, kembalikan true, jika tidak kembalikan false.

Contoh: starts-with('XML','X')

Hasil: true

fn:ends-with(string1,string2)

Jika string1 berakhir dengan string2, kembalikan true, jika tidak kembalikan false.

Contoh: ends-with('XML','X')

Hasil: false

fn:substring-before(string1,string2)

Balikkan substring sebelum string2 muncul di dalam string1.

Contoh: substring-before('12/10','/')

Hasil: '12'

fn:substring-after(string1,string2)

Kembalikan substrung setelah string2 muncul di string1.

Contoh: substring-after('12/10','/')

Hasil: '10'

fn:matches(string,pattern)

Jika parameter string cocok dengan pola yang ditentukan, kembalikan true, jika tidak kembalikan false.

Contoh: matches("Merano", "ran")

Hasil: true

fn:replace(string,pattern,replace)

Ganti pola yang ditentukan dengan parameter replace, dan kembalikan hasil.

Contoh: replace("Bella Italia", "l", "*")

Hasil: 'Be**a Ita*ia'

Contoh: replace("Bella Italia", "l", "")

Hasil: 'Bea Itaia'

fn:tokenize(string,pattern)

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

Hasil: ("XPath", "is", "fun")

Atas

Fungsi untuk anyURI.

Nama Keterangan
fn:resolve-uri(relative,base)  

Atas

Fungsi tentang nilai boolean.

Nama Keterangan
fn:boolean(arg) Kembalikan nilai boolean untuk angka, string, atau kumpulan node.
fn:not(arg)

Pertama-tama memulihkan parameter menjadi nilai boolean dengan fungsi boolean().

Jika nilai boolean ini adalah false, kembalikan true, jika tidak kembalikan true.

Contoh: not(true())

Hasil: false

fn:true()

Kembalikan nilai boolean true.

Contoh: true()

Hasil: true

fn:false()

Kembalikan nilai boolean false.

Contoh: false()

Hasil: false

Atas

Fungsi tentang durasi, tanggal, dan waktu.

Fungsi pemecah komponen tanggal, waktu, dan durasi.

Nama Keterangan
fn:dateTime(date,time) Konversi parameter ke tanggal dan waktu.
fn:years-from-duration(datetimedur) Kembalikan nilai tahun bagian dalam bentuk angka, digambarkan dalam cara kata standar.
fn:months-from-duration(datetimedur) Kembalikan nilai bulan bagian dalam bentuk angka, digambarkan dalam cara kata standar.
fn:days-from-duration(datetimedur) Balikan nilai hari bagian parameter, dinyatakan dalam ejaan kata standar.
fn:hours-from-duration(datetimedur) Balikan nilai jam bagian parameter, dinyatakan dalam ejaan kata standar.
fn:minutes-from-duration(datetimedur) Balikan nilai menit bagian parameter, dinyatakan dalam ejaan kata standar.
fn:seconds-from-duration(datetimedur) Balikan nilai menit bagian parameter, dinyatakan dalam ejaan kata standar.
fn:year-from-dateTime(datetime)

Balikan nilai tahun bagian lokal parameter.

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

Hasil: 2005

fn:month-from-dateTime(datetime)

Balikan nilai bulan bagian lokal parameter.

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

Hasil: 01

fn:day-from-dateTime(datetime)

Balikan nilai hari bagian lokal parameter.

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

Hasil: 10

fn:hours-from-dateTime(datetime)

Balikan nilai jam bagian lokal parameter.

Contoh: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Hasil: 12

fn:minutes-from-dateTime(datetime)

Balikan nilai menit bagian lokal parameter.

Contoh: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

Hasil: 30

fn:seconds-from-dateTime(datetime)

Balikan nilai detik bagian lokal parameter.

Contoh: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

Hasil: 0

fn:timezone-from-dateTime(datetime) Kembalikan bahagian zon masa parameter, jika ada.
fn:year-from-date(date)

Kembalikan integer bagi bahagian tahun dalam nilai lokal parameter.

Contoh: year-from-date(xs:date("2005-04-23"))

Hasil: 2005

fn:month-from-date(date)

Kembalikan integer bagi bahagian bulan dalam nilai lokal parameter.

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

Hasil: 4

fn:day-from-date(date)

Kembalikan integer bagi bahagian hari dalam nilai lokal parameter.

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

Hasil: 23

fn:timezone-from-date(date) Kembalikan bahagian zon masa parameter, jika ada.
fn:hours-from-time(time)

Kembalikan integer bagi bahagian jam dalam nilai lokal parameter.

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

Hasil: 10

fn:minutes-from-time(time)

Kembalikan integer bagi bahagian minit dalam nilai lokal parameter.

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

Hasil: 22

fn:seconds-from-time(time)

Kembalikan integer bagi bahagian detik dalam nilai lokal parameter.

Contoh: seconds-from-time(xs:time("10:22:00"))

Hasil: 0

fn:timezone-from-time(time) Kembalikan bahagian zon masa parameter, jika ada.
fn:adjust-dateTime-to-timezone(datetime,timezone)

Jika parameter timezone kosong, kembalikan dateTime tanpa zon masa.

Jika tidak, kembalikan dateTime dengan zon masa.

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

Jika parameter timezone kosong, kembalikan tarikh tanpa zon masa.

Jika tidak, kembalikan tarikh dengan zon masa.

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

Jika parameter timezone kosong, kembalikan masa tanpa zon masa.

Jika tidak, kembalikan time dengan timezone.

Atas

Fungsi yang berhubungan dengan QName

Nama Keterangan
fn:QName()  
fn:local-name-from-QName()  
fn:namespace-uri-from-QName()  
fn:namespace-uri-for-prefix()  
fn:in-scope-prefixes()  
fn:resolve-QName()  

Atas

Fungsi tentang node

Nama Keterangan
  • fn:name()
  • fn:name(nodeset)
Mengembalikan nama node saat ini atau node pertama dalam set node.
  • fn:local-name()
  • fn:local-name(nodeset)
Mengembalikan nama node saat ini atau node pertama dalam set node tanpa prefix namespace.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
Mengembalikan URI namespace dari node saat ini atau set node yang ditentukan.
fn:lang(lang)

Jika bahasa node saat ini cocok dengan bahasa yang ditentukan, kembalikan true.

Contoh: Lang("en") adalah true untuk <p xml:lang="en">...</p>

Contoh: Lang("de") adalah false untuk <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
Mengembalikan root node dari tree node yang milik node saat ini atau node yang ditentukan. Biasanya node dokumen.

Atas

Fungsi tentang urutan

Fungsi umum

Nama Keterangan
fn:index-of((item,item,...),searchitem)

Mengembalikan posisi dalam urutan item yang sama dengan parameter searchitem.

Contoh: index-of ((15, 40, 25, 40, 10), 40)

Hasil: (2, 4)

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

Hasil (1, 4)

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

Hasil: ()

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

Mengembalikan urutan baru yang dibuat dari parameter item - menghapus item yang ditentukan oleh parameter posisi.

Contoh: remove(("ab", "cd", "ef"), 0)

Hasil: ("ab", "cd", "ef")

Contoh: remove(("ab", "cd", "ef"), 1)

Hasil: ("cd", "ef")

Contoh: remove(("ab", "cd", "ef"), 4)

Hasil: ("ab", "cd", "ef")

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

Jika nilai parameter adalah urutan kosong, kembalikan true, jika tidak kembalikan false.

Contoh: empty(remove(("ab", "cd"), 1))

Hasil: false

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

Jika nilai parameter bukan urutan kosong, kembalikan true, jika tidak kembalikan false.

Contoh: exists(remove(("ab"), 1))

Hasil: false

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

Kembalikan nilai unik yang berbeda.

Contoh: distinct-values((1, 2, 3, 1, 2))

Hasil: (1, 2, 3)

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

Kembalikan urutan baru yang dibuat oleh parameter item - serta masukkan nilai parameter inserts di posisi yang ditentukan oleh parameter pos.

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

Hasil: ("gh", "ab", "cd")

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

Hasil: ("gh", "ab", "cd")

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

Hasil: ("ab", "gh", "cd")

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

Hasil: ("ab", "cd", "gh")

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

Kembalikan urutan balik item yang ditentukan.

Contoh: reverse(("ab", "cd", "ef"))

Hasil: ("ef", "cd", "ab")

Contoh: reverse(("ab"))

Hasil: ("ab")

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

Kembalikan urutan item yang ditentukan oleh parameter start, panjang urutan ditentukan oleh parameter len.

Lokasi pertama item adalah 1.

Contoh: subsequence(($item1, $item2, $item3,...), 3)

结果:($item3, ...)

例子:subsequence(($item1, $item2, $item3, ...), 2, 2)

结果:($item2, $item3)

fn:unordered((item,item,...)) 依据实现决定的顺序来返回项目。

测试序列容量的函数

Nama Keterangan
fn:zero-or-one(item,item,...) 如果参数包含零个或一个项目,则返回参数,否则生成错误。
fn:one-or-more(item,item,...) 如果参数包含一个或多个项目,则返回参数,否则生成错误。
fn:exactly-one(item,item,...) 如果参数包含一个项目,则返回参数,否则生成错误。

Equals, Union, Intersection and Except

Nama Keterangan
fn:deep-equal(param1,param2,collation) 如果 param1 和 param2 与彼此相等(deep-equal),则返回 true,否则返回 false。

合计函数

Nama Keterangan
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,...) 返回指定节点集中每个节点的数值的总和。

生成序列的函数

Nama Keterangan
fn:id((string,string,...),node) 返回元素节点序列,这些节点的 ID 值等于 string 参数中指定的一个或多个值。
fn:idref((string,string,...),node) 返回元素或属性节点序列,这些节点的 IDREF 值等于 string 参数中指定的一个或多个值。
fn:doc(URI)  
fn:doc-available(URI) Jika fungsi doc() mengembalikan node dokumen, kembalikan true, jika tidak kembalikan false.
  • fn:collection()
  • fn:collection(string)
 

Atas

Fungsi konteks

Nama Keterangan
fn:position()

Kembalikan posisi index node yang sedang diproses.

Contoh: //book[position()<=3]

Hasil: Memilih tiga elemen book pertama

fn:last()

Kembalikan jumlah item dalam daftar node yang diproses.

Contoh: //book[last()]

Hasil: Memilih elemen book terakhir

fn:current-dateTime() Kembalikan dateTime saat ini (dengan zona waktu).
fn:current-date() Kembalikan tanggal saat ini (dengan zona waktu).
fn:current-time() Kembalikan waktu saat ini (dengan zona waktu).
fn:implicit-timezone() Kembalikan nilai zona waktu yang diam.
fn:default-collation() Kembalikan nilai penghubung baku.
fn:static-base-uri() Kembalikan nilai base-uri.

Atas

Fungsi XSLT

Selain itu, ada juga fungsi XSLT bawaan berikut ini:

Nama Deskripsi
current() Kembalikan set node yang hanya terdiri dari node saat ini.
document() Digunakan untuk mengakses node dalam dokumen XML luar.
element-available() Deteksi apakah pemroses XSLT mendukung elemen yang ditentukan.
format-number() Mengubah angka menjadi string.
function-available() Deteksi apakah pemroses XSLT mendukung fungsi yang ditentukan.
generate-id() Kembalikan nilai string yang mengidentifikasi node yang ditentukan.
key() Mengambil elemen yang sebelumnya ditandai dengan kalimat <xsl:key>.
node-set Mengubah pohon menjadi set node. Set node yang dihasilkan selalu mengandung satu node dan adalah akar pohon.
system-property() Kembalikan nilai properti sistem.
unparsed-entity-uri() Kembalikan URI entiti yang belum diurai.

Atas