Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-04.doc
Скачиваний:
5
Добавлен:
12.05.2015
Размер:
192 Кб
Скачать

4.2.11. Структура схемы

4.2.11.1. Элементschema

Схема представляется в XMLкак один или более документов схемы, т.е. одним или более информационных элементовschema. Каждый документ схемы содержит определения типов и объявления элементов, которые имеет общее пространство имен. Документ схемы, который имеет один или более элементовimport, соответствует схеме, компоненты которой имеют более одного целевого пространства имен.

Элемент schemaимеет следующий формат:

<префикс:schema

attributeFormDefault = (qualified | unqualified) : unqualified

elementFormDefault = (qualified | unqualified) : unqualified

blockDefault = (#all | List (extension | restriction |

substitution)) : ''

finalDefault = (#all | List (extension | restriction)) : ''

xmnls[:префикс] = anyURI

targetNamespace = anyURI

id = ID

version = token

xml:lang = language

>

((include | import | redefine | annotation)*,

(((simpleType | complexType | group | attributeGroup) |

element | attribute | notation), annotation*)*)

</префикс:schema>

Атрибут attributeFormDefaultуказывает, должны ли в объявлениях атрибутов использоваться имена с префиксом пространства имен. Если значение этого атрибутаunqualified, то все объявления локальных атрибутов не должны иметь префиксов пространства имен, а если значение равноqualified, то все объявления атрибутов в схеме должны содержать префиксы пространства имен. Если атрибут не указан, то его значение по умолчанию равноunqualified.

Атрибут elementFormDefaultдействует аналогично атрибутуattributeFormDefault, но по отношению к объявлениям элементов в схеме.

Атрибут blockDefaultзапрещает замену элементов в схеме элементами их групп подстановки (значениеsubstitution) или запрещает замену элементов их производными типами (значениеrestriction) или запрещает замену элементов, элементами тех типов, для которых данные типы являются производными (значениеextension), если же задано значение#all, то блокируются все приведенные выше замены.

Атрибут finalDefaultдействует аналогично атрибутуblock, но блокирует только замены типаrestrictionи/илиextension.

Атрибут xmnlsзадает одно или более пространство имен, используемое в этой схеме. Обычно в качестве префикса берется значениеxs илиxsd, а в качестве значения атрибута –URIописания элементов схемы на сайтеW3:

"http://www.w3.org/2001/XMLSchema".

Если префикс не задан, элементы схемы можно использовать без префикса пространства имен.

Атрибут targetNamespaceзадает идентификатор целевого пространства имен, т.е. элементы в этой схеме определены в пространстве имен по адресуURI. Если параметр не указан, то пространство имен, для документа XML, сформированного в соответствии с данной схемой, не определено.

Необязательные атрибуты id,versionиxml:langзадают соответственно идентификатор элемента, версию и язык схемыXML.

4.2.11.2. Включение внешних фрагментов в схему

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

<префикс:include

id = ID

schemaLocation = anyURI

>

(annotation?)

</префикс:include>

Атрибут idприсваивает элементу уникальное имя (необязательный параметр), а атрибутschemaLocationзадает местоположение вставляемого фрагмента, например:

<xsd:include schemaLocation="LibraryBook.xsd"/>

Если необходимо вставить в схему XMLвнешний фрагмент с другим целевым пространством имен, то эта операция выполняется с помощью элементаimport, который имеет следующий формат:

<префикс:import

id = ID

namespace = anyURI

schemaLocation = anyURI

>

(annotation?)

</префикс:import>

Помимо атрибутов idиschemaLocation, имеющих тот же смысл, что и для элементаinclude, задается атрибутnamespace, указывающий местонахождение ресурса для пространства имен, например:

<import namespace="http://www.w3.org/1999/xhtml"

schemaLocation="myHTML.xsd"/>

Для переопределения существующих компонент компонентами внешнего фрагмента используется компонент redefine, имеющий следующий формат:

<префикс:redefine

id = ID

schemaLocation = anyURI

(annotation | (simpleType | complexType | group | attributeGroup))*

</префикс:redefine>

Атрибуты idиschemaLocation, имеют тот же смысл, что и для элементаinclude.

Пример:

<xs:redefine schemaLocation="v1.xsd">

Соседние файлы в папке Лекции