什么优点需要< (<)要编码的XML属性值提供?

时间:2013-02-22 23:58:14

标签: xml syntax xml-parsing

为什么<>不需要此编码时必须在>中编码?

显然,这是“因为规范是这么说的”..

..但是,我正在寻找一个简单,实用,示例或原因,为什么存在这种限制,从解析的角度来看,当{{1}}不需要转义时这个背景。

我无法想到,但是,如果不尝试确定原始的基本原理(除非有文档记录),我希望能够看到此限制删除的解析/语法复杂性或添加此限制的内容的情况启用 - 它是否用于“寻找”?它是否支持统一属性值和文本内容解析?其他

2 个答案:

答案 0 :(得分:1)

它可能是一种自我同步的东西;如果你保证“&lt;”不会出现在XML文档的内部,除了它作为标记启动器的角色,然后你可以在文档的中间开始,跳过字符,直到你看到“&lt;”,然后开始解析,相信你在标签的开头。天真地看起来并不是那么有用 - 从中​​间开始解析XML并没有多大意义 - 但它可能对错误恢复有影响。没有理由担心“&gt;”以同样的方式,只要“&lt;”受到保护。

答案 1 :(得分:1)

有两种方法可以回答“为什么”的问题:

(a)你能想到遵守这条规则所服务的任何目的吗?

(b)作为一个历史事实,你是否知道为什么工作组的成员按照他们的方式投票,如果确实出现了正式决定的问题呢?

历史方法(b)非常困难;即使那些出席决策会议的人有时也很难知道委员会为什么会这样做,并且从会议记录中解决这个问题通常是不可能的。可能是下午晚些时候;他们可能对提出改变的人不耐烦等等。

但是,通常情况下,XML规范中的奇怪之处可以追溯到它在SGML中的起源。 XML工作组急于确保在SGML中不允许XML中允许的任何内容,并且SGML由于其语法灵活性而强加了各种限制,例如允许在不分隔引号的情况下使用属性。我不是SGML专家,所以我不能比这更精确,但我会90%肯定这是解释。