为什么必须<
在 XML 属性值>
中编码而不需要这种编码?
显然,这是“因为规范是这样说的”..
..但是,我正在寻找一个简单、实用的示例或原因来说明为什么存在这种限制,从解析的角度来看,何时>
不需要在这种情况下转义。
我想不出任何,但在不试图确定原始理由的情况下(除非记录在案),我希望能够看到一个案例,说明该限制消除了哪些解析/语法复杂性,或者添加此限制可以实现什么- 是否使用过/对“寻求”有用吗?它是否能够统一属性值和文本内容解析?其他?
为什么必须<
在 XML 属性值>
中编码而不需要这种编码?
显然,这是“因为规范是这样说的”..
..但是,我正在寻找一个简单、实用的示例或原因来说明为什么存在这种限制,从解析的角度来看,何时>
不需要在这种情况下转义。
我想不出任何,但在不试图确定原始理由的情况下(除非记录在案),我希望能够看到一个案例,说明该限制消除了哪些解析/语法复杂性,或者添加此限制可以实现什么- 是否使用过/对“寻求”有用吗?它是否能够统一属性值和文本内容解析?其他?
它可能是一个自同步的东西;如果您保证“<”不会出现在 XML 文档的内部,除非它作为标签起始符,那么您可以从文档中间开始,跳过字符直到看到“<”,然后开始解析,确信您在标签的开头。天真地,这似乎并不是那么有用——从中间开始解析 XML 没有多大意义——但它可能对错误恢复有影响。只要“<”受到保护,就没有理由以同样的方式担心“>”。
有两种方法可以回答“为什么”的问题:
(a) 你能想出这条规则可以达到什么目的吗?
(b) 作为历史事实,你知道为什么工作组成员会以他们的方式投票吗?
历史方法(b)非常困难;即使是那些出席做出决定的会议的人,有时也很难知道委员会为什么会做出这样的决定,而且从会议记录中找出答案通常是不可能的。可能是下午晚些时候;他们可能对提议改变的人变得不耐烦,等等。
不过,通常情况下,XML 规范中的奇怪之处可以追溯到它在 SGML 中的起源。XML 工作组急于确保在 XML 中不允许在 SGML 中不允许的任何内容,并且由于其语法灵活性,SGML 施加了各种限制,例如允许不使用引号分隔的属性。我不是 SGML 专家,所以我不能比这更精确,但我 90% 肯定这是解释。