Функции 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 для указанного узла.

Вершина

Функции ошибок и отладки

Название Описание
  • 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) Используется для отладки запросов.

Вершина

Функции для работы с числами

Название Описание
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 ','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 и имеющую указанную длину len. Первый символ имеет индекс 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)

Преобразовать строковый параметр в верхний регистр.

Пример: 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()  

Вершина

Функции для работы с узлами

Название Описание
  • fn:name()
  • fn:name(nodeset)
Возвращает имя текущего узла или первого узла указанного набора узлов.
  • fn:local-name()
  • fn:local-name(nodeset)
Возвращает имя текущего узла или первого узла указанного набора узлов без префикса пространства имен.
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
Возвращает 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:root()
  • fn:root(node)
Возвращает корень узлового дерева, к которому принадлежит текущий узел или указанный узел. Обычно это узел документа.

Вершина

Функции для работы с последовательностями

Общеприменяемые функции

Название Описание
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:collection()
  • fn:collection(string)
 

Вершина

Функции контекста

Название Описание
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.

Вершина