Почему этот XML правильно сформирован? - PullRequest
0 голосов
/ 18 мая 2018

Первый раз, когда я вижу такой XML:

<?xml version="1.0" encoding="UTF-8"?>
<test>
     <enclosingTag>Floating_Strange_Text <!--It's new to me-->
         <tag>data</tag>
         <tag>data</tag>
     </enclosingTag>
</test>

Однако после тестирования в правильно сформированных валидаторах XML, таких как Служба проверки разметки Я подозреваю, что это действительно разрешено.

Действительно ли этот фрагмент XML действителен?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Если некоторое внутреннее содержимое не заключено в фигурные скобки <>, оно указывается как «текстовый узел».Кроме того, у вас может быть несколько родственных текстовых узлов, которые могут сделать ваш 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>

Как видите, в тег <root> включены 3 текстовых узла иеще один текстовый узел внутри тега <is>.

Действительно, в отличие от подхода, основанного на тегах, этот вариант XML не используется широко из-за сложной схемы проверки и т. д. В то же время вы должны рассмотреть его как возможный и исправить поток XML..

0 голосов
/ 18 мая 2018

Да.Валидатор правильный.XML поддерживает текстовые узлы.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Правило ': если элемент имеет текстовый узел в качестве дочернего узла, то другой дочерний элемент не допускаетсяузлы ».

...