【发布时间】:2013-03-03 11:43:04
【问题描述】:
我在找出 HTML 标记的有效字符时遇到问题。
在这个 (Is the at-sign (@) a valid HTML/XML tag character?) 的回答中说:
再看XML规范:
一个标签包括:
'' 名称包括:
NameStartChar (NameChar)* 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] @ 符号是 U+0040
所以@符号在 NameChar 或 NameStartChar 中无效,因此 在名称中无效。
但在 HTML 语法页面 (http://www.w3.org/TR/html-markup/syntax.html#tag-name) 上只显示:
标签名称用于元素开始标签和结束标签中 元素的名称。 HTML 元素都有只使用字符的名称 在 0–9、a–z 和 A–Z 范围内。
HTML 标记名称中的有效字符是什么? HTML4、XHTML和HTML5之间有区别吗?
【问题讨论】:
-
有效的 HTML 字符是那些在 HTML 规范中提到的字符。有效的 XML 字符是 XML 规范中提到的那些。有什么困惑?
-
这就是我真的不喜欢 StackOverflow 的原因:Google 上的热门搜索结果,但却是一个没有答案的封闭问题,因为一些模组决定关闭社区(或潜在社区)。自定义 HTML 标签现在已经成为现实,W3C 规范的官方草案说标签名称的 XML 字符列表现在对 HTML 有效!结束合法问题真的让我很恼火,并说明了为什么我不经常参加这里。例如,写universal-ish tag parser时,这个问题是有道理的。
-
完全同意@CubicleSoft - 最近我看到很多有效的问题因为最愚蠢的原因而被关闭。随着 StackOverflow 的发展,每个实体都会发生这种情况,它陷入了一些对社区弊大于利的死板“规则”中。如果人类历史上的每个人都被困在如此严格的参数中,我们还不会退出石器时代。对于程序员来说,跳出框框思考以取得进步是最重要,但是一旦实体开始变得更大,他们往往总是会忘记最初是什么让他们变得伟大,并结束在历史的垃圾箱里。
-
“很难说出这里要问什么”对于最初的问题可能是正确的,但现在它非常清晰、有效并且符合网站的格式。 @CubicleSoft 的答案就是我来这里的目的。