Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

7.3.2.Типы данных в схеме 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 предлагает выход для важнейшей, ранее неразрешимой проблемы, производительность отступает на второй план.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]