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

функции числовых значений

Название Объяснение
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.
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,сравнение)

Если 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')

Результат: ''

  • 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)

Возвращает 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()  

Функции для узлов

Название Объяснение
  • 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, при этом удаляя элемент по указанной позиции.

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