为什么这个 XML 格式正确?
Why is this 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片段真的有效吗?
是的。验证器是正确的。 XML 支持文本节点。
从来没有遵循“如果一个元素有一个文本节点作为子节点,则不允许有其他子节点节点”。
如果一些内部内容没有被包裹在<>
个大括号中,则表示为"text node"。此外,您可以拥有多个同级文本节点,这会使您的 XML 看起来与 HTML 非常相似,所有 bold/italic/underline 标签都与主要文本内容混合在一起。唯一不同的是,与 HTML 不同,标签不能随机重叠,因为 XML 需要完全按照打开标签的相反顺序关闭标签。
例如,这是非常合法的 XML:
<root>The <truth /> is that there <is> no </is> spoon</root>
如果我们"dissect"把它分成节点,漂亮的打印结构可能是这样的:
<root>
The
<truth />
is that there
<is>
no
</is>
spoon
</root>
如您所见,<root>
标签中包含 3 个文本节点,<is>
标签中包含另外一个文本节点。
确实,与基于标签的方法不同,由于复杂的验证模式等原因,这种 XML 变体并未得到广泛使用。同时,您应该尽可能地考虑它并纠正 XML 流。
第一次看到这样的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片段真的有效吗?
是的。验证器是正确的。 XML 支持文本节点。
从来没有遵循“如果一个元素有一个文本节点作为子节点,则不允许有其他子节点节点”。
如果一些内部内容没有被包裹在<>
个大括号中,则表示为"text node"。此外,您可以拥有多个同级文本节点,这会使您的 XML 看起来与 HTML 非常相似,所有 bold/italic/underline 标签都与主要文本内容混合在一起。唯一不同的是,与 HTML 不同,标签不能随机重叠,因为 XML 需要完全按照打开标签的相反顺序关闭标签。
例如,这是非常合法的 XML:
<root>The <truth /> is that there <is> no </is> spoon</root>
如果我们"dissect"把它分成节点,漂亮的打印结构可能是这样的:
<root>
The
<truth />
is that there
<is>
no
</is>
spoon
</root>
如您所见,<root>
标签中包含 3 个文本节点,<is>
标签中包含另外一个文本节点。
确实,与基于标签的方法不同,由于复杂的验证模式等原因,这种 XML 变体并未得到广泛使用。同时,您应该尽可能地考虑它并纠正 XML 流。