Определение атрибутов в XML схеме

Все атрибуты декларируются, как простые типы.

Простые элементы не могут иметь атрибуты. Если у элемента есть атрибуты, то он относится к комплексным или составным типам. Но сам по себе атрибут всегда декларируется, как простой тип.

Определение атрибута

Атрибут декларируется следующим образом:


<xs:attribute name="xxx" type="yyy"/>

где xxx — имя атрибута, а yyy — тип данных атрибута.

XML схемы имеют множество встроенных типов данных. Наиболее часто используемыми являются следующие типы:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Например,

Возьмем XML элемент с атрибутом:


<lastname lang="EN">Smith</lastname>

А вот соответствующая декларация атрибута:


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

Значения по умолчанию и фиксированные значения

Атрибуты могут иметь значения по умолчанию ИЛИ фиксированные значения.

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

В следующем примере "EN" — значение по умолчанию:


<xs:attribute name="lang" type="xs:string" default="EN"/>

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

В следующем примере "EN" — фиксированное значение:


<xs:attribute name="lang" type="xs:string" fixed="EN"/>

Обязательные и необязательные атрибуты

По умолчанию атрибуты являются необязательными для использования. Чтобы декларировать обязательный атрибут, следует воспользоваться атрибутом "use":


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

Ограничения по контенту

Если XML элемент или атрибут имеет определение типа данных, то это накладывает ограничение по контенту этого элемента или атрибута.

Если XML элемент имеет тип "xs:date" и содержит строку, например, "Hello World", то этот элемент не пройдет валидацию или проверку на корректность данных.

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