توابع XPath، XQuery و XSLT

توابع دسترسی

نام توضیحات
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 برای نود مشخص شده.

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

نام توضیحات
  • 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 کردن جستجو استفاده می‌شود.

توابع مربوط به数值‌ها

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

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

مثال: number('100')

نتیجه: 100

fn:abs(num)

بازگشت مقدار عددی پارامتر.

مثال: abs(3.14)

نتیجه: 3.14

مثال: abs(-3.14)

نتیجه: 3.14

fn:ceiling(num)

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

مثال: ceiling(3.14)

نتیجه: 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

توابع رشته‌ها

نام توضیحات
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 ','است ','سرگرم‌کننده!')

نتایج: 'XPath است سرگرم‌کننده!}

fn: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 با پارامتر مشخص شده‌ی pattern مطابقت داشته باشد، 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")

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

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

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

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

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

مثال: not(true())

نتیجه: false

fn:true()

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

مثال: true()

نتیجه: true

fn:false()

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

مثال: false()

نتیجه: false

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

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

نام توضیحات
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 خالی باشد، تاریخ بدون منطقه زمانی را برمی‌گرداند. در غیر این صورت تاریخ با منطقه زمانی را برمی‌گرداند.
fn:adjust-time-to-timezone(time,timezone) اگر پارامتر timezone خالی باشد، زمان بدون منطقه زمانی را برمی‌گرداند. در غیر این صورت زمان با منطقه زمانی را برمی‌گرداند.

فونکشن‌های مرتبط با 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()  

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

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

اگر زبان فعلی نقطه‌ی فعلی با زبان مشخص شده تطابق داشته باشد، true برمی‌گرداند.

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

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

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

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

توابع عمومی

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

مقدار position را در توالی پروژه‌ای که با searchitem برابر است، برمی‌گرداند.

مثال: 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 بازسازی می‌شود - در حالی که پروژه‌ای که در 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,...) اگر پارامتر شامل یک پروژه است، پس پارامتر را برمی‌گرداند، در غیر این صورت خطایی تولید می‌کند

برابر، اتحاد، تقاطع و استثنا

نام توضیحات
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 برابر با مقادیر یکی از مقادیر مشخص شده در متنی است که به عنوان آرگومان وارد شده است
fn:idref((string,string,...),node) برگردان یک توالی از گره‌های عنصر یا ویژگی که دارای مقادیر IDREF برابر با مقادیر یکی از مقادیر مشخص شده در متنی است که به عنوان آرگومان وارد شده است
fn:doc(URI)  
fn:doc-available(URI) اگر توابع doc() نود مستند را بازگرداند، در غیر این صورت false را بازگرداند.
  • fn:collection()
  • fn:collection(string)
 

توابع محیط

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

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

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

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

fn:last()

تعداد عناصر در لیست در حال پردازش را بازگرداند.

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

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

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