Элемент attribute определяет атрибут.
- Родительские элементы: attributeGroup, schema, complexType, restriction (simpleContent и complexContent), extension (simpleContent и complexContent)
Синтаксис элемента
<attribute
default=строка
fixed=строка
form=qualified | unqualified
id=идентификатор
name=NCName
ref=QName
type=QName
use=optional | prohibited | required
любые атрибуты
>
(annotation?, (simpleType?))
</attribute>
(Знак ? указывает на то, что элемент может появляться ноль или один раз внутри элемента attribute.)
Атрибуты элемента
Атрибут | Описание |
---|---|
default | Не обязательный. Определяет значение по умолчанию атрибута. Нельзя использовать вместе с атрибутом fixed |
fixed | Не обязательный. Определяет фиксированное значение атрибута. Нельзя использовать вместе с атрибутом default |
form | Не обязательный. Определяет форму атрибута. Значением по умолчанию является значение атрибута attributeFormDefault элемента, содержащего этот атрибут. Может принимать следующие значения:
|
id | Не обязательный. Определяет уникальный идентификатор для элемента |
name | Не обязательный. Определяет имя атрибута. Нельзя использовать вместе с атрибутом ref |
ref | Не обязательный. Определяет ссылку на поименованный атрибут. Нельзя использовать вместе с атрибутом name. Если определен атрибут ref, то нельзя использовать элемент simpleType, атрибуты form и type |
type | Не обязательный. Определяет встроенный тип данных или простой тип. Атрибут type можно использовать в том случае, если контент не содержит элемент simpleType |
use | Не обязательный. Определяет то, как атрибут используется. Может принимать следующие значения:
|
любые атрибуты | Не обязательный. Любые другие атрибуты вне пространства имен схемы |
Пример использования
Пример №1
В следующем примере декларируется атрибут "code" с ограничениями. Его приемлемым значением может быть строка из двух заглавных букв в диапазоне от A до Z.
<xs:attribute name="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
Пример №2
Чтобы декларировать атрибут внутри сложного типа, используя существующий атрибут, используют атрибут ref:
<xs:attribute name="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="someComplexType">
<xs:attribute ref="code"/>
</xs:complexType>
Пример №3
У атрибутов можно определять значение по умолчанию ИЛИ фиксированное значение. Значение по умолчанию присваивается атрибуту автоматически, если никакое другое значение не определено. В следующем примере значением по умолчанию будет строка "EN":
<xs:attribute name="lang" type="xs:string" default="EN"/>
Фиксированное значение также присваивается атрибуту автоматически, если никакое другое значение не определено. Однако, в отличие от значения по умолчанию, если вы определите другое значение, то документ будет считаться невалидным. В следующем примере фиксированным значением будет строка "EN":
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Пример №4
По умолчанию все атрибуты декларируются как не обязательные. Чтобы явно указать, что атрибут не обязательный, используют атрибут use:
<xs:attribute name="lang" type="xs:string" use="optional"/>
Чтобы сделать атрибут обязательным:
<xs:attribute name="lang" type="xs:string" use="required"/>