Функции XQuery
- Предыдущая страница Выборка XQuery
- Следующая страница Введение в DTD
XQuery 1.0, XPath 2.0 и XSLT 2.0 делят одинаковые функции библиотеки.
Функции XQuery
XQuery содержит более 100 вbuilt функций. Эти функции могут использоваться для строковых значений, числовых значений, сравнения дат и времени, операций с узлами и QName, операций с последовательностями, логических значений и т.д. Вы также можете определить свои функции в XQuery.
Внутренние функции XQuery
URI пространства имен функций XQuery:
http://www.w3.org/2005/02/xpath-functions
Default prefix для пространства имен функций - fn:.
Совет:Функции часто вызываются с префиксом fn:, например fn:string(). Однако, так как fn: является默认ным префиксом пространства имен, имя функции не нужно использовать с префиксом при вызове.
Вы можете найти полное руководство по XPath в нашем курсе по XPath:Референтное руководство по встроенным функциям XQuery》。
Пример вызова функции
Вызов функции можно использовать вместе с выражением. Вот пример:
Пример 1: В элементе
<name>{upper-case($booktitle)}</name>
Пример 2: В_predicat_expressions_путь_выражения
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
- Следующая страница Введение в DTD