Своеобразный, хорошо сформированный XML
В первый раз я вижу такой XML-код:
<?xml version="1.0" encoding="UTF-8"?>
<test>
<enclosingTag>Floating_Strange_Text <!--Oh good!? It's new to me-->
<tag>data</tag>
<tag>data</tag>
</enclosingTag>
</test>
Однако после тестирования в правильно сформированных валидаторах XML, таких как Markup Validation Service, я подозреваю, что это действительно разрешено.
Действительно ли этот фрагмент XML действительно действителен?
2 ответа
Если какой-то внутренний контент не обернут в <>
фигурные скобки, это указано как "текстовый узел". Более того, у вас может быть несколько родственных текстовых узлов, которые могут сделать ваш XML похожим на HTML со всеми тегами, выделенными полужирным шрифтом / курсивом / подчеркиванием, смешанными с основным текстовым содержимым. Единственное, в отличие от HTML, теги не могут случайно перекрывать друг друга, так как XML требует закрывать теги точно в обратном порядке их открытия.
Например, это очень правильный XML:
<root>The <truth /> is that there <is> no </is> spoon</root>
И если мы "разберем" его по узлам, структура с довольно печатным изображением может выглядеть так:
<root>
The
<truth />
is that there
<is>
no
</is>
spoon
</root>
Как вы можете видеть, есть 3 текстовых узла, включенных в <root>
тег и еще один текстовый узел внутри <is>
тег.
Действительно, в отличие от подхода, основанного на тегах, этот вариант XML не используется широко из-за сложной схемы проверки и т. Д. В то же время вы должны рассмотреть это как возможный и правильный поток XML.
Да. Валидатор правильный. XML поддерживает текстовые узлы.
Никогда не было правила в духе "Если элемент имеет текстовый узел в качестве дочернего узла, то другие дочерние узлы не допускаются".