Пространства имен и схемы 70 Сегментация проблемы 71



жүктеу 3,64 Mb.
бет90/150
Дата17.01.2022
өлшемі3,64 Mb.
#33337
түріПротокол
1   ...   86   87   88   89   90   91   92   93   ...   150
Лекции 2

Функции пользователя

Язык XQuery позволяет использовать все функции языка XPath 2.0. Кроме встроенных функций, каждый разработчик может применять собственноручно написанные. Синтаксис определения функции таков:



define function Имя ($xl as Тип1, $x2 as Тип2,...) as Тип3 {

Выражение

}

После слов define function записывается имя функции, которым может служить любое уточненное имя типа QName. В скобках перечисляется список аргументов функции, который может быть пустым. Для каждого аргумента после слова as можно записать его тип. Если тип аргумента не указан, то по умолчанию понимается произвольная последовательность. После скобки, закрывающей список аргументов, и слова as записывается тип значения, возвращаемого функцией. Если он отсутствует, то по умолчанию понимается произвольная последовательность. Наконец, в фигурных скобках записывается тело функции, в котором, чаще всего, располагается конструктор.



При записи типа можно использовать обозначения, обычные в описании DTD документа XML. Они заключаются в следующем:

  • если значения какого-то типа, записанного в заголовке функции, могут встречаться несколько раз или отсутствовать, то после имени типа записывается звездочка *:

  • если хотя бы одно значение обязательно должно присутствовать, то записывается плюс +;

  • если значение может встретиться нуль или один раз, то записывается вопросительный знак ?.

Для вызова функции достаточно написать ее имя и в скобках перечислить аргументы функции.

Язык XQuery допускает рекурсивные функции, вызывающие сами себя, и взаимно рекурсивные функции, вызывающие друг друга.

Где же записывается определение функции? Для записи всех определений перед выражением-запросом записывается пролог.

Пролог

Перед выражением-запросом можно написать необязательный пролог (prolog), содержащий глобальные определения. Пролог вместе с выражением-запросом образуют так называемый главный модуль (main module). В начале пролога можно записать. номер версии языка XQuery в следующем виде:

xquery version "1.0"

Далее в прологе в любом порядке и любом количестве можно записать необязательные определения пространств имен, переменных, импортировать схему документа и другие модули.

Определения функций, если они есть, записываются в конце пролога.

Определение пространств имен

Для определения пространства имен и его префикса достаточно записать их в прологе строкой вида:

declare namespace xyz = "http://some.domain/myns"

Таких строк в прологе может быть сколько угодно.

В языке XQuery определены префиксы пяти пространств имен, которые можно использовать по умолчанию:



  1. xml = "http://www.w3.org/XML/1998/namespace"— пространство имен XML;

  2. xs = "http://www.w3.org/2001/XMLSchema"— пространство имен XSD;

  3. xsi = "http://www.w3.org/2001/XMLSchema-instance"— пространство экземпляров схем XML;

  4. fn = "http://www.w3.org/2003/05/xpath-functions"— пространство имен встроенных функций языка XPath 2.0;

  5. xdt = "http://www.w3.org/2003/05/xpath-datatypes" — пространство имен типов данных языка XPath 2.0.

Кроме того, в прологе можно определить два пространства имен по умолчанию для записи имен без префикса: одно для имен элементов, другое для имен функций. Их определения выглядят примерно так:

declare element namespace = http://some.domain/mynames

declare function namespace = http://some.domain/myfuncs

Напомню, что в прямом конструкторе элемента, в атрибуте xmlns, тоже можно определить пространство имен по умолчанию. Это определение будет действовать только в данном конструкторе, вне его действует определение, сделанное в прологе.


жүктеу 3,64 Mb.

Достарыңызбен бөлісу:
1   ...   86   87   88   89   90   91   92   93   ...   150




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау