توابع XSLT، XPath و XQuery
- صفحه قبل عناصر XSLT
- صفحه بعدی آموزش XML
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,...) | یک توالی از مقاطع را میپذیرد و یک توالی از مقاطع اتمی بازمیگرداند. |
|
مقدار属性 base-uri فعلی یا نود معین شده را بازمیگرداند. |
fn:document-uri(node) | مقدار属性 document-uri مشخص شده برای نود معین شده را بازمیگرداند. |
توابع خطا و ردیابی
نام | توضیح |
---|---|
|
مثال: 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') مثال: 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 |
توابع رشته
نام | توضیح |
---|---|
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 را بازگردانید. |
|
اگر 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') نتیجه: '' |
|
بازگشت رشته معین از موقعیت start به طول معین. اولین کاراکتر شمارنده 1 است. اگر پارامتر len را حذف کنید، رشته از موقعیت start تا انتهای رشته بازمیگرداند. مثال: substring('Beatles',1,4) نتیجه: 'Beat' مثال: substring('Beatles',2) نتیجه: 'eatles' |
|
بازگشت طول رشته معین. اگر پارامتر string وجود نداشته باشد، طول رشته ارزش فعلی گره را بازمیگرداند. مثال: string-length('Beatles') نتیجه: 7 |
|
حذف فضاهای خالی در ابتدا و انتهای رشته معین و جایگزینی تمام توالیهای فضاهای خالی درونی با یک فضا و بازگشت نتایج. اگر پارامتر 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") |
توابع مربوط به 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 خالی باشد، date بدون منطقه زمانی را برمیگرداند. در غیر این صورت، date با منطقه زمانی را برمیگرداند. |
fn:adjust-time-to-timezone(time,timezone) |
اگر پارامتر timezone خالی باشد، time بدون منطقه زمانی را برمیگرداند. در غیر این صورت بازگرداندن زمان با منطقه زمانی. |
توابع مربوط به 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() |
توابع مربوط به نقاط
نام | توضیح |
---|---|
|
بازگرداندن نام پروژه node یا اولین نقطه پروژه nodeset. |
|
بازگرداندن نام پروژه node یا اولین نقطه پروژه nodeset بدون پیشوند فضای نام. |
|
بازگرداندن URI فضای نام پروژه node یا اولین نقطه پروژه nodeset. |
fn:lang(lang) |
اگر زبان پروژه node با زبان مشخص شده مطابقت دارد، به true بازمیگردد. مثال: Lang("en") برای <p xml:lang="en">...</p> مثال: Lang("de") برای <p xml:lang="en">...</p> |
|
بازگرداندن ریشه درخت پروژه node یا پروژه node مشخص شده. معمولاً نقطه مدارک است. |
توابع مربوط به توالیها
توابع عمومی
نام | توضیح |
---|---|
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: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 را بازگردانید. |
توابع 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 واقعیسازی نشده را بازگردانید. |
- صفحه قبل عناصر XSLT
- صفحه بعدی آموزش XML