Ответ
XSD (XML Schema Definition) — это язык на основе XML для описания структуры и ограничений XML-документов. Он служит строгой схемой, против которой можно валидировать XML.
Основные цели:
- Валидация: Проверка, что XML-документ соответствует ожидаемой структуре, типам данных и правилам.
- Документирование: Чёткое определение формата данных для разработчиков и систем.
- Контракт данных: Часто используется в SOAP-веб-сервисах и конфигурационных файлах как формальный контракт.
Пример простой XSD-схемы для книги:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Определение корневого элемента 'book' -->
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<!-- Элемент 'title' обязателен, строка -->
<xs:element name="title" type="xs:string"/>
<!-- Элемент 'author' обязателен, строка -->
<xs:element name="author" type="xs:string"/>
<!-- Элемент 'year' необязателен, целое число -->
<xs:element name="year" type="xs:integer" minOccurs="0"/>
</xs:sequence>
<!-- Атрибут 'isbn' обязателен, строка с паттерном -->
<xs:attribute name="isbn" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
XML, соответствующий этой схеме:
<book isbn="978-3-16-148410-0">
<title>Искусство тестирования программ</title>
<author>Гленфорд Майерс</author>
<year>1979</year>
</book>
Преимущества перед DTD:
- Поддержка типов данных (string, integer, date, custom types).
- Использование пространств имён XML.
- Более мощный и выразительный язык на основе XML.