-1

我第一次看到这样的 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 片段真的有效吗?

4

2 回答 2

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 流。

于 2018-05-18T14:46:19.590 回答
0

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

从来没有这样的规则“如果一个元素有一个文本节点作为子节点,那么它不允许有其他子节点”。

于 2018-05-18T14:26:23.790 回答