Документация / XSD

Элементы и атрибуты

Объявление элемента

xs:element задаёт имя и тип элемента. Тип указывают атрибутом type (ссылкой на встроенный или именованный тип) или вложенным анонимным xs:simpleType/xs:complexType.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="contact">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="fullName" type="xs:string"/>
        <xs:element name="phone" type="xs:string" minOccurs="0" maxOccurs="3"/>
        <xs:element name="birthDate" type="xs:date" nillable="true"/>
        <xs:element name="country" type="xs:string" default="RU"/>
        <xs:element name="version" type="xs:int" fixed="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
АтрибутЗначение
nameИмя элемента
typeТип значения
minOccurs, maxOccursСколько раз элемент встречается; по умолчанию ровно 1; unbounded — без ограничения
defaultЗначение, если элемент пустой
fixedЕдинственно допустимое значение
nillabletrue — разрешает xsi:nil="true" вместо значения
refСсылка на глобальный элемент вместо локального объявления
<?xml version="1.0" encoding="UTF-8"?>
<contact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <fullName>Анна Смирнова</fullName>
  <phone>+79161234567</phone>
  <phone>+74951234567</phone>
  <birthDate xsi:nil="true"/>
  <country>RU</country>
  <version>1</version>
</contact>

xsi:nil="true" означает «значение отсутствует», и это не то же самое, что пустая строка: для типа xs:date пустой элемент невалиден, а nil — допустим, если разрешён nillable.

Ссылка на глобальный элемент

Если элемент встречается в нескольких типах, его объявляют один раз глобально и подключают через ref:

<xs:element name="address" type="xs:string"/>
<xs:complexType name="Customer">
  <xs:sequence>
    <xs:element ref="address" maxOccurs="2"/>
  </xs:sequence>
</xs:complexType>

Атрибуты

Атрибуты объявляются внутри составного типа после модели содержимого (xs:sequence, xs:choice). Тип атрибута всегда простой.

Атрибут xs:attributeЗначение
useoptional (по умолчанию), required или prohibited
defaultЗначение, если атрибут не указан (только для необязательных)
fixedЕдинственно допустимое значение
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="price">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:decimal">
          <xs:attribute name="currency" type="xs:string" default="RUB"/>
          <xs:attribute name="vat" type="xs:boolean" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>
<price vat="true">3490.00</price>

Элемент или атрибут?

  • Атрибут — для коротких «метаданных» значения: единица измерения, валюта, код, признак.
  • Элемент — для данных, которые могут повторяться, иметь структуру или расширяться в будущем.
  • Порядок атрибутов не важен и не проверяется; порядок элементов задаёт модель содержимого.

Обновлено: 30 сентября 2026 г.