Своеобразный, хорошо сформированный 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 поддерживает текстовые узлы.

Никогда не было правила в духе "Если элемент имеет текстовый узел в качестве дочернего узла, то другие дочерние узлы не допускаются".

Другие вопросы по тегам