Home » XML » Referensi XML : Fungsi XPath, XQuery dan XSLT

Referensi XML : Fungsi XPath, XQuery dan XSLT

by Hanifah Nurbaeti
by Hanifah Nurbaeti

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

Fungsi Referensi

  • Accessor
  • Error and Trace
  • Numeric
  • String
  • AnyURI
  • Boolean
  • Duration/Date/Time
  • QName
  • Node
  • Sequence
  • Context

Awalan default untuk namespace fungsi adalah fn:
URI dari namespace fungsi adalah: http://www.w3.org/2005/xpath-functions

Tip: Fungsi sering disebut dengan fn: prefix, seperti fn: string (). Namun, karena fn: adalah awalan default namespace, nama fungsi tidak perlu diawali saat dipanggil.

Fungsi Accessor

NamaDeskrispsi
fn:node-name(node)Mengembalikan nama node dari node argumen
fn:nilled(node)Mengembalikan nilai Boolean yang menunjukkan apakah node argumen diisi
fn:data(item.item,…)Mengambil urutan item dan mengembalikan urutan nilai atom
fn:base-uri()
fn:base-uri(node)
Mengembalikan nilai properti basis-uri dari node saat ini atau yang ditentukan
fn:document-uri(node)Mengembalikan nilai properti document-uri untuk node yang ditentukan

Fungsi Error and Trace

NamaDeskripsi
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: Mengembalikan http://example.com/test#toohigh dan string “Error: price is too high” ke lingkungan pemrosesan eksternal
fn:trace(value,label)Digunakan untuk men-debug kueri

Nilai Fungsi Numeric

NamaDeskripsi
fn:number(arg)Mengembalikan nilai numerik dari argumen. Argumennya bisa berupa boolean, string, atau node-set

Example: number(‘100’)
Result: 100
fn:abs(num)Mengembalikan nilai absolut dari argument

Example: abs(3.14)
Result: 3.14

Example: abs(-3.14)
Result: 3.14
fn:ceiling(num)Mengembalikan bilangan bulat terkecil yang lebih besar dari argumen bilangan

Example: ceiling(3.14)
Result: 4
fn:floor(num)Mengembalikan bilangan bulat terbesar yang tidak lebih besar dari argumen angka

Example: floor(3.14)
Result: 3
fn:round(num)Membulatkan argumen angka ke bilangan bulat terdekat

Example: round(3.14)
Result: 3
fn:round-half-to-even()Example: round-half-to-even(0.5)
Result: 0

Example: round-half-to-even(1.5)
Result: 2

Example: round-half-to-even(2.5)
Result: 2

Fungsi String

NamaDeskripsi
fn:string(arg)Mengembalikan nilai string dari argumen. Argumennya bisa berupa angka, boolean, atau kumpulan node

Example: string(314)
Result: “314”
fn:codepoints-to-string((int,int,…))Membuat string dari urutan poin kode Unicode Standard

Example: codepoints-to-string((84, 104, 233, 114, 232, 115, 101))
Result: ‘Thérèse’
fn:string-to-codepoints(string)Mengembalikan urutan poin kode standar Unicode dari string

Example: string-to-codepoints(“Thérèse”)
Result: (84, 104, 233, 114, 232, 115, 101)
fn:codepoint-equal(comp1,comp2)Mengembalikan nilai true jika nilai comp1 sama dengan nilai comp2, sesuai dengan pemeriksaan titik kode Unicode (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), jika tidak maka mengembalikan salah
fn:compare(comp1,comp2)
fn:compare(comp1,comp2,collation)
Mengembalikan -1 jika comp1 lebih kecil dari comp2, 0 jika comp1 sama dengan comp2, atau 1 jika comp1 lebih besar dari comp2 (menurut aturan pemeriksaan yang digunakan)

Example: compare(‘ghi’, ‘ghi’)
Result: 0
fn:concat(string,string,…)Menampilkan penggabungan string

Example: concat(‘XPath ‘,’is ‘,’FUN!’)
Result: ‘XPath is FUN!’
fn:string-join((string,string,…),sep)Mengembalikan string yang dibuat dengan menggabungkan argumen string dan menggunakan argumen sep sebagai pemisah

Example: string-join((‘We’, ‘are’, ‘having’, ‘fun!’), ‘ ‘)
Result: ‘ We are having fun! ‘

