Меню Рубрики

Простые типы с точки зрения xml

С точки зрения базы данных основательная поддержка типов и структур данных является одним из главных достоинств XML Схем. В спецификации XML Schema определено более 30 встроенных типов данных, очень похожих на типы данных SQL. Наиболее важные с точки зрения баз данных типы данных ХМL Схем перечислены в таблице 7.1.

Если сравнить типы данных XML Схемы с типами данных баз данных, приведенных в таблице 3.1, то можно сделать вывод, что все они могут быть взаимно обратно преобразованы друг в друга без потери информации. Именно это обстоятельство является важным качеством XML-формата.

Таблица 7.1. Типы данных в XML Схеме

Тип данных XML Схемы Описание
Числовые данные
Integer Целое число
PositiveInteger Положительное целое число
NegativeInteger Отрицательное целое число
NonPositiveInteger Нуль или отрицательное целое число
NonNegativeInteger Нуль или положительное целое число
Int 32-битовое целое число со знаком
UnsignedInt 32-битовое целое число без знака
Long 64-битовое целое число со знаком
UnsignedLong 64-битовое целое число без знака
Short 16-битовое целое число со знаком
UnsignedShort 16-битовое целое число без знака
Decimal Число, содержащее дробную часть
Float Число с плавающей запятой стандартной точности
Double Число с плавающей запятой двойной точности
Символьные данные
String Символьная строка переменной длины
NormalizedString Строка, в которой символы новой строки, возврата каретки и табуляции заменены пробелами
Token Строка, обработанная как NormalizedString, в которой удалены начальные и конечные пробелы и подряд идущие пробелы заменены одним пробелом
Дата и время
Time Время дня (часы/минуты/секунды/миллисекунды)
DateTime День и время (эквивалент SQL-типа TIMESTAMP)
Duration Длительность временного интервала (эквивалент SQL-типа DURATION)
Date Год/месяц/день
Gmonth Месяц по григорианскому календарю (от 1 до 12)
Gyear Год по григорианскому календарю (от 0000 до 9999)
Gday День месяца по григорианскому календарю (от 1 до 31)
GmonthDay Месяц/день по григорианскому календарю
Другие данные
Boolean Значение TRUE/FALSE
Byte Один байт данных со знаковым битом
UnsignedByte Один байт данных без знакового бита
base64Binary Двоичные данные по основанию 64
HexBinary Двоичные данные по основанию 16
AnyURI URI-адрес в Интернете, например, http://www.w3.org
Language Допустимый язык XML (английский, французский . )

Так же как стандарты SQL2 и SQL3, XML Schema поддерживает пользовательские типы данных, производные от встроенных типов или других пользовательских типов данных. Пользовательский тип данных определяется как ограничение, накладываемое на другой тип данных XML.

Ниже приведено определение производного типа данных repNumType, ограничивающего допустимые коды служащих диапазоном значений от 101 до 199.

С таким определением типа данных можно объявлять сущности и атрибуты схемы как относящиеся к типу repNumType, и для них будет автоматически приме­няться заданное вами ог­раничение.

Спецификация XML Schema предоставляет богатый набор характеристик типов данных (называемых аспектами), которые можно использовать в ограничениях. Это длина данных (для строк и двоичных данных), включающие и исключающие диапазоны значений, количество цифр целой и дробной части (для числовых данных) и явные перечни допустимых значений. Имеется даже встроенная возможность проверки на соответствие шаб­лону, позволяющая ограничить набор допустимых значений данных при помощи специального синтаксиса.

Еще XML Schema позволяет определять сложные типы данных, то есть пользовательские структуры. Вот, например, определение сложного типа данных custAddrType, составленного из вложенных элементов стандартных типов:

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

Обычно в определении любого языка содержится описание типов и структур данных. Информация о типе указывает характер размещения данных в двоичной памяти, выделяемой ОС в ходе выполнения этой программы. Язык программирования воспринимает данные через собственный набор типов данных, которые, по сути, являются абстракцией двоичного кода, используемого для физического хранения и манипулирования битами и байтами.

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

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

XML хранит все данные в виде текста, как и положено языку разметки. Программы, обращающиеся к XML, отображают эти данные в свое представление и обратно в текстовое, используя сведения о связи типов. Поскольку такие сведения хранятся отдельно, допускается множественный доступ с возможностью независимого изменения этих данных.

Таким образом, XML-процессоры осуществляют преобразование данных приложений в данные XML и обратно, практически так же, как браузеры производят HTML-разметку текста. Различие заключается в том, что в данном случае целью преобразования является не графический интерфейс пользователя, а файл данных или программа.

XML-процессоры находят соответствие имен элементов в файле схемы с именами элементов в файле данных и применяют сведения о типе и структуре. XML-процессоры также должны «понимать» специальные элементы схемы, касающиеся интерпретации данных, по таким вопросам, как упорядочивание данных для передачи по HTTP (сериализация) или порядок отображения SOAP-сообщения на определенный метод объекта.

Отображение любых значений в текстовую форму и обратно является неэффективным действием в плане как использования пространства памяти, так и в отношении скорости обработки. Но нередко производительность является «наименьшим злом» по сравнению с нереализованными возможностями. И в этом случае, поскольку язык XML предлагает выход для важнейшей, ранее неразрешимой проблемы, производительность отступает на второй план.

Не нашли то, что искали? Воспользуйтесь поиском:

Простые типы с точки зрения xml

3. в общем модуле
4. в СОМ модуле

8.7 Данную топологию обмена между информационными базами (имеющими одинаковую конфигурацию) можно реализовать:

1. Только при использовании возможности распределения информационной базы данных
2. Только при использовании возможностей универсального обмена
3. Как средствами универсального обмена, так и распределением информационной базы
4. Данную топологию реализовать невозможно

8.8 Событие «ПриПолученииДанныхОтПодчиненного», определенное в модуле плана обмена, возникает при получении данных от подчиненного узла:

