Вы, конечно, можете говорить о XML документах с правильной формой , и вы можете создать документ из любого отдельного элемента и его дочерних элементов. Таким образом, вы могли бы говорить о правильном формировании однокорневых фрагментов XHTML5. Вы можете иметь дело с многокорневым фрагментом (например, <img/><img/>
), рассматривая его как последовательность документов или помещая его в какой-то синтетический контейнерный элемент - поскольку мы говорим только о корректной форме, это было бы хорошо.
Однако HTML5 по-прежнему допускает самозакрывающиеся теги SGML, такие как <hr>
и т. Д., Самозакрытие которых можно определить только путем обращения к типу документа. Например, <div><hr></div>
- это хорошо, а <div><tr></div>
- нет. Если бы вы имели дело с узлами DOM, а не с текстом в качестве входных данных, это было бы не выпуском, но если у вас есть текст, вам понадобится парсер, который знает достаточно о HTML, чтобы иметь возможность работать с этими элементами. Помимо этого, однако, некоторых очень простых правил, взятых непосредственно из XML, было бы достаточно для правильной обработки.
Если вы хотите выйти за рамки правильности и взглянуть на некоторые аспекты достоверности , я думаю, вы все еще можете сделать это на уровне фрагментов с единым корнем с помощью XML. Как сказано в спецификации:
XML-документ действителен, если с ним связано объявление типа документа и если документ соответствует выраженным в нем ограничениям.
DTD может назвать любой элемент корневым, и механики затем позаботятся о проверке отношений между этим элементом и его дочерними элементами, их дочерними элементами и т. Д., А также различными другими ограничениями, составляющими действительность.
Опять же, вы можете перенести эту идею прямо в HTML. Однако я не знаю, как вы справляетесь с фрагментами с множественными корнями. И имейте в виду, что некоторые ограничения на весь документ (например, уникальные идентификаторы) могут сохраняться внутри фрагмента, но не в другом действительном документе после вставки в него фрагмента.