Example: string-join((‘We’, ‘are’, ‘having’, ‘fun!’))
Result: ‘Wearehavingfun!’

Example:string-join((), ‘sep’)
Result: ”
fn:substring(string,start,len)
fn:substring(string,start)
Mengembalikan substring dari posisi awal ke panjang yang ditentukan. Indeks karakter pertama adalah 1. Jika panjang dihilangkan, substring akan dikembalikan dari posisi awal hingga akhir

Example: substring(‘Beatles’,1,4)
Result: ‘Beat’

Example: substring(‘Beatles’,2)
Result: ‘eatles’
fn:string-length(string)
fn:string-length()
Mengembalikan panjang string yang ditentukan. Jika tidak ada argumen string, ia mengembalikan panjang nilai string dari node saat ini

Example: string-length(‘Beatles’)
Result: 7
fn:normalize-space(string)
fn:normalize-space()
Menghapus spasi di depan dan di belakang dari string yang ditentukan, dan mengganti semua urutan internal spasi dengan satu dan mengembalikan hasilnya. Jika tidak ada argumen string, ia melakukan hal yang sama pada node saat ini

Example: normalize-space(‘ The   XML ‘)
Result: ‘The XML’
fn:normalize-unicode() –
fn:upper-case(string)Mengonversi argumen string menjadi huruf besar

Example: upper-case(‘The XML’)
Result: ‘THE XML’
fn:lower-case(string)Mengonversi argumen string menjadi huruf kecil

Example: lower-case(‘The XML’)
Result: ‘the xml’
fn:translate(string1,string2,string3)Mengonversi string1 dengan mengganti karakter di string2 dengan karakter di string3

Example: translate(’12:30′,’30’,’45’)
Result: ’12:45′

Example: translate(’12:30′,’03’,’54’)
Result: ’12:45′

