Документация / XSD
Простые типы
Простой тип описывает значение без вложенных элементов и атрибутов: строку, число, дату. Свой простой тип создают из встроенного тремя способами: ограничением (restriction), списком (list) и объединением (union).
Ограничение и фасеты
xs:restriction сужает базовый тип с помощью фасетов — ограничивающих свойств:
| Фасет | Применяется к | Значение |
|---|---|---|
length, minLength, maxLength | строкам, спискам, двоичным данным | Точная, минимальная, максимальная длина |
pattern | всем | Регулярное выражение (синтаксис XML Schema), привязано ко всей строке |
enumeration | всем, кроме boolean | Одно из допустимых значений (фасет повторяется) |
minInclusive, maxInclusive | числам, датам | Границы включительно |
minExclusive, maxExclusive | числам, датам | Границы, не включая само значение |
totalDigits | десятичным числам | Максимальное число значащих цифр |
fractionDigits | десятичным числам | Максимальное число цифр после точки |
whiteSpace | строкам | preserve, replace (табы и переводы строк → пробелы), collapse (плюс схлопывание пробелов) |
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Inn">
<xs:annotation>
<xs:documentation>ИНН организации (10 цифр) или физического лица (12 цифр)</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="\d{10}|\d{12}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Money">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:totalDigits value="15"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="OrderStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="new"/>
<xs:enumeration value="paid"/>
<xs:enumeration value="shipped"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="payment">
<xs:complexType>
<xs:sequence>
<xs:element name="payerInn" type="Inn"/>
<xs:element name="amount" type="Money"/>
<xs:element name="status" type="OrderStatus"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<payment>
<payerInn>7707083893</payerInn>
<amount>15000.50</amount>
<status>paid</status>
</payment>
Этот документ не пройдёт проверку: у суммы три знака после точки, а статуса нет в перечислении.
<payment>
<payerInn>7707083893</payerInn>
<amount>15000.505</amount>
<status>cancelled</status>
</payment>
Регулярные выражения XSD
Шаблон в xs:pattern всегда проверяет строку целиком — ^ и $ не нужны (и не поддерживаются). Кроме
обычных классов (\d, \s, [а-я]) есть классы XML: \i — символ, с которого может начинаться имя XML,
\c — символ имени, \p{L} — любая буква Unicode. Нельзя использовать опережающие проверки и нежадные
квантификаторы.
Список
xs:list — значение из нескольких элементов простого типа через пробел:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Sizes">
<xs:list itemType="xs:positiveInteger"/>
</xs:simpleType>
<xs:element name="sizes" type="Sizes"/>
</xs:schema>
<sizes>42 44 46 48</sizes>
Объединение
xs:union — значение одного из нескольких типов. Пример: размер одежды числом или буквенным обозначением.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="LetterSize">
<xs:restriction base="xs:string">
<xs:enumeration value="S"/>
<xs:enumeration value="M"/>
<xs:enumeration value="L"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Size">
<xs:union memberTypes="xs:positiveInteger LetterSize"/>
</xs:simpleType>
<xs:element name="size" type="Size"/>
</xs:schema>
<size>M</size>
Похожие инструменты
Обновлено: 30 сентября 2026 г.
