Типы данных в схеме 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.

<simpleType name="repNumType">

<restriction base ="integer">

<minlnclusive value="101" />

<maxExclusive value="200" />

</restriction>

</simpleType>

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

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

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

<complexType name="custAddrType">

<sequence>

<element name="city" type="string"/>

<element name-"street" type="string"/>

<element name="state" type="string"/>

<element name-"postcode" type="integer"/>

</sequence>

</complexType>

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

<simpleType name="repListType">

<list itemType="repNumType"/>

</simpleType>

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

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

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

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

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

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

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








Дата добавления: 2015-02-03; просмотров: 3116;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.