8.9 При последовательном чтении из текстового файла невозможно:

8.10 В процедуре, которая будет вызываться при подключении к базе данных через СОМ, нельзя использовать:

1. ДокОбъект=Док.СоздатьДокумент()
2. Форма.Открыть()
3. Запрос=Новый Запрос
4. Нет правильного ответа

8.11 При использовании механизма распределенных баз данных изменения в конфигурации:

1. Выполняются в каждой информационной базе самостоятельно
2. Передаются посредством файла формата cf
3. Изменения включаются в стандартные сообщения обмена
4. После распределения информационной базы изменение конфигурации запрещено

8.12 При использовании механизма распределенных информационных баз соответствующем объекте «План обмена» отдельно взятой информационной базы (входящей в распределенную) определяется:

1. Только подчиненные базы (входящие в распределенную)
2. Главная (но она может и отсутствовать) и подчиненные базы
3. Полная структура определяется в корневой базе, у отдельно взятого экземпляра
базы определены только те информационные базы, с которыми у нее идет непосредственный обмен

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

8.13 Для создания объекта, с использованием которого из одной базы 1С:Предприятие 8 будет производиться обращение через OLE к другой информационной базе 1С:Предприятие 8, используется конструктор:

1. Новый Ваsе(СтрокаИнициализации)
2. Новый ОLЕОбъект
3. Новый СОМОбъект
4. Создание подобного объекта производится другими средствами

Пример:
Word = Новый COM Объект ( «Word.Application» );
V8 = Новый COM Объект ( «V8.Application» );


8.14 К простым с точки зрения XML сериализации относятся типы:

2. Только: Число, Строка, Дата, Булево, Неопределенно, Null
3. Все стандартные типы XML
4. Которые представляются в виде элементов XML только с текстовым содержимым
5. С точки зрения XML сериализации нет понятия «простые типы»

8.15 Экземпляр объекта XBase позволяет одновременно организовать работу:

1. Только с одним файлом формата dbf
2. С любым количеством файлов dbf
3. С любым количеством файлов dbf, но только в случае наличия файла описания связей
4. С любым количеством файлов dbf, но только в случае указания связей между полями с помощью специальных свойств объекта XBase

8.16 Для получения почты напрямую с почтового сервера ( без использования установленного почтового клиента ) использует объект:

1. Объект «Почта»
2. Объект «ИнтернетПочта»
3. Объект «ИнтернетСервер»
4. Данная возможность платформой не предусмотрена

8.17 Элементы управления ActiveX могут использоваться в диалоге формы:

1. Без ограничения
2. Только в формах открываемых модально
3. Только в формах открываемых не модально
4. Не могут размещаться в диалогах форм

8.18 К сложным, с точки зрения XML сериализации, относятся типы:

1. Все кроме типов относящихся к примитивным
2. Все ссылочные типы
3. Типы, описанные на «http://www.w3.org/2001/XMLSchema-instance»
4. Типы, значения которых представляются в виде элементов XML, содержащих вложенные элементы
5. С точки зрения XML сериализации, нет понятия «сложные типы»

8.19 У плана обмена может быть следующее количество предопределенных узлов (которые нельзя удалить или пометить на удаление):

1. Ни одного
2. Всегда один
3. Любое количество

8.20 С точки зрения XML сериализации, значение типа «ХранилищеЗначения» относится:

1. К простым типам
2. К сложным типам
3. Применить средства XML сериализации к данному типу значения нельзя

8.21 Для обращения к свойствам элементов управления ActiveX из модуля формы используется:

1. Свойство ActiveX формы, содержащее коллекцию элементов управления ActiveX
2. Свойство «ЭлементыФормы»
3. Прямое указание имени элемента управления (без использования свойств формы)
4. Только реквизит формы, связанный с данным элементом управления ActiveX

8.22 При использовании универсальных механизмов обмена (в свою очередь использующих планы обмена) таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:

8.23 При использовании механизма распределенных баз данных таблица регистрации изменений для объектов, изменение которых отправлено в сформированном сообщении:

8.24 С точки зрения XML сериализации, значение типа «КонстантаМенеджерЗначения.Имя константы» относится:

1. К простым типам
2. К сложным типам
3. Применить средства XML сериализации к данному типу значения нельзя

8.25 При работе с объектом «ИнтернетПочта» можно произвести выборку писем (либо заголовков):

1. За указанный период
2. Либо все, либо непрочитанные
3. Либо все, либо непрочитанные, либо прочитанные
4. За указанный период все, либо непрочитанные, либо прочитанные
5. Только все письма, находящиеся на сервере

8.26 В качестве макета нельзя использовать:

1. Документ HTML
2. ActiveX элемент управления
3. Active документ
4. Можно использовать все из перечисленных
5. Файл программы Microsoft Word
6. Макет оформления компоновки данных

ActiveX не присутствует в списке типов макетов в редакторе макетов при создании нового макета, а файл программы Microsoft Word можно загрузить, как двоичные данные.

Читайте также:  Елена шведова здравствуй хорошее зрение урок 2

8.27 При использовании возможности организации универсального обмена данными процесс разрешения коллизий:

3. По умолчанию принимаются изменения, зарегистрированные с более поздним временем
4. По умолчанию принимаются изменения, зарегистрированные в нижестоящей базе (по топологии)
5. По умолчанию принимаются изменения, зарегистрированные с более ранним временем

8.28 При работе с внешней компонентой (выберите наиболее правильное утверждение):

1. Одновременно в одном сеансе можно загрузить не более одной внешней компоненты с одним расширением файла (*.dll, *.осх)
2. Объекты внешней компоненты размещаются в дереве объектов конфигурации и в дальнейшем могут использоваться также как и основные объекты
3. После программной загрузки объекты внешней компоненты подключаются к «1С:Предприятию 8»
4. Работа с внешними компонентами в «1С:Предприятие 8» не предусмотрена

