字元值參照

本页使用了标题或全文手工转换,现处于香港繁体模式
求聞百科,共筆求聞

字元值參照(numeric character reference, NCR)是在標記式語言SGML以及衍生的如HTMLXML中常見的一種跳脫序列結構,用來表示Unicode通用字元集 (UCS)中的單個字元. NCR可以表示在一個特定文件中不能直接編碼字元,而該標記式語言閱讀器軟件把每個NCR當作一個字元來處理。

例如,在ISO/IEC 8859-1編碼的網頁檔案中使用了俄文字母或者希臘字母。由於該編碼不支援這些字母,就需要用NCR來表示。網頁瀏覽器可以正確地把這些NCR繪製為相應的西里爾字母或希臘字母。

例子

在SGML、HTML、XML中,下述是希臘字母Sigma的有效的字元值參照:

U+03A3 Σ GREEK CAPITAL LETTER SIGMA (3A316 = 93110
Unicode字元 進位制 標記式語言中的字元值參照 效果
U+03A3 十進制 Σ Σ
U+03A3 十進制 Σ Σ
U+03A3 十六進制 Σ Σ
U+03A3 十六進制 Σ Σ
U+03A3 十六進制 Σ Σ

描述

標記式語言使用的字元編碼方法(如ISO-8859),常常不能表示所有的Unicode字元,這就需要使用「跳脫」機制來處理這些不能編碼的字元。

基於SGML標記式語言允許使用7位元ASCII字元(即Unicode的前128個碼位)的序列來表示或者說參照任何Unicode字元。基於Unicode字元"碼位"的字元參照被稱作字元值參照。HTML 4與所有版本的XHTML及XML,這些Unicode字元的碼位可以表示為十進制或十六進制。語法如下:

字元U+0026 (&), 後跟隨U+0023 (#),後跟隨下列選擇之一:

  • 一個或更多十進制數字0(U+0030)到9(U+0039);
  • 字元U+0078 (x)後跟隨一個或更多個十六進制數字, 包括從0 (U+0030)到9(U+0039), 大寫拉丁字母從A (U+0041)到F (U+0046), 小寫拉丁字母從a(U+0061)到f(U+0066);

上述兩種選擇情形之後,跟隨字元U+003B (;)。 老的版本的HTML不支援十六進制表示法.

另外一種字元參照被稱作字元實體參照允許字元用其名字而不是碼位的值來參照。HTML定義了一些字元實體,但是並不多;其它字元只能直接用NCR來參照。

限制

通用字元集(UCS)是SGML以及HTML 4的文件字元集,因此預設地, 用這些標記式語言寫的文件的所有字元,必須出自UCS.

同時SGML並不禁止參照一個Unicode中未賦予字元的碼位, 例如。SGML衍生的標記式語言如HTML與XML限於參照那些賦予字元的碼位以及那些沒有永久性保留不賦予字元的碼位.

還存在其它的限制情況。例如在HTML 4中, , 參照了一個不可顯示的字元"換頁"控制字元,這是被允許的。但在XML中, 不能使用換頁符, 甚至不能參照換頁符。另一個例子, €參照另外一個控制字元,在HTML與XML中不能使用、參照, 但是如果出現在HTML中, 網頁瀏覽器通常不會把它標記為一個錯誤—有的甚至把它解釋為Windows-1252編碼中碼位為128的字元: "€",雖然這個字元應該表示為字元值參照€. 進一步的例子, 在2000年10月6日XML 1.0第二版發佈之前,XML 1.0是基於老版的ISO 10646因此禁止使用碼位大於U+FFFD的字元,因此參照𐀀 (U+10000)字元是非法的。在XML 1.1與更新版本的XML 1.x, 這些參照是允許的,因為字元庫(repertoire)被大大擴充了。

參考文獻

  • TEI guidelines
  • Markup systems and the future of scholarly text processing by James H. Coombs, Allen H. Renear, and Steven J. DeRose. Originally published in the November 1987 CACM, and reprinted several times in other forums, this article introduced many of the concepts now used in discussing markup languages, and lays out the basic arguments for the superior usability of descriptive markup.

參閲

外部連結