Gymterview
junior

Чем well-formed XML отличается от valid XML?

Well-formed XML — это документ, который соответствует базовым синтаксическим правилам XML и может быть разобран любым XML-парсером. Valid XML — это well-formed документ, который дополнительно соответствует правилам конкретной схемы (DTD или XSD), то есть корректен и синтаксически, и семантически.

Правила well-formed XML

  • Ровно один корневой элемент, содержащий все остальные
  • Все открытые теги обязаны быть закрыты
  • Одиночные теги записываются как <br/>
  • Имена тегов регистрозависимы: <Name> и <name> — разные теги
  • Теги не могут нарушать вложенность: <em><b>...</em></b> — ошибка
  • Все значения атрибутов обязаны быть в двойных кавычках
  • Символы <, >, & экранируются через &lt;, &gt;, &amp;; внутри атрибутов дополнительно экранируется " через &quot;
  • Все символы соответствуют заявленной кодировке

Сравнение

Критерий Well-formed Valid
Синтаксис XML Корректный Корректный
Соответствие DTD/XSD Не требуется Обязательно
Парсер может разобрать Да Да
Гарантия структуры Нет Да
Что проверяется Скобки, вложенность, кавычки + допустимые элементы, атрибуты, типы

Аналогия из жизни: well-formed — это как грамматически правильное предложение на русском языке. Valid — это предложение, которое еще и соответствует шаблону заявления (ФИО — в первой строке, дата — внизу, подпись — справа).

На собеседовании: ключевая фраза: well-formed — синтаксическая корректность, valid — синтаксическая плюс семантическая. Частая ошибка — забыть упомянуть, что valid XML обязательно является well-formed, но не наоборот.