Функции в XQuery
- Предыдущая страница Выбор XQuery
- Следующая страница Обзор XQuery
XQuery 1.0, XPath 2.0 и XSLT 2.0 делят одинаковый функциональный каталог.
Функции в XQuery
XQuery содержит более 100 внутренних функций. Эти функции могут быть использованы для строковых значений, числовых значений, сравнения дат и времени, операций с узлами и QName, операций с последовательностями, логических значений и т.д. Вы также можете определить свои собственные функции в XQuery.
Внутренние функции XQuery
URI пространства имён функций XQuery:
http://www.w3.org/2005/02/xpath-functions
Префикс по умолчанию для пространства имён функций - fn:.
Совет:Функции часто вызываются с префиксом fn:, например fn:string(). Однако, так как fn: является именем пространства имён по умолчанию, имя функции не обязательно должно указываться с префиксом при вызове.
Вы можете найти полную информацию о XPath в нашем курсе:Руководство по内置 XQuery функции»).
Пример вызова функции
Вызов функции может быть использован вместе с выражением. См. следующий пример:
Пример 1: В элементе
<name>{upper-case($booktitle)}</name>
Пример 2: В predicate выражении пути
doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'
Пример 3: В предложении let
let $name := (substring($booktitle,1,4))
Пользовательские функции XQuery
Если找不到 необходимую функцию XQuery, вы можете написать свою собственную функцию.
Пользовательские функции можно определить в запросе или в отдельной библиотеке.
Грамматика
declare function префикс:имя_функции(参数 AS тип_данных)
AS тип данных возвращаемых данных
{
(: ...код функции... :)
;
Внимание при работе с пользовательскими функциями:
- Используйте ключевое слово declare function
- Имя функции должно начинаться с префикса
- Тип данных параметра обычно совпадает с типом данных, определенным в XML Schema
- Основной блок функции окружен фигурными скобками
Пример пользовательской функции, объявленной в запросе:
declare function local:minPrice(
$price as xs:decimal?,
$discount as xs:decimal?
AS xs:decimal?
{
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(Ниже приведен пример вызова функции)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>
- Предыдущая страница Выбор XQuery
- Следующая страница Обзор XQuery