Спонсор: Microsoft
Опубликован: 08.08.2007 | Доступ: свободный | Студентов: 1490 / 136 | Оценка: 3.86 / 3.76 | Длительность: 11:46:00
Специальности: Программист
Лекция 8:

Пространство имен и схемы

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

XML-Data

Область применения стандарта XML-Data является более умеренной по сравнению с RDF.

Стандарт XML-Data различает синтаксические и концептуальные схемы. Хотя в обеих используется один и тот же язык, они освещают размечаемые нами данные с разных сторон.

Синтаксические схемы - это набор правил, предоставляющих процесс описания документов с помощью разметки; определения DTD являются примером таких синтаксических схем. Синтаксические схемы XML-Data налагают сходные с DTD ограничения на структуру словаря.

Концептуальные модели описывают связи между понятиями или объектами и, как таковые, они идеальны для моделирования реляционных баз данных. При помощи схем XML-Data можно установить связи, основанные на том, что книги содержат заголовки и цены. Это делается способом, отличающимся от синтаксиса любого документа XML. Новый стандарт предназначается для того, чтобы расширить область применения языка XML, включив в него информацию о реляционных базах данных. Главные связи, выраженные ключами в реляционных базах данных, можно формально выразить также и в схемах XML-Data.

XML Data содержит интересные возможности, делающие его более мощным чем DTD:

  • Использование языка XML

    В языке XML-Data для конструирования схем используется словарь XML, что дает пользователям возможность читать и записывать схемы, не осваивая предварительно новый синтаксис. Это также дает возможность изучать схему или динамически создавать новую при помощи модели DOM и существующих анализаторов.

  • Типизация данных

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

  • Ограничения на допустимые значения

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

  • Наследование типов

    Механизмом, позволяющим повторно использовать элементы, является поддерживаемое языком XML Data наследование типов. Он позволяет выявлять и расширять элементы при описании объектов проблемы, решить которую мы пытаемся с помощью XML. Мы можем написать, например, некоторые общие надтипы, а затем уточнять их в более специфические классы элементов, добавляя или заменяя новые члены в декларации надтипа. В определениях DTD таким же способом используются сущности ( entities ), но наследование типов формализует процесс. Не имея формальной семантики, сущности могут быть использованы неверно, настолько, что это затруднит, а не облегчит работу пользователя. Формальный механизм наследования дает возможность повторного использования, сохраняя при этом некоторый контроль над реализацией этой возможности.

  • Открытые и закрытые модели содержания

    Еще одной мощной возможностью языка XML-Data являются так называемые открытые и закрытые модели содержания. Классическое определение DTD представляет собой закрытую модель. Соответствующие ей документы должны придерживаться правил и не могут содержать ничего, что не соответствует правилам, поскольку все они должны быть описаны в DTD.

    Если схема открыта, то соответствующие ей документы могут содержать и другую информацию, не объявленную в DTD. Соответствующая схеме часть документа должна подчиняться заложенным в ней правилам, но мы можем включать в него и другие пункты без ограничений со стороны текущей схемы. Эти пункты могут быть описаны в другой схеме, а могут быть, вообще, никак не ограничены. Можно использовать специальные значения. С точки зрения нашей дискуссии, более важно то, что документы открытой модели представляют собой способ, позволяющий смешивать пространства имен. Фрагмент информации, соответствующий одной схеме, можно включить в середину документа, соответствующего другой. Более того, можно явным образом объявить, что для конкретных элементов используется открытая или закрытая модель содержания. Для этого существует атрибут content, значением которого по умолчанию является open.

  • Расширенные конструкции ID и IDREF

    В языке XML-Data конструкции ID и IDREF расширяются отношениями. В отношении один элемент используется в качестве ключа или индекса для содержания другого элемента. Это непосредственно применимо к моделированию первичных и внешних ключей в реляционных базах.

Описание содержания документа

Предложение Document Content Description ( DCD, описание содержания документа) поступило сразу после XML-Data. Это предложение представляет собой словарь RDF, явным образом предназначенный для декларации словарей XML. Его разработчики использовали выразительную мощь одного из стандартов представления метаданных - RDF - для создания стандарта с более ограниченной областью применения. Приблизительно это напоминает то, что язык XML является упрощенным множеством SGML.

Язык DCD синтаксически напоминает XML-Data, хотя в нем и отсутствуют некоторые углубленные возможности последнего. Он строго ориентирован на определение словарей XML. Однако в этом языке сохраняется характерная для XML-Data поддержка сильной типизации данных, а также наследование элементов. Как и XML-Data, DCD разрешает проектировщику объявлять модель схемы открытой или закрытой. Но в отличии от XML-Data, DCD для этой цели использует тот же механизм, что и для определений элементов. DCD, так же, как и XML-Data, позволяет налагать ограничения на значение содержания элементов.

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

XML Schema

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

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

В окружающем нас мире широко используются концепции чисел, строк и множеств, так что написанные на современных языках программы поддерживают большое количество тщательно проработанных систем встроенных типов данных и процедуры по определению новых типов. Добавление типов данных в проект XML Schemas станет важным подспорьем для программистов, использующих XML при работе с данными в своих приложениях. Такая поддержка типов данных предусматривает возможность проверять допустимость значения в документе, а также осуществлять преобразование из текстовой формы во встроенный тип при обработке документа XML. Таким образом, чтобы использовать документы XML в качестве основы для интеграции программ и систем, необходимо иметь возможность перехватывать (определять) типы данных размечаемой нами информации.

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

Типы данных схем имеют набор четких значений, называемый пространством значений ( value space ). Он представляет собой абстрактную коллекцию значений, которые может принимать тип. Например, множество целых чисел является пространством значений для типа integer. Это пространство характеризуется ограничивающими свойствами и операциями над значениями в нем.

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

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Сергей Халяпин
Сергей Халяпин
Россия, Москва
Татьяна Щекочихина
Татьяна Щекочихина
Россия, Омск