为什么我们需要XML中的结束标记内的文本?我理解为什么会出现最终标签。但是文本是多余的,因为软件可以识别当前最后打开的标签在遇到时结束。通过删除结束标记内的文本,我们可以节省文件消耗的大约1/4的数据。这将导致在全局级别上节省数十亿字节。
为什么我们不能使用这种格式
<CD>
<TITLE>Empire Burlesque</>
</>
而不是
<CD>
<TITLE>Empire Burlesque</TITLE>
</CD>
答案 0 :(得分:1)
我提出的问题是“为什么XML的设计者不允许空的结束标记?结束标记中的元素类型名称是多余的;为什么需要它?”
是的,这是多余的。我相信XML的设计者选择在end-tag中要求元素类型名称,因为两个明显的替代品似乎都有自己的问题。
要求使用空的结束标记(格式为</>
,遵循SGML的语法),只要起始标记和结束标记不仅仅是一个标记,就会导致混淆和错误凯文布朗已经在评论中指出了几条线。 (这当然是我使用SGML十年的经验,我的回忆是其他人报告了类似的观点。)
在结束标记中使元素类型名称可选会使规范更复杂。不是很复杂,但可以理解。
此外,额外字节的缺点似乎没有(也没有)似乎很重要。 XML的初始设计原则之一(参见the spec)是:
- XML标记中的Terseness具有最低限度的重要性。
醇>
我认为你高估了有问题的句法规则的成本。如果文档中大约一半的字节是开始或结束标记而没有任何元素具有属性,则使用空的结束标记将节省1/4的字节在XML文档中;如果任何元素具有属性,则标记将需要超过文档大小的一半。有这样的文件,但根据我的经验,它们是相当罕见的。即使在您给出的示例数据中,使用空的结束标记也不会节省1/4的字节(44个中的7个是1/6,而不是1/4)。
如果文件大小非常重要,并且值得认真努力以最小化,那么像Word这样的文字处理器格式或像PDF这样的渲染格式将比它们更不受欢迎,因为典型的人类可读文档将是Word文件或PDF文件比XML文档大2到10倍。 Word和PDF是否因为它们使文档比XML更紧凑的格式更大而消失?
鉴于磁盘容量持续增长的速度比计算中的任何其他东西都快,文件大小相对不重要,以及冗余在帮助诊断XML数据流中的语法错误或数据损坏方面的明显效用,设计师XML做出了一个对他们来说似乎合理的选择。现在似乎没那么合理了。