Функции XPath, XQuery и XSLT
- Предыдущая страница Обзор XPath
- Следующая страница Уроки XPath
функции доступа
Название | Объяснение |
---|---|
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) | используется для отладки запросов. |
функции числовых значений
Название | Объяснение |
---|---|
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(314) Результат: "314" |
fn:кодовые-точки-в-строку(int,int,...) |
В зависимости от последовательности кодовых точек возвращается строка. Пример: codepoints-to-string(84, 104, 233, 114, 232, 115, 101) Результат: 'Thérèse' |
fn:строка-в-кодовые-точки(строка) |
В зависимости от строки возвращается последовательность кодовых точек. Пример: 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('XPath ','is ','FUN!') Результат: 'XPath is FUN!' |
fn:составление-строки((строка,строка,...),разделитель) |
Использует параметр 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) |
Возвращает true, если string1 содержит string2, в противном случае возвращает false. Пример: contains('XML','XM') Результат: true |
fn:starts-with(string1,string2) |
Возвращает true, если string1 начинается с string2, в противном случае возвращает false. Пример: starts-with('XML','X') Результат: true |
fn:ends-with(string1,string2) |
Возвращает true, если string1 заканчивается на string2, в противном случае возвращает false. Пример: ends-with('XML','X') результат: false |
fn:substring-before(string1,string2) |
Возвращает подстроку, заканчивающуюся последним occurrence строки string2 в строке string1. Пример: substring-before('12/10','/') Результат: '12' |
fn:substring-after(string1,string2) |
Возвращает подстроку, начинающуюся с первого occurrence строки string2 в строке string1. Пример: substring-after('12/10','/') Результат: '10' |
fn:matches(string,pattern) |
Возвращает true, если параметр string соответствует указанному шаблону, в противном случае возвращает 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() |
Функции для узлов
Название | Объяснение |
---|---|
|
Возвращает имя текущего узла или первого узла указанного узлового набора. |
|
Возвращает имя текущего узла или первого узла указанного узлового набора без префикса пространства имен. |
|
Возвращает URI пространства имен текущего узла или первого узла указанного узлового набора. |
fn:lang(lang) |
Возвращает true, если текущий узел соответствует указанному языку. Пример: Lang("en") is true for <p xml:lang="en">...</p> Пример: Lang("de") is false for <p xml:lang="en">...</p> |
|
Возвращает корень узлового дерева текущего узла или указанного узла. Обычно это узел документа. |
Функции для последовательностей
Общий функционал
Название | Объяснение |
---|---|
fn:index-of((item,item,...),searchitem) |
Возвращает положение элемента в последовательности, равного параметру 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, при этом удаляя элемент по указанной позиции. Пример: 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,...) |
Если параметр имеет пустой сеquence, возвращает 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) | Возвращает true, если param1 и param2 равны друг другу (deep-equal), в противном случае возвращает 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() возвращает узел документа, то возвращает 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. |
- Предыдущая страница Обзор XPath
- Следующая страница Уроки XPath