ЗагрузитьВнешнююКомпоненту (LoadAddIn). Загружает внешний компонент и подключает ее объекты к 1С:Предприятию. Объекты этого компонента должны быть построены по технологии внешних компонентов COM.

8.29 При использовании планов обмена, управлять составом узлов, для которых производится регистрация изменений объектов:

8.30 Объект «ПреобразованиеXSL» предназначен.

1. для преобразования таблицы значения в файл программы Microsoft Excel
2. для преобразования табличного документа в файл программы Microsoft Excel
3. для преобразования XML документа в другой документ допустимого формата
4. для задания (и использования для перевода) соответствия между строковыми величинами и числовыми

Описание:
Предназначен для преобразования текстов XML . Технология преобразования основана на стандарте XSLT Version 1.0.

8.31 С помощью средств XML сериализации нельзя в XML документ сохранить значения, имеющие тип:

8.32 Выберите правильное утверждение, касающееся элемента управления «поле HTML документа»

8.33 Для отслеживания момента полной загрузки HTML документа в элементе управления «Поле HTML документа» можно использовать:

1. Флаг модифицированности формы
2. Обработчик события «Документ сформирован» данного элемента управления, в котором при этом производится проверка свойства URL на равенство заданному адресу ресурса
3. Проверку свойства «Значение» данного элемента управление на равенство «Неопределенно»
4. Проверку свойства «Значение» данного элемента управление на равенство «Null»
5. Проверку свойства «URL» данного элемента управление на равенство заданному адресу ресурса

8.34 Для получения почты посредством установленного на пользовательском компьютере почтового клиента используется объект:

1. Почта
2. ИнтернетПочта
3. ПочтовыйКлиент

8.35 При программном создании фабрики XDTO, типы в ней определенные:

1. могут расширяться за счет подключения программно создаваемых пакетов XDTO
2. могут расширяться за счет подключения дополнительных схем XML документов
3. не могут расширяться, определяются в полном объеме при создании

8.36 Типы определенные в глобальной фабрикеXDTO:

8.37 Понятию «Фабрика XDTO» больше всего соответствует такое понятие XML как:

1. набор схем XML
2. схема XML документа
3. xml документ
4. пространство имен

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

Набор схем XML

8.38 Понятию «Пакет XDTO» больше всего соответствует такое понятие XML как:

1. набор схем XML
2. схема XML документа
3. xml документ
4. пространство имен

8.39 В рамках создаваемого пакета XDTO (без использования директивы импорта) можно использовать типы:

1. определенные только в данном пакете
2. определенные только в данном пакете и типы стандартные для XML
3. определенные только в данном пакете, типы стандартные для XML и типы производные от метаданных системы

8.40 В рамках модели XDTO понятие «Фасет» относится к:

1. тип объекта XDTO
2. тип значения XDTO
3. свойство XDTO
4. директива импорта

«Руководство разработчика 8.2» ст. 2-812.
ТИП ЗНАЧЕНИЯ XDTO в соответствии с правилами для simple type из схемы XML может определятся тремя способам:
— ограничением, когда задается базовый тип (свойство БазовыйТип) и набор ограничений на множество значений (свойство ФАСЕТЫ)…

8.41 При определении типа свойства объекта XDTO информация о типе включает:

1. только имя типа
2. имя типа и имя пространства имен
3. имя типа и имя пакета XDTO
4. имя типа и имя фабрики XDTO

8.42 Менеджер WEB сервисов решает задачу:

1. управление пулом соединений с информационными базами
2. поддержка WSDL описания сервиса, реализация протокола SOAP
3. поддержка работы WEB приложения
4. верны ответы 1,2
5. верны ответы 2,3
6. верны ответы 1,2,3

В основе сервисной архитектуры системы «1C:Предприятие 8» находится менеджер сервисов. Менеджер сервисов выполняет следующие функции: управление пулом соединений с информационными базами; поддержка WSDL описания сервиса; реализация протокола SOAP, сериализация сообщений, вызов соответствующего сервиса.

8.43 Объект конфигурации «WEB сервис» используется для:

1. организации динамического обращения к web-сервисам
2. организации обращения к web-сервисам по статической ссылке
3. экспорта функциональности данной информационной базы

1С:Предприятие — поставщик веб-сервисов.
В конфигурацию можно добавить специальный объект, — Web-сервис,- с помощью которого описать некоторую функциональность прикладного решения, например, получение списка имеющихся на некотором складе товаров, их количества и цен. После публикации на веб-сервере такой сервис будет доступен сторонним потребителям.

8.44 Объект конфигурации «WSСсылка» используется для:

1. организации динамического обращения к web-сервисам
2. организации обращения к web-сервисам по статической ссылке
3. экспорта функциональности данной информационной базы

8.45 В случае если функция, реализующая операцию WEB сервиса, возвращает какое-либо значение. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

1. Строка
2. Число
3. Булево
4. элемент XML
5. объект или значение XDTO
6. верны ответы 1,2,3

8.46 При обращении к WEB сервису по статической ссылке последовательность действий следующая:

1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
2. настройка подключения (создание прокси), обращение к операции сервиса
3. обращение к операции сервиса

При использовании динамических ссылок описание веб — сервиса поставщика будет получаться системой «1С:Предприятие» каждый раз при вызове веб — сервиса, что, естественно, будет замедлять работу с данным веб — сервисом. Однако преимуществом такого подхода является возможность получения актуального описания веб — сервиса поставщика. При использовании же статических ссылок для получения актуального описания веб — сервиса следует выполнить повторный импорт WSDL — описания средствами конфигуратора и сохранение измененной конфигурации. См. также «Руководство разработчика 8.2» ст. 2-849, пункт 17.3.1

8.47 При обращении к WEB сервису по динамической ссылке последовательность действий следующая:

