XSD элемент attribute

Элемент 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 элемента, содержащего этот атрибут. Может принимать следующие значения:

  • qualified — указывает на то, что этот атрибут должен уточняться префиксом пространства имен и именем без двоеточия (NCName) атрибута
  • unqualified — указывает на то, что этот атрибут не требует уточнения префиксом пространства имен и сопоставляется с (NCName) атрибута
idНе обязательный. Определяет уникальный идентификатор для элемента
nameНе обязательный. Определяет имя атрибута. Нельзя использовать вместе с атрибутом ref
refНе обязательный. Определяет ссылку на поименованный атрибут. Нельзя использовать вместе с атрибутом name. Если определен атрибут ref, то нельзя использовать элемент simpleType, атрибуты form и type
typeНе обязательный. Определяет встроенный тип данных или простой тип. Атрибут type можно использовать в том случае, если контент не содержит элемент simpleType
use

Не обязательный. Определяет то, как атрибут используется. Может принимать следующие значения:

  • optional — атрибут не обязателен (значение по умолчанию)
  • prohibited — атрибут запрещен для использования
  • required — атрибут обязателен
любые атрибутыНе обязательный. Любые другие атрибуты вне пространства имен схемы

Пример использования

Пример №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"/>