我理解为什么我们要区分格式良好的XML"来自"有效的XML。"但是为什么我们要分辨出格式良好的XML"特别的东西?是否存在"没有格式良好的XML"?不仅仅是"而不是XML?"
例如,没有人通过列出"格式正确的正则表达式的特征来引入正则表达式。"他们只是说"正则表达式有xyz语法;别的什么都错了。"
这只是话语的惯例,还是故事还有更多内容?
答案 0 :(得分:3)
我同意,形容词“格式良好”是多余的。如果它不是格式良好,那就不是XML。
形容词的存在允许人们形成句子,如“解析器说我的XML格式不正确”。我认为在理论上使用句子“解析器说我的输入不是XML”会更好;然而,这是一厢情愿的想法。
形容词的起源与“有效”形成鲜明对比。 “输入不必有效,但必须是格式良好的。”他们可以说“输入不必有效,但它必须符合XML语法”。但如果有人说“输入不必有效,但必须是XML”,那么人们可能无法得到消息。
在正常生活中,我们总是这样做。我们谈论“正确的英语”,或者说“我想要干净地编译的Java代码”。如果不正确,是英文吗?如果它不能干净地编译,它是Java代码吗?日常用语中的冗余并不一定是坏事,但在这种情况下,我认为它让很多人感到困惑。
答案 1 :(得分:2)
就个人而言,我同意你的观点,格式不正确的XML不是XML。"但是,在实际编写解析器等工具时,区分试图成为XML但有一些完全错误或不打算成为XML的错误的东西很有用。如果你更喜欢说"有句法或语义错误"而不是"没有良好的形成",那很好;它比必要的更冗长。
部分原因还在于,XML最初被描绘为SGML的子集/子集(HTML构建在其上的标记系统)。格式良好的XML文档是格式良好的SGML文档的一个子集,对于设计处理这些文档或构建在其上的语言的软件的人来说,这是另一个有用的区别。 (HTML文档可以解释为格式良好的XML,但大多数HTML文档都不是。哎呀,大多数HTML文档都不是真正正确的HTML ...但是#&#&# 39;不同的咆哮。)
最后,这是你接近它的方向问题。当你编写标准时,它更接近于语言设计而不是通常的那种"将它变成形状"节目。您正在使用语法,而不是使用代码。在语法层面,"格式良好"是一项重要的技术声明。我敢打赌那些形式化正则表达式的人使用了这个术语,即使最初发明它们的人也没有。所以这可以被视为一个艺术术语" - 一个对在特定领域工作的人具有特定含义和内涵的短语 - 在大多数情况下你比较熟悉,因为XML更新,而且其发明者试图从一开始就将其标准化而不是让它以后发展和标准化。 (这引起了对标准必须发展的顺序的另一种咆哮,而不是它们应该被开发的顺序,但这也是另一天。)