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) Мы можем контролировать любой тип данных на наличие его значения то есть ограничивать его значения
Приме: Схема
| Название фасетки | Описание | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Наибольшее значение, которое больше не входит в определяем тип | |||||||||||
| Наибольшее значение определяемого типа | |||||||||||
| Наименьшее значение, которое больше не входит в Определяемый тип | |||||||||||
| Наименьшее значение определяемого типа | |||||||||||
| Общее количество цифр в определяемого числовом типе; сужение типа decimal | |||||||||||
| Количество цифр в дробной части числа | |||||||||||
| Длина значений определяемого типа | |||||||||||
| Наибольшая длина значений определяемого типа | |||||||||||
| Наименьшее длина значений определяемого типа | |||||||||||
| Одно из перечисленных значений | |||||||||||
| В тегах-фасетка также могут иметь атрибуты. Эти атрибуты называют базисными фасетками (fundamental facets). Среди них выделяют: complexTypeСхема: базовый элемент Группы элементовГруппа позволяет описать общие элементы. (работает как include) Схема: 1С магия XDTO-пакетов на примере интеграций с ГИС ЖКХЕсть очень много статей о том, как работать с XSL/XSD из 1С, но все они в стиле: возьмем нашу XSD схему (простую и удбоную) или наш web-сервис и смотрите, как все легко экспортировать или импортировать. А что делать, если нам дали пачку XSD-схем со сложным взаимосвязями и изменять мы них не можем, а работать и поддерживать актуальность схем надо? Сразу скажу, вопросы шифрования/подписи по ГОСТУ при работе с ГИС ЖКХ за рамками этой статьи и на хабре уже освещались. Хотя без подписей запросы выполнить не удастся.
Ну а теперь приступим к магии. Попробуем запросить данные из справочника организаций по ОРГН. Это подсистема organizations-registry-common метод exportOrgRegist. В hcs-organizations-registry-common-service.wsdl указано: Ну приступим, откроем нужные нам пакеты XDTO. Оказывается, нужные сущности являются не типами, а свойствами, как с этим работать в документации на XDTO в статьях, которые я находил, не описано, поэтому воспользуемся урокам магии: Начнем с тела exportOrgRegistryRequest. Напишем функцию для сбора XML-запроса: В итоге получим запрос: Ответ от серверов ГИС ЖКХ (СИТ-1): Как мы видим, ответ напрямую десериализовать не получится, потому что нет такого типа в предложенных xsd схемах. Нам надо как-то пропустить часть тэгов и обработать только область ответа. На эту тему я тоже не нашел информации, но методом проб и ошибок приходим к кусочку магий: В итоге работать можно с очень сложными xsd схемами через стандартные инструменты платформы. В целом 1С контролируют типизацию и заполнения, бывает чересчур излишне, особенно когда внутри свойства пакета используется базовый тип другого пакета, но в любом случае тип нужно привести к локальному из-за другого пространства URI. Удобно работать с десериализоваными данными, так как там всю работу на себя берет платформа. Но проверки происходят на этапе выполнения, а при написания кода платформа 1С не предоставляет никаких подсказок и проходится пользоваться сторонними утилитами, и даже при выполнении большая часть элементов находится в состоянии «Неопределено» и даже тип или его свойство можно увидеть только в спецификации. XSD элемент complexTypeЭлемент complexType определяет сложный тип. Элемент сложного типа может содержать другие элементы и/или атрибуты. Синтаксис элементаАтрибуты элемента
|



