53355

Использование схем в документах XML

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-11-30

691 KB

42 чел.

Лабораторная работа 4-02

Использование схем в документах  XML

1. Цель работы

Целью работы является знакомство приобретение навыков работы со схемами XML.  

  

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый   персональный компьютер (ПК).

2.2. Программное обеспечение: операционная система Windows, программа XMLSpy или другая программа-анализатор схем XML.  

3. Краткие теоретические сведения

3.1. Назначение схем XML

Схема XML (XML Schema) предназначена для определения блоков документа XML и выполняет следующие действия:

  •  задает элементы документа и их атрибуты;
  •  задает иерархию элементов документа;
  •  задает тип элемента (пустой или содержащий текст);
  •  задает типы данных для элементов и атрибутов;
  •  задает значения по умолчанию и фиксированные значения элементов и атрибутов, а также определяет ограничения на значения элементов и атрибутов.

В отличие DTD, в котором используется свой синтаксис, схема XML представляет собой документ XML, описание структуры которого находится по адресам:

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

и

http://www.w3.org/2001/XMLSchema-datatypes.

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

3.2. Типы данных схемы XML

В схеме XML определены различные типы данных. Типы данных в этой схеме разделяются на атомарные (atomic) наборы данных, списки (list) и объединения (unions).

Атомарные типы данных в свою очередь делятся на примитивные и производные (определяемые в терминах других типов данных).

Список является конечным набором атомарных значений. Список является производным типом данных и используемый в нем  атомарный тип данных определяется как itemType. Элементы списка в наборе отделяются друг от друга пробельными символами.

В отличие от списка, объединение включает в себя элементы различных типов данных (эти типы данных определяются как memberTypes данного объединения). Так же, как и список, объединение является производным типом данных.

Типы данных разделяются также на встроенные (определены в спецификации схемы XML) и пользовательские типы данных – типы данных, определяемые пользователем для своей конкретной схемы.

3.2.1. Встроенные примитивные типы данных схемы XML

Встроенные примитивные типы данных схемы XML приведены в табл. 4.2.1.

Таблица 4.2.1. Встроенные примитивные типы данных схемы XML 

Тип данного

Значение

Пример

1. Базовые типы данных

anyType

Корневой тип данных схемы XML.

--

anySimpleType

Корневой тип примитивных данных схемы XML.

--

2. Числовые типы данных

decimal

Целое число или число с десятичной точкой со знаком и переменной точностью.

+12, 5.6, -189

double

Число с плавающей точкой двойной точности (8 байт).

1E4, 12.78e-2, 12, INF или NaN

float

Число с плавающей точкой (4 байта).

-1E4, 1267.43233E12, 12.78e-2, 12

3. Строковые типы данных

anyURI

Ссылка на универсальный идентификатор ресурса (URI).

http://my.com/id.html,

myfile.txt

string

Символьная строка

'abc', "Строка 1"

4. Логический тип данных

boolean

Логическое (булевское) данное: истина или ложь.

true, false, 1, 0

5. Двоичные типы данных

base64binary

Закодированное с помощью алгоритма Base64 двоичное данное.

07BA

hexBinary

Двоичное данное, представляемое в 16-ричном виде.

FFCD

6. Временные данные

date

Календарная дата в формате:

CCYY-MM-DD

2003-03-31

dateTime

Календарная дата и время в формате:

CCYY-MM-DDThh:mm:ss

2003-05-31T13:20:00:05

duration

Продолжительность времени в формате:

PnYnMnDTnHnMnS

P1Y2M3DT10H30M

gDay

День месяца в формате: -DD.

-18

gMonth

Номер месяца в формате: -MM-.

-12-

gMonthDay

Номер месяца и день месяца в формате: -MM-DD.

-05-08

gYear

Год в формате: CCYY

2003

gYearMonth

Год и номер месяца в формате:

CCYY-MM

2003-08

time

Временная отметка в формате:

hh:mm[:ss[.sss[знакHH:MM]]]

(знак – символ "+"или "-", показывающий опережение или отставание местного времени по сравнению с временем UTC)

13:20:00-05:00

7. Типы данных XML

NOTATION

Тип атрибута нотации.

--

QName

Квалифицированное имя XML (имя, перед которым указан префикс пространства имен).

html:h1

3.2.2. Встроенные производные типы данных схемы XML

Встроенные производные примитивные типы данных схемы XML приведены в табл. 4.2.2.

Таблица 4.2.2. Встроенные производные типы данных схемы XML

Тип данного

Производный от

Значение

Пример

1. Числовые типы данных

byte

short

Целые числа от 127 до -128.

1, 0, 126, +10

int

long

Целые числа от 2147483647 до

-2147483648

-1, 0, 126789675,

+ 100000

integer

decimal

Целые числа.

-1, 0, 12678964,

+100000

long

integer

Целые числа от 9223372036854775807 до

-9223372036854775808

-1,0, 12678233, +100000

negativeInteger

nonPositiveInteger

Бесконечный набор отрицательных чисел.

-1, 

-1267433, -100000

nonNegativeInteger

integer

Бесконечный набор нуля и положительных чисел.

1,0, 126789233, +100000

nonpositiveInteger

integer

Бесконечный набор нуля и отрицательных чисел.

-1,0,

-126733, 

-100000

positiveInteger

nonNegativeInteger

Бесконечный набор положительных чисел.

1, 12543233, +100000

short

int

Целые числа от 32767 до-32768.

-1,0, 12678, +10000

unsignedByte

unsignedShort

Целые числа от 0 до 255.

0, 126, 100

unsignedInt

unsignedLong

Целые числа от 0 до 4294967295.

0, 12696754, 100000

unsignedLong

nonNegativeInteger

Целые числа от 0 до

18446744073709551615

0, 12643233, 100000

unsignedShort

unsignedInt

Целые числа от 0 до 65535.

0, 12678, 10000

2. Строковые типы данных

language

token

Идентификатор языка.

en, ru, uk

normalizedString

string

Строка с нормализованными пробельными символами.

"a b c d"

token

normalizedString

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

"Рис. 1"

3. Типы данных XML

name

token

Имя XML.

a:in-line

NCName

name

Имя XML, не содержащее символа ":".

in-line

ENTITY

NCName

Тип атрибута ENTITY.

--

ENTITIES

ENTITY

Тип атрибута ENTITIES.

--

ID

NCName

Тип атрибута ID.

--

IDREF

NCName

Тип атрибута IDREF.

--

IDREFS

IDREF

Тип атрибута IDREFS.

--

NMTOKEN

token

Тип атрибута NMTOKEN.

--

NMTOKENS

NMTOKEN

Тип атрибута NMTOKENS.

--

3.2.3. Свойства данных схемы XML

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

3.2.3.1. Фундаментальные свойства

Фундаментальные свойства данных схемы XML приведены в табл. 4.2.3.

Таблица 4.2.3. Фундаментальные свойства данных схемы XML

Фундаментальное свойство

Значение свойства

equal

Равенство и неравенство величин в пространстве значений.

ordered

Полное или частичное отношение упорядоченности величин в пространстве значений.

bounded

Ограниченность пространства значений по минимуму, по максимуму или и по минимальному и по максимальному значению.

cardinality

Конечность или счетная бесконечность пространства имен.

numeric

Тип данных является числовым или нечисловым.

3.2.3.2. Ограничивающие свойства

Ограничивающие свойства данных схемы XML приведены в табл. 4.2.4.

Таблица 4.2.4. Ограничивающие свойства данных схемы XML

Ограничивающее свойство

Значение свойства

length

длина – зависит от типа данных, например для строки – количество символов в строке, для списка – количество элементов списка

minLength

Минимальное значение свойства length

maxLength

Максимальное значение свойства length.

pattern

Шаблон – регулярное выражение, ограничивающее пространство значений, для формирования шаблона используются те же правила, что и в языке Perl.

enumeration

Ограничение пространства имен с помощью заданного набора значений

whiteSpace

Ограничивает пространство значений типов данных, производных от типа string, причем свойство может иметь одно из трех значений: preserve – строка не меняется, replace – символы табуляции, новой строки и возврата каретки заменяются пробелами, collapse – после обработки строки, производимой для значения replace, в строке удаляются все пробелы в начале и конце строки, а также несколько пробелов внутри строки заменяются одним пробелом

maxInclusive

Включающая верхняя граница пространства значений для набора данных со свойством ordered.

minInclusive

Включающая нижняя граница пространства значений для набора данных со свойством ordered.

maxExclusive

Исключающая верхняя граница пространства значений для набора данных со свойством ordered.

minExclusive

Исключающая верхняя и нижняя граница пространства значений для набора данных со свойством ordered.

totalDigits

Положительное число, определяющее максимальное количество цифр в числе для типов данных, производных от decimal.

fractionDigits

Положительное число, определяющее максимальное количество цифр в дробной части числа для типов данных, производных от decimal.

