XSLT/XPath funksiyalari


XSLT 2.0, XPath 2.0 va XQuery 1.0 bir xil funksiyalar kutubxonasidan foydalanadi.


Funksiyalar ma’lumotnomasi

Funksiyalar nomlar fazosi uchun standart prefiks — fn:
Funksiyalar nomlar fazosining URI’si: http://www.w3.org/2005/xpath-functions

Maslahat: Funksiyalar ko‘pincha fn: prefiksi bilan chaqiriladi, masalan, fn:string(). Biroq fn: nomlar fazosining standart prefiksi bo‘lgani uchun funksiyalarni chaqirishda ularning nomiga prefiks qo‘shish shart emas.

Accessor (murojaat) funksiyalari

Name Tavsif
fn:node-name(node) Argument tugunining tugun nomini (node-name) qaytaradi
fn:nilled(node) Argument tuguni nilled (bo‘sh deb belgilangan) ekanligini bildiruvchi Boolean qiymat qaytaradi
fn:data(item.item,...) Elementlar ketma-ketligini qabul qilib, atomar qiymatlar ketma-ketligini qaytaradi
fn:base-uri()
fn:base-uri(node)
Joriy yoki ko‘rsatilgan tugunning base-uri xususiyati qiymatini qaytaradi
fn:document-uri(node) Ko‘rsatilgan tugun uchun document-uri xususiyati qiymatini qaytaradi

Xatolar va kuzatuv (trace) funksiyalari

Name Tavsif
fn:error()
fn:error(error)
fn:error(error,description)
fn:error(error,description,error-object)
Misol: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')

Natija: tashqi qayta ishlash muhitiga http://example.com/test#toohigh va "Error: Price is too high" stringini qaytaradi

fn:trace(value,label) So‘rovlarni debug qilish (nosozliklarni aniqlash) uchun ishlatiladi


Sonli qiymatlar ustidagi funksiyalar

Name Tavsif
fn:number(arg) Argumentning sonli qiymatini qaytaradi. Argument boolean, string yoki tugunlar to‘plami (node-set) bo‘lishi mumkin

Misol: number('100')
Natija: 100

fn:abs(num) Argumentning mutlaq qiymatini qaytaradi

Misol: abs(3.14)
Natija: 3.14

Misol: abs(-3.14)
Natija: 3.14

fn:ceiling(num) Son argumentidan katta bo‘lgan eng kichik butun sonni qaytaradi

Misol: ceiling(3.14)
Natija: 4

fn:floor(num) Son argumentidan katta bo‘lmagan eng katta butun sonni qaytaradi

Misol: floor(3.14)
Natija: 3

fn:round(num) Son argumentini eng yaqin butun songacha yaxlitlaydi

Misol: round(3.14)
Natija: 3

fn:round-half-to-even() Misol: round-half-to-even(0.5)
Natija: 0

Misol: round-half-to-even(1.5)
Natija: 2

Misol: round-half-to-even(2.5)
Natija: 2

Stringlar ustidagi funksiyalar

Name Tavsif
fn:string(arg) Argumentning string qiymatini qaytaradi. Argument son, boolean yoki tugunlar to‘plami (node-set) bo‘lishi mumkin

Misol: string(314)
Natija: "314"

fn:codepoints-to-string((int,int,...)) Unicode standarti kod nuqtalari (code points) ketma-ketligidan string yaratadi

Misol: codepoints-to-string((84, 104, 233, 114, 232, 115, 101))
Natija: 'Thérèse'

fn:string-to-codepoints(string) Stringdan Unicode standarti kod nuqtalari ketma-ketligini qaytaradi

Misol: string-to-codepoints("Thérèse")
Natija: (84, 104, 233, 114, 232, 115, 101)

