为什么我不能使用数字作为属性名称?
以下 XML 产生error parsing attribute name
错误
<?xml version="1.0" encoding="utf-8"?>
<root version="8">
<My 0="myVal"/>
</root>
为什么我不能使用数字作为属性名称?
以下 XML 产生error parsing attribute name
错误
<?xml version="1.0" encoding="utf-8"?>
<root version="8">
<My 0="myVal"/>
</root>
至于为什么我会服从 www 委员会,但这里是规则:
根据XML 语言规范,名称必须从NameStartChar开始,并且(几乎)任何其他字符都必须是NameChars;此机制用于防止名称以欧洲 (ASCII) 数字或基本组合字符开头。
NameStartChar可以包含以下值
":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |
[#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] |
[#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
[#x10000-#xEFFFF]
鼓励文档作者使用自然语言中有意义的单词或单词组合的名称,并避免名称中的符号或空格字符。请注意,明确允许使用冒号、连字符减号、句号(句点)、下划线(下划线)和中点。
为什么我不能使用数字作为属性名称?
尝试回答“为什么”问题的方法有以下三种:
(a) 因为规范是这样说的。
(b) 历史分析:为什么规范会这样说?什么时候做出决定,什么讨论导致了这个决定,赞成和反对的论点是什么,为什么工作组的个别成员会以一种或另一种方式投票?可悲的是,这样的分析几乎是不可能的。即使您是做出决定并出席相关会议的 WG 成员,也很难知道它为什么做出这样的决定。多年后,仅凭文献记录通常是不可能的。
(c) 事后证明:该决定是否对用户有任何好处?例如,可以根据属性名称应该映射到 Java 中的方法名称来证明这一决定是正确的,即使这与历史无关。
在实践中,XML 中的许多决策都可以追溯到 SGML 的历史:XML 被定义为 SGML 的一个子集,SGML 有许多规则在 SGML 上下文中是必需的,而在 XML 上下文中则不是必需的。