为什么这个XML很好地形成了?

时间:2018-05-18 14:22:50

标签: xml well-formed

我第一次看到像这样的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>

然而,在像Markup Validation Service这样结构良好的XML验证器中进行测试后,我怀疑这是真的允许的。

这个XML片段真的有效吗?

2 个答案:

答案 0 :(得分:2)

如果某些内部内容未包含在<>个大括号中,则表示为&#34; text node&#34;。此外,您可以拥有多个兄弟文本节点,这些节点可以使您的XML看起来与HTML非常相似,并且所有粗体/斜体/下划线标记与主要文本内容混合在一起。唯一的事情是,与HTML不同,标签不能相互随机重叠,因为XML需要完全按照打开它们的相反顺序关闭标签。

例如,这是非常合法的XML:

<root>The <truth /> is that there <is> no </is> spoon</root>

如果我们&#34;剖析&#34;它进入节点,漂亮的印刷结构可能是这样的:

<root>
    The 
    <truth />
    is that there 
    <is>
         no 
    </is>
    spoon
</root>

如您所见,<root>标记中包含3个文本节点,<is>标记内包含一个文本节点。

实际上,与基于标记的方法不同,由于复杂的验证模式等原因,这种XML变体并未得到广泛使用。同时,您应该将其视为可能并正确的XML流。

答案 1 :(得分:0)

是。验证器是正确的。 XML支持文本节点。

永远不会成为“如果元素将文本节点作为子节点,则不允许其他子节点”。