Gymterview
middle

Что такое XSD? В чем его преимущества перед DTD?

XSD (XML Schema Definition) — язык описания структуры XML-документа, написанный на самом XML. XSD описывает словарь (допустимые элементы и атрибуты), модель содержания (связи между элементами), структуру документа и используемые типы данных.

Преимущества XSD перед DTD

Критерий DTD XSD
Синтаксис Собственный, не XML XML-based
Типы данных Только строка 44+ встроенных типов (string, decimal, date, boolean…)
Пространства имен Не поддерживает Полная поддержка
Множественные схемы Максимум одна на документ Можно подключить несколько
Расширяемость Ограничена Наследование типов, restriction, extension
Самодокументируемость Нет Встроенный элемент <xsd:annotation>
Валидация содержимого Только структура Структура + типы данных + ограничения (min, max, pattern)

Пример XSD

Пример
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="book">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="title" type="xsd:string"/>
                <xsd:element name="price" type="xsd:decimal"/>
                <xsd:element name="year" type="xsd:gYear"/>
            </xsd:sequence>
            <xsd:attribute name="id" type="xsd:integer" use="required"/>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

На собеседовании: ключевые пункты — XSD сам написан на XML (в отличие от DTD), поддерживает типизацию данных и пространства имен. Частая ошибка — не упомянуть, что при использовании DTD числовое поле с текстовым значением пройдет валидацию, а XSD такую ошибку поймает.