1. получение wsdl описания, настройка подключения (создание прокси), обращение к операции сервиса
2. настройка подключения (создание прокси), обращение к операции сервиса
3. обращение к операции сервиса

При использовании динамических ссылок описание веб — сервиса поставщика будет получаться системой «1С:Предприятие» каждый раз при вызове веб — сервиса, что, естественно, будет замедлять работу с данным веб — сервисом. Однако преимуществом такого подхода является возможность получения актуального описания веб — сервиса поставщика. При использовании же статических ссылок для получения актуального описания веб — сервиса следует выполнить повторный импорт WSDL — описания средствами конфигуратора и сохранение измененной конфигурации. См. также «Руководство разработчика 8.2» ст. 2-849, пункт 17.3.1

8.48 В случае если функция, реализующая операцию WEB сервиса, принимает какое-либо значение в качестве параметра. То такое значение определяется (при настройке соответствующего объекта конфигурации) как имеющее тип:

1. Строка
2. Число
3. Булево
4. элемент XML
5. объект или значение XDTO
6. верны ответы 1,2,3

8.49 Каким образом можно определить в каких планах обмена для конкретного прикладного объекта указана авторегистрация?

8.50 Для прикладных объектов в окне редактирования объекта конфигурации на закладке «Обмен данными» указываются .

8.51 Редактирование OLE-объектов осуществляется:

8.52 Внешние файлы табличных документов:

1. Имеют расширение XML
2. Имеют расширение MXL
3. Могут иметь любое расширение
4. Не существуют. Все табличные документы встроены в Конфигурацию