fn:codepoint-equal(comp1,comp2) Unicode kod nuqtalari bo‘yicha taqqoslash qoidasiga (collation) (http://www.w3.org/2005/02/xpath-functions/collation/codepoint) ko‘ra comp1 qiymati comp2 qiymatiga teng bo‘lsa, true, aks holda false qaytaradi
fn:compare(comp1,comp2)
fn:compare(comp1,comp2,collation)
Agar comp1 comp2 dan kichik bo‘lsa -1, comp1 comp2 ga teng bo‘lsa 0, comp1 comp2 dan katta bo‘lsa 1 qaytaradi (ishlatilayotgan taqqoslash qoidasi (collation) bo‘yicha)

Misol: compare('ghi', 'ghi')
Natija: 0

fn:concat(string,string,...) Stringlarni birlashtirish (konkatenatsiya) natijasini qaytaradi

Misol: concat('XPath ','is ','FUN!')
Natija: 'XPath is FUN!'

fn:string-join((string,string,...),sep) String argumentlarini sep argumentini ajratuvchi sifatida ishlatib birlashtirish orqali hosil qilingan stringni qaytaradi

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

Misol: string-join(('We', 'are', 'having', 'fun!'))
Natija: 'Wearehavingfun!'

Misol:string-join((), 'sep')
Natija: ''

fn:substring(string,start,len)
fn:substring(string,start)
Boshlang‘ich pozitsiyadan ko‘rsatilgan uzunlikkacha bo‘lgan qism stringni qaytaradi. Birinchi belgining indeksi 1 ga teng. Agar uzunlik ko‘rsatilmasa, boshlang‘ich pozitsiyadan oxirigacha bo‘lgan qism stringni qaytaradi

Misol: substring('Beatles',1,4)
Natija: 'Beat'

Misol: substring('Beatles',2)
Natija: 'eatles'

fn:string-length(string)
fn:string-length()
Ko‘rsatilgan stringning uzunligini qaytaradi. Agar string argumenti bo‘lmasa, joriy tugun string qiymatining uzunligini qaytaradi

Misol: string-length('Beatles')
Natija: 7

fn:normalize-space(string)
fn:normalize-space()
Ko‘rsatilgan stringning boshidagi va oxiridagi bo‘sh joylarni olib tashlaydi, ichidagi barcha bo‘sh joylar ketma-ketliklarini bitta bo‘sh joy bilan almashtiradi va natijani qaytaradi. Agar string argumenti bo‘lmasa, xuddi shu amalni joriy tugun ustida bajaradi

Misol: normalize-space(' The XML ')
Natija: 'The XML'

fn:normalize-unicode()  
fn:upper-case(string) String argumentini katta harflarga o‘tkazadi

Misol: upper-case('The XML')
Natija: 'THE XML'

fn:lower-case(string) String argumentini kichik harflarga o‘tkazadi

Misol: lower-case('The XML')
Natija: 'the xml'

fn:translate(string1,string2,string3) string1 dagi string2 belgilarini string3 belgilari bilan almashtirib, string1 ni o‘zgartiradi

Misol: translate('12:30','30','45')
Natija: '12:45'

Misol: translate('12:30','03','54')
Natija: '12:45'

Misol: translate('12:30','0123','abcd')
Natija: 'bc:da'

fn:escape-uri(stringURI,esc-res) Misol: escape-uri("http://example.com/test#car", true())
Natija: "http%3A%2F%2Fexample.com%2Ftest#car"

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

Misol: escape-uri ("http://example.com/~bébé", false())
Natija: "http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2) Agar string1 string2 ni o‘z ichiga olsa, true, aks holda false qaytaradi

Misol: contains('XML','XM')
Natija: true

fn:starts-with(string1,string2) Agar string1 string2 bilan boshlansa, true, aks holda false qaytaradi

Misol: starts-with('XML','X')
Natija: true

fn:ends-with(string1,string2) Agar string1 string2 bilan tugasa, true, aks holda false qaytaradi

Misol: ends-with('XML','X')
Natija: false

fn:substring-before(string1,string2) string1 ning string2 uchraydigan joydan oldingi boshlang‘ich qismini qaytaradi

Misol: substring-before('12/10','/')
Natija: '12'

fn:substring-after(string1,string2) string1 ning string2 uchragan joydan keyingi qolgan qismini qaytaradi

Misol: substring-after('12/10','/')
Natija: '10'

fn:matches(string,pattern) Agar string argumenti shablonga (pattern) mos kelsa, true, aks holda false qaytaradi

Misol: matches("Merano", "ran")
Natija: true

fn:replace(string,pattern,replace) Berilgan shablonni (pattern) replace argumenti bilan almashtirish orqali hosil qilingan stringni qaytaradi

Misol: replace("Bella Italia", "l", "*")
Natija: 'Be**a Ita*ia'

Misol: replace("Bella Italia", "l", "")
Natija: 'Bea Itaia'

fn:tokenize(string,pattern) Misol: tokenize("XPath is fun", "\s+")
Natija: ("XPath", "is", "fun")

anyURI uchun funksiyalar

Name Tavsif
fn:resolve-uri(relative,base)  

Boolean qiymatlar ustidagi funksiyalar

Name Tavsif
fn:boolean(arg) Son, string yoki tugunlar to‘plami (node-set) uchun boolean qiymat qaytaradi
fn:not(arg) Argument avval boolean() funksiyasi qo‘llanib, boolean qiymatga keltiriladi. Agar boolean qiymat false bo‘lsa, true, agar true bo‘lsa, false qaytaradi

Misol: not(true())
Natija: false

fn:true() true boolean qiymatini qaytaradi

Misol: true()
Natija: true

fn:false() false boolean qiymatini qaytaradi

Misol: false()
Natija: false

Davomiylik, sana va vaqt ustidagi funksiyalar

Davomiylik, sana va vaqtdan komponentlarni ajratib olish funksiyalari

Name Tavsif
fn:dateTime(date,time) Argumentlarni sana va vaqtga aylantiradi
fn:years-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi yillar komponentini ifodalovchi butun sonni qaytaradi
fn:months-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi oylar komponentini ifodalovchi butun sonni qaytaradi
fn:days-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi kunlar komponentini ifodalovchi butun sonni qaytaradi
fn:hours-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi soatlar komponentini ifodalovchi butun sonni qaytaradi
fn:minutes-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi daqiqalar komponentini ifodalovchi butun sonni qaytaradi
fn:seconds-from-duration(datetimedur) Argument qiymatining kanonik leksik ko‘rinishidagi soniyalar komponentini ifodalovchi o‘nlik sonni (decimal) qaytaradi
fn:year-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi yil komponentini ifodalovchi butun sonni qaytaradi

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

fn:month-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi oy komponentini ifodalovchi butun sonni qaytaradi

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

fn:day-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi kun komponentini ifodalovchi butun sonni qaytaradi

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

fn:hours-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi soatlar komponentini ifodalovchi butun sonni qaytaradi

Misol: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
Natija: 12

fn:minutes-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi daqiqalar komponentini ifodalovchi butun sonni qaytaradi

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

fn:seconds-from-dateTime(datetime) Argumentning lokallashtirilgan qiymatidagi soniyalar komponentini ifodalovchi o‘nlik sonni (decimal) qaytaradi

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

fn:timezone-from-dateTime(datetime) Agar mavjud bo‘lsa, argumentning vaqt zonasi komponentini qaytaradi
fn:year-from-date(date) Argumentning lokallashtirilgan qiymatidagi yilni ifodalovchi butun sonni qaytaradi

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

fn:month-from-date(date) Argumentning lokallashtirilgan qiymatidagi oyni ifodalovchi butun sonni qaytaradi

Misol: month-from-date(xs:date("2005-04-23"))
Natija: 4

fn:day-from-date(date) Argumentning lokallashtirilgan qiymatidagi kunni ifodalovchi butun sonni qaytaradi

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

fn:timezone-from-date(date) Agar mavjud bo‘lsa, argumentning vaqt zonasi komponentini qaytaradi
fn:hours-from-time(time) Argumentning lokallashtirilgan qiymatidagi soatlar komponentini ifodalovchi butun sonni qaytaradi

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

fn:minutes-from-time(time) Argumentning lokallashtirilgan qiymatidagi daqiqalar komponentini ifodalovchi butun sonni qaytaradi

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

fn:seconds-from-time(time) Argumentning lokallashtirilgan qiymatidagi soniyalar komponentini ifodalovchi butun sonni qaytaradi

Misol: seconds-from-time(xs:time("10:22:00"))
Natija: 0

fn:timezone-from-time(time) Agar mavjud bo‘lsa, argumentning vaqt zonasi komponentini qaytaradi
fn:adjust-dateTime-to-timezone(datetime,timezone) Agar timezone argumenti bo‘sh bo‘lsa, vaqt zonasisiz dateTime qaytaradi. Aks holda vaqt zonasi ko‘rsatilgan dateTime qaytaradi
fn:adjust-date-to-timezone(date,timezone) Agar timezone argumenti bo‘sh bo‘lsa, vaqt zonasisiz sana (date) qaytaradi. Aks holda vaqt zonasi ko‘rsatilgan sana qaytaradi
fn:adjust-time-to-timezone(time,timezone) Agar timezone argumenti bo‘sh bo‘lsa, vaqt zonasisiz vaqt (time) qaytaradi. Aks holda vaqt zonasi ko‘rsatilgan vaqt qaytaradi

QName’larga oid funksiyalar

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

Tugunlar ustidagi funksiyalar

Name Tavsif
fn:name()
fn:name(nodeset)
Joriy tugun yoki ko‘rsatilgan tugunlar to‘plamidagi birinchi tugun nomini qaytaradi
fn:local-name()
fn:local-name(nodeset)
Joriy tugun yoki ko‘rsatilgan tugunlar to‘plamidagi birinchi tugun nomini nomlar fazosi prefiksisiz qaytaradi
fn:namespace-uri()
fn:namespace-uri(nodeset)
Joriy tugun yoki ko‘rsatilgan tugunlar to‘plamidagi birinchi tugunning nomlar fazosi URI’sini qaytaradi
fn:lang(lang) Agar joriy tugun tili ko‘rsatilgan til bilan mos kelsa, true qaytaradi

Misol: Lang("en") quyidagi element uchun true
<p xml:lang="en">...</p>

Misol: Lang("de") quyidagi element uchun false
<p xml:lang="en">...</p>

fn:root()
fn:root(node)
Joriy tugun yoki ko‘rsatilgan tugun tegishli bo‘lgan daraxtning ildizini qaytaradi. Bu odatda hujjat tuguni bo‘ladi

Ketma-ketliklar ustidagi funksiyalar

Ketma-ketliklar ustidagi umumiy funksiyalar

Name Tavsif
fn:index-of((item,item,...),searchitem) Elementlar ketma-ketligida searchitem argumentiga teng bo‘lgan elementlarning o‘rinlarini qaytaradi

Misol: index-of ((15, 40, 25, 40, 10), 40)
Natija: (2, 4)

Misol: index-of (("a", "dog", "and", "a", "duck"), "a")
Natija (1, 4)

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

fn:remove((item,item,...),position) item argumentlari qiymatidan tuzilgan yangi ketma-ketlikni qaytaradi — bunda position argumenti ko‘rsatgan element olib tashlanadi

Misol: remove(("ab", "cd", "ef"), 0)
Natija: ("ab", "cd", "ef")

Misol: remove(("ab", "cd", "ef"), 1)
Natija: ("cd", "ef")

Misol: remove(("ab", "cd", "ef"), 4)
Natija: ("ab", "cd", "ef")

fn:empty(item,item,...) Agar argumentlar qiymati bo‘sh ketma-ketlik BO‘LSA, true, aks holda false qaytaradi

Misol: empty(remove(("ab", "cd"), 1))
Natija: false

fn:exists(item,item,...) Agar argumentlar qiymati bo‘sh ketma-ketlik BO‘LMASA, true, aks holda false qaytaradi

Misol: exists(remove(("ab"), 1))
Natija: false

fn:distinct-values((item,item,...),collation) Faqat takrorlanmaydigan (har xil) qiymatlarni qaytaradi

Misol: distinct-values((1, 2, 3, 1, 2))
Natija: (1, 2, 3)

fn:insert-before((item,item,...),pos,inserts) item argumentlari qiymatidan tuzilgan yangi ketma-ketlikni qaytaradi — bunda inserts argumenti qiymati pos argumenti ko‘rsatgan o‘ringa joylashtiriladi

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

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

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

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

fn:reverse((item,item,...)) Ko‘rsatilgan elementlarni teskari tartibda qaytaradi

Misol: reverse(("ab", "cd", "ef"))
Natija: ("ef", "cd", "ab")

Misol: reverse(("ab"))
Natija: ("ab")

fn:subsequence((item,item,...),start,len) start argumenti ko‘rsatgan o‘rindan boshlanib, len argumenti ko‘rsatgan miqdordagi elementlarni o‘z ichiga olgan elementlar ketma-ketligini qaytaradi. Birinchi element 1-o‘rinda joylashgan

Misol: subsequence(($item1, $item2, $item3,...), 3)
Natija: ($item3, ...)

Misol: subsequence(($item1, $item2, $item3, ...), 2, 2)
Natija: ($item2, $item3)

fn:unordered((item,item,...)) Elementlarni implementatsiyaga bog‘liq tartibda qaytaradi

Ketma-ketliklarning kardinalligini (elementlar sonini) tekshiruvchi funksiyalar

Name Tavsif
fn:zero-or-one(item,item,...) Agar argumentda nol yoki bitta element bo‘lsa, argumentni qaytaradi, aks holda xato chiqaradi
fn:one-or-more(item,item,...) Agar argumentda bitta yoki undan ko‘p element bo‘lsa, argumentni qaytaradi, aks holda xato chiqaradi
fn:exactly-one(item,item,...) Agar argumentda aynan bitta element bo‘lsa, argumentni qaytaradi, aks holda xato chiqaradi

Tenglik, birlashma, kesishma va ayirma (Equals, Union, Intersection, Except)

Name Tavsif
fn:deep-equal(param1,param2,collation) Agar param1 va param2 bir-biriga chuqur teng (deep-equal) bo‘lsa, true, aks holda false qaytaradi

Agregat funksiyalar

Name Tavsif
fn:count((item,item,...)) Tugunlar sonini qaytaradi
fn:avg((arg,arg,...)) Argument qiymatlarining o‘rtacha qiymatini qaytaradi

Misol: avg((1,2,3))
Natija: 2

fn:max((arg,arg,...)) Boshqalaridan katta bo‘lgan argumentni qaytaradi

Misol: max((1,2,3))
Natija: 3

Misol: max(('a', 'k'))
Natija: 'k'

fn:min((arg,arg,...)) Boshqalaridan kichik bo‘lgan argumentni qaytaradi

Misol: min((1,2,3))
Natija: 1

Misol: min(('a', 'k'))
Natija: 'a'

fn:sum(arg,arg,...) Ko‘rsatilgan tugunlar to‘plamidagi har bir tugun sonli qiymatlarining yig‘indisini qaytaradi

Ketma-ketliklar hosil qiluvchi funksiyalar

Name Tavsif
fn:id((string,string,...),node) ID qiymati string argumentida ko‘rsatilgan bir yoki bir nechta qiymatlardan biriga teng bo‘lgan element tugunlari ketma-ketligini qaytaradi
fn:idref((string,string,...),node) IDREF qiymati string argumentida ko‘rsatilgan bir yoki bir nechta qiymatlardan biriga teng bo‘lgan element yoki atribut tugunlari ketma-ketligini qaytaradi
fn:doc(URI)  
fn:doc-available(URI) Agar doc() funksiyasi hujjat tugunini qaytarsa, true, aks holda false qaytaradi
fn:collection()
fn:collection(string)
 

Kontekst funksiyalari

Name Tavsif
fn:position() Hozirda qayta ishlanayotgan tugunning indeks o‘rnini qaytaradi

Misol: //book[position()<=3]
Natija: dastlabki uchta book elementini tanlaydi

fn:last() Qayta ishlanayotgan tugunlar ro‘yxatidagi elementlar sonini qaytaradi

Misol: //book[last()]
Natija: oxirgi book elementini tanlaydi

fn:current-dateTime() Joriy dateTime qiymatini (vaqt zonasi bilan) qaytaradi
fn:current-date() Joriy sanani (vaqt zonasi bilan) qaytaradi
fn:current-time() Joriy vaqtni (vaqt zonasi bilan) qaytaradi
fn:implicit-timezone() Yashirin (implicit) vaqt zonasi qiymatini qaytaradi
fn:default-collation() Standart taqqoslash qoidasi (collation) qiymatini qaytaradi
fn:static-base-uri() base-uri qiymatini qaytaradi

ULASHISH

XSLT funksiyalari

Bundan tashqari, quyidagi o‘rnatilgan XSLT funksiyalari mavjud:

Name Tavsif
current() Joriy tugunni qaytaradi
document() Tashqi XML hujjatidagi tugunlarga murojaat qilish uchun ishlatiladi
element-available() Ko‘rsatilgan element XSLT protsessori tomonidan qo‘llab-quvvatlanishini tekshiradi
format-number() Sonni stringga aylantiradi
function-available() Ko‘rsatilgan funksiya XSLT protsessori tomonidan qo‘llab-quvvatlanishini tekshiradi
generate-id() Ko‘rsatilgan tugunni noyob tarzda identifikatsiya qiluvchi string qiymatni qaytaradi
key() <xsl:key> elementi ko‘rsatgan indeks yordamida tugunlar to‘plamini (node-set) qaytaradi
system-property() Tizim xususiyatlari qiymatini qaytaradi
unparsed-entity-uri() Tahlil qilinmagan (unparsed) entity’ning URI’sini qaytaradi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!