Example: translate(’12:30′,’0123′,’abcd’)
Result: ‘bc:da’
fn:escape-uri(stringURI,esc-res)Example: escape-uri(“http://example.com/test#car”, true())
Result: “http%3A%2F%2Fexample.com%2Ftest#car”

Example: escape-uri(“http://example.com/test#car”, false())
Result: “http://example.com/test#car”

Example: escape-uri (“http://example.com/~bébé”, false())
Result: “http://example.com/~b%C3%A9b%C3%A9”
fn:contains(string1,string2)Mengembalikan nilai benar jika string1 berisi string2, jika tidak, mengembalikan salah

Example: contains(‘XML’,’XM’)
Result: true
fn:starts-with(string1,string2)Mengembalikan nilai benar jika string1 dimulai dengan string2, jika tidak, mengembalikan salah

Example: starts-with(‘XML’,’X’)
Result: true
fn:ends-with(string1,string2)Mengembalikan nilai benar jika string1 diakhiri dengan string2, jika tidak, mengembalikan salah

Example: ends-with(‘XML’,’X’)
Result: false
fn:substring-before(string1,string2)Mengembalikan awal string1 sebelum string2 terjadi di dalamnya

Example: substring-before(’12/10′,’/’)
Result: ’12’
fn:substring-after(string1,string2)Mengembalikan sisa string1 setelah string2 terjadi di dalamnya

Example: substring-after(’12/10′,’/’)
Result: ’10’
fn:matches(string,pattern)Mengembalikan nilai benar jika argumen string cocok dengan pola, jika tidak, mengembalikan nilai salah

Example: matches(“Merano”, “ran”)
Result: true
fn:replace(string,pattern,replace)Mengembalikan string yang dibuat dengan mengganti pola yang diberikan dengan argumen ganti

Example: replace(“Bella Italia”, “l”, “*”)
Result: ‘Be**a Ita*ia’

Example: replace(“Bella Italia”, “l”, “”)
Result: ‘Bea Itaia’
fn:tokenize(string,pattern)Example: tokenize(“XPath is fun”, “\s+”)
Result: (“XPath”, “is”, “fun”)

Fungsi untuk anyURI

NameDeskripsi
fn:resolve-uri(relative,base) –

Fungsi Nilai Boolean Values

NameDeskripsi
fn:boolean(arg)Mengembalikan nilai boolean untuk angka, string, atau kumpulan node
fn:not(arg)Argumennya pertama-tama direduksi menjadi nilai boolean dengan menerapkan fungsi boolean (). Mengembalikan nilai true jika nilai boolean false dan false jika nilai boolean true

Example: not(true())
Result: false
fn:true()Mengembalikan nilai boolean true

Example: true()
Result: true
fn:false()Mengembalikan nilai boolean false

Example: false()
Result: false

Fungsi Durations, Dates and Times

Fungsi Ekstraksi Komponen pada Durasi, Tanggal dan Waktu

NameDeskripsi
fn:dateTime(date,time)Mengubah argumen menjadi tanggal dan waktu
fn:years-from-duration(datetimedur)Mengembalikan integer yang mewakili komponen tahun dalam representasi leksikal kanonik dari nilai argumen
fn:months-from-duration(datetimedur)Mengembalikan integer yang mewakili komponen bulan dalam representasi leksikal kanonik dari nilai argumen
fn:days-from-duration(datetimedur)Mengembalikan integer yang mewakili komponen hari dalam representasi leksikal kanonik dari nilai argumen
fn:hours-from-duration(datetimedur)Mengembalikan integer yang mewakili komponen jam dalam representasi leksikal kanonik dari nilai argumen
fn:minutes-from-duration(datetimedur)Mengembalikan integer yang mewakili komponen menit dalam representasi leksikal kanonik dari nilai argumen
fn:seconds-from-duration(datetimedur)Mengembalikan desimal yang mewakili komponen detik dalam representasi leksikal kanonik dari nilai argumen
fn:year-from-dateTime(datetime)Mengembalikan integer yang mewakili komponen tahun dalam nilai lokal dari argumen

Example: year-from-dateTime(xs:dateTime(“2005-01-10T12:30-04:10”))
Result: 2005
fn:month-from-dateTime(datetime)Mengembalikan integer yang mewakili komponen bulan dalam nilai lokal dari argumen

Example: month-from-dateTime(xs:dateTime(“2005-01-10T12:30-04:10”))
Result: 01
fn:day-from-dateTime(datetime)Mengembalikan integer yang mewakili komponen hari dalam nilai lokal dari argumen

Example: day-from-dateTime(xs:dateTime(“2005-01-10T12:30-04:10”))
Result: 10
fn:hours-from-dateTime(datetime)Mengembalikan integer yang mewakili komponen jam dalam nilai lokal dari argumen

Example: hours-from-dateTime(xs:dateTime(“2005-01-10T12:30-04:10”))
Result: 12
fn:minutes-from-dateTime(datetime)Mengembalikan integer yang mewakili komponen menit dalam nilai lokal dari argumen

Example: minutes-from-dateTime(xs:dateTime(“2005-01-10T12:30-04:10”))
Result: 30
fn:seconds-from-dateTime(datetime)Mengembalikan desimal yang mewakili komponen detik dalam nilai lokal dari argumen

Example: seconds-from-dateTime(xs:dateTime(“2005-01-10T12:30:00-04:10”))
Result: 0
fn:timezone-from-dateTime(datetime)Mengembalikan desimal yang mewakili komponen detik dalam nilai lokal dari argumen
fn:year-from-date(date)Mengembalikan integer yang mewakili tahun dalam nilai lokal dari argumen

Example: year-from-date(xs:date(“2005-04-23”))
Result: 2005
fn:month-from-date(date)Mengembalikan integer yang mewakili bulan dalam nilai lokal dari argumen

Example: month-from-date(xs:date(“2005-04-23”))
Result: 4
fn:day-from-date(date)Mengembalikan bilangan bulat yang mewakili hari dalam nilai lokal dari argumen

Example: day-from-date(xs:date(“2005-04-23”))
Result: 23
fn:timezone-from-date(date)Mengembalikan komponen zona waktu dari argumen jika ada
fn:hours-from-time(time)Mengembalikan integer yang mewakili komponen jam dalam nilai lokal dari argumen

Example: hours-from-time(xs:time(“10:22:00”))
Result: 10
fn:minutes-from-time(time)Mengembalikan integer yang mewakili komponen menit dalam nilai lokal dari argumen

Example: minutes-from-time(xs:time(“10:22:00”))
Result: 22
fn:seconds-from-time(time)Mengembalikan integer yang mewakili komponen detik dalam nilai lokal dari argumen

Example: seconds-from-time(xs:time(“10:22:00”))
Result: 0
fn:timezone-from-time(time)Mengembalikan komponen zona waktu dari argumen jika ada
fn:adjust-dateTime-to-timezone(datetime,timezone)Jika argumen zona waktu kosong, ia mengembalikan dateTime tanpa zona waktu. Jika tidak, ini mengembalikan dateTime dengan zona waktu
fn:adjust-date-to-timezone(date,timezone)Jika argumen zona waktu kosong, ia mengembalikan tanggal tanpa zona waktu. Jika tidak, ini mengembalikan tanggal dengan zona waktu
fn:adjust-time-to-timezone(time,timezone)Jika argumen zona waktu kosong, ia mengembalikan waktu tanpa zona waktu. Jika tidak, ini mengembalikan waktu dengan zona waktu

Fungsi Terkait QNames

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

Fungsi Node

NameDeskripsi
fn:name()
fn:name(nodeset)
Mengembalikan nama node saat ini atau node pertama di kumpulan node yang ditentukan
fn:local-name()
fn:local-name(nodeset)
Mengembalikan nama node saat ini atau node pertama di kumpulan node yang ditentukan – tanpa awalan namespace
fn:namespace-uri()
fn:namespace-uri(nodeset)
Mengembalikan URI namespace dari node saat ini atau node pertama dalam kumpulan node yang ditentukan
fn:lang(lang)Mengembalikan nilai benar jika bahasa node saat ini cocok dengan bahasa bahasa yang ditentukan

Example: Lang(“en”) is true for
<p xml:lang=”en”>…</p>

Example: Lang(“de”) is false for
<p xml:lang=”en”>…</p>
fn:root()
fn:root(node)
Mengembalikan akar pohon tempat simpul saat ini atau milik yang ditentukan. Ini biasanya akan menjadi node dokumen

Fungsi Sequence

Fungsi Umum pada Sequence

NameDeskripsi
fn:index-of((item,item,…),searchitem)Mengembalikan posisi dalam urutan item yang sama dengan argumen item pencarian

Example: index-of ((15, 40, 25, 40, 10), 40)
Result: (2, 4)

Example: index-of ((“a”, “dog”, “and”, “a”, “duck”), “a”)
Result (1, 4)

Example: index-of ((15, 40, 25, 40, 10), 18)
Result: ()
fn:remove((item,item,…),position)Mengembalikan urutan baru yang dibangun dari nilai argumen item – dengan item yang ditentukan oleh argumen posisi dihapus

Example: remove((“ab”, “cd”, “ef”), 0)
Result: (“ab”, “cd”, “ef”)

Example: remove((“ab”, “cd”, “ef”), 1)
Result: (“cd”, “ef”)

Example: remove((“ab”, “cd”, “ef”), 4)
Result: (“ab”, “cd”, “ef”)
fn:empty(item,item,…)Mengembalikan nilai benar jika nilai argumen adalah urutan kosong, jika tidak maka mengembalikan salah

Example: empty(remove((“ab”, “cd”), 1))
Result: false
fn:exists(item,item,…)Mengembalikan nilai benar jika nilai argumen BUKAN merupakan urutan kosong, jika tidak maka mengembalikan salah

Example: exists(remove((“ab”), 1))
Result: false
fn:distinct-values((item,item,…),collation)Hanya mengembalikan nilai yang berbeda (berbeda)

Example: distinct-values((1, 2, 3, 1, 2))
Result: (1, 2, 3)
fn:insert-before((item,item,…),pos,inserts)Mengembalikan urutan baru yang dibangun dari nilai argumen item – dengan nilai argumen sisipan yang disisipkan dalam posisi yang ditentukan oleh argumen pos

Example: insert-before((“ab”, “cd”), 0, “gh”)
Result: (“gh”, “ab”, “cd”)

Example: insert-before((“ab”, “cd”), 1, “gh”)
Result: (“gh”, “ab”, “cd”)

Example: insert-before((“ab”, “cd”), 2, “gh”)
Result: (“ab”, “gh”, “cd”)

Example: insert-before((“ab”, “cd”), 5, “gh”)
Result: (“ab”, “cd”, “gh”)
fn:reverse((item,item,…))Mengembalikan urutan terbalik dari item yang ditentukan

Example: reverse((“ab”, “cd”, “ef”))
Result: (“ef”, “cd”, “ab”)

Example: reverse((“ab”))
Result: (“ab”)
fn:subsequence((item,item,…),start,len)Mengembalikan urutan item dari posisi yang ditentukan oleh argumen awal dan melanjutkan untuk jumlah item yang ditentukan oleh argumen len. Item pertama berada di posisi 1

Example: subsequence(($item1, $item2, $item3,…), 3)
Result: ($item3, …)

Example: subsequence(($item1, $item2, $item3, …), 2, 2)
Result: ($item2, $item3)
fn:unordered((item,item,…))Mengembalikan item dalam urutan dependen implementasi

Fungsi Yang Menguji Kardinalitas Sequence

NameDeskripsi
fn:zero-or-one(item,item,…)Mengembalikan argumen jika berisi nol atau satu item, jika tidak maka menimbulkan kesalahan
fn:one-or-more(item,item,…)Mengembalikan argumen jika berisi satu atau lebih item, jika tidak maka menimbulkan kesalahan
fn:exactly-one(item,item,…)Mengembalikan argumen jika berisi tepat satu item, jika tidak maka menimbulkan kesalahan

Equals, Union, Intersection and Except

NameDeskripsi
fn:deep-equal(param1,param2,collation)Mengembalikan nilai benar jika param1 dan param2 sama dalam satu sama lain, jika tidak, mengembalikan salah

Fungsi Aggregate

NameDeskripsi
fn:count((item,item,…))Mengembalikan jumlah node
fn:avg((arg,arg,…))Mengembalikan rata-rata nilai argumen

Example: avg((1,2,3))
Result: 2
fn:max((arg,arg,…))Mengembalikan argumen yang lebih besar dari yang lain

Example: max((1,2,3))
Result: 3

Example: max((‘a’, ‘k’))
Result: ‘k’
fn:min((arg,arg,…))Mengembalikan argumen yang kurang dari yang lain

Example: min((1,2,3))
Result: 1

Example: min((‘a’, ‘k’))
Result: ‘a’
fn:sum(arg,arg,…)Mengembalikan jumlah nilai numerik setiap node di kumpulan node yang ditentukan

Fungsi yang Menghasilkan Sequence

NameDeskripsi
fn:id((string,string,…),node)Mengembalikan urutan node elemen yang memiliki nilai ID sama dengan nilai dari satu atau lebih nilai yang ditentukan dalam argumen string
fn:idref((string,string,…),node)Mengembalikan urutan elemen atau node atribut yang memiliki nilai IDREF sama dengan nilai dari satu atau lebih nilai yang ditentukan dalam argumen string
fn:doc(URI) –
fn:doc-available(URI)Mengembalikan nilai benar jika fungsi doc () mengembalikan simpul dokumen, jika tidak maka mengembalikan salah
fn:collection()
fn:collection(string)
 –

Fungsi Konteks

NameDeskripsi
fn:position()Mengembalikan posisi indeks dari node yang saat ini sedang diproses

Example: //book[position()<=3]
Result: Selects the first three book elements
fn:last()Mengembalikan jumlah item dalam daftar node yang diproses

Example: //book[last()]
Result: Selects the last book element
fn:current-dateTime()Mengembalikan dateTime saat ini (dengan zona waktu)
fn:current-date()Mengembalikan tanggal sekarang (dengan zona waktu)
fn:current-time()Mengembalikan waktu saat ini (dengan zona waktu)
fn:implicit-timezone()Mengembalikan nilai zona waktu implisit
fn:default-collation()Mengembalikan nilai pemeriksaan default
fn:static-base-uri()Mengembalikan nilai basis-uri

Fungsi XSLT

Selain itu, ada fungsi XSLT bawaan berikut:

NameDeskripsi
current()Mengembalikan node saat ini
document()Digunakan untuk mengakses node dalam dokumen XML eksternal
element-available()Menguji apakah elemen yang ditentukan didukung oleh prosesor XSLT
format-number()Mengonversi angka menjadi string
function-available()Menguji apakah fungsi yang ditentukan didukung oleh prosesor XSLT
generate-id()Mengembalikan nilai string yang secara unik mengidentifikasi node tertentu
key()Mengembalikan kumpulan node menggunakan indeks yang ditentukan oleh elemen <xsl:key>
system-property()Mengembalikan nilai properti sistem
unparsed-entity-uri()Mengembalikan URI dari entitas yang tidak diurai(unparsed)

You may also like