توابع XSLT، XPath و XQuery

XSLT 2.0، XPath 2.0 و XQuery 1.0 از همان کتابخانه‌های توابع به اشتراک می‌گذارند.

کتابخانه‌های توابع

پیشوند پیش‌فرض فضای نام توابع:fn:

URI فضای نام توابع:http://www.w3.org/2005/xpath-functions

توجه:معمولاً استفاده می‌شود fn: پیشوند برای فراخوانی توابع استفاده می‌شود، به عنوان مثال fn:string()اما، به دلیل fn: این پیشوند پیش‌فرض فضای نام است، بنابراین در زمان فراخوانی نام توابع نیاز به افزودن پیشوند نیست.

توابع دسترسی

نام توضیح
fn:node-name(node) نام نود پارامتر را بازمی‌گرداند.
fn:nilled(node) مقدار بولینی که نشان‌دهنده رد کردن نود پارامتر است را بازمی‌گرداند.
fn:data(item.item,...) یک توالی از مقاطع را می‌پذیرد و یک توالی از مقاطع اتمی بازمی‌گرداند.
  • fn:base-uri()
  • fn:base-uri(node)
مقدار属性 base-uri فعلی یا نود معین شده را بازمی‌گرداند.
fn:document-uri(node) مقدار属性 document-uri مشخص شده برای نود معین شده را بازمی‌گرداند.

Top

توابع خطا و ردیابی

نام توضیح
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

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

نتیجه: به محیط پردازش خارجی http://example.com/test#toohigh و رشته "Error: Price is too high" بازمی‌گردانده شود.

fn:trace(value,label) برای debug کردن جستجو استفاده می‌شود.

Top

توابع مربوط به مقدار

نام توضیح
fn:number(arg)

مقدار بازگردانده شده. پارامتر می‌تواند مقدار بولین، رشته یا مجموعه‌ای از نودها باشد.

例子:number('100')

مثال: number('100')

نتیجه: 100

fn:abs(num)

مقدار绝对 را بازگردانید.

مثال: abs(-3.14)

مثال: abs(3.14)

مثال: abs(-3.14)

نتیجه: 3.14

fn:ceiling(num)

مقدار کوچکترین عدد صحیح که از num بزرگتر باشد را بازگردانید.

نتیجه: 4

fn:floor(num)

بزرگترین عدد صحیح که از num کمتر یا برابر با آن باشد را بازگردانید.

مثال: floor(3.14)

نتیجه: 3

fn:round(num)

پارامتر num را به نزدیک‌ترین عدد صحیح نزدیک می‌کند.

مثال: round(3.14)

نتیجه: 3

fn:round-half-to-even()

مثال: round-half-to-even(0.5)

نتیجه: 0

مثال: round-half-to-even(1.5)

نتیجه: 2

مثال: round-half-to-even(2.5)

نتیجه: 2

Top

توابع رشته

نام توضیح
fn:string(arg)

مقدار رشته‌ای پارامتر را بازگردانید. پارامتر می‌تواند عدد، ارزش منطقی یا مجموعه نود باشد.

مثال: string(314)

نتیجه: "314"

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

بر اساس توالی کد نقطه، رشته را بازگردانید.

مثال: codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

نتیجه: 'Thérèse'

fn:string-to-codepoints(string)

بر اساس رشته، توالی کد نقطه را بازگردانید.

مثال: string-to-codepoints("Thérèse")

