使用 - 在XML元素名称中

Thy*_*hys 23 xml

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

例如

<rank-type>Rank</rank-type>
Run Code Online (Sandbox Code Playgroud)

mjv*_*mjv 35

正如Vinko和黑客所说,答案是

是的,名称中允许使用短划线,无论是元素名称还是属性名称.但是破折号不能是名称中的第一个字符.

W3C标准定义如下名称(第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)*
Run Code Online (Sandbox Code Playgroud)

忽略各种扩展的ASCII字符和双字节字符(在语法定义中以#符号开头),名称需要以大写或小写字母(AZ),冒号(:)或下划线开头.此起始字符后面的字符(如果有),即名称不是单个字符,可以是任何有效的起始字符和/或任何数字(0-9),着名的短划线( - )和点(.)

正如其他回复中所指出的,在可能的情况下,建议避免某些字符,即使它们可能是合法的,以免我们冒险遇到各种解析器和互操作层的某些特定于实现的困难.

W3C本身隐含地证明了破折号的使用,因为它们在XSL中被广泛使用.


Vin*_*vic 10

这不是属性名称,而是元素名称.

在任何情况下 - 只要名称不以它开头(<-foo>不是有效的元素名称),规范中的属性和元素名称都受支持.

有些软件可能会扼杀它,所以请注意.如果您必须使用此类软件,请尝试找到更好的软件或使其开发人员正确支持XML规范.

W3CSchools(争论)推荐

使名称具有描述性.带下划线分隔符的名称很好:<first_name>,<last_name>.

名称应该简短,如下所示:<book_title>不是这样的:<the_title_of_the_book>.

避免使用" - "字符.如果您将某些名称命名为"名字",某些软件可能会认为您要先从名称中减去名称.

避免"." 字符.如果你命名为"first.name",某些软件可能认为"name"是对象的属性"first".

避免使用":"字符.冒号保留用于名为命名空间的东西(稍后).

XML文档通常具有相应的数据库.一个好的做法是使用数据库的命名规则来处理XML文档中的元素.

像éòá这样的非英文字母在XML中是完全合法的,但如果您的软件供应商不支持它们,请注意问题.

  • 所以,`<first_name />`是一个很好的元素名称而`<xsl:value-of />`不是? (3认同)

Mic*_*ker 5

是的.但是您的示例显示了元素名称,而不是属性名称.哪个也有效.