Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мультимедиа.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
234 Кб
Скачать
☆

1 Способ

1

<xs:element name="название элемента" type="название типа" />

2

<xs:complexType name="название типа">

3

Описание типа

4

</xs:complexType>

2 Способ

1

<xs:element name="root">

2

Описание типа элемента

3

</xs:element>

Вы можете использовать как первый способ, так и второй. Все они работают одинаково. Вопрос лишь в удобстве в данном конкретном случае.

Далее после объявления элемента мы указываем, что он комплексного типа (<xs:complexType>) и перечисляем (<xs:sequance>) вложенные элементы. В данном случае это элементы name и age с типами «xs:string» и «xs:integer». Префикс xs означает, что это базовый тип, который уже описан в стандарте XML Schema.

Запись атрибутов:

<attribute

default = string

fixed = string

form = (qualified | unqualified)

id = ID

name = NCName

ref = QName

type = QName

use = (optional | prohibited | required): optional

{any attributes with non-schema Namespace...}>

Content: (annotation?, (simpleType?))

</attribute>

Атрибут sequence определяет фиксированный порядок вхождений дочерних элементов. Если порядок не важен, необходимо использовать choice. В этом случае допускается и по несколько вхождений, число которых можно управлять:

minOccurs="2" - минимальной количество 2

maxOccurs="10" - максимальное количество 10

maxOccurs="unbounded" - неограниченное число.

Пример:

<xs:element name="zooAnimals">

<xs:complexType>

<xs:sequence minOccurs="0" maxOccurs="unbounded">

<xs:element name="elephant"/>

<xs:element name="bear"/>

<xs:element name="giraffe"/>

</xs:sequence>

</xs:complexType>

</xs:element>.

18. Простые и комплексные типы в xml Schema. Типы атрибутов.

Элементы бывают простыми и сложными (комплексными).

Простые элементы не могут иметь атрибуты и содержимое смешанного типа, а сложные – могут. Содержимое смешанного типа – это возможность использовать внутри элемента дочерние элементы и текст (смешанное содержимое) .

Простые определяются с помощью вложенного элемента <xs:simpleType>.

Сложные определяются с помощью <xs:complexType> (спецификация по адресу: http://msdn.microsoft.com/ru-ru/library/vstudio/ms256067(v=vs.90).aspx).

В отличие от простых элементов сложные элементы могут иметь атрибуты и содержимое смешанного типа. Последовательность появления дочерних элементов определяется с помощью конструкции <xs:sequence>

Например, сложный элемент Computer с установленной последовательностью появления элементов (сначала HDD, потом Motherboard) можно определить так:

<xs:complexType name=”Computer”>

<xs:sequence>

<xs:element name=”HDD” type=”xs:string”/>

<xs:element name=”Motherboard” type=”xs:string”/>

</xs:sequence>

<xs:attribute name=”model” type=”xs:string” fixed=”NewModel”/>

<xsd:complexType>

Объявление атрибута:

<attribute

default = string

fixed = string

form = (qualified | unqualified)

id = ID

name = NCName

ref = QName

type = QName

use = (optional | prohibited | required): optional

{any attributes with non-schema Namespace...}>

Content: (annotation?, (simpleType?))

</attribute>

default

Атрибут со значением по умолчанию. Если атрибут не указан в экземпляре внутри XML-документа, атрибуту присваивается заданное значение. Если атрибут не присутствует в экземпляре документа, то он должен отобразиться в модуле проверки после обработки схемы. Обработчики схемы должны действовать таким образом, будто атрибуту задано значение по умолчанию и он фактически не находится в документе экземпляра. Атрибуты Default и fixed не могут присутствовать одновременно.

Необязательный.

fixed

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

Необязательный.

type

Имя встроенного типа данных или простого типа данных, определенного в этой схеме (или другой схеме, указанной конкретным пространством имен). Тип должен быть именем QName. Этот тип может включать префикс пространства имен. Атрибут type может присутствовать, только если в содержимом не содержится элемент simpleType.

Необязательный.

Типы атрибутов по способу использования:

Выражается через значение параметра use (Необязательный).

Если этот атрибут указан, то он должен принять одно из следующих значений.

optional - атрибут является необязательным и может принимать любое значение. Это значение по умолчанию. Следующие примеры эквивалентны.

<xs:attribute name="myattr" type="xs:string"/>

<xs:attribute name="myattr" type="xs:string" use="optional"/>

prohibited - атрибут нельзя использовать. Этот атрибут используется в ограничении другого сложного типа, чтобы запретить использование существующих атрибутов.

<xs:complexType name="A">

<xs:attribute name="x" type="xs:NCName"/>

<xs:attribute name="y" type="xs:QName"/>

</xs:complexType>

<xs:complexType name="B">

<xs:complexContent>

<xs:restriction base="xs:A">

<xs:attribute name="x" use="required" />

<xs:attribute name="y" use="prohibited"/>

</xs:restriction>

</xs:complexContent>

</xs:complexType>

required - атрибут должен отобразиться один раз (обязательно).

Атрибут необходим и может принимать любое значение, допускаемое определением типа этого атрибута.

<xs:attribute name="myattr" type="xs:string" use="required"/>

Атрибут используется в ограничении или расширении другого сложного типа, он требует существования конкретного атрибута или атрибутов.

<xs:complexType name="A">

<xs:attribute name="x" type="xs:NCName"/>

<xs:attribute name="y" type="xs:QName"/>

</xs:complexType>

<xs:complexType name="B">

<xs:complexContent>

<xs:restriction base="xs:A">

<xs:attribute name="x" use="required" />

<xs:attribute name="y" use="prohibited"/>

</xs:restriction>

</xs:complexContent>

</xs:complexType>

Если атрибут объявлен как глобальный (его родителем является элемент schema), то он необходим во всех элементах схемы.