1 с 8 Предприятие. Конфигурирование и администрирование.

  • 1 с предприятие 8.2 (54)
  • 77 (5)
  • Введение в конфигурирование в системе «1с:Предприятие 8» . (84)
  • Вопросы к экзамену профессионал (118)
  • Задачи из курсов 1 с Насипов Фарит (9)
  • Затыки (14)
  • Конвертация (5)
  • Контакты (1)
  • Конфигурирование в системе «1С:Предприятие» Решение Оперативных задач. (15)
  • Курсы (1)
  • Мастер-класс из курсов Насипова (1)
  • Методы (1)
  • Обмен данными XML (3)
  • Проблемы с печатью (1)
  • Случаи из жизни (9)
  • Случаи из практики (13)
  • Excel (6)
  • JAVA (1)
  • MS SQL (3)
  • Последние записи

    Подписка на email

    • 1 с 8 Предприятие. Конфигурирование и ад… Зеркало Здесь поиск работает 0
  • поиск c учетом заглавных букв

    К простым с точки зрения XML сериализации относятся типы:

    1. Только: Число, Строка, Дата, Булево, Неопределенно, Null

    2. Все стандартные типы XML

    3. Только: Число, Строка, Дата, Булево

    4. С точки зрения XML сериализации нет понятия «простые типы

    5. Которые представляются в виде элементов XML только с текстовым содержимым

    Часть 1.Введение

    Обзор наиболее важных усовершенствований по сравнению с XML Schema 1.0, а также подробное рассмотрение типов данных

    Серия контента:

    Этот контент является частью # из серии # статей: XML Schema 1.1

    Этот контент является частью серии: XML Schema 1.1

    Следите за выходом новых статей этой серии.

    Достоинства и недостатки XML Schema обсуждаются с 2001 года, когда этот язык стал официальной рекомендацией W3C. После этого рабочая группа W3C начала работать над следующей версией XML Schema. В 2005 году, после того как он получил широкое распространение и был интегрирован с другими стандартизованными языками, в частности XSLT, XQuery и WSDL, W3С организовала специальный семинар для обсуждения стандарта и получения достаточного числа отзывов от пользователей, которые должны были определить путь его дальнейшей эволюции. Благодаря этому семинару, а также другим запросам, сформулированным представителями XML-сообщества, был определен круг возможностей XML Schema 1.1.

    Часто используемые аббревиатуры
    • W3C: Консорциум World Wide Web
    • WSDL: Язык описания Web-сервисов
    • XML: Расширяемый язык разметки
    • XSLT: Расширяемый язык стилевых преобразований

    В этой статье будет приведен обзор некоторых новинок XML Schema 1.1, а затем будут подробно рассмотрены расширения спецификации, касающиеся типов данных. На сегодняшний день стандарт известен под официальным названием «Язык определения XML-схем» (XML Schema Definition Language). В этой и последующих статьях серии мы будем чаще использовать аббревиатуру XSD, хотя в некоторых случаях вам могут встретиться «XML Schema» или просто «схема», которые обозначают тот же самый язык.

    Имейте в виду, что на момент написания этой статьи работа над XML Schema 1.1 еще не была завершена, поэтому некоторые детали могут измениться до выпуска официальной рекомендации W3C.

    Проблемы с XML Schema 1.0

    Дизайнеры XML-схем часто сталкиваются с рядом трудностей. Часть из них можно обойти, но получающиеся в результате схемы оказываются нелогичными и интуитивно непонятными. Другие проблемы можно решить, дополнительно задействовав языки программирования.

    В этом разделе будут рассмотрены наиболее распространенные проблемы XML Schema 1.0, а также возможности XML Schema 1.1, направленные на их решение. Более детальное описание этих возможностей содержится в следующих разделах.

    Читайте также:  Дайте оценку перевороту 751 года с точки зрения пипина короткого

    Ограничение модели содержимого

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

    В спецификации XML Schema 1.0 эти условия заданы в таблице, описывающей 25 возможных ситуаций, причем для их удовлетворения модели обоих типов должны выглядеть очень похоже. Это может привести к следующим проблемам:

    • строго заданные правила запрещают некоторые очевидно корректные производные типы;
    • при этом они допускают некоторые очевидно некорректные производные типы, в частности те, которые ослабляют ограничения базового типа.

    В листинге 1 приведен производный тип derived , в котором отсутствует необязательный элемент tns:a , присутствующий в базовом типе base . Очевидно, что это должно быть корректным ограничением, однако оно запрещено в XML Schema 1.0.

    Листинг 1. Пример производного типа, в котором отсутствует необязательный элемент из базового типа

    В XML Schema 1.1 вместо 25 условий используется простая формулировка, которая говорит о том, что «все, что разрешено в производном типе, обязано быть разрешено в базовом». Таким образом, приведенный выше пример представляет собой корректную схему с точки зрения XML Schema 1.1.

    Совместные ограничения

    Авторам XML-схем часто требуется формулировать правила, ограничивающие значения нескольких элементов или атрибутов, например: «значение min должно быть меньше или равно max » или «число дочерних элементов должно быть равно значению атрибута size «. Подобные правила часто называют совместными ограничениями или соограничениями (co-constraints).

    XML Schema 1.0 не предоставлял никаких средств поддержки соограничений, поэтому иногда приходилось писать фрагменты кода на Java™ или С для проверки XML-документов после их загрузки в память. Это усложняло сопровождение схем, а также снижало возможности их применения в различных средах (так называемую интероперабельность). В целях решения этой проблемы некоторые пользователи обращались к другим языкам проверки XML, например Schematron и Relax NG (см. раздел «Ресурсы»), но это также усложняло архитектуру схем, в которой ранее использовался только XSD.

    XML Schema 1.1 предоставляет встроенные средства поддержки соограничений. В новых элементах можно формулировать условия при помощи выражений XPath 2.0 (см. раздел «Ресурсы»). Пример приведен в листинге 2.

    Листинг 2. Пример использования совместных ограничений в XML Schema 1.1

    Эволюция схем

    Очень часто требуется развивать ранее созданные схемы, в частности, расширять их, чтобы документы XML могли содержать новую информацию. В XML Schema для этой цели используются шаблонные символы. Их можно вставлять в ранние версии схем в тех местах, которые в будущем могут быть расширены путем их замены на конкретные элементы. К сожалению, механизм шаблонных символов имеет ряд недостатков:

    • крайне противоречивое ограничение однозначного соответствия примитивов (Unique Particle Attribution – UPA) затрудняет использование необязательных шаблонов;
    • шаблоны недостаточно выразительны для разрешения «всего, кроме определенных конструкций»;
    • довольно утомительно повторять один и тот же шаблон в каждом составном типе, чтобы оставить возможности расширения для всей схемы.

    Возможности XML Schema 1.1 значительно облегчают эволюцию схем, в частности, путем существенного совершенствования шаблонов. Они больше не нарушают правило UPA в случае конфликтов с явно заданными элементами. Кроме того, они теперь допускают значения по умолчанию, а также позволяют явно исключать определенные имена или пространства имен. Таким образом, создание схем, в которых заложены возможности дальнейшего расширения, облегчается как никогда.

    В качестве примера рассмотрим модель содержимого, сформулированную следующим образом: «может существовать один и только один элемент userName , а также любое число любых других элементов до или после userName «. Пример модели приведен в листинге 3.

    Листинг 3. Модель содержимого в XML Schema 1.0

    Такое описание является некорректным с точки зрения XML Schema 1.0, так как при появлении элемента userName в документе не ясно, относится ли он к конструкции или к объявлению . Для решения этой проблемы некоторые разработчики вставляли специальные элементы-разделители между шаблонами и другими элементами. Это вполне рабочее решение, однако оно делает и схему, и документы XML весьма громоздкими. Кроме того, существует еще одна трудность: шаблон также допускает использование элемента userName , поэтому невозможно гарантировать, что данный элемент будет использован «один и только один» раз.

    Фрагмент схемы в листинге 3 является корректным с точки зрения XML Schema 1.1 благодаря тому, что шаблоны были несколько ослаблены. Это означает, что если некий элемент удовлетворяет как объявлению элемента, так и шаблону, то преимущество отдается первому. Таким образом, решается проблема с нарушением UPA. Правило «один и только один userName , плюс что угодно» можно выразить при помощи отрицательного шаблона, показанного в листинге 4.

    Листинг 4. Модель содержимого в XML Schema 1.1

    Типы данных в XML Schema

    Спецификация XML Schema состоит из двух частей: описания структуры документов (Structures) и типов данных (Datatypes, см. раздел «Ресурсы»). В этом разделе мы поговорим об изменениях в спецификации, которые коснулись типов данных. В будущих статьях мы уделим больше внимания изменениям в описании структур.

    Соответствие типам модели данных в XQuery 1.0 и XPath

    Система типов, использующаяся в XQuery 1.0, XPath 2.0, XSLT 2.0, а также в рекомендациях XQuery 1.0 и в модели данных XPath 2.0 (см. раздел «Ресурсы»), является расширением системы типов рекомендации XML Schema 1.0. Вдобавок к встроенным примитивным типам данных XML Schema 1.0, эти спецификации также определяют пять дополнительных типов в том же пространстве имен, а именно: anyAtomicType , untyped , untypedAtomic , dayTimeDuration и yearMonthDuration . В XML Schema 1.1 были добавлены три из этих типов ( anyAtomicType , dayTimeDuration и yearMonthDuration ) в целях приведения системы типов XSD к соответствию с системой типов в перечисленных выше стандартах.

    Тип anyAtomicType

    anyAtomicType – это специальный встроенный тип данных в XML Schema 1.1, определенный путем ограничения типа anySimpleType . Поскольку anyAtomicType является базовым по отношению ко всем примитивным типам данных, его множество значений и литералов является объединением соответствующих множеств всех примитивных типов. Этот момент лучше прояснить на следующем примере: XML-схема представлена в листинге 5, а документ XML – в листинге 6. В этом примере элемент типа anyAtomicType может содержать строки или целые числа. Его значения также могут быть приведены к другому типу, производному от anyAtomicType , при помощи xsi:type . Имейте в виду, что anyAtomicType не определяет никаких ограничивающих фасетов (constraining facet), поэтому он не может использоваться в качестве базового для простых типов, определенных пользователем.

    Листинг 5. Пример использования anyAtomicType в схеме
    Листинг 6. Пример документа, в котором встречаются элементы типа anyAtomicType

    Тип yearMonthDuration

    Тип duration , определенный в рекомендации типов данных XML Schema 1.0 (см. раздел «Ресурсы») служит для представления временных интервалов, поддерживающих частичное упорядочивание. Например, значения P30D и P1M являются несравнимыми, так как в месяце может быть от 28 до 31 дня. Для поддержки полного упорядочивания интервалов в XMl Schema 1.1 были введены два новых типа: yearMonthDuration и dayTimeDuration , являющихся ограничениями типа duration .

    В XML Schema 1.1 тип yearMonthDuration был определен путем ограничения допустимых литералов duration . Теперь они могут включать только компоненты для представления года и месяца. Для этого используется регулярное выражение ‘ -?P[0-9]+(Y([0-9]+M)?|M) ‘. Значениями компонентов для представления года и месяца могут быть любые беззнаковые целые числа, а знак минус можно использовать для представления отрицательных интервалов времени. Множество значений duration состоит из множества целых значений для числа месяцев и десятичных значений для числа секунд. Множество значений yearMonthDuration является подмножеством duration , в котором число секунд всегда равно нулю.

    Положительный интервал в один год и шесть месяцев может быть представлен в виде следующих литералов типа yearMonthDuration P1Y6M и P18M, значением которых является 18 месяцев. Примерами корректных представлений типа yearMonthDuration могут служить P1Y2M , P12Y , -P20M , а некорректных — P-1Y , P1Y-1M и P1YM . Значения yearMonthDuration представляют собой полностью упорядоченное множество, т.е. можно сравнивать любые два значения ( D1 , D2 ) типа yearMonthDurations . Другими словами, либо D1 > D2 , либо D1 .

    Пользовательские типы данных могут определяться путем ограничения yearMonthDuration . Для этого необходимо использовать ограничивающие фасеты, допускаемые типом duration . Тип yearMonthDuration сам является ограничением типа duration , поэтому его фундаментальный фасет ordered (упорядоченность) имеет значение partial (частичный), хотя на самом деле множество значений этого типа полностью упорядочено.

    Тип dayTimeDuration

    Как и yearMonthDuration , dayTimeDuration является типом, производным от duration . В его лексическом представлении могут использоваться только такие компоненты duration , как дни, часы, минуты и секунды. Это ограничение можно наложить при помощи регулярного выражения [^YM]*[DT].* . Значениями дней, часов и минут могут быть любые целые беззнаковые числа (тип xs:integer ), а значениями секунд – любые значения xs:decimal . Кроме того, можно использовать знак «минус», который обозначает отрицательное значение типа dayTimeDuration . Множество значений типа dayTimeDuration определяется при помощи ограничения возможных значений duration , в частности, ограничены дробные части значений секунд, а число месяцев должно быть равно нулю.

    Положительный интервал в один день, два часа, три минуты и 4.5 секунды соответствует следующему лексическому представлению типа dayTimeDuration : P1DT2H3M4.5S . Его значением является 93784.5 (1*24*60*60+2*60*60+3*60+4.5) секунд. Обратите внимание, что в литералах не обязательно указывать нулевые значения дней, часов, минут и секунд, однако хотя бы один из компонентов должен присутствовать. Если представление dayTimeDuration cостоит из одних дней, то можно опустить символ T. Примерами корректного представления dayTimeDuration могут служить P1D , PT25H , P22DT2H , PT1H99M5 , 5S , -PT20M , -PT60.60S , а некорректного — P-5D , P1D1M1H1S , PDT1M , P5H и P1DT . Аналогично yearMonthDuration тип dayTimeDuration является полностью упорядоченным.

    Типы, производные от dayTimeDuration , могут указывать те же ограничивающие фасеты, что и типы, производные от duration Учтите, что значение фасета whitespace в типах yearMonthDuration и dayTimeDuration равно collapse и не может быть изменено.

    В листинге 7 показан пример фрагмента, корректного с точки зрения XML Schema 1.1, в котором используются типы данных yearMonthDuration и dayTimeDuration .

    Листинг 7. Пример использования типов yearMonthDuration и dayTimeDuration в XML Schema

    В листинге 7 продемонстрирован пример корректного использования типов yearMonthDuration и dayTimeDuration в XML Schema 1.1. Простой тип ymdDerived сужает область значений базового типа ymdBase , который в свою очередь ограничивает встроенный тип yearMonthDuration при помощи фасета minInclusive . Поскольку область значений yearMonthDuration является полностью упорядоченной, значение P19M производного типа ymdDerived больше, чем значение P1Y6M базового типа ymdBase , а значит, ограничение корректно. Аналогичным образом простой тип dtdDerived сужает область значений базового типа dtdBase , который в свою очередь ограничивает встроенный тип dayTimeDuration , используя фасет maxInclusive . В этом случае отрицательный интервал -P51H производного типа dtdDerived является меньшим по отношению к интервалу -P2DT2H базового типа. Элемент root содержит дочерние элементы elYearMonthDuration и elDayTimeDuration типов ymdDerived и dtdDerived соответственно.

    Читайте также:  Какие продукты надо есть для восстановления зрения

    Тип precisionDecimal

    В XML Schema 1.1 был введен новый тип precisionDecimal для представления десятичных чисел с плавающей точкой в соответствии со стандартом IEEE-754. Он отличается от типа decimal тем, что указывается не только численное значение десятичных чисел, но и арифметическая точность представления. К значениям precisiontDecimal также относятся «положительная бесконечность» ( +INF ), «отрицательная бесконечность» ( -INF ), и NaN (not a number), говорящее о том, что данные не являются числом. Кроме того, различаются положительные и отрицательные нули (+0 и -0).

    К допустимым литералам типа precisionDecimal относятся все записи десятичных чисел (с точкой или без нее), записи в научной (экспоненциальной) нотации, а также характерные строки ‘ INF ‘, ‘ +INF ‘, ‘ -INF ‘, и ‘ NaN ‘.

    Пользовательские типы, определяемые путем ограничения precisionDecimal , могут использовать все фасеты decimal . Кроме того, были введены два дополнительных ограничивающих фасета maxScale и minScale , которые позволяют сужать область значений типа precisionDecimal . При помощи фасета maxScale можно определить верхнюю, а при помощи minScale — нижнюю границу точности значений типа precisionDecimal .

    В листинге 8 показано определение нового типа price , который допускает все значения в интервале от -999,999.99 до 999,999.99 .

    Листинг 8. Пример использования типа precisionDecimal в XML Schema

    При работе с NaN важно помнить, что его нельзя сравнивать с любым другим значением, в том числе и с самим собой. Таким образом, использование NaN при задании ограничивающего фасета ( minInclusive , maxInclusive , minExclusive или maxExclusive ) приведет к пустой области значений результирующего типа данных.

    По той же причине включение NaN в перечисление не делает его допустимым значением. Если вам необходимо включить NaN в область значений типа данных, то определите этот тип в виде объединения, одним из членов которого будет тип с единственным значением NaN (для этого значением фасета pattern должно быть » NaN «).

    Часовые пояса и разница во времени

    В XML Schema 1.0 типы данных, связанные с date , time и dateTime , включали в себя необязательный компонент для указания часовых поясов в формате ((‘+’ | ‘-‘) hh ‘:’ mm) | ‘Z’ . В результате добавления значения этого компонента к времени по Гринвичу (UTC) получается дата и время в указанном часовом поясе.

    Несмотря на то, что в типах данных XML Schema 1.0 используются часовые сдвиги (timezone offset), для их описания применяется термин «часовой пояс» (timezone), что приводит к определенной путанице, поскольку это различные понятия. Часовой пояс описывает конкретную область на карте (например, Тихоокеанский пояс), в то время как часовой сдвиг определяет разницу в часах и минутах между определенным часовым поясом и временем UTC (например, 11:00-05:00 ). В спецификации XML Schema 1.1 эта проблема была устранена, и теперь термины timezone и timezone offset различаются, как положено.

    Корректировочные секунды

    Корректировочными (leap seconds) называют секунды, которые добавляются к последним дням в марте, июне, октябре и декабре. Это приводит к тому, что последняя минута в последних днях этих месяцев длится более 60 секунд. Это делается для того, чтобы поддерживать время UTC в пределах 0.9 секунд от астрономического.

    Временные типы данных, определенные в спецификации XML Schema 1.1, не поддерживают корректировочные секунды, поэтому их нельзя использовать для представления последних секунд в тех днях, когда эти секунды добавляются. Примером такой даты может служить 1972-06-30. Таким образом, пользователям придется вносить соответствующие корректировки на прикладном уровне в тех случаях, когда их необходимо учитывать.

    Простые типы и фасеты, определяемые XML-процессорами

    Спецификация XML Schema включает ряд примитивных типов данных, таких как string , boolean и double , реализация которых должна быть предоставлена XML-процессорами. Однако встроенных типов данных не хватает для нужд многих приложений. В некоторых, но не во всех случаях эту проблему можно решить, определяя производные типы на основе существующих.

    Примитивные типы, определяемые реализацией

    XML Schema 1.1 позволяет производителям процессоров схем определять свои собственные примитивные типы. При этом каждый процессор может сам решать, распознавать подобные типы данных или нет.

    Производители процессоров обязаны следовать следующим правилам:

    • anyAtomicType должен быть базовым типом;
    • необходимо определить набор ограничивающих фасетов, а также что они означают (при этом фасет whiteSpace должен присутствовать);
    • необходимо определить механизм для обращения к новому типу внутри пространств имен, отличных от http://www.w3.org/2001/XMLSchema (пространства имен, контролируемого W3C);
    • следует определить множество корректных литералов, область значений, а также лексическое отображения для нового типа;
    • необходимо определить отношение равенства;
    • необходимо определить значения фундаментальных фасетов.

    Предположим, что, будучи разработчиками XML-процессора, мы хотим определить специальный тип date для представления дат в формате день-месяц-год, но с использованием разделителей, отличных от дефисов (-). В соответствии с перечисленными выше правилами, необходимо использовать anyAtomicType в качестве базового, а также определить новое пространство имен, например «http://www.example.com/XMLSchema-primitiveTypes». Предположим, что данные должны отображаться в формате день, разделитель, месяц, разделитель, год. Представления дней, месяцев и годов и лексическом пространстве типа date будут совпадать с представлениями этих компонентов в XML Schema 1.1. Наконец, желательно, чтобы разделителем был один из трех символов: точка (.), дефис (-) или косая черта (/).

    Кроме того, необходимо определить фасеты, которые будут поддерживать в нашей реализации процессора. К фундаментальным фасетам могут относиться следующие фасеты и их значения:

    • ordered: partial (тип упорядоченности : частичная)
    • bounded: false (ограниченность : нет)
    • cardinality: countably infinite (мощность : счетно-бесконечная)
    • numeric: false (численный : нет)

    Следуя правилам, нам также придется включить фасет whiteSpace . Ему будет присвоено значение «collapsed», которое будет действовать для date и его производных типов. Спецификация XML Schema 1.1 позволяет определить дополнительные ограничивающие фасеты и их значения, такие как:

    • pattern
    • enumeration
    • maxInclusive
    • maxExclusive
    • minInclusive
    • minExclusive
    • assertions
    • dateSeparator (определяется реализацией)

    Согласно нашему определению, строки » 2008-11-01 «, » 2008.11.01 » и » 2008/11/01 » представляют собой корректные лексические представления дат. Значением всех трех представлений является первое ноября 2008 года.

    Фасеты, определяемые реализацией

    В спецификации XML Schema содержится ряд ограничивающих фасетов, таких как minInclusive или maxLength , которые можно применять к простым типам. Данные фасеты представляют собой конструкции, использующиеся для ограничения области значений простого производного типа. Они должны распознаваться и поддерживаться процессорами схем.

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

    Ниже приведены некоторые из действий, которые следует выполнить при определении нового фасета:

    • определить свойства фасета;
    • определить поведение фасета;
    • определить механизм ссылки на новый фасет в пространствах имен, отличных от http://www.w3.org/2001/XMLSchema (пространства имен, контролируемого W3C);
    • определить примитивные типы данных, к которым применим данный фасет.

    В листинге 9 приведен пример того, как производители XML-процессора могут определить фасет dateSeparator , который ограничивает значения символов-разделителей, используемых в области значений date и производных от него типов.

    Листинг 9. Пример фасета, определяемого реализацией

    Определение фасета может включать описание дополнительных атрибутов (кроме fixed, id, и value ) в пространстве имен, отличном от пространства имен схемы. Каждый производный тип данных может затем ограничивать область значений date , применяя фасет dateSeparator .

    Далее рассмотрим пример использования типа данных и его фасета, определенных XML-процессором. В листинге 10 показано определение нового типа specialDate , в представлении которого в качестве разделителя может использоваться только косая черта. Данное ограничение накладывается при помощи фасета dateSeparator .

    Листинг 10. Пример объявления производного типа при помощи фасета, определяемого реализацией

    Теперь представление » 2008/11/01 » является корректным, а » 2008-11-01 » и » 2008.11.01 » – нет.

    Заключение

    В этой статье был приведен обзор возможностей XML Schema 1.1, в том числе ряд примеров решения распространенных проблем c XML Schema 1.0. Были рассмотрены примеры использования ограничений модели содержимого, совместных ограничений, а также поддержка эволюции схем при помощи шаблонов. Затем были детально рассмотрены усовершенствования спецификации, которые коснулись типов данных, в том числе новые типы, а также возможность определения собственных примитивных типов и фасетов при создании процессоров схем. В следующей статье мы углубимся в тему возможностей совместных ограничений, в частности, конструкций для контроля значений, также механизма условного присвоения типа.

    Ресурсы для скачивания

    Похожие темы

    • Оригинал статьи: XML Schema 1.1, часть 1: Введение. (EN)
    • Спецификация XML: прочитайте о XML, в частности о том, как с его помощью можно передавать, получать и обрабатывать документы SGML в Web. (EN)
    • XML Schema, часть 1: Структуры (вторая редакция): узнайте больше о языке XML Schema, стандартизованном W3C, в частности о том, как в нем описываются структура и ограничения на содержимое документов XML 1.0, в том числе тех, в которых используются средства XML для работы с пространствами имен. В данной части спецификации используется материал из второй части под названием «XML Schema, часть 2: Типы данных». (EN)
    • XML Schema, часть 2: Типы данных (вторая редакция): получите всю необходимую информацию о типах данных, используемых в языке XML Schema. (EN)
    • Язык определения XML Schema от W3C (XSD) 1.1, часть 1: Структуры: ознакомьтесь с последней версией спецификации языка XML Schema, стандартизованного W3C. (EN)
    • Язык определения XML Schema от W3C (XSD) 1.1, часть 1: Типы данных: получите дополнительную информацию о новых типах данных, которые появились в языке XML Schema. (EN)
    • XQuery 1.0: узнайте больше о языке XML Query, который позволяет писать запросы к любым данным, хранящимся в формате XML. (EN)
    • Язык XML Path 2.0: узнайте больше о языке XPath. (EN)
    • Преобразования XSL (XSLT) 2.0: ознакомьтесь со спецификацией, описывающей синтаксис и семантику языка XSLT 2.0. (EN)
    • Модель данных XQuery 1.0 и XPath 2.0 (XDM): прочитайте спецификацию W3C, в которой описывается модель данных в языках XPath 2.0, XSLT 2.0 и XQuery. (EN)
    • Прочитайте о языке Schematron, который позволяет устанавливать ограничения на присутствие или отсутствие определенных образцов (паттернов) в документах XML. (EN)
    • Познакомьтесь с RELAX NG – еще одним языком описания XML-схем. (EN)
    • Попробуйте в деле Xerces2-J — XML-парсер для Java, распространяемый Apache. (EN)
    • Сертификация по XML корпорации IBM: узнайте, как стать сертифицированным разработчиком IBM в области XML и связанных с ним технологий. (EN)
    • Обратитесь к технической библиотеке XML, содержащей множество статей, советов, руководств, стандартов и справочников IBM Redbooks. (EN)
    • Загрузите ознакомительные версии программных продуктов IBMи получите навыки использования инструментов для разработки приложений и связующего ПО для DB2®, Lotus®, Rational®, Tivoli® и WebSphere®. (EN)
    • Трансляции developerWorks: слушайте интересные интервью и обсуждения вопросов, актуальных для разработчиков программного обеспечения. (EN)

    Комментарии

    Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

  • Источники:
    • http://softmakerkz.blogspot.com/2015/02/8.html
    • http://1c8k.wordpress.com/2013/02/02/%D0%BA-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D0%BC-%D1%81-%D1%82%D0%BE%D1%87%D0%BA%D0%B8-%D0%B7%D1%80%D0%B5%D0%BD%D0%B8%D1%8F-xml-%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8/
    • http://www.ibm.com/developerworks/ru/library/x-xml11pt1/