3.2.3.3. Ограничивающие условия для встроенных типов данных схемы XML

Ограничивающие условия для встроенных типов данных схемы XML приведены в табл. 4.2.5.

Таблица 4.2.5. Ограничивающие условия для встроенных типов данных схемы XML 

Встроенный тип 

length

minLength

maxLength

pattern

enumeration

whitespace

maxInclusive

maxInclusive

minInclusive

minExclusive

totalDigits

fractionDigits

anyURI

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

base64Binary

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

boolean

 

 

 

+ 

 

+ 

 

 

 

 

 

 

byte

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

date

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

dateTime

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

decimal

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

double

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

duration

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

ENTITIES

+ 

+ 

+ 

 

+ 

+ 

 

 

 

 

 

 

ENTITY

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

float

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

gDay

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

gMonth

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

gMonthDay

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

gYear

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

gYearMonth

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

hexBinary

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

ID

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

IDREF

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

IDREFS

+ 

+ 

+ 

 

+ 

+ 

 

 

 

 

 

 

int

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

integer

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

language

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

list

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

long

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

Name

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

NCName

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

negativeInteger

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

NMTOKEN

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

NMTOKENS

+ 

+ 

+ 

 

+ 

+ 

 

 

 

 

 

 

nonNegativeInteger

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

nonPositiveInteger

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

normalizedString

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

NOTATION

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

positiveInteger

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

QName

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

short

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

string

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

time

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

 

 

token

+ 

+ 

+ 

+ 

+ 

+ 

 

 

 

 

 

 

union

 

 

 

+

+

 

 

 

 

 

 

 

unsignedByte

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

unsignedInt

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

unsigned Long

 

 

 

+

+

+

+

+

+

+

+

+

unsignedShort

 

 

 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

+ 

3.3. Компоненты схемы XML

Схема XML состоит из компонент, таких как компоненты определения и компоненты объявления. Если компонент не имеет содержимого, то его можно задавать как пустой элемент. Компоненты объявления связываются с помощью уточненного имени с элементами, которые необходимо проверить. Компоненты определения задают внутренние компоненты схемы, которые используются в других компонентах схемы. Некоторые виды компонент могут иметь целевое пространство имен (target namespace).    

Компоненты схемы XML разбиты на три группы:

  •  первичные компоненты (primary components);
  •  вторичные компоненты (secondary components);
  •  справочные компоненты ("helper" components).

В группу первичных компонент входят:

  •  определения простого типа (simple type definitions);
  •  определения сложного (комплексного) типа (complex type definitions);
  •  объявления атрибутов (attribute declarations);
  •  объявления элементов (element declarations).

Вторичными компонентами являются:

  •  определения группы атрибутов (attribute group definitions);
  •  определения ограничений (identity-constraint definitions);
  •  определение группы моделей (model group definitions);
  •  объявления нотации (notation declarations).

В группу справочных компонент входят:

  •  Аннотации (annotations);
  •  Группы моделей (model groups);
  •  Частицы (particles);
  •  Шаблоны (wildcards);
  •  Использования атрибутов (attribute uses).

На верхнем уровне схемы документа XML, т.е. на уровне дочерних элементов элемента  schema, могут быть определены следующие компоненты:

  •  аннотации;
  •  определения типа (простого или сложного);
  •  объявления элементов;
  •  объявления атрибутов;
  •  объявления группы атрибутов;
  •  объявления группы моделей.

Эти компоненты при таком объявлении называются глобальными компонентами.

3.3.1. Первичные компоненты схемы XML

3.3.1.1. Определения простого типа

Элементы, связанные с определением простого типа, приведены в табл. 4.2.6.


Таблица 4.2.6. Элементы, связанные с определением простого типа

Элемент

Объявление

Назначение

simpleType

<simpleType 

  id = ID 

  name = NCName 

 final = (#all | (list | union |  restriction))

>

(annotation?, (restriction | list | union))

</simpleType>

Определяет простой тип и задает ограничения и информацию о значениях атрибутов или элементов, содержащих только текст.

list

<list

  id = ID 

  itemType = QName 

>

(annotation?, (simpleType?))

</list>

Определяет элемент простого типа как список значений заданного типа.

union

<union

  id = ID 

  memberTypes = список QName 

>

 (annotation?, (simpleType*))

</union>

Определяет элемент простого типа как коллекцию значений заданных данных типов simpleType.

restriction

<restriction

  base = QName 

  id = ID 

>

(annotation?, (simpleType?,

(minExclusive | minInclusive |

maxExclusive | maxInclusive | totalDigits  | fractionDigits | length |

minLength | maxLength |  enumeration | whiteSpace | pattern)*))

</restriction>

Задает ограничения на определяемый простой тип.

3.3.1.2. Определения комплексного типа

Элементы, связанные с определением комплексного типа, приведены в табл. 4.2.7.


Таблица 4.2.7. Элементы, связанные с определением комплексного типа

Элемент

Объявление

Назначение

complexType

<complexType

  name = NCName

id = ID 

abstract = boolean : false

mixed = boolean : false

  block = (#all|     List(extension | restriction)) 

  final = (#all | List(extension |    restriction))

>

 (annotation?, (simpleContent |

 complexContent |

((sequence | group | all | choice)?, ((attribute | attributeGroup)*, anyAttribute?))))

</complexType>

Определяет элемент XML, содержащий:

  •  пустые элементы;
  •  элементы, содержащие только другие элементы;
  •  элементы, содержащие только текст;
  •  элементы, содержащие и другие элементы, и текст.

simpleContent

<simpleContent

  id = ID >

 (annotation?, (restriction | extension))

</simpleContent>

Содержит расширения и ограничения для комплексного типа, содержащего только текст или для простого типа, не содержащего элементов, в качестве содержимого.

complexContent

<complexContent

  id = ID 

 mixed = boolean : false >

 (annotation?, (restriction | extension))

</complexContent>

Определяет расширения или ограничения для комплексного типа, содержащего только элементы или имеющего смешанное содержимое (текст и элементы).

restriction

<restriction

  base = QName 

  id = ID 

>

 (annotation?, (sequence | choice|

group | all)?, ((attribute |

attributeGroup)*, anyAttribute?))

</restriction>

Определяет ограничения для комплексного типа.

extension

<extension

  base = QName 

  id = ID 

>

 (annotation?, (sequence | choice| group | all)?,

((attribute | attributeGroup)*, anyAttribute?)) 

</extension>

3.3.1.3. Объявления атрибутов и элементов

Объявления атрибутов и элементов приведены в табл. 4.2.8.

Таблица 4.2.8. Объявления атрибутов и элементов в схеме XML

Элемент

Объявление

Назначение

attribute

<attribute 

  name = NCName

ref = QName 

type = QName 

default = string

  fixed = string 

  use = (optional | prohibited |

 required) : optional

    id = ID 

form = (qualified | unqualified)

> 

(annotation?, (simpleType?))

</attribute>

Определяет атрибут документа XML.

<element

    name = NCName 

ref = QName 

type = QName 

id = ID  

default = string

form = (qualified | unqualified)

fixed = string 

abstract = boolean : false

block = (#all| List(extension |

   restriction | substitution)) 

  final = (#all | List(extension |

     restriction)) 

  maxOccurs = (nonNegativeInteger |

     unbounded)  : 1

  minOccurs = nonNegativeInteger : 1

  nillable = boolean : false

    substitutionGroup = QName

>

     (annotation?, ((simpleType | complexType)?,

 (unique | key | keyref)*))

</element>

Определяет элемент (дескриптор) документа XML.

3.3.2. Вторичные компоненты схемы XML

3.3.2.1. Определение группы атрибутов и группы моделей

Определение групп атрибутов и группы моделей приведено в табл. 4.2.9.


Таблица 4.2.9. Определение групп атрибутов и группы моделей

Элемент

Объявление

Назначение

attributeGroup

<attributeGroup

  id = ID

 name = NCName 

 ref = QName

> 

(annotation?),((attribute |

attributeGroup)*,anyAttribute?))

</attributeGroup>

Определяет группу атрибутов.

group

<group

name = NCName 

ref = QName

maxOccurs = nonNegativeInteger |

unbounded  : 1

minOccurs = nonNegativeInteger : 1

>

    (annotation?, (all | choice | sequence))

</group>

Определяет группу элементов (моделей) документа XML.

3.3.2.2. Определения ограничений

Определения ограничений приведены в табл. 4.2.10.

Таблица 4.2.10. Определения ограничений элементов схемы XML

Элемент

Объявление

Назначение

unique

<unique

  id = ID 

  name = NCName 

>

  (annotation?, (selector, field+))

</unique>

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

selector

<selector 

  id = ID 

  xpath = 

 подмножество-выражений-XPath

>

(annotation?)

</selector>

Определяет выражение  XPath, которое задает набор элементов для ограничений идентификации.

field

<field 

  id = ID 

  xpath = 

 подмножество-выражений-XPath

>

(annotation?)

</field>

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

key

<key

  id = ID 

  name = NCName 

>

(annotation?, (selector, field+))

</key>

Определяет значение атрибута или элемента как ключ.

keyref

<keyref

  id = ID 

  name = NCName 

 refer = QName

>

(annotation?, (selector, field+))

</keyref>

Определяет, что значение атрибута или элемента соответствует значениям заданного ключа или уникального элемента.

3.3.2.3. Объявление нотации

Объявление нотации приведено в табл. 4.2.11.

Таблица 4.2.11. Объявление нотации

Элемент

Объявление

Назначение

notation

<notation

  id = ID 

 name = NCName 

 public = anyURI 

  system = anyURI 

>

(annotation?)

</notation>

Описывает формат данных, не являющихся данными XML, в документе XML.

3.3.3. Справочные компоненты схемы XML

3.3.3.1. Аннотации

Элементы, связанные с включением аннотации в документ XML, приведены в табл. 4.2.12.


Таблица 4.2.12. Элементы, связанные с включением аннотации в документ
XML

Элемент

Объявление

Назначение

annotation

<annotation

  id = ID 

>

(appinfo | documentation)*

</annotation>

Определяет комментарии к схеме.

appinfo

<appinfo

  source = anyURI

>

  содержимое-элемента 

</appinfo>

Задает информацию, используемую приложением.

documentation

< documentation

  source = anyURI

 xml:lang = language

>

  содержимое-элемента

</ documentation >

Используется для включения текстовых комментариев в схему.

3.3.3.2. Определения моделей в группе

Определения моделей в группе моделей приведены в табл. 4.2.13.

Таблица 4.2.13. Определения моделей в группе моделей

Элемент

Объявление

Назначение

sequence

<sequence

  id = ID 

  maxOccurs = (nonNegativeInteger |

 unbounded)  : 1

 minOccurs = nonNegativeInteger : 1

>

    (annotation?, (element | group | choice |

sequence | any)*)

</sequence>

Определяет, что дочерние элементы данного элемента должны появляться в заданной последовательности.

choice

<choice

  id = ID 

  maxOccurs = (nonNegativeInteger |

  unbounded)  : 1

 minOccurs = nonNegativeInteger : 1

>

    (annotation?, (element | group | choice |

 sequence | any)*)

</choice>

Разрешает задавать в родительском элементе только один из присутствующих в списке элементов.

all

<all

  id = ID 

  maxOccurs = 1  : 1

 minOccurs = (0 | 1) : 1

>

    (annotation?, element*)

</all>

Определяет, что элементы, содержащийся в нем,   могут появляться в родительском элементе в любом порядке, и каждый элемент может появляться 0 или 1 раз.

3.3.3.3. Определения шаблонов

Определения шаблонов приведены в табл. 4.2.14.

Таблица 4.2.14. Определения шаблонов схемы XML

Элемент

Объявление

Назначение

any

<any

  id = ID 

 maxOccurs = (nonNegativeInteger |

 unbounded)  : 1

  minOccurs = nonNegativeInteger : 1

  namespace = ((##any | ##other) |

 List (anyURI |

(##targetNamespace |

 ##local))) : ##any

  processContents = (strict | lax |

 skip) : strict

>

(annotation?)

</any>

Позволяет расширить документ XML элементами, которые не определены в схеме.

anyAttribute

< anyAttribute

  id = ID 

 namespace = ((##any | ##other) |

 List (anyURI |

(##targetNamespace |

##local))) : ##any

  processContents = (strict |

 lax | skip) : strict

>

(annotation?)

</anyAttribute>

Позволяет расширить документ XML атрибутами, которые не определены в схеме.

3.3.4. Определение ограничивающих свойств

Определения ограничивающих свойств приведены в табл. 4.2.15.


Таблица 4.2.15. Определения ограничивающих свойств схемы XML

Элемент

Объявление

Назначение

length

<length

id = ID

 fixed = boolean : false

 value = nonNegativeInteger   

>

 (annotation?)    

</length>

Задание ограничения на длину значения.

minLength

<minLength  

id = ID

 fixed = boolean : false

 value = nonNegativeInteger   

>

 (annotation?)    

</minLength>

Задание ограничения на минимальную длину значения.

maxLength

<maxLength  

id = ID

 fixed = boolean : false

 value = nonNegativeInteger   

>

 (annotation?)    

</maxLength>

Задание ограничения на максимальную длину значения.

maxInclusive

<maxInclusive

id = ID

 fixed = boolean : false 

 value = anySimpleType

>

(annotation?)

 </maxInclusive>

Задание ограничения на включающую верхнюю границу значения.

minInclusive

<minInclusive

id = ID

 fixed = boolean : false 

 value = anySimpleType

>

(annotation?)

 </minInclusive>

Задание ограничения на включающую нижнюю границу значения.

maxExclusive

<maxExclusive

id = ID

 fixed = boolean : false 

 value = anySimpleType

>

(annotation?)

 </maxInclusive>

Задание ограничения на исключающую верхнюю границу значения.

minExclusive

<minExclusive

id = ID

 fixed = boolean : false 

 value = anySimpleType

>

(annotation?)

 </minExclusive>

Задание ограничения на исключающую нижнюю границу значения.

pattern

<pattern

id = ID                                               value = anySimpleType

>                       

  (annotation?)   

</pattern>

Задание ограничения на шаблон значения.

enumeration

< enumeration

id = ID                                               value = anySimpleType

>                       

  (annotation?)   

</ enumeration >

Задание ограничения на список допустимых значений.

whiteSpace

< whiteSpace

id = ID                                               fixed = boolean : false

 value = ('collapse' |

 'preserve' | 'replace')

>                       

  (annotation?)   

</ whiteSpace >

Задание ограничения на пробельные символы.

totalDigits

< totalDigits

id = ID                                               fixed = boolean : false

 value = positiveInteger 

>                       

  (annotation?)   

</ totalDigits >

Задание ограничения на количество цифр в числе.

fractionDigits

< fractionDigits

id = ID                                               fixed = boolean : false

 value = nonNegativeInteger 

>                       

  (annotation?)   

</ fractionDigits >

Задание ограничения на количество цифр в числе.

3.3.5. Компоненты схемы в целом

Объявления для компонента schema и связанных с ней компонент приведены в табл. 4.2.16.


Таблица 4.2.16. Объявления для компонента
schema и связанных с ней компонент

Элемент

Объявление

Назначение

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>

Объявление схемы XML.

include

<include

  id = ID 

 schemaLocation = anyURI 

>

   (annotation?)

</include>

Включение  в схему XML внешнего фрагмента с тем же целевым пространством имен.

import

<import

  id = ID 

namespace = anyURI

 schemaLocation = anyURI 

>

   (annotation?)

</import>

Включение в схему XML внешнего фрагмента с другим целевым пространством имен.

redefine

<redefine

  id = ID 

  schemaLocation = anyURI 

>

    (annotation | (simpleType | complexType |

group | attributeGroup))*

</redefine

Переопределение существующих компонент компонентами внешнего фрагмента.

3.3.6. Назначение атрибутов в компонентах схемы XML

В табл. 4.2.17 приведены имена атрибутов в компонентах схемы XML и их назначение:

Таблица 4.2.17. Атрибуты в компонентах схемы XML

Имя атрибута

Назначение атрибута

abstract

Указывает, что элемент просто задает другие элементы, которые находятся в его группе подстановки (substitutionGroup).

attributeFormDefault

Указывает,  должны ли в объявлениях атрибутов использоваться имена с префиксом пространства имен.

base

Определяет имя встроенного типа данных, либо имя элемента типа <simpleType> или <complexType>.

block

Запрещает замену этого элемента в соответствие со значением атрибута.

blockDefault

Запрещает замену элементов в схеме в соответствие со значением атрибута.

default

Значение атрибута или элемента по умолчанию

elementFormDefault

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

final

Запрещает замену этого типа элемента в соответствие со значением атрибута.

finalDefault

Действует аналогично атрибуту blockDefault.

fixed

Фиксированное значение элемента или атрибута.

form

Используется для отмены значения заданного в атрибуте attributeFormDefault элемента <schema> или в атрибуте form элемента-родителя.

id

Необязательный уникальный идентификатор элемента схемы XML.

itemType

Определяет имя встроенного типа данных или элемента данных простого типа.

maxOccurs

Максимальное количество раз, которое элемент должен встречаться в документе XML.

minOccurs

Минимальное количество раз, которое элемент должен встречаться в документе XML.

memberTypes

Определяет список данных встроенного типа или данных простого типа.

mixed

Определяет, могут ли символьные данные появляться между дочерними элементами определения комплексного типа.

name

Имя элемента схемы XML.

namespace

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

nillable

Указывает, что для элемента недоступно никакое значение, когда для него задается атрибут nil.

processContent

Определяет, как процессор XML должен организовать обработку элементов, определенных данным элементом

public

Определяет ссылку на общедоступное URI.

ref

Ссылка на объявление элемента или атрибута.

refer

Определяет имя ключа или уникального элемента, определенного в данной или другой схеме.

schemaLocation

Задает местоположение вставляемого фрагмента схемы XML.

source

Задает ссылку на источник информации о приложении.

substitutionGroup

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

system

Определяет ссылку на системное URI.

targetNamespace

Задает идентификатор целевого пространства имен.

type

Задает тип данных значения атрибута.

use

Задает режим использования атрибута.

value

Задает значение для элемента.

version

Задает версию и язык схемы XML.

xml:lang

Задает язык описания документации или схемы XML.

xmnls[:префикс]

Задает одно или более пространство имен, используемое в этой схеме.

xpath

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

3.3.7. Допустимые значения атрибутов в компонентах схемы XML

В табл. 4.2.18 приведены допустимые значения для тех атрибутов  в компонентах схемы XML, которые имеют фиксированный  набор значений.

Таблица 4.2.18. Допустимые значения для тех атрибутов  в компонентах схемы XML, которые имеют фиксированный  набор значений

Значение атрибута

Имя атрибута

Действие

##any

namespace

Допустимы элементы из любого пространства имен.

##local

namespace

Элементы должны задаваться не из пространства имен.

##other

namespace

Могут присутствовать элементы из любого пространства имен, отличного от пространства имен, заданного для родительского элемента.

##targetNamespace

namespace

Могут присутствовать элементы из пространства имен, заданного для родительского элемента.

#all

final

Блокируются все замены.

extension

block, final, blockDefault

Запрещает замену этого типа элемента производным расширяющим типом.

lax

processContents

Аналогично значению  strict, но если схема не может быть получена, сообщение об ошибке не генерируется.

list

final

Запрещает представление данного типа элемента в виде списка.

optional

use

Атрибут является необязательным.

prohibited

use

Атрибут является запрещенным.

qualified

form, elementFormDefault,

attributeFormDefault

Все объявления в схеме должны содержать префиксы пространства имен.

required

use

Атрибут является обязательным.

restriction

block, final, blockDefault

Запрещает замену этого типа элемента производным сужающим типом.

skip

processContents

Процессор  XML пропускает  проверку действительности элементов.

strict

processContents

Процессор XML должен получить схему необходимых пространств имен и проверить действительность элементов.

substitution

block, blockDefault

Запрещает замену элемента элементом его группы подстановки.

unbounded

maxOccurs

Количество раз, которые элемент может повторяться, не ограничено.

union

final

Запрещает представление данного типа элемента в виде объединения.

unqualified

form, elementFormDefault,

attributeFormDefault

Все объявления не должны иметь префиксов пространства имен

3.3.8. Использование регулярных выражений в схемах XML

3.3.8.1. Метасимволы

Внутри регулярного выражения можно использовать следующие метасимволы:

  •  "\" – если следующий символ в обычном режиме имеет какое-либо специальное значение, то он теряет это свое специальное значение и рассматривается как обычный символ. Если следующий символ в обычном режиме не имеет никакого специального значения, то он может получить такое значение, будучи соединенным с символом "\";
  •  "|" начало альтернативного поиска;
  •  "." – на данном месте в строке может находиться любой символ (за исключением символа перевода строки);
  •  "+" – предыдущий символ может повторяться в строке поиска один или более раз;
  •  "*" – предыдущий символ может повторяться в строке поиска ноль или более раз;
  •  "?" – предыдущий символ может повторяться в строке поиска один раз или отсутствовать;
  •  "(" и ")" – начало и окончание группы элементов;
  •  "{" и "}" – начало и окончание квантификатора;
  •  "[" и "]" – начало и окончание описания класса символов;
  •  "^" – поиск в начале строки (или в начале каждой подстроки в строке, состоящей из нескольких подстрок, разделенных символами "\n").

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

3.3.8.2. Ссылки на символы

Ссылки на символы формируются одним из следующих способов:

  •  &#xHH; – где HH представляет   собой шестнадцатеричный код символа в кодировке, указанной в атрибуте encoding объявления документа XML (в представлении кода можно использовать буквы a-f как в нижнем, так и в верхнем регистре);

&#DD; – где DD представляет   собой десятичный код символа в кодировке, указанной в атрибуте encoding объявления документа XML.

3.3.8.3. Операторы повторения  

Операторы повторения, используемые в схемах XML, приведены в табл. 4.2.19.

Таблица 4.2.19. Операторы повторения, используемые в схемах XML

Оператор

Действие

?

0 или 1 раз.

*

0 и более раз.

+

1 и более раз.

{m,n}

От m до n раз.

{,n}

По крайней мере, n раз.

{m}

Ровно m раз.

3.3.8.4. Операторы диапазона символов

Для определения собственных подмножеств символов используются выражения, заключенные в квадратные скобки (символы "[" и "]").  Квадратные скобки внутри регулярного выражения считаются одним символом, который может принимать значения, перечисленные внутри этих скобок. Внутри квадратных скобок могут использоваться только следующие метасимволы:

  •  "-" – используется для задания набора символов из одного промежутка (например, все цифры могут быть заданы как [0-9]);
  •  "^" – если  этот символ стоит первым в квадратных скобках, он рассматривается как символ отрицания (например, [^0-9] задает все нецифровые символы);

"\" – делает следующие за ним метасимволы "-", "^" и "]" обычными символами (например, все виды скобок могут быть заданы как [(){}<>[\]]).

3.3.8.5. Специальные символы

Специальные символы, используемые в регулярных выражениях схем XML, приведены в табл. 4.2.20.


Таблица 4.2.20. Специальные символы, используемые в регулярных выражениях схем
XML

Символ

Действие

\n

Переход на новую строку.

\r

Возврат каретки.

\t

Горизонтальная табуляция.

.

Любой символ, за исключением символов \n и \r.

\s

Все пробельные символы (символ пробела, символы \n, \r и \t).

\S

Все непробельные символы.

\i

Начальные символы имени XML (буква, символы "_" или ":").

\I

Все символы, которые не являются начальными символами имени XML.

\c

Символы имени XML (буква, цифра, символы "_", "-", "." и ":").

\C

Все символы, которые не являются символами имени XML.

\d

Цифры.

\D

Все символы, которые не являются цифрами.

\w

Символ буквы или цифры.

\W

Все символы, не являющиеся буквами и цифрами.

\p{isблок}

Все символы Unicode, принадлежащие данному блоку кодировки, например, \p{isBasicLatin} – все символы, принадлежащие базовому латинскому блоку кодировки или \p{isCyrillic} – все символы, принадлежащие блоку кодировки кириллицы.

\p{L}

Все буквы.

\p{Lсвойство}

Уточнение \p{L}. Допустимы следующие значения свойства: u – верхний регистр, l – нижний регистр, t – заголовок, m – модификатор, o – другое.

\p{M}

Все метки.

\p{Mсвойство}

Уточнение \p{M}. Допустимы следующие значения свойства: n – непробельные, c – пробельные комбинированные, e – закрывающие.

\p{N}

Все цифры.

\p{Nсвойство}

Уточнение \p{N}. Допустимы следующие значения свойства: d – десятичная цифра, l – буква, o – другое.

\p{P}

Все знаки пунктуации.

\p{Pсвойство}

Уточнение \p{P}. Допустимы следующие значения свойства: c – коннектор, d – тире, s – открывающий, е – закрывающий, i – начальная кавычка, f – конечная кавычка, o – другое.

\p{Z}

Все разделители.

\p{Zсвойство}

Уточнение \p{Z}. Допустимы следующие значения свойства: s – пробел, l – строка, p – абзац.

\p{S}

Все символы.

\p{Sсвойство}

Уточнение \p{S}. Допустимы следующие значения свойства: m – математический,  c – валюта, k – модификатор, o – другое.

\p{C}

Все другое.

\p{Cсвойство}

Уточнение \p{C}. Допустимы следующие значения свойства: c – управление,  f – формат, o – личное использование, n – не определено.

3.4. Включение схемы в документ XML

Для включения схемы в документ XML в спецификации определены атрибуты, schemaLocation или noNamespaceSchemaLocation, которые задают URI включаемой схемы. Эти атрибуты могут быть заданы в любом элементе документа XML (обычно задаются в корневом элементе). Наряду с одним из атрибутов schemaLocation или noNamespaceSchemaLocation, в элементе должен быть задан атрибут     xmnls  (с префиксом или без префикса), имеющий значение:

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

Первый атрибут включает схему, для которой в дескрипторе <schema> задан атрибут  targetNamespace. Второй атрибут  включает схему, для которой не задано целевое пространство имен, т.е. в дескрипторе <schema> не задан атрибут  targetNamespace.

3.5. Формирование схем в XMLSpy 2006 Home Edition

Программа XMLSpy 2006 Home Edition (в дальнейшем XMLSpy) предоставляет удобные графические средства для формирования схем документов XML.

3.5.1. Создание схемы

Для создания схемы надо нажать кнопку на панели инструментов или выполнить команду New в меню File. В открывшемся окне выбирается тип документа (W3C XML Schema) (рис. 4.2.1) и нажимается кнопка OK.

Рис. 4.2.1. Выбор типа документа для схемы

Формирование схемы в графическом режиме выполняется при нажатии кнопки Schema/WSDL в нижней части главного окна.

3.5.2. Задание элемента schema для схемы

Значения атрибутов элемента schema (см. 3.3.5) задаются в диалоговом окне Schema settings, которое выводится при нажатии кнопки или при выполнении команды Schema Settings меню Schema Design (рис. 4.2.2).

Рис. 4.2.2. Установка значений атрибутов элемента schema

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

3.5.3. Виды представления данных схемы

Формирование схемы документа XML в графическом режиме выполняется в одном из двух видов:

  •  общее представление (Schema Overview);
  •  модели содержимого отдельных глобальных компонент (Content Model View).

3.5.3.1. Формирование схемы с использованием ее общего представления

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

При формировании схемы с использованием ее общего представления модификация компонент выполняется с помощью следующих кнопок в верхней части главного окна:

  •   – добавление компонента в конец схемы;
  •   – вставка компонента  схемы перед компонентом в позиции курсора;
  •  – удаление компонента в позиции курсора.

После нажатия кнопки  добавления () или вставки () на экран выводится контекстное меню, позволяющее задать тип нового компонента (рис. 4.2.3).

Рис. 4.2.3. Контекстное меню выбора типа нового компонента

После добавления или вставки компонента можно задать его имя в прямоугольнике синего цвета и аннотацию (в поле ann:).

Структура компонентов выводится в панели Components окна справочника в правой части. Атрибуты нового компонента и ограничивающие свойства (см. 3.2.3.2) можно задать соответственно в панелях Details и Facets.

Для задания атрибутов компонента используются также панель Attributes в нижней панели главного окна.

Добавление, вставка и удаление атрибутов выполняется с помощью кнопок  , и в верней части панели.

После нажатия кнопки добавления или вставки на экран выводится контекстное меню (рис. 4.2.4), задающее тип атрибута,

Рис. 4.2.4. Контекстное меню выбора типа атрибута

Если выбрана команда Attribute, на экран выводится строка задания атрибута. В поле Name вводится имя атрибута, в поле Type из раскрывающегося меню выбирается тип атрибута, в поле Use задается использование атрибута (обязательный – required, необязательный – optional или запрещенный – prohibited), в поле Default указывается значение атрибута по умолчанию, а в поле Fixed – фиксированное значение для атрибута (рис. 4.2.5).

Рис. 4.2.5. Пример задания атрибута

При выборе типа атрибута или при щелчке мышью по значению поля Type в нижней части панели Facets появляются кнопки Facets, Patterns и Enumerations. Первая позволяет задать ограничивающие условия для атрибута (рис. 4.2.6а), вторая – шаблоны (рис. 4.2.6б), третья – атрибуты по перечислению, т.е. атрибуты, значения которых являются одним из элементов заданного списка (рис. 4.2.6в). Добавление, вставка и удаление элементов списка выполняется с помощью кнопок , и в верней части панели Facets.

Рис. 4.2.6. Пример задания параметров атрибута: а) ограничивающих условий;

б) шаблона; в) списка допустимых значений

 

Если выбрана команда Attribute Group, в поле grp вводится имя группы, а если выбрана команда Any Attribute, в поле any вводится одно из допустимых значений атрибута (см. 3.3.7).

3.5.3.1. Формирование схемы с использованием модели содержимого

Представление в виде модели содержимого имеют следующие типы компонент:

  •  комплексные типы;
  •  объявления элементов;
  •  группы моделей.

Эти типы компонент в общем представлении схемы отмечены слева значком . При щелчке по этому значку для этого компонента задается вид модели содержимого. Обратный переход из вида модели содержимого в вид общего представления схемы выполняется при нажатии кнопки в левой верхней части главного окна.

В модели содержимого все элементы представлены в графическом виде и делятся на две группы: структурные элементы и компоненты.

Структурные элементы определяют порядок, в котором будут следовать дочерние компоненты какого-либо компонента (модель компонента). Можно задать три модели компонента (см. 3.3.3.2): Sequence (последовательный), Choice (выбор) и Any (любой).

Для задания дочерних компонент надо сначала щелкнуть по родительскому компоненту правой кнопкой мыши и в открывшемся контекстном меню выбрать порядок следования компонент (рис. 4.2.7).

Рис. 4.2.7. Выбор порядка следования дочерних компонент

Затем, щелкнув правой кнопкой мыши по структурному элементу можно задать дочерний компонент или последовательность компонентов для родительского компонента (рис. 4.2.8).

Рис. 4.2.8. Задание дочернего компонента

 

Таки же образом можно задать остальные дочерние элементы. Графические представления компонента и его дочерних компонент в зависимости от заданного варианта структурного  элемента (Sequence, Choice или Any) приведены на рис. 4.2.9.

Рис. 4.2.9. Графическое представление компонента и его дочерних компонент

для разных моделей: а) модели Sequence; б) модели Choice; в) модели  Any

Помимо команды Add child в контекстном меню структурного элемента или компонента можно выполнить следующие команды:

  •  Insert – вставка дочернего элемента перед выделенным дочерним элементом;
  •  Append – добавление нового дочернего элемента после последнего дочернего элемента;
  •  Change Model – изменение уже заданной модели компонента;
  •  New Global – создание нового глобального компонента;
  •  Make Global – преобразование выделенного компонента в глобальный компонент;
  •  Optional – преобразование обязательного компонента в необязательный и обратное преобразование;
  •  Unbounded – определение выделенного компонента как множественного с количеством повторений от 1 до бесконечности;
  •  Reference – определение выделенного компонента как ссылки на глобальный компонент с тем же именем и отмена такой ссылки;
  •  Go to Definition – если компонент является ссылкой на глобальный компонент с тем же именем, переход к этому глобальному компоненту;
  •  Editредактирование имени компонента;
  •  Edit Annotation in Diagram – редактирование аннотации типа документации (documentation) для выделенного компонента (см. 3.3.3.1);
  •  Whole Annotation Data – создание и редактирование аннотаций для выделенного компонента (см. 3.3.3.1).

Последняя команда меню выводит на экран окно (рис. 4.2.10), в котором можно с помощью кнопок , и в верней части окна добавить, вставить или удалить аннотацию для выделенного компонента. При добавлении или вставке в поле Kind задается  тип аннотации (documentation или appinfo) с помощью раскрывающегося меню (doc или app), в поле Source задается значение атрибута source в элементе documentation или appinfo, а в поле Content – текстовое содержимое соответствующего элемента.

Рис. 4.2.10. Пример задания аннотаций для компонента

Компоненты модели и их графические представления в зависимости от типа компонента и его структурных свойств приведены в табл. 4.2.21.

Таблица 4.2.21. Компоненты модели и их графические представления в XMLSpy

Наименование компонента

Графическое представление

Пояснения

Одиночный обязательный элемент

Прямоугольник означает элемент, сплошная граница – то, что элемент обязательный. Имя элемента –

single-element с атрибутами minOcc="1" и maxOcc="1". Подсветка синим цветом означает, что элемент выделен (невыделенный элемент имеет белый цвет).

Элемент, имеющий текстовое содержимое

Прямоугольник означает элемент, сплошная граница – то, что элемент обязательный. Имя элемента –

text-element с атрибутами minOcc="1" и maxOcc="1". Полоски в левом верхнем углу означают, что узел имеет текстовое содержимое.

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

Прямоугольник означает элемент, пунктирная граница – то, что элемент необязательный (задается с помощью команды Optional контекстного меню элемента). Имя элемента –

optional-element с атрибутами minOcc="1" и maxOcc="1".

Множественный элемент

Прямоугольник означает элемент, сплошная граница – то, что элемент обязательный. Имя элемента –

multi-element с атрибутами minOcc="1" и maxOcc="5" (значение maxOcc="unbounded" обозначается как символ "").

Родительский элемент

Прямоугольник означает элемент, сплошная граница – то, что элемент обязательный. Имя элемента –

parent-element с атрибутами minOcc="1" и maxOcc="1". Значок "+" справа означает, что элемент имеет дочерние элементы, которые выводятся при щелчке по значку (при этом значок меняется на "-").

Элемент, ссылающийся на глобальный элемент

Прямоугольник означает элемент, сплошная граница – то, что элемент обязательный. Имя элемента –

ref-element с атрибутами minOcc="1" и maxOcc="1". Стрелка слева внизу означает, что элемент ссылается на глобальный элемент с тем же именем.

Комплексный тип

(см. 3.3.1.2)

Этот многоугольник означает, что компонент является комплексным типом с именем complex-type.

Значок "+" справа означает, что компонент имеет дочерние компоненты, которые выводятся при щелчке по значку (при этом значок меняется на "-").

Группа моделей (см. 3.3.3.2)

Этот многоугольник означает, что компонент является группой моделей с именем model-group.

Значок "+" справа означает, что компонент имеет дочерние компоненты, которые выводятся при щелчке по значку (при этом значок меняется на "-").

Групповой символ (wildcards) (см. 3.3.7)

Этот многоугольник с надписью any означает, что компонент является групповым символом, позволяющим вставлять элемент из других схем или других пространств имен.   

3.5.3.3. Пример формирование простой схемы

Ниже следует пример схемы для простого документа XML, приведенного в п. 3.3.3.2 лабораторной работы 4-01.

Формирование схемы содержит следующие этапы:

1. Создание нового файла схемы (с расширением .xsd) с помощью кнопки   на панели инструментов и выбора типа файла (рис. 4.2.1).

2. Задание имени и аннотации в общем представлении схемы для корневого элемента book-description (рис. 4.2.11).

Рис. 4.2.11. Задание имени и аннотации для корневого элемента

3. Переход к модели содержимого для элемента book-description, задание для него структурного элемента типа Sequence и добавление множественного дочернего элемента book (множественность элемента book задается с помощью команды Unbounded контекстного меню) (рис. 4.2.12).

Рис. 4.2.12. Добавление множественного дочернего элемента book 

для элемента book-description

4. Задание для элемента book структурного элемента типа Sequence и добавление дочернего элемента title с текстовым содержимым (текстовое содержимое элемента title задается с помощью установки значения xs:string для атрибута type в панели Details) (рис. 4.2.13).

Рис. 4.2.13. Добавление дочернего элемента title 

для элемента book

5. Аналогичным образом (с помощью команды Append контекстного меню) для элемента book добавляются дочерние элементы author и publisher (рис. 4.2.14).

Рис. 4.2.14. Добавление дочерних элементов author и publisher 

для элемента book

6. Добавление для элемента publisher обязательного атрибута year типа xs:gYear (рис. 4.2.15).

Рис. 4.2.15. Добавление атрибута year для элемента publisher

7. Добавление для элемента publisher необязательного атрибута genre типа xs:string со значением по умолчанию "классика" (рис. 4.2.16).

Рис. 4.2.16. Добавление атрибута для элемента publisher

8. Задание для атрибута genre в панели Facets списка допустимых значений (рис.4.2.17).

Рис. 4.2.17. Задание для атрибута genre списка допустимых значений

9. Сохранение файла схемы с именем bookDesc.xsd.

10. Открытие документа bookDesc.xml и назначение ему схемы с помощью диалогового окна команды Assign Schema меню DTD/Schema (рис. 4.2.18).

Рис. 4.2.18. Присвоение схемы документу XML

11. Проверка соответствия документа XML bookDesc.xml схеме bookDesc.xsd с помощью команды Validate меню XML.

4. Порядок выполнения работы

Создайте схему документа  XML в соответствии с вариантами лабораторной работы 4-01, с учетом заданных для своего варианта ограничений, а также  с приведенными ниже уточнениями и дополнениями для каждого варианта.  Измените документ XML, созданный в лабораторной работе 4-01, в соответствие со схемой и проверьте правильность и действительность схемы и документа XML.  

Вариант 2-01

Создайте схему документа XML для газеты со следующими уточнениями:

  •  сущности author1 и author2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  в элементе <newspaper> значение атрибута name должно быть строковым (от 1 до 15 символов), значение атрибута date должно иметь тип date;
  •  значение элементов <headline>, <resume> и <paragraph> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  значением элемента <author> может быть либо строка со следующим шаблоном "\p{Lu} \p{L}+ (\p{Lu}\.){2}" (заглавная буква любого языка, затем последовательность строчных букв, пробел и два раза заглавная буква и точка), либо один из элементов <author1> или <author2>, а значением атрибута staffer этого элемента должно быть булевское значение.

Вариант 2-02

Создайте схему документа XML для описания пакетов языка Java со следующими уточнениями:

  •  сущности exception1 и exception2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута list-name в элементе  <packet-list>, а также атрибута name в элементах <interface>, <class> и <exception> должно быть строковым (от 1 до 15 символов), содержать буквы и цифры и начинаться с заглавной буквы;
  •  в качестве значений элемента <exception> должно быть строковым (от 1 до 20 символов), содержать буквы и цифры и начинаться с заглавной буквы, либо содержать элементы <exception1> или <exception2>;
  •  значение атрибута name в элементе <packet> должно содержать строчные буквы, цифры и символы "." и начинаться с буквы.

Вариант 2-03

Создайте схему документа XML для научной статьи со следующими уточнениями:

  •  сущности author1 и author2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение элементов <article>, <annotation>, <section>, <subsection> и <paragraph> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  значение элемента <author> должно представлять собой три последовательности букв, начинающиеся с заглавной буквы, либо иметь значение <author1/> или <author2/>;
  •  значение элемента <receiving-date> должно быть типа date.

Вариант 2-04

Создайте схему документа XML для характеристик компьютеров со следующими уточнениями:

  •  сущности processor1 и processor2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута trade-mark в элементах документа  должно содержать буквы, цифры и начинаться с буквы;
  •  элемент <processor> должен иметь одно из следующих значений: 'Itanium', 'UltraSparc' и 'PowerPC', либо иметь значение <processor1/> или <processor2/>;
  •  значение элемента <motherboard> должно содержать буквы, цифры, символ  "-" и начинаться с буквы;
  •  значение атрибута capacity в элементе <hard-drive>  должно содержать от 1 до 3 цифр, за которыми следуют символы  "GB";
  •  значение атрибута capacity в элементе <floppy-drive>  должно содержать десятичное число, за которыми следуют символы  "MB";
  •  элемент <size> должен иметь одно из следующих значений: '17"', '19"', '21"'  и '24"';
  •  элемент <max-resolution> должен иметь одно из следующих значений: '1024×768', '1280×1024',  и '1800×1440'.

Вариант 2-05

Создайте схему документа XML для книг со следующими уточнениями:

  •  сущности publisher1 и publisher2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение элементов <book>, <section>, <chapter> и <paragraph> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  в элементе <book> атрибут edition-index должен быть целым положительным числом, начиная с 1;
  •  значением элемента <author> может быть либо строка со следующим шаблоном "\p{Lu} \p{L}+ (\p{Lu}\.){2}" (заглавная буква любого языка, затем последовательность строчных букв, пробел и два раза заглавная буква и точка), а атрибут first-book в этом элементе должен иметь булевское значение;
  •  элемент <publisher> должен иметь значение последовательности символов, разделенных пробелами, либо значение одного из элементов <publisher1> или <publisher2>;
  •  значение элемента <publication-year> должно быть типа gYear.

Вариант 2-06

Создайте схему документа XML для учебников со следующими уточнениями:

  •  сущности author1 и author2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение элемента <manual>, <annotation>,  <section> и <paragraph> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  в элементе <manual> атрибут edition-index должен быть целым положительным числом, начиная с 1;
  •  значение элемента <author> должно представлять собой три последовательности букв, начинающиеся с заглавной буквы, либо иметь значение <author1/> или <author2/>;
  •  содержимое элемента <lesson>, <section>, <question> и <exercise> должно иметь следующий вид: произвольная последовательность букв, цифр и знаков препинания, причем первым символом этой последовательности должна быть заглавная буква;

Вариант 2-07

Создайте схему документа XML для каталога товаров со следующими уточнениями:

  •  сущности article1 и article2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута title в элементе <catalog>   должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  значение элементов <product>, <specification> и <options>, а также значение атрибута producer в элементе <product>, атрибута title в элементе <catalog>  и  атрибута producer в элементе <request-number> должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  значение элемента <product>  должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы, либо иметь значение <article1/> или <article2/>;
  •  значение атрибутов purchase и sale в элементе <price>   должно быть десятичным числом с двумя цифрами после десятичной точки;
  •  значение элементов <sale-number>, <store-number> и <request-number> должно быть неотрицательным целым числом.

Вариант 2-08

Создайте схему документа XML для заданий на дипломные работы со следующими уточнениями:

  •  сущности adviser1 и adviser2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута section в элементе <calendar-plan>, а также  и значение элементов <theme>, <input-data-item>, <content-item> и <graphics> должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  значение элемента <fio> должно содержать три последовательности букв, начинающихся с заглавной буквы и отделенных друг от друга одним пробелом.
  •  значение атрибута deadline в элементе <task>, а также атрибутов begin-date и end-date в элементе <calendar-plan> должно быть типа date;
  •  значение элемента <consulting> должно содержать три последовательности букв, начинающихся с заглавной буквы и отделенных друг от друга одним пробелом, либо иметь значение <adviser1/> или <adviser2/>.
  •  значение атрибута section в элементе <consulting>   должно быть целым положительным числом или положительным десятичным числом;

Вариант 2-09

Создайте схему документа XML для справочника методов языка Java со следующими уточнениями:

  •  сущности exception1 и exception2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе  <methods-list> должно быть строковым (от 1 до 15 символов), содержать буквы и цифры и начинаться с заглавной буквы;
  •  значением атрибута name элемента <method> должна быть последовательность букв и цифр, начинающаяся с маленькой буквы;
  •  значением атрибута name элемента <class> должна быть последовательность букв и цифр, начинающаяся с заглавной буквы
  •  в качестве значений элемента <modifiers> должно использоваться одно из следующих значений: "public", "private" или "protected", а в качестве значения атрибута static этого элемента – значение типа boolean;
  •  в качестве значений элементов <return-value> и <parameter-type> должно использоваться одно из следующих значений: "int", "String" или "void";
  •  значением элемента <parameter-value> должна быть последовательность букв и цифр, начинающаяся с маленькой буквы;
  •  в качестве значений элемента <exception> должно быть строковым (от 1 до 20 символов), содержать буквы и цифры и начинаться с заглавной буквы, либо содержать элементы <exception1> или <exception2>;
  •  в качестве значения элемента <version> должно использоваться одно из следующих значений: "1.1", "1.2", "1.3", "1.4" или "1.5".

Вариант 2-10

Создайте схему документа XML для  дипломных работ со следующими уточнениями:

  •  сущности specialty1 и specialty2 представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  элемент <fio>  должен содержать три последовательности букв, начинающихся с заглавной буквы и отделенных друг от друга одним пробелом;
  •  значение элементов <theme>, <annotation>, <section>, <second-level-section>, <third-level-section> и <fourth-level-section> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  значение элемента <specialty> должно представлять собой последовательность букв, цифр, а также символов "-" и ".", начинающуюся с заглавной буквы, либо иметь значение <specialty1/> или  <specialty2/>;
  •   значения атрибутов page-number, figure-number, table-number и source-number элемента <annotation> должны быть неотрицательными целыми числами;
  •  содержимое элемента <preface> должно иметь следующий вид: произвольная последовательность букв, цифр и знаков препинания, причем первым символом этой последовательности должна быть заглавная буква;
  •  атрибут index в элементе <section> должен быть определен по следующему шаблону: последовательность из одной или двух цифр;
  •  атрибут index в элементе <second-level-section> должен быть определен по следующему шаблону: две последовательности из одной или двух цифр, разделенные точкой;
  •  атрибут index в элементе <third-level-section> должен быть определен по следующему шаблону: три последовательности из одной или двух цифр, отделенные друг от друга точками;
  •  атрибут index в элементе <fourth-level-section> должен быть определен по следующему шаблону: четыре последовательности из одной или двух цифр, отделенные друг от друга точками;
  •  содержимое элемента <conclusion> должно иметь следующий вид: произвольная последовательность букв, цифр и знаков препинания, причем первым символом этой последовательности должна быть заглавная буква;
  •  содержимое элемента <source> должно иметь следующий вид: последовательность букв, цифр и знаков препинания, причем первым символом этой последовательности должна быть заглавная буква;
  •  значение элемента <end-date>  должно быть типа date.

Вариант 2-11

Создайте схему документа XML для расписания занятий со следующими уточнениями:

  •  сущности subject1 и subject2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  элемент <teacher>  объявляется без атрибута name и должен являться ключом и содержать последовательность букв, начинающуюся с заглавной буквы, после которой следует пробел, затем две последовательности, состоящие из заглавной буквы и точки;
  •  значение элементов <department> и <group> должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  элемент <subject> объявляется без атрибута name и должен являться ключом и содержать последовательность букв и цифр, начинающуюся с заглавной буквы, либо иметь значение <subject1/> или <subject2/>;
  •  значение атрибута value элемента <time-slot> должно являться ключом и должно иметь следующий вид: hh:mm-hh.mm – время (часы и минуты начала и окончания занятия);
  •  элемент <classroom> объявляется без атрибута room и должен являться ключом, а значения его атрибута number должно содержать  от одной до четырех цифры, затем символ "-", за которым следуют одна или две цифры;
  •  элементы <time-slot-ref>, <subject-ref>, <teacher-ref> и <classroom-ref> должны содержать атрибуты ref – ссылки на соответствующие ключи.

Вариант 2-12

Создайте схему документа XML для рабочих программ учебных дисциплин со следующими уточнениями:

  •  сущности specialty1 и specialty2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <study-subject>  и атрибута theme в элементах <lecture>, <practice>, <seminar> и <lab> должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  элемент <specialty> должно представлять собой последовательность букв, цифр, а также символов "-" и ".", начинающуюся с заглавной буквы, либо иметь значение <specialty1/> или  <specialty2/>;
  •  значение элементов <general-information> и <aims-and-goals> должно представлять собой последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  значение элементов <lecture-question>, <practice-question> и <seminar-question> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  элемент <fio>  должен содержать последовательность букв, начинающуюся с заглавной буквы, после которой следует пробел, затем две последовательности, состоящие из заглавной буквы и точки;
  •  элемент <end-date>  должен быть типа date;
  •  содержимое элемента <source> должно иметь следующий вид:

автор+ наименование. – город:издательство, год-издания. – nnn с. 

где автор – фамилия автора (последовательность букв, начинающаяся с заглавной буквы) и один ли два инициала (заглавная буква, за которой следует точка) (если авторов несколько, то они отделяются друг от друга запятой);  наименование – наименование книги – последовательность букв и цифр, начинающаяся с заглавной буквы (список авторов и наименование отделяются друг от друга пробелом); город и издательство – последовательность  букв, начинающаяся с заглавной буквы; год-издания – четыре цифры и nnn – количество страниц (неотрицательное целое число).

Вариант 2-13

Создайте схему документа XML для справочника полей языка Java со следующими уточнениями:

  •  сущности modifier1, modifier2, type1, type2 и type3  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <fields-list>  должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  значение атрибута value в элементе <letter>  должно содержать заглавную латинскую букву;
  •  значение атрибута name в элементе <field>  должно содержать последовательность заглавных латинских букв и символов "_";
  •  значение атрибута name в элементе <class>  должно содержать последовательность заглавных и строчных латинских букв и начинаться с заглавной буквы;
  •  в качестве значений элемента <type>  должно использоваться одно из следующих значений: "int", "String" или "double";
  •  атрибуты static и protected элемента <type> должны иметь булевское значение;
  •  значением элемента value должно быть либо текстовое значение, либо целое число, либо число с плавающей точкой типа double;
  •  в качестве значения элемента <version> должно использоваться одно из следующих значений: "1.1", "1.2", "1.3", "1.4" или "1.5".

Вариант 2-14

Создайте схему документа XML для расписания полетов самолетов со следующими уточнениями:

  •  сущности city1 и city2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  элемент <airport> должен быть задан без атрибута name, являться ключом и  содержать последовательность букв, начинающуюся с заглавной буквы, либо иметь значение <city1/> или <city2/>;
  •  элемент <airplane-type> должен быть задан без атрибута name, являться ключом и  содержать последовательность букв и цифр, начинающуюся с заглавной буквы;
  •  атрибут ref элемента <airplane > должен являться ссылкой на ключ – тип самолета;
  •  атрибут id элемента <current-airport>, а также атрибуты departure-airport и destination-airport  элемента <airplane-table> должны являться ссылкой на ключи – имена аэропортов;
  •  элемент <date> должен содержать данные типа date;
  •  элемент <number> должен содержать целое положительное число, значение которого должно быть уникальным;
  •  элементы <departure-time> и <arrival-time> должны содержать  две цифры, двоеточие, за которым следуют две цифры – час и минута начала занятия.

Вариант 2-15

Создайте схему документа XML для научного отчета по теме со следующими уточнениями:

  •  сущности author1 и author2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  элемент <theme> должен содержать четыре цифры (номер темы), точку, пробел, а затем последовательность слов, причем первое слово должно начинаться с заглавной буквы;
  •  элемент <author> должен содержать одну или две последовательности, состоящие из заглавной буквы и точки, за которыми через один пробел должна следовать последовательность букв, начинающаяся с заглавной буквы, либо буквы, либо иметь значение <author1/> или <author2/>;
  •  атрибут sections элемента <author> должен являться ссылкой на список ключей – наименований или номеров разделов отчета;
  •  значение элементов <annotation>, <preface>, <section>, <conclusion>  и <paragraph> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  атрибут id элементов <preface> и <conclusion> должен являться ключом;
  •  атрибут id элемента <section> должен являться ключом и содержать целое положительное число – номер раздела;
  •  содержимое <end-date> элемента должен быть типа date;
  •  элементы <table> и <figure> должны быть типа notation с фиксированным содержимым (соответственно "table" или "figure") и для них должен быть задан атрибут file (имя и расширение файла с таблицей или изображением);
  •  в схеме должны быть заданы два элемента notation с именами table и figure для указания пути (в атрибуте system) к соответствующим программам (например, Word для таблиц и mspaint.exe для рисунков);
  •   содержимое элемента <source> должно иметь следующий вид:

автор+ наименование. – город:издательство, год-издания. – nnn с. 

  •  где автор – фамилия автора (последовательность букв, начинающаяся с заглавной буквы) и один ли два инициала (заглавная буква, за которой следует точка) (если авторов несколько, то они отделяются друг от друга запятой);  наименование – наименование книги – последовательность букв и цифр, начинающаяся с заглавной буквы (список авторов и наименование отделяются друг от друга пробелом); город и издательство – последовательность  букв, начинающаяся с заглавной буквы; год-издания – четыре цифры и nnn – количество страниц (неотрицательное целое число).

Вариант 2-16

Создайте схему документа XML для справочника классов языка Java со следующими уточнениями:

  •  сущности type1, type2 и type3  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <class-list>  должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  значение атрибута value в элементе <letter>  должно содержать заглавную латинскую букву;
  •  значение атрибута name в элементах <class>, <superclass>, <subclass> и  <interface> должно содержать последовательность заглавных и строчных латинских букв и начинаться с заглавной буквы;
  •  значение атрибута name в элементах <field> и  <method> должно содержать последовательность заглавных и строчных латинских букв и начинаться со строчной буквы;
  •  элемент <description>  должен содержать последовательность букв, цифр, пробельных символов и знаков препинания;
  •  в качестве значений атрибутов элемента <modifiers> должны использоваться булевские значения;
  •  элемент <method> должен содержать внутри себя один из следующих элементов: <type1/>, <type2/> или <type3/>;
  •  в качестве значения элемента <version> должно использоваться одно из следующих значений: "1.1", "1.2", "1.3", "1.4" или "1.5".

Вариант 2-17

Создайте схему документа XML для содержимого учебных программ дисциплин со следующими уточнениями:

  •  сущности specialty1 и specialty2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <study-subject>  должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  элемент <specialty> должно представлять собой последовательность букв, цифр, а также символов "-" и ".", начинающуюся с заглавной буквы, либо иметь значение <specialty1/> или  <specialty2/>;
  •  значение элементов <general-information>, <aims-and-goals> и <methodic> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  элементы <theme> в элементах <section>, <practice> и <seminar>, а также элемент <lab> должны содержать последовательность слов, причем первое слово должно начинаться с заглавной буквы;
  •  элемент <fio>  должен содержать последовательность букв, начинающуюся с заглавной буквы, после которой следует пробел, затем две последовательности, состоящие из заглавной буквы и точки;
  •  элемент <end-date>  должен быть типа date;
  •  содержимое элемента <source> должно иметь следующий вид:

автор+ наименование. – город:издательство, год-издания. – nnn с. 

где автор – фамилия автора (последовательность букв, начинающаяся с заглавной буквы) и один ли два инициала (заглавная буква, за которой следует точка) (если авторов несколько, то они отделяются друг от друга запятой);  наименование – наименование книги – последовательность букв и цифр, начинающаяся с заглавной буквы (список авторов и наименование отделяются друг от друга пробелом); город и издательство – последовательность  букв, начинающаяся с заглавной буквы; год-издания – четыре цифры и nnn – количество страниц (неотрицательное целое число).

Вариант 2-18

Создайте схему документа XML для контрактов на выполнение работ со следующими уточнениями:

  •  сущности customer1 и customer2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута title в элементе <contract>  должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  значение атрибута date в элементе <preamble>, значения элементов <time-begin> и <time-end>, а также значения атрибутов time-begin и time-end в элементе <duration> должны быть типа date;
  •  элемент <status> должен иметь одно из следующих значений: "с.н.с", "м.н.с", "техник"и "лаборант" (по умолчанию "с.н.с")
  •  элемент <fio>  в элементах <director> и <contractor> должен содержать три последовательности букв, разделенных пробелами и начинающихся с заглавной буквы, кроме того, элемент <contractor> может иметь значение <customer1/> или  <customer2/>;
  •  значение элементов <task-item> и <conditions> должно представлять собой последовательность букв, цифр и знаков препинания, начинающуюся с заглавной буквы;
  •  значение элемента <month-salary> должно быть десятичным числом с двумя цифрами после точки.

Вариант 2-19

Создайте схему документа XML для справочника интерфейсов языка Java со следующими уточнениями:

  •  сущности modifier1, modifier2, type1, type2 и type3  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <interface-list>  должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  значение атрибута value в элементе <letter>  должно содержать заглавную латинскую букву;
  •  значение атрибута name в элементах <interface>, <superinterface> и <subinterface> должно содержать последовательность заглавных и строчных латинских букв и начинаться с заглавной буквы;
  •  элемент <modifier> должен содержать внутри себя один из следующих элементов: <modifier1/> или <modifier2/>;
  •  элемент <description>  должен содержать последовательность букв, цифр, пробельных символов и знаков препинания;
  •  элемент <method> должен содержать внутри себя один из следующих элементов: <type1/>, <type2/> или <type3/>;
  •  в качестве значения элемента <version> должно использоваться одно из следующих значений: "1.1", "1.2", "1.3", "1.4" или "1.5".

Вариант 2-20

Создайте схему документа XML для пакетов по протоколу TCP в Internet со следующими уточнениями:

  •  элементы  <source-port> и  <destination-port> должны содержать десятичные числа (от двух до четырех цифр);
  •  содержимое элементов <sequence-number>, <acknowledgment-number>,  <data-offset>, <window> и <padding> должны быть представлено в виде неотрицательных целых чисел;
  •  элемент <reserved-field> должен последовательность из четырех нулей.

Вариант 2-21

Создайте схему документа XML для регистрационных карт научно-исследовательских тем со следующими уточнениями:

  •  сущности requestor1, и requestor2  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  атрибут index в элементе  <registry-card> должен соответствовать следующему шаблону: цифры "02", последние две цифры года сдачи работы, символ "U" и 6 десятичных цифр;
  •  элемент <name>  в элементах <requestor> и <contractor>, а также элемент <research-name> и атрибут name в элементе <section> должны содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  элемент <annotation>  должен содержать последовательность букв, цифр, пробельных символов и знаков препинания;
  •  элемент <address>  в элементах <requestor> и <contractor> должны соответствовать следующему шаблону: последовательность из пяти цифр (код города), затем последовательность букв, начинающаяся с заглавной буквы (город), затем еще одна последовательность букв, начинающаяся с заглавной буквы (улица), последовательность от одной до трех цифр (номер дома);
  •  атрибуты date-begin и date-end в элементе <section> должны быть типа date.

Вариант 2-22

Создайте схему документа XML для описания стандартной библиотеки функций языка C со следующими уточнениями:

  •  сущности modifier1, modifier2, type1, type2 и type3  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементах <partition>  и <function> должно содержать слово или последовательность слов, разделенных пробелом, причем первое слово должно начинаться с заглавной буквы;
  •  элементы <partition-description>, <function-description> и <parameter-type-description> должны содержать последовательность букв, цифр, пробельных символов и знаков препинания;
  •  значение атрибута name в элементе <constant> должно содержать заглавные латинские буквы, цифры, символы "_" и начинаться с буквы или символа "_";
  •  элементы <return-value> и <parameter-type> должны содержать внутри себя один из следующих элементов: <type1/>, <type2/> или <type3/>.

Вариант 2-23

Создайте схему документа XML для описания классов языка Java со следующими уточнениями:

  •  сущности modifier1, modifier2, type1, type2 и type3  представить в виде глобальных элементов с фиксированными значениями, равными соответствующим значениям сущностей;
  •  значение атрибута name в элементе <class> и элементы <superclass>, <subclass> и <interface>  должны содержать последовательность заглавных и строчных латинских букв и цифр, причем первым символом должна быть заглавная буква;
  •  элемент <description>  должен содержать последовательность букв, цифр, пробельных символов и знаков препинания;
  •  значение атрибута name в элементах <method>, <field>, <constructor-parameter>  и <method-parameter> должно содержать последовательность заглавных и строчных латинских букв и цифр, причем первым символом должна быть строчная буква;
  •  элемент <modifier> должен содержать внутри себя один из следующих элементов: <modifier1/> или <modifier2/>;
  •  элемент <return-value> должен содержать внутри себя один из следующих элементов: <type1/>, <type2/> или <type3/>;
  •  в качестве значения элемента <version> должно использоваться одно из следующих значений: "1.1", "1.2", "1.3", "1.4" или "1.5".

Вариант 2-24

Создайте схему документа XML для дейтаграмм протокола IP в Internet со следующими уточнениями:

  •  элемент  <header> должны содержать целое число со значением, большим 5;
  •  элементы <header-length>, <identification>, <sequence-number>, <fragment-offset>, <time-to-live> и <padding> должны содержать неотрицательные