HTML
HTML5
JSON
WHATWG

HTML5の名前文字参照の一覧は、公式ページからJSONデータで取得できる

More than 1 year has passed since last update.

概要

名前文字参照(Named character references)とは、HTMLで<©などと記述する形式でおなじみの、文字参照の一種です。
HTML4までは文字実体参照(Character entity references)と呼ばれていたものの、HTML5からは名前文字参照(Named character references)という名称に変わっています1

この名前文字参照には、HTML入門時に習うような<>&などの他にも、—¶⟨⟩≒⊇など、様々な種類があります。
大雑把に計測したところ、HTML5では2125種類あるようです2

この名前文字参照の一覧がJSONデータとして公開されている事を知ったため、紹介させていただきます。

公式のJSONデータ

HTML5

JSONデータ

https://www.w3.org/TR/html5/entities.json

仕様について

2014年10月28日に勧告されたバージョンのHTMLです。
既に勧告されたため、今後、この仕様が変更されることはなく、このJSONデータが変わる事もありません。

HTML 5.1

JSONデータ

https://www.w3.org/TR/html51/entities.json

仕様について

2016年内に勧告される予定のバージョンのHTMLです。つまり、まだ更新作業中です。
このため、現在(2016年3月10日)もHTML 5.1の仕様は確定しておらず、今後変更される可能性があります。

元々はHTML5と一体の仕様でしたが、HTML5の勧告に時間が掛かると判断されたため、HTML 5.1として分割されました3

HTML Living Standard

JSONデータ

https://html.spec.whatwg.org/entities.json

仕様について

HTML5の仕様を発表したW3Cとは異なる、WHATWGというグループが策定しているHTMLの仕様です。

W3Cとは異なり、WHATWGではHTMLにバージョン番号を割り振らず、「HTML Living Standard」という単体の仕様を継続的に更新していく事となっています4
このため、仮に将来HTML6やHTML7にあたるような仕様が出る場合でも、「HTML Living Standard」は「HTML Living Standard」のまま、内容が更新されていく事になります。

つまり、今後もこのJSONデータは更新される可能性があり、そしてそれが終わることは無いでしょう5

余談ですが、現在のWebブラウザ制作陣は、W3Cの出した仕様ではなくこのHTML Living Standardを見ているようです6
また、W3Cが出したHTML5も、HTML Living Standardのコピーのようなものだそう7
今後の事も考えるなら、このJSONデータを利用したほうが良いでしょう…



  1. XHTML5と文字参照 - 血統の森+はてな 

    本題に入る前にまず文字参照(Character references)のおさらい。HTML4では、

    と呼ばれていたけれども*1 *2HTML5では、

    と呼ばれている*3 *4数値文字参照は10進と16進が存在することが明示され、文字実体参照は名前実体参照という呼び方になった。

  2. 以下のコードで計測しました。
    2016年3月10日9時現在、HTML5HTML 5.1HTML Living Standardのいずれも2125種類のようです。 

    JavaScript (ECMAScript 2015)
    /**
     * 変数 entities には、あらかじめJSONからJavaScriptのオブジェクトに変換された
     * entities.jsonのデータが格納されているものとする。
     */
    
    /**
     * 一部の名前文字参照には末尾に";"が不要なようで、
     * entitiesには";"があるものと無いものが重複して含まれている。
     * (例:"¥"と"&yen"など)
     * このため、そのような重複した名前文字参照を削除する。
     */
    var entitieNameList = Object.keys(entities)
      // 後続のフィルター処理を楽にするため、先頭の"&"と末尾の";"を(もしあれば)削除
      .map(n => n.replace(/^&|;$/g, ''))
      // 配列に重複して含まれる値を1つにする
      // @see http://qiita.com/cocottejs/items/7afe6d5f27ee7c36c61f
      .filter((x, i, self) => self.indexOf(x) === i);
    
    console.log('名前文字参照の数:' + entitieNameList.length);
    

    なお、名前文字参照の正確な仕様を把握できていないため、計測方法に誤りが含まれている可能性があります。
    このためこの計測方法は「大雑把」なものであり、種類数の正確性については保証できません。

  3. HTML5勧告へのロードマップ。HTML 5.0とHTML 5.1に分けて、まずは2014年内を目指すとの案をW3Cが発表 - Publickey 

    「Plan 2014」では、現在勧告候補にあるHTML5を、HTML 5.0とHTML 5.1の二段階に分けて、HTML 5.0を2014年内に勧告とし、HTML 5.1は2016年内に勧告とすることが提案されています。

  4. HTML5と関連仕様を日本語で読む – 読み解くHTML5 

    W3C では、「HTML5」という名称を使って仕様書を作成していますが、WHATWG は、HTML 自体にはバージョン番号を割り振らず、「HTML Living Standard」 という1つの仕様書を継続的に更新していく、というスタンスを採っています。 ただし、仕様書の更新履歴はリビジョンという形で保存されているので、いつどこがどう変更されたかということは分かるようになっています。

  5. ただ、流石にWHATWGが解散したり、URL自体が変更された場合などは「このアドレスにあるJSONデータ」の更新は終わることになります。 

  6. HTML5 と WHATWG と Google Chrome。 W3C がHTML5… 

    A. そうだとよいのですが、残念ながら効果は限定的かもしれません。なぜなら私も含めて Chrome の中の人はHTML5仕様を「見ていません」。我々が見ているのは W3C の HTML5仕様ではなく WHATWG [1] の HTML Living Standard [2] です。そういう事実があるということを、Web開発者として知っておくと役に立つ時がくるかもしれません。たとえば Chrome の動作についてバグを報告してくださるときなどです。Chrome のバグトラッカー (http://crbug.com/)上での議論で使用・参照されるHTML仕様は WHATWG の HTML Living Standard です。

  7. 運営メモ: WHATWG の HTML Living Standard と W3C の HTML5 仕様との関係についての最新情報 | Mozilla Developer Street (modest)