使用 - 在XML元素名称中

时间:2009-09-25 17:05:12

标签: xml

在XML元素名称中使用hyphen - 是否可以?

e.g。

<rank-type>Rank</rank-type>

3 个答案:

答案 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)

是的,确实如此。但是您的示例显示了元素名称,而不是属性名称。这也是有效的。