Что такое XSD (XML Schema Definition) и для чего используется?

«Что такое XSD (XML Schema Definition) и для чего используется?» — вопрос из категории Форматы данных, который задают на 24% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные цели:

  1. Валидация: Проверка, что XML-документ соответствует ожидаемой структуре, типам данных и правилам.
  2. Документирование: Чёткое определение формата данных для разработчиков и систем.
  3. Контракт данных: Часто используется в 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.