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

Структура схемы

Элемент xs:schema

Корень любой схемы — xs:schema. Его главные атрибуты:

АтрибутНазначение
targetNamespaceПространство имён, к которому относятся объявленные в схеме глобальные элементы и типы
elementFormDefaultqualified — локальные элементы тоже в целевом пространстве имён; unqualified (по умолчанию) — без пространства имён
attributeFormDefaultТо же для локальных атрибутов; обычно оставляют unqualified
versionВерсия схемы (произвольная строка, для людей)
blockDefault, finalDefaultОграничения наследования и подстановки по умолчанию
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:shop="http://example.com/shop"
           targetNamespace="http://example.com/shop"
           elementFormDefault="qualified"
           version="1.2">
  <xs:element name="customer" type="shop:Customer"/>
  <xs:complexType name="Customer">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="email" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Ссылки на собственные типы и элементы (type="shop:Customer") записываются с префиксом целевого пространства имён — поэтому его объявляют в корне схемы (xmlns:shop). Встроенные типы берутся из пространства XML Schema (xs:string).

Глобальные и локальные компоненты

  • Глобальные — прямые потомки xs:schema: их можно использовать из любого места схемы (и из других схем) по имени. Корнем документа может быть только глобальный элемент.
  • Локальные — объявленные внутри типа: видны только там.

Именованные глобальные типы (xs:complexType name="…") делают схему читаемой и позволяют переиспользовать структуры. Анонимные типы внутри элемента удобны для одноразовых структур.

Документ по схеме

Документ указывает схему атрибутами из пространства имён http://www.w3.org/2001/XMLSchema-instance (префикс xsi):

  • xsi:schemaLocation — пары «пространство имён — расположение схемы» через пробел;
  • xsi:noNamespaceSchemaLocation — схема для документа без пространства имён.
<?xml version="1.0" encoding="UTF-8"?>
<customer xmlns="http://example.com/shop"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://example.com/shop customer.xsd">
  <name>Иван Петров</name>
</customer>

Это подсказка, а не требование: валидатор может взять схему из другого места. В редакторе XML схему для проверки выбирают явно.

Что можно объявить в схеме

КомпонентЭлементНазначение
Элементxs:elementТег документа и его тип
Атрибутxs:attributeАтрибут элемента
Простой типxs:simpleTypeЗначение без вложенных элементов и атрибутов
Составной типxs:complexTypeВложенные элементы и/или атрибуты
Группа элементовxs:groupИменованный фрагмент модели содержимого
Группа атрибутовxs:attributeGroupИменованный набор атрибутов
Нотацияxs:notationФормат внешних данных (редко)
Аннотацияxs:annotationДокументация и служебная информация

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