在XML元素名称中使用hyphen
- 是否可以?
e.g。
<rank-type>Rank</rank-type>
答案 0 :(得分:33)
正如Vinko和黑客所说,答案是
是的,名称中允许使用短划线,无论是元素名称还是属性名称。但是短划线不能成为名称中的第一个字符。
W3C standard定义名称如下(第2.3节)
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]
NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
Name ::= NameStartChar (NameChar)*
忽略各种扩展的ASCII字符和双字节字符(在语法定义中以#符号开头),名称需要以大写或小写字母(AZ),冒号(:)或下划线开头。此起始字符后面的字符(如果有),即名称不是单个字符,可以是任何有效的起始字符和/或任何数字(0-9),着名的短划线( - )和点(。)
正如其他回复中所指出的,在可能的情况下,建议避免某些字符,即使它们可能是合法的,以免我们冒险遇到各种解析器和互操作层的某些特定于实现的困难。
W3C本身隐含地证明了破折号的使用,因为它们在XSL中被广泛使用。例如。
答案 1 :(得分:11)
这不是属性名称,而是元素名称。
在任何情况下 - 只要名称不以它开头(&lt; -foo&gt;不是有效的元素名称),规范中的属性和元素名称都支持。
有些软件可能会阻塞它,所以请注意。如果你必须使用这样的软件,试着找到更好的软件或让它的开发人员正确支持XML规范。
W3CSchools' (polemic) recommendations
使名称具有描述性。姓名带有 下划线分隔符很好: &lt; first_name&gt;,&lt; last_name&gt;。
名称应该简短,就像 这个:&lt; book_title&gt;不是这样的: &LT; the_title_of_the_book&GT;
避免使用“ - ”字符。如果你的名字 一些“名字”,一些软件 可能认为你想减去名字 从一开始。
避免“。”字符。如果你的名字 一些“first.name”,一些软件 可能会认为“名字”是一个属性 对象“第一个。”
避免使用“:”字符。冒号是 保留用于某事 称为命名空间(稍后)。
XML文档经常有 相应的数据库一个好的 练习是使用命名规则 你的数据库中的元素 XML文档。
像éòá这样的非英文字母在XML中完全合法,但如果您的软件供应商不支持,请注意问题。
答案 2 :(得分:5)
是的,确实如此。但是您的示例显示了元素名称,而不是属性名称。这也是有效的。