Функции XSLT, XPath и XQuery
- Предыдущая страница Элементы XSLT
- Следующая страница Тutorиал 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) | Используется для отладки запросов. |
Функции для работы с числами
Название | Описание |
---|---|
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. |
|
Если 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 и имеющую указанную длину len. Первый символ имеет индекс 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) |
Преобразовать строковый параметр в верхний регистр. Пример: 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) |
Возвращает подстроку перед出现的 string2 в string1. Пример: substring-before('12/10','/') Результат: '12' |
fn:substring-after(string1,string2) |
Возвращает подстроку,出现的 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(). Возвращает true, если булево значение false,否则 возвращает 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) | Возвращает часть времениzones параметра, если она существует. |
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) | Возвращает часть времениzones параметра, если она существует. |
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) | Возвращает часть времениzones параметра, если она существует. |
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 пуст, то возвращается время без времениzones. В противном случае возвращает время с указанным часовым поясом. |
Функции, связанные с 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, при этом удаляя элемент, указанный параметром 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) | Возвращает 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 которых равны одному или нескольким значениям, указанным в параметре string. |
fn:idref((string,string,...),node) | Возвращает последовательность элементов или узлов свойств, значения IDREF которых равны одному или нескольким значениям, указанным в параметре string. |
fn:doc(URI) | |
fn:doc-available(URI) | Вернуть true, если функция doc() возвращает узел документа,否则 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 необработанного entidades. |
- Предыдущая страница Элементы XSLT
- Следующая страница Тutorиал XML