13

我在找出 HTML 标记的有效字符时遇到问题。

在这个(符号 (@) 是一个有效的 HTML/XML 标记字符吗?)答案中说:

再看一下XML规范:

一个标签包括:

'<' 名称(S 属性)* S? '>' 名称包括:

NameStartChar (NameChar)* NameStartChar 包括:

“:” | [AZ] | "_" | [az] | [#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 包括:

名称开始字符 | "-" | “。” | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] @ 符号是 U+0040

因此@ 符号在 NameChar 或 NameStartChar 中无效,因此在 Name 中无效。

但是在 HTML 语法页面(http://www.w3.org/TR/html-markup/syntax.html#tag-name)上,它只说:

标签名称在元素开始标签和结束标签中使用,以给出元素的名称。HTML 元素的名称都只使用 0-9、a-z 和 A-Z 范围内的字符。

HTML 标记名称中的有效字符是什么?HTML4、XHTML 和 HTML5 之间有区别吗?

4

1 回答 1

-1

HTML 文档必须符合 HTML 规范。XML 文档必须符合 XML 规范。XHTML 文档必须符合 XML 和 HTML 规范。

因此,对于 XHTML 文档,您必须从两个规范中获取有效字符的交集。由于 XHTML 基于 XML,因此规范不能允许 XML 中禁止使用的字符。因此,XHTML 中允许的字符始终是 XML 中的字符的子集。所以允许的字符是来自 XHTML 规范的字符。

于 2013-03-03T11:54:18.940 回答