使用Numbers as和属性名称会产生解析错误

时间:2013-06-17 06:29:02

标签: xml

为什么我不能使用数字作为属性名称?

以下XML产生error parsing attribute name错误

<?xml version="1.0" encoding="utf-8"?>
<root  version="8">
     <My 0="myVal"/>    
 </root>

3 个答案:

答案 0 :(得分:1)

至于为什么我会遵从www理事会,但这里有规则:

http://www.w3schools.com/xml/xml_elements.asp

答案 1 :(得分:1)

根据XML language specification名称必须从 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]

鼓励文档作者使用自然语言中有意义的单词或单词组合的名称,并避免名称中的符号或空白字符。请注意,明确允许使用COLON,HYPHEN-MINUS,FULL STOP(句点),LOW LINE(下划线)和MIDDLE DOT。

答案 2 :(得分:1)

  

为什么我不能使用数字作为属性名称?

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

(a)因为规范是这样说的。

(b)历史分析:为什么规范会这样说?什么时候作出决定,是什么讨论导致了这个决定,提出了哪些论据支持和反对,为什么工作组的个别成员以某种方式投票?可悲的是,这种分析很少可能。即使你是工作组的成员,做出决定并出席相关会议,也很难知道它为什么做出决定。多年以后从纪录片记录中做这件事通常是不可能的。

(c)事后理由:该决定是否对用户有利?例如,可以根据属性名称应映射到Java中的方法名称来证明决策的合理性,即使这与历史记录无关。

实际上,XML中的许多决策都可以追溯到SGML历史:XML被定义为SGML的子集,而SGML有许多规则在SGML上下文中是必需的,但在XML上下文中不是必需的