Атрибуты XSD

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

Что такое атрибут?

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

Как声明 атрибут?

Синтаксис определения атрибута:

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

Здесь xxx указывает на имя атрибута, yyy определяет тип данных атрибута. XML Schema имеет множество встроенных типов данных.

Наиболее часто используемые типы:

  • 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 "xs:date", а содержимое элемента подобно строке "Hello World", элемент не будет (проверен).

Через XML schema, вы также можете добавить свои ограничения к элементам и атрибутам XML. Эти ограничения называются facet (примечание редактора: это означает "сторона многоугольника", можно перевести как "сторона"). Вы узнаете больше о facet в следующем разделе.