Ограничения

    Цель: задать ограничения для элементов схемы.
    Задачи:
    • Задать фиксированное значение для элемента схемы.
    • Задать паттерн значения.
    • Задать ограничение списком значений (enumeration).
    • Сохранить файл.

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

    Ограничение на минимальное и максимальное значение

    maxExclusive определяет верхнюю границу для числовых значений (значение должно быть меньше указанного)
    maxInclusive определяет верхнюю границу для числовых значений (значение должно быть меньше или равно указанному)

    Ограничение по выбору значений

    enumeration определяет список приемлемых значений

    Ограничение значения паттерном

    pattern определяет точную последовательность приемлемых символов

    Ограничение на количество символов

    Чтобы ограничить длину значения элемента, следует использовать ограничители length, maxLength и minLength.
    length определяет точное число символов или объектов списка. Должно быть равно или больше нуля
    maxLength определяет максимальное число символов или объектов списка. Должно быть равно или больше нуля
    minLength определяет минимальное число символов или объектов списка. Должно быть равно или больше нуля


    1. В программе Altova XMLSpy откройте свой файл схемы, выберав пункт меню File - Open.

    2. Для элемента SecondSideContract/Offer задайте фиксированное значение true.

    Рисунок 26 - фиксированное значение

    3. Для элемента ContractNumber задайте паттерн. Для этого кликните ЛКМ по элементу, в окне Facets нажмите на кнопку Append и введите значение [0-9][0-9][a-z].

    Рисунок 27 - кнопка Append

    Так номер договора может состояить из двух цифр и одной буквы.
    Аналогичным образом необходимо задать паттерн для ОrganizationINN, ОrganizationOGRN.

    4. Если для предмета договора существует определенный список услуг, то ограничение удобно задавать элементом enumeration. Для этого:
    4.1 Кликните ЛКМ по элементу ContractSubject, в окне Facets, на вкладке Enumerations нажмите на кнопку Append и введите значение "InstallationDoor" в появившемся поле.

    Рисунок 28 - вкладка Enumerations

    4.2 Аналогичным образом добавьте еще две услуги в список: ReplacementPlumbing и ReplacementLamp.

    Рисунок 29 - список Enumerations

    5. Помимо способа, рассмотренного в пункте 4, ограничение можно задать, создав простой тип и указав его для элемента ContractSubject. Для этого:
    5.1 Из контекстного меню кнопки Append необходимо выбрать SimpleType.

    Рисунок 30 - SimpleType

    5.2 В окне Details задать наименование ContractSubjectType и тип данных token.

    Рисунок 31 - окно Details

    5.3 Кликните ЛКМ по элементу ContractSubjectType, в окне Facets, на вкладке Enumerations нажмите на кнопку Append и введите значение "InstallationDoor" в появившемся поле.

    Рисунок 32 - вкладка Enumerations

    5.4 Аналогичным образом добавьте еще две услуги в список: ReplacementPlumbing и ReplacementLamp.

    Рисунок 33 - список Enumerations

    5.5 Для элемента ContractSubject в окне Details выбрать тип данных ContractSubjectType.

    Рисунок 34 - окно Details

    1. В Блокноте откройте свой ранее созданный файл.

    2. Для элемента SecondSideContract/Offer задайте фиксированное значение true.

    Рисунок 35 - фиксированное значение

    3. Для элемента ContractNumber задайте паттерн [0-9][0-9][a-z]. Так номер договора может состояить из двух цифр и одной буквы.

    Рисунок 36 - описание паттерна

    4. Если для предмета договора существует определенный список услуг, то ограничение удобно задавать элементом enumeration.

    Рисунок 37 - список Enumerations

    В элементе xsd:simpleType определяетcя базовый тип, область значений которого необходимо ограничить, используя элемент xsd:restriction. В элементе xsd:restriction определяетcя ограничение для базового типа.

    5. Помимо способа, рассмотренного в пункте 4, ограничение списка можно задать, создав простой тип и указав его для элемента ContractSubject.

    Рисунок 38 - список Enumerations в отдельном типе


    На занятии ознакомились с возможным ограничениям для элементов схемы. На примере рассмотрены некоторые способы ограничений: задали фиксированное ограничение для элемента Offer, задали ограничение с помощью паттерна для элемента ContractNumber и ограничение списком доступных значений для элемента ContractSubject.

    Вопросы для самопроверки:
    1. Назовите ограничитель, определяющий точное число символов или объектов списка.
    2. Назовите ограничитель, определяющий верхнюю границу для числовых значений.
    3. Назовите ограничитель, определяющий точную последовательность приемлемых символов.
    4. Назовите ограничитель, определяющий список приемлемых значений.
    5. Назовите ограничитель, определяющий максимальное число символов или объектов списка.