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



жүктеу 3,64 Mb.
бет78/150
Дата17.01.2022
өлшемі3,64 Mb.
#33337
түріПротокол
1   ...   74   75   76   77   78   79   80   81   ...   150
Лекции 2

Тесты узла

После того как с помощью оси определена область поиска, в ней отыскиваются узлы определенных видов или узлы с определенными именами. Для этого применяется тест узла (node test). В соответствии со своими задачами Тесты узла делятся на две группы. Рассмотрим каждую из них подробнее.

Тест по имени узла

Первая разновидность теста — тест по имени узла (name test) — содержит просто уточненное имя типа QName, состоящее из префикса и локального имени, отделенного от префикса двоеточием. Он отбирает узлы по имени, записанному в нем. В тесте можно использовать два шаблона уточненных имен.

Если вместо префикса имени стоит звездочка, например *:section, то отбираются узлы с локальным именем section в любом пространстве имен.

Если вместо локального имени стоит звездочка, например xsd:*, то отбираются узлы с любыми локальными именами, объявленными в указанном пространстве имен.

Тесты no виду узла

Тест no виду узла (kind test) записывается в функциональной форме и может быть одним из следующих:

node () — отбирает узел любого вида;

text () — отбирает текстовые узлы;

comment () — отбирает узлы-комментарии;

element ()— отбирает все узлы-элементы, эквивалентно element(*) и element(*,*);

element (name) — отбирает все узлы-элементы с именем name;

element (name, type) — отбирает узлы-элементы с именем name и типом type, определенным в схеме XSD документа. На месте первого или второго аргумента может стоять звездочка *, означающая "все элементы" или "все типы". Второй аргумент может заканчиваться словом nillable, показывающим, что тип определен в схеме XSD со значением xsi:nil="true";

attribute() — отбирает все узлы-атрибуты; эквивалентно attribute (@*) и attribute(@*,*>;

attribute (@name) — отбирает все узлы-атрибуты с именем name;

attribute (@name, type) — отбирает все узлы-атрибуты с именем name и типом type;

processing-instruction () — отбирает все инструкции по обработке;

processing-instruction (name)отбирает инструкции по обработке с именем обрабатывающей программы name;

document-node () — отбирает все корневые узлы документа;

document-node (element (args)) — отбирает все корневые узлы документа, содержимое которых состоит в точности из одного вложенного элемента, удовлетворяющего тесту element (args). Тест element() может принимать любую из трех перечисленных выше форм.

Предикаты

После отбора, проведенного осью поиска и тестом узла, из полученной последовательности узлов можно выделить те, которые удовлетворяют весьма сложным условиям, задаваемым в третьей, необязательной части шага поиска — предикате. Предикат записывается в квадратных скобках и представляет собой логическое выражение, значением которого может быть true или false. Например, [а=5], [х<2.6], [а>1 and a<8].

Последовательность узлов, к которой применяется предикат, сортируется в направлении, указанном осью: от начала документа к его концу, или наоборот. Отсортированные узлы нумеруются, начиная с 1, и просматриваются по очереди. Для каждого узла вычисляется предикат. Узлы, для которых значение предиката равно false, отбрасываются.

Номер текущего узла называется его позицией (position) в отсортированной последовательности узлов. Точное значение позиции текущего узла возвращается функцией position(). Поскольку очень часто узел выбирается по своему порядковому номеру, предикат вида

|position()=2]

описывают сокращенно как [2].

Количество узлов в последовательности можно получить функцией last(). Используя ее и применяя указанное сокращение, последний узел можно выделить предикатом [last()], а предпоследний — предикатом [last()-1].

Шаг, направляемый фильтром

Шаг, направляемый фильтром, использует вместо оси и теста узла первичное выражение (primary expression):



Первичное выражение[Предикат]

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

Первичное выражение — это:


  • число типа xs:integer, xs: decimal, xs: double;

  • строка символов типа xs: string;

  • значение переменной, начинающееся со знака доллара $;.

  • вызов функции;

  • наконец, произвольное выражение, заключенное в скобки.

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

Настало время познакомиться подробнее с выражениями языка XPath.




жүктеу 3,64 Mb.

Достарыңызбен бөлісу:
1   ...   74   75   76   77   78   79   80   81   ...   150




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

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