نتیجه: 84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) بر اساس تطبیق کد نقطه Unicode، اگر ارزش comp1 برابر با ارزش comp2 باشد، true را بازگردانید. (http://www.w3.org/2005/02/xpath-functions/collation/codepoint)، در غیر این صورت false را بازگردانید.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

اگر comp1 کمتر از comp2 باشد، -1 را بازگردانید. اگر comp1 برابر با comp2 باشد، 0 را بازگردانید. اگر comp1 بزرگتر از comp2 باشد، 1 را بازگردانید. (بر اساس قوانین تطبیق استفاده شده).

مثال: compare('ghi', 'ghi')

نتیجه: 0

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

بازگشت ترکیب رشته‌ها.

مثال: concat('XPath ','is ','FUN!')

نتیجه: 'XPath is FUN!'

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

استفاده از پارامتر sep به عنوان جداکننده برای بازگشت رشته‌ای که از پارامترهای string ترکیب شده.

مثال: string-join(('We', 'are', 'having', 'fun!'), ' ')

نتیجه: ' We are having fun! '

مثال: string-join(('We', 'are', 'having', 'fun!'))

نتیجه: 'Wearehavingfun!'

مثال: string-join((), 'sep')

نتیجه: ''

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

بازگشت رشته معین از موقعیت start به طول معین. اولین کاراکتر شمارنده 1 است. اگر پارامتر len را حذف کنید، رشته از موقعیت start تا انتهای رشته بازمی‌گرداند.

مثال: substring('Beatles',1,4)

نتیجه: 'Beat'

مثال: substring('Beatles',2)

نتیجه: 'eatles'

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

بازگشت طول رشته معین. اگر پارامتر string وجود نداشته باشد، طول رشته ارزش فعلی گره را بازمی‌گرداند.

مثال: string-length('Beatles')

نتیجه: 7

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

حذف فضاهای خالی در ابتدا و انتهای رشته معین و جایگزینی تمام توالی‌های فضاهای خالی درونی با یک فضا و بازگشت نتایج. اگر پارامتر string وجود نداشته باشد، به فضای خالی فعلی عمل می‌کند.

مثال: normalize-space(' The   XML ')

نتیجه: 'The XML'

fn:normalize-unicode() اجرای استاندارد Unicode.
fn:upper-case(string)

تغییر پارامتر string به حروف بزرگ.

مثال: upper-case('The XML')

نتیجه: 'THE XML'

fn:lower-case(string)

string را به صورت کوچک تبدیل می‌کند.

مثال: lower-case('The XML')

نتیجه: 'the xml'

fn:translate(string1,string2,string3)

string2 را در string1 جایگزین string3 می‌کند.

مثال: translate('12:30','30','45')

نتیجه: '12:45'

مثال: translate('12:30','03','54')

نتیجه: '12:45'

مثال: translate('12:30','0123','abcd')

نتیجه: 'bc:da'

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

مثال: escape-uri("http://example.com/test#car", true())

نتیجه: "http%3A%2F%2Fexample.com%2Ftest#car"

مثال: escape-uri("http://example.com/test#car", false())

نتیجه: "http://example.com/test#car"

مثال: escape-uri ("http://example.com/~bébé", false())

نتیجه: "http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2)

اگر string1 شامل string2 است، true را بازمی‌گرداند، در غیر این صورت false را بازمی‌گرداند.

مثال: contains('XML','XM')

نتیجه: true

fn:starts-with(string1,string2)

اگر string1 با string2 آغاز می‌شود، true را بازمی‌گرداند، در غیر این صورت false را بازمی‌گرداند.

مثال: starts-with('XML','X')

نتیجه: true

fn:ends-with(string1,string2)

اگر string1 با string2 پایان می‌یابد، true را بازمی‌گرداند، در غیر این صورت false را بازمی‌گرداند.

مثال: ends-with('XML','X')

نتیجه: false

fn:substring-before(string1,string2)

بازگشت به زیرشاخه‌ای که string2 در string1 وجود دارد.

مثال: substring-before('12/10','/')

نتیجه: '12'

fn:substring-after(string1,string2)

بازگشت زیر رشته string2 در string1 پس از ظهور.

مثال: substring-after('12/10','/')

نتیجه: '10'

fn:matches(string,pattern)

اگر پارامتر string با مدل مشخص شده مطابقت داشته باشد، true بازمی‌گرداند، در غیر این صورت false بازمی‌گرداند.

مثال: matches("Merano", "ran")

نتیجه: true

fn:replace(string,pattern,replace)

جایگزینی مدلی مشخص شده به جای پارامتر replace و بازگشت نتیجه.

مثال: replace("Bella Italia", "l", "*")

نتیجه: 'Be**a Ita*ia'

مثال: replace("Bella Italia", "l", "")

نتیجه: 'Bea Itaia'

fn:tokenize(string,pattern)

مثال: tokenize("XPath is fun", "\s+")

نتیجه: ("XPath", "is", "fun")

Top

توابع مربوط به anyURI.

نام توضیح
fn:resolve-uri(relative,base)  

Top

توابع مربوط به مقدار بولن.

نام توضیح
fn:boolean(arg) بازگشت مقدار بولن عدد، رشته یا مجموعه‌ای از گره‌ها.
fn:not(arg)

ابتدا با استفاده از توابع boolean() پارامتر به یک مقدار بولن تبدیل می‌شود.

اگر مقدار بولن false باشد، true بازمی‌گرداند، در غیر این صورت true بازمی‌گرداند.

مثال: not(true())

نتیجه: false

fn:true()

بازگشت مقدار بولن true.

مثال: true()

نتیجه: true

fn:false()

بازگشت مقدار بولن false.

مثال: false()

نتیجه: false

Top

توابع مربوط به مدت زمان، تاریخ و زمان.

توابع استخراج اجزا تاریخ، زمان و مدت زمان.

نام توضیح
fn:dateTime(date,time) تغییر پارامتر به تاریخ و زمان.
fn:years-from-duration(datetimedur) بازگشت عددی سال بخشی از پارامتر، با استفاده از روش کلمات استاندارد.
fn:months-from-duration(datetimedur) بازگشت عددی ماه بخشی از پارامتر، با استفاده از روش کلمات استاندارد.
fn:days-from-duration(datetimedur) بازگشتی از پارامتر به صورت عدد صحیح، با استفاده از روش واژگان استاندارد.
fn:hours-from-duration(datetimedur) بازگشتی از پارامتر به صورت عدد صحیح، با استفاده از روش واژگان استاندارد.
fn:minutes-from-duration(datetimedur) بازگشتی از پارامتر به صورت عدد صحیح، با استفاده از روش واژگان استاندارد.
fn:seconds-from-duration(datetimedur) بازگشتی از پارامتر به صورت عدد دودویی، با استفاده از روش واژگان استاندارد.
fn:year-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد صحیح.

مثال: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

نتیجه: 2005

fn:month-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد صحیح.

مثال: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

نتیجه: 01

fn:day-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد صحیح.

مثال: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

نتیجه: 10

fn:hours-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد صحیح.

مثال: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

نتیجه: 12

fn:minutes-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد صحیح.

مثال: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

نتیجه: 30

fn:seconds-from-dateTime(datetime)

بازگشتی از پارامتر محلی به صورت عدد دودویی.

مثال: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

نتیجه: 0

fn:timezone-from-dateTime(datetime) بخش منطقه زمانی پارامتر را برمی‌گرداند، اگر وجود داشته باشد.
fn:year-from-date(date)

بخش عددی سال پارامتر محلی را برمی‌گرداند.

مثال: year-from-date(xs:date("2005-04-23"))

نتیجه: 2005

fn:month-from-date(date)

بخش عددی ماه پارامتر محلی را برمی‌گرداند.

مثال: month-from-date(xs:date("2005-04-23"))

نتیجه: 4

fn:day-from-date(date)

بخش عددی روز پارامتر محلی را برمی‌گرداند.

مثال: day-from-date(xs:date("2005-04-23"))

نتیجه: 23

fn:timezone-from-date(date) بخش منطقه زمانی پارامتر را برمی‌گرداند، اگر وجود داشته باشد.
fn:hours-from-time(time)

بخش عددی ساعتی پارامتر محلی را برمی‌گرداند.

مثال: hours-from-time(xs:time("10:22:00"))

نتیجه: 10

fn:minutes-from-time(time)

بخش عددی دقیقه‌ای پارامتر محلی را برمی‌گرداند.

مثال: minutes-from-time(xs:time("10:22:00"))

نتیجه: 22

fn:seconds-from-time(time)

بخش عددی ثانیه‌ای پارامتر محلی را برمی‌گرداند.

مثال: seconds-from-time(xs:time("10:22:00"))

نتیجه: 0

fn:timezone-from-time(time) بخش منطقه زمانی پارامتر را برمی‌گرداند، اگر وجود داشته باشد.
fn:adjust-dateTime-to-timezone(datetime,timezone)

اگر پارامتر timezone خالی باشد، dateTime بدون منطقه زمانی را برمی‌گرداند.

در غیر این صورت، dateTime با منطقه زمانی را برمی‌گرداند.

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

اگر پارامتر timezone خالی باشد، date بدون منطقه زمانی را برمی‌گرداند.

در غیر این صورت، date با منطقه زمانی را برمی‌گرداند.

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

اگر پارامتر timezone خالی باشد، time بدون منطقه زمانی را برمی‌گرداند.

در غیر این صورت بازگرداندن زمان با منطقه زمانی.

Top

توابع مربوط به QNames

نام توضیح
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

توابع مربوط به نقاط

نام توضیح
  • fn:name()
  • fn:name(nodeset)
بازگرداندن نام پروژه node یا اولین نقطه پروژه nodeset.
  • fn:local-name()
  • fn:local-name(nodeset)
بازگرداندن نام پروژه node یا اولین نقطه پروژه nodeset بدون پیشوند فضای نام.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
بازگرداندن URI فضای نام پروژه node یا اولین نقطه پروژه nodeset.
fn:lang(lang)

اگر زبان پروژه node با زبان مشخص شده مطابقت دارد، به true بازمی‌گردد.

مثال: Lang("en") برای <p xml:lang="en">...</p>

مثال: Lang("de") برای <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
بازگرداندن ریشه درخت پروژه node یا پروژه node مشخص شده. معمولاً نقطه مدارک است.

Top

توابع مربوط به توالی‌ها

توابع عمومی

نام توضیح
fn:index-of((item,item,...),searchitem)

بازگرداندن موقعیت پروژه searchitem در توالی پروژه item.

مثال: index-of ((15, 40, 25, 40, 10), 40)

نتیجه: (2, 4)

مثال: index-of (("a", "dog", "and", "a", "duck"), "a")

نتیجه (1, 4)

مثال: index-of ((15, 40, 25, 40, 10), 18)

نتیجه: ()

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

بازگرداندن یک توالی جدید از item با استفاده از پارامتر item - در حالی که به پروژه position اشاره می‌کند.

مثال: remove(("ab", "cd", "ef"), 0)

نتیجه: ("ab", "cd", "ef")

مثال: remove(("ab", "cd", "ef"), 1)

نتیجه: ("cd", "ef")

مثال: remove(("ab", "cd", "ef"), 4)

نتیجه: ("ab", "cd", "ef")

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

اگر مقادیر پارامترها توالی خالی هستند، در این صورت true برگشت می‌دهند، در غیر این صورت false.

مثال: empty(remove(("ab", "cd"), 1))

نتیجه: false

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

اگر مقادیر پارامترها توالی خالی نیستند، در این صورت true برگشت می‌دهند، در غیر این صورت false.

مثال: exists(remove(("ab"), 1))

نتیجه: false

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

برگشت به مجموعه‌ای از مقادیر متفاوت.

مثال: distinct-values((1, 2, 3, 1, 2))

نتیجه: (1, 2, 3)

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

برگشت به توالی جدیدی که توسط پارامتر item تعریف شده و در موقعیت مشخص شده توسط پارامتر pos، مقدار inserts اضافه شده است.

مثال: insert-before(("ab", "cd"), 0, "gh")

نتیجه: ("gh", "ab", "cd")

مثال: insert-before(("ab", "cd"), 1, "gh")

نتیجه: ("gh", "ab", "cd")

مثال: insert-before(("ab", "cd"), 2, "gh")

نتیجه: ("ab", "gh", "cd")

مثال: insert-before(("ab", "cd"), 5, "gh")

نتیجه: ("ab", "cd", "gh")

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

برگشت به ترتیب معکوس از پروژه‌های مشخص شده.

مثال: reverse(("ab", "cd", "ef"))

نتیجه: ("ef", "cd", "ab")

مثال: reverse(("ab"))

نتیجه: ("ab")

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

برگشت به موقعیت تعیین شده توسط پارامتر start و طول تعیین شده توسط پارامتر len از توالی اعضا.

موقع اولین پروژه 1 است.

مثال: subsequence(($item1, $item2, $item3,...), 3)

نتیجه: ($item3, ...)

مثال: subsequence(($item1, $item2, $item3, ...), 2, 2)

نتیجه: ($item2, $item3)

fn:unordered((item,item,...)) توالی پروژه‌ها بر اساس ترتیب تعیین شده توسط پیاده‌سازی بازمی‌گرداند.

توالی‌سازی‌کننده‌های تست گنجایش توالی

نام توضیح
fn:zero-or-one(item,item,...) اگر پارامتر صفر یا یک پروژه را شامل شود، آن پارامتر را بازمی‌گرداند، در غیر این صورت خطا تولید می‌کند.
fn:one-or-more(item,item,...) اگر پارامتر یک یا چند پروژه را شامل شود، آن پارامتر را بازمی‌گرداند، در غیر این صورت خطا تولید می‌کند.
fn:exactly-one(item,item,...) اگر پارامتر یک پروژه را شامل شود، آن پارامتر را بازمی‌گرداند، در غیر این صورت خطا تولید می‌کند.

Equals, Union, Intersection و Except

نام توضیح
fn:deep-equal(param1,param2,collation) اگر param1 و param2 با یکدیگر برابر هستند (deep-equal)، true را بازمی‌گرداند، در غیر این صورت false را بازمی‌گرداند.

توالی‌سازی‌کننده‌های مجموع

نام توضیح
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,...) بازگشت مجموع مقادیر عددی هر نود در یک مجموعه مشخص شده.

توالی‌سازی‌کننده‌های توالی

نام توضیح
fn:id((string,string,...),node) بازگشت یک توالی از نودهای عناصر که مقادیر ID برابر با یک یا چند مقادیر مشخص شده در پارامتر string هستند.
fn:idref((string,string,...),node) بازگشت یک توالی از نودهای عناصر یا ویژگی‌هایی که مقادیر IDREF برابر با یک یا چند مقادیر مشخص شده در پارامتر string هستند.
fn:doc(URI)  
fn:doc-available(URI) اگر توابع doc() گره مستند را بازگردانند، true را بازگردانید، در غیر این صورت false را بازگردانید.
  • fn:collection()
  • fn:collection(string)
 

Top

توابع محیط

نام توضیح
fn:position()

موقعیت گره فعلی را بازگردانید که در حال پردازش است.

مثال: //book[position()<=3]

نتیجه: انتخاب سه عنصر اول book

fn:last()

تعداد موارد در لیست گره‌هایی که در حال پردازش هستند را بازگردانید.

مثال: //book[last()]

نتیجه: انتخاب آخرین عنصر book

fn:current-dateTime() dateTime فعلی (با منطقه زمانی) را بازگردانید.
fn:current-date() تاریخ فعلی (با منطقه زمانی) را بازگردانید.
fn:current-time() زمان فعلی (با منطقه زمانی) را بازگردانید.
fn:implicit-timezone() مقدار منطقه زمانی پنهان را بازگردانید.
fn:default-collation() مقدار مقایسه پیش‌فرض را بازگردانید.
fn:static-base-uri() مقدار base-uri را بازگردانید.

Top

توابع XSLT

علاوه بر این، توابع XSLT داخلی زیر نیز وجود دارند:

نام توضیح
current() مجموعه‌ای از گره‌ها را بازگردانید که شامل گره فعلی به عنوان عضو منحصر به فرد است.
document() برای دسترسی به گره‌های XML مستقر در مستندات خارجی استفاده می‌شود.
element-available() بررسی کنید که آیا پردازش‌گر XSLT از عناصر مشخص شده پشتیبانی می‌کند.
format-number() اعداد را به رشته تبدیل کنید.
function-available() بررسی کنید که آیا پردازش‌گر XSLT از توابع مشخص شده پشتیبانی می‌کند.
generate-id() رشته‌ای که به عنوان شناسه منحصر به فرد گره مشخص شده است را بازگردانید.
key() عناصر قبلاً با استفاده از دستور <xsl:key> مشخص شده را بازیابی کنید.
node-set درخت را به مجموعه‌ای از گره‌ها تبدیل کنید. مجموعه‌ای که تولید می‌شود همیشه شامل یک گره است و گره ریشه درخت است.
system-property() مقدار ویژگی سیستم را بازگردانید.
unparsed-entity-uri() URI واقعی‌سازی نشده را بازگردانید.

Top