DOM ID 中允许使用哪些字符?

可能的复制品:
HTML 中 id 属性的有效值是什么?

Underscores seem fine. What about dashes? Other special characters?

48138 次浏览

W3C 规范 基本的 HTML 数据类型表示 ID 和 NAME 标记必须以字母([ A-Za-z ])开头,后面可以跟随任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“ _”)、冒号(“ :”)和句点(“”)."

According to the HTML 4.0 specs

ID 和 NAME 标记必须以字母([ A-Za-z ])开头,后面可以跟随任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“ _”)、冒号(“ :”)和句点(“ .”).

实际上,HTML 和 XHTML 之间是有区别的。 As XHTML is XML the rules for XML IDs apply:

ID 类型的值必须与 Name 生产匹配。

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]

资料来源: XML (XML)1.0(第五版)2.3

For HTML the following applies:

Id = name [ CS ]
此属性为元素分配一个名称。该名称在文档中必须是唯一的。

ID and NAME tokens must begin with a 字母([ A-Za-z ]) 任意数量的字母、数字 ([0-9]) ,连字符(“-”) ,下划线 ("_"), colons (":"), and periods (".").

资料来源: HTML 4规范,第6章,ID 令牌

如果我们从字面上理解问题的标题,那么 HTML 和 XHTML 规则都不适用。相反,相关的规范是 DOM 规范。

以 DOM Level 3为源代码,并假设“ DOM ID”指的是设置了“ ID”标志的属性,那么该值是“ DOMString”,其字符可以是任何 UTF-16可编码字符。

16位单元

DOMString 的基本单位。这表示对 DOMString 进行索引 以16位为单位发生。这必须 不要被误解为意味着 DOMString 可以存储任意的16位 units. A DOMString is a character 用 UTF-16编码的字符串; 这意味着 UTF-16的限制 以及其他相关的 字符串的限制必须 be maintained. A single character, for 数字形式的例子 字符参考,可能相当于 一个或两个16位单元。

当然,这可能不是你想要的,路德维希 · 温齐尔的答案正是你想要的。但是,明智的做法是理解并非所有的 DOM 都可以序列化为 HTML 或 XHTML,而且 DOM 有自己的一套规则。

对于有效的 html 又名 xhtml,Philippe 是正确的。Id 属性没有空格或特殊字符(当然没有需要转义的字符)。只有52个字符的字母表,大小写,数字0-9,连字符(“-”) ,下划线(“ _”) ,冒号(“ :”)和句号(“ .”)