Что такое XML? - 4.8 Управление созданием и использованием производных типов

E-mail Печать PDF
Рейтинг пользователей: / 0
ХудшийЛучший 
Индекс материала
Что такое XML?
Невозможно найти взаимосвязанные ресурсы.
Применения XML
Структура XML-документа
8.1.3.2. Пролог и директивы
8.1.3.3. Комментарии
8.1.3.4. Имена и данные
Page 8
8.1.3.6. Секции CDATA
Разделы и их декларации
Декларация типа документа
8.1.6. Пример XML-документа
8.2.1. Общие сведения
8.2.2. Декларации типов элементов
8.2.3. Декларации списков атрибутов
8.2.4. Декларации нотаций
8.2.5. Пример DTD
8.2.6. Параметрические разделы
8.2.7. Условные секции
XML-схемы - стандарты, написанные на компьютерном языке
8.3.3. Область действия пространства имен
8.3.4. Базовые URI фрагментов XML-документа
Основные понятия: документ
2.1 Схема заказа на покупку
2.2 Определение комплексных типов, объявление элементов и атрибутов
2.2.1 Ограничение вхождений
2.2.2 Глобальные элементы и атрибуты
2.2.3 Конфликты имен
2.3 . Простые типы
2.3.1 Тип List
2.3.2 Тип Union
2.4 Определение анонимных типов
2.5 Содержимое элемента
2.5.2 Смешанное содержимое
2.5.3 Пустое содержимое
2.6 Аннотации
Page 37
2.8 Группы атрибутов
2.9 Значения Nil
3 Дополнительные понятия I: именные пространства, схемы & квалификация
3.1 Целевые именные пространства и не квалифицируемые локальные объекты
3.2 Квалифицируемые локальные объекты
3.3 Глобальные объявления в сравнении с локальными объявлениями
3.4 Необъявленные целевые именные пространства
4 . Дополнительные понятия II: международный заказ на покупку
4.1 Схема в нескольких файлах
4.2 Получение производных типов расширением
4.3 Использование производных типов в документах
4.4 Производные сложные типы, полученные путем ограничений
4.5 Переопределение типов и групп
4.6 Группы замены
4.7 Абстрактные элементы и типы
4.8 Управление созданием и использованием производных типов
5 Дополнительные понятия III: квартальный отчет
5.1 Определение уникальности
5.2 Определение ключей и ссылок на них
5.3 Ограничения XML-схемы в сравнении с атрибутом ID XML 1.0
5.4 Импортирование типов
5.4.1 Библиотеки типов
5.5 Любой элемент, любой атрибут
5.6 schemaLocation
5.7 Соответствие
A Благодарности
B Простые типы и их фасеты
C Использование сущностей
D Регулярные выражения
Все страницы
4.8 Управление созданием и использованием производных типов

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

Язык XML-схемы обеспечивает несколько механизмов, которые управляют образованием типов. Один из этих механизмов позволяет автору схемы ограничить получение новых типов из данного комплексного типа: (a) - новые типы не могут быть получены с использованием ограничений, (b) - новые типы не могут быть получены с использованием расширений, (c) - новые типы не могут быть получены вообще. Чтобы проиллюстрировать сказанное, предположим, что мы хотим предотвратить любое образование новых типов из типа Address методом ограничения. Будем считать, что мы намереваемся использовать этот тип только как базовый для расширенных типов типа USAddress и UKAddress. Чтобы предотвратить любые такие образования немного изменим первоначальное определение Address так, как показано ниже.

Предотвращение образования типов методом ограничения типа Address:

Значение restriction атрибута final предотвращает образования новых типов методом ограничения. Значение #all предотвращает образование новых типов вообще. Значение extension предотвращает образования новых типов методом расширения. Кроме того, у элемента schema существует необязательный атрибут finalDefault, который может принимать одно из значений указанных для атрибута final. Появление атрибута finalDefault эквивалентно определению атрибута final для каждого определения типа и объявления элемента в схеме.

Другой механизм контроля над образованием типов, заключается в указании того, какие фасеты могут быть применены при образовании нового простого типа. При определении простого типа к любому из его фасетов может быть применен атрибут fixed. Этот атрибут предотвращает порождение нового типа путем изменения значения фиксированного фасета. Например, определим простой тип Postcode.

Защита изменений фасетов для простого типа:

Как только тип Postcode определен, мы можем получить из него новый тип почтового кода. Новый тип получим путем применения фасета, неограниченного в базовом типе Postcode (см., пример ниже).

Корректное образование нового типа из Postcode:

Однако мы не можем получить новый почтовый код, в котором мы повторно переопределяем какой-либо фасет, зафиксированный в базовом определении.

Некорректное образование нового типа из Postcode:

В дополнение к механизмам, которые управляют порождением новых типов, язык XML-схемы обеспечивают механизм, который управляет тем, какие образования и группы замены могут использоваться в документах. В подразделе 4.3, мы описали, как производные типы USAddress и UKAddress, могли использоваться в документах через элементы shipTo и billTo. Поскольку эти производные типы получены из типа Address, то они могут заменить модель содержимого, обеспеченную типом Address. Однако замену производными типами можно контролировать с помощью атрибута block, задаваемого в определении базового типа. Например, если мы хотим блокировать использование любого, образованного методом ограничения типа, вместо Address (возможно, поэтому мы определили Address с final="restriction"), то мы можем изменить первоначальное определение Address указанным ниже образом.

Защита от использования в документах типа Address, полученного методом ограничения:

Атрибут block="restriction" препятствует замене в документах типа Address всеми порожденным из него, в соответствии с методом ограничения, типами. Однако это не препятствовало бы UKAddress и USAddress заменять Address, поскольку они были получены методом расширения. Предотвращение замены модели содержимого базового типа порожденными типами вообще, или типами, образованными методом расширения, обозначено значениями #all и extension соответственно. Как и в случае с final, у элемента schema существует дополнительный атрибут blockDefault, значение которого может быть одним из значений, которые может принимать атрибут block. Эффект от определения атрибута blockDefault эквивалентен определению атрибута block в каждом определении типа и объявлении элемента в схеме.



 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий: