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



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

Определение переменных

В прологе можно дать определение глобальных переменных, используемых потом в выражениях-запросах. При определении указывается имя переменной и ее значение, задаваемое произвольным выражением. Кроме того, после предлога as можно указать тип переменной, если он отличается от типа выражения. При этом типы переменной и выражения должны быть совместимы. Например:

define variable $x (-3.5)

define variable $n as xs:integer (-3)

Импорт модуля

Кроме главного модуля, в языке XQuery существуют библиотечные модули (library module), состоящие только из пролога. Они отмечаются словом module, за которым записывается целевое пространство имен модуля и его пролог. Целевое пространство имен модуля будет пространством имен по умолчанию для имен переменных и функций, определенных в модуле. Например:

module "http://some.domain/module1"

import schema namespace ipo ="http://some.domain/IPO"

import schema namespace zips="http://some.domain/zips"
define function zip-ok($a as element(*, ipo:USAddress)) as xs:boolean {

some $i in doc("zips.xml")/zips:zips/element(zips:row)

satisfies $i/zips:city = $a/city

and $i/zips:state = $a/state

and $i/zips:zip == $a/zip

}

Определения, сделанные в библиотечном модуле, можно импортировать в другой модуль, записав в этом, другом, модуле оператор импорта, имеющий вид:



import module "http://some.domain/modulel"

at "http://some.domain/modulel.xqr"

В операторе импорта указывается целевое пространство имен библиотечного модуля. После предлога at строкой URI указывается местоположение модуля. Эту часть оператора можно опустить, если есть какой-то другой способ указать расположение модуля.

Целевое пространство имен модуля можно сразу снабдить префиксом:

import module namespace xyz = http://some.domain/modulel

at "http; //some. domain/module1. xqr"

Пример главного модуля

Итак, в общем виде запись на языке XQuery, образующая главный модуль, состоит из пролога и выражения, которым чаше всего служит выражение-запрос. Вот пример главного модуля, взятый из документации XQuery. В нем определена функция names-match(), проверяющая совпадение имен, заданных ее аргументами. Эта функция применяется в запросе for для отбора узлов с несовпадающими именами:

import schema namespace ipo="http://www.example.com/IPO"
define function names-match(

$s as element(ipo:purchaseOrder/shipTo),

$b aa elf.iment (ipo:purchaseOrder/billTo)

) as xs:boolean

{

$s/name=$b/name

}

for $p in doc("ipo.xml")//element(ipo:purchaseOrder)

where not(names-match($p/shipTo,$p/billTo))

return $p


жүктеу 3,64 Mb.

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




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

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