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 такую ошибку поймает.