xsd restriction что это
XSD Ограничения / Грани
Ограничения используются для определения допустимых значений для элементов или атрибутов XML. Ограничения на элементы XML называются фасетки.
Ограничения на ценности
Ограничения на набор значений
Для того, чтобы ограничить содержимое элемента XML к набору допустимых значений, мы будем использовать перечисления ограничений.
В приведенном ниже примере определяет элемент под названием «car» с ограничением. Допустимыми значениями являются: Audi, Golf, BMW :
В приведенном выше примере, возможно, также было написано так:
Ограничения на ряд значений
Для того, чтобы ограничить содержимое элемента XML, чтобы определить ряд цифр или букв, которые могут быть использованы, мы будем использовать шаблон ограничения.
В приведенном ниже примере определяет элемент под названием «letter» с ограничением. Единственным допустимым значением является одним из строчных букв от А до Я:
Следующий пример определяет элемент под названием «initials» с ограничением. Единственное приемлемое значение три из заглавных букв, от А до Я:
Следующий пример также определяет элемент под названием «initials» с ограничением. Единственным допустимым значением является три из строчных букв или заглавными буквами от А до Я:
Следующий пример определяет элемент под названием «prodid» с ограничением. Единственным допустимым значением является пять цифр в последовательности, и каждая цифра должна быть в диапазоне от 0 до 9:
Другие ограничения на ряд значений
В приведенном ниже примере определяет элемент под названием «letter» с ограничением. Допустимое значение ноль или более вхождений строчных букв от А до Я:
Следующий пример также определяет элемент под названием «letter» с ограничением. Приемлемое значение представляет собой одну или несколько пар букв, каждая пара, состоящая из строчной буквы, за которым следует заглавной буквы. Например, «sToP» будет подтверждено этой модели, но не «Stop» или «STOP» или «stop» :
Следующий пример определяет элемент под названием «gender» с ограничением. Единственное приемлемое значение мужского или женского пола:
Следующий пример определяет элемент с именем «password» с ограничением. Там должно быть ровно восемь символов в строке, и эти символы должны быть строчными или прописными буквами от А до Я, или число от 0 до 9:
Ограничения на пробельных символов
Чтобы указать, как пробельные символы должны быть обработаны, мы будем использовать пробельные ограничение.
Ограничения по длине
Для того, чтобы ограничить длину значения в элементе, мы будем использовать длину, MAXLENGTH и MINLENGTH ограничений.
dev64
Programming
Ограничения на значения XML элементов и аттрибутов в XML schema
Галерея
Оглавление
В предыдущем посте я писал про описание аттрибутов для элементов в XML schema. Подробные описания XML schema можно посмотреть на сайте w3school.com
Пример, ниже, определяет элемент «age» (возраст) с ограничениями. Значение возраста должно быть больше нуля и меньше, чем 120.
Разрешение только определённого набора значений
Пример ниже определяет элемент «car» c ограничениями на возможные значения. Возможные значения: Audi, Golf, BMW:
Тоже самое может быть задано по-другому:
В данном случае тип «carType» может быть использован с другими элементами, поскольку он больше не часть элемента «car».
Ограничения на значения элементов также могут быть указаны в виде регулярного выражения.
В приведенном выше примере начение может быть однобуквенным, только из lowercase латинских букв. Фактически одной из букв латинского алфавита.
В данном случае, значение должно состоять из пяти десятичных цифр.
Разрешено 0 или более латинских букв в нижнем регистре.
Одна или более пар букв первая из которых в нижнем регистре, вторая в верхнем.
Два возможных значения: либо «male» либо «female»
Латинские буквы в любом регистре и цифры в количестве ровно 8 штук.
Ограничения на пробелы в значении
Данное ограничение указывает, что символы-разделители (пробелы, табуляции, переводы строки строки, возвраты каретки) в значениях должны оставаться как есть.
Разделители (пробелы, табуляции, переводы строки строки, возвраты каретки) будут заменяться на пробелы.
Пример ниже определяет элемент «address» с ограничением. whiteSpace ограничение выставляется в значение «collapse», означающее, что XML процессор удалит все лишние разделители (перводы строки, табуляции, пробелы, возвраты каретки заменятся пробелами, лидирующие и завершающие пробелы будут удалены, множественные пробелы будут урезаны до одного пробела).
Ограничения длины
Для ограничения длины значения XML элемента используются: length, maxLength и minLength.
Пример ниже определяет элемент «password» c ограничением. Длина должна быть ровно 8 символов.
Пример ниже ограничивает минимальную длину значения 5-ю символами, максимальную 8-ю.
Типы разрешенных ограничений, в зависимости от типа поля
XSD — умный XML
XSD — это язык описания структуры XML документа. Его также называют XML Schema. При использовании XML Schema XML парсер может проверить не только правильность синтаксиса XML документа, но также его структуру, модель содержания и типы данных.
Такой подход позволяет объектно-ориентированным языкам программирования легко создавать объекты в памяти, что, несомненно, удобнее, чем разбирать XML как обычный текстовый файл.
Кроме того, XSD расширяем, и позволяет подключать уже готовые словари для описания типовых задач, например веб-сервисов, таких как SOAP.
Стоит также упомянуть о том, что в XSD есть встроенные средства документирования, что позволяет создавать самодостаточные документы, не требующие дополнительного описания.
Рассмотрим в качестве примера XSD документ, описывающий часть структуры аккаунта на хабре.
Текст XSD схемы и XML документ, соответствующий этой схеме я не стал включать в статью из-за их размера.
Первая строчка схемы указывает, что документ является XML документом и использует кодировку UTF-8.
xs:annotation >
xs:documentation > Главный элемент схемы. Описывает пользователя хабра xs:documentation >
xs:annotation >
Тег описывает «сложный» тип данных user_name. При желании его можно вынести как отдельный тип данных, по аналогии с contact_info. Для этого, нужно блок перенести в и указать атрибут name, а элементу задать атрибут type.
Элементы user_name, first_name, last_name имеют строковый тип и описывают пользователя, имя и фамилию владельца аккаунта.
Элемент date_of_birth имеет тип данных «дата» и описывает дату рождения.
Дату регистрации описывает register_date, имеющий собственный тип данных customDateTime. Значение этого тега будет задаваться с помощью атрибута value. На это указывают строки.
xs:simpleType >
xs:restriction base =»xs:string» >
xs:length value =»19″ />
xs:pattern value =»2889-12-11 13:23:47″ />
xs:restriction >
xs:simpleType >
Элементы contact_info и blog — массивы, на это указывает атрибут maxOccurs=«unbounded».
Тег определяет то, что вложенным элементом будет один из элементов ICQ или linkedin.
Дополнительно о XSD схемах можно почитать Wikipedia и W3C. Для создания макета была использована программа Altova XMLSpy.
XSD элемент restriction
Элемент restriction определяет ограничения для элементов simpleType, simpleContent и complexContent.
Синтаксис элемента
Атрибуты элемента
Атрибут | Описание |
---|---|
id | Не обязательный. Определяет уникальный идентификатор для элемента |
base | Обязательный. Определяет имя встроенного типа данных, элемента simpleType или элемента complexType, определенных в этой или другой схеме |
любые атрибуты | Не обязательный. Любые другие атрибуты вне пространства имен схемы |
Пример использования
Пример №1
В следующем примере определяется элемент «age» с ограничением. Значение этого элемента не может быть меньше 0 или больше 100:
Пример №2
В следующем примере определяется элемент «initials» простого типа с ограничением. В качестве значения этого элемента могут выступать только набор из трех прописных или заглавных букв латинского алфавита:
Пример №3
В следующем примере определяется элемент «password» простого типа с ограничением. Значением этого элемента может быть только набор из минимум пяти и максимум восьми символов:
Пример №4
В следующем примере определяется сложный тип с ограничением. Сложный тип «Norwegian_customer» производится от сложного типа, определяющего параметры покупателя в общих чертах. В новом сложном типе элемент country зафиксирован на значении «Norway»:
Инструменты пользователя
Инструменты сайта
Содержание
Аннотации
компонент может иметь атрибут xml: lang, в котором указывается язык написания самой аннотации.
разработки, таблицы стилей и других приложений. Например, в середине компонента appInfo можно представить информацию о том, какие фасетки могут быть применены к каждому простого типа.
Типы данных
Объявление элемента
Обратите также внимание на то, что при указании типа элемента обязательно необходимо задавать пространство имен:
Объявление атрибутов
Необязательный атрибут use может принимать одно из следующих значений:
Простые и комплексные типы данных
simpleType
Простые типы в основном используются для сужение типов (restriction)
Cужение типов (restriction)
С помощью сужение типов (restriction) Мы можем контролировать любой тип данных на наличие его значения то есть ограничивать его значения
Приме: Схема