4

根据HTML 5.1 规范:: Decimal numeric character reference:

& 号后面必须跟一个“#”(U+0023) 字符,后面跟一个或多个 ASCII 数字,代表一个以十为基数的整数,对应于根据以下定义允许的 Unicode 代码点。数字后面必须跟一个“;” (U+003B) 字符。

及以下:

上述数字字符引用形式允许引用除 U+0000、U+000D、永久未定义的 Unicode 字符(非字符)、代理项 (U+D800–U+DFFF) 和空格以外的控制字符以外的任何 Unicode 代码点人物。

我很困惑。这是否意味着(粗体文本)不能引用的字符(如 U+000 或 U+00D)被禁止或仅视为文本,而不是引用?

TL;DR我应该对无法像引用一样引用的实体抛出验证错误,
还是将它们视为文本?

4

2 回答 2

3

8.2.4.69 标记字符引用说:

否则,如果数字在 0xD800 到 0xDFFF 范围内或大于 0x10FFFF,则这是一个解析错误。返回一个 U+FFFD REPLACEMENT CHARACTER 字符标记。

否则,返回其代码点为该数字的 Unicode 字符的字符标记。Additionally, if the number is in the range 0x0001 to 0x0008, 0x000D to 0x001F, 0x007F to 0x009F, 0xFDD0 to 0xFDEF, or is one of 0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE, 0x4FFFF , 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE, or 0x10FFFF,那么这是一个解析错误

于 2014-04-04T11:39:37.863 回答
1

虽然据我所知,规范中没有指定它,但大多数(如果不是全部?)现代浏览器仍然将它们视为字符,但如果它们不属于已知比例,则会打印一个未知符号标记:

样本

但是,从可靠(规范)来源得出的答案会更好,因为我相信这个问题是广泛适用的。

另请参阅相关问题的答案

于 2014-04-04T10:38:11.203 回答