2014-04-04 74 views
4

根據HTML 5.1 spec ::十進制數字字符引用:不允許使用十進制數字字符引用:禁止或文本?

的符號必須跟一個「#」(U + 0023)字符,接着 由一個或多個ASCII數字,代表一個鹼十整數 對應於根據 定義在以下允許的Unicode代碼點。數字後面必須跟一個「;」 (U + 003B) 字符。

及以下:

上述數字字符引用形式被允許 參考比U + 0000,U + 000D, 永久未定義Unicode字符(noncharacters)以外的任何Unicode代碼點,代理 (U + D800-U + DFFF),並控制空格字符以外的字符。

我很困惑。這是否意味着(粗體文字)是不能引用(如U + 000或U + 00D)字符禁止或只是視爲文本,不作爲參考?

TL; DR我應該在無法引用的實體上拋出驗證錯誤,如
或將它們當作文本對待嗎?

回答

3

8.2.4.69 Tokenizing character references說:

否則,如果該號碼是在範圍0xD800到0xDFFF或大於在0x10FFFF大,那麼這是一個parse error。返回一個U + FFFD替換字符字符標記。

否則,返回字符令牌,其代碼點是數字的Unicode字符。另外,如果該數目在範圍0×0001至0×0008,0x000D到0x001F,0X007F到0x009F,0xFDD0到0xFDEF,或者是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或0x10FFFF,那麼這是一個parse error

1

雖然不能在規範,據我可以找到指定的,大部分(如果不是全部?)現代瀏覽器還是把他們當作字符,但如果他們沒有在已知規模的不明符號標記屬於打印代替:

Sample

然而,答案由可信的(規範)來源拉絲效果會更好,因爲我相信這個問題是廣泛適用。

另見this answer to a related question

相關問題