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>— ошибка - Все значения атрибутов обязаны быть в двойных кавычках
- Символы
<,>,&экранируются через<,>,&; внутри атрибутов дополнительно экранируется"через" - Все символы соответствуют заявленной кодировке
Сравнение
| Критерий | Well-formed | Valid |
|---|---|---|
| Синтаксис XML | Корректный | Корректный |
| Соответствие DTD/XSD | Не требуется | Обязательно |
| Парсер может разобрать | Да | Да |
| Гарантия структуры | Нет | Да |
| Что проверяется | Скобки, вложенность, кавычки | + допустимые элементы, атрибуты, типы |
Аналогия из жизни: well-formed — это как грамматически правильное предложение на русском языке. Valid — это предложение, которое еще и соответствует шаблону заявления (ФИО — в первой строке, дата — внизу, подпись — справа).
На собеседовании: ключевая фраза: well-formed — синтаксическая корректность, valid — синтаксическая плюс семантическая. Частая ошибка — забыть упомянуть, что valid XML обязательно является well-formed